Stop SingleLayerWater always reflecting Sky Capture?

How can I prevent SingleLayerWater Shader based materials from reflecting the Sky Capture? I have a level in which water is located both inside, and outside. But the water inside is reflecting the sky and clouds, even though its an enclosed space.

How to replicate:
Create a new level with the time of day preset.
Set the skylight to stationary.
Make sure the skylight has recently captured.
Make a SingleLayerWater material with 1 specular, and 0 roughness.
Place a plane with this material, in any made enclosed space/environment.
See the sky reflected on the water plane.

Tested and effects both 4.26 and 4.25.

I took the time to read the code for the SingleLayerWater shader. It appears it just straight up grabs the sky capture, and uses it in place of regular reflection captures. Line 90 of SingleLayerWaterComposite.usf const bool bCompositeSkylight = true; Setting this to false stops it from reflecting the sky, but does not make use of regular reflection captures still. And this does not eliminate other problematic faked reflection properties. I also have no clue how to make a copy of these shaders, so that I could maintain both versions of the shader. This code is beyond my skill level.
So yeah, is there a proper/intended way for me to deal with this? Or should I make a bug report (that probably wont get fixed for the next 2 years)? I’m sorry, I’m still waiting on an old bug report to get solved.

1 Like