Shem_Namo said:
I know the most common way to calculate AO is in Screen Space, but are there any other ways that it can be done?
Option 1: Bake AO to textures. But that's per object then, so multiple objects won't occlude each other.
Option 2: Calculate AO in world space, e.g. using raytracing, voxel cone tracing, SDF sphere tracing, etc.
But if you do this expensive stuff in pixel shader, chances are a triangle drawn later overwrites those results, so that's a total waste and redundant work for opaque geometry. Would make sense only for transparent stuff.
So even if traced AO is used, you'll do it only after all (or a certain layer of) geometry has been drawn and final visibility is known.
Another option would be to do depth pre pass and use resulting depth in the next pass to calc SSAO in pixel shader. But you don't want this for the same reason.