Multi-Resolution Screen-Space Ambient Occlusion by ilovekonoka
Time Spent:
1 year, on and off
Date Added: Jun 25 2011 07:17 AM
Hi,
Here's a new SSAO method which we call MSSAO that computes AO at different resolutions and combine the partial AO values to get the final result. The figure below can help explain the idea.
At each resolution, the kernel size is small so we can avoid noise/blur artifacts. Also, this method does not blur at the final resolution like most other SSAO methods, so sharp details are captured. Unlike existing SSAO methods, MSSAO can capture both high and low frequency shadows due to local and distant occluders respectively.
MSSAO's performance is slightly better than Blizzard's SSAO and Volumetric AO (sorry I haven't compared it with more recent ones, such as Alchemy AO). Using a small kernel size at each resolution and avoiding the final blur pass help achieving good framerates (~ 22 ms per frame at 1024x1024 on the GTX 460M, for comparison, NVIDIA's HBAO takes ~ 50 ms per frame on the same hardware).
More details can be found in a paper on my website. There you can also find the source code of the project.
Some screenshots below.
Date Added: Jun 25 2011 07:17 AM
Hi,
Here's a new SSAO method which we call MSSAO that computes AO at different resolutions and combine the partial AO values to get the final result. The figure below can help explain the idea.
At each resolution, the kernel size is small so we can avoid noise/blur artifacts. Also, this method does not blur at the final resolution like most other SSAO methods, so sharp details are captured. Unlike existing SSAO methods, MSSAO can capture both high and low frequency shadows due to local and distant occluders respectively.
MSSAO's performance is slightly better than Blizzard's SSAO and Volumetric AO (sorry I haven't compared it with more recent ones, such as Alchemy AO). Using a small kernel size at each resolution and avoiding the final blur pass help achieving good framerates (~ 22 ms per frame at 1024x1024 on the GTX 460M, for comparison, NVIDIA's HBAO takes ~ 50 ms per frame on the same hardware).
More details can be found in a paper on my website. There you can also find the source code of the project.
Some screenshots below.
C++, OpenGL, GLSL





















5 Comments
CodingCat
Jun 29 2011 06:05 AM
thefries
Jun 29 2011 06:31 AM
Matias Goldberg
Jun 29 2011 12:17 PM
ilovekonoka
Jun 30 2011 06:00 AM
Something like MSSDO may be interesting =) However I believe screen-space tricks like this or even ambient occlusion are going out of fashion very soon. We should aim for more physically correct *real-time* rendering...
Hodgman
Jun 30 2011 06:33 AM
However, these methods using ~30 to ~40 samples per fragment are only really usable on beefy new hardware (i.e. not your 8600M, or a current-gen console). It'd be interesting to see how the quality of current-gen techniques are improved with the use of multiple resolutions...