光线追踪阴影和环境光遮蔽
r.RayTracing.Shadows 1 和 r.RayTracing.AmbientOcclusion 1 在新建的 Vite 项目中默认启用。当项目需要占用大量帧时间时,通常首先应该关闭这两个选项,因为更经济的替代方案可以达到类似的效果。
这两个特效被归为一类,是因为它们共享相同的开销、一组调整控件以及一个建议:在目标帧时间允许的情况下启用它们,在帧时间不足时首先禁用它们。
光线追踪阴影
光线追踪阴影使用从阴影点向每个光源追踪的光线来代替阴影贴图采样。其优点是:正确的接触硬化、来自区域光的精确柔和阴影,以及避免阴影贴图分辨率伪影、彼得潘效应或级联过渡。
开销是实实在在的。每个投射光线追踪阴影的光源都会增加每个像素的光线数量,因此开销会随着光源数量的增加而增加,而阴影贴图则不会。阴影贴图的开销会在整帧内摊销;光线追踪阴影则不会。
调整
每个光源的采样数。 这是控制质量和成本的主要因素。采样数过低会导致噪点过多,需要依赖降噪器;采样数过高则会增加成本。
光源半径。 较大的半径会产生更柔和的阴影,需要更多采样才能清晰地解析。针对锐利阴影进行优化的场景可以使用更少的采样。
单光源选择性启用。 与其全局启用光线追踪阴影,不如在效果明显可见的光源上启用(通常是主光源和任何大面积光源),并将辅助光源的阴影贴图保留。这是目前最有效的优化方法,但经常被忽略。
最大距离。 限制阴影光线距离可以降低大型场景的渲染成本。
Vite 包含专门针对光线追踪阴影和光线追踪直接光照的渲染优化,并且正在对实时环境光遮蔽 (RTAO) 和光线追踪阴影进行进一步的性能优化。请参阅发行说明。
光线追踪环境光遮蔽
光线追踪环境光遮蔽(Ray-traced ambient occlusion, RTAO)会在每个阴影点周围的半球内追踪短光线,以确定其遮蔽程度。与屏幕空间环境光遮蔽 (SSAO) 不同,RTAO 会考虑屏幕外或被遮挡的几何体,因此不会像 SSAO 那样在摄像机运动时产生光晕和遮挡伪影。
调整
半径。 遮挡光线的传播距离。这既是美术指导的控制项,也是性能控制项——较小的半径会产生紧密的局部暗化效果,较大的半径会产生宽广的环境光塑形效果,但成本更高。
每像素采样数。 质量与成本之间的平衡,由降噪器调节。
强度。 后期处理的强度。调整起来成本低,值得在增加采样数之前先尝试调整强度。
分辨率。 半分辨率 RTAO 在视觉上通常难以区分,而且成本要低得多。
成本更低的替代方案
在投入时间使用任何一种效果器之前,请先了解你所购买的产品相对于其他替代方案的优势。
| 效果 | 替代方案 | 权衡 |
|---|---|---|
| RT 阴影 | 级联阴影贴图 | 成本更低。分辨率伪影,接触硬化不正确,级联过渡不平滑。 |
| RT 阴影 | 距离场阴影 | 低成本的软阴影。效果近似,需要网格距离场。 |
| RTAO | SSAO 快速路径 | 成本大幅降低。屏幕空间伪影。Vite 的实现经过显著优化。 |
| RTAO | HBAO+ | 比 SSAO 质量更高,成本适中。仅支持 DirectX 11。 |
实际上,大多数以 60 FPS 或更高帧率为目标的 Vite 项目都会运行级联阴影贴图,并选择 SSAO 快速路径或 HBAO+,而将光线追踪预算用于 DDGI 和反射。只有性能目标中的 1440p30“高保真,全 RT”目标才会同时启用 RT 阴影和 RTAO。
请注意,Vite 的 SSAO 同时具有快速路径和内存访问优化。它比 4.27 版本的默认实现成本低得多,这使得它与 RTAO 的计算方式之间的差异比您根据其他引擎的经验所预期的要大。
禁用
; Config/DefaultEngine.ini
[/Script/Engine.RendererSettings]
r.RayTracing.Shadows=0
r.RayTracing.AmbientOcclusion=0
使用 stat gpu 命令测量前后的性能。在包含大量投射阴影的光源的场景中,RT 阴影通常是帧中光线追踪性能消耗最大的部分,甚至超过反射。