Abstract: When rendering only directly visible objects, ray tracing a few levels of specular reflection from large, low-curvature surfaces, and ray tracing shadows from point-like light sources, the accessed geometry is coherent and a geometry cache performs well. But in many other cases, the accessed geometry is incoherent and a standard geometry cache performs poorly: ray tracing of specular reflection from highly curved surfaces, tracing rays that are many reflection levels deep, and distribution ray tracing for wide glossy reflection, global illumination, wide soft shadows, and ambient occlusion. Fortunately, less geometric accuracy is necessary in the incoherent cases. This observation can be formalized by looking at the ray differentials for different types of scattering: coherent rays have small differentials, while incoherent rays have large differentials. We utilize this observation to obtain efficient multiresolution caching of geometry and textures (including displacement maps) for classic and distribution ray tracing in complex scenes. We use an existing multiresolution caching scheme (originally developed for scanline rendering) for textures and displacement maps, and introduce a multiresolution geometry caching scheme for tessellated surfaces. The multiresolution geometry caching scheme makes it possible to efficiently render scenes that, if fully tessellated, would use 100 times more memory than the geometry cache size.
One-line summary: How to render ray tracing, ambient occlusion, and single-bounce global illumination in scenes with 500 million triangles (without resorting to instancing).
Published in: Computer Graphics Forum (Eurographics 2003 Conference Proceedings), volume 22, number 3, pages 543-552. Blackwell Publishers, September 2003. (Granada, Spain, September 1-6.)
Download paper here: paper.pdf.
Improvements: We have improved the method since the publication of this paper:
Back to Per's publication page.