A new approximate ambient occlusion method has been added, next to the existing one based on raytracing This method is specifically targetted at use in animations, since it is inherently noise free, and so will not flicker across frames.
Due to it's approximate nature the method is not suitable for all types of scenes, and requires some more tweaking to get good results, but it will render much faster. Specifically the method will lead to too much occlusion when two faces behind each other are pointed in the same direction.
Approximate ambient occlusion can be activated in the Ambient Occlusion panel in the world buttons, by choosing the Approximate instead of the Raytrace gather method.
Instanced objects and strand primitives do not occlude currently, due to performance reasons. Strands are also do not compute occlusion at the shading point, but rather look up occlusion on their parent surface, computed in a preprocessing pass.
Also note that faces only occlude in the direction of their normal, so make sure normals are pointing outside.
The implementation is based on the concept of point-based occlusion. It takes together ideas from various papers on the subject:
Dynamic Ambient Occlusion and Indirect Lighting [pdf]
GPU Gems 2, Chapter 14, Michael Bunnell.
High Quality Ambient Occlusion
GPU Gems 3, Chapter 12, Jared Hoberock and Yuntao Jia.
Points Clouds and Brick Maps for Movie Productions
Point-Based Graphics, Chapter 8.4, Per H. Christensen.
The implementation clusters together faces in a spatial tree structure, with the leaf nodes triangles, and the branch nodes spherical harmonics that approximate the collection of triangles below it. For computing the occlusion at a pixel, this tree structure is then traversed, with nearby parts of the tree traversed deeper, and far away parts using an approximation of the triangles below it. More details here: