Memory-efficient, scalable ray tracing
MetadataShow full item record
Ray tracing is an attractive rendering option because it can produce high quality images that faithfully represent physically-based phenomena. Its embarrassingly parallel nature makes it a natural choice for rendering large-scale scene data, especially on machines that lack specialized graphics hardware. Unfortunately, the traditional recursive ray tracing algorithm is exceptionally memory inefficient for large scenes, especially when using a shading model that generates incoherent secondary rays. Queueing ray tracers have been shown to control scene state under these conditions, but they allow ray state to grow unchecked. Instead, we propose a ray tracing framework that controls both ray and scene state by dynamically adjusting the rendering algorithm to meet memory requirements. Our dynamic scheduling framework generalizes recursive and queueing tracers into a spectrum of ray schedules that can vary the active amount of ray and scene data in order to match the characteristics of the hardware’s memory system. This dissertation describes our dynamic ray scheduling approach that operates on memory-bound work units, which consist of both rays and scene data. It builds these work units by tracing rays iteratively and queueing them in spatial regions along with nearby data. By dynamically scheduling these work units, our approach can reduce data loads and improve total runtime by 2x to 30x . In addition, we show that our algorithm scales across more than 1000 distributed processors, which is an order of magnitude larger than previously published results. Our approach enables the use of complex lighting models on large data, particularly scientific data, which improves image quality and thereby improves the scientific insights possible.