Ambient Occlusion
Three options: Vite's optimised SSAO (on by default, free), HBAO+ (higher quality, post-process volume controlled) and RTAO (ray traced, most accurate, most expensive). They compose — HBAO+ multiplies over the SSAO buffer.
Ambient occlusion darkens creases, contact points and enclosed areas that ambient light should not fully reach. It is one of the cheapest ways to make a scene read as grounded, and one of the most common places to overspend.
Vite optimised SSAO
Vite rewrites the memory access pattern of the stock UE4.27 screen-space AO pass. It produces the same result as the stock path at lower cost, and is enabled by default.
| Control | Default | Notes |
|---|---|---|
VITE_O_SSAO (compile-time) |
1 |
Shipping builds are locked to this value |
r.Vite.SSAO (runtime) |
VITE_O_SSAO |
Development builds only. 0 = stock UE path, 1 = optimised path |
The runtime CVar exists so you can A/B the optimised path against stock during development, which is how the optimisation was validated. In Shipping the CVar does not exist at all — the path is compiled in. See Compile-Time Switches.
Standard UE4.27 SSAO settings all still apply and are found under Rendering Features > Ambient Occlusion in a post process volume: Intensity, Radius, Quality, Power, Bias, Fade Out Distance and the rest.
HBAO+
Horizon-Based Ambient Occlusion is NVIDIA's higher-quality AO technique, inherited through the NvRTX branch. It samples the depth buffer along horizon directions rather than in a screen-space sphere, which produces more accurate occlusion in creases and less of SSAO's characteristic haloing around object silhouettes.
HBAO+ multiplies over the screen-space AO buffer rather than replacing it, so both run when it is enabled.
Enabling
| CVar | Default | Effect |
|---|---|---|
r.HBAO.Enable |
0 |
Master enable |
r.HBAO.HighPrecisionDepth |
0 |
0 = FP16 internal depth, 1 = FP32. Use FP32 to avoid self-occlusion banding on distant objects. |
r.HBAO.GBufferNormals |
1 |
0 = reconstruct normals from depth, 1 = fetch GBuffer normals |
Post process volume settings
Once enabled, HBAO+ is tuned per post process volume under the HBAO+ category. These are Blueprint read/write, so they can be driven at runtime.
| Setting | Default | Range | Purpose |
|---|---|---|---|
| Power Exponent | 2.0 |
0–4 | Darkening curve applied to the AO result. Higher is more contrasty. |
| Radius | 2.0 |
0.1–2 | World-space sampling radius in metres |
| Bias | 0.1 |
0–0.2 | Rejects samples below this angle. Raise to remove self-occlusion on flat surfaces. |
| SmallScale AO | 1.0 |
0–1 | Weight of fine-detail occlusion |
| Blur Radius | 2 pixels | Disabled / 2px / 4px | Noise reduction blur |
| Blur Sharpness | 16.0 |
0–32 | Edge preservation during blur. Higher preserves more edges. |
| Max Depth | 9500.0 |
0–400+ | View depth beyond which HBAO+ stops being computed |
| Depth Sharpness | 50.0 |
0–100 | Depth discontinuity sensitivity |
| Clamp Foreground AO | off | — | Limits AO on near geometry |
| Foreground AO Distance | 100.0 |
0–1000 | Distance used by the foreground clamp |
| Clamp Background AO | off | — | Limits AO on distant geometry |
| Background AO Distance | 1000.0 |
0–10000 | Distance used by the background clamp |
Radius is the setting that matters most and is most often wrong. It is in metres, and the correct value depends entirely on scene scale. An interior with human-scale props wants a small radius; a large exterior wants a larger one. Too large produces soft grey wash across everything; too small produces occlusion only in the tightest creases.
Max Depth is a straightforward performance lever. Distant geometry contributes very little visible AO, so lowering this value reduces cost with minimal visual change. Check the result against a fly-through before committing to an aggressive value.
Ray-traced ambient occlusion
RTAO is covered in detail in RT Shadows and Ambient Occlusion. In brief: it traces actual occlusion rays, so it handles off-screen occluders correctly and does not suffer from screen-space AO's fundamental limitation of only knowing about what is visible.
It is also the most expensive of the three, and requires DXR.
Choosing
| Target | Recommended configuration |
|---|---|
| Stylised 4K120 | Vite SSAO only |
| Performance High End 4K60 | Vite SSAO, HBAO+ if there is headroom |
| Fidelity High End 4K30 | Vite SSAO + HBAO+ |
| Fidelity Full RT 1440p30 | RTAO |
The general rule is that AO should be the cheapest thing in your frame that produces its result. If DDGI is already resolving the indirect lighting in a space correctly, heavy AO on top of it is double-darkening — you are subtracting light that the GI solution never added.