Handmade Hero»Episode Guide
Sketching Out the Walk Table Generator
?
?

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:01Recap and set the stage for the day improving our lighting performance
🗩
0:01Recap and set the stage for the day improving our lighting performance
🗩
0:01Recap and set the stage for the day improving our lighting performance
🗩
3:13Reflect on yesterday's work on GridRayCast()
📖
3:13Reflect on yesterday's work on GridRayCast()
📖
3:13Reflect on yesterday's work on GridRayCast()
📖
5:01Determine to generate the WalkTable
📖
5:01Determine to generate the WalkTable
📖
5:01Determine to generate the WalkTable
📖
5:50Set up GridRayCast() to index into the WalkTable
5:50Set up GridRayCast() to index into the WalkTable
5:50Set up GridRayCast() to index into the WalkTable
7:03On striding through the voxel, and the need to bounds-check in multiple dimensions
📖
7:03On striding through the voxel, and the need to bounds-check in multiple dimensions
📖
7:03On striding through the voxel, and the need to bounds-check in multiple dimensions
📖
10:02Make RayCast() set a WalkCount for GridRayCast() to use when striding through the WalkTable, augmenting light_sample_direction with an EndAtWalkOffset
10:02Make RayCast() set a WalkCount for GridRayCast() to use when striding through the WalkTable, augmenting light_sample_direction with an EndAtWalkOffset
10:02Make RayCast() set a WalkCount for GridRayCast() to use when striding through the WalkTable, augmenting light_sample_direction with an EndAtWalkOffset
12:28Micro- and Macro-op Fusion1
📖
12:28Micro- and Macro-op Fusion1
📖
12:28Micro- and Macro-op Fusion1
📖
19:15Looping in clang -O22
📖
19:15Looping in clang -O22
📖
19:15Looping in clang -O22
📖
20:33clang's loop unrolling3
📖
20:33clang's loop unrolling3
📖
20:33clang's loop unrolling3
📖
24:54Looping in msvc -O24
📖
24:54Looping in msvc -O24
📖
24:54Looping in msvc -O24
📖
27:04Looping in clang -O3, with its micro-architectural analysis5
📖
27:04Looping in clang -O3, with its micro-architectural analysis5
📖
27:04Looping in clang -O3, with its micro-architectural analysis5
📖
28:24Micro- and Macro-op Fusion6
📖
28:24Micro- and Macro-op Fusion6
📖
28:24Micro- and Macro-op Fusion6
📖
30:34Micro- and Macro-op Fusion of non-deterministic looping7,8
📖
30:34Micro- and Macro-op Fusion of non-deterministic looping7,8
📖
30:34Micro- and Macro-op Fusion of non-deterministic looping7,8
📖
37:45Non-deterministic looping in clang -O3, with its micro-architectural analysis9,10
📖
37:45Non-deterministic looping in clang -O3, with its micro-architectural analysis9,10
📖
37:45Non-deterministic looping in clang -O3, with its micro-architectural analysis9,10
📖
44:49Make GridRayCast() loop through the WalkTable, renaming the indices in light_sample_direction
44:49Make GridRayCast() loop through the WalkTable, renaming the indices in light_sample_direction
44:49Make GridRayCast() loop through the WalkTable, renaming the indices in light_sample_direction
50:03Consider how to generate the WalkCount
📖
50:03Consider how to generate the WalkCount
📖
50:03Consider how to generate the WalkCount
📖
52:20Walk Table Truncation
🖌
52:20Walk Table Truncation
🖌
52:20Walk Table Truncation
🖌
55:10Replace the WalkCount with a SPATIAL_GRID_NODE_TERMINATOR skirt surrounding the spatial grid
55:10Replace the WalkCount with a SPATIAL_GRID_NODE_TERMINATOR skirt surrounding the spatial grid
55:10Replace the WalkCount with a SPATIAL_GRID_NODE_TERMINATOR skirt surrounding the spatial grid
57:20Prepare RayCast(), GridRayCast(), FullCast() and ComputeLightPropagationWork() to develop the WalkTable generation and compare the current and resulting routines, introducing GridIndexFrom()
57:20Prepare RayCast(), GridRayCast(), FullCast() and ComputeLightPropagationWork() to develop the WalkTable generation and compare the current and resulting routines, introducing GridIndexFrom()
57:20Prepare RayCast(), GridRayCast(), FullCast() and ComputeLightPropagationWork() to develop the WalkTable generation and compare the current and resulting routines, introducing GridIndexFrom()
1:23:18WalkTable generation, à la Bresenham Line Drawing
🖌
1:23:18WalkTable generation, à la Bresenham Line Drawing
🖌
1:23:18WalkTable generation, à la Bresenham Line Drawing
🖌
1:28:05Introduce ComputeWalkTable()
1:28:05Introduce ComputeWalkTable()
1:28:05Introduce ComputeWalkTable()
1:39:51Q&A
🗩
1:39:51Q&A
🗩
1:39:51Q&A
🗩
1:40:14naysayer88 Q: https://imgur.com/a/A28qRIw11
🗪
1:40:14naysayer88 Q: https://imgur.com/a/A28qRIw11
🗪
1:40:14naysayer88 Q: https://imgur.com/a/A28qRIw11
🗪
1:41:15thetamiel Billy Mitchell has recently sued some people for slandering him
🗪
1:41:15thetamiel Billy Mitchell has recently sued some people for slandering him
🗪
1:41:15thetamiel Billy Mitchell has recently sued some people for slandering him
🗪
1:42:31sneakybob_wot Did they say he used an emulator rather than a real arcade?
🗪
1:42:31sneakybob_wot Did they say he used an emulator rather than a real arcade?
🗪
1:42:31sneakybob_wot Did they say he used an emulator rather than a real arcade?
🗪
1:43:15mindmark42 Q: Can you explain more what a micro-op is?
🗪
1:43:15mindmark42 Q: Can you explain more what a micro-op is?
🗪
1:43:15mindmark42 Q: Can you explain more what a micro-op is?
🗪
1:43:32Skylake-ish Core Micro-op (µop)
🖌
1:43:32Skylake-ish Core Micro-op (µop)
🖌
1:43:32Skylake-ish Core Micro-op (µop)
🖌
1:58:29Micro-op Fusion and Limits
🖌
1:58:29Micro-op Fusion and Limits
🖌
1:58:29Micro-op Fusion and Limits
🖌
2:01:39Macro-op Fusion
🖌
2:01:39Macro-op Fusion
🖌
2:01:39Macro-op Fusion
🖌
2:07:02somebody_took_my_name Q: I don't think they fuse the instructions anymore. Take a look at LOOP, LOOPE and LOOPNE on uops.info.12 They take a lot of uops. (No expert here, but pure from poking Godbolt and the x86_64 instruction set / byte codes13)
🗪
2:07:02somebody_took_my_name Q: I don't think they fuse the instructions anymore. Take a look at LOOP, LOOPE and LOOPNE on uops.info.12 They take a lot of uops. (No expert here, but pure from poking Godbolt and the x86_64 instruction set / byte codes13)
🗪
2:07:02somebody_took_my_name Q: I don't think they fuse the instructions anymore. Take a look at LOOP, LOOPE and LOOPNE on uops.info.12 They take a lot of uops. (No expert here, but pure from poking Godbolt and the x86_64 instruction set / byte codes13)
🗪
2:07:37somebody_took_my_name Q: Never mind, I thought you meant that the compiler fused the instructions, not the uops in the pipe
🗪
2:07:37somebody_took_my_name Q: Never mind, I thought you meant that the compiler fused the instructions, not the uops in the pipe
🗪
2:07:37somebody_took_my_name Q: Never mind, I thought you meant that the compiler fused the instructions, not the uops in the pipe
🗪
2:07:48naysayer88 Q: What if it is an HTML DIV in the scheduler?
🗪
2:07:48naysayer88 Q: What if it is an HTML DIV in the scheduler?
🗪
2:07:48naysayer88 Q: What if it is an HTML DIV in the scheduler?
🗪
2:07:53WebAssembly
🖌
2:07:53WebAssembly
🖌
2:07:53WebAssembly
🖌
2:08:23printf_armin They do even crazier instruction squashing now
🗪
2:08:23printf_armin They do even crazier instruction squashing now
🗪
2:08:23printf_armin They do even crazier instruction squashing now
🗪
2:10:14We're all good here
🗩
2:10:14We're all good here
🗩
2:10:14We're all good here
🗩
2:11:04naysayer88 Probably not!
🗪
2:11:04naysayer88 Probably not!
🗪
2:11:04naysayer88 Probably not!
🗪
2:11:28naysayer88 I should have OBS'd it
🗪
2:11:28naysayer88 I should have OBS'd it
🗪
2:11:28naysayer88 I should have OBS'd it
🗪
2:11:47somebody_took_my_name Does he have a save game? Or are there no save games?
🗪
2:11:47somebody_took_my_name Does he have a save game? Or are there no save games?
🗪
2:11:47somebody_took_my_name Does he have a save game? Or are there no save games?
🗪
2:12:01naysayer88 Look, if my screenshot14 is invalid, then YOURS is invalid, and my score being higher, my invalid screenshot is better than yours
🗪
2:12:01naysayer88 Look, if my screenshot14 is invalid, then YOURS is invalid, and my score being higher, my invalid screenshot is better than yours
🗪
2:12:01naysayer88 Look, if my screenshot14 is invalid, then YOURS is invalid, and my score being higher, my invalid screenshot is better than yours
🗪
2:12:16That's it, everybody
🗩
2:12:16That's it, everybody
🗩
2:12:16That's it, everybody
🗩