Ambient Occlusion Volumes


in ACM SIGGRAPH/Eurographics High Performance Graphics 2010
(best paper awards, 1st place)


Morgan McGuire, NVIDIA and Williams College

Abstract
Paper (PDF)
Talk (PDF)
Images
BibTex
Data
Acknowledgments
Reference Implementation Source Code & Demo


Earlier work on this topic:

Williams College Department of Computer Science
2009 Technical Report (PDF)

ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games 2010
(2010 Best Poster Award winner)
I3D '10 Poster Extended Abstract (PDF)
I3D '10 Poster (PDF)
I3D '10 Fast Forward slides (PPT)

Abstract

This paper introduces a new approximation algorithm for the near-field ambient occlusion problem. It combines known pieces in a new way to achieve substantially improved quality over fast methods and substantially improved performance compared to accurate methods. Intuitively, it computes the analog of a shadow volume for ambient light around each polygon, and then applies a tunable occlusion function within the region it encloses. The algorithm operates on dynamic triangle meshes and produces output that is comparable to ray traced occlusion for many scenes. The algorithm's performance on modern GPUs is largely independent of geometric complexity and is dominated by fill rate, as is the case with most deferred shading algorithms.

Acknowledgments

Thanks to Chris Wassum and Vicarious Visions for the Secret War and the Android character, Max McGuire (Unknown Worlds) for helping with other models, Marko Dabrovic for Sponza and Sibenik, Tom Garrity (Williams), Corey Taylor (EA), and Joakim Carlsson and Patrik Sjolin (Chalmers) for their advice and corrections. Thanks to Pete Shirley for his substantial help editing the final draft of the paper.

Reference Implementation & Demo

AOV-demo.zip contains a Windows binary and a platform-independent reference implementation with full source code and shaders. It depends only on the open source G3D Innovation Engine version 8.01. This includes several optimizations that were discovered since publication of the HPG 2010 paper that will be described in a forthcoming publication. I released this code to support dissementation of of a scientific result and further experimentation in the area. I do not provide support or a warranty for it. You are welcome to use it in your own work for any application. I appreciate acknowledgement of myself and NVIDIA corporation if you do.

Images

From the paper:



Download grid.zip containing AO results under four algorithms

Additional images Courtesy of Studio|Gpu, whose product MachStudio Pro uses the AOV algorithm:

Data

Quantitative result table [PDF], including new GeForce GTX 480 results that did not appear in the original paper. The corresponding images from this experiment are in grid.zip.

The publically available scenes used for generating results are from the following sources:

The three compensation maps used in our experiments are:
  • identity.tga Identity (no compensation) map
  • suburb-manual.tga Manually tuned compensation map for the Suburb scene, intended to demonstrate the best possible fit
  • auto-optimized.tga Optimized compensation for Suburb and House, applied to all scenes (unless otherwise specified) for results in the paper
The compensation maps are radiance compensation maps. Apply them before gamma correction.

BibTex


@inproceedings{McGuire10AOV,
  author = {Morgan Mc{G}uire},
  title = {Ambient Occlusion Volumes},
  year = {2010},
  month = {June},
  booktitle = {Proceedings of High Performance Graphics 2010},
  location = {Saarbrucken, Germany},
  url = {http://graphics.cs.williams.edu/papers/AOVHPG10}
}

@misc{McGuire10AOVPoster,
   author = {Morgan Mc{G}uire},
   title = {Ambient Occlusion Volumes},
   year = {2010},
   month = {February},
   note = {I3D 2010 Poster Session}
}

@techreport{McGuire09AOV,
 author = {Morgan Mc{G}uire},
 intsitution = {Williams College Computer Science Department},
 title = {Ambient Occlusion Volumes},
 year = {2009},
 month = {December},
 number = {CSTR200901},
 day = {5},
 address = {Williamstown, MA, USA},
 url = {http://graphics.cs.williams.edu/papers/AOVHPG10/}
 }