• entries
    31
  • comments
    43
  • views
    61248

My First SSAO and the BrushUp GUI

Sign in to follow this  
RSI

757 views

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.
Sign in to follow this  


4 Comments


Recommended Comments

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.

Share this comment


Link to comment
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...

Share this comment


Link to comment
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.

Share this comment


Link to comment
[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...

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now