Abstract

Pioneered by the works of Whitted and Appel, ray tracing has become a standard format for image rendering. Ray tracing is a very accurate mathematical calculation of light and color, but is a very slow process. The question becomes how can researchers combine the speed of GPU calculations with the rendering

quality of ray-tracing? The focus of this research is to solve this question. Our research will test the effectiveness of decreasing render times by mplementing a full GPGPU ray trace renderer with recursive ray casting.

The purpose of this study is to test the speed of brute force ray tracing calculation on the GPU versus the optimized ray tracing capabilities of a production quality renderer. Specifically, how much faster, if at all, can the GPU speed up rendering.

For this study the author created two renderers, a CPU renderer and a GPU renderer, written in C++ and CUDA respectively. The author written renderers are implemented without spatial partitioning or ray-object prediction algorithms. The rendering speed of the CPU, GPU and Mental Ray renderers were tested in two scene groups with the first group containing one scene and the second group containing three scenes. The first test scene contains a 5 sided box of 10 triangles and 48 spheres. The second group of scenes contains the same box of 10 triangles with an expanding set of objects. The first, second and third scenes contain 900, 10000 and 30000 objects, respectively. All renderers generated 25 frames per scene. The average time for renders was compared for each test. Each renderer was tested on multiple hardware devices.

The GPU renderer outperformed both the author written CPU renderer and the Mental Ray renderer in both tests. In the first test scene, the average render times for the GPU, CPU and Mental Ray renderers were 988.94, 75246.3, and 6007.067 milliseconds, respectively. For the second group of test scenes of 900, 10000 and 30000 objects the author written GPU renderer outperformed Mental Ray in speed of rendering. Due to the spatial partitioning algorithm in Mental Ray, the GPU renderer out performed by smaller amounts as the number of rendered objects increased. It is believed that at a large enough number of rendered objects the parallel nature of the GPU will fail in comparison to the spatial partitioning algorithms in Mental Ray.

Keywords

CUDA, RAY TRACING, GPGPU

Date of this Version

4-30-2010

Department

Computer Graphics Technology

Department Head

Marvin Sarapin

Month of Graduation

May

Year of Graduation

2010

Degree

Master of Science

Head of Graduate Program

Dr. James Mohler

Advisor 1 or Chair of Committee

Dr. Bedrich Benes

Committee Member 1

Eliot Mack

Committee Member 2

Dr. James Mohler

Committee Member 3

Dr. Bedrich Benes

Share

COinS