In computer graphics, ambient occlusion attempts to approximate the way light radiates in real life, especially off what are normally considered non-reflective surfaces.
Unlike local methods like Phong shading, ambient occlusion is a global method, meaning the illumination at each point is a function of other geometry in the scene. However, it is a very crude approximation to full global illumination. The soft appearance achieved by ambient occlusion alone is similar to the way an object appears on an overcast day.
Ambient occlusion is related to accessibility shading, which determines appearance based on how easy it is for a surface to be touched by various elements (e.g., dirt, light, etc.). It has been popularized in production animation due to its relative simplicity and efficiency. In the industry, ambient occlusion is often referred to as "sky light".
The ambient occlusion shading model has the nice property of offering a better perception of the 3d shape of the displayed objects. This was shown in a paper where the authors report the results of perceptual experiments showing that depth discrimination under diffuse uniform sky lighting is superior to that predicted by a direct lighting model.
The occlusion at a point on a surface with normal can be computed by integrating the visibility function over the hemisphere with respect to projected solid angle:
where is the visibility function at , defined to be zero if is occluded in the direction and one otherwise, and is the infinitesimal solid angle step of the integration variable . A variety of techniques are used to approximate this integral in practice: perhaps the most straightforward way is to use the Monte Carlo method by casting rays from the point and testing for intersection with other scene geometry (i.e., ray casting). Another approach (more suited to hardware acceleration) is to render the view from by rasterizing black geometry against a white background and taking the (cosine-weighted) average of rasterized fragments. This approach is an example of a "gathering" or "inside-out" approach, whereas other algorithms (such as depth-map ambient occlusion) employ "scattering" or "outside-in" techniques.
In addition to the ambient occlusion value, a "bent normal" vector is often generated, which points in the average direction of unoccluded samples. The bent normal can be used to look up incident radiance from an environment map to approximate image-based lighting. However, there are some situations in which the direction of the bent normal is a misrepresentation of the dominant direction of illumination, e.g.,
In this example, light may reach the point p only from the left or right sides, but the bent normal points to the average of those two sources, which is, unfortunately, directly toward the obstruction.
- Global illumination
- Photon mapping
- Ray tracing
- Reflection occlusion
- Screen space ambient occlusion
- Langer, M.S.; H. H. Buelthoff (2000). "Depth discrimination from shading under diffuse lighting". Perception 29 (6): 649–660. doi:10.1068/p3060. PMID 11040949.
- Oscar 2010: Scientific and Technical Awards, Alt Film Guide, Jan 7, 2010
- Depth Map based Ambient Occlusion
- NVIDIA's accurate, real-time Ambient Occlusion Volumes
- Assorted notes about ambient occlusion
- Ambient Occlusion Fields — real-time ambient occlusion using cube maps
- PantaRay ambient occlusion used in the movie Avatar
- Fast Precomputed Ambient Occlusion for Proximity Shadows real-time ambient occlusion using volume textures
- Dynamic Ambient Occlusion and Indirect Lighting a real time self ambient occlusion method from Nvidia's GPU Gems 2 book
- GPU Gems 3 : Chapter 12. High-Quality Ambient Occlusion
- ShadeVis an open source tool for computing ambient occlusion
- xNormal A free normal mapper/ambient occlusion baking application
- 3dsMax Ambient Occlusion Map Baking Demo video about preparing ambient occlusion in 3dsMax