Off:

On:

Off:

On:

And less emphasis on the SSAO:
Off:

On:

====================================================
Download:
- http://cheapfilehost.com/file.php?file= ... 98b2013f4b
- http://www.MegaShare.com/434579
- courtesy of tuan kuranes : http://tuan.kuranes.free.fr/OgreDemo_SSAO.zip
(if anyone would like to mirror it, please do so, and I'll post the link here)
Make sure you read the readme. All source is included, along with binaries. No blur is done on the SSAO.



// just same playing around at 1024x768

(yes, the same scene from the shadows demo, with improved lighting!

I've yet to make it work completely under OpenGL. BTW, you can use this as a demo to reconstruct a 3D view-space position from linear view-space depth.
Issues: It won't work on non-SM 3.0 cards as it is right now, since I'm using a 128-bit G-buffer; no multi render targets, but there's a an R32G32B32A32 floating point render target being used. First thing you can do is compile with R16G16B16A16 instead, which halves the amount of bits for each pixel from 128 to 64. You can also just use a single channel texture just for the depth (R16 or R32), and use the provided computeViewNorm() shader function to calculate the normals from the position. Note that this is a lot less accurate than storing the actual interpolated normals, but it tends to work fine enough in most cases.
I'd love to see if anyone integrates this into their own stuff. The only problem is that there is a lot of manual code:
- manually generating the information for the SSAO
- manually generating the SSAO into an off-screen texture
- manually projecting the SSAO in the ambient shader
But I found Ogre's compositors just not powerful enough to do this in such a simple manner such as effect->update(). Or maybe I just don't understand how to use them
