Screen Space Directional Occlusion -- Is it worth it?

I don't pretend to be some sort of expert on computer graphics, but I just thought I'd share a couple of my thoughts on screen-space directional occlusion (SSDO). This is a (rather old) successor to the ever-popular SSAO (screen-space ambient occlusion), and SSDO has a couple of improvements. I recently read the research paper and tried to wrap my 14-year-old mind around it (to no avail). I'm still trying to understand it, but I think I know enough to tell if it's worth moving from SSAO to SSDO.

The latest version of CryEngine still lists SSDO as one of the main features on their website. I think that's more than enough reason to consider implementing SSDO. But what improvements does SSDO bring? Why should you prefer it over SSAO?

1) It adds directional shadows and indirect colour bleeding
2) Does not introduce any new artifacts
3) It's done in screen-space, so it doesn't depend on the number of polygons in the scene.

Here's a description of SSDO by CryTek:

"Crytek introduced Screen Space Ambient Occlusion in real-time gaming and now enhances it with the new technique of Screen Space Directional Occlusion (SSDO). SSDO allows any number of lights to be included in the calculation of Ambient Occlusion and for the color of all lights to be taken into account. SSDO improves physical lighting accuracy and ultimately allows contact shadows to be cast from every single light source in the environment."

That's all fine and well, but what about the performance drop? Well, I've got some news for ya, buddy...it's almost as fast as SSAO is. I mean, seriously, there isn't much of an impact on the performance (not according to the paper anyway).


SSDO, if you ask me, is definitely worth it. It can be integrated into a deferred rendering pipeline too (http://kayru.org/articles/dssdo/), with minimal decline in quality. It's also a lot easier to implement than, say, global illumination with voxel cone tracing. Once I implement it myself, I'll probably write a tutorial on how to move from SSAO to SSDO.

I haven't attempted to implement it yet, but I will eventually get around to it. There aren't any comprehensive tutorials for SSDO, so it'll be a little difficult. But meh, whatever. It'll be fun :)





CryEngine Features (SSDO): https://www.cryengine.com/features/visuals#features/screen-space-directional-occlusion

Here's the actual paper: https://people.mpi-inf.mpg.de/~ritschel/Papers/SSDO.pdf










Comments

Popular posts from this blog

Global Illumination -- which technique should you use?

Screen-Space Ambient Occlusion -- VICTORY!