How I made my first path tracer from scratch in Rust for a University course. Explains how I went from basic naïve path tracing to explicit light sampling and BRDF importance sampling. I also added different materials such as dielectrics (glass) with caustics and metals. Finally, I added anti-aliasing, a bounding volume hierarchy (BVH), environment lights, .obj model loading and texture support.