全局光照(也称间接照明和间接光照)模拟与几何体和材质表面的照明交互,为场景和项目添加真实的照明效果。此模拟还考虑到与之相互作用的材质的光线吸收性和反射性。
有两种方法可以在3D世界中模拟光的活动:一是使用实时光照法,这种方法支持动态光源的光源移动和交互;二是使用预计算(或已烘焙)的光照信息,这类信息存储在几何体表面应用的纹理中。虚幻引擎提供这两种场景照明方法,它们彼此互不排斥,可以无缝地混合使用。
以下是每个系统的一些亮点,可帮助你了解各自的用途和功能:
|
|
预计算的全局光照
虚幻引擎中的光照烘焙系统提供了两种方式使用Lightmass计算光照数据:在CPU上,或在GPU上。预计算的光照用于获得高质量结果,不受实时限制因素的影响。然而,由于光照是在几何体应用的纹理中生成和存储的,无法动态地改变。
了解下方可用的预计算光照工作流程。
基于CPU的Lightmass系统
基于CPU的Lightmass 系统使用名为Unreal Swarm的独立进程来计算和生成光照数据。Unreal Swarm也用于将光照分配到构建场,在构建场中可以将复杂的关卡分解以完成构建流程。由于这是在CPU上处理的,所以在生成最终的光照贴图结果时,构建可以分配到的可用线程或机器的数量变得极为重要。对于一台机器来说,复杂的场景可能需要大量的处理时间、功率和RAM来完成。
要详细了解此选项,请参阅Lightmass全局光照。
基于GPU的Lightmass系统
学习使用此 测试版 功能,但请谨慎用它发行。
测试版状态下可用的功能让你有机会了解这些功能的运作方式,规划你的管线,创建测试内容。在生产中应谨慎使用这些功能,因为目前这些功能的性能、稳定性、平台支持还达不到能发行的质量。我们支持资产的向后兼容性,这些功能的API很稳定。
基于GPU的Lightmass (GPULM)系统使用计算机的GPU与最新的DirectX 12 (DX12)和光线追踪能力计算和生成光照数据。它使用单个编辑器内进程来完成光照构建,不支持使用Unreal Swarm的分布式构建。但它通过SLI支持多个GPU。
要进一步了解此系统,请参阅GPULightmass全局光照。
动态全局光照
虚幻引擎中的动态光照方法提供了实时全局光照解决方案,可以用动态光源的反射光照为场景提供照明。你可以使用这些解决方案更改光照并自动更新到场景中的对象,使它能够模拟昼夜变换过渡或一些简单的事情,如在在室内开关灯。这些光照系统是实时计算的,因此几乎不需要设置便可工作。
屏幕空间全局光照
屏幕空间全局光照 (SSGI)使用后期处理屏幕空间效果生成动态间接照明。该方法仅限于摄像机视图中的对象和光照,用于生成光照数据。如果明亮的光源在视野之外或被场景内的物体阻挡,可能会导致不和谐的结果。
此动态GI方法非常适合与现有的动态或预计算GI方法结合使用,可以作为附加效果来获取美观的结果。


光线追踪全局光照
虚幻引擎的光线追踪功能包括动态全局光照方法,利用微软的DXR框架和NVIDIA的光线追踪GPU来渲染非常准确的光照结果。
支持两种光线追踪全局光照(RTGI)方法:
- Brute Force 方法模拟路径追踪器的地面真实参考状况,并且在实时渲染时的执行过程中最相似。此方法最消耗帧性能,同时也提供最精确的动态全局光照方法。
- Final Gather 方法使用两次扫描算法,采用分布式着色点和每像素固定数量样本,用精确度换取性能。对于需要实时性能的项目,Brute Force方法在精确度上的权衡意味着你的帧预算可以支持动态全局光照。


要进一步了解这些功能,请参阅实时光线追踪。
光传播体积
自虚幻引擎4.26起,此功能已废弃,不再使用。未来的引擎版本中会删除此功能。
光传播体积 (LPV)使用放置的体积来采样和存储光照数据,这些数据可以被引用和用于动态全局光照。基于体素的方法使用体积内的网格来控制间接光照的细节和精确度,这有助于减少漏光现象和其他瑕疵。它非常适用于中小型区域。

要进一步了解此系统,请参阅光传播体积。