diag #176/#181: artifact CHARACTERIZED - static ~10x-hot magenta wash zebra-striping wall geometry; root = weenie lamps on the dynamic light curve (A7 fix #2); retail static curve Ghidra-verified (calc_point_light 0x0059c8b0)

VSync-on test (30fps): stripes remain => not tearing (windowed + DWM never tears - the tear framing was structurally wrong). Clean captures at the user's spot: the scene is pixel-static except idle anim; the 'stripes/triangles' are the corridor wall's angled braces silhouetted against blown-out saturated magenta. Server-weenie stationary lamps register isDynamic:true (1/d, range x1.5); retail statics use f=(1-d/range)*intensity*wrap/d^3 beyond 1m, range=falloff*1.3, per-channel colour clamp - ~10x dimmer at 3m. Next: A7 fix #2 (static curve; isDynamic decided by motion, not origin) + conformance pin, then the combined #176/#180/#181 gate. a7 pseudocode doc SS1.6 updated with the verified curve; render digest re-bannered.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-06 22:43:43 +02:00
parent 378316af15
commit cace430299
2 changed files with 38 additions and 11 deletions

View file

@ -107,8 +107,23 @@ instrument: a capture session with the game window UNOBSTRUCTED (no chat overlay
snip tool) while the user confirms the flicker is visibly active, + the user's
description of exactly WHAT changes (wash extent? the stripe? brightness?).**
**PORT + VERIFICATION SWEEP (2026-07-06 night, after the user's "retail camera is rock
steady" axiom):** retail's viewer step subdivision ported (`3f34bca0` — radius-anchored
**🎯 ARTIFACT CHARACTERIZED (2026-07-06 late night — the VSync test + clean live
captures):** VSync ON (30 fps) and the stripes REMAIN ⇒ not tearing (and the client is
windowed — DWM never tears windowed apps; the tear theory was structurally wrong).
Clean captures at the user's spot with frame-pair diffs across 1 s: **the scene is
pixel-STATIC except the idle animation — the "stripes/triangles" are STATIC RENDERED
CONTENT**: the corridor wall's angled brace geometry silhouetted as dark triangles
against a BLOWN-OUT saturated magenta glow (zoom: scratchpad live-band.png). Retail
shows the same geometry against a dim wall; ours zebra-stripes because the pink
fixtures are ~10× too hot. **ROOT = the A7 fix-#2 item: server-weenie stationary lamps
take the DYNAMIC light path (`isDynamic: true` at the GameWindow registration, 1/d,
range×1.5) instead of retail's static curve — now Ghidra-verified at 0x0059c8b0:
`f = (1 d/range)·intensity·wrap/d³` beyond 1 m, `range = falloff×1.3`, per-channel
clamped to the light's own colour (see the a7 pseudocode doc §1.6).** The "flicker"
in motion = the high-contrast pattern's edge crawl (+ the wall-press mm wobble),
secondary to the brightness. NEXT: implement fix #2 (static curve for stationary
lights; `isDynamic` decided by whether the light MOVES, not by weenie-vs-dat origin),
then the combined #176/#180/#181 re-gate. retail's viewer step subdivision ported (`3f34bca0` — radius-anchored
steps, remainder final step, viewer-exempt small-offset abort; `calc_num_steps`
0x0050a0b0 / `find_transitional_position` 0x0050bdf0 via Ghidra, pseudocode
`docs/research/2026-07-06-viewer-step-subdivision-pseudocode.md`). The wall-press