Abstract:
With the increasing availability of massively parallel processing capable GPUs in recent years, research on the acceleration of ray tracers has become popular again. Since the rays shot into the scene are independent of each other, ray tracing mechanism itself is naturally suited to parallelization. Until the last decade, ray tracing in the industry has been used for mostly o ine rendering and parallelization-based speed enhancements were accomplished by either shader programming on GPUs or distributed computer systems. Shaders are speci cly designed for rasterization and impose limitations for general programming. On the other hand, distributed computer clusters allow multiple computers to work concurrently over networks to increase speed; but maintaining such systems is not a ordable for the end user. Hopefully, modern GPUs and GPU general programming frameworks like Cuda and OpenCL will bring ray tracing to our personal computers and make it more feasible, faster and interactive in the near future. One of the major acceleration enhancement techniques in this context is the parallelization of the ray tracing process. This thesis focuses on e ciently parallelizing ray tracing and testing the raw computational power GPUs o er in terms of ray tracing. As our test bed, we have implemented two ray tracers with secondary ray capability that work on CPU and Nvidia Cuda supported GPU respectively. We then examined the dramatic performance gain of GPU parallelization along with various GPU speci c optimizations and their bene ts on di erent Cuda GPU architectures, compared to a CPU based ray tracer.