Fleshing Out Kd-Tree Traversal
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
0:52Determine to implement the k-d tree loop, demoing the lighting variance
🏃
0:52Determine to implement the k-d tree loop, demoing the lighting variance
🏃
0:52Determine to implement the k-d tree loop, demoing the lighting variance
🏃
1:47Describe our current k-d tree code in RayCast()
📖
1:47Describe our current k-d tree code in RayCast()
📖
1:47Describe our current k-d tree code in RayCast()
📖
6:23Stackless k-d tree traversal
📖
6:23Stackless k-d tree traversal
📖
6:23Stackless k-d tree traversal
📖
8:33More efficient k-d tree side selection
📖
8:33More efficient k-d tree side selection
📖
8:33More efficient k-d tree side selection
📖
10:54Make RayCast() directly index the StartSide and EndSide, rather than masked Select() them
10:54Make RayCast() directly index the StartSide and EndSide, rather than masked Select() them
10:54Make RayCast() directly index the StartSide and EndSide, rather than masked Select() them
15:52On the need to disambiguate the negative and positive sides, to correctly test the EndSideBit
📖
15:52On the need to disambiguate the negative and positive sides, to correctly test the EndSideBit
📖
15:52On the need to disambiguate the negative and positive sides, to correctly test the EndSideBit
📖
18:11Disambiguating the negative and positive sides: Storing a multiplier, -1 or 1
📖
18:11Disambiguating the negative and positive sides: Storing a multiplier, -1 or 1
📖
18:11Disambiguating the negative and positive sides: Storing a multiplier, -1 or 1
📖
19:46Check out the old blackboard.mlt
🖌
19:46Check out the old blackboard.mlt
🖌
19:46Check out the old blackboard.mlt
🖌
21:10milton feature request: Display the save file location; or Auto-save to our designated (non-temporary) file path
🗹
21:10milton feature request: Display the save file location; or Auto-save to our designated (non-temporary) file path
🗹
21:10milton feature request: Display the save file location; or Auto-save to our designated (non-temporary) file path
🗹
23:18Launch and set the Overlay
🗹
23:18Launch and set the Overlay
🗹
23:18Launch and set the Overlay
🗹
24:11Side Bit Masks
🖌
24:11Side Bit Masks
🖌
24:11Side Bit Masks
🖌
27:58Make RayCast() set the EndSide using a PlaneTestPattern
27:58Make RayCast() set the EndSide using a PlaneTestPattern
27:58Make RayCast() set the EndSide using a PlaneTestPattern
30:34Set up to store the data needed for our k-d tree
30:34Set up to store the data needed for our k-d tree
30:34Set up to store the data needed for our k-d tree
31:23Plan our k-d tree data storage
📖
31:23Plan our k-d tree data storage
📖
31:23Plan our k-d tree data storage
📖
32:54Make RayCast() track IsLeafContainer in the BoxStack
32:54Make RayCast() track IsLeafContainer in the BoxStack
32:54Make RayCast() track IsLeafContainer in the BoxStack
35:43Run hhlightprof
🏃
35:43Run hhlightprof
🏃
35:43Run hhlightprof
🏃
35:58Augment lighting_solution with the k-d tree data, introducing kd_tree_node
35:58Augment lighting_solution with the k-d tree data, introducing kd_tree_node
35:58Augment lighting_solution with the k-d tree data, introducing kd_tree_node
40:41Make RayCast() use our new kd_tree_node
40:41Make RayCast() use our new kd_tree_node
40:41Make RayCast() use our new kd_tree_node
48:42Begin to update SplitBox() to use our new kd_tree_node
48:42Begin to update SplitBox() to use our new kd_tree_node
48:42Begin to update SplitBox() to use our new kd_tree_node
51:12Consider packing the LeafCount in the BoxStack
📖
51:12Consider packing the LeafCount in the BoxStack
📖
51:12Consider packing the LeafCount in the BoxStack
📖
52:21Undo our changes to SplitBox()
52:21Undo our changes to SplitBox()
52:21Undo our changes to SplitBox()
52:26Key & Peele diner order authenticity sketch: "Forget everything I said"
🗩
52:26Key & Peele diner order authenticity sketch: "Forget everything I said"
🗩
52:26Key & Peele diner order authenticity sketch: "Forget everything I said"
🗩
54:09Make RayCast() identify leaf nodes from a KdStack PackedValue
54:09Make RayCast() identify leaf nodes from a KdStack PackedValue
54:09Make RayCast() identify leaf nodes from a KdStack PackedValue
1:08:47dithinas I feel like there needs to be an algorithm / data structure named after Key & Peele
🗪
1:08:47dithinas I feel like there needs to be an algorithm / data structure named after Key & Peele
🗪
1:08:47dithinas I feel like there needs to be an algorithm / data structure named after Key & Peele
🗪
1:09:11Make RayCast() encode the PackedValue in the KdStack, introducing PACK_KD_STACK(), UNPACK(), UNPACK_PLANE_D(), UNPACK_LEAF_COUNT(), UNPACK_NODE_INDEX(), UNPACK_PLANE_TEST_PATTERN() and UNPACK_KD_INDEX(), and kd_stack_pack
1:09:11Make RayCast() encode the PackedValue in the KdStack, introducing PACK_KD_STACK(), UNPACK(), UNPACK_PLANE_D(), UNPACK_LEAF_COUNT(), UNPACK_NODE_INDEX(), UNPACK_PLANE_TEST_PATTERN() and UNPACK_KD_INDEX(), and kd_stack_pack
1:09:11Make RayCast() encode the PackedValue in the KdStack, introducing PACK_KD_STACK(), UNPACK(), UNPACK_PLANE_D(), UNPACK_LEAF_COUNT(), UNPACK_NODE_INDEX(), UNPACK_PLANE_TEST_PATTERN() and UNPACK_KD_INDEX(), and kd_stack_pack
1:22:36Fix compile errors in RayCast()
1:22:36Fix compile errors in RayCast()
1:22:36Fix compile errors in RayCast()
1:28:41Consider our k-d tree routine to be fully sketched out
🗩
1:28:41Consider our k-d tree routine to be fully sketched out
🗩
1:28:41Consider our k-d tree routine to be fully sketched out
🗩
1:29:51Determine to make SplitBox() build our k-d tree tomorrow
🗩
1:29:51Determine to make SplitBox() build our k-d tree tomorrow
🗩
1:29:51Determine to make SplitBox() build our k-d tree tomorrow
🗩
1:30:55Q&A
🗩
1:30:55Q&A
🗩
1:30:55Q&A
🗩
1:31:30internationalizationist Q: Nice hair!
🗪
1:31:30internationalizationist Q: Nice hair!
🗪
1:31:30internationalizationist Q: Nice hair!
🗪
1:31:49sharlock93 Q: Side stuff: How is that course on C coming along?
🗪
1:31:49sharlock93 Q: Side stuff: How is that course on C coming along?
🗪
1:31:49sharlock93 Q: Side stuff: How is that course on C coming along?
🗪
1:32:12internationalizationist Q: What about writing a plugin for 4coder that highlights unclosed parentheses?
🗪
1:32:12internationalizationist Q: What about writing a plugin for 4coder that highlights unclosed parentheses?
🗪
1:32:12internationalizationist Q: What about writing a plugin for 4coder that highlights unclosed parentheses?
🗪
1:32:59vtlmks Q: It's Day 596
🗪
1:32:59vtlmks Q: It's Day 596
🗪
1:32:59vtlmks Q: It's Day 596
🗪
1:33:43x13pixels Q: Looks like you can recover the milton temp file from %APPDATA%\MiltonPaint\data
🗪
1:33:43x13pixels Q: Looks like you can recover the milton temp file from %APPDATA%\MiltonPaint\data
🗪
1:33:43x13pixels Q: Looks like you can recover the milton temp file from %APPDATA%\MiltonPaint\data
🗪
1:33:49Check %APPDATA%\MiltonPaint\data
🗹
1:33:49Check %APPDATA%\MiltonPaint\data
🗹
1:33:49Check %APPDATA%\MiltonPaint\data
🗹
1:35:04tgapache Q: Where do I get the info about the C course?1
🗪
1:35:04tgapache Q: Where do I get the info about the C course?1
🗪
1:35:04tgapache Q: Where do I get the info about the C course?1
🗪
1:35:38internationalizationist Q: Today Jon said that deferred rendering is a bad idea. Why?
🗪
1:35:38internationalizationist Q: Today Jon said that deferred rendering is a bad idea. Why?
🗪
1:35:38internationalizationist Q: Today Jon said that deferred rendering is a bad idea. Why?
🗪
1:37:06themeshpotato Didn't he just mean that almost no one uses deferred rendering anymore?
🗪
1:37:06themeshpotato Didn't he just mean that almost no one uses deferred rendering anymore?
🗪
1:37:06themeshpotato Didn't he just mean that almost no one uses deferred rendering anymore?
🗪
1:37:26Consult Adrian Courrèges' 'DOOM (2016) Graphics Study',2 'Metal Gear Solid V - Graphics Study'3 and 'GTA V - Graphics Study'4
📖
1:37:26Consult Adrian Courrèges' 'DOOM (2016) Graphics Study',2 'Metal Gear Solid V - Graphics Study'3 and 'GTA V - Graphics Study'4
📖
1:37:26Consult Adrian Courrèges' 'DOOM (2016) Graphics Study',2 'Metal Gear Solid V - Graphics Study'3 and 'GTA V - Graphics Study'4
📖
1:39:10kennyalive0 New DOOM does not use it
🗪
1:39:10kennyalive0 New DOOM does not use it
🗪
1:39:10kennyalive0 New DOOM does not use it
🗪
1:39:26Wonder what technique Jon was referring to
1:39:26Wonder what technique Jon was referring to
1:39:26Wonder what technique Jon was referring to
1:41:34mindmark42 Q: Could you explain the == 0000 1111 k-d side test thing again?
🗪
1:41:34mindmark42 Q: Could you explain the == 0000 1111 k-d side test thing again?
🗪
1:41:34mindmark42 Q: Could you explain the == 0000 1111 k-d side test thing again?
🗪
1:42:00k-d side testing: 0000 or 1111
🖌
1:42:00k-d side testing: 0000 or 1111
🖌
1:42:00k-d side testing: 0000 or 1111
🖌
1:47:00Walk through the k-d side testing code in RayCast()
📖
1:47:00Walk through the k-d side testing code in RayCast()
📖
1:47:00Walk through the k-d side testing code in RayCast()
📖
1:48:12mindmark42 Q: Yes, what is the initial t value?
🗪
1:48:12mindmark42 Q: Yes, what is the initial t value?
🗪
1:48:12mindmark42 Q: Yes, what is the initial t value?
🗪
1:49:07internationalizationist Q: Someone also mentioned learning OpenGL with its tutorials about deferred rendering and he said "be careful who you learn from". Is it (deferred rendering) has some pitfalls or something bad that only pro programmers know about? Just confused
🗪
1:49:07internationalizationist Q: Someone also mentioned learning OpenGL with its tutorials about deferred rendering and he said "be careful who you learn from". Is it (deferred rendering) has some pitfalls or something bad that only pro programmers know about? Just confused
🗪
1:49:07internationalizationist Q: Someone also mentioned learning OpenGL with its tutorials about deferred rendering and he said "be careful who you learn from". Is it (deferred rendering) has some pitfalls or something bad that only pro programmers know about? Just confused
🗪
1:49:44guybru5h_vi Q: You could theoretically go full forward using clustered shading. It makes using many lights fairly straightforward. I wrote a blog post about it a while ago.5 It also explains what most people mean as deferred and why it's good in principle
🗪
1:49:44guybru5h_vi Q: You could theoretically go full forward using clustered shading. It makes using many lights fairly straightforward. I wrote a blog post about it a while ago.5 It also explains what most people mean as deferred and why it's good in principle
🗪
1:49:44guybru5h_vi Q: You could theoretically go full forward using clustered shading. It makes using many lights fairly straightforward. I wrote a blog post about it a while ago.5 It also explains what most people mean as deferred and why it's good in principle
🗪
1:50:10Clustered rendering in DOOM6
📖
1:50:10Clustered rendering in DOOM6
📖
1:50:10Clustered rendering in DOOM6
📖
1:52:19guybru5h_vi Q: Call of Duty does it, but they call it z-binning and it's 10x crazier
🗪
1:52:19guybru5h_vi Q: Call of Duty does it, but they call it z-binning and it's 10x crazier
🗪
1:52:19guybru5h_vi Q: Call of Duty does it, but they call it z-binning and it's 10x crazier
🗪
1:53:14guybru5h_vi Q: This one7
🗪
1:53:14guybru5h_vi Q: This one7
🗪
1:53:14guybru5h_vi Q: This one7
🗪
1:55:56guybru5h_vi Q: It's faster but, god, is it harder to understand what they're doing
🗪
1:55:56guybru5h_vi Q: It's faster but, god, is it harder to understand what they're doing
🗪
1:55:56guybru5h_vi Q: It's faster but, god, is it harder to understand what they're doing
🗪
1:56:55guybru5h_vi Q: Worked faster in our engine, but it's early days yet
🗪
1:56:55guybru5h_vi Q: Worked faster in our engine, but it's early days yet
🗪
1:56:55guybru5h_vi Q: Worked faster in our engine, but it's early days yet
🗪
1:57:21sori_daijin I still think he was just mixing naming, problem is we can't ask him because he is angry about it
🗪
1:57:21sori_daijin I still think he was just mixing naming, problem is we can't ask him because he is angry about it
🗪
1:57:21sori_daijin I still think he was just mixing naming, problem is we can't ask him because he is angry about it
🗪
1:58:05srgpqt I think Carmack said deferred rendering doesn't work so well in VR
🗪
1:58:05srgpqt I think Carmack said deferred rendering doesn't work so well in VR
🗪
1:58:05srgpqt I think Carmack said deferred rendering doesn't work so well in VR
🗪
1:58:43rupan3 VR is the future
🗪
1:58:43rupan3 VR is the future
🗪
1:58:43rupan3 VR is the future
🗪
2:00:30Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter8
🗩
2:00:30Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter8
🗩
2:00:30Wrap it up with a plug of the Meow the Infinite printed comic Kickstarter8
🗩