Current reflection methods have issues when volumetric fog is present \ 有体积雾时当前的几种反射方案存在问题

[Image Removed]​​1. SSR/Lumen Reflection Volumetric Fog Ignorance​​

When not using SSR (Screen Space Reflections) and relying solely on Lumen reflections, the system completely ignores volumetric fog contributions, resulting in unnaturally clean reflections.

​​2. Water Surface Reflection Path Mismatch​​

B1 and B share identical light paths, meaning water surface reflections should perfectly align with above-water visuals. However, the current D+B hybrid algorithm causes excessive fog density accumulation, creating a visible seam at the water boundary.

The C/C1 issue is less pronounced but still problematic: the correct output for C1 should be a composite of D1+D2, whereas the current implementation only outputs D.

The most pressing issue we’re facing is the visible disconnect between water surface reflections and their corresponding objects (particularly in areas B and B1). This misalignment persists throughout all water surfaces in the game and proves exceptionally challenging to resolve.

The problem becomes significantly worse when enabling the Skylight Leaking parameter, causing severe artifacts. We would greatly appreciate your expertise in investigating this critical rendering issue.

​​Reference:​​

Skylight Leaking Documentation

[Content removed]

________________________________

Level:

UE5_UDN_Cases

/Script/Engine.World’/Game/VolumeFogReflectionBug.VolumeFogReflectionBug’

目前lumen不支持体积雾效果贡献GI或者反射;有个命令行r.lumen.samplefog 开启后lumen trace会考虑雾的贡献,但不支持local体积雾(比如测试环境中的基于材质和几何体定义的体积雾范围和效果)。

Hi大佬好~

关掉了local体积雾,只保留全局体积雾,图中黑的地面是不透明镜面,没开启SSR,稍微亮点的是半透明​镜面,但在材质里强制开启了SSR,测试这个指令没反应

启用了SSR的断层比较明显,​如果在后处理里开启SSR,则金属也会像右侧一样断层比较明显。

目前有什么更好的方法吗?还是说需要在材质里Trick一下?​

[Image Removed]

我这边开关有效果,把fog的颜色变下试试是否明显。目前没有感知到有特别好的方式,一般通过SSR结合一定水面扰动和模糊可以淡化衔接问题。如果雾气特别浓并且smaplefog开启也无法很好blend,要求高的话你提到的水面或镜面材质中trick一下也是个方法,要不就plannar reflection

[Image Removed]

我尝试之后确定r.lumen.samplefog 1对体积雾​是无效的,当仅仅有指数高度雾的时候才生效,生效时对于接缝也是毫无影响的,对于定义过局部雾气密度的项目更没有效果。

[Image Removed]​

导致这个接缝问题主要是因为B又加上了B1,也许只需要改变SSR和体积雾的渲染排序,或在局部体积雾和SSR视线相交的区域减弱密度,变成仅B,就能得到看似自然物理的效果了。

“ 目前lumen不支持体积雾效果贡献GI或者反射”

你提到的反射和反射对象无法很好融合产生接缝的问题,说下我的理解供参考。简单地说从目前几种反射实现的机制基本很难实现对体积雾完美的反射效果

屏幕空间计算的反射机制不可能产生物理正确的雾气反射. 因为在真实世界中水面的反射光路是从反射物到水面到眼睛. 屏幕空间的反射因为重用了屏幕已经有的像素信息,因此光路可以模拟成从反射物到眼睛加上从水面到眼睛。后者的光路长度基本是前者真实世界的两倍。这并不是渲染前后的问题,光路两倍长度雾效就几乎是两倍的浓度,导致SSR看到的反射雾效要更加浓些,这在当前SSR下基本无解。把水面本身受雾效影响关闭(半透材质里可以关闭),可以减弱接缝,但在这种情况下一旦反射物出屏幕就匹配不上了,因为一旦出屏的像素应用了反射LumenScene,机制类似真实物理世界的光路,如果水面不接受雾反而雾不够浓了,和SSR也就脱节了。

PlanarReflecion的机制类似物理世界,总的光路也是从反射物到水面到眼睛。经过的空气厚度和真实世界类似,所以理论上反射是可以无缝衔接的。事实上不开体积雾情况下也OK的。但体积雾有特殊性,它的渲染是View Dependency的,PlanarReflection的体积雾反射效果基于当前摄像机View来计算,而不是反射面。目前体积雾应该还不支持MultiView的渲染(你可以从Plannar Reflection反射的Local体积雾效果直观的感知到它的反射渲染原理)。这里还有个因素是MultiView的LumenScene目前不支持PlanarReflection,也就是反射中没有GI。因此也不是渲染前后顺序就能解决的问题。所以非常抱歉,目前PlanarReflection也是无法完美适配体积雾的反射

因此我认为要实现完美的体积雾反射目前除了PT没有特别好的解决方式。要完美解决从机制上就比较困难。尽量通过制作来规避或者淡化,还有可以做些材质里的fake

感谢大佬详细解答,我意思也是当前的机制不好解决,只能fake,:folded_hands: 接下来我们需要探索下在SSR水材质上的改善这种脱节问题,特定角度压暗,区域雾不同于全局雾(同屏可能左边没有雾右边有雾),如何完美衔接,还需要进一步探索