I am encountering a lighting behavior that I can’t wrap my head around. I was wondering if anyone might have insight they could share?
I’m using the built-in render pipeline. I have a custom shader that blends two skyboxes for smooth linear transition between highly varied skyboxes.
When this lighting transition occurs I call DynamicGI.UpdateEnvironment to update the global reflection probe. Updating the dynamic GI lighting is computationally expensive for each or every nth frame. For this reason I introduced a custom reflection probe with mask:nothing that I can update every frame while the skyboxes are transitioning.
The custom reflection probe is functional but I would best describe the output as "wrong’ because as intensity increases details get blown out and the diffuse texture is not brightened. I’m using the built-in Unity diffuse shader, and so it isn’t altogether clear why this alternative approach yields suboptimal results.
I have all other lighting (real-time, baked, etc) turned off to help show the difference in output of built-in global render probe vs a custom render probe.
Here are screenshots that really highlight the difference. The panel on the left shows the custom render probe and on the right it shows skybox environment lighting.
Unlit (Expected Behavior)
Built-In Render Pipeline, Skybox, Intensity 3 w/ DynamicGI.UpdateEnvironment (Expected Behavior)
Built-In Render Pipeline, Custom Render Probe, Intensity 3 (Unexpected Behavior)
Material Properties
Could someone please explain what I am failing to understand, or how I might modify the custom render probe to behave more like the Unity built-in global render probe? Alternatively, what does one do when they need environment lighting to update in real-time, if the above custom render probe approach is not correct?
beats head against wall
Thank you!




