[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]