Achieving Real Time Ray Tracing Effects Through GPGPU Acceleration
Matthew Vucurevich
Faculty Advisor: Camillo Taylor
Project Report || Project Poster

Abstract: Simulate the effects of ray tracing by implementing techniques to render Lighting, Shadows, and Reflections through GLSL

The computer graphics industry has recently become one of the most influential stimuli for the production of faster and more advanced ASICs.  GPU’s have made their presence known as performance enhancements in your home computer as well as the primary component of video game consoles.  They are recently emerging as a very important part of handheld devices (laptops, cell phones, i-pods) and their usefulness will only continue to grow.  One could argue that computers are fast enough as is to run 99% of our non-graphical daily needs, but improvements in the GPU industry have been a driving force leading to improvements in the CPU industry as well.  One major reason to upgrade to a more resource heavy OS such as Windows Vista is its ability to support Direct-X 10 graphics.  As the demand for the GPU industry grows, research in this area becomes that much more important.

The current direction of GPU hardware has allowed for a certain amount of computational abstraction allowing functionality that is different from the traditional graphics pipeline.  This new approach allows for individual programmability in two of its most important stages.  Vertex and fragment shaders can now be given unique sets of instructions to execute in order to fully exploit the true level of data parallelism that is available in a GPU.   Many languages have been developed to allow customization that is close to assembly language in scope, but with a clearer structure.  Nvidia and Microsoft developed the Cg (C for graphics) programming language allowing individual programming of vertex and pixel shaders, and other languages include ARB low level assembly language, OpenGL shading language (GLSL), and DirectX High-Level Shader Language (HLSL). NVidia’s CUDA technology (Compute Unified Device Architecture) focuses specifically on the potential programmable GPU shader blocks have to solve complex computational problems from a variety of different applications, and has its own Toolkit to develop in this environment. 

The programmability of this newer generation of GPU’s will allow complex functionality such as ray tracing image generation algorithm to take advantage of the GPU pipeline despite the fact that its approach to processing elements of the image is completely opposite of the traditional graphics pipeline.  For this project, I utilize the programmability of the vertex and fragment shaders of modern GPU’s to implement a real time ray tracing effect through the help of programmable GPU hardware.  Graphical Processing Units no matter the approach will all share qualities that differ greatly from their CPU counterparts.  GPU’s can be improved simply by adding more vertex/pixel/shader processors because all graphics pipelines can parallelize most of their calculations.  CPU’s generally operate on sequential code making the cost/benefit ration of adding extra transistors much higher.  With this project I hope to demonstrate the power of parallelism in GPU shader processers as well as produce a deliverable that could be used as an effects enhancement for modern video games.