环境光遮蔽

三种选项: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(实时环境光遮蔽)会导致场景中接触区域的亮度远低于预期。每一层都会叠加。如果你不确定接触阴影是否符合物理规律,或者只是单纯的暗,可以将其与路径追踪的参考图像进行比较。

另请参阅