38 lines
2.5 KiB
Plaintext
38 lines
2.5 KiB
Plaintext
[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Implementing Radix Sort" vod_platform=youtube id=jhGDPoSLJMo annotator=Miblo]
|
|
[0:47][Recap and set the stage for the day]
|
|
[1:22][handmade_render_group.cpp: Pull out the BubbleSort functionality into its own function]
|
|
[2:40][Struggle with the headphone cable]
|
|
[3:49]["I'm still being oppressed by The Cable Man"][quote 349]
|
|
[3:55][Blackboard: Radix sort]
|
|
[4:42][Blackboard: "Stable sort"]
|
|
[9:54][Blackboard: "Some number of successive stable sorts on some part of the sort key"]
|
|
[22:04][Blackboard: 8-bits]
|
|
[22:44][Blackboard: How radix sort works]
|
|
[27:34][handmade_render_group.cpp: Introduce RadixSort]
|
|
[39:22][handmade_render_group.cpp: Introduce SortKeyToU32][quote 350]
|
|
[39:43][Run the game and hit an assertion]
|
|
[40:04][Debugger: Step through RadixSort and inspect Dest, First and Temp]
|
|
[40:57][Blackboard: 32-bit IEEE float]
|
|
[45:37][Debugger: Step into SortEntries and inspect Entries]
|
|
[49:05][handmade_render_group.cpp: Cast to SortKey to u32]
|
|
[49:25][Debugger: Inspect the casted Entries]
|
|
[51:30][handmade_render_group.cpp: Consider inverting the meaning of the bits]
|
|
[52:15][Blackboard: On flipping the bits]
|
|
[53:03][handmade_render_group.cpp: Set Result = ~Result in SortKeyToU32]
|
|
[53:45][Debugger: Step into SortKeyToU32 and inspect Result]
|
|
[55:39][handmade_render_group.cpp: Feed some basic values to SortEntries and inspect them]
|
|
[1:00:41][Baby Owl of Shame Moment: We need to iterate on the ByteIndex in eights]
|
|
[1:01:33][Run the game and see that it works now]
|
|
[1:02:26][Q&A]
|
|
[1:02:54][@ratchetfreak][Why didn't you build merge sort from the bottom up? It makes ping-ponging the buffers much easier]
|
|
[1:03:56][@fod669][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:19][@elxenoaizd][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:05][Blackboard: "Euler angles"]
|
|
[1:08:29][Blackboard: "axis / angle"]
|
|
[1:09:12][Blackboard: "quaternion"]
|
|
[1:10:17][Blackboard: "exp map"]
|
|
[1:11:53][@insofaras][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:25][win32_handmade.cpp: Switch down to 960x540, disable the debug system and run the game]
|
|
[1:14:13][Shut down the stream]
|
|
[/video]
|