Ticket 016 V4 landed a variance-adaptive EMA alpha that captures "high-variance regions need more attention" via the existing 64-ray-per-probe budget. The ticket spec's fuller version — a second probe layer at 8-pixel stride dispatched only on flagged high-variance tiles — was deferred because V4 delivered the same intent with zero new infrastructure.
When to do this
- If visible noise along contact-shadow edges (pillar bases, under arches) persists even after V4's adaptive alpha settles.
- If a scene with strong local specular or foliage flicker shows tile-level banding that V4 can't resolve.
Scope
PROBE_VARIANCE_WGSL — per 16×16 tile, compute radiance variance across the 2×2 probe neighbourhood + temporal history. Write a flag per tile.
- Refinement tile append buffer + counter. Indirect dispatch driven by the counter.
- Extra-probe pipeline at 8-px stride (reuses the probe_place + trace + temporal shaders with a different uniform).
SSGI_PROBE_RESOLVE_WGSL update to sample base and fine layers, preferring fine where present.
Budget
Ticket notes: ~1 450 base probes + ~100 refinement probes on Sponza. Refinement ray count ~8/probe. Net overhead: 10-15 % more rays, tile-flag + indirect overhead < 0.3 ms/frame.
See docs/perf/016-lumen-importance-sampling.md §V4 closure.
Ticket 016 V4 landed a variance-adaptive EMA alpha that captures "high-variance regions need more attention" via the existing 64-ray-per-probe budget. The ticket spec's fuller version — a second probe layer at 8-pixel stride dispatched only on flagged high-variance tiles — was deferred because V4 delivered the same intent with zero new infrastructure.
When to do this
Scope
PROBE_VARIANCE_WGSL— per 16×16 tile, compute radiance variance across the 2×2 probe neighbourhood + temporal history. Write a flag per tile.SSGI_PROBE_RESOLVE_WGSLupdate to sample base and fine layers, preferring fine where present.Budget
Ticket notes: ~1 450 base probes + ~100 refinement probes on Sponza. Refinement ray count ~8/probe. Net overhead: 10-15 % more rays, tile-flag + indirect overhead < 0.3 ms/frame.
See docs/perf/016-lumen-importance-sampling.md §V4 closure.