[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Disabling Sort for Debug Overlays" vod_platform=youtube id=9ZUndaaFNzg annotator=Miblo] [0:08][Recap and set the stage for the day] [1:03][Consider how to address the problem of sorting the debug overlay] [3:26][Run the game, toggle on the sort groups and see the extent of the sorting in the debug overlay] [4:34][build.bat: Temporarily switch to -O2, run the game and consult the profiler] [5:50][handmade_debug.cpp: Consider how DrawFrameBars() could aggregate the rectangles] [7:14][handmade_render_group.h: Introduce render_entry_rectangle_batch and render_entry_bitmap_batch structs] [10:28][handmade_debug.cpp: Make DrawFrameBars() initialise a batch to pass to PushRect()] [13:15][handmade_render_group.cpp: Begin to implement BeginRectangleBatch() and EndBatch()] [16:41][handmade_render_group.h: Introduce rectangle_batch struct] [17:33][handmade_render_group.cpp: Implement BeginRectangleBatch() as NewRectangleBatch() and leave out EndBatch() for now] [22:03][handmade_render_group.cpp: Consider how the SortKey aggregation works] [25:23][handmade_render_group.cpp: Make NewRectangleBatch() take SortZ and introduce a version of PushRect() that takes a rectangle_batch] [33:30][handmade_render_group.cpp: Consider how to aggregate the bounds] [35:02][handmade_render_group.cpp: Revert everything, in favour of turning off the sorting for the debug overlay] [38:20][handmade_render.cpp: Enable SortEntries() to skip sorting and simplify BuildSpriteGraph()] [44:31][handmade_render.cpp: Introduce UnsortedOutput()] [47:22][Run the game and consult the profiler] [47:38][handmade_render_group.cpp: Make PushSortBarrier() take a TurnOffSorting boolean and DEBUGEnd() set that value] [50:55][Run the game and find that the debug overlay is now unsorted] [51:51][handmade_debug_ui.cpp: Change the order in which TextOp() and BasicTextElement() draw] [53:00][Run the game and consult the profiler] [54:18][handmade_debug_ui.cpp: Enable the tooltips to be drawn last] [56:26][handmade_debug_ui.cpp: Introduce DrawTooltips() and rework AddTooltip()] [1:01:52][handmade_debug.cpp: Make DEBUGEnd() call DrawTooltips()] [1:03:03][Run the game and see the tooltips correctly hovering] [1:03:46][Q&A] [1:05:31][@internal_static_void][Is internal a #define static internal] [1:05:39][@anonymous519][Could you talk a bit about the metaprogramming stuff you use at work? I'm kind of annoyed at the limitations of C/C++ and it looks like the JAI compiler won't be released anytime soon. Do you actually parse the code and construct an AST, or is it simpler than that?] [1:05:57][@internal_static_void][Also, are you a fan of templates or do you use void * instead] [1:06:09][@mr4thdimention][Why was the grouping approach for speeding up the debug sorting the first one you tried? Would it have been better in some way?] [1:08:31][@internal_static_void][So would you recommend using a .bat file or bash script over a cmake file, for instance] [1:09:41][@internal_static_void][And finally, at your work are there any people that program in OOP, or are they shunned and thrown out?] [1:11:04][@dr_s80][Related to yesterday's sim region issue, would it be feasible to merge overlapping regions, and then make a pass to slice it back up into non-overlapping regions?] [1:11:30][@sean_bryant][Can you imagine any scenarios where batched rendering might be useful in Handmade Hero?] [1:12:06][@anonymous519][I've only recently started to think about metaprogramming. Not expecting you to go in-depth, but could you briefly list some of the features you've implemented?] [1:12:24][@longboolean][Will you be composing the music / SFX for Handmade Hero (if any) or do you have someone else doing that?] [1:14:44][That's about it] [/video]