Ray Tracing


Ray Casting

As a first step toward a full featured ray-tracer, handle the intersection with sphere, box, cylinder and triangle objects.


Read and parse the scene described in the text file, build an internal representation of the scene, ray-cast it, and output the final image into an HDR image file.


Using spatial data structure, BVH, could've accelerate the calculation of a ray's intersection with a collection of objects. Moreover, I used OpenMP to parallelize the main loop. 

Path Tracing

From the camera in the scene, shoot a ray and iterate it through a series of bounces, recording and returning any light found.

I used simple BRDF(Bidirectional Reflection Distribution Function), Lambertian diffuse surface.


From the Path trace above, just added to calculate outgoing light.

Moreover, I learned how to calculate the 3 different types of BRDF, which is Phong, GGX and Beckman. The easiest was Phong, but recently, graphics has been trending toward GGX method.


Texture Mapping


Depth Of Field