Path Tracer with multi sampling technics

Overview

How to run

1. Clone and build

git clone git@github.com:bwzhao/RayTracer.git
git submodule update --init --recursive
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8

2. Running

Right now there are two examples:

  1. Forward path tracing for a Cornell Box.
  2. Bidirectional path tracing for a Cornell Box with reversed directions of light.

Features:

  • Lighting:

    • area light
    • point light
    • multi light source
  • Integrator:

    • path tracing
    • bidirectional path tracing
    • metropolis light transport
  • Primitives:

    • triangle
    • mesh triangle
    • circle
    • rectangles
    • sphere
  • Texture type:

    • pure color
    • image
    • noise
  • Material type:

    • Lambertian
    • metal
    • dielectric
    • constant medium
  • Obj loader

  • BVH structure

Appendix