Another Node based fake AO...Better than EVER!

Based on inspirations from matt ebb, crytek GmbH, and various papers, I manged to create a robust, easy-to-implement screenspace AO with blender, so here it is! My very own fake ambient occlusion using nothing but nodes!


Blender sample files.

wow - looks great for a 5 second render! Would you be able to integrate this into the preview window? Then you could toggle a button to use the fast ao instead…?


of…? speed? image quality? click on thelinkin the first post for more pics.

bjzaba, i am not too familiar with GLSL, but the current approach is rather slow to be considered for real-time application. but i am sure i can convert the algorithm to GLSL in due time…

OIC :smiley:
Mad Props to you :rolleyes:

The Fake Ao shadowy bits are too dark in some images imo, but its fast and looks a bit stylized too which I reckon that would look great in a cartoon render…
Nice work! You’re the man

Man i am dying to see your sample file !
I ve got no idea of how such things work !
Excellent job WD !

I’m curious on node setup too ;]

Not bad. Would be interesting to see how tweakable this setup is, since the shadows seem to be too intense and too short in comparison to the Raytraced AO Render.

Would be cool if you could manage to achieve a almost identical look.

you da man

This is unbelievable. Great. If this was not mpan3 thread I would consider it as a fake.
So where it the setup ??? :-))) Is this new node or combination of actual ones?

Here’s the result of some experiments, together with my setup and a sample .blend for you to experiment with :slight_smile:

Plain lighting:

Raytraced AO, 10 Samples, 27seconds:

NodesAO, 2 seconds:

The setup used:

And finally the sample .blend.

There’s lots of possibilities for tweaking the results, so: Happy blending :evilgrin:

Good work mpan3 and MPPIC,really good techiques

Both methods show some jaggies (i.e. around the kitchensink - on the website) …

any workarounds known yet?

Looks like a rather good method to enhance images without needing a long AO render, I could see this being used for animations.

I gave this technique a try, quite interesting, unfortunately, il really depends on how the object is placed on the scene and how much space it takes, also depends on the shape. for example, a character spreading his arms to the camera won’t work that good, as I tried. but still for very square, centralized things, it’s a great time saver! congrats

this approach would be so much better if I can apply a algorithmic scale to the z-buffer…

Not to hijack your thread, but do you think it would be possible to use a node-based shader similar to what you’re doing for fake AO to simulate worn paint on hard edges such as shown in this screen shot (courtesy of “Anything Goos” and Carrara 5 Pro)?

This is great, keep it up.

I was trying another approach to fake AO. However, mine involves edge detection rather than z-buffer data. Unfortunately, mine has the downside of being texture-dependent, due to the edge detection.

Here a render result using mine:

And the nodes:

While rendering with the method stated in this thread, I noticed that it wasn’t very YafRay friendly (unless someone can prove me otherwise). Mine, though, seems to work well enough, though mine will shade textures as well. That is why I have included “Gamma” in the nodes in order to lighten images with textures so they don’t become very dark.

Just a thought,

Anyway you can combine that with the Zbuffer method and get the best bits out of both?

You could try this, render a layer without textures and a layer with textures, one could be your AO layer and the other could be everything else. Maybe bunch the lights in the AO layer as well.