Implementing Radix Sort
?
?

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: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:04Blackboard: 8-bits
22:04Blackboard: 8-bits
22:04Blackboard: 8-bits
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:26Q&A
🗩
1:02:26Q&A
🗩
1:02:26Q&A
🗩
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
🗩