A physically based monte carlo hobby path tracer written in C++17. Architected to support scenes with millions of instances. Currently only renders Disney's Moana Island scene, but support will be included for other PBRT and USD scenes.
Currently for personal use only.
- Solid angle sampling of spherical rectangle area lights
- Multi-level instancing
- N-wide BVH with quantized bounding boxes, compressed pointer info, and SIMD intersection tests
- Adaptive tessellation and displacement of Catmull-Clark subdivision surfaces
- Hit sorting for more coherent texture accesses
- Ray differentials
- Spectral rendering support
- Custom job stealing system, loosely based on Taskflow
- B-spline curves
- Direct illumination solution based on Disney's Cache Points system
- Complex integrators (BDPT, Metropolis, VCM, UPBP)
- Volumetric rendering
- Manifold next event estimation
- Motion blur
- Adaptive sampling
- Full USD and PBRT support
- Practical path guiding
- OpenUSD
- Ptex
- STB
NOTE: Currently missing curves and one of the trees.
Rendered in 153 seconds, 1920x804, 64 spp on Intel 24-core
Includes papers, blogs, books, and other links that were helpful.
- Importance Sampling of Many Lights with Adaptive Tree Splitting
- Cache Points for Production-Scale Occlusion-Aware Many-Lights Sampling and Volumetric Scattering
- Watertight Tessellation using Forward Differencing
- Feature Adadptive GPU Rendering of Catmull-Clark Subdivision Surfaces
- Efficient Ray Tracing of Subdivision Surfaces using Tessellation Caching