[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Brainstorming about Z Bias" vod_platform=youtube id=3vUzT7JFMVc annotator=Miblo] [0:02][Recap and set the stage for the day][:speech] [1:35][Fix typos in EditableBoolean(), EditableSize() and Error() as per @KimJorgensen's bug report[ref site=GitHub page="HandmadeHero / cpp / FormatString bugs" url=https://github.com/HandmadeHero/cpp/issues/90]][:"error handling" :"string manipulation"] [10:41][Close issue 90[ref site=GitHub page="HandmadeHero / cpp / FormatString bugs" url=https://github.com/HandmadeHero/cpp/issues/90]][:admin :"error handling" :"string manipulation"] [11:42][Investigate @gingerBill's bug report 'Bug in `PushSize_` that could cause buffer overflow'[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:memory :research] [19:34][Insert assertions in PushSize_()][:memory] [23:19][Introduce IsPow2()][:mathematics] [29:14][Test Power of 2][:blackboard :mathematics] [35:58][Carefully scrutinise PushSize_() as per @gingerBill's bug report[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:memory :research] [37:12][Explicitly parenthesise the (Used + Size > Size) comparison in PushSize_()][:memory] [37:56][Conclude that the bug report is wrong[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:memory :research] [41:22][Check out C's operator precedence rules[ref title="C Operator Precedence Table" url=http://web.cse.ohio-state.edu/~babic.1/COperatorPrecedenceTable.pdf]][:language :mathematics :research] [42:34][Continue to investigate @gingerBill's bug report[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:memory :research] [45:29][Construct PushSize_() failure cases to address @gingerBill's bug report[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:memory] [52:16][Step through our PushSize_() test to see that it behaves well][:memory :run] [54:04][Construct a PushSize_() test in which our request is right on the boundary][:memory] [55:47][Step through our PushSize_() test to see that it behaves well][:memory :run] [58:01][Try allocating 4 MiB as the second, expansion-triggering allocation][:memory] [58:58][Step through our PushSize_() test to see that it behaves well][:memory :run] [59:39][Try allocating 4 MiB as the first allocation][:memory] [1:00:05][Step through our PushSize_() test to see that it behaves well][:memory :run] [1:01:30][Close issue 88 with a few words on the helpfulness of concrete repro-cases in bug reports[ref site=GitHub page="HandmadeHero / cpp / Bug in `PushSize_` that could cause buffer overflow" url=https://github.com/HandmadeHero/cpp/issues/88]][:admin] [1:04:17][A few words on judicious unit testing][:speech] [1:12:47][A final glance at the open issues[ref site=GitHub page="HandmadeHero / cpp / Issues" url=https://github.com/HandmadeHero/cpp/issues]][:research] [1:13:35][Consider hiding the assets of disabled alignment points][:"asset system" :run :ui] [1:16:26][Consider solving our 2D billboard asset Z-bias problem][:rendering :run] [1:20:43][Set up to express our Z-bias in CompileZBiasProgram()][:hardware :rendering :research] [1:23:39][Sprite Z-bias encoding][:blackboard :rendering] [1:28:24][How CompileZBiasProgram() is currently working][:hardware :rendering :research] [1:30:17][Adjusting sprite position in Y][:blackboard :rendering] [1:33:32][Imaginary encodings of sprite position and orientation][:blackboard :mathematics :rendering] [1:43:54][Don the tennis headband][:admin :hat] [1:44:55][Understanding ZBias in the case that sprites are drawn exactly upright][:blackboard :hat :mathematics :rendering] [1:50:11][Understanding ZBias in the case that sprites are drawn lying down a little][:blackboard :hat :mathematics :rendering] [1:53:24][Projecting in the vertex shader the sprite's Z positions to the passed in Z heights of the world plane][:blackboard :hat :mathematics :rendering] [1:58:23][Q&A][:hat :speech] [1:59:07][@vapenir][Q: What kind of testing (unit, replays, etc.) do you use on 1935 / have you used over the years? Is automated testing even really a thing at game studios?][:hat] [2:02:40][@uplinkcoder][Q: Any news on 1935?] [2:02:43][@gunngames][Q: For people who don't want to fuss with platform specific code, would you say SDL is a good solution?][:library :"platform layer"] [2:04:15][We're all done][:speech] [/video]