Ray Tracing on the GPU
Introduction
Ray tracing is used to render photorealistic images in computer graphics. We work on real time ray tracing of static, dynamic and deformable scenes composed of polygons as well as higher order surfaces. This has been made possible with the recent advances in GPU hardware and computing resources. We have developed various algorithms that perform real time ray tracing of various kinds of scenes by constructing efficient acceleration structures on the GPU as well as algorithms that work without constructing any explicit structure.
Projects involving Ray Tracing using CUDA
1. Parallel Divide and Conquer Ray Tracing
Divide and Conquer Ray Tracing is a recent technique in which ray tracing is performed without constructing any explicit acceleration structure. We have developed a parallel version of the algorithm that runs entirely on the GPU using efficient parallel primitives like sort and reduce. Our approach suits the GPU well, with a low memory footprint. Our implementation outperforms the serial CPU algorithm for both primary and secondary ray passes.
2. Hybrid Ray Tracing and Path Tracing of Bezier Surfaces Using A Mixed Hierarchy
We present a scheme for interactive ray tracing of Bezier bicubic patches using Newton iteration. We use a mixed hierarchy representation as the acceleration structure. This has a bounding volume hierarchy above the patches and a fixed depth subpatch tree below it. This helps reduce the number of ray-patch intersections that needs to be evaluated and provides good initialization for the iterative step, keeping the memory requirements low. We use Newton iteration on the generated list of ray patch intersections in parallel. Our method can exploit the cores of the CPU and the GPU with OpenMP on the CPU and CUDA on the GPU by sharing work between them according to their relative speeds. A data parallel framework is used with a list of rays, which is transformed to a list of ray-patch intersections by traversal and then to intersections and a list of secondary rays by root finding. Shadow and reflection rays can be handled exactly in the same manner as a result. We also show how our method extends easily to generate soft shadows using area light sources and path tracing by tracing a large number of rays per pixel.
3. Ray Tracing Dynamic Scenes on the GPU
We present fast ray tracing of dynamic scenes with primary and shadow rays. We present a GPU- friendly strategy to bring coherency to shadow rays, based on previous work on grids as acceleration structures. We introduce indirect mapping of threads to rays to improve the performan ce of ray tracing on the GPU for the traversal and intersection steps. We also construct a light frustum in a sph erical space for shadow rays. A grid structure is constructed each frame for the light frustum and traversed coh erently. This involves careful mapping of the primary ray information to the light space and balancing the work load of th e threads. Using the finegrained parallelism of GPU, we reorder the shadow rays to make them coherent a nd process multiple thread blocks to each cell to balance the work load. Spherical mapping is key to handling ligh t sources placed anywhere in the scene by reducing the triangle count and improving performance in shad ow checking. In addition it also allows us to introduce spotlights in raytracing. In practice, we attain interactive perform ance for moderately large models which change dynamically in the scene.
4. Ray Tracing Implicit Surfaces in Real-Time
We present a ray-tracing procedure to render general implicit surfaces efficiently on the GPU. Though only the fourth or lower order surfaces can be rendered using analytical roots, our adaptive marching points algorithm can ray trace arbitrary implicit surfaces without multiple roots, by sampling the ray at selected points till a root is found. Adapting the sampling step size based on a proximity measure and a horizon measure delivers high speed. The sign test can handle any surface without multiple roots. The Taylor test that uses ideas from interval analysis can ray trace many surfaces with complex roots. Overall, a simple algorithm that fits the SIMD architecture of the GPU results in high performance.
5. Ray Casting Deformable Models on CUDA
We explore the problem of real time ray casting of large deformable models (over a million triangles) on large displays (a million pixels) on an off-the-shelf GPU. We build a GPU-efficient three-dimensional data structure for this purpose and a corresponding algorithm that uses it for fast ray casting. We also present fast methods to build the data structure on the SIMD GPUs, including a fast multi-split operation. We achieve real-time ray-casting of a million triangle model onto a million pixels on current generation hardware.
Related Publications
Srinath Ravichandran and P. J. Narayanan - Parallel Divide and Conquer Ray Tracing In SIGGRAPH ASIA 2013 Technical Briefs, 19-22nd Nov. 2013, Hong Kong. [PDF]
Rohit Nigam, P J Narayanan - Hybrid Ray Tracing and Path Tracing of Bezier Surfaces Using A Mixed Hierarchy Proceedings of the 8th Indian Conference on Vision, Graphics and Image Processing, 16-19 Dec. 2012, Bombay, India. [PDF]
Sashidhar Guntury and P.J. Narayanan - Raytracing Dynamic Scenes on the GPU Using Grids IEEE Transactions on Visualization and Computer Graphics, Vol.18, No.1 pp. 5-16, 2012. [PDF]
Sashidhar Guntury and P. J. Narayanan - Ray Tracing Dynamic Scenes with Shadows on the GPU Proceedings of Eurographics Symposium on Parallel Graphics and Visualization (EGPGV'10), pp.27-34, 2-3 May, 2010, Norrkoping, Sweden. [PDF]
Jag Mohan Singh and P. J. Narayanan - Real-Time Ray Tracing of Implicit Surfaces on the GPU IEEE Transactions Visualization and Computer Graphics, Vol. 16(2), pp. 261-272 (2010). [PDF]
- Suryakant Patidar and P. J. Narayanan - Ray Casting Deformable Models In: ACM ICVGIP 2008. [PDF]
Associated People
- Srinath Ravichandran
- Sashidhar Guntury
- Suryakant Patidar
- Rohit Nigam
- Jag Mohan Singh
- Prof. P.J. Narayanan