GPU Lightmass (GPULM) 是一种光烘焙方法,它预先计算来自具有 Stationary 或 Static 移动性的灯光的复杂光交互,并将该数据存储在创建的应用于场景几何体的光照贴图纹理中。GPU Lightmass 显着减少了为复杂场景计算、构建和生成光照数据所需的时间,其速度相当于使用 Swarm 和基于 CPU 的 Lightmass 的分布式构建。此外,GPULM 提供了新的交互式工作流程,允许您更改场景,然后重新计算并即时重建光照。使用基于 Lightmass CPU 的系统无法实现此工作流程。让我们在今天的文章中了解虚幻引擎的GPU Lightmass 全局光照。
1.虚幻引擎中的GPU Lightmass全局光照
1.1 启用 GPU Lightmass
按照以下步骤在您的虚幻引擎项目中启用 GPU Lightmass:
第 1 步:从“编辑”>“插件”菜单中,打开“插件”选项卡>在“内置”>“编辑器”类别下,找到并启用GPU Lightmass 。
提示:启用 GPU Lightmass 后,会出现重启虚幻编辑器的提示窗口。为了节省时间,您应该在重新启动编辑器之前修改以下项目设置。
第 2 步:从“编辑”>“项目设置”菜单中,打开“项目设置”窗口。
在引擎 > 渲染类别下,启用以下设置:硬件光线追踪 > 支持硬件光线追踪(注意: GPU Lightmass 不需要光线追踪阴影和光线追踪天光。如果您的项目不需要它们,请禁用这些功能。)
虚拟纹理 >启用虚拟纹理支持虚拟纹理 >启用虚拟纹理光照贴图
在Platforms > Windows类别下,设置Targeted RHIs > Default RHI: DirectX 12重新启动虚幻编辑器以使这些更改生效。
1.2 在虚幻引擎中设置 GPU Lightmass 全局光照的附加要求
以下是让 GPU Lightmass 在您的项目中发挥最佳效果的其他建议:
减少 GPU 超时检测和恢复崩溃
当您有一个使 GPU 承受重负载的复杂场景时,可能会发生超时延迟(或 TDR)。因此,Windows 10 会发生崩溃。这种类型的崩溃不仅会影响 Unreal Engine,还会影响您 PC 上使用 GPU 的任何其他设备。通常,您会看到如下所示的消息。
可以通过增加 GPU 超时所需的时间来避免或减少此类崩溃的发生,从而使您的 GPU 有可能在不关闭编辑器的情况下恢复。有关如何更改 Windows 10 中的超时延迟和恢复设置的信息,请参阅此处的电影渲染队列页面。
禁用实时光线追踪功能
GPU Lightmass 利用 Microsoft 的 DXR API 进行光线追踪,这需要 DirectX 12。虽然 GPU Lightmass 需要光线追踪才能运行,但它不需要任何额外的光线追踪功能,例如光线追踪阴影、环境遮挡或反射。
最好禁用所有这些功能,除非您明确希望将这些光线追踪功能与烘焙光照一起使用。如果您需要具有光线追踪功能的烘焙光照,您可以创建一个同时具有静态和动态灯光的场景。要禁用光线追踪效果,请使用下面的控制台命令。
r 。光线追踪。ForceAllRayTracingEffects 0
或者,您可以调整项目配置文件以在项目加载时禁用所有光线追踪功能。在项目的 Config 文件夹中,将以下行添加到项目的DefaultEngine.ini配置文件的[
/Script/Engine.RendererSettings]部分下:
[ /脚本/引擎。渲染器设置]
r 。光线追踪。ForceAllRayTracingEffects = 0
配置 GPU 内存
GPU Lightmass 需要足够的 GPU 内存来解决其开销。请记住,以下因素会影响使用 GPULM 烘焙复杂场景的成功。
必须有足够的 GPU 内存可用,以最低细节级别 (LOD) 网格(即最高质量的 LOD 网格)将整个场景保存在内存中。在轻构建期间,虚拟纹理系统会消耗大量内存。这在很大程度上取决于场景的复杂性和大小。必须有足够的 CPU 内存才能将所有生成的光照贴图存储在 RAM 中。GPU 可以将光照贴图换出到 CPU 的 RAM,但在整个光照烘焙完成之前它们不会保存到磁盘。DX12 比 DX11 消耗更多的 GPU 内存。如果您的 DX11 场景正在推动 GPU 内存的极限,那么由于光线追踪和虚拟纹理要求的额外开销,可能很难在不做出一些牺牲的情况下在 DX12 中使用。对于 Irradiance Cache 等可选设置,GPULM 有其自己的内存使用要求。
对于大型场景,基于 CPU 的 Lightmass 系统需要大量内存,这可能会给光照烘焙带来问题。这些类型的问题经常通过使用 Swarm 的分布式构建来缓解。当 GPULM 内存不足时,唯一的解决方案是通过减少几何或纹理细节来优化场景,或者升级到具有更多内存的 GPU。
配置 GPU 内存
使用虚拟纹理光照贴图启用虚拟纹理系统可以创建光照贴图并将其保存为虚拟纹理。这还有一个额外的好处,即允许光照构建在关卡视口中实时更新。它还允许在构建场景时进行编辑,而不必取消或等待构建完成。
GPULM 完全不需要启用虚拟纹理系统来构建光照,但需要它来实现交互式和实时编辑功能。如果您不打算在项目中使用虚拟纹理或不需要交互式预览,则可以禁用这些功能以节省编辑器中的时间。
为建筑照明启用多个 GPU
当您使用也支持光线追踪的基于 NVIDIA SLI 的 GPU 时,您可以使用多个 GPU 为您的项目计算光照。以下步骤启用多 GPU 支持。
您的 GPU 必须使用 NVLink 桥接器链接,并且必须在 NVIDIA 控制面板中启用 SLI。在[Engine Install Path]/Engine/Config文件夹中,在 Unreal Engine DefaultEngine.ini文件的[/Script/Engine.RendererSettings]部分下,通过添加r.AllowMultiGPUInEditor=1启用多个 GPU 。使用命令行-MaxGPUCount=[n] (其中n定义启动编辑器时通过 SLI 可用的 GPU 数量)。例如,-MaxGPUCount=2将在多 GPU 模式下使用两个 GPU 来计算光照。或者,您可以为 UnrealEditor.exe 创建快捷方式,并在属性设置中,将添加-MaxGPUCount=[n]设置到目标行。
编辑器启动后,您可以通过打开输出日志并搜索消息来确认您处于多 GPU 模式:LogD3D12RHI:启用具有 2 个节点的多 GPU
使用多个 GPU 时,性能可以平均减少构建完成时间。当不大量使用体积光照贴图时,发现使用两个 RTX-2080TI 的中型测试场景的构建时间平均要快 1.7 倍左右。改进的构建完成时间取决于多种因素,包括场景大小和复杂性、引擎多 GPU 支持以及使用的 GPU 数量。
多 GPU 支持的限制
GPU Lightmass 多 GPU 支持非常适合单区域建筑和虚拟生产环境。根据级别的复杂性和 GPU 上可用的 VRAM 数量,大型游戏级别可能会遇到内存和虚拟纹理限制。如果建筑和虚拟生产环境的设计和设置很复杂,它们可能会达到与游戏大小级别相同的限制。多GPU的限制如下:
尚不支持体积光照贴图的计算。具有高体积光照贴图计算的场景将看到较少的整体性能改进。每个 GPU 都会生成自己的辐照度缓存。根据内容,烘焙的图块之间可能存在细微的阴影差异。这可以通过提高辐照度缓存质量或完全禁用使用辐照度缓存来解决。纹理编码和去噪是基于 CPU 的操作,不受多 GPU 的影响。
总结
UE5和UE4趋近于影视级画面的新技术,正以肉眼可见的速度渗透到影视动画CG行业,在这样的趋势下,UE无疑会对这个行业的未来带来新的变化和要求。不过如此强悍的功能对硬件配置的要求也很高,专业级显卡的高性能PC始终是迈不开的使用门槛。
当然这也并不是无解的,现在上赞奇云工作站通过云上制作+数据资产快速同步+云上渲染三步独一无二解决方案,即可轻松解锁超高清流畅体验,减少成本投入,释放生产力,专注内容创作。