- Physically based renderer
- OBJ + MTL scenefiles
- Lambertian, glossy, ideal specular, and rough specular (GGX) BSDFs
- Multiple importance sampled environment maps (alias method)
- Wavefront path tracing at interactive framerates
- Optimized structure of arrays data layout
- Efficient BVH with spatial splits
- OptiX AI denoiser (on supported NVIDIA hardware)
- 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+)
- Drag and drop scene files and environment maps
- Custom kernel class with several convenience features
- Kernel arguments set by name (not by idx)
- Supports conservative recompilation when preprocessor definitions change
- Kernel binaries cached for massive speedup
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 |
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 |
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 micro-/megakernel |
8 / 9 | Change area light size |
, / . | Change FOV |
See the build instructions.
See the LICENSE file for license rights and limitations (MIT).