Overview
Roles |
Graphics programmer Engine programmer |
Duration | ~1 Year in my spare time~ |
Platform | Windows |
Engine | Custom-built from scratch |
Team size | Solo |
Tools & Technologies
Languages & APIs | C++, OpenGL, GLSL |
Tools | RenderDoc, Nsight Graphics |
Workflow | Git/GitHub |
Libraries | ImGUI, MagicaVoxel loader |
Project Overview
CAGI (Cellular Automata Global Illumination) is a technique that is aiming at computing approximations of diffuse light bounces into the scene by only using cellular automata. I have been working and researching this method in my spare time as well as during the self study hours during my university course.
Goals and motivations
- Achieving a high performance global illumination solution that will enable good looking lighting on lower end devices
- This technique was never properly documented anywhere, and I wish to proceed further with my studies doing a master with researching and applying CAGI
- Trying to prove that the overly used ray tracing methods and probe methods are not the only solutions out there
- Aiming at getting an ideal “infinite bounces” feel in a noise free environment
Biggest obstacles
- Memory management since cellular automata ideally requires dense grids in order to compute
- Managing light directionality and shadow propagation
- Balancing light propagation speed and performance
End Goal
- The end goal with this research is to have a working pipeline that will voxelize the scene in real time around the player in a 3D world, use CAGI to compute the nearby light calculations and sample the volume to shade the rendered meshes.