Skip to main content



MXAO is a high-quality, high-performance implementation of Screen Space Ambient Occlusion (SSAO). It simulates the diffuse shadowing caused by the occlusion of ambient lighting. MXAO creates results on par with current-gen industry standard implementations and can vastly improve the realism and depth perception in games. Even though many older games already contain SSAO variants, swapping them out for MXAO is very simple and beneficial.

Ambient Lighting is all lighting that is not emitted by direct light sources. A building lit by the sun creates a drop shadow, which is the area that the direct light source cannot reach. The reason anything inside the building shadow is visible at all is due to indirect lighting being scattered from other sunlit surfaces, eventually illuminating the shadowed areas. The more exposed the shadowed area is, the more indirect lighting it receives. If a car is parked inside the building shadow, a diffuse shadow below the car forms, as it blocks a lot of the indirect/ambient lighting from reaching the area below. The process of blocking indirect light to create diffuse shadows is called Ambient Occlusion.


Sample Quality

Different quality options. Higher settings produce more accurate shading and lower noise in motion at the cost of performance.

Shading Rate

MXAO can perform checkerboard rendering internally. Full, Half and Quarter Rate correspond to 100%, 50% and 25% of pixels being updated each frame, where the amount of pixels being processed is roughly proportional to the performance cost.

Switching from Full Rate to Half Rate cuts the amount of processed pixels in half, which results in roughly twice the performance, but every second pixel will have a 1 frame delay, resulting in some temporal lag (ghosting). With high enough framerates or slow movement, this is unnoticable but fast paced games might be impacted. For static scenes, Quarter Rate is ideal, for obvious reasons.

Sample Radius

Effect radius in world units. Larger radii produce a wider AO effect, at the cost of small details. The scale might vary depending on the game. Below are some examples with different radius settings.

Increase Radius with Distance

If enabled, MXAO switches from world space radius (radius relative to object size) to screen space radius (radius relative to screen units). As a result, far away objects receive much wider AO shading.

Ambient Occlusion Amount

Adjusts the intensity of the shadowing.

Fade Out Distance

Lowers the intensity of the AO effect in distant areas, as it might conflict with distant fog or other transparent effects. Lower values limit the effect to areas closer to the camera.

Filter Quality

Since MXAO uses stochastic sampling to achieve its results, the raw output is noisy as each pixel uses unique data, so the AO estimate varies. As such, it requires filtering to hide the noise. Filter Quality adjusts the amount of iterations of the filter, higher settings produce a blurrier but smoother result. Set to 0 to see the raw AO output.

(Preprocessor) MXAO_AO_TYPE

Switches between different SSAO formulas.

0 is based on Practical Realtime Strategies for Accurate Indirect Occlusion, GTAO [Jimenez et al., 2016], the currently best HBAO-type formula.

1 is custom-made GTAO with solid angle integration, it produces smoother results and is especially helpful on low-poly games, as it tends to hide the blockyness of the models better.

2 is GTAO with visibility bitmasks, a technique first introduced in late 2022 and considered state of the art. MXAO contains the first public implementation of the technique. It is a bit slower than baseline GTAO and is unsupported on DX9/10 but provides results comparable to screen-space ray tracing, at a fraction of the cost. This version is using the radiometrically correct mathematical term, unlike the original implementation.

3 is GTAO with visibility bitmasks and solid angle integration. Smoother than (2) and equivalent to the version from the linked paper.

Terms and Conditions
Cookie Policy
Privacy Policy