I made a Monte Carlo Ray Tracer for the course TNCG15, Advanced Global Illumination and Rendering at Linköping University. I worked on this project individually and it is written from scratch in C++. However I use the library KdTree++ to store photons in a Kd tree structure.
The renderer uses a Monte Carlo integration method to solve the rendering equation for global illumination and can produce caustics by photon mapping.
Here are some rendered images: