虚幻引擎5通过Lumen全力发展动态全局光照
2022年5月27日
Lumen
光线追踪
功能
动画
动画
技术博客
虚幻引擎5
虚拟制片
设计
Lumen是
虚幻引擎5
中的全动态全局光照和反射系统,开箱即用。它专为次世代主机以及建筑可视化等非游戏领域的高端可视化而设计。我们将在这里介绍Lumen的功能,并概述其技术细节。如需完整的参考资料,请参阅
Lumen文档
。
全局光照
当光线离开光源时,它会照亮可在光源位置看到的所有表面,这在计算机图形学中被称为“直接光照”。但在现实生活中,光线不会止步于此,它还会从表面反弹出去,并在这个过程中捕获表面的颜色。光线从粗糙表面向各个方向的反弹被称为“漫反射间接光照”或“全局光照”。而光线从光滑表面反弹出去的过程被称为“反射”。最终,光线会到达你的眼睛或摄像机,形成图像。
过去,在大多数游戏中,全局光照只能通过一个名为“光照贴图烘焙”的离线过程处理,因为它的计算成本太高,无法实时计算。在虚幻引擎中,光照贴图通过
CPU Lightmass
或
GPU Lightmass
烘焙。光照贴图提供的静态光照可以带来非常高的质量,但是需要很长的构建时间,并且极大地限制了游戏环境。任何会显著改变间接光照的动作(如移动壁挂电视)都会使光照状态变得不正确。
需要这些动态场景的游戏一直依赖于基于辐照度探头的低质量光照,以及像环境光遮蔽这种提供近似全局光照效果的方法。在质量上能与烘焙光照相媲美的全局光照曾一直难以实现。
Lumen会实时模拟光线在场景中的反弹,这使得玩家能够改变游戏世界的任何方面,而间接光照将自动更新。玩家可以破坏关卡中的大部分东西,更改当日时间,或照亮关卡的一部分,这些变化将自动传播到光照中。游戏开发者可以告别在虚幻编辑器中看到的“光照需要重建”消息。
Your browser does not support HTML5 video.
Lumen高质量地解决了全局光照问题,提供了色彩溢出和间接阴影之类的效果。Lumen支持无限漫反射,这在具有明亮表面的场景中非常重要,例如下方场景中的白色油漆层。
UE4Arch的Rafael Reis
在解决全局光照问题的同时,Lumen也解决了导致室内环境比室外环境更暗的天空阴影问题。
Lumen还可以传播自发光材质中的光线,并且不会产生任何额外成本,例如下面的灯和窗户。自发光区域的大小和亮度存在限制,超出限制将产生噪点瑕疵。从本质上说,自发光光照要比手动放置的光源更难处理。
Lumen也解决了半透明和
体积雾
的全局光照问题,但质量较低。这里,自发光标志网格体动态地照亮了体积雾。
反射
Lumen以动态方式为具有任意粗糙度的任意表面解决了反射问题。这取代了预先计算的反射形式(如
反射捕获
)以及具有限制性的技术(如
平面反射
和
屏幕空间反射
)。
但是,仅为摄像机可直接拍摄到的内容处理动态全局光照是不够的;Lumen还提供了可在反射中看到的具有动态全局光照和阴影的天空光照。
模型由奥迪提供
Lumen反射支持镀膜材质,比如这里的车漆,它的外层镀膜具有镜面反射,而内部层所具有的更多是光泽反射。
模型由奥迪提供
Lumen中的光线追踪
Lumen使用光线追踪处理这些光照功能,并且会使用场景的粗略版本实现更快的光线交汇。切换到Lumen场景视图模式,就能够以可视化方式查看这个场景。这个视图显示了Lumen为实现全局光照和反射,在追踪光线时所“看见”的情况。
Lumen默认使用网格体距离场,这种技术被称为
软件光线追踪
,因为它不需要支持光线追踪的显卡硬件。距离场以一种快速实现光线交汇的方式表示网格体的表面。
软件光线追踪还会将网格体合并到一个全局距离场中,即使众多网格体重叠在一起(这种情况在手工放置的
Megascans
资产中比较常见),也能实现非常快速的光线交汇。Epic的技术演示
《Lumen in the Land of Nanite》
和
《古代山谷》
完全使用了全局距离场追踪,因为存在大量的网格体重叠。
Lumen也可以通过项目设置使用
硬件光线追踪
。硬件光线追踪更精确,能够描绘更多的几何体类型,包括带蒙皮的网格体,但成本更高。镜面反射要求启用硬件光线追踪。
UE4Arch的Rafael Reis
在
《黑客帝国觉醒:虚幻引擎5体验》
技术演示中,高耸的城市建筑挡住了太阳的直接光照,因此屏幕中的大部分内容都是由Lumen提供光照的。
Lumen在这个演示中使用了硬件光线追踪,实现了高质量的反射、带蒙皮的网格体和辽阔的视野范围。
表面缓存
当光线射中表面时,Lumen需要评估材质和传入的光照。如果每条光线在到达时都要执行这一过程,成本将非常高昂,并且效率极低;多条光线可能会射中同一个点,材质可能具有多个纹理查找。Lumen默认启用
表面缓存
,并且会在其中缓存这次光照。
Lumen首先会选择从哪些方向捕获各个网格体,使网体格所有表面都被覆盖到,以这种方式填充表面缓存。当玩家在场景中移动时,Lumen会不断重新捕获附近网格体的材质属性,放入表面缓存图集中。
Nanite虚拟化几何体
系统可以大大加快这些网格体的渲染速度,尽管对于Lumen而言,这不是必需的,但多边形计数较高的网格体受益尤其明显。然后,这些表面会被照亮,在这个过程中会计算可在反射中看到,并具备多反射全局光照和阴影的天空光照。表面缓存光照现在已经可用于加速全局光照和反射等功能。
表面缓存是对Lumen的一项关键优化,但它也存在内容方面的注意事项。具体而言,它只支持内部结构简单的网格体,这意味着墙壁、地板和天花板都应该是独立的网格体。将包括家具在内的整个房间作为一个单独的网格体导入,预计在Lumen中是行不通的。
表面缓存视图模式会将未覆盖的地方显示为粉红色。这些区域在反射中将显示为黑色,并产生基于视点的全局光照,因为只有Lumen屏幕追踪会被激活。
最终采集和去噪
光线追踪的运行成本高昂,因此我们无法负担追踪太多光线。同时,屏幕上的每个像素都需要考虑接受来自场景中其他各个表面的光照,因此它才被称为“全局”光照。我们不可能追踪所有方向的光线,所以必须选择一个小的子集。如果错过了重要的方向,最终图像中会显示出噪点瑕疵,所以我们必须明智地判断光线的追踪方向,并尽可能地重复利用那些为数不多的追踪。
对于漫反射全局光照,Lumen使用了一种
基于辐射率缓存的最终采集高级算法
,该算法曾在2021年的Siggraph大会上发表。
Lumen的最终采集使用了屏幕空间辐射率缓存,会对主屏幕的全局光照计算进行大量下采样。下采样的间接光照与全分辨率材质数据整合,产生全分辨率着色。
在这个辐射率缓存中,传入的光照会被过滤,这大幅消除噪点,并重新利用了相邻像素间的宝贵追踪。这与屏幕空间去噪器不同,因为我们仍将在下采样的辐射率缓存空间中进行操作,这样更高效。
Lumen会非常仔细地选择光线的追踪方向;它将检查上一帧中具有明亮光照的方向,这种技术被称为“传入光照的重要性采样”。前一帧的光照被用来指导在这一帧中寻找光照,这带来了与追踪四倍光线相同的质量,但运行速度更快。在下面的截图中,白色光线就是通过重要性采样方式选择的。
最后,Lumen会将附近的光照与远处的光照分开,并通过一种叫做“世界空间辐射率缓存”的技术,追踪更多光线,从而解析远处的光照,以减少噪点。当室内房间完全由射入小窗户的天空光照进行照亮时,这就变得非常重要,同时也是Lumen确保室内质量的关键。
对于粗糙表面的反射,Lumen会复用屏幕空间辐射率缓存,避免产生额外的成本。因此,Lumen能够在汽车清漆这样的材质上提供第二层反射,但不使成本加倍。
UE4Arch的Rafael Reis
光滑表面上的反射会追踪额外的光照,以寻找被反射的光源。被这些光线找到的光照会在相邻的像素之间共享,并暂时在帧之间累积,以消除噪点。
所有这些采样和去噪技术结合在一起,对Lumen的质量和性能起到了至关重要的作用。Lumen并不是为直接光照而设计的,但有时可以通过自发光网格体完全照亮场景,这要归功于最终采集的质量。在《黑客帝国觉醒:虚幻引擎5体验》中,实验性的夜间模式仅使用Lumen全局光照和反射就传播了数百万个自发光窗口网格体的光线,美术师没有放置任何光源。
性能和质量
Lumen非常依赖通过虚幻引擎5的时序超级分辨率算法对4K输出进行
时序上采样
。这样可以获得最佳质量的最终图像,而不是以明显较低的质量设置在4K下原生运行Lumen。
当引擎使用可延展性级别较高的全局光照和反射时,Lumen在次世代主机上可以达到60 FPS的帧率,但是确保这些设置质量的工作仍在进行中。
在其他方面,Lumen可以通过以下方式提高质量:
在后处理体积设置中提高
最终采集质量
使用硬件光线追踪
当光线击中表面时,使用
击中照射
,而不是表面缓存,以获得更高的质量。
随着设置等级的提高,Lumen可为建筑可视化提供高质量的实时全局光照和反射。
UE4Arch的Rafael Reis
结束语
希望大家喜欢这篇介绍Lumen功能和内部原理的总结文章。Lumen仍在开发中,我们正在努力改进它。具体而言,我们正在争取,当在次世代主机上以60fps的预算帧率运行时,能够提供更好的性能和质量,并将用例扩展到汽车、虚拟制片和电影渲染。
立即下载虚幻引擎5.0!
如果你已是虚幻引擎用户,可从
Epic Games启动程序
下载虚幻引擎5.0。如果你是首次使用,想要深入了解,请点击下方链接开始。无论新老用户,我们都希望你喜欢所有新功能和升级,和往常一样,我们也欢迎你提供反馈!
立即开始