An NEE + MIS path tracer, supports various BxDFs / Lights / Volumes and Monte Carlo effects.
Rough glass (alpha = 0.05) bunny with HDRI lighting
Rough glass bunny with Microfacet Conductor background
Disney Principled Bunny with Microfacet Conductor background
Left: Rough gold material, Right: Marschner Hair material
Cornell box with homogeneous fog, rendered with volumetric integrator.
This project uses CMake to build and is correctly built under M1 macOS environment. The C++ standard is set to C++ 20.
Once CMake is installed, use below commands to build with CMake.
This project uses OpenMP for parallization, for ARM Mac users, please refer to this [post][https://stackoverflow.com/questions/71061894/how-to-install-openmp-on-mac-m1] .
Add GL_SIMD to compile definition to enable SIMD (for vec and matrix class).
mkdir build
cd build
cmake ..
make .
- Unit tests are under
/testsfolder usingGTestframework.
-
The path tracer uses an importance sampling strategy, a mixed PDF of Material PDF and light sampling with NEE (next-event-estimation).
-
Other integrator includes
- Volumetric path tracer (only null-tracking for now. NEE WIP)
- An analytical calculation for Polygonal diffuse only lighting. (Ref. James Arvo)
- Russian Roulette version MIS, w./w.o. NEE
The path tracer supports DoF, motion blur. Image filtering and tone-mapping.
- Marschner Hair
- Phong
- Dielectric (Microfacet BxDF + simple dispersion approximation)
- Thin Dielectric
- This branch introduces a split-ray variant for noise reduction.
- Conductor (Microfacet BRDF, VNDF)
- Lambertian
- Kajiya-Kay
- Disney Principled BSDF (A mix of 2015 / 2012 impl.)
- .obj
- .fbx (WIP)
- Area light
- Sphere light
- HDRI (IBL)
- Halton Sampler
- Stratified Sampler
- Sobol Sampler (WIP)




