My First SSAO and the BrushUp GUI

Published May 25, 2011
Advertisement
e_21a.jpg

[size="3"]I've spent two days building SSAO with Direct3D. I used the method described in the GameDev.net article A Simple and Practical Approach to SSAO. After some tweeking I've got some decent results and speeds. It uses two buffers for normals and positions vs extracting position from depth and perspective. The result is blurred using a two-pass box blur.

Later today I'll start adding this AO implementation to the Leaf Painter. It should greatly improve the leaf textures.

In other news - the BrushUp Utlity GUI is finished. See below:

e_21b.jpg

[size="3"]It has a re-sizable and intuitive interface with drag-and-drop list box and image preview. It uses an iterative thread scheduler to process cropped images based on CPU count. I'll release the scheduler source on my website when I get around to it.
0 likes 4 comments

Comments

RSI
Currently working to use a single buffer for SSAO. Using this method: http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/ to reconstruct position.

... Having fun.
May 25, 2011 10:28 PM
RSI
Uhhhgg. Implemented the first example using the inverse projection - but it was very slow.

Had a crack a the second method using interpolated far frustum rays but the ray would only be good for the center pixel. Would need to create a ray buffer and can't be bothered at the moment.

This AO stuff is addicting. Would be nice to create the positions and normals buffers in a single pass...
May 26, 2011 02:30 AM
RSI
One last update...

I managed to pack the normal into the 32 bit alpha channel of the positions buffer but packing / unpacking slowed the frame rate and there was some nasty artifacts. Looks like this is going to be a 2 pass AO solution for the Leaf Painter.
May 26, 2011 03:40 AM
Jason Z
[quote name='RSI' timestamp='1306377022']
Uhhhgg. Implemented the first example using the inverse projection - but it was very slow.

Had a crack a the second method using interpolated far frustum rays but the ray would only be good for the center pixel. Would need to create a ray buffer and can't be bothered at the moment.

This AO stuff is addicting. Would be nice to create the positions and normals buffers in a single pass...
[/quote]

I'm not sure what API you are using, but you could easily do that with either MRT or Texture2DArray with D3D11...
May 28, 2011 08:21 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement