UE5.6 ReflectionCapture 异常

各位EPIC的老师好,问题描述如下:

<br/>

1、UE5.5升级5.6;

<br/>

2、项目中移动端反射捕获出现异常,感觉像是没有捕获到天光与天空?截图如下:

5.5

[Image Removed]

<br/>

5.6

[Image Removed]

5.5

[Image Removed]

5.6

[Image Removed]

<br/>

3、复制了项目中的渲染配置(详见上传的工程)到新建的项目中,复现了该问题,并且反射捕获的图也不对:

5.5

[Image Removed]

5.6

[Image Removed]

<br/>

5.5的效果就是预期的效果,请问该如何解决?

你好,我本地可以复现问题。看起来是Skybox的模型/材质没有参与SSR反射。这可能和Skydome的材质性质有关,

但天空是可以被反射的,来自于Skylight,skylight是捕获skyatmosphere,因此反射可以看到天空。因此反射包含有SSR,Reflection Capture(不包括天空),以及Skylight产生的天空。5.6看到的问题是Skybox本身不参与SSR了,我觉得这个应该没大问题,看到反射不对是因为Reflection Capture的位置和摄像机位置偏差太大,因此反射对不上柱子,差异过大。

不过我也已经报了相关的问题bug,我也会问下本地其他同事看是否有想法,有进展再同步到这里。

下图是5.6里调整Reflection Capture位置,重新build反射,摄像机在其附近观看的效果。skyLight的天空反射是有的,当柱子出屏幕时另两种反射也可以基本对其融合

[Image Removed]

1、“所以我想请教的是,在5.6下怎么恢复到5.5的效果?”

Skybox的材质is sky标记开启,有特殊的处理,目前我没找到简单的设置可以避免这个问题。问题已经报了bug,还未有更新消息

2、“这里的解释:如果没有反射捕捉的话,因为是基于屏幕的反射,屏幕外的树(下图两边是有树的)没有被捕获进来,所以效果不理想。”

我了解这是SSR的局限,屏幕里不绘制的像素无法产生反射。我产生疑惑是Single Layer Water你是如何在5.6的Vulkan下产生SSR的?因为你第二次给到的测试项目是一个Single layer water的水面,又提到上面屏幕边缘的SSR缺失的问题,我本地是无法重现你说的问题的。

single layer water也支持半透效果,只是实现和普通的半透不同,因此depthfade节点不可用。普通的半透并不知道湖底深度,因此在岸边你需要用Depthfade类似的节点去获取水底离水面的深度,岸边深度低时做一个透明度的调整来模拟。但Single Layer Water更加物理,它可以知道深度,有很多效果是基于这个,比如湖水越深越暗,岸边看起来更加透明,其实透明度并没变,是光线穿越水深减少更加能够看到湖底罢了。具体使用参考文档

另外手机预览下也是有效的

[Image Removed]

感谢耐心的解答

感谢解答

但在项目中(参考项目截图),​Skybox不参与SSR的话,在水面上就看不到云的倒影了,从美术效果上说无法接受。

在新建的项目中,复现了这个问题:

1、​开启了反射捕捉,效果不像是水。

[Image Removed]2、关闭了反射捕捉,效果更象水。

[Image Removed]

但是关闭了反射捕捉的话,因为SSR的关系,屏幕边缘的水会反射不到环境。

新的测试项目水面替换成了single layer water 5.6在Vulkan上不支持SSR,看上去你关闭了Reflection capture最后那张截图也没有SSR,我不理解你说了关闭后因为SSR的关系边缘没反射确认是Vulkan下预览的?

Volumetric cloud Vulkan mobile下也不支持。但你绿色植被的截图里看上去有体积云,又有体积云反射,这些截图也是Vulkan?

以上的截图,都是Vulkan预览下截的图。

“但你绿色植被的截图里看上去有体积云,又有体积云反射”。

这是因为我们在移动端,把体积云烘焙成了静态的纹理运用到天空盒材质上,所以看起来像是“体积云”。

[Image Removed]

但是在5.6下,ReflectionCapture感觉是有问题的,导致水面的反射与5.5不一致。

5.5 ReflectionCapture--Rendering--Visible默认勾选

[Image Removed]5.6 ReflectionCapture--Rendering--Visible默认勾选

[Image Removed]这里可能跟你定位到的问题是有关系的:“5.6看到的问题是Skybox本身不参与SSR了”。

“我不理解你说了关闭后因为SSR的关系边缘没反射确认是Vulkan下预览的?”

这里的解释:如果没有反射捕捉的话,因为是基于屏幕的反射,屏幕外的树(下图两边是有树的)没有被捕获进来,所以效果不理想。

[Image Removed]

所以我想请教的是,在5.6下怎么恢复到5.5的效果?

感谢!

1、“Skybox的材质is sky标记开启,有特殊的处理,目前我没找到简单的设置可以避免这个问题。问题已经报了bug,还未有更新消息”

好的,那这个我也只能等,或者要换其他的方案了。

请教一下,有没有全局让ReflectionCapture失效的方式?因为我们项目是UE4升级UE5,关卡也很多,1个1个去处理的话,效率比较低。

2、我没有让单层水,在Vulkan下产生SSR,我用的就是Water插件的水材质,然后ReflectionCapture--Rendering--Visible【不】勾选,我认为在ReflectionCapture没有捕获天空的情况下,这样子的处理更加像水一些。

3、我这里还想再请教一下,现阶段UE5关于ReflectionCapture的相关知识:

在PC端,因为有Lumen的缘故,绝大部分情况下ReflectionCapture已经失效了,是不是只有半透明之类的材质才走SSR?

在移动端,ReflectionCapture才是其应用的主力场景?

1、目前手机上我没有找到全局关闭的设置或命令行。一些设置在手机上并不起效

2、water插件的水材质就是Single layer water材质。所以你实际项目里没有使用Single layer water,所以有SSR对吧?

3、PC上通常反射使用Lumen,当Lumen反射起效时只有Lumen,没有其他反射和Lumen混合起效。lumen有screen trace的反射,不需要SSR,也不需要ReflectionCapture。对,移动端用ReflectionCapture多,而且是静态的。动态可以使用Plannar Reflection

另外Reflecton capture不适合作为大面积清晰反射的水面,因为很不精准;它适用于范围小的对象。另外问下你们的光照是动态需要变化的吗?如果如此静态的ReflectionCapture如何应付?如果是定时更新不是完全实时的,把Skylight作为静态捕获天空和云,因为skylight的cubemap是可以作为反射的一层。这样就不需要Skybox的SSR,反射来自Skylight以及前景景物的SSR。还有你提到云是做在skybox材质里的,即使5.5里skybox有SSR,那当Skybox在屏幕不可见时云的SSR反射就会消失,这个衔接问题如何处理的?

我们UE4一直是用半透明的水材质,我们的项目绝大部分时间都是平视视角的,所以天空大部分时间都在屏幕空间内,效果还行。

但是现在发现UE5中效果没有单层水的效果好。

但是单层水材质在移动端的边缘会有明显接缝(之前半透明可以用DepthFade来融合过渡处),请问这个有办法处理吗?

下图安卓预览下的截图:

[Image Removed]

抱歉,没有表述清楚,基于湖底深度的渐变是有的。

但是水面Mesh与土地Mesh相接的地方:

PC端可以融合得很好

[Image Removed]但是Mobie预览的效果则很“实”,没有融合的效果。

[Image Removed]所以请问像这种情况在Mobile端是否有解决思路呢?

这是反射,来自skylight或refelction capture。移动端反射不精确导致的,PC是Lumen reflection所以没问题。有俩个思路,一个是移动端提供精确的反射;一个是把边缘的反射降低减弱,这个信息可以来自water body节点的depth。以下三张图分别是不做修改,使用Plannar reflecton提供精确反射,以及使用water body depth来降低边缘反射的效果

默认未效果,反射接缝

[Image Removed]使用waterbody的depth信息降低反射,可以通过Ambient occlusion通道实现

[Image Removed][Image Removed]Plannar reflection提供精确反射[Image Removed]

感谢!

Plannar reflection对我们来说太耗了,所以不太适用。

waterbody的效果非常好,但是我们项目中没有用waterbody,用的是我们自己制作的静态网格体面片附上单层水材质。

所以请问有没有相关的节点能够在普通的静态网格体上直接输出类似的深度信息呢?

不行,这需要waterbodyinfo的信息。另外有个SceneDepthWithoutWater的材质节点目前也无法在手机生效