Finishing Debugging Volume Textures
?
?
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Keyboard Navigation
Global Keys
[, < / ], > Jump to previous / next episodeW, K, P / S, J, 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 CreditsIn-Menu Movement
a
w
s
s
d
h
j
k
l
←
↑
↓
↓
→
Quotes and References Menus
Enter Jump to timecodeQuotes, References and Credits Menus
o Open URL (in new tab)Filter Menu
x, Space Toggle category and focus nextX, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Credits Menu
Enter Open URL (in new tab)⏫
Previous: 'Starting to Debug Volume Textures'
⏫
0:03Recap and set the stage for the day
0:03Recap and set the stage for the day
0:03Recap and set the stage for the day
0:38Fix the monitor's colour
0:38Fix the monitor's colour
0:38Fix the monitor's colour
1:55Resume our investigations into the volume texture lookup
1:55Resume our investigations into the volume texture lookup
1:55Resume our investigations into the volume texture lookup
4:46Determine to use structured art to verify that we are transmitting the correct values
4:46Determine to use structured art to verify that we are transmitting the correct values
4:46Determine to use structured art to verify that we are transmitting the correct values
7:58handmade_render_group.cpp: Make OutputLightingTextures() write a monotonically increasing value into the lookup sampler
7:58handmade_render_group.cpp: Make OutputLightingTextures() write a monotonically increasing value into the lookup sampler
7:58handmade_render_group.cpp: Make OutputLightingTextures() write a monotonically increasing value into the lookup sampler
10:30handmade_opengl.cpp: Make CompileZBiasProgram() use that value directly
10:30handmade_opengl.cpp: Make CompileZBiasProgram() use that value directly
10:30handmade_opengl.cpp: Make CompileZBiasProgram() use that value directly
13:12handmade_render_group.cpp: Temporarily disable OutputTextureDebug()
13:12handmade_render_group.cpp: Temporarily disable OutputTextureDebug()
13:12handmade_render_group.cpp: Temporarily disable OutputTextureDebug()
13:55Run the game and see nothing
13:55Run the game and see nothing
13:55Run the game and see nothing
15:03handmade_world_mode.cpp: Prevent UpdateAndRenderWorld() from calling OutputLighting()
15:03handmade_world_mode.cpp: Prevent UpdateAndRenderWorld() from calling OutputLighting()
15:03handmade_world_mode.cpp: Prevent UpdateAndRenderWorld() from calling OutputLighting()
16:32Run the game and hunt for a key binding to capture a frame
16:32Run the game and hunt for a key binding to capture a frame
16:32Run the game and hunt for a key binding to capture a frame
18:53Capture a frame and see that the lookup sampler contains all 0
18:53Capture a frame and see that the lookup sampler contains all 0
18:53Capture a frame and see that the lookup sampler contains all 0
20:18Run the game, run PushLighting() and capture a frame to see our expected values in the lookup sampler
20:18Run the game, run PushLighting() and capture a frame to see our expected values in the lookup sampler
20:18Run the game, run PushLighting() and capture a frame to see our expected values in the lookup sampler
21:55handmade_render_group.cpp: Make OutputLightingTextures() set the fragment shader's lighting texels and colour to known values
21:55handmade_render_group.cpp: Make OutputLightingTextures() set the fragment shader's lighting texels and colour to known values
21:55handmade_render_group.cpp: Make OutputLightingTextures() set the fragment shader's lighting texels and colour to known values
25:16Capture a frame, but find that the compiler has optimised out the lighting texels and colour
25:16Capture a frame, but find that the compiler has optimised out the lighting texels and colour
25:16Capture a frame, but find that the compiler has optimised out the lighting texels and colour
26:33handmade_opengl.cpp: Investigate why the texelFetch in CompileZBiasProgram() is not using our structured art, with a few words on graphics programming
26:33handmade_opengl.cpp: Investigate why the texelFetch in CompileZBiasProgram() is not using our structured art, with a few words on graphics programming
26:33handmade_opengl.cpp: Investigate why the texelFetch in CompileZBiasProgram() is not using our structured art, with a few words on graphics programming
31:13handmade_opengl.cpp: Verify VoxP in CompileZBiasProgram() by colouring the voxels by their address
31:13handmade_opengl.cpp: Verify VoxP in CompileZBiasProgram() by colouring the voxels by their address
31:13handmade_opengl.cpp: Verify VoxP in CompileZBiasProgram() by colouring the voxels by their address
32:21Run the game to see our colour-coded representation of the voxel lookup
32:21Run the game to see our colour-coded representation of the voxel lookup
32:21Run the game to see our colour-coded representation of the voxel lookup
33:10handmade_opengl.cpp: Make CompileZBiasProgram() set the colour from the VoxP after flooring
33:10handmade_opengl.cpp: Make CompileZBiasProgram() set the colour from the VoxP after flooring
33:10handmade_opengl.cpp: Make CompileZBiasProgram() set the colour from the VoxP after flooring
33:41Run the game to see that this is still as expected
33:41Run the game to see that this is still as expected
33:41Run the game to see that this is still as expected
34:48handmade_opengl.cpp: Make CompileZBiasProgram() perform texelFetch() on our verified values
34:48handmade_opengl.cpp: Make CompileZBiasProgram() perform texelFetch() on our verified values
34:48handmade_opengl.cpp: Make CompileZBiasProgram() perform texelFetch() on our verified values
36:59Run the game and still see black
36:59Run the game and still see black
36:59Run the game and still see black
37:28Consult the OpenGL Shading Language Specification for texelFetch()1
37:28Consult the OpenGL Shading Language Specification for texelFetch()1
37:28Consult the OpenGL Shading Language Specification for texelFetch()1
44:08handmade_opengl.cpp: Initialise LightI as a uint, and continue to wonder why we are not successfully fetching from the LookupSampler
44:08handmade_opengl.cpp: Initialise LightI as a uint, and continue to wonder why we are not successfully fetching from the LookupSampler
44:08handmade_opengl.cpp: Initialise LightI as a uint, and continue to wonder why we are not successfully fetching from the LookupSampler
50:48handmade_opengl.cpp: Try setting the UseLightC to individual colours from the LookupSampler, to see exactly what texelFetch() returns
50:48handmade_opengl.cpp: Try setting the UseLightC to individual colours from the LookupSampler, to see exactly what texelFetch() returns
50:48handmade_opengl.cpp: Try setting the UseLightC to individual colours from the LookupSampler, to see exactly what texelFetch() returns
54:39Run the game to see that the alpha channel unexpectedly is a high value before submitting the texture
54:39Run the game to see that the alpha channel unexpectedly is a high value before submitting the texture
54:39Run the game to see that the alpha channel unexpectedly is a high value before submitting the texture
56:03Reflect on our findings, that texelFetch() is returning 0, 0, 0, 1
56:03Reflect on our findings, that texelFetch() is returning 0, 0, 0, 1
56:03Reflect on our findings, that texelFetch() is returning 0, 0, 0, 1
1:01:12handmade_opengl.cpp: Print out all of the debug messages
1:01:12handmade_opengl.cpp: Print out all of the debug messages
1:01:12handmade_opengl.cpp: Print out all of the debug messages
1:07:05handmade_opengl.cpp: Make OpenGLChangeToSettings() set GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER to GL_NEAREST
1:07:05handmade_opengl.cpp: Make OpenGLChangeToSettings() set GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER to GL_NEAREST
1:07:05handmade_opengl.cpp: Make OpenGLChangeToSettings() set GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER to GL_NEAREST
1:11:47Run the game to see that this totally fixed it, and wonder why texelFetch() applied filtering
1:11:47Run the game to see that this totally fixed it, and wonder why texelFetch() applied filtering
1:11:47Run the game to see that this totally fixed it, and wonder why texelFetch() applied filtering
1:15:44Consult the OpenGL Specification for texelFetch()2
1:15:44Consult the OpenGL Specification for texelFetch()2
1:15:44Consult the OpenGL Specification for texelFetch()2
1:19:02Read about Texture Completeness3
1:19:02Read about Texture Completeness3
1:19:02Read about Texture Completeness3
1:23:05handmade_opengl.cpp: Enable CompileZBiasProgram() to use our structured art fetched from the LookupSampler
1:23:05handmade_opengl.cpp: Enable CompileZBiasProgram() to use our structured art fetched from the LookupSampler
1:23:05handmade_opengl.cpp: Enable CompileZBiasProgram() to use our structured art fetched from the LookupSampler
1:32:53handmade_opengl.cpp: Enable CompileZBiasProgram() to sample our real lighting values
1:32:53handmade_opengl.cpp: Enable CompileZBiasProgram() to sample our real lighting values
1:32:53handmade_opengl.cpp: Enable CompileZBiasProgram() to sample our real lighting values
1:34:01Run the game to see that we are getting the colours we'd expect
1:34:01Run the game to see that we are getting the colours we'd expect
1:34:01Run the game to see that we are getting the colours we'd expect
1:34:45handmade_opengl.cpp: Make the lighting grid more coarse
1:34:45handmade_opengl.cpp: Make the lighting grid more coarse
1:34:45handmade_opengl.cpp: Make the lighting grid more coarse
1:36:17Run the game and note that we are not covering all the space with light
1:36:17Run the game and note that we are not covering all the space with light
1:36:17Run the game and note that we are not covering all the space with light
1:37:18handmade_opengl.cpp: Introduce SumVoxelLight() to enable CompileZBiasProgram() to sample from neighbouring voxels
1:37:18handmade_opengl.cpp: Introduce SumVoxelLight() to enable CompileZBiasProgram() to sample from neighbouring voxels
1:37:18handmade_opengl.cpp: Introduce SumVoxelLight() to enable CompileZBiasProgram() to sample from neighbouring voxels
1:46:03Run the game to see that running fast
1:46:03Run the game to see that running fast
1:46:03Run the game to see that running fast
1:47:48handmade_opengl.cpp: Make CompileZBiasProgram() modulate the texture colours by the lighting values
1:47:48handmade_opengl.cpp: Make CompileZBiasProgram() modulate the texture colours by the lighting values
1:47:48handmade_opengl.cpp: Make CompileZBiasProgram() modulate the texture colours by the lighting values
1:48:29Run the game to see our lit scene
1:48:29Run the game to see our lit scene
1:48:29Run the game to see our lit scene
1:48:51handmade_opengl.cpp: Enable CompileZBiasProgram() to weight the lighting values by their proximity
1:48:51handmade_opengl.cpp: Enable CompileZBiasProgram() to weight the lighting values by their proximity
1:48:51handmade_opengl.cpp: Enable CompileZBiasProgram() to weight the lighting values by their proximity
1:52:24Run the game to see that we don't have dense enough lighting coverage
1:52:24Run the game to see that we don't have dense enough lighting coverage
1:52:24Run the game to see that we don't have dense enough lighting coverage
1:52:48handmade_opengl.cpp: Make the lighting grid more fine grained
1:52:48handmade_opengl.cpp: Make the lighting grid more fine grained
1:52:48handmade_opengl.cpp: Make the lighting grid more fine grained
1:53:09Run the game to see our more smoothly lit scene
1:53:09Run the game to see our more smoothly lit scene
1:53:09Run the game to see our more smoothly lit scene
1:55:01handmade_opengl.cpp: Change the coarseness of the lighting grid
1:55:01handmade_opengl.cpp: Change the coarseness of the lighting grid
1:55:01handmade_opengl.cpp: Change the coarseness of the lighting grid
1:56:49Q&A
🗩
1:56:49Q&A
🗩
1:56:49Q&A
🗩
2:06:54Blackboard: 2D rasterization
2:06:54Blackboard: 2D rasterization
2:06:54Blackboard: 2D rasterization
2:08:16Blackboard: Conservative rasterization
2:08:16Blackboard: Conservative rasterization
2:08:16Blackboard: Conservative rasterization
2:12:17Blackboard: Faster voxelization, using Reyes rendering4
2:12:17Blackboard: Faster voxelization, using Reyes rendering4
2:12:17Blackboard: Faster voxelization, using Reyes rendering4
2:17:24Recommend crawling references5
📖
2:17:24Recommend crawling references5
📖
2:17:24Recommend crawling references5
📖
2:22:29Close down the stream
🗩
2:22:29Close down the stream
🗩
2:22:29Close down the stream
🗩
⏬
Next: 'Smoother Blending of Lighting Samples'
⏬