Recently I have been creating a path tracer, available to download on github.
It initially started out by following the excellent Ray Tracing in One Weekend series by Philip Shirley.
I then extended it to support:
- triangle primitives to allow the loading of obj meshes
- ability to scale primitives and rotate around x-axis
- PBR material
- Anisotropic Phong material
- Beer-Lambert law support to dielectric material
- multi-threading and SSE instructions
- Jittering support to reduce noise.
The next step is to implement an algorithm for bidirectional path tracing which will allow for the convergence of high quality images more quickly.