Index

In this project, I followed the instruction and gradually implemented the required function in ray tracing. The main programming language is C++, and OPENGL and GLUT are utilized to simulate the scene and object.

  1. Shading
  2. Shadows
  3. Reflections and Refractions
  4. Triangular Meshes
  5. Space Partitioning
  6. Textures
  7. Antialiasing
  8. Depth of Field
  9. Soft Shadows and Glossy Surfaces
  10. Monte Carlo
  11. Path Tracer
  12. Photon Mapping
  13. Final Project

Shading

Generate shading effect according to the positions of lights and type of material of object.

Source code on Github Original figure
Input Output

Shadows

Add ray traced shadows to ray tracer system.

Source code on Github Original figure
Input Output

Reflection

Add reflection and refraction effect.

Source code on Github Original figure
Input Output

Triangular Meshes

Add plane and triangular mesh object types to the ray trace system.

Source code on Github Original figure
Input Output
Rendering time:0:04:29

Space Partitioning

Add bounding volume hierarchy (BVH) support to accelerate rendering.

Source code on Github Original figure
Input Output
Rendering time:0:00:04

Textures

Add textures to objects as well as background and reflection/refraction environment images

Source code on Github Original figure
Input Output

Antialiasing

Implement adaptive antialiasing with multiple samples per pixel. Comparing to the above output, the backgroud is not crazy now and looks smoother.

Source code on Github Original figure
Input Output

Depth of Field

add depth of field support

Source code on Github Original figure
Input Output

Soft Shadows and Glossy Surfaces

Implement soft shadows for area lights and glossy reflections and refractions.

Source code on Github Original figure
Input Output

Monte Carlo GI

Using Monte Carlo sampling for indirect/global illumination with a single bounce.

Source code on Github Original figure
Input Output

Path Tracer

Implement path tracing and gamma correction.

Source code on Github Original figure
Input Output

Photon Mapping

Using Monte Carlo sampling for indirect/global illumination with a single bounce.

Source code on Github Original figure
Input Output

Final Project

Build own scene and apply rendering on it.

Source code on Github Original figure
Input Output