Screen-space Ambient Occlusion
Screen-space ambient occlusion is all the rage today, and for a reason: it’s hard to find an approximation of accessibility shading with similar run-time characteristics (most importantly, being independent of scene complexity). Results are fast and consistent, and it looks a lot like global illumination (which, of course, it is not).
So, when tasked to make our techdemos prettier, this was a pretty obvious venue to explore. Since we already use Horde 3D, a shader-driven game engine framework, it was mostly a matter of finding sample algorithms and adapting them to our engine. In the picture above you can see the shader in action.
In the demo, you can control the character and walk/run around the famous Sponza atrium (which for some inexplicable reason has filled up with giant blue cubes). Smooth animation blending thanks to the sweet Horde3D framework. Developing the shader took about a week, the demo application ca. 1 day.
The cubes appear a bit out-of-focus because the ambient occlusion map is being rendered at small resolutions, then filtered with a Gaussian blur kernel and up-scaled to reduce the noise that is inherent to the method. Combining the SSAO shader with some actual lighting (that would accentuate the edges) would fix that, but wasn’t in the scope of the demo.
Code and binary downloads will follow in a few days!