Hello
I have a day/night cycle that controls SkyLight’s cubemap with a node Set Cubemap Blend. I captured a sky each 3 hours to have 8 static images that i can use to blend.
It works works perfectly fine on opaque materials (cube on the left) while on transluscent materials (like water) cubemaps dont blend and there is a visible pop up. I printed out values on the left side of the screen: the first value is alpha, the last 2 are cubemap names.
Video:
[video]https://drive.google.com/file/d/16LnYOBYgluSYRl8Ga4ktnWhC4vjMZSoh/view?usp=sharing[/video]
Any ideas how to fix this?
Did you ever figure this out? I am having the same issue… Any workarounds or fixes?
Hey,
I actually solved this for a similar use case myself earlier and just happened to bump into this thread while searching for a solution to something else entirely.
My fix to this was changing one line in shader code:
In “\Engine\Shaders\Private\ReflectionEnvironmentComposite.ush” find the following:
#if REFLECTION_COMPOSITE_SUPPORT_SKYLIGHT_BLEND
float3 SkyLighting = GetSkyLightReflectionSupportingBlend(RayDirection, Roughness, SkyAverageBrightness);
#else
float3 SkyLighting = GetSkyLightReflection(RayDirection, Roughness, SkyAverageBrightness);
#endif
…and change the lower function (after ‘else’) to also support blending. ( GetSkyLightReflection() → GetSkyLightReflectionSupportingBlend() )
The shader code is recompiled when you restart the editor and load your project or run “RecompileShaders changed” console command in game. The compile might take a while obviously so expect a short freeze if you do it with the console command.
I haven’t tested this change enough to know if it has any serious drawbacks apart from the minor performance effect. After all, the blend is probably not supported for a reason such as not being supported on consoles or something like that so use this with that in mind!
Hope this helps!
Hello,
Mini update:
This is because in forward, lerped skylight blending needs to be enabled per material (using Blend Sky Light Cubemaps) since it adds a bit of cost and might not be worth it for non specular material. At least that is how I understand the history of it.
In 5.4, this has been updated and you can simply override all your forward material to feature blending of skyboxes for total specular correctness. A decision you can take per platform for a project. This can be enabled by setting r.ForwardShading.ForceSkyLightCubemapBlending to 1.
The change list one can integrate to get that behavior is this one.