Cellular Automata Global Illumination

September 2024 - Current day

CAGI


Overview

Roles Graphics programmer
Engine programmer
Duration~1 Year in my spare time~
PlatformWindows
EngineCustom-built from scratch
Team sizeSolo

Tools & Technologies

Languages & APIsC++, OpenGL, GLSL
ToolsRenderDoc, Nsight Graphics
WorkflowGit/GitHub
LibrariesImGUI, 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.

My progress so far