Software Ray Tracer
This software raytracer was made for the Graphics Programming 1 course. It is written in C++ and uses SDL.
The program itself runs relatively slowly since everything is calculated on the CPU side, but it taught me the basics of how
raytracing actually works. It taught us some basic hit detection on various types of geometry, with triangles being the most important.
While working on this, I discovered the
Möller-Trumbore intersection algorithm,
a noteworthy improvement. Of course, shading was needed, and I implemented several techniques such as Lambert shading, Phong shading, Trowbridge-Reitz GGX,
Schlick GGX, Fresnel, and Smith. I also added shadows, which had a significant impact on the performance of the raytracer,
as you can see in the gif.
I implemented a small amount of threading to further improve its performance.