Object Space Ambient Occlusion
Idea #
Computed per vertex:
-
Compute
of the adjacent triangle areas
-
construct a normal oriented disc, with that area at that vertex
-
for each pair of discs, compute how much they occlude each other
-
per vertex
Complexity #
Naively:
Improved with hiearchical disc structure:
Shadowed Occluders Problem #
An area can be occluded by two discs, that are also occluding themselves, so too much occlusion is calculated.

Figure 1: Left: good, Right: problematic
Solution #
- Have multiple AO passes
- Use occlusion values from previous pass to weight occlusion of this pass
Large Triangles Problem #
Since the object space ambient occlusion values are calculated per vertex only, the values will be interpolated along the faces, with might not be accurate and even be visibly wrong.