[0:08][Recap and set the stage for the day, proceeding with lighting]
[1:00][Run the game to see our current lighting solution]
[4:48][Milton feature request: Hide title bar]
[5:39][Blackboard: Light Interpolation]
[11:50][Blackboard: Weighted sampling of multiple lighting samples per voxel]
[16:35][Run the game to see the lighting discontinuities]
[17:05][handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() map the lighting sampling to the radial dimensions of the voxels]
[18:33][Run the game to see the circular blending]
[19:15][handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() constrain the lighting sampling to each voxel]
[24:49][Run the game to see the constrained and sparse circular lighting]
[26:22][handmade_opengl.cpp: Reduce the size of the voxels]
[27:08][Run the game to see the denser lighting]
[30:38][handmade_opengl.cpp: Try to set the surface reflectance directly to the lighting colour]
[31:08][Run the game to see that we are not storing the lighting premultiplied]
[33:31][handmade_opengl.cpp: Increase the size of the voxels]
[34:23][Run the game to visualise the lighting sampling, and consider how to improve the voxel lookup scheme]
[40:09][handmade_opengl.cpp: Make CompileZBiasProgram() only sum eight voxels]
[41:57][Blackboard: Interpolating lighting between fewer voxels]
[43:38][handmade_opengl.cpp: Make CompileZBiasProgram() sample from the centre of voxels]
[45:22][Run the game to see the incorrect sampling]
[46:14][Blackboard: Sampling from the centre of voxels]
[47:20][handmade_opengl.cpp: Correctly make CompileZBiasProgram() offset the lighting sampling to the voxel centres]
[47:53][Run the game to see the incomplete sampling]
[48:23][handmade_opengl.cpp: Enable SumVoxelLight() in CompileZBiasProgram() to normalise the lighting samples in each voxel, and then interpolate between the voxels]
[56:27][Run the game to see the square, yet incorrect blending]