Screen-space ambient occlusion is in love with itself. Sean Barrett’s essay opens with the symptoms: amateur screenshots where convex corners get brighter near the corner, shipped games with halos and artifacts, and rooms whose corners are “weirdly dark” even when the effect is technically clean. He blames a belief — that real corners are dark — that let people write code producing unrealistic results.
He attributes the failure to some combination of four factors:
- Approximation errors from using SSAO instead of AO
- Approximation errors from using AO instead of radiosity
- Applying the darkening to all lighting, not just ambient lighting
- Tuning errors, where the heuristic weighting of the effect is too strong
Then he goes and checks, with photographs of his apartment rather than a renderer. Every image in the piece is a photo, sampled along a line crossing an edge, with the sRGB pixel values graphed on both sides.
The findings are unkind to the effect:
- The one corner that looked like a typical SSAO render turned out to be a soft shadow from an off-screen light, not occlusion. The wall that couldn’t see the light was dark; the wall that could was only darkening because the shadow spread.
- The corner with the least direct light — the closest thing to a pure ambient-occlusion case — did darken toward the edge, but mildly, with no dip at the seam.
- Much of the perceived darkening was Mach banding. Cover the brighter side of an edge and the effect disappears. Conditions matter too: the perceptual darkening shows up when the neighbouring surface is bright, and not at all when it’s the same tone.
- Where edge darkening was prominent, the facing surface was already darkening at the edge for another reason. “AO might make that part of the line look more realistic, but it will make the other five look less realistic.”
- Testing the darkest corner in the house, the graphed darkening nearly vanished — and the edge-darkening of ambient light didn’t scale up as the scene got darker the way the AO model predicts.
The conclusion is narrow on purpose. There is an edge-darkening effect along concave boundaries, but it’s subtle and only happens some of the time — and that’s probably not what the SSAO pass is doing. The essay is also a decent model for arguing about rendering: photographs instead of vibes, a graph per claim, an explicit note that the author isn’t a graphics researcher, and an open invitation to collect better data and prove him wrong.