C++ / Vulkan / GLSL | Github Repository
I worked in a team of three to implement the paper Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields by Majercik et. al, as a final project for GPU Programming. This paper describes a method for approximating global illumination using "light field probes," many of which form an "irradiance field." Conceptually, these are spheres that capture the lighting information around them, representing the indirect lighting in the scene. When we actually pathtrace the scene, instead of bouncing each ray per pixel multiple times throughout the scene, we can reference the indirect lighting information already collected from the probes. Combined with direct lighting, this gives us global illumination in the scene at a relatively fast pace.
As Minecraft enthusiasts, we decided to put our own spin on the project by generating a procedural Minecraft scene, featuring a mushroom-filled cave. The scene is produced by grid marching, a form of raytracing implicit surfaces that has been adapted for our grid-based structures. We texture the scene procedurally as well.