Geoff Garsson's Portfolio
Graphics and Gameplay Engineer
Raytracer Demo

In Fall of 2021, I took it upon myself to make a ray tracer using just C++. No graphics libraries. Suffice to say, I succeeded.
Mentored by a senior graphics engineer at Bungie, and Professor Charlie Roberts of WPI, I learned the ins-and-outs of ray-tracing techniques. This included intersections tests and reflections.
​
If you're interested to see the code I made, you can find it here on my Github.
If you're interested in learning the raytracing process yourself, I suggest using Scratchapixel.com.
Why didn't I use a graphics library?
As many graphics engineers may know, the ray tracing process is extremely expensive. Even a small, simplistic image will take longer than the traditional rasterization process. The tradeoff, of course, is much more accurate images (see the video on the right an example of rasterization vs raytracing with the most recent tech).

In order to get a proper appreciation for the difference in speed, I opted not to use a graphics API such as OpenGL. Instead, I wrote each pixel individually to a .ppm file and viewed the image using GIMP. It went about as slow as you can image.
For example, on the left, it would take at least 12 seconds to render 5 spheres (1 reflective) and 4 lights with a simplistic setup. The image at the top of this page takes 21 seconds. And this is per image. The next time you speak to anyone who works at Nvidia or AMD, thank them for making hardware that makes this seem pointless.
Results

By the time of the project's end, I successfully implemented the intersection tests for spheres, as well as implementing lighting and reflections. I could render a small scene with several spheres in it, to any pixel size that I wanted.

While I was unable to continue the project due to time constraints, this was still an excellent way to learn the ray tracing process and get an understanding of why such methods of rendering were impractical until the hardware could catch up. I intend on pursuing the topic further in potential future projects, including new progressions in the technology such as path tracing.
Special thanks to Bruce Tartaglia and Prof. Charlie Roberts of WPI for the
assistance and mentorship during the project. I had an absolute
blast learning about the topic.
​
Additional thanks to the Scatchapixel.com folks for providing clear and succinct
explanations of the ray tracing process. You guys are awesome.