In graduate school I took a 3D rendering class and wrote a ray tracing renderer in C++ using the Qt libraries for drawing. The class was great and I learned a lot, but sadly I did a poor job commenting my code, and was a little overzealous with my operator overloading. I also have not kept up on my C++ so reading through it now is like reading a foreign language. I have no idea where my algorithms came from and no idea how to add new objects to the environment or really manipulate anything.
So, 10+ years later I'm giving it another try only this time I'm going to try writing it in Go so I can take advantage of the parallel processing, memory management and profiling tools. I'm also specifically not taking shortcuts for the sake of clarity.
The ray tracer in the Soda Water folder is my independent attempt to build a ray tracer. I got part way through this project and realized that I was spending too much time re-deriving all of the math equations and decided to instead use a reference book.
The ray tracer in the Weekend folder is my attempt to build a ray tracer from the book Ray Tracing in a Weekend