This is an implementation of ssloy/tinyraytracer, in Rust. It doesn't follow the same code style but each step should be roughly equal. Also I used two famous libraries, image for creating the image and writing it on disk, and, glam for vector algebra.
- Step 1 Write an image to disk
- Step 2, Commit 1, Commit 2, Commit 3, The crucial one: ray tracing
- Step 3 Add more spheres
- Step 4 Lighting
- Step 5 Specular lighting
- Step 6 Shadows
- Step 7 Reflections
- Step 8 Refractions
- Step 9 Beyond the spheres
I stopped at Step 9, after which there is a take home assignment, but I think I got quite a bit of insight already.