- Physically based renderer
- PBRT and OBJ scenefiles
- Lambertian, glossy, ideal specular, and microfacet (GGX) BSDFs
- Multiple importance sampled environment maps (alias method)
- Wavefront path tracing at interactive framerates
- Two implementations, one tuned for latency and the other for throughput
- Optimized structure of arrays data layout
- Efficient BVH with spatial splits
- OptiX AI denoiser (on supported NVIDIA hardware)
- Requires OptiX 7, CUDA 10.1+, driver 435.80+
- Supports a wide variety of systems
- Cross-platform (Windows, MacOS, Linux)
- NVIDIA, AMD and Intel GPUs and CPUs
- CPU debugging with Intel's OpenCL SDK
- Nanogui-based user interface
- Uses only modern OpenGL (3.3+)
- Uses CLT for convenience and robustness
Rename settings_default.json to settings.json. Modify to set default OpenCL device, render scale, window dimensions etc.
Key | Action |
---|---|
W / A / S / D | Move camera (up/down with R/F) |
Mouse left | Look around |
Mouse right | Pick DoF focal depth (after setting aperture size) |
Scroll Up / Down | Adjust movement speed |
Space | Place area light |
F1 | Reset camera |
F2 | Save camera/area light state |
F3 | Load saved state |
F5 | Export image |
F6 | Toggle OptiX Denoiser (if built) |
H | Toggle light sources (environment/area/both) |
I / K | Adjust max bounces |
Z / X | Adjust environment map emission |
L | Open scene selector |
M | Switch sampling mode |
U | Toggle UI |
Page Up / Down | Adjust area light emission |
1-5 | Select scene 1-5 (if set in settings.json) |
7 | Switch metween microkernel/wavefront |
8 / 9 | Change area light size |
, / . | Change FOV |
See the build instructions.
Source code and resources provided under the MIT LICENSE, unless otherwise specified.