🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

SSAO in DX10

Published February 26, 2008
Advertisement
SSAO Revisited
After spending some time updating my SSAO code to run in DX10, I have actually improved my implementation quite a bit. It's now slightly more efficient, and I think the quality is significantly improved. I wanted to show a simple example of what I have been working on, so here's a sample image of just a cube being rendered into the occlusion buffer:



This buffer is then used to generate the final image. This image is directly using the occlusion buffer with only a single bilinear sample - there is still some small 'graininess' but that could easily be removed (if necesary) with a couple more samples per pixel. This image shows the cube with only a green ambient term modulated by the occlusion values:



Any comments?

I am quite happy with smoothness and adjustability in the algorithm, and am performing testing on more complex geometry as we speak...
Previous Entry D3D10 Fun
Next Entry Back again...
0 likes 3 comments

Comments

LachlanL
Maybe I've just been hiding under a rock, but I still don't know what the point of SSAO is. What effect is it supposed to achieve?
February 27, 2008 06:06 AM
Jason Z
It is supposed to alter the ambient term based on the object immediately surrounding an object. This has been implemented in many different ways, usually a preprocess (i.e. not dynamic) for certain situations. SSAO uses the scene depth information to approximate a true occlusion test. So it's fast, uses existing buffers (i.e. the Z-buffer) and produces pretty good quality images.

The cube is a bit of a special case because of the sharpness of the object. I'll post more screens later on as I get more complex geometry in the system...
February 27, 2008 10:28 AM
jollyjeffers
Implementation looks good to me, but I generally think that SSAO looks much better on a more complex set of geometry. Simple things like the utah teapot or a cube don't really seem to do it justice.

Also, the graininess can work well in 'natural' images where you're almost effectively getting a free dirt/detail map thrown in. Provided you're not rendering smooth glossy surfaces of course [grin]

Keep up the good work,
Jack
February 27, 2008 10:51 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement