AO is bad in URP?!

Started a new URP project - the default Ambient Occlusion out of the box seems a bit… bad.
In the screenshot here you see the foreground object causes a halo effect on the AO effect where floor meets ceiling behind. Also AA artifacts.
I have increased intensity to full for clarity. This is high settings.
Is this the best we have with standard URP?

9571195--1354399--upload_2024-1-9_16-31-9.png

Hi, have you tried changing the method (2022 LTS or above) to Blue Noise and enable TAA (denoising) in game camera?

Interleaved Gradient:
9571687--1354507--InterleavedGradient.jpg

Blue Noise:
9571687--1354510--BlueNoise.jpg

“Screen Space” AO means just that-- it’s working with pixels that have already been drawn. Once your head is in the way of that wall shadow, there’s no way for the GPU to figure out what used to be there without your head, to infer how the wall is close to the floor. Use SS effects very sparingly. If you want better AO, bake it into your textures or lighting.

1 Like

SSAO in URP definitely isn’t all that good, but most of what you’re seeing is just a byproduct of any SSAO implementation, and the fact that it can only use screen space information. Use the effect with a much lower intensity. That advice goes for anything else screenspace too.

1 Like

OK I forget the issues with screen-space effects! But has anyone used asset store alternatives which have improved their SSAO in URP?
I am looking at indoor scenes BTW not distant landscapes etc.

Why can’t you bake it?
Or if you need high end visuals with real time lighting maybe look into ray tracing in HDRP?

Because it is for procedural stuff where baking is not an option.
We have used HDRP in some cases and it is good but not when we need lower end support or mobile.

Simply reducing intensity to a fair value makes issues less noticable though

Yeah SSAO often is used to be a suddle effect for me.
Know that it is very heavy on the GPU, so don’t expect SSAO to run great on low end mobile as well

The official built-in SSAO performs poorly mainly because it redundantly performs an additional PerDepthNormalPass, effectively requiring objects to be rendered twice. This significantly impacts mobile platforms. Perhaps consider MobileSSAO as a reference, which uses MRTPass to resolve the issue of double rendering and provides comparative data with the official SSAO.

1 Like

Good sell there! But I may well try it, because that sounds terrible and odd!