The Project

We developed this project in order to learn about and explain the concepts in software and emerging technologies in hardware that drive increasingly realistic computer graphics.

Inspired by our affinity for computer games and appreciation of realistic computer graphics, we sought to learn about how those graphics are created as well as the hardware that enables them, specifically focusing on ray tracing. We believed that the background in computer architecture and CPU design that we had acquired throughout the semester would guide us to better understanding how graphics processing units functioned.

We began by investigating the graphics pipeline and creating our own high-level software simulation of the pipeline. Though that the high level, single threaded Python simulation did not directly mimic the behavior of the hardware inside a graphics processing unit, it provided us with a working knowledge of computer graphics and showed us the computations necessary in the graphics pipeline and the need for massive parallelism in graphics processing units. Equipped with this knowledge, we now apprehended the reasoning behind the structure of the modern graphics pipeline. Though we considered implementing a SIMD unit in Verilog as well as building a more hardware-realistic software simulation of the graphics pipeline, the shear volume of brainless copy-and-paste required made us re-evaluate our learning goals at this point in the project and instead try to move in a new direction.

Realizing that NVIDIA had only recently revealed its new Turing architecture complete with an RT (ray tracing) core that could perform real-time ray tracing, we were inspired to learn about the different computer graphics approach taken by ray tracing and the challenges that made it so difficult to perform in real-time. As a result, we redirected our efforts in favor of a research project that not only traces through the information regarding the traditional raster graphics pipeline but also the development in the heavily realism oriented ray tracing world. We hope that our work, including our website and poster sessions during the final and Olin Expo, will provide helpful educational content regarding computer graphics, parallel programming, and parallel hardware to community members. This knowledge could point them in a direction to consider computer architecture as a good introduction to the inner working of this computationally expensive subject if they are interested.

We dedicated our time to researching as much as possible about the project, spending most of our meetings discussing our findings in order to better digest the material. The wide range of textbooks, industry documents, and research paper we looked through is available under the resource page had provided deep insights to us and hopefully will offer more leads for the visitors of our page.

Extensions

We intend for our project to assimilate the work on the graphics pipeline and the current state of ray tracing well enough that any Computer Architecture students can understand the topics with ease.

Along this vein, we believe that there are a few possible extensions of our project. First, one could continue to build upon our Python simulation, found on Github, in order to make it more hardware-realistic by building more instruction and data level parallelism into it and attributing some cost in area, performance, and energy to each of the computations it performs. Second, one might construct a Verilog simulation of the graphics pipeline and perhaps even of a ray tracing pipeline. Third, one could build upon and continue our research, perhaps with a specific focus on denoising images after ray tracing or on increasing the efficiency of current ray tracing methods.

The Details

Explore our Project on Ray Tracing

Raster Graphics

We began with a foray into the world of computer graphics.

Ray Tracing

We focused on ray tracing and the modern technologies that make it possible in real-time.

GPU Design

We maintained a connection to computer architecture by investigating the structure of modern GPU design.

Resources

We explored a myriad of sources in order to gain an accurate understanding of each component of our project.