Skip to content

STILL_CLAMP_RELAX: measure the ghosting tradeoff under sub-detector lighting drift #5

Description

@DennisSmolek

The still-scene convergence fix (#1) widens the rectification AABB by ×9 for pixels that are simultaneously still (<0.05 render-texel motion), converged, and free of disocclusion / shading-change / reactivity signals. That is what let a bounded-memory EMA accumulator actually converge — phase-locked frame diff 0.182 → 0.018 on Q1.

Widening the clamp is, by construction, a reduction in anti-ghosting authority. Every signal we have restores full rectification instantly, so the exposure is specifically: a lighting change slow enough that the shading detector never fires, on a still camera, on converged history. The detector is a 1-frame comparison with contrast-adaptive floors, so a sufficiently slow ramp is invisible to it and the widened box would let stale luminance persist longer than before.

We have not measured this. Q9 (light steps) fires cleanly and Q3/Q4 (motion) are unaffected because the relax fades out above 0.5 texel/frame — none of those probe the gap.

Wanted:

  • A bench scenario with a still camera and a lighting ramp deliberately tuned below SHADING_FLOOR_MID/COARSE/CV — slow enough to stay under the detector across its whole traverse.
  • Measure convergence lag against STILL_CLAMP_RELAX ∈ {0 (off), 4, 8 (shipped), 16}, alongside the still-scene churn each produces, so the tradeoff curve is on record rather than assumed.
  • If a knee exists, either retune the constant or gate the relax on a slow-drift term.

Context: src/shaders/accumulate.ts (the STILL_* block and its comment), bench/docs/NEXT-STEPS.md §5, PAPER-NOTES.md §6 (listed there as a still-needs for the writeup).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions