This is the project I did for my bachelor’s degree. It is an implementation of current (as of 2010) state of the art Screen Space Ambient Occlusion (SSAO) techniques. It is implemented as a fork of the Ogre3D rendering engine and is hosted on bitbucket (bitbucket.org/simonwallner/ogre-ssao-sample/overview).

The goal of this project was to implement the techniques as they are given in the papers, not to have an optimized and production ready solution. It was also my first endeavour with Ogre3D in particular and slightly more advanced cg stuff in general. In short, I learned a lot and would do many things differently now.

The SSAO algorithms are implemented as a plugin for the (new, at that time) sample browser. You can find a compiled windows binary distribution in the downloads section on github (bitbucket.org/simonwallner/ogre-ssao-sample/downloads). It should run fine with both NVidia and ATI cards.

Implemented techniques: Unsharp masking the depth buffer [Luft et al., 2006] Crease shading [Fox and Compton, 2007] Crytek (depth buffer only) [Kajalin, 2009] normal alligned hemispherical MC sampling Horizon based AO [Bavoil and Sainz, 2009] Volumetric AO [Szirmay-Kalos et al., 2010]

The complete documentation with all the details can be found here. As usual all my source code is licensed under the MIT license, see the licensing information in the repo for more details.

An accompanying extras repository with a few Matlab files to generate random textures and result images is also available.

UPDATE: My sample has been merged into the official Ogre3D 1.8 distribution. Download the SDK and run the sample browser to check it out! I have been told that some changes have been made to the source and that it has been ported to DirectX by Murat Sari, one one of the ogre maintainers. Thanks for That!