Skip to content

Lumen follow-up: variance-driven refinement probe layer #20

@proggeramlug

Description

@proggeramlug

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions