43 lines
3.2 KiB
Plaintext
43 lines
3.2 KiB
Plaintext
|
[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Breaking Sprites into Layers" vod_platform=youtube id=I3pW6bQcxWE annotator=Miblo]
|
||
|
[0:43][Recap and set the stage for the day]
|
||
|
[3:01][Run the game and see where we're at]
|
||
|
[5:20][handmade_entity.cpp: Stop UpdateAndRenderEntities() from calling ConvertToLayerRelative() and instead calculate the RelativeLayer as worked out yesterday]
|
||
|
[8:08][handmade_entity.cpp: Make UpdateAndRenderEntities() get a WorldPos from MapIntoChunkSpace() in order to compute that RelativeLayer]
|
||
|
[10:29][Run the game and see that we're in much better shape]
|
||
|
[11:02][Consider introducing a concept in the render of the layer Z and the actual Z value]
|
||
|
[12:44][handmade_render.h: Add ChunkZ to the sprite_bound struct]
|
||
|
[13:14][handmade_render.cpp: Make IsInFrontOf() test that ChunkZ]
|
||
|
[15:07][handmade_render_group.h: Add ChunkZ to the object_transform struct]
|
||
|
[15:40][handmade_render_group.cpp: Make GetBoundFor() set the ChunkZ]
|
||
|
[16:04][Run the game and see that that doesn't affect anything]
|
||
|
[16:21][handmade_entity.cpp: Make UpdateAndRenderEntities() set that ChunkZ]
|
||
|
[16:43][See how that affects the sort]
|
||
|
[18:21][handmade_entity.cpp: Make UpdateAndRenderEntities() expand the bounds of the traversables to draw them like actual tiles]
|
||
|
[19:34][Run the game and consider our cycling situation]
|
||
|
[20:52][handmade_render.cpp: Shrink the sizes passed to the RectanglesIntersect() call in BuildSpriteGraph()]
|
||
|
[22:03][handmade_debug.cpp: Make DEBUGStart() set the ChunkZ for the debug elements]
|
||
|
[23:13][Run the game and toggle on the debug groups]
|
||
|
[24:55][Consider how to leverage the layer data in the renderer]
|
||
|
[28:11][handmade_entity.cpp: Simplify UpdateAndRenderEntities() so that it only knows about the alpha and the fog levels]
|
||
|
[32:25][handmade_entity.cpp: Turn off the Alpha]
|
||
|
[33:35][handmade_render_group.cpp: Make StoreColor() take a pointer to an object_transform and change all other functions to take a pointer to it]
|
||
|
[40:43]["In theory this is a computer, yes?"][quote 507]
|
||
|
[41:08][handmade_entity.cpp: Make UpdateAndRenderEntities() set the Color and tColor for the top layer and the far fog]
|
||
|
[43:00][Run the game, break into UpdateAndRenderEntities() and inspect the EntityTransform values]
|
||
|
[43:57][handmade_entity.cpp: Make UpdateAndRenderEntities() reverse the TestAlpha computation]
|
||
|
[44:40][handmade_world_mode.cpp: Make AddStandardRoom() generate multiple layers of rooms]
|
||
|
[45:00][Run the game, see how those layers of rooms look and consult the profiler]
|
||
|
[45:39][build.bat: Switch to -O2, run the game and consult the profiler again]
|
||
|
[46:16]["Oh my god! Why are there so many heads following me?"][quote 508]
|
||
|
[48:41][Consider always rendering everyone with the ChunkZ they started with]
|
||
|
[50:34][Blackboard: Sort Barriers]
|
||
|
[53:02][handmade_render.h: #define SPRITE_BARRIER_OFFSET_VALUE]
|
||
|
[53:57][handmade_render.cpp: Make BuildSpriteGraph() take and return NodeIndexA, which SortEntries() will pass to it]
|
||
|
[57:07][Run the game and see that we have no change]
|
||
|
[57:22][build.bat: Switch back to -Od, run the game and enable the sort groups]
|
||
|
[58:15][Q&A]
|
||
|
[58:44][@Miblo][Where are all those familiars coming from?!]
|
||
|
[1:01:15][@jheringa][Snake looks broken?]
|
||
|
[1:06:47][Wrap it up]
|
||
|
[/video]
|