Halo effect on walls that I'm stuck on, Unity 6000.5.9f1, HDRP 17.5.0

forum-post-wall-halo.md
    </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.reflectionLightingMultiplier0 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:

  1. is absent from all four GBuffer render targets,
  2. is unaffected by every Lighting Debug Mode, including Visualize Cascade and Probe Volume Sampled Subdivision which replace surface shading,
  3. is unaffected by disabling every Lighting checkbox in Frame Settings (fog and volumetrics included),
  4. is unaffected by disabling every light in the scene,
  5. is unaffected by a 128× reduction in sky ambient,
  6. is unaffected by zeroing reflectionLightingMultiplier,
  7. 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.

![image|690x442](upload://bSncH0iQXqbxDT07Oy5S1U0hbfd.jpeg)

PS, I’m new to Unity, so sorry if this is an easy one and I missed something obvious.

Not even going to hide its been posted by your AI bot?

Yes, Claude put all the troubleshooting steps I did together.

You can tell claude you want your tokens back