GPU Ray Tracing with CUDA
Eastern Washington University, Cheney, Washington
Eastern Washington University, 2014
@phdthesis{pitkin2013gpu,
title={GPU ray tracing with cuda},
author={Pitkin, Tomas},
year={2013},
school={Master’s thesis, Eastern Washington University}
}
Ray tracing is a technique for rendering images in computer graphics by simulating how light rays interact with the virtual environment. By tracing the path of a light ray through a scene and emulating the effect of the ray as it intersects with virtual objects, the ray tracing algorithm can accurately portray reflections, refractions, shadows, dispersion, scattering, and other optical effects with a high degree of realism. Although the concept and application of ray tracing existed centuries before the invention of computers, it was not until the work of Arthur Appel (Appel, 1968) that the idea of using ray tracing was introduced in the field of computer graphics. Appel demonstrated that a computer can render a scene using ray casting, a limited form of ray tracing, by sending rays from a viewpoint through each pixel in the image plane. If a ray has intersected with an object in the scene, the color of the intersected object is returned and the pixel on the image plane is updated to this color. This technique accurately projects the 3D scene onto a 2D image. Over a decade later, Turner Whitted (Whitted, 1980) improved upon Appel’s research and proposed the idea of a recursive algorithm where light rays reflected if a collision with an object was detected. If a ray has intersected with an object that has a reflective or refractive surface, a secondary ray could be generated at the intersection point and traced. This technique allows computers to render complex optical effects, such as reflection and refraction, and Whitted’s algorithm became known as recursive ray tracing. Although the ray tracing algorithm is relatively simple and widely used in computer graphics, it is rarely implemented in real-time applications. Because each ray must be tested for intersection against all the virtual objects in the scene, it becomes computationally expensive to render large scenes with complex light interactions. Therefore, video games and other graphic applications where speed is critical cannot use ray tracing effectively. However, current GPUs now provide the computational power and a parallel framework to significantly improve the performance in graphical data calculation. By redesigning the recursive ray tracing algorithm to use iterative loops, ray tracing can be parallelized on the GPU’s multiple cores and this results in a considerable gain in the rendering speeds of ray tracers.
May 31, 2014 by hgpu