SSAO

   Screen space ambient occlusion (SSAO) is a [1]screen space technique used
   in 3D [2]computer graphics for [3]approximating [4]ambient occlusion
   (basically "dim, very soft shadows in corners", which itself is an
   approximation of true [5]global illumination) in a way that's easy and not
   so expensive to implement to run in [6]real time. The effect is overly
   used in video games but it very often looks extremely ugly and is often
   criticized, see e.g. an excellent article at
   https://nothings.org/gamedev/ssao/.

   { 2023 report: SSAO still sucks. ~drummyfish }

   Exact ambient occlusions can be computed with algorithms such as RTAO
   (which uses [7]raytracing), but this requires complete information about
   the geometry and is too slow without special hardware. Therefore some game
   devs cheat and use a cheap approximation: SSAO is implemented as a
   [8]post-processing [9]shader and only uses the information available on
   the screen, specifically in the [10]depth buffer -- this gives only
   partial information about the actual scene geometry, i.e. the algorithm
   doesn't know what the back facing, screen-perpendicular or off-screen
   geometry looks like and has to make guesses which sometimes result in
   quite visible inaccuracies.

   This methods is notoriously ugly in certain conditions and many [11]modern
   [12]games suffer from this, even the supposedly "photorealistic" engines
   like Unreal -- if someone is standing in front of a wall there is a shadow
   outline around him that looks so unbelievably ugly you literally want to
   puke. But normie eyes can't see this lol, they think that's how reality
   looks and they are okay with this shit, they allow this to happen. Normies
   literally destroy computer graphics by not being able to see correctly.

   What to do then? The most [13]suckless way is to simply do no ambient
   occlusion -- seriously test how it looks and if it's okay just save
   yourself the effort, performance and complexity. Back in the 90s we didn't
   have this shit and games unironically looked 100 times better. You can
   also just [14]bake the ambient occlusion in textures themselves, either
   directly in the color texture or use [15]light maps. Note that this makes
   the ambient occlusions static and with light maps you'll need more memory
   for textures. Finally, if you absolutely have to use SSAO, at least use it
   very lightly (there are parameters you can lower to make it less
   prominent).

See Also

     * [16]screen space reflections
     * [17]vsync

Links:
1. screen_space.md
2. graphics.md
3. approximation.md
4. ambient_occlusion.md
5. global_illumination.md
6. real_time.md
7. raytracing.md
8. post_processing.md
9. shader.md
10. z_buffer.md
11. modern.md
12. game.md
13. suckless.md
14. baking.md
15. light_map.md
16. screen_space_reflections.md
17. vsync.md