[video output=day262 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Drawing Multi-frame Profile Graphs" vod_platform=youtube id=I9W5TVj4BT0 annotator=Miblo]
[1:04][Recap and set the stage for the day]
[3:29][Apologise to folks not on the 4coder bandwagon yet][quote 455]
[3:37][handmade_debug.cpp: Consider how to unify Element creation]
[10:26][handmade_debug.h: Add RootProfileElement to debug_state and pass that down the profiler system]
[14:38][Run the game and make sure that it works]
[16:26][Debugger: Step into RootProfile and erroneously follow the ParentGroup path]
[17:20]["Arrrgggghhhhhh"][quote 466]
[18:12][Make this a very quiet, dignified edit][quote 467]
[18:24][handmade_debug.cpp: Do AddElementToGroup in the CreateHierarchy path]
[18:47][Run the game and see that we're in better shape]
[19:21][handmade_debug.cpp: Simplify the ViewingElement code using RootProfileElement]
[20:42][Opine the low resolution][quote 468]
[21:03][handmade_debug.cpp: Simplify DrawFrameBars]
[26:11][Blackboard: How the events are stored]
[28:33][handmade_debug.h: Consider doing StoreEvent directly into the Element, without adding it to a Parent in CollateDebugRecords]
[30:31][Blackboard: Why this might not work]
[32:12][handmade_debug.cpp: Use debug_profile_node in DrawFrameBars]
[34:22][Run the game and stress test the profiler]
[39:27][handmade_debug.cpp: Switch to DrawProfileIn and make it take a debug_element RootElement]
[41:33][Run the game and view the profiler with the old display]
[42:18][Blackboard: Gracefully handling multiple events on a single frame]
[45:20][handmade_debug.h: Remove AggregateCount from debug_profile_node and pack it a little differently]
[48:12][handmade_debug.h: Remove TotalClocks from debug_element_frame]
[50:12][handmade_debug.cpp: Introduce GetTotalClocks in order to compute TotalClock on demand]
[53:53][Run the game and make sure the profiler still works]
[54:04][handmade_debug.cpp: Space the EventRects based on the TotalClock]
[58:38][Run the game and view our beautiful profiler]
[59:33][Q&A][:speech]
[1:00:02][@insobot][Relationship status it's complicated for the movement to be it's own main function inside?]
[1:01:30][@cvaucher][Reasons performance was so bad with the new debug view? Isn't this still way fewer tris than a typical 3D game? Is the framerate reasonable if you switch to solid rectangles vs outlines?]
[1:03:56][@boogie0815][Will you make the UI immediate mode?]
[1:04:04][@dudeinbasement1][Will the debug graphing update even if the game is paused?]
[1:04:28][@Longboolean][Right now the outlines on the profiler overlap each other. Makes it a little harder to make out the colors (or the change from one to the other). The obvious solution would be to draw them with a slight offset from the last each time, but are there any problems with that once the rectangles get really small?]
[1:05:07][@Mojobojo][Is our current timestep code framerate independent? Will the game's simulation run the same at any framerate?]
[1:06:54][@zennmystic][Are we going to do the batch way then?]
[1:07:23][@dudeinbasement1][(Off-topic) Have you ever defined structures inside of functions?]
[1:09:17][@sixdegreesofgaming][Is there any advantage to making physics dependent on framerate other than convenience?]
[1:11:18][Wrap it up][:speech]
[1:12:22][Promote 4coder][:speech]
[/video]
