对于需要维持实时性能预算的项目,必须设置框架预算来实现这种目标框架比例。通常情况下,应该是每秒30或60帧(FPS)。通过调整内容或工作流,可以在很多地方优化项目的性能。
本指南介绍了一些可以开始优化虚幻引擎光线追踪功能的地方,以及多种通过调试场景和调查问题来解决困难领域的方法。
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>光线追踪成本概览</strong></font>
硬件光线追踪使用分成两层的包围体层级(Bounding Volume Hierarchy)(BVH)来加速光线遍历。顶层加速结构(Top Level Acceleration Structure) (TLAS)包含整个场景的所有网格体实例。这些实例引用的网格体是 底层加速结构(Bottom Level Acceleration Structure) (BLAS)。
下面的图表以可视化方式呈现了BVH实现光线遍历的方式。
<center><img width="600" src="https://cdn.eetrend.com/files/2024-03/%E5%8D%9A%E5%AE%A2/100579001-3373…; alt="光线追踪性能指南"></center><br>
光线追踪产生的成本主要有三个类别。
1、构建底层加速结构以便于动态地解构网格体,例如蒙皮网格体和毛发。
2、为场景和着色器绑定表(SBT)构建顶层加速结构。
3、每个使用光线追踪功能的光线遍历。
对于项目开发,可以使用控制台变量来测试特定几何体类型的光线追踪。这对于衡量光线追踪功能的成本或将其完全禁用非常有用。这些功能在 r.RayTracing.Geometry.* 下列出。
<style type="text/css">
th{padding:5px;}
.tb311 td{padding:5px;}
</style>
<table align="center" border="1" class="tb311">
<tr>
<th>几何体类型</th>
<th>控制台变量</th>
<th>默认状态</th>
</tr>
<tr>
<td>静态网格体</td><td>r.RayTracing.Geometry.StaticMeshes</td><td>启用</td>
</tr>
<tr>
<td>骨骼网格体</td><td>r.RayTracing.Geometry.SkeletalMeshes</td><td>启用</td>
</tr>
<tr>
<td>实例化静态网格体</td><td>r.RayTracing.Geometry.InstancedStaticMeshes</td><td>启用</td>
</tr>
<tr>
<td>地形地貌</td><td>r.RayTracing.Geometry.Landscape</td><td>启用</td>
</tr>
<tr>
<td>几何体缓存</td><td>r.RayTracing.Geometry.GeometryCache</td><td>启用</td>
</tr>
<tr>
<td>几何体集合</td><td>r.RayTracing.Geometry.GeometryCollection</td><td>禁用</td>
</tr>
<tr>
<td>Niagara网格体</td><td>r.RayTracing.Geometry.NiagaraMeshes</td><td>启用</td>
</tr>
<tr>
<td>Niagara条带</td><td>r.RayTracing.Geometry.NiagaraRibbons</td><td>启用</td>
</tr>
<tr>
<td>Niagara Sprite</td><td>r.RayTracing.Geometry.NiagaraSprites</td><td>启用</td>
</tr>
<tr>
<td>流程性网格体</td><td>r.RayTracing.Geometry.ProceduralMeshes</td><td>启用</td>
</tr>
</table>
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>底层加速结构更新</strong></font>
虽然静态网格体的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分析器的以下区域中看到:
<ul><li>Scene > CommitRayTracingGeometryUpdates</li></ul>
<ul><li>Scene > CommitHairRayTracingGeometryUpdates</li></ul>
<ul><li>Scene > RayTracingGeometry</li></ul>
重新构建每个帧的三角形类型包括:
<ul><li>GPUSkinCache中的蒙皮网格体</li></ul>
<ul><li>重新构建地形以支持其持续变形的细节级别(LOD)。</li></ul>
<ul><li>Chaos破坏系统的几何体集合</li></ul>
<ul><li>毛发</li></ul>
<ul><li>流程性网格体</li></ul>
<ul><li>Niagara粒子系统</li></ul>
大量的多边形骨骼网格体通常都会导致较高的BLAS构建成本。骨骼网格体可以使用骨骼网格体编辑器中的 光线追踪最低LOD(Ray Tracing Min LOD) 属性,从而阻止为光线追踪功能使用最高的LOD。
在通过D3D12运行项目时,使用控制台命令D3D12.DumpRayTracingGeometries来获取转储到日志的动态BLAS重新构建的所有内存分类列表。此列表可以用于优化项目。
下一篇:<a href="https://imgtec.eetrend.com/blog/2024/100579049.html"><font color="#3a6694">光线追踪性能指南(二)</font></a>
<hr>
<font color="#9a9a9a">本文转自:<a href="https://mp.weixin.qq.com/s/9nMtaNd9SQfkF6j3-41zRQ"><font color="#9a9a9a">UE4学习 UE5学习</font></a>,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。</font>
<br>