[video output=day302 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Confirming No Total Ordering" vod_platform=youtube id=DH_QepPBeaI annotator=Miblo]
[1:15][handmade_render_group.cpp: Correctly compute the SpriteBound values in GetBoundFor()]
[2:23][Recap and set the stage for the day]
[6:42][handmade_render_group.cpp: Enable SortEntries() to do a total ordering check]
[12:14][Run the game, try doing the new check and hit our Assertion]
[12:46][Debugger: Inspect the SortKey values for EntryA and EntryB]
[15:28][handmade_sort.cpp: Temporarily change the Assert in SortEntries() to a BreakHere, and count the SortErrors]
[17:22][Debugger: Break into SortEntries() to see how many sort errors there were]
[18:13][Blackboard: Sort Partial Ordering Problem]
[20:43][Blackboard: Turning our Partial Ordering into a Total Ordering]
[24:00][handmade_sort.cpp: Consider making IsInFrontOf() sort by distance from the camera]
[26:20][Blackboard: Sorting by distance from the camera]
[29:43][Blackboard: Orthographic camera]
[32:55][Blackboard: Will taking the topmost point of cards be sufficient?]
[35:25][handmade_sort.cpp: Introduce BuildSpriteGraph()]
[40:50][Blackboard: Graph Theory]
[43:14][Blackboard: Directed Graph]
[44:27][Blackboard: Directed Acyclic Graph]
[46:43][handmade_sort.cpp: Continue implementing BuildSpriteGraph()]
[49:45][handmade_math.h: Introduce a version of RectanglesIntersect() that takes rectangle2]
[52:31][handmade_sort.cpp: Consider partitioning the screen in order to build this graph and potentially using the Z-buffer]
[55:40][handmade_sort.cpp: Consider leveraging the screen partitioning in order to optimise the software renderer]
[56:15][Q&A][:speech]
[57:03][@roam00010011][How much more work would you have to do to get a full 3D sorting?]
[58:47][@roam00010011][I mean, use fake 3D data, since our cards are essentially flat, we can give an epsilon width to it for the sorting]
[59:15][Blackboard: Sorting 3D objects]
[1:02:38][Blackboard: Sorting all entities in a linear total ordering]
[1:10:55][Blackboard: Common problematic cases in Handmade Hero]
[1:14:23][@insofaras][Sorry if this was already answered, but what was the issue with a "return a_z != b_z ? a_z - b_z \: a_y - b_y" style total ordering?]
[1:14:41][Blackboard: The problem with sorting heroes behind walls on rugs on tiles]
[1:19:02][@insofaras][Would the Y then Z sort work if Z is quantized to room layers, and sprites are split where they cross layers (and maybe the ground is special cased)?]
[1:20:10][Wind it down][:speech]
[/video]
