- 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.