An EXPERIMENTAL and unfinished Voxel Path Tracing Engine which has an emphasis on performance and graphics. This engine was mostly made as an experiment and a tool to help me learn more about light transport, physically based rendering, volumetrics and intersection algorithms. This engine was coded from scratch using C++17 and the modern OpenGL programmable pipeline (specifically, OpenGL 4.5+ and GLSL version 430+).
This project has (mostly) been abandoned and new big features will not be worked on anytime soon. I intend to rewrite a voxel tracing engine in the future with much cleaner code/syntax and with newer and better acceleration structures so that larger and more detailed worlds can be rendered performantly!
- Voxel Ray Casting (using the DDA algorithm)
- Manhattan distance field acceleration structure (Distance field generated using compute shaders on the GPU, so it can be generated dynamically.)
- Deferred rendering pipeline
- Direct lighting based on the Cook torrance BRDF
- Path traced lighting (Direct shadows, Global Illumination, Rough/Smooth reflections and Ambient Occlusion)
- Spherical harmonic projection for indirect lighting for detailed lighting
- (Approximate) Screenspace Subsurface Scattering
- Dynamic semi-realistic atmosphere/sky rendering
- Temporal Denoiser (used for Pathtraced Lighting, Volumetric Clouds and Antialiasing)
- Screenspace Spatial Denoiser (SVGF, Atrous, Gaussian and other specialized denoisers for direct shadow/reflections)
- AO : SSAO
- Misc : DOF, Bloom, Bloom spikes, Lens flare, Chromatic aberration, Basic SS god rays, night stars and nebula
- Image : Contrast Adaptive Sharpening (Based on AMDs work.)
- Anti Aliasing : FXAA, TXAA/TAA-U
- Other Effects : Tonemapping, Gamma correction, color dithering, color grading, purkinje effect, film grain
- Volumetric Clouds
- LPV for volumetrics from light sources (will be used for distant lighting or performant second bounce gi in the future)
- Basic Particle system
- 3D Sound
- Material/Block database system (with around 100 block types with 512x512 textures (Albedo, normals, metalness, roughness, indirect occlusion & displacement))
- Procedural Terrain Generation (Plains, superflat)
- World saving/loading
- Minecraft world loading
- Histogram based auto exposure
- Anisotropic raytraced reflections (for materials such as brushed metal, based on Disney Principled BRDF)
- Glass/water with stochastic refractions
- Worldspace MIS
- 30 FPS on a Vega 11 iGPU (on the Low preset)
- 90-100 FPS on an RTX 3050 GPU (on the Low preset, achieves 75 FPS on the medium preset)
- This project is still very experimental, it is not a finished product as of yet.
- This engine has NOT been tested on Intel GPUs/iGPUs.
- This engine requires OpenGL 4.5+, if the window fails to initialize, then there is a good chance that your GPU does not support the required OpenGL version.
- If you want to report an issue/bug, then you can contact me on discord or, alternatively, via email. (See github profile page)
- See
Controls.txt
for the controls (Or look at the console when you start up the program.) - You can download a release from the RELEASES tab. (Make sure to read the notes before launching the engine)
- MIT License. (See LICENSE in repository)
This project is purely educational. I own none of the assets. All the rights go to their respective owners.
If you'd like to support this project, consider starring it. Thanks!