I made this ambient occulusion to achieve less wrong occulusion and more accurate AO. It is using a height-field marching method, similar to HBAO. Rather than marching on horizon in HBAO, this method diretly marching on the normal surface by using some vector math tricks. This makes the occulusion related to the occulusion angle and it is more natural and physical.
This AO also accumulates the scene around the dark corners. It may achieve a GI effect, and make the AO more accurate. For example, the corner between two bright white planes should be at least brighter than the corner between two dark planes. This colored AO method can achieve this effect.
This AO supports OpenGL 3.2+, DirectX 11 and DirectX 9. The support for GLES is comming soon.
The one thing I look at it other than the end result… is the actual editor tool gui and what features it has to get and tailor those end results.
Basically what options does your asset provide… right now I’m more inclined to use new fx stack that has a basic AO, only it currently lacks decent options like near/far distance cut off/ and falloff settings.
I updated the code and it now supports OpenGL 3.2+, DirectX 11 and DirectX 9. (The behavior may varies and you need to add a noise texture on Legacy platforms, such as DX9 and GL 2.1.)
All my maps and most of the effects are not working in GLES. I’m currently trying to make it available on GLES.
I’m a little surprised when I find that OpenGL is running the demo faster than DX11, especially CPU time is only about 15ms (compared to about 40ms on DX11)