acdream/tools/cdb/a7-fixd-numstatic-probe.cdb
Erik c407104ab9 docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140)
Resolve the Fix D contradiction with decomp (workflow wf_f660eb88 + adversarial
verify) + 4 live cdb captures. The D3D-FF model was the WRONG oracle: retail has
TWO light systems — STATIC torches BAKE into wall vertices (calc_point_light,
triple-clamped: range gate + per-channel min(scale*color,color) + per-vertex
[0,1] from black), DYNAMIC lights go D3D hardware. The captured intensity=100 is
the purple PORTAL (magenta, dynamic), not a wall torch. Ground truth: 38 static
warm torches (orange (1,0.588,0.314)/cream, intensity=100, falloff 3-5) + 2 dynamic.

acdream over-brightness = two confirmed bugs: D-1 mesh_modern.vert folds
ambient+sun+torches into one UNCLAMPED accumulator (single frag clamp) -> warm
blowout; D-2 EnvCellRenderer never binds SSBO 4/5 so the cell shell reads a leaked
light set. Spec: D-1 in-shader clamp-split (clamp the torch sum on its own before
ambient/sun); D-2 bind the shell's own per-cell light set (mirror WbDrawDispatcher);
LightBake.cs is the C# conformance oracle. Adds the 4 reusable cdb capture scripts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 17:08:27 +02:00

18 lines
1 KiB
Text

$$ A7 Fix D — instant (breakpoint-free) read of how many STATIC lights the
$$ current scene bakes with. Confirms whether the meeting hall has static torches
$$ (-> D-1 summed-torches matters) or near-zero (-> D-2 leaked-SSBO is the cause).
$$ Stand where the meeting-hall walls are visible. No movement / no breakpoints.
.logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\thirsty-goldberg-51bb9b\a7-fixd-numstatic-probe.log
.sympath C:\Users\erikn\source\repos\acdream\refs
.symopt+ 0x40
.reload /f acclient.exe
.echo === x acclient!*world_lights* ===
x acclient!*world_lights*
.echo === x acclient!Render::world_lights ===
x acclient!Render::world_lights
.echo === dt typed (num_static_lights / num_dynamic_lights / ambient_color) ===
dt acclient!Render::world_lights num_static_lights num_dynamic_lights ambient_color sunlight_color
.echo === dt LightParms at symbol (fallback by explicit type) ===
dt acclient!LightParms acclient!Render::world_lights num_static_lights num_dynamic_lights
.echo === END ===
qd