Octree light propagation volumes are an extension to traditional light propagation volumes. The difference is that it uses a data structure based on octrees rather then a uniform grid. The technique, just like traditional light propagation volumes, aims to provide diffuse indirect illumination in real-time. Unlike many other techniques it supports fully dynamic scenes and light sources.

The development of the octree light propagation volumes was created as the master thesis project of my computer science M.Sc. degree. It was demonstrated in the form of a real-time implementation and a corresponding offline simulator. The real-time implementation was implemented using the C++ programming language with the help of OpenSceneGraph, osgCompute, CUDA, GLSL and CMake. It runs the complete technique in real-time on modern hardware and allows for a multitude of configuration options.

The simulator was implemented using the Java programming language and is focused towards conveniently visualizing the behavior of the technique and different variations to the algorithm used for light propagation.

Version 1.0 [2012-10-08] - Initial release.

The real-time implementation was implemented using C++ with OpenSceneGraph, osgCompute, NVIDIA CUDA, OpenGL GLSL and CMake.

The simulator was implemented using Java with EpsGraphics, JFreeChart, OpenCSV and Java3D VecMath.

Project report (.pdf)

Project presentation slides (.pdf)

Runtime demonstration video (YouTube)

Real-time implementation C++ source (.zip) (Don’t expect being able to build this. It’s only ever been build on Linux and requires some slightly modified OSG and osgCompute libraries to work. This is just provided in case anyone is interested. It also does not include the Crytek Sponza scene.)

Simulator Java source distribution (.zip)