0:47Recap and set the stage for the day
0:47Recap and set the stage for the day
0:47Recap and set the stage for the day
1:22handmade_render_group.cpp: Pull out the BubbleSort functionality into its own function
1:22handmade_render_group.cpp: Pull out the BubbleSort functionality into its own function
1:22handmade_render_group.cpp: Pull out the BubbleSort functionality into its own function
2:40Struggle with the headphone cable
2:40Struggle with the headphone cable
2:40Struggle with the headphone cable
3:49"I'm still being oppressed by The Cable Man"α
3:49"I'm still being oppressed by The Cable Man"α
3:49"I'm still being oppressed by The Cable Man"α
3:55Blackboard: Radix sort
3:55Blackboard: Radix sort
3:55Blackboard: Radix sort
4:42Blackboard: "Stable sort"
4:42Blackboard: "Stable sort"
4:42Blackboard: "Stable sort"
9:54Blackboard: "Some number of successive stable sorts on some part of the sort key"
9:54Blackboard: "Some number of successive stable sorts on some part of the sort key"
9:54Blackboard: "Some number of successive stable sorts on some part of the sort key"
22:44Blackboard: How radix sort works
22:44Blackboard: How radix sort works
22:44Blackboard: How radix sort works
27:34handmade_render_group.cpp: Introduce RadixSort
27:34handmade_render_group.cpp: Introduce RadixSort
27:34handmade_render_group.cpp: Introduce RadixSort
39:22handmade_render_group.cpp: Introduce SortKeyToU32β
39:22handmade_render_group.cpp: Introduce SortKeyToU32β
39:22handmade_render_group.cpp: Introduce SortKeyToU32β
39:43Run the game and hit an assertion
39:43Run the game and hit an assertion
39:43Run the game and hit an assertion
40:04Debugger: Step through RadixSort and inspect Dest, First and Temp
40:04Debugger: Step through RadixSort and inspect Dest, First and Temp
40:04Debugger: Step through RadixSort and inspect Dest, First and Temp
40:57Blackboard: 32-bit IEEE float
40:57Blackboard: 32-bit IEEE float
40:57Blackboard: 32-bit IEEE float
45:37Debugger: Step into SortEntries and inspect Entries
45:37Debugger: Step into SortEntries and inspect Entries
45:37Debugger: Step into SortEntries and inspect Entries
49:05handmade_render_group.cpp: Cast to SortKey to u32
49:05handmade_render_group.cpp: Cast to SortKey to u32
49:05handmade_render_group.cpp: Cast to SortKey to u32
49:25Debugger: Inspect the casted Entries
49:25Debugger: Inspect the casted Entries
49:25Debugger: Inspect the casted Entries
51:30handmade_render_group.cpp: Consider inverting the meaning of the bits
51:30handmade_render_group.cpp: Consider inverting the meaning of the bits
51:30handmade_render_group.cpp: Consider inverting the meaning of the bits
52:15Blackboard: On flipping the bits
52:15Blackboard: On flipping the bits
52:15Blackboard: On flipping the bits
53:03handmade_render_group.cpp: Set Result = Result in SortKeyToU32
53:03handmade_render_group.cpp: Set Result = Result in SortKeyToU32
53:03handmade_render_group.cpp: Set Result = Result in SortKeyToU32
53:45Debugger: Step into SortKeyToU32 and inspect Result
53:45Debugger: Step into SortKeyToU32 and inspect Result
53:45Debugger: Step into SortKeyToU32 and inspect Result
55:39handmade_render_group.cpp: Feed some basic values to SortEntries and inspect them
55:39handmade_render_group.cpp: Feed some basic values to SortEntries and inspect them
55:39handmade_render_group.cpp: Feed some basic values to SortEntries and inspect them
1:00:41Baby Owl of Shame Moment: We need to iterate on the ByteIndex in eights
1:00:41Baby Owl of Shame Moment: We need to iterate on the ByteIndex in eights
1:00:41Baby Owl of Shame Moment: We need to iterate on the ByteIndex in eights
1:01:33Run the game and see that it works now
1:01:33Run the game and see that it works now
1:01:33Run the game and see that it works now
1:02:54ratchetfreak Why didn't you build merge sort from the bottom up? It makes ping-ponging the buffers much easier
🗪
1:02:54ratchetfreak Why didn't you build merge sort from the bottom up? It makes ping-ponging the buffers much easier
🗪
1:02:54ratchetfreak Why didn't you build merge sort from the bottom up? It makes ping-ponging the buffers much easier
🗪
1:03:56fod669 Your radix sort looks like it's O(8n) because you're doing two passes over the list per byte. Couldn't you make it O(5n) by getting all the offsets / counts in one pass at the cost of 3 more 256 element arrays?
🗪
1:03:56fod669 Your radix sort looks like it's O(8n) because you're doing two passes over the list per byte. Couldn't you make it O(5n) by getting all the offsets / counts in one pass at the cost of 3 more 256 element arrays?
🗪
1:03:56fod669 Your radix sort looks like it's O(8n) because you're doing two passes over the list per byte. Couldn't you make it O(5n) by getting all the offsets / counts in one pass at the cost of 3 more 256 element arrays?
🗪
1:06:19elxenoaizd Off-topic: I'm a bit confused about axis-angle rotations vs quaternion rotations. I thought quaternions do represent an angle and axis of rotation. What's the difference?
🗪
1:06:19elxenoaizd Off-topic: I'm a bit confused about axis-angle rotations vs quaternion rotations. I thought quaternions do represent an angle and axis of rotation. What's the difference?
🗪
1:06:19elxenoaizd Off-topic: I'm a bit confused about axis-angle rotations vs quaternion rotations. I thought quaternions do represent an angle and axis of rotation. What's the difference?
🗪
1:07:05Blackboard: "Euler angles"
1:07:05Blackboard: "Euler angles"
1:07:05Blackboard: "Euler angles"
1:08:29Blackboard: "axis / angle"
1:08:29Blackboard: "axis / angle"
1:08:29Blackboard: "axis / angle"
1:09:12Blackboard: "quaternion"
1:09:12Blackboard: "quaternion"
1:09:12Blackboard: "quaternion"
1:10:17Blackboard: "exp map"
1:10:17Blackboard: "exp map"
1:10:17Blackboard: "exp map"
1:11:53insofaras I noticed the frame times are growing quite large now. Are you planning to optimize the software renderer further or switch to a hardware accelerated scheme?
🗪
1:11:53insofaras I noticed the frame times are growing quite large now. Are you planning to optimize the software renderer further or switch to a hardware accelerated scheme?
🗪
1:11:53insofaras I noticed the frame times are growing quite large now. Are you planning to optimize the software renderer further or switch to a hardware accelerated scheme?
🗪
1:12:25win32_handmade.cpp: Switch down to 960x540, disable the debug system and run the game
1:12:25win32_handmade.cpp: Switch down to 960x540, disable the debug system and run the game
1:12:25win32_handmade.cpp: Switch down to 960x540, disable the debug system and run the game
1:14:13Shut down the stream
🗩
1:14:13Shut down the stream
🗩
1:14:13Shut down the stream
🗩