Smoother Blending of Lighting Samples ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter c Credits

Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Credits Menu

Enter Open URL (in new tab)
0:08Recap and set the stage for the day, proceeding with lighting
0:08Recap and set the stage for the day, proceeding with lighting
0:08Recap and set the stage for the day, proceeding with lighting
1:00Run the game to see our current lighting solution
1:00Run the game to see our current lighting solution
1:00Run the game to see our current lighting solution
4:48Milton feature request: Hide title bar
4:48Milton feature request: Hide title bar
4:48Milton feature request: Hide title bar
5:39Blackboard: Light Interpolation
5:39Blackboard: Light Interpolation
5:39Blackboard: Light Interpolation
11:50Blackboard: Weighted sampling of multiple lighting samples per voxel
11:50Blackboard: Weighted sampling of multiple lighting samples per voxel
11:50Blackboard: Weighted sampling of multiple lighting samples per voxel
16:35Run the game to see the lighting discontinuities
16:35Run the game to see the lighting discontinuities
16:35Run the game to see the lighting discontinuities
17:05handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() map the lighting sampling to the radial dimensions of the voxels
17:05handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() map the lighting sampling to the radial dimensions of the voxels
17:05handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() map the lighting sampling to the radial dimensions of the voxels
18:33Run the game to see the circular blending
18:33Run the game to see the circular blending
18:33Run the game to see the circular blending
19:15handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() constrain the lighting sampling to each voxel
19:15handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() constrain the lighting sampling to each voxel
19:15handmade_opengl.cpp: Make SumVoxelLight() in CompileZBiasProgram() constrain the lighting sampling to each voxel
24:49Run the game to see the constrained and sparse circular lighting
24:49Run the game to see the constrained and sparse circular lighting
24:49Run the game to see the constrained and sparse circular lighting
26:22handmade_opengl.cpp: Reduce the size of the voxels
26:22handmade_opengl.cpp: Reduce the size of the voxels
26:22handmade_opengl.cpp: Reduce the size of the voxels
27:08Run the game to see the denser lighting
27:08Run the game to see the denser lighting
27:08Run the game to see the denser lighting
30:38handmade_opengl.cpp: Try to set the surface reflectance directly to the lighting colour
30:38handmade_opengl.cpp: Try to set the surface reflectance directly to the lighting colour
30:38handmade_opengl.cpp: Try to set the surface reflectance directly to the lighting colour
31:08Run the game to see that we are not storing the lighting premultiplied
31:08Run the game to see that we are not storing the lighting premultiplied
31:08Run the game to see that we are not storing the lighting premultiplied
33:31handmade_opengl.cpp: Increase the size of the voxels
33:31handmade_opengl.cpp: Increase the size of the voxels
33:31handmade_opengl.cpp: Increase the size of the voxels
34:23Run the game to visualise the lighting sampling, and consider how to improve the voxel lookup scheme
34:23Run the game to visualise the lighting sampling, and consider how to improve the voxel lookup scheme
34:23Run the game to visualise the lighting sampling, and consider how to improve the voxel lookup scheme
40:09handmade_opengl.cpp: Make CompileZBiasProgram() only sum eight voxels
40:09handmade_opengl.cpp: Make CompileZBiasProgram() only sum eight voxels
40:09handmade_opengl.cpp: Make CompileZBiasProgram() only sum eight voxels
41:57Blackboard: Interpolating lighting between fewer voxels
41:57Blackboard: Interpolating lighting between fewer voxels
41:57Blackboard: Interpolating lighting between fewer voxels
43:38handmade_opengl.cpp: Make CompileZBiasProgram() sample from the centre of voxels
43:38handmade_opengl.cpp: Make CompileZBiasProgram() sample from the centre of voxels
43:38handmade_opengl.cpp: Make CompileZBiasProgram() sample from the centre of voxels
45:22Run the game to see the incorrect sampling
45:22Run the game to see the incorrect sampling
45:22Run the game to see the incorrect sampling
46:14Blackboard: Sampling from the centre of voxels
46:14Blackboard: Sampling from the centre of voxels
46:14Blackboard: Sampling from the centre of voxels
47:20handmade_opengl.cpp: Correctly make CompileZBiasProgram() offset the lighting sampling to the voxel centres
47:20handmade_opengl.cpp: Correctly make CompileZBiasProgram() offset the lighting sampling to the voxel centres
47:20handmade_opengl.cpp: Correctly make CompileZBiasProgram() offset the lighting sampling to the voxel centres
47:53Run the game to see the incomplete sampling
47:53Run the game to see the incomplete sampling
47:53Run the game to see the incomplete sampling
48:23handmade_opengl.cpp: Enable SumVoxelLight() in CompileZBiasProgram() to normalise the lighting samples in each voxel, and then interpolate between the voxels
48:23handmade_opengl.cpp: Enable SumVoxelLight() in CompileZBiasProgram() to normalise the lighting samples in each voxel, and then interpolate between the voxels
48:23handmade_opengl.cpp: Enable SumVoxelLight() in CompileZBiasProgram() to normalise the lighting samples in each voxel, and then interpolate between the voxels
56:27Run the game to see the square, yet incorrect blending
56:27Run the game to see the square, yet incorrect blending
56:27Run the game to see the square, yet incorrect blending
57:43handmade_opengl.cpp: Correctly compute VoxF
57:43handmade_opengl.cpp: Correctly compute VoxF
57:43handmade_opengl.cpp: Correctly compute VoxF
59:27Run the game to see the stable, bilinearly filtered lighting
59:27Run the game to see the stable, bilinearly filtered lighting
59:27Run the game to see the stable, bilinearly filtered lighting
1:01:22handmade_opengl.cpp: Make SumVoxelLight() modulate the voxel's lighting by a contribution value
1:01:22handmade_opengl.cpp: Make SumVoxelLight() modulate the voxel's lighting by a contribution value
1:01:22handmade_opengl.cpp: Make SumVoxelLight() modulate the voxel's lighting by a contribution value
1:03:21Run the game to see the modulated lighting
1:03:21Run the game to see the modulated lighting
1:03:21Run the game to see the modulated lighting
1:03:51handmade_platform.h: Reduce the size of the voxels
1:03:51handmade_platform.h: Reduce the size of the voxels
1:03:51handmade_platform.h: Reduce the size of the voxels
1:04:20Run the game to see the light blending
1:04:20Run the game to see the light blending
1:04:20Run the game to see the light blending
1:04:45handmade_opengl.cpp: Play with the contribution computation
1:04:45handmade_opengl.cpp: Play with the contribution computation
1:04:45handmade_opengl.cpp: Play with the contribution computation
1:06:23Run the game and consider adding directional information to the voxels
1:06:23Run the game and consider adding directional information to the voxels
1:06:23Run the game and consider adding directional information to the voxels
1:09:56handmade_platform.h: Consider the possibility of shrinking the lighting data
1:09:56handmade_platform.h: Consider the possibility of shrinking the lighting data
1:09:56handmade_platform.h: Consider the possibility of shrinking the lighting data
1:12:18handmade_platform.h: Add D (direction) to the lighting_textures struct
1:12:18handmade_platform.h: Add D (direction) to the lighting_textures struct
1:12:18handmade_platform.h: Add D (direction) to the lighting_textures struct
1:14:32handmade_opengl.cpp: Introduce a DSampler
1:14:32handmade_opengl.cpp: Introduce a DSampler
1:14:32handmade_opengl.cpp: Introduce a DSampler
1:23:12Run the game to see that everything is black
1:23:12Run the game to see that everything is black
1:23:12Run the game to see that everything is black
1:23:31handmade_render_group.cpp: Determine to enable the lighting scheme to use the lighting directions
1:23:31handmade_render_group.cpp: Determine to enable the lighting scheme to use the lighting directions
1:23:31handmade_render_group.cpp: Determine to enable the lighting scheme to use the lighting directions
1:27:38handmade_render_group.cpp: Read LightingTest() and determine that it is incorrect
1:27:38handmade_render_group.cpp: Read LightingTest() and determine that it is incorrect
1:27:38handmade_render_group.cpp: Read LightingTest() and determine that it is incorrect
1:34:44handmade_render_group.cpp: Reorganise LightingTest()
1:34:44handmade_render_group.cpp: Reorganise LightingTest()
1:34:44handmade_render_group.cpp: Reorganise LightingTest()
1:42:56Run the game to see our lighting looking roughly the same
1:42:56Run the game to see our lighting looking roughly the same
1:42:56Run the game to see our lighting looking roughly the same
1:43:49handmade_render_group.cpp: Add IncidentLight and AverageDirectionToLight to the lighting_element
1:43:49handmade_render_group.cpp: Add IncidentLight and AverageDirectionToLight to the lighting_element
1:43:49handmade_render_group.cpp: Add IncidentLight and AverageDirectionToLight to the lighting_element
1:47:18Close the stream as normal
1:47:18Close the stream as normal
1:47:18Close the stream as normal