Handmade Hero»Episode Guide
Passing Lighting as Boxes
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu 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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Welcome to the stream, power outage edition
🗩
0:00Welcome to the stream, power outage edition
🗩
0:00Welcome to the stream, power outage edition
🗩
2:04Recap and set the stage for the day
🗩
2:04Recap and set the stage for the day
🗩
2:04Recap and set the stage for the day
🗩
3:43Fix the P, N and XAxis for the fifth and sixth surfaces in PushCube()1
3:43Fix the P, N and XAxis for the fifth and sixth surfaces in PushCube()1
3:43Fix the P, N and XAxis for the fifth and sixth surfaces in PushCube()1
7:41Run the game to see our hopefully corrected lighting
🏃
7:41Run the game to see our hopefully corrected lighting
🏃
7:41Run the game to see our hopefully corrected lighting
🏃
8:27Flip back to the old settings in PushCube()
8:27Flip back to the old settings in PushCube()
8:27Flip back to the old settings in PushCube()
8:42Run the game to see that bug exhibiting
🏃
8:42Run the game to see that bug exhibiting
🏃
8:42Run the game to see that bug exhibiting
🏃
8:55Redo the correction in PushCube()
8:55Redo the correction in PushCube()
8:55Redo the correction in PushCube()
9:17Run the game and check out the newly corrected lighting
🏃
9:17Run the game and check out the newly corrected lighting
🏃
9:17Run the game and check out the newly corrected lighting
🏃
9:35Close that bug2
🗹
9:35Close that bug2
🗹
9:35Close that bug2
🗹
10:29Determine to compress PushCube()
🗩
10:29Determine to compress PushCube()
🗩
10:29Determine to compress PushCube()
🗩
13:49Compress what we can of PushCube()
13:49Compress what we can of PushCube()
13:49Compress what we can of PushCube()
36:38Specify the lighting_box struct and begin to fix up compile errors in PushCube()
36:38Specify the lighting_box struct and begin to fix up compile errors in PushCube()
36:38Specify the lighting_box struct and begin to fix up compile errors in PushCube()
40:10Light Box Face Interpolation
🖌
40:10Light Box Face Interpolation
🖌
40:10Light Box Face Interpolation
🖌
42:22Make PushCube() procedurally interpolate the lighting surfaces for each axis
42:22Make PushCube() procedurally interpolate the lighting surfaces for each axis
42:22Make PushCube() procedurally interpolate the lighting surfaces for each axis
45:55Min and max corners of a cube vs its faces
🖌
45:55Min and max corners of a cube vs its faces
🖌
45:55Min and max corners of a cube vs its faces
🖌
46:40Continue to make PushCube() interpolate the lighting surfaces
46:40Continue to make PushCube() interpolate the lighting surfaces
46:40Continue to make PushCube() interpolate the lighting surfaces
1:00:19Switch DefaultRenderCommands() from lighting_surface to lighting_box
1:00:19Switch DefaultRenderCommands() from lighting_surface to lighting_box
1:00:19Switch DefaultRenderCommands() from lighting_surface to lighting_box
1:02:16Introduce GetBoxSurface() to perform some of the work of PushCube() for LightingTest() to call
1:02:16Introduce GetBoxSurface() to perform some of the work of PushCube() for LightingTest() to call
1:02:16Introduce GetBoxSurface() to perform some of the work of PushCube() for LightingTest() to call
1:09:12Compress LightingTest() using GetBoxSurface()
1:09:12Compress LightingTest() using GetBoxSurface()
1:09:12Compress LightingTest() using GetBoxSurface()
1:18:12Change OutputLightingPoints() to display the actually used axes
1:18:12Change OutputLightingPoints() to display the actually used axes
1:18:12Change OutputLightingPoints() to display the actually used axes
1:22:18Run the game and crash in LightingTest()
🏃
1:22:18Run the game and crash in LightingTest()
🏃
1:22:18Run the game and crash in LightingTest()
🏃
1:23:19Step in to LightingTest() and inspect the Surface
🏃
1:23:19Step in to LightingTest() and inspect the Surface
🏃
1:23:19Step in to LightingTest() and inspect the Surface
🏃
1:24:11Fix LightingTest() to correctly iterate over the box surfaces
1:24:11Fix LightingTest() to correctly iterate over the box surfaces
1:24:11Fix LightingTest() to correctly iterate over the box surfaces
1:24:51Run the game to see that we are completely wrong
🏃
1:24:51Run the game to see that we are completely wrong
🏃
1:24:51Run the game to see that we are completely wrong
🏃
1:25:32Step in to LightingTest() and inspect the data
🏃
1:25:32Step in to LightingTest() and inspect the data
🏃
1:25:32Step in to LightingTest() and inspect the data
🏃
1:26:26Make GetBoxSurface() correctly set the YAxis
1:26:26Make GetBoxSurface() correctly set the YAxis
1:26:26Make GetBoxSurface() correctly set the YAxis
1:26:57Run the game to see our lighting surfaces
🏃
1:26:57Run the game to see our lighting surfaces
🏃
1:26:57Run the game to see our lighting surfaces
🏃
1:28:12Check the time
🗹
1:28:12Check the time
🗹
1:28:12Check the time
🗹
1:28:21insobot 87 minutes into the main stream. 33 until Q&A. (based on NOTE)
🗪
1:28:21insobot 87 minutes into the main stream. 33 until Q&A. (based on NOTE)
🗪
1:28:21insobot 87 minutes into the main stream. 33 until Q&A. (based on NOTE)
🗪
1:28:48Run it in release mode
🏃
1:28:48Run it in release mode
🏃
1:28:48Run it in release mode
🏃
1:29:17Step through PushCube() and inspect the LightBox data
🏃
1:29:17Step through PushCube() and inspect the LightBox data
🏃
1:29:17Step through PushCube() and inspect the LightBox data
🏃
1:31:54Make GetBoxSurface() set the Span after setting the Max and Min corners
1:31:54Make GetBoxSurface() set the Span after setting the Max and Min corners
1:31:54Make GetBoxSurface() set the Span after setting the Max and Min corners
1:32:44Step through GetBoxSurface() and LightingTest() and inspect their data
🏃
1:32:44Step through GetBoxSurface() and LightingTest() and inspect their data
🏃
1:32:44Step through GetBoxSurface() and LightingTest() and inspect their data
🏃
1:37:37Run the game and consider whether the debug and main views do not correspond
🏃
1:37:37Run the game and consider whether the debug and main views do not correspond
🏃
1:37:37Run the game and consider whether the debug and main views do not correspond
🏃
1:39:52Step through LightingTest() to see that a Surface.Width is negative
🏃
1:39:52Step through LightingTest() to see that a Surface.Width is negative
🏃
1:39:52Step through LightingTest() to see that a Surface.Width is negative
🏃
1:42:48Note that Min in light_box_surface is not necessarily the minimum relative to the axes, and respecify light_box_surface
1:42:48Note that Min in light_box_surface is not necessarily the minimum relative to the axes, and respecify light_box_surface
1:42:48Note that Min in light_box_surface is not necessarily the minimum relative to the axes, and respecify light_box_surface
1:48:41Run the game to view the debug visualisation
🏃
1:48:41Run the game to view the debug visualisation
🏃
1:48:41Run the game to view the debug visualisation
🏃
1:50:58Step in to PushCube() to verify if the surfaces were pushed on in the expected order
🏃
1:50:58Step in to PushCube() to verify if the surfaces were pushed on in the expected order
🏃
1:50:58Step in to PushCube() to verify if the surfaces were pushed on in the expected order
🏃
1:53:19Reorder the PushQuad() calls in PushCube()
1:53:19Reorder the PushQuad() calls in PushCube()
1:53:19Reorder the PushQuad() calls in PushCube()
1:56:13Run the game to see that we're closer
🏃
1:56:13Run the game to see that we're closer
🏃
1:56:13Run the game to see that we're closer
🏃
1:57:31Flip the Y PushQuad() calls in PushCube
1:57:31Flip the Y PushQuad() calls in PushCube
1:57:31Flip the Y PushQuad() calls in PushCube
1:57:46Run the game to see that we're better
🏃
1:57:46Run the game to see that we're better
🏃
1:57:46Run the game to see that we're better
🏃
1:58:58Q&A
🗩
1:58:58Q&A
🗩
1:58:58Q&A
🗩
2:00:03areriff Q: Is there any way to put a break point outside Visual Studio?
🗪
2:00:03areriff Q: Is there any way to put a break point outside Visual Studio?
🗪
2:00:03areriff Q: Is there any way to put a break point outside Visual Studio?
🗪
2:01:22Pull up the profiler and note the cycle usage of ComputeLightPropagation
🏃
2:01:22Pull up the profiler and note the cycle usage of ComputeLightPropagation
🏃
2:01:22Pull up the profiler and note the cycle usage of ComputeLightPropagation
🏃
2:02:32theditv Q: What do you think about the blockchain future? I have no idea if questions outside of the game are allowed
🗪
2:02:32theditv Q: What do you think about the blockchain future? I have no idea if questions outside of the game are allowed
🗪
2:02:32theditv Q: What do you think about the blockchain future? I have no idea if questions outside of the game are allowed
🗪
2:06:30vtlmks Q: Shouldn't we go back to do more stuff in assembler like on the Amiga
🗪
2:06:30vtlmks Q: Shouldn't we go back to do more stuff in assembler like on the Amiga
🗪
2:06:30vtlmks Q: Shouldn't we go back to do more stuff in assembler like on the Amiga
🗪
2:06:39areriff Q: How do you jump to a function during debugging? Usually there's a lot of functions and not easy to find them
🗪
2:06:39areriff Q: How do you jump to a function during debugging? Usually there's a lot of functions and not easy to find them
🗪
2:06:39areriff Q: How do you jump to a function during debugging? Usually there's a lot of functions and not easy to find them
🗪
2:07:37macielda Q: Jon tweeted once again about how X-Forward, Right Handed coordinate systems should be standard.3 Do you know details on why is that important?4
🗪
2:07:37macielda Q: Jon tweeted once again about how X-Forward, Right Handed coordinate systems should be standard.3 Do you know details on why is that important?4
🗪
2:07:37macielda Q: Jon tweeted once again about how X-Forward, Right Handed coordinate systems should be standard.3 Do you know details on why is that important?4
🗪
2:16:25elnar4uk Q: What kind of memory allocations do you use? Are there any custom stack allocations, pools etc. or are you using standard malloc / new? If custom, how do you define memory chunk size?
🗪
2:16:25elnar4uk Q: What kind of memory allocations do you use? Are there any custom stack allocations, pools etc. or are you using standard malloc / new? If custom, how do you define memory chunk size?
🗪
2:16:25elnar4uk Q: What kind of memory allocations do you use? Are there any custom stack allocations, pools etc. or are you using standard malloc / new? If custom, how do you define memory chunk size?
🗪
2:17:05gprincip Q: Did you manually build all of the menus currently on the screen, or get it from somewhere?
🗪
2:17:05gprincip Q: Did you manually build all of the menus currently on the screen, or get it from somewhere?
🗪
2:17:05gprincip Q: Did you manually build all of the menus currently on the screen, or get it from somewhere?
🗪
2:17:32areriff Q: Is ComputeLightPropagation 92% seems too high at the moment?
🗪
2:17:32areriff Q: Is ComputeLightPropagation 92% seems too high at the moment?
🗪
2:17:32areriff Q: Is ComputeLightPropagation 92% seems too high at the moment?
🗪
2:17:46euler9119 Q: Hi Casey, would you be able to recommend good resources to learn / practise efficient programming habits (e.g. efficient algorithms, code, etc.)?
🗪
2:17:46euler9119 Q: Hi Casey, would you be able to recommend good resources to learn / practise efficient programming habits (e.g. efficient algorithms, code, etc.)?
🗪
2:17:46euler9119 Q: Hi Casey, would you be able to recommend good resources to learn / practise efficient programming habits (e.g. efficient algorithms, code, etc.)?
🗪
2:18:23ingenero Q: Can metaprogramming do everything and solve all the world's problems?
🗪
2:18:23ingenero Q: Can metaprogramming do everything and solve all the world's problems?
🗪
2:18:23ingenero Q: Can metaprogramming do everything and solve all the world's problems?
🗪
2:18:33Close this up
🗩
2:18:33Close this up
🗩
2:18:33Close this up
🗩