光线追踪性能指南(一)

对于需要维持实时性能预算的项目,必须设置框架预算来实现这种目标框架比例。通常情况下,应该是每秒30或60帧(FPS)。通过调整内容或工作流,可以在很多地方优化项目的性能。

本指南介绍了一些可以开始优化虚幻引擎光线追踪功能的地方,以及多种通过调试场景和调查问题来解决困难领域的方法。


光线追踪成本概览

硬件光线追踪使用分成两层的包围体层级(Bounding Volume Hierarchy)(BVH)来加速光线遍历。顶层加速结构(Top Level Acceleration Structure) (TLAS)包含整个场景的所有网格体实例。这些实例引用的网格体是 底层加速结构(Bottom Level Acceleration Structure) (BLAS)。

下面的图表以可视化方式呈现了BVH实现光线遍历的方式。

光线追踪性能指南

光线追踪产生的成本主要有三个类别。

1、构建底层加速结构以便于动态地解构网格体,例如蒙皮网格体和毛发。

2、为场景和着色器绑定表(SBT)构建顶层加速结构。

3、每个使用光线追踪功能的光线遍历。

对于项目开发,可以使用控制台变量来测试特定几何体类型的光线追踪。这对于衡量光线追踪功能的成本或将其完全禁用非常有用。这些功能在 r.RayTracing.Geometry.* 下列出。

几何体类型 控制台变量 默认状态
静态网格体 r.RayTracing.Geometry.StaticMeshes 启用
骨骼网格体 r.RayTracing.Geometry.SkeletalMeshes 启用
实例化静态网格体 r.RayTracing.Geometry.InstancedStaticMeshes 启用
地形地貌 r.RayTracing.Geometry.Landscape 启用
几何体缓存 r.RayTracing.Geometry.GeometryCache 启用
几何体集合 r.RayTracing.Geometry.GeometryCollection 禁用
Niagara网格体 r.RayTracing.Geometry.NiagaraMeshes 启用
Niagara条带 r.RayTracing.Geometry.NiagaraRibbons 启用
Niagara Sprite r.RayTracing.Geometry.NiagaraSprites 启用
流程性网格体 r.RayTracing.Geometry.ProceduralMeshes 启用

底层加速结构更新

虽然静态网格体的BLAS仅在加载时(或在控制台上烘焙时)构建一次,但动态地解构网格体时还必须重新构建每个帧,而这则可能产生极大的成本。BLAS重新构建是一种GPU操作,通常与要解构的三角形数量成正比。使用大量的骨骼网格体和大量的三角形可能很快就造成沉重的GPU成本。(Using a large number of Skeletal Meshes with a large number of triangles can quickly become a major GPU cost.)

BLAS重新构建成本可以在GPU分析器的以下区域中看到:

  • Scene > CommitRayTracingGeometryUpdates
  • Scene > CommitHairRayTracingGeometryUpdates
  • Scene > RayTracingGeometry

重新构建每个帧的三角形类型包括:

  • GPUSkinCache中的蒙皮网格体
  • 重新构建地形以支持其持续变形的细节级别(LOD)。
  • Chaos破坏系统的几何体集合
  • 毛发
  • 流程性网格体
  • Niagara粒子系统

大量的多边形骨骼网格体通常都会导致较高的BLAS构建成本。骨骼网格体可以使用骨骼网格体编辑器中的 光线追踪最低LOD(Ray Tracing Min LOD) 属性,从而阻止为光线追踪功能使用最高的LOD。

在通过D3D12运行项目时,使用控制台命令D3D12.DumpRayTracingGeometries来获取转储到日志的动态BLAS重新构建的所有内存分类列表。此列表可以用于优化项目。

下一篇:光线追踪性能指南(二)


本文转自:UE4学习 UE5学习,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章