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:00:54macielda Maybe up your level of debug message notifications?
🗪
1:00:54macielda Maybe up your level of debug message notifications?
🗪
1:00:54macielda Maybe up your level of debug message notifications?
🗪
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:03:32bestalloys 3rd comment: https://stackoverflow.com/questions/26770216/why-is-texelfetch-always-returning-0-for-a-1d-single-channel-texture
🗪
1:03:32bestalloys 3rd comment: https://stackoverflow.com/questions/26770216/why-is-texelfetch-always-returning-0-for-a-1d-single-channel-texture
🗪
1:03:32bestalloys 3rd comment: https://stackoverflow.com/questions/26770216/why-is-texelfetch-always-returning-0-for-a-1d-single-channel-texture
🗪
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:57:14bestalloys Why no indentation on the shader code?
🗪
1:57:14bestalloys Why no indentation on the shader code?
🗪
1:57:14bestalloys Why no indentation on the shader code?
🗪
1:58:29butwhynot1 Have you tried CUDA? Do you think it's a reasonable way to do GPU programming? AMD is trying to get a CUDA compatible compiler so it could be usable on both vendors soon
🗪
1:58:29butwhynot1 Have you tried CUDA? Do you think it's a reasonable way to do GPU programming? AMD is trying to get a CUDA compatible compiler so it could be usable on both vendors soon
🗪
1:58:29butwhynot1 Have you tried CUDA? Do you think it's a reasonable way to do GPU programming? AMD is trying to get a CUDA compatible compiler so it could be usable on both vendors soon
🗪
2:00:284bitlightning Could you try to use #include and the multi line strings together for the shader code?
🗪
2:00:284bitlightning Could you try to use #include and the multi line strings together for the shader code?
🗪
2:00:284bitlightning Could you try to use #include and the multi line strings together for the shader code?
🗪
2:01:20poohshoes I've just started a project and am working through the setup on Day 002. You had set up a PatBlt on WM_PAINT to alternate black and white. If I made no mistakes then it doesn't work on windows 10, I'm instead getting all white and if I drag the window around, the new part of the window becomes black? Do you know if there are any caveats for windows 10 I should be worried about? Should I keep going or is it important to get this working exactly the same?
🗪
2:01:20poohshoes I've just started a project and am working through the setup on Day 002. You had set up a PatBlt on WM_PAINT to alternate black and white. If I made no mistakes then it doesn't work on windows 10, I'm instead getting all white and if I drag the window around, the new part of the window becomes black? Do you know if there are any caveats for windows 10 I should be worried about? Should I keep going or is it important to get this working exactly the same?
🗪
2:01:20poohshoes I've just started a project and am working through the setup on Day 002. You had set up a PatBlt on WM_PAINT to alternate black and white. If I made no mistakes then it doesn't work on windows 10, I'm instead getting all white and if I drag the window around, the new part of the window becomes black? Do you know if there are any caveats for windows 10 I should be worried about? Should I keep going or is it important to get this working exactly the same?
🗪
2:02:19nxsy Do you have any suggestions on how to start going about voxelising more complex 3D meshes rather than simpler geometric shapes? Break them up into simpler geometric version / LOD meshes first? Should each mesh be pre-voxelised, or do you need to recalculate relative to the world / view position (and possibly distance from camera)?
🗪
2:02:19nxsy Do you have any suggestions on how to start going about voxelising more complex 3D meshes rather than simpler geometric shapes? Break them up into simpler geometric version / LOD meshes first? Should each mesh be pre-voxelised, or do you need to recalculate relative to the world / view position (and possibly distance from camera)?
🗪
2:02:19nxsy Do you have any suggestions on how to start going about voxelising more complex 3D meshes rather than simpler geometric shapes? Break them up into simpler geometric version / LOD meshes first? Should each mesh be pre-voxelised, or do you need to recalculate relative to the world / view position (and possibly distance from camera)?
🗪
2:04:08nxsy Not necessarily doing it on the GPU, but to provide what the GPU needs to do this sort of lighting with more complex meshes
🗪
2:04:08nxsy Not necessarily doing it on the GPU, but to provide what the GPU needs to do this sort of lighting with more complex meshes
🗪
2:04:08nxsy Not necessarily doing it on the GPU, but to provide what the GPU needs to do this sort of lighting with more complex meshes
🗪
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 references
5📖
2:17:24Recommend crawling references
5📖
2:17:24Recommend crawling references
5📖
2:22:29Close down the stream
🗩
2:22:29Close down the stream
🗩
2:22:29Close down the stream
🗩