Global illumination with Voxel Cone Tracing in fully dynamic scenes using a 3D clipmap to support huge areas around the camera while maintaining a low memory footprint.
One bounce indirect illumination (diffuse + specular) with Voxel Cone Tracing (VCT)
Emission with VCT
3D Clipmap to support a huge area around the camera
Ambient Occlusion with VCT
Fully dynamic scenes
Build
CMake
Requirements: C++14 or later, OpenGL 4.4 or later
Supported (tested) Platforms:
Windows 8 and 10 (compiled with Visual Studio 2015+)
Ubuntu 18 (GCC 7.4.0, thanks to contributions of hchoi405)
Issues
No coverage based voxelization (anti-aliasing voxelization)
Leads to discrete indirect illumination changes when objects move
Hardly any performance optimizations
Noticeable indirect illumination changes when the camera moves (because a clipmap is used)
Perfect reflections aren't practical with VCT because the voxelized scene is only a rough approximation
Light leaking (VCT is just an approximation of cone tracing)
Screenshots
Relevant Sources
Crassin, Cyril, Fabrice Neyret, Miguel Sainz, Simon Green and Elmar Eisemann: Interactive Indirect Illumination Using Voxel Cone Tracing. In: Computer Graphics Forum, volume 30, pages 1921-1930. Wiley Online Library, 2011.
Engel, Klaus, Markus Hadwiger, Joe Kniss, Christof Rezk-Salama and Daniel Weiskopf: Real-Time Volume Graphics. A K Peters, 2006.
McLaren, James: The Technology Of The Tomorrow Children. Q-Games Ltd., Game Developers Conference, 2015.
Panteleev, Alexey: Practical Real-Time Voxel-Based Global Illumination For Current GPUs. NVIDIA, GPU Technology Conference, 2014.
Tanner, Christopher C, Christopher J Migdal and Michael T Jones: The Clipmap: A Virtual Mipmap. In: Proceedings of the 25th annual conference on Computer graphics and interactive techniques, pages 151-158. ACM, 1998.