E473 — Duncan Fewkes reel analysis digest
The prior chunk caught his recent product surface (VFX Editor, two-channel audio+motion reactivity, sunset preset, bullet-time/clones). This chunk catches the **rendering tech** under the surface:
Full Public Reader
E473 — Duncan Fewkes reel analysis digest
⚠ No video on disk for this reel — referenced by the playbook but not in the local ingest cache.
This file aggregates every playbook chunk section that cites E473. Sections are de-duplicated by heading.
Big picture additions to the prior playbook
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
The prior chunk caught his recent product surface (VFX Editor, two-channel audio+motion reactivity, sunset preset, bullet-time/clones). This chunk catches the rendering tech under the surface:
1. The product is called "HOLOVIS" — that's the brand text rendered as 3D letters in nearly every install demo. It's not a placeholder. The letters are the payload object of his rendering: blendshape inflated by audio, reflection probe hit-target, particle attractor, light source. Treat HOLOVIS_LETTERS as a first-class object in his architecture, not chrome.
2. Target hardware = Quadro A6000 @ 60fps (E470 caption verbatim: "Target hardware is Quadro A6000 at 60 fps"). His laptop dev box is a 3070. This sets the LUME perf target ceiling — A6000 ≈ RTX 4080. Anything we plan that wouldn't run on a single 4080 at 60fps is over-budget for parity.
3. The calibration grid IS the LED stage UI — the gridded floor + walls + circular degree-marked "calibration markers" you see in every recent reel are actually his runtime spatial reference, used for depth-camera reprojection and multi-screen LED alignment. Not just decoration. He runs an "LED-backed XR / CAVE-like volume" (Gemini on E460/E466/E472).
4. Two render-mode profiles ship together (E473 visual analysis): `tint Lights, No Shadows` (160-170 fps, ambient/emissive only) and `Spot Lights, Shadows` (70-110 fps, cast shadows from 7x point/spot lights). Operator can A/B at runtime. Add to LumeVfxEditor: a `LightingProfile` dropdown with at least these two modes — fast/cheap and full/cinematic.
5. Reflection-probe budget: realtime reflection probe render every frame across 6 faces is a known toggle (E460 caption) — adds depth/colour but he calls it "as an option toggled in settings." Same toggle slot in LUME.
6. Depth-camera kaleidoscope is a discrete VFX preset he calls out explicitly (E469 first introduces it, E471 adds metallic vs non-metallic, E472 stretches to full body). Net new mode for LUME not in the prior playbook.
7. Marching Cubes is Keijiro's, confirmed (E427 caption verbatim: `https://github.com/keijiro/ComputeMarchingCubes`). Source particles → MC compute shader → mesh. He runs 2 surface thresholds simultaneously to get nested skins (inner gold, outer glass).
---
Shader / material parameter dump (verified from Inspector visibility)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
This is the highest-value extract from this chunk. The recent reels never showed his Inspector. Here it is:
`Custom/Thickness_Apply` shader — material `Liquid (Instance)` aka `KompassThickness_Apply` (E462 visible in Inspector)
Surface options block:
- `Surface Type` — Transparent | Opaque
- `Blending Mode` — Alpha
- `Render Face`, `Depth Write`, `Depth Test`
- `Normal Mode` — Smooth
- `Cull Mode`, `Color Mask`, `ZWrite`, `Offset Factor`, `Offset Units`
- `Alpha To Mask`, `Receive Shadow`, `Shadow Casting Mode`, `Ignore Projectors`
- two checkboxes: `Transparent: Water (Opaque)`, `Transparent: Water (Alpha)` — implies the same shader has dual-pass branches the operator picks between
Refraction block:
- `Refraction Color` — color picker (white default)
- `Translucency` — slider, value seen at `0.003`
- `Fresnel Multiplier` — slider, value seen at `0.0` (note: he defaults this OFF, not on — fresnel is something he layers in only when needed)
- `IOR (Index of Refraction)` — slider, value seen at `1.33` (= water)
- `Distortion` — slider, value seen at `0.0`
Emissions block:
- `Emission Color` — color picker
- `_Emissions` — second color picker (HDR; he cycles bright blue/white `RGB 109,255,255` → green `133,255,0` → magenta `255,0,255`)
- `Emissions Scale` — slider, operating range 0.00 → 0.05 (this is the entire useful range; not 0–1)
LUME mapping: when we build the metaball/slime URP shader, mirror this parameter naming and HDR emission color picker pattern. The 0.00–0.05 emission range is a live-tuned default — we should expose the same range in our `LumeFluidShader` properties.
`BlendShape_Whitewash` material family (E461 visible in Inspector)
Multiple variants on disk: `BlendShape_Whitewash`, `BlendShape_Whitewash_0`, `BlendShape_Whitewash_1` — he hot-swaps them via Mesh Renderer `Element 0`/`Element 1` slots. Same logical material at different opacity/render-mode states.
Surface Inputs:
- `Rendering Mode` — Opaque | Transparent (separate from `Surface Type`; this is the legacy URP toggle)
- `Surface Type` — Transparent | Opaque
- `Material Type` — Standard
- `Queue` — Transparent
- `Alpha` — slider, demonstrated 0.5 ↔ 1.0 swap
- `Refraction` — slider
- `Color` — color picker
LUME takeaway: he uses material variants on disk for "preset" swaps, not material property animation. The VFX Editor `VFX 01: <preset>` slot is implemented as a material/asset reference, not a parameter set. Replicate this — disk-asset preset list, not parameter blob, lets the operator drop new presets in by Project-panel drag.
Audio-reactive logo (E470, E473)
Mechanism (verbatim E470): "compute thickness to alpha and emissive with tight power curve means I can set the range to catch just as the logo letters 'inflate' with the audioreactive blend shape".
Translation:
- HOLOVIS letters have an audio-reactive blendshape that inflates on beat
- The shader reads HDRP compute-thickness back as a screen-space buffer
- A tight power curve is applied (`pow(thickness, k)` with high `k` ≈ 6–10) so the alpha+emissive only crosses threshold when the letters are actually bulged
- Result: letters glow only while the blendshape is firing, look flat between beats
- 7x point/spot lights inside or behind the letters; with point shadows + backfaces off, "mesh overlap" causes shadow artifacts on the wall (E473 self-critique → he switches to rear-facing spotlight shadows)
LUME mapping: audio-reactive blendshape → drives a `_BlendshapeAmount` uniform on a logo-letter mesh; thickness power curve in shader controls when emission "snaps on." This is a cleaner mechanism than just `emission *= audioRMS` because the power curve makes it bistable — letters dark, then suddenly glow at threshold.
---
Audio-reactive logo (E470, E473)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
Mechanism (verbatim E470): "compute thickness to alpha and emissive with tight power curve means I can set the range to catch just as the logo letters 'inflate' with the audioreactive blend shape".
Translation:
- HOLOVIS letters have an audio-reactive blendshape that inflates on beat
- The shader reads HDRP compute-thickness back as a screen-space buffer
- A tight power curve is applied (`pow(thickness, k)` with high `k` ≈ 6–10) so the alpha+emissive only crosses threshold when the letters are actually bulged
- Result: letters glow only while the blendshape is firing, look flat between beats
- 7x point/spot lights inside or behind the letters; with point shadows + backfaces off, "mesh overlap" causes shadow artifacts on the wall (E473 self-critique → he switches to rear-facing spotlight shadows)
LUME mapping: audio-reactive blendshape → drives a `_BlendshapeAmount` uniform on a logo-letter mesh; thickness power curve in shader controls when emission "snaps on." This is a cleaner mechanism than just `emission *= audioRMS` because the power curve makes it bistable — letters dark, then suddenly glow at threshold.
---
Architecture details revealed in UI panels (visible in 8 analyses)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
Top-left "Media Player" panel (E460, E473 visible)
His runtime UI has a top-left media player widget with:
- play/pause/skip/forward/rewind buttons
- volume slider (0–100)
- track title text (Galvanize - Chris Lake / Godzilla Dub / etc.)
- progress bar
- a separate vertical slider (use unclear — possibly master VFX intensity)
LUME UI takeaway: he treats music as part of the install state, not just background audio. Track title is shown on screen during demos. We should make the audio source first-class in `LumeVfxEditor` — not just an audio reactor input but a transport (play/pause/skip) so the operator can sync demos.
Top-right performance overlay (E473 verbatim)
`avg min max fps` and `ms` per-frame: e.g. `58 77 270 fps` / `5.2 ms`. Visible during demos.
LUME: ship a Prometheus-style FPS+ms HUD toggle. He keeps it on during dev/perf-testing. We should add an `F8` toggle in the VFX Editor.
Recording indicator (E460)
Top-right red `00:00:xx` recording timer + blue play icon + white sound icon. Implies internal screen-recording is built into the install runtime so he can capture demos without external OBS.
LUME enhancement (Wave 4): add `LumeRecorder.cs` that writes 4K MP4 to disk on operator hotkey. Would massively improve demo-clip turnaround for marketing/social.
Lighting mode toggle (E473 text overlay verbatim)
Two named modes: `tint Lights, No Shadows` and `Spot Lights, Shadows`. Visible as on-screen text overlay during the demo.
LUME mapping: `LumeVfxEditor.LightingProfile` enum:
public enum LumeLightingProfile {
EmissiveOnly, // no shadows, fastest
SpotShadows, // 7x cast shadows, "cinematic"
PointShadows, // off — too expensive even on his target HW
}---
Top-left "Media Player" panel (E460, E473 visible)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
His runtime UI has a top-left media player widget with:
- play/pause/skip/forward/rewind buttons
- volume slider (0–100)
- track title text (Galvanize - Chris Lake / Godzilla Dub / etc.)
- progress bar
- a separate vertical slider (use unclear — possibly master VFX intensity)
LUME UI takeaway: he treats music as part of the install state, not just background audio. Track title is shown on screen during demos. We should make the audio source first-class in `LumeVfxEditor` — not just an audio reactor input but a transport (play/pause/skip) so the operator can sync demos.
---
Top-right performance overlay (E473 verbatim)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
`avg min max fps` and `ms` per-frame: e.g. `58 77 270 fps` / `5.2 ms`. Visible during demos.
LUME: ship a Prometheus-style FPS+ms HUD toggle. He keeps it on during dev/perf-testing. We should add an `F8` toggle in the VFX Editor.
---
Lighting mode toggle (E473 text overlay verbatim)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
Two named modes: `tint Lights, No Shadows` and `Spot Lights, Shadows`. Visible as on-screen text overlay during the demo.
LUME mapping: `LumeVfxEditor.LightingProfile` enum:
public enum LumeLightingProfile {
EmissiveOnly, // no shadows, fastest
SpotShadows, // 7x cast shadows, "cinematic"
PointShadows, // off — too expensive even on his target HW
}---
Self-critiques / known issues (caption mining)
_From `lume-duncan-playbook-chunk-DR-DQ.md`_
These are genuine bugs/limitations he names. Treat as warnings.
| Reel | Issue he calls out | LUME mitigation |
|---|---|---|
| E461 | "Switch between thickness vs non-thickness material to check difference looking through the blobs" — implies thickness costs perf, must be toggleable | Make `_UseComputeThickness` a runtime bool, not a compile-time keyword |
| E468 | Blue-fish core "kinda gets hidden by the refraction and everything else glowing bright pink" | Build hidden-driver meshes with a separate "always visible through refraction" pass, or accept the hidden look intentionally |
| E470 | "laptop 3070 struggling a bit with 7x pointlight shadow renders, but 7x spotlight shadows probably okay" | Default to spotlight not pointlight for shadows |
| E473 | "doesn't leave much overhead so I'll probably stick with the rear-facing spotlight shadows" + "pointlight shadows source inside the mesh of the letters … shadow artifacts on the walls from mesh overlap" | Avoid lights inside the HOLOVIS-equivalent mesh; rear-facing only |
| E444 | "Motion feels too high, but mostly because source particles leave screen — collision to keep on screen might help" | Reflective boundaries on the fluid sim grid (already covered above) |
| E462 | "It was something I tried a few years back but never got it working nicely so gave up on" — re: compute-thickness core glow | Don't underestimate compute thickness — it's hard but he kept retrying. Worth full HDRP migration post-Sat for this one effect alone. |
---
Complete VFX Editor data model (v2 — supersedes v1)
_From `lume-duncan-playbook.md`_
The v1 model had ~7 slots with placeholder names. v2 has 9 slots with verbatim preset names from his UI overlays (E516, E521, E532, E534, E568):
VFX Editor
├── Auto Cycle VFX [checkbox] # BPM/16-bar phrase auto-transition
│
├── Depth: <preset> # surface treatment of human silhouette
│ options: GhostChromatic2, GlassThin, GlassThick, GlassScan1/2/3, DepthCubes, HolePunch, None
│
├── VFX 01: <preset> # additional particle layer
│ options: ClonesAudioDropBright, ParticleClone, ParticleClonesAudio,
│ SwirlyParticles, KaleidoscopeRing16, Multiparticle_Spine_FX, None
│
├── VFX 02: <preset> # second layer (compositional)
│ options: ParticleSystem_Spine_Trail, ClonesSnapshotRed, ClonesSnapshotRedPlexus, None
│
├── Painting: <preset> # surface-shader / material slot
│ options: SpotsLeftRightWithFill, Bounce_Frosted, Bounce_Plastic, None
│
├── Lighting: <preset> # named lighting rigs
│ options: FogSpotLeftRight1, FogSpotLeftRight2, FogSpotRight, FogSpotOverhead,
│ FogPointOrbitPulse, BrightRoom, SpotsLeftRightWithFill, EmissiveOnly, None
│
├── LightingProfile: <enum> # NEW from E473 — perf vs cinematic toggle
│ options: EmissiveOnly (160-170 fps, no shadows), SpotShadows (70-110 fps, 7x cast)
│
├── Environment: <preset> # 3D scene around the figure
│ options: Studio_Sky_Sphere, Sunset, BolivianSaltFlats, TestRoomDark, None
│
├── Background: <preset> # 2D backdrop layer
│ options: StudioBG_Grey, Gallery2, TestRoomDark, None
│
├── Logo: <preset> # brand overlay slot — also acts as VFX volume
│ options: HOLOVIS_Letters_AudioBlendshape, KOATJI/LUME_equivalent, Off
│
├── FluidSim: <preset> # 6 verbatim names from E534
│ options: Default, Default_Smooth, LongThrow, MidThrow, ShortThrow, InvertedObstacle
│
├── BodySim: <preset> # NEW from E532 — separate sim slot for body-driven motion
│ options: same value set as FluidSim
│
├── FX: <preset> # additional one-shot effects
│ options: ClonesSnapshotRed, ClonesSnapshotRedPlexus, None
│
├── SpawnTopology: <enum> # NEW from E509 floor-spawn discovery
│ options: FloorPlane, BodyVolume, CeilingPlane, WallPlanes, MidPlane
│
├── NoiseAxisMode: <enum> # NEW from E514
│ options: XZ_Twist_Contained, Y_Lift_With_LowFreqBulges
│
├── Auto Load Default Scene [button]
├── Update Settings Default Scene [button]
│
├── Camera Settings: FOV slider + Sensitivity slider
├── VFX Settings: Intensity, Density, Count, Gravity, InitialVelocity, Lifetime, SpawnRate
├── Render Settings: Exposure, Gamma, AmbientOcclusion, Bloom
├── VFX Color: RGB sliders + hex + color picker
└── FX LiveOnColorClear [checkbox]Critical UX rule (E516 verbatim)
> Cycling through test lighting presets and the last is always 'None' (same for the script for cycling through depth visuals, VFX, backgrounds etc — always allow for 'Off' to be an option).
Every preset enum's last entry MUST be `None`. The negative-space look that emerges from `Lighting=None + emissive depth particles` is its own aesthetic, not a bug. From E516: "looked interesting without any realtime lights because the emissive particles and live 3D depth projection makes it look like solid shadow/negative space punch through."
Depth ≠ VFX: 4×4=16 combos for free
Prior assumption (v1): "depth particles" was one thing. v2 reveals they are two independent slots — `Depth:` (surface treatment of the silhouette) + `VFX:` (the additional particle layer on top). They cycle independently.
Depth: Ghost / Glass / Cubes / Off (~4-6 surface treatments)
VFX: Clones / Particles / Swirl / Off (~4-6 particle layers)= 16+ distinct combinations before lighting/colour/background variation. Operator gets massive variety from a small preset library.
Performance HUD (top-right, persistent in every reel)
avg min max
38 39 60 16.6ms
FPS: 60Build `LumePerfHud.cs` with same layout. F8 toggle. Useful both for dev and operator confidence the install is healthy.
---
Promotion Decision
Keep in the searchable backlog until it intersects a live paper or system.
Source Anchor
lume-commerce/hardware/reference/duncan/analyses/E473-noreel.md
Detected Structure
Method · Figures · Architecture