Reflection probes make interiors / probed houses darker than expected (RT capture darker still) #250

Closed
opened 2026-10-02 12:43:49 +00:00 by sky_line · 0 comments
Owner

Report

A house covered by manual reflection probes (one large probe bigger than the house, or one probe per floor) looks darker than it should with probes than without. Both capture modes show it, and ray-traced capture (Reflection Detail 3) is a little darker than raster capture.

The user's hypothesis is that the captures don't collect exterior light even though the probe volume is larger than the house.

How probes work (as LL defines them)

These are the points to check our implementation against.

  • Capture comes from the probe's origin, not its volume. A probe renders a cubemap from its centre point. Its volume (sphere or box) only decides where the result is applied. If the origin sits inside the house, the capture sees the interior walls, so exterior light only arrives through what is visible from that point (windows, doors). A probe "bigger than the house" whose origin is inside still captures the inside.
  • Ambient (diffuse) lighting comes from the probes. In LL's PBR pipeline, probe irradiance (the filtered capture) replaces sky ambient inside a probe's influence. A dim interior capture therefore means dim ambient on everything inside, which is darker than the open-sky ambient the house gets with no probes.
  • Bounce light depends on the capture being lit by previous captures. LL captures are lit with the existing probe data, so light accumulates over successive updates (multi-bounce).
    • If our captures (raster and especially RT) light their hits with sky ambient only, or with no ambient for occluded interiors, they lose that bounce and converge darker.
    • The RT capture's hit shading (clean_rt_shade.glsl) uses sky ambient irradiance, and its sun visibility is a single hard ray. That may explain RT being darker.
  • The sky / EEP probe ambiance setting (reflection_probe_ambiance, plus RenderSkyAutoAdjustProbeAmbiance / HDR auto-adjust) scales probe ambient. Skies with low ambiance give dark probe-lit interiors in LL too. Check our VK path applies the same scale.

Viewers really do disagree on this. Firestorm / LL / Alchemy-GL differ in auto-adjust and ambiance handling, so this needs a defined target rather than parity alone.

Investigate

  1. Parity check: the same house and sky in LL's official viewer (GL) vs us, with probe detail Static / Realtime / Raytraced. Compare the darkness.
  2. Capture lighting: do raster captures include ambient from existing probes (multi-bounce), local lights, sun through windows (shadowed correctly at capture time; cascades are fit to the main camera, not the probe), and haze? The RT capture uses one hard sun ray; check its ambient term.
  3. Irradiance generation: check the filtering / normalisation of the irradiance probe (mips, scale), and exposure applied at capture vs at use (auto-exposure applied twice or not at all).
  4. Probe ambiance: check how the EEP reflection_probe_ambiance and auto-adjust are applied in VK vs LL.
  5. Blend at probe edges: check how a probe's blend falloff mixes with the sky / default probe (#249 is related: per-cluster probe dropout).

Possible improvements beyond parity

These follow standard practice:

  • multi-bounce accumulation across updates;
  • a minimum ambient floor from the sky for interior probes;
  • RT capture computing a short-range indirect term;
  • probe relighting instead of re-capturing.

#249 (probe boxes at zoom), the probe P1/P2 visibility work (normal rejection + Chebyshev occlusion can also darken).

## Report A house covered by manual reflection probes (one large probe bigger than the house, or one probe per floor) looks **darker than it should** with probes than without. Both capture modes show it, and **ray-traced capture (Reflection Detail 3) is a little darker than raster capture**. The user's hypothesis is that the captures don't collect exterior light even though the probe volume is larger than the house. ## How probes work (as LL defines them) These are the points to check our implementation against. - **Capture comes from the probe's origin, not its volume.** A probe renders a cubemap from its centre point. Its volume (sphere or box) only decides *where the result is applied*. If the origin sits inside the house, the capture sees the interior walls, so exterior light only arrives through what is visible from that point (windows, doors). A probe "bigger than the house" whose origin is inside still captures the inside. - **Ambient (diffuse) lighting comes from the probes.** In LL's PBR pipeline, probe irradiance (the filtered capture) replaces sky ambient inside a probe's influence. A dim interior capture therefore means dim ambient on everything inside, which is darker than the open-sky ambient the house gets with no probes. - **Bounce light depends on the capture being lit by previous captures.** LL captures are lit with the existing probe data, so light accumulates over successive updates (multi-bounce). - If our captures (raster and especially RT) light their hits with *sky ambient only*, or with *no* ambient for occluded interiors, they lose that bounce and converge darker. - The RT capture's hit shading (`clean_rt_shade.glsl`) uses sky ambient irradiance, and its sun visibility is a single hard ray. That may explain RT being darker. - **The sky / EEP probe ambiance setting (`reflection_probe_ambiance`, plus `RenderSkyAutoAdjustProbeAmbiance` / HDR auto-adjust) scales probe ambient.** Skies with low ambiance give dark probe-lit interiors in LL too. Check our VK path applies the same scale. Viewers really do disagree on this. Firestorm / LL / Alchemy-GL differ in auto-adjust and ambiance handling, so this needs a defined target rather than parity alone. ## Investigate 1. **Parity check:** the same house and sky in LL's official viewer (GL) vs us, with probe detail Static / Realtime / Raytraced. Compare the darkness. 2. **Capture lighting:** do raster captures include ambient from existing probes (multi-bounce), local lights, sun through windows (shadowed correctly at capture time; cascades are fit to the main camera, not the probe), and haze? The RT capture uses one hard sun ray; check its ambient term. 3. **Irradiance generation:** check the filtering / normalisation of the irradiance probe (mips, scale), and exposure applied at capture vs at use (auto-exposure applied twice or not at all). 4. **Probe ambiance:** check how the EEP `reflection_probe_ambiance` and auto-adjust are applied in VK vs LL. 5. **Blend at probe edges:** check how a probe's blend falloff mixes with the sky / default probe (#249 is related: per-cluster probe dropout). ## Possible improvements beyond parity These follow standard practice: - multi-bounce accumulation across updates; - a minimum ambient floor from the sky for interior probes; - RT capture computing a short-range indirect term; - probe relighting instead of re-capturing. ## Related #249 (probe boxes at zoom), the probe P1/P2 visibility work (normal rejection + Chebyshev occlusion can also darken).
sky_line added this to the Slipstream project 2026-10-06 15:04:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#250
No description provided.