Hunting for Perfect SSAO



I've been in love with the aesthetic of the bare Ambient Occlusion pass since 2003 in college when we were first hacking it in Maya with a dome of spotlights. Two years later it was a standard render pass, and about 10 years later it's a real-time post effect in prosumer engines like Unity. Yay! 

My world of Foxhunt is mostly white and textureless. It needs Ambient Occlusion to define the forms, otherwise you would get lost looking around in it.  I haven't splurged on a lot of graphical bells and whistles, using only the Unity Post-Processing Volume (PPV) stack so far, but I decided AO is important enough to spend money on.  For $25 each, I purchased the three most popular Screen-space Ambient Occlusion plugins from the Unity store to try out...

Horizon-Based Ambient Occlusion by Michaël Jimenez (option 2 in the gifs)

Volumetric Ambient Occlusion by Project Wilberforce (option 3)

SSAO Pro by Thomas Hourdel (option 4)

Option Zero is no AO. Option 1 I reserve for the PPV AO free from Unity, which I've been pretty happy with. I have Multi-Scale Volumetric Obscurance mode on with an intensity of 0.6. There's not much to play with, settings-wise, but I love the way it paints my sparse low-poly faces over with creamy gradients in the shadows. I like large, blurry AO for Foxhunt: it adds such richness and flavor to the stark white. However, it seems as though most SSAOs are meant for small, tight contact shadows in the nooks and crannies. This was the case for my three new ones, so I was forced to push them all to their limits (and finally beyond) to get anything close to what I wanted. 






The bridge highlights a problem with my original PPV AO solution. The individual slats get no contact shadows because they are just too close together. The new SSAOs can all get in the crevices, but only HBAO holds up at larger spreads too.


The ceiling of this room illustrates another problem. Without a "bias" setting, low poly edges that are meant to be smooth and invisible are picked up. All the new SSAOs have bias settings to exclude those edges, but PPV AO doesn't. 

Here is a win for Wilberforce's Volumetric AO (option 3): See that crease where the half-wall meets the ground in the lower-center of the gif? The part of it in direct sunlight. You don't want any AO there right? Only with VAO's "Luma Sensitivity" settings could I get that edge to completely exclude AO. 


This gif illustrates why I come back to PPV though. Look at those nice smooth gradients of purplish-blue painting out from the creases in the shadows of this cave. With the other SSAOs, designed to stay in the deep creases and not spread out, I missed the richness of the dark too much.

Option 5 is a combination of 1 and 2. No one option does it all: fine detail AND large gradients. So I'm going with 2 different passes: My original PPV AO at half intensity and Horizon-Based AO at 80% with aggressive distance falloff (keep the fine detail only near to the camera). I'm not saying the other two plug-ins are bad, but of the three, Horizon-Based Ambient Occlusion by Michaël Jimenez suited my project best. They all did pretty much the same thing: added fine detail in small creases and crevices, but I didn't really want that at first. I wanted a better version of Unity's free PPV AO, something with more options and less moire-ing in close details. After taking my wife's input on the options (she liked the detail), extending HBAO beyond it's hard-coded ranges, and stacking two options on top of each other I got something I'm happy with!

Comments

Log in with itch.io to leave a comment.

(+1)

I've played your first game. Can't honestly wait for  this version. Will there be a beta?

Hmm. Maybe I'll release this first mountain world to get some player feedback. Thanks for saying, you're keeping me going!

(2 edits) (+1)

You're going to make it in the indie world. Twitch streamers loved your game. The people who watched it as well.
I'd be more than happy to provide feedback once that day comes. Do you have a Discord channel?

There's so much out there... I wish I had time for both making the thing AND the necessary social/promotional side...

You think I should do a discord? Is that where people are talking these days? I'm happy to do what it takes to get feedback and build excitement.

Thank you, once again, for the boost!

Hmm. I need to look more into inviting people and running the channel... here is a link tho... with 10 uses for now https://discord.gg/MnY5C4y

(+1)

I joined. I can help you out with Discord so you don't have too. Let's talk in Discord if you want.