CPU ray tracer using Montecarlo sampling and physically based rendering.
During this project I had to develop a fully-functional Montecarlo ray tracer in the CPU using C++ and minimal libraries. Firstly, we had to set up the ray throwing process, transforming each pixel in the resulting image into a direction in world space, then sampling the color of the hit and setting the image to that color. Once we had the basic framework, we had to start the bounce process and computing the diffuse color of the specified materials. Then, we started adding more material properties (specular and transmissive), loading more complex meshes and accelerating the ray tracing process with a K-D tree. Lastly, I had to research and develop the rendering of Julia sets (four dimensional fractals) by using ray marching.





