Ray Tracer (Image Synthesis)

I built an offline ray tracer from scratch for my Image Synthesis class during the Spring 2016 semester. The implementation is based on the book, 'Ray Tracing from the Ground Up' by Kevin Suffern and professor Dr. Ergun Akleman's lectures. Developing the ray tracer from scratch let me gain in-depth knowledge on 3D Math concepts and Computer Graphics. Following are the results from some of the twelve weekly projects. The ray tracer was entirely built using C++ with all the features being incorporated into a single C++ project following object oriented design.

Texture mapping

Spherical and rectangular mapping

Normal map vs without normal map

Noise-based textures

3D Perlin noise - Turbulence function

Fractal sum

Fractional Brownian motion

Reflective surfaces

(recursion depth = 5)

Reflection influenced by normal map

Refraction

Transparent bunny

Change of refractive index

Distributed ray tracing
Depth of field
Soft shadows

(with area light)

Glossy reflection

(white sphere)

Camera painting

(controlled by an image)

Global Illumination

Global illumination with color bleeding

Ambient occlusion

(with infinite sphere)

Caustic-like reflection