Grand Diomande Research · Full HTML Reader

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:

Embodied Trajectory Systems research note backlog reference score 20 .md

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:

csharp
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:

csharp
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.

ReelIssue he calls outLUME mitigation
E461"Switch between thickness vs non-thickness material to check difference looking through the blobs" — implies thickness costs perf, must be toggleableMake `_UseComputeThickness` a runtime bool, not a compile-time keyword
E468Blue-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 glowDon'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: 60

Build `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