Adaptive quantization visibility caching
Abstract
Ray tracing has become a viable alternative to rasterization for interactive applications and also forms the basis of most global illumination methods. However, even today's fastest ray-tracers offer only a tight budget of rays per pixel per frame. Rendering performance can be improved by increasing this budget, or by developing methods that use it more efficiently.
In this paper we propose a global visibility caching algorithm that reduces the number of shadow rays required for shading to a fraction of less than 2% in some cases. We quantize the visibility function's domain while ensuring a minimal degradation of the final image quality. To control the introduced error, we adapt the quantization locally, accounting for variations in geometry, sampling densities on both endpoints of the visibility queries, and the light signal itself.
Compared to previous approaches for approximating visibility, e.g. shadow mapping, our method has several advantages: (1) it allows caching of arbitrary visibility queries between surface points and is thus applicable to all ray tracing based methods; (2) the approximation error is uniform over the entire image and can be bounded by a user-specified parameter; (3) the cache is created on-the-fly and does not waste any resources on queries that will never be used. We demonstrate the benefits of our method on Whitted-style ray tracing combined with instant radiosity, as well as an integration with bidirectional path tracing.
Downloads and links
- paper (PDF, 33 MB)
- citation (BIB)
- supplemental images – a comprehensive set of results and benchmarks (ZIP, 94 MB)
- supplemental video – demontrates the interactive performance of our algorithm (MP4, 37 MB)
- slides – from the conference presentation (PPTX, 63 MB)
Media
Supplemental video
BibTeX reference
@Article{Popov:2013:VisibilityCaching, author = {Stefan Popov and Iliyan Georgiev and Philipp Slusallek and Carsten Dachsbacher}, title = {Adaptive Quantization Visibility Caching}, journal = {Computer Graphics Forum}, note = {EUROGRAPHICS 2013}, volume = {32}, number = {2}, year = {2013} }