Screen Space Ambient Occlusion (SSAO) removed?

Hi,

In the post process volume there are some settings to control the Ambient Occlusion (SSAO), but as far I’m aware they have no effect at all. This documentation page while outdated a bit (still about the SVOGI) mention an SSAO G-Buffer that is not available in my current build : https://rocket.unrealengine.com/docs/ue4/INT/Engine/Subsystems/Rendering/PostProcessEffects/AmbientOcclusion/index.html

Does the SSAO have been removed ? Any idea of when we will get it back ?

You should be able to create postprocessing pass (put a material with domain postprocess in blendables postprocessvolume) and use the SceneTexture material expression node, the AmbientOcclusion channel can be used to multiply the postprocessinput0. Ideally you do that before tonemapping (material setting, this way TemporalAA will still work). This way you can affect all lighting with SSAO.
Keep in mind the postprocesssetting “AmbientOcclusion/StaticFraction” can be used to affect the ambient of backed GI.

The “AmbientOcclusion” channel should be available inside the SceneColor node right ? If yes, then it’s not available in my current beta (build 1711197).

No, It is in the “SceneTexture” node, combobox entry named AmbientOcclusion. If not - it will be in the next build

You need to activate AmbientCubemap to get Ambient Occlusion working.
It’s still SSAO (as for means it’s still Scree Space), but it’s far more advanced than any other real time solution I have seen.

Thanks, I don’t usually use an ambient cubemap, this explain why I wasn’t seeing the effect.

However that a bit problematic to be forced to use an ambient cubemap as I almost disable it to only get the SSAO (I set the intensity to 0.01). And the independent GBuffer is still not available. :slight_smile:

If you think about it, it makes sense, as the Ambient Occlusion is Ambient effect. You never see it under direct lighting condition, only in indirect lighting.
If you don’t have indirect light (which Cubemap simulate, you can’t have any ambient Occlusion…

But I agree it would nice to have optionto use AO without cubemap, just with indirect lighting on ambient light.

Well, before the realistic rendering with IBL, the SSAO was available as a simple post-process effect. I don’t see why we should be forced to use IBL if the environment color of lightmass is still available.

Also as far I know, while IBL is probably a great tool, it ask a specific cubemap which need to be generated for each part of you environment (especially if you make an interior). And currently you have to generated these cubemap outside of the editor.

So currently I’m not a big fan of IBL and prefer to stick to the previous tool are they are much more modular.

Ambient occlusion is only applied to indirect lighting and so we take it in to account when applying indirect diffuse from lightmaps, reflections, and the ambient cubemap.

In your postprocess volume under Ambient Occlusion make sure that Intensity is > 0 and that the radius is >= 0.1. The engine will then apply SSAO to the ambient cubemap (if you have one specified), reflection environment (if you have placed reflection captures), and indirect diffuse from lightmaps (if Static Fraction is > 0.01 in your Ambient Occlusion post process settings).

Thanks for the answer, however I have still some points that are not answered :

  • Why is the G-Buffer for the SSAO missing ?
  • Why are we forced to use an ambient cubemap to enable the SSAO ?

The G-Buffer target is still there. It is now called “MaterialAO” and only shows you the ambient occlusion output from your materials.

In the editor you can also view the screen space results by setting the view mode to “Visualize Buffer → AmbientOcclusion”.

You aren’t forced to use an ambient cubemap to enable SSAO. However, as I mentioned ambient occlusion is only used to darken the ambient lighting term. That includes indirect diffuse that comes from the lightmap, indirect specular from reflection environment, and ambient light that comes from the ambient cubemap. If your scene is lit entirely by direct lighting you won’t see ambient occlusion because there is no ambient light to be occluded.

Are you looking to darken direct lighting with the ambient occlusion term?

Well, I’m aware there is the MaterialAO G-Buffer, and regarding you comment I think there is probably a gap between your build and mine because :

  • I don’t have the “Visualize Buffer → AmbientOcclusion”

  • If I disable the cubemap the SSAO disappear. I’m forced to load a cubemap and use a very low value to disable it but still keep the SSAO.

ao_cubemap.gif

I totally understand that the SSAO is not available under the direct lighting, but it’s not what I was talking about in my previous post. Simply the fact that without an Ambient Cubemap there is not SSAO at all. From your post I deduce this was fixed/changed. If not do you think it could be possible to add this as a request ?

Ah, perhaps this has already been fixed as I can’t reproduce that behavior.

I don’t have the “Visualize Buffer → AmbientOcclusion”

It’s under Show > Visualize > Ambient Occlusion

Thanks ! :slight_smile: