</style>
HDRP: soft luminous "halo" on interior walls that survives every lighting elimination — including non-lighting debug modes
Unity 6000.5.9f1 · HDRP 17.5.0 · Deferred · Windows
The symptom
I have soft luminous patches on flat interior walls of a procedurally built apartment room. They do not correspond to any light source. They are brightest high on the walls and in the upper corners and fade downward. They read as painted on rather than cast — a real light would fall off away from its source and these do not.
They are visible in the Game view, the Scene view, and with the HUD disabled.
What I have eliminated, and how
Everything below was tested directly. I am listing the method because several of my early tests turned out to be invalid (see the "methodology warning" section — it may be the most useful part of this post for anyone else debugging HDRP volumes).
Lights and light types
| Test | Result |
|---|---|
Disabled Light_Window_Neon (point light) |
Halo remains |
| Disabled every light in the scene | Halo remains |
| Switched 3 rectangle area lights → 130° spot lights | Halo identical |
Reflections and environment
| Test | Result |
|---|---|
| Disabled the room's Reflection Probe | No change |
Probe Clear Mode: Sky → dark SolidColor |
No change |
IndirectLightingController.reflectionLightingMultiplier → 0 |
Halo remains, and became more pronounced |
Sky / ambient
Scene ambient mode is Skybox. The active sky is an HDRI Sky at exposure 11, authored in
DefaultSettingsVolumeProfile.asset (the scene volume has no VisualEnvironment override).
| Test | Result |
|---|---|
Added an HDRI Sky override on the scene volume, exposure 11 → 8 → 6 → 4 |
Halo present and unchanged at every value |
That is a 128× reduction in sky ambient with no effect on the halo.
m_LightingDataAsset is null — there is no baked lighting in this scene, so stale lightmaps are
not the explanation for "all lights off, still lit."
Screen-space effects
| Test | Result |
|---|---|
SSGI State: Disabled |
Room became much brighter (see note below). Halo not clearly removed. |
SSGI Max Ray Steps 64 → 128 |
No change |
SSGI Denoiser Radius 0.5 → 0.1 |
No change |
| SSAO disabled | Halo remains. AO visibly layers shadow over the halo. |
Note on SSGI: disabling it made the room brighter, not darker, because HDRP's SSGI replaces the ambient probe for indirect diffuse rather than adding to it. With SSGI on, indirect comes from the dark room; with it off, it falls back to the exposure-11 sky probe. Interesting, but it did not lead anywhere — see the sky tests above.
Post-processing
Bloom, fog and SSGI all disabled — no change. (But see the methodology warning: my first attempts at these were invalid.)
Frame Settings — the strongest elimination
Via Rendering Debugger > Camera > Frame Settings, I unchecked Fog and every other checkbox in the
Lighting block simultaneously. The halo survived all of them off.
Frame settings sit below the volume profile, so this result cannot be undone by volume overrides.
UI
Disabling the UI Toolkit HUD GameObject entirely — no change.
The two results that make this strange
1. It is not in the GBuffer
Using the Frame Debugger, I selected the last event of the GBuffer pass and inspected every bound
render target:
| Target | Contents | Halo? |
|---|---|---|
| RT0 | Albedo / base color | No |
| RT1 | Normals | No |
| RT2 | Smoothness / metallic / AO | No |
| RT3 | — | No |
So it is not the wall texture, not the geometry or normals, and not the material's surface properties.
2. It appears in debug modes that do not render lighting
In Rendering Debugger > Lighting > Lighting Debug Mode, the halo appears in every mode:
- Diffuse Lighting, Specular Lighting, Indirect Diffuse Lighting, Reflection Lighting — expected
- Visualize Cascade — shadow-cascade colors
- Probe Volume Sampled Subdivision — APV brick colors
The last two replace surface shading with flat debug colors. They do not render scene lighting at all. A thing that survives them should not be produced by any lighting term.
This is the part I cannot reconcile. It is not in the GBuffer, it is not any lighting component, it is not fog or volumetrics or any frame-settings feature, and it is not UI — yet it paints over debug visualization modes.
⚠️ Methodology warning that may help others
Several of my early eliminations were invalid, and it took a while to notice:
Unticking an override's checkbox on a Volume does not disable the effect. It removes the scene's
opinion and the value falls through to DefaultSettingsVolumeProfile.asset. In my project that profile
authors Bloom (active: 1, intensity 0.2) and AmbientOcclusion (active: 1, intensity 0.5). So:
- Unticking Bloom took it from 0.12 → 0.20 — it got stronger
- Unticking AO took it from 1.5 → 0.5 — weaker but still on
To actually disable an effect, leave the override ticked and set its intensity to 0 — or use Frame Settings, which sit below the volume system entirely.
Additionally, my scene's volume profile is authored by an editor script that re-adds any missing override on rebuild, so some "I turned that off" tests were silently reverted before I looked.
The question
What in HDRP 17.5 can write to the camera color buffer in a way that:
- is absent from all four GBuffer render targets,
- is unaffected by every
Lighting Debug Mode, includingVisualize CascadeandProbe Volume Sampled Subdivisionwhich replace surface shading, - is unaffected by disabling every Lighting checkbox in Frame Settings (fog and volumetrics included),
- is unaffected by disabling every light in the scene,
- is unaffected by a 128× reduction in sky ambient,
- is unaffected by zeroing
reflectionLightingMultiplier, - and is not UI?
Concretely: is there a known way for a debug visualization mode to still composite something on top, or a pass I should be looking at between the GBuffer and the final blit that is not covered by Frame Settings toggles?
Frame event list for reference (Deferred):
GBuffer → RenderShadowMaps(16) → SSGIPass(8) → Generate Max Z Mask(3) →
Deferred Lighting(29) → SubsurfaceScattering(3) → RenderSky → ClearStencil →
DuplicateDepthBuffer → Fog Volume And VFX Voxelization(2) → Volumetric Lighting →
OpaqueAtmosphericScattering → ColorPyramid(19) → CombineAndUpsampleTransparent →
ColorPyramid(19) → Distortion(2) → PostProcessing(26) → Final Blit →
Set Final Target → Screen Space Overlay UI(3)
Happy to post screenshots, the volume profile, or any Frame Debugger capture on request.
PS, I’m new to Unity, so sorry if this is an easy one and I missed something obvious.