A Better SSAO

The high quality SSAO has been in the engine for a long time but was broken on the Radeon cards, I finally took a few minutes yesterday to fix it. I wish I had done that earlier :).

Many thanks to Steffen 'Neox' Unger from the Polycount forum for sharing such an awesome model.

Filter Description




No SSAO | realtime HQ SSAO only
(Note: This model comes with a baked AO map which is not used here.)

While this filter is significantly more expensive its results are much more convincing than the standard implementation. The base pass of the filter is the same in both versions, the only difference lies in the blur pass. By using an heuristic to apply the blur filter sharp contrast areas are preserved. Another benefit of this heuristic is the ability to largely increase the blur radius to help reduce the 2d filter aspect that plagues most realtime SSAO implementations and still preserve some sense of depth.

On the performance side the Radeon 5700 I used to fix the filter does not show a significant hit compared to the classic SSAO and runs this simple scene at full framerate in Full HD. So these are pretty nice results for a realtime filter.

Comparison and Results




Fast SSAO

HQ SSAO

These two animated GIFs clearly show the difference. With standard SSAO, the SS (Screen Space) part of the filter can be seen as much as the AO (Ambient Occlusion) part. With the smart blur however, the occlusion hints are still very present but hardly show that they are being computed in screen space. The larger blur kernel also helps widening the occluded areas and introduce more subtlety where the standard SSAO looks like post-processed brush strokes at best.

Beauty Shot




A beauty shot to close this article.
HQ SSAO & Depth of Field in realtime.