Object Space Ambient Occlusion

Object Space Ambient Occlusion

Idea #

Computed per vertex:

  1. Compute object_space_ambient_occlusion_9f5824bb1cf542411b5a99d48b763a6a5da258ed.svg of the adjacent triangle areas

  2. construct a normal oriented disc, with that area at that vertex

  3. for each pair of discs, compute how much they occlude each other

  4. per vertex

Complexity #

Naively: object_space_ambient_occlusion_7a36d8932f96988476957f0cdaf1b2151d27c09c.svg

Improved with hiearchical disc structure: object_space_ambient_occlusion_81596352680044a97709f36ec8728d7258421035.svg

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

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.

Calendar October 22, 2023