环境光遮蔽

三种选项:Vite 优化的 SSAO(默认开启,免费)、HBAO+(更高质量,后期处理体积控制)和 RTAO(光线追踪,最精确,也最昂贵)。它们相互叠加——HBAO+ 会叠加在 SSAO 缓冲区之上。

环境光遮蔽会使褶皱、接触点和环境光无法完全照射到的封闭区域变暗。它是使场景看起来更逼真的最经济的方法之一,也是最容易过度投入的地方之一。

Vite 优化的 SSAO

Vite 重写了 UE4.27 原生屏幕空间 AO 通道的内存访问模式。它以更低的成本产生与原生路径相同的效果,并且默认启用。

控制 默认值 备注
VITE_O_SSAO(编译时) 1 最终发布的版本将锁定为该值
r.Vite.SSAO(运行时) VITE_O_SSAO 仅限开发版本。0 = 原始 UE 路径,1 = 优化路径

运行时 CVar 的存在是为了方便您在开发过程中将优化后的路径与默认路径进行 A/B 对比,这也是优化验证的方式。在最终发布版本中,CVar 完全不存在——路径已编译到程序中。请参阅编译时开关。

UE4.27 的标准 SSAO 设置仍然适用,您可以在Rendering Features(渲染特性)> 环境光遮蔽(Ambient Occlusion)的后处理体积中找到它们:强度、半径、质量、功率、偏移、淡出距离等。

HBAO+

基于地平线的环境光遮蔽 (HBAO+) 是 NVIDIA 的高质量 AO 技术,继承自 NvRTX 分支。它沿地平线方向而非屏幕空间球体对深度缓冲区进行采样,从而在褶皱处产生更精确的遮蔽效果,并减少 SSAO 特有的物体轮廓周围的光晕。

HBAO+ 会乘以屏幕空间 AO 缓冲区而不是替换它,因此启用后两者都会运行。

启用

CVar 默认值 效果
r.HBAO.Enable 0 主启用
r.HBAO.HighPrecisionDepth 0 0 = 使用 FP16 内部深度,1 = 使用 FP32。使用 FP32 可避免远处物体出现自遮挡条带。
r.HBAO.GBufferNormals 1 0 = 从深度重建法线,1 = 获取 GBuffer 法线

注意: CVar 帮助文本将 HBAO+ 描述为仅适用于 DX11。Vite 同时在 D3D11 和 D3D12 上实现了它;帮助字符串继承自最初的 NVIDIA 集成,尚未更新。

后处理体积设置

启用后,HBAO+ 将在 HBAO+ 类别下针对每个后处理体积进行调整。这些设置支持蓝图读/写,因此可以在运行时进行控制。

设置 默认值 范围 用途
幂指数 2.0 0–4 应用于 AO 结果的暗化曲线。数值越高,对比度越强。
半径 2.0 0.1–2 世界空间采样半径(米)
偏差 0.1 0–0.2 拒绝低于此角度的采样。提高此值可消除平面上的自遮挡。
SmallScale AO 1.0 0–1 精细细节遮挡的权重
模糊半径 2 像素 禁用 / 2px / 4px 降噪模糊
模糊锐度 16.0 0–32 模糊过程中边缘保留程度。数值越高,保留的边缘越多。
最大深度(Max Depth) 9500.0 0–400+ 超过此深度后,HBAO+ 将停止计算
深度锐度(Depth Sharpness) 50.0 0–100 深度不连续性敏感度
前景 AO 钳制(Clamp Foreground AO) 关闭 — 限制近处几何体的 AO 效果
前景 AO 距离 100.0 0–1000 前景钳制使用的距离
背景 AO 钳制(Clamp Background AO) 关闭 — 限制远处几何体的 AO 效果
背景 AO 距离(Background AO Distance) 1000.0 0–10000 背景钳制使用的距离

半径(Radius) 是最重要也是最容易出错的设置。它的单位是米,正确的数值完全取决于场景比例。室内场景(包含真人大小的道具)需要较小的半径;大型室外场景则需要较大的半径。半径过大会导致所有物体都笼罩在一层柔和的灰色光晕中;半径过小则只会在最细微的缝隙处产生遮挡效果。

最大深度(Max Depth) 是一个简单的性能控制选项。远处的几何体对可见的环境光遮蔽贡献很小,因此降低此值可以在视觉效果变化最小的情况下降低性能消耗。在确定一个较大的值之前,请先通过飞行模拟来检查结果。

光线追踪环境光遮蔽

光线追踪环境光遮蔽(Ray-traced ambient occlusion, RTAO)在光线追踪阴影和环境光遮蔽一文中有详细介绍。简而言之:它追踪实际的遮蔽光线,因此可以正确处理屏幕外的遮挡物,并且不会像屏幕空间 AO 那样受限于只能识别可见物体的根本局限性。

它也是三种方法中最昂贵的,并且需要 DXR。

选择

目标 推荐配置
风格化 4K120 仅启用 Vite SSAO
性能卓越 4K60 启用 Vite SSAO,如有余量,启用 HBAO+
保真卓越 4K30 启用 Vite SSAO + HBAO+
保真全光线追踪 1440p30 RTAO

一般而言,AO(环境光遮蔽)应该是帧中产生效果的最省资源的组件。如果 DDGI(动态全局光照)已经正确解析了空间中的间接光照,那么在其基础上叠加高强度的 AO 就会导致双重变暗——你实际上是在减去 GI 解决方案从未添加的光照。

注意 AO 叠加的问题。同时启用材质 AO、SSAO(屏幕阴影环境光遮蔽)、HBAO+(高亮度环境光遮蔽增强)和 RTAO(实时环境光遮蔽)会导致场景中接触区域的亮度远低于预期。每一层都会叠加。如果你不确定接触阴影是否符合物理规律,或者只是单纯的暗,可以将其与路径追踪的参考图像进行比较。

另请参阅