With `r.lumen.reflections.screentraces` set to 1 (the default), there is a weird color accumulation effect that can happen if two reflective surfaces are visible to each other.
[Image Removed]
You can get the same artifact if you use a heavy map.
[Image Removed]
With `r.lumen.reflections.screentraces` set to 0, this goes away. I want to avoid doing that though because I know that screen tracing should be more optimal for the GPU, and it provides more surface details than the surface cache.
Something I noticed is that clear coat materials don’t have this issue. This is because DiffuseIndirectComposite.usf handles specular for clear coat differently -- doesn’t apply EnvBRDF.
Looking at reference photos of gold plated objects online, I can see that this shift towards red as light ray bounces increases is a natural physical phenomenon. The results I am seeing here seem exaggerated though. I understand screen tracing is a rendering trick since its based off last frames results. I am wondering if there is maybe something wrong mathematically. Another idea is to add some kind of bounce tracking per pixel. Currently its basically acting like an infinity mirror, even though roughness is at 0.1. Even at higher roughness values like 0.3 the problem still happens just less bold.[Image Removed]
Steps to Reproduce
Create a material with the following settings. This is included in the project file.
[Image Removed]
open NewMap.umap which is included in the project. Or create a Default Open World and apply the material to two cubes with surfaces at right angles.
Use High or Epic scalability.
This reproduces in 5.5 as well. I haven’t tested farther back than that.
Hello,
Thank you for reaching out.
I’ve been assigned this issue, and we will be looking into these gold self-reflections for you.
Hello,
The effect you are seeing is expected, and is based in reality. As the light reflects back and forth, more and more of the “not red” light is absorbed by the gold, leaving only the red to enter the camera. A couple of things to keep in mind when comparing a render to a real photograph:
- Renderers are mathematically perfect, while the real world is not. Under realistic conditions, a surface has some level of scratches, contaminant, and other microscopic (or macroscopic) features that prevent perfect mathematical reflections. This causes the number of light bounces to become more limited.
- In reality, light is both a wave and a particle. As the features become smaller, wave interactions become more dominant, and send more light out. Renderers, especially a screen trace, cannot model this behavior.
- Screen Traces make the assumption that the pixel traced to will look roughly the same from the camera’s direction as it does from the ray’s direction. This assumption does not hold in interior corners with highly reflective metal surfaces, leading to extra internal reflections.
To address the undesirable strong red tint in Unreal Engine, you can slightly reduce the metallic factor on the gold Material, down to 0.9 or 0.95. This will make the gold Material brightening darker reflections, but will not reduce reflection sharpness, but will eliminate the strong red color. The self-reflections become a more tame lower-saturation orange. This can be tweaked as art direction desires.
[Image Removed]Please let us know if this helps.