UE5.5正式版MEGA Light实验
Bardos-V
2024年11月14日 08:45

小玩了一下MEGA LIGHT,感觉还不错,不过也有很多局限性,列如目前不支持定向光,水和云,半透明等等这些直接光的投影。启用之后会取代原来的所有阴影方案:距离场阴影,阴影贴图,光线追踪阴影,传统阴影,体积雾阴影。

技术概括,简单来说,Megalight是一种随机性基于BVH对灯光的重要性进行随机采样,通过射线检测出当前光源是否为朝向摄像机的主要光源,如果光源被命中则该光源的贡献照明就会添加到当前像素中

目前还不支持软件光追,所以先要在项目设置里开启硬件光追,和MEAGA LIGHT,对于同一个工程的不同关卡,还可以通过后期盒子来切换是否使用MEAGA LIGHT

此外MEAGA LIGHT是具有较为稳定的性能开销,尤其是对于阴影深度即Shadow depth的优化,一定程度上减少了成本,但是会随着几何上的像素复杂性,以及场景照明复杂的提高,最终的光照效果可能会下降

MeagaLight使用了两种阴影方法,每个光源都可以使用不同的阴影方案。

一种是光线追踪:是默认的方法,它并不会增加每个光源的额外消耗,并且可以正确的显示区域阴影,缺点就是质量取决于简化的光线追踪场景,而光线追踪场景量则代表了阴影的默认质量,而光线追踪场景则是由NANITE网格构建的,某些情况下默认的nanite网格参数会使得回退后的网格质量过低,那么就会影响最终的阴影质量,可能需要调整模型里的NANITE设置,回退相对错误以及回退目标这两个参数。

如果遇到某些阴影会随着距离的增加而丢失,或者某些地方阴影丢失,则有可能是光线追踪场景剔除造成的阴影丢失。可通过以下三个命令解决 r.RayTracing.Culling.Radius 设置光线追踪摄像机周围的距离,超过此设定便会被剔除

r.Raytracing.Culling.Angle 剔除光线追踪投影的角度

第二种阴影方案则是使用虚拟阴影贴图追踪光线,虚拟阴影贴图使用光栅化逐光源生成,能够捕获到完整的NANITE网格细节。缺点是只能得到无限近似区域阴影,并不能得到特别精确的阴影生成,而且每个光源的成本会显著增加

开启后阴影会出现噪点可使用控制台命令r.MegaLights.NumSamplesPerPixel来控制每像素光线的命中数量来增加不透明物体的光照质量。目前它只能用三个预设值选择。还不能随意更改分别是2,4和16。对于MRQ渲染,MeagaLight尚未提供参数专门控制,但可以通过提升大约为8的抗锯齿样本可解决良好效果

为了最大的优化噪点问题,尽量避免把光源放在几何体内部,就是说不有东西挡住光源,然后就是保证效果的同时缩小光照的衰减范围,聚光灯锥角大小,以及面光的长宽比

MEGA LIGHT是十分依赖通过降噪器降噪之后的最终效果的,在这之前单个像素能够受到的重要照明区域是有限的。因此对于灯光的范围把控是很有必要的。

最后,拿了个媒体源作为纹理放到灯光上使用,发现在特别黑的区域会产生特别多的噪点,这个不清楚原因,我试过提升采样以及抗锯齿仍旧没法解决,这可能是LUMEN的原因,也许是LUMEN把它认成自发光了?并不对,它仍旧是一个光源的ACTOR..或者可能是纹理区域光对于几何表面投射的分辨率太低了?