Planning Lighting from Depth Peels ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
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:07Recap and set the stage for the day
0:07Recap and set the stage for the day
0:07Recap and set the stage for the day
2:24Run the game to show off the renderer and camera movement
2:24Run the game to show off the renderer and camera movement
2:24Run the game to show off the renderer and camera movement
5:55Launch the code with a few words on the tweaked 4coder UI, and our intentions for the light textures
5:55Launch the code with a few words on the tweaked 4coder UI, and our intentions for the light textures
5:55Launch the code with a few words on the tweaked 4coder UI, and our intentions for the light textures
9:09Blackboard: Light accumulation pass
9:09Blackboard: Light accumulation pass
9:09Blackboard: Light accumulation pass
13:08Run the game and note that there's no shadowing, with a few words on shadow maps
13:08Run the game and note that there's no shadowing, with a few words on shadow maps
13:08Run the game and note that there's no shadowing, with a few words on shadow maps
17:18Blackboard: Using our depth peels as geometry for the bounce lighting
17:18Blackboard: Using our depth peels as geometry for the bounce lighting
17:18Blackboard: Using our depth peels as geometry for the bounce lighting
18:59Blackboard: Screen-space ambient occlusion (SSAO)
18:59Blackboard: Screen-space ambient occlusion (SSAO)
18:59Blackboard: Screen-space ambient occlusion (SSAO)
20:49Blackboard: Voxel cone tracing
20:49Blackboard: Voxel cone tracing
20:49Blackboard: Voxel cone tracing
23:05Hunt for a paper on ambient occlusion
23:05Hunt for a paper on ambient occlusion
23:05Hunt for a paper on ambient occlusion
26:19"I don't want pirate stuff, I want Pirates of the Caribbean"α
26:19"I don't want pirate stuff, I want Pirates of the Caribbean"α
26:19"I don't want pirate stuff, I want Pirates of the Caribbean"α
29:52Consult 'Dynamic Ambient Occlusion and Indirect Lighting'1
29:52Consult 'Dynamic Ambient Occlusion and Indirect Lighting'1
29:52Consult 'Dynamic Ambient Occlusion and Indirect Lighting'1
35:13Blackboard: Writing out the normal with the depth buffer, filtered down in resolution
35:13Blackboard: Writing out the normal with the depth buffer, filtered down in resolution
35:13Blackboard: Writing out the normal with the depth buffer, filtered down in resolution
39:01Blackboard: The expense of this scheme
39:01Blackboard: The expense of this scheme
39:01Blackboard: The expense of this scheme
43:35Blackboard: Sampling from the textures2
43:35Blackboard: Sampling from the textures2
43:35Blackboard: Sampling from the textures2
47:48"We are out in complete La La Land, and I admit that, but, I mean, it's lighting, what do you want from me?"β
47:48"We are out in complete La La Land, and I admit that, but, I mean, it's lighting, what do you want from me?"β
47:48"We are out in complete La La Land, and I admit that, but, I mean, it's lighting, what do you want from me?"β
47:57Blackboard: Multigrid lighting, modulating incoming values at successively finer resolutions
47:57Blackboard: Multigrid lighting, modulating incoming values at successively finer resolutions
47:57Blackboard: Multigrid lighting, modulating incoming values at successively finer resolutions
56:42"That's my stupid idea. I hope you like it"γ
56:42"That's my stupid idea. I hope you like it"γ
56:42"That's my stupid idea. I hope you like it"γ
56:54Blackboard: Possible discontinuities caused by the mipmap boundaries
56:54Blackboard: Possible discontinuities caused by the mipmap boundaries
56:54Blackboard: Possible discontinuities caused by the mipmap boundaries
58:22Consider going for this hierarchically merged lighting idea
58:22Consider going for this hierarchically merged lighting idea
58:22Consider going for this hierarchically merged lighting idea
1:00:55Blackboard: Lighting memory requirements
1:00:55Blackboard: Lighting memory requirements
1:00:55Blackboard: Lighting memory requirements
1:08:25Blackboard: Hardware capability requirements
1:08:25Blackboard: Hardware capability requirements
1:08:25Blackboard: Hardware capability requirements
1:13:18Consult the OpenGL Hardware Database3 and OpenGL Core Profile 4.44
1:13:18Consult the OpenGL Hardware Database3 and OpenGL Core Profile 4.44
1:13:18Consult the OpenGL Hardware Database3 and OpenGL Core Profile 4.44
1:16:09handmade_opengl.h: Add MaxColorAttachments and MaxSamplersPerShader to open_gl, and enable OpenGLInit() to poll for those values5
1:16:09handmade_opengl.h: Add MaxColorAttachments and MaxSamplersPerShader to open_gl, and enable OpenGLInit() to poll for those values5
1:16:09handmade_opengl.h: Add MaxColorAttachments and MaxSamplersPerShader to open_gl, and enable OpenGLInit() to poll for those values5
1:20:06Run the game and inspect the MaxColorAttachments and MaxSamplersPerShader values for our card
1:20:06Run the game and inspect the MaxColorAttachments and MaxSamplersPerShader values for our card
1:20:06Run the game and inspect the MaxColorAttachments and MaxSamplersPerShader values for our card
1:20:44Consult the OpenGL Hardware Database for GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS6
1:20:44Consult the OpenGL Hardware Database for GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS6
1:20:44Consult the OpenGL Hardware Database for GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS6
1:22:19Go for it, considering first how many mip levels to use
1:22:19Go for it, considering first how many mip levels to use
1:22:19Go for it, considering first how many mip levels to use
1:30:11handmade_opengl.h: Introduce light_buffer and add an array of them to the open_gl struct
1:30:11handmade_opengl.h: Introduce light_buffer and add an array of them to the open_gl struct
1:30:11handmade_opengl.h: Introduce light_buffer and add an array of them to the open_gl struct
1:36:43handmade_opengl.cpp: Enable OpenGLChangeToSettings() to free and allocate lighting framebuffers
1:36:43handmade_opengl.cpp: Enable OpenGLChangeToSettings() to free and allocate lighting framebuffers
1:36:43handmade_opengl.cpp: Enable OpenGLChangeToSettings() to free and allocate lighting framebuffers
1:39:08handmade_opengl.cpp: Try to make FramebufferTexImage() pass 0 as the Format, Type and Data to glTextImage2D()
1:39:08handmade_opengl.cpp: Try to make FramebufferTexImage() pass 0 as the Format, Type and Data to glTextImage2D()
1:39:08handmade_opengl.cpp: Try to make FramebufferTexImage() pass 0 as the Format, Type and Data to glTextImage2D()
1:41:33Run the game and hit a GL_INVALID_ENUM error
1:41:33Run the game and hit a GL_INVALID_ENUM error
1:41:33Run the game and hit a GL_INVALID_ENUM error
1:41:51handmade_opengl.cpp: Enable OpenGLChangeToSettings() to attach our textures to the lighting framebuffer7
1:41:51handmade_opengl.cpp: Enable OpenGLChangeToSettings() to attach our textures to the lighting framebuffer7
1:41:51handmade_opengl.cpp: Enable OpenGLChangeToSettings() to attach our textures to the lighting framebuffer7
1:51:58Run the game and see our surfaces ready to go
1:51:58Run the game and see our surfaces ready to go
1:51:58Run the game and see our surfaces ready to go
1:52:44Q&A
1:52:44Q&A
1:52:44Q&A
1:53:28dautor Are you planing on taking a different / non-conventional approach to lighting?
1:53:28dautor Are you planing on taking a different / non-conventional approach to lighting?
1:53:28dautor Are you planing on taking a different / non-conventional approach to lighting?
1:53:43itsaunicorndog Any recommended programs to use for a noob?
1:53:43itsaunicorndog Any recommended programs to use for a noob?
1:53:43itsaunicorndog Any recommended programs to use for a noob?
1:54:18x13pixels Is that metal music coming from the stream or am I trippin'?
1:54:18x13pixels Is that metal music coming from the stream or am I trippin'?
1:54:18x13pixels Is that metal music coming from the stream or am I trippin'?
1:54:38dautor Will you port the game to JAI? Or make a part of it in JAI once it comes out, and just link to the original?
1:54:38dautor Will you port the game to JAI? Or make a part of it in JAI once it comes out, and just link to the original?
1:54:38dautor Will you port the game to JAI? Or make a part of it in JAI once it comes out, and just link to the original?
1:55:37willsch Which do you think will take longer, coding the engine or coding the actual game?
1:55:37willsch Which do you think will take longer, coding the engine or coding the actual game?
1:55:37willsch Which do you think will take longer, coding the engine or coding the actual game?
1:57:59itsaunicorndog Editor for programming
1:57:59itsaunicorndog Editor for programming
1:57:59itsaunicorndog Editor for programming
1:59:07hholst80 Do you work on Handmade Hero outside of the streaming time? How representative is the time on stream to the total time you put down on the programming / architecture?
1:59:07hholst80 Do you work on Handmade Hero outside of the streaming time? How representative is the time on stream to the total time you put down on the programming / architecture?
1:59:07hholst80 Do you work on Handmade Hero outside of the streaming time? How representative is the time on stream to the total time you put down on the programming / architecture?
2:01:16garryjohanson Off-topic and not really a question: There exists an IDE in Linux called "code::blox". It works great but I don't know if it has feature parity with vs. But something to look into, perhaps
2:01:16garryjohanson Off-topic and not really a question: There exists an IDE in Linux called "code::blox". It works great but I don't know if it has feature parity with vs. But something to look into, perhaps
2:01:16garryjohanson Off-topic and not really a question: There exists an IDE in Linux called "code::blox". It works great but I don't know if it has feature parity with vs. But something to look into, perhaps
2:02:08macielda About Retained and Immediate mode, do you think these paradigm boxes work for game code (as opposed to engine code) as well?
2:02:08macielda About Retained and Immediate mode, do you think these paradigm boxes work for game code (as opposed to engine code) as well?
2:02:08macielda About Retained and Immediate mode, do you think these paradigm boxes work for game code (as opposed to engine code) as well?
2:04:15Retention
2:04:15Retention
2:04:15Retention
2:08:28macielda If so, would you write your game logic code in Immediate mode or Retained mode?
2:08:28macielda If so, would you write your game logic code in Immediate mode or Retained mode?
2:08:28macielda If so, would you write your game logic code in Immediate mode or Retained mode?
2:10:25dautor I plan on starting a project this summer, a 4D perspective projection voxel game. May I ask you for some tips on graphics, then? (Like, how do I utilize the graphics card the best, because it is not optimized for 5x5 matrices and it's hard to think with other concepts for me?)
2:10:25dautor I plan on starting a project this summer, a 4D perspective projection voxel game. May I ask you for some tips on graphics, then? (Like, how do I utilize the graphics card the best, because it is not optimized for 5x5 matrices and it's hard to think with other concepts for me?)
2:10:25dautor I plan on starting a project this summer, a 4D perspective projection voxel game. May I ask you for some tips on graphics, then? (Like, how do I utilize the graphics card the best, because it is not optimized for 5x5 matrices and it's hard to think with other concepts for me?)
2:11:02Blackboard: GPUs aren't actually [XYZW] vectors
2:11:02Blackboard: GPUs aren't actually [XYZW] vectors
2:11:02Blackboard: GPUs aren't actually [XYZW] vectors
2:16:19Wind it down
2:16:19Wind it down
2:16:19Wind it down