Multiple Software Render Targets ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter c Credits

Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Credits Menu

Enter Open URL (in new tab)
0:57Recap and set the stage for the day
0:57Recap and set the stage for the day
0:57Recap and set the stage for the day
1:31Debugger: Step into OpenGLRenderCommands() and inspect the Header
1:31Debugger: Step into OpenGLRenderCommands() and inspect the Header
1:31Debugger: Step into OpenGLRenderCommands() and inspect the Header
2:23handmade_render_group.cpp: Make PushRenderElement_() correctly compute the Entry->Offset
2:23handmade_render_group.cpp: Make PushRenderElement_() correctly compute the Entry->Offset
2:23handmade_render_group.cpp: Make PushRenderElement_() correctly compute the Entry->Offset
3:51Run the game and see how we're doing
3:51Run the game and see how we're doing
3:51Run the game and see how we're doing
4:45handmade_world_mode.cpp: Make AddStandardRoom() only generate one room, run the game and again assess our situation
4:45handmade_world_mode.cpp: Make AddStandardRoom() only generate one room, run the game and again assess our situation
4:45handmade_world_mode.cpp: Make AddStandardRoom() only generate one room, run the game and again assess our situation
5:38handmade_render_group.cpp: Ensure that PushRenderElement_() is correctly setting the Offset
5:38handmade_render_group.cpp: Ensure that PushRenderElement_() is correctly setting the Offset
5:38handmade_render_group.cpp: Ensure that PushRenderElement_() is correctly setting the Offset
6:27Run the game and see our baseline
6:27Run the game and see our baseline
6:27Run the game and see our baseline
6:30handmade_render_group.cpp: Tweak how BeginAggregateSortKey() and EndAggregateSortKey() work
6:30handmade_render_group.cpp: Tweak how BeginAggregateSortKey() and EndAggregateSortKey() work
6:30handmade_render_group.cpp: Tweak how BeginAggregateSortKey() and EndAggregateSortKey() work
11:04handmade_world_mode.cpp: Revert AddPlayer() to pushing the player sprites in logical order
11:04handmade_world_mode.cpp: Revert AddPlayer() to pushing the player sprites in logical order
11:04handmade_world_mode.cpp: Revert AddPlayer() to pushing the player sprites in logical order
11:41Run the game and identify that the head can still be sorted incorrectly when we have a cycle
11:41Run the game and identify that the head can still be sorted incorrectly when we have a cycle
11:41Run the game and identify that the head can still be sorted incorrectly when we have a cycle
14:12handmade_world_mode.cpp: Make AddStandardRoom() generate multiple rooms
14:12handmade_world_mode.cpp: Make AddStandardRoom() generate multiple rooms
14:12handmade_world_mode.cpp: Make AddStandardRoom() generate multiple rooms
14:42Run the game and find that we're now not getting those blinking tree bugs
14:42Run the game and find that we're now not getting those blinking tree bugs
14:42Run the game and find that we're now not getting those blinking tree bugs
16:03Run the game and consult the profiler
16:03Run the game and consult the profiler
16:03Run the game and consult the profiler
17:20build.bat: Switch to -O2, run the game and again consult the profiler
17:20build.bat: Switch to -O2, run the game and again consult the profiler
17:20build.bat: Switch to -O2, run the game and again consult the profiler
19:24Run the game and demo the problem with alpha blending
19:24Run the game and demo the problem with alpha blending
19:24Run the game and demo the problem with alpha blending
20:52handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables in red
20:52handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables in red
20:52handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables in red
21:25Run the game and demo the alpha blending problem
21:25Run the game and demo the alpha blending problem
21:25Run the game and demo the alpha blending problem
22:06handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables half as wide as normal
22:06handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables half as wide as normal
22:06handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables half as wide as normal
22:36Run the game and most clearly demo the alpha blending problem
22:36Run the game and most clearly demo the alpha blending problem
22:36Run the game and most clearly demo the alpha blending problem
23:50handmade_render.cpp: Consider introducing the notion of a coherent block for SortEntries() to use
23:50handmade_render.cpp: Consider introducing the notion of a coherent block for SortEntries() to use
23:50handmade_render.cpp: Consider introducing the notion of a coherent block for SortEntries() to use
25:56Run the game and toggle between the software and hardware renderers
25:56Run the game and toggle between the software and hardware renderers
25:56Run the game and toggle between the software and hardware renderers
27:24Blackboard: Multiple Render Targets
27:24Blackboard: Multiple Render Targets
27:24Blackboard: Multiple Render Targets
31:46handmade_render.cpp: Make SoftwareRenderCommands() take a TempArena, take a renamed FinalOutputTarget and reserve a second OutputTarget
31:46handmade_render.cpp: Make SoftwareRenderCommands() take a TempArena, take a renamed FinalOutputTarget and reserve a second OutputTarget
31:46handmade_render.cpp: Make SoftwareRenderCommands() take a TempArena, take a renamed FinalOutputTarget and reserve a second OutputTarget
36:59"Oh, we VirtualAlloc'd that. Wow, aren't we fancy!"α
36:59"Oh, we VirtualAlloc'd that. Wow, aren't we fancy!"α
36:59"Oh, we VirtualAlloc'd that. Wow, aren't we fancy!"α
37:14handmade_render.cpp: Make SoftwareRenderCommands() pass to PushSize() a call to AlignNoClear(16) in order to align it to 16-byte boundaries
37:14handmade_render.cpp: Make SoftwareRenderCommands() pass to PushSize() a call to AlignNoClear(16) in order to align it to 16-byte boundaries
37:14handmade_render.cpp: Make SoftwareRenderCommands() pass to PushSize() a call to AlignNoClear(16) in order to align it to 16-byte boundaries
37:41Run the game and see nothing on the screen
37:41Run the game and see nothing on the screen
37:41Run the game and see nothing on the screen
37:59handmade_render.cpp: Make SoftwareRenderCommands() copy the pixels from the OutputTarget in the FinalOutputTarget
37:59handmade_render.cpp: Make SoftwareRenderCommands() copy the pixels from the OutputTarget in the FinalOutputTarget
37:59handmade_render.cpp: Make SoftwareRenderCommands() copy the pixels from the OutputTarget in the FinalOutputTarget
38:49Run the game and see that we've made our renderer slower
38:49Run the game and see that we've made our renderer slower
38:49Run the game and see that we've made our renderer slower
39:03Blackboard: What SoftwareRenderCommands() is now doing
39:03Blackboard: What SoftwareRenderCommands() is now doing
39:03Blackboard: What SoftwareRenderCommands() is now doing
39:37handmade_render.cpp: Consider enabling SoftwareRenderCommands() to render to multiple render targets
39:37handmade_render.cpp: Consider enabling SoftwareRenderCommands() to render to multiple render targets
39:37handmade_render.cpp: Consider enabling SoftwareRenderCommands() to render to multiple render targets
41:41handmade_render_group.h: Add a RenderTargetIndex to the render_entry_cliprect struct
41:41handmade_render_group.h: Add a RenderTargetIndex to the render_entry_cliprect struct
41:41handmade_render_group.h: Add a RenderTargetIndex to the render_entry_cliprect struct
43:14handmade_render_group.cpp: Make PushClipRect() take a RenderTargetIndex in order that it can specify the RenderTarget to which it wants to render
43:14handmade_render_group.cpp: Make PushClipRect() take a RenderTargetIndex in order that it can specify the RenderTarget to which it wants to render
43:14handmade_render_group.cpp: Make PushClipRect() take a RenderTargetIndex in order that it can specify the RenderTarget to which it wants to render
44:55handmade_debug.h: Add RenderTarget to the debug_state struct
44:55handmade_debug.h: Add RenderTarget to the debug_state struct
44:55handmade_debug.h: Add RenderTarget to the debug_state struct
45:21handmade_render_group.cpp: Make PushClipRect() set RenderTargetIndex
45:21handmade_render_group.cpp: Make PushClipRect() set RenderTargetIndex
45:21handmade_render_group.cpp: Make PushClipRect() set RenderTargetIndex
46:11handmade_platform.h: Add MaxRenderTargetIndex to the game_render_commands struct
46:11handmade_platform.h: Add MaxRenderTargetIndex to the game_render_commands struct
46:11handmade_platform.h: Add MaxRenderTargetIndex to the game_render_commands struct
46:34handmade_render.cpp: Make SoftwareRenderCommands() clone the render buffers based on that RenderTargetCount
46:34handmade_render.cpp: Make SoftwareRenderCommands() clone the render buffers based on that RenderTargetCount
46:34handmade_render.cpp: Make SoftwareRenderCommands() clone the render buffers based on that RenderTargetCount
49:53handmade_render.h: Change OutputTarget to be a RenderTargets array in the tile_render_work struct
49:53handmade_render.h: Change OutputTarget to be a RenderTargets array in the tile_render_work struct
49:53handmade_render.h: Change OutputTarget to be a RenderTargets array in the tile_render_work struct
50:21handmade_render.cpp: Make RenderCommandsToBitmap() take a RenderTargets array
50:21handmade_render.cpp: Make RenderCommandsToBitmap() take a RenderTargets array
50:21handmade_render.cpp: Make RenderCommandsToBitmap() take a RenderTargets array
52:54handmade_debug.cpp: Make DEBUGBegin set the RenderTarget to 1
52:54handmade_debug.cpp: Make DEBUGBegin set the RenderTarget to 1
52:54handmade_debug.cpp: Make DEBUGBegin set the RenderTarget to 1
53:33Run the game and watch the debug information disappear into that other RenderTarget
53:33Run the game and watch the debug information disappear into that other RenderTarget
53:33Run the game and watch the debug information disappear into that other RenderTarget
54:07Q&A
54:07Q&A
54:07Q&A
54:51popcorn Next week?
54:51popcorn Next week?
54:51popcorn Next week?
56:11necktrox A bit unrelated to the project, but what do you think about the Rust language?
56:11necktrox A bit unrelated to the project, but what do you think about the Rust language?
56:11necktrox A bit unrelated to the project, but what do you think about the Rust language?
56:39billdstrong So when do we think we will be ready for the new graphics assets? I'm excited
56:39billdstrong So when do we think we will be ready for the new graphics assets? I'm excited
56:39billdstrong So when do we think we will be ready for the new graphics assets? I'm excited
57:26sn0uk Can you explain what this game is?
57:26sn0uk Can you explain what this game is?
57:26sn0uk Can you explain what this game is?
59:16Miblo Is writing to that other currently invisible render target much / any less computationally expensive than also sending it to the display?
59:16Miblo Is writing to that other currently invisible render target much / any less computationally expensive than also sending it to the display?
59:16Miblo Is writing to that other currently invisible render target much / any less computationally expensive than also sending it to the display?
1:00:50soysaucethekid With multiple rendering targets, are there other effects you can do other than the alpha blending?
1:00:50soysaucethekid With multiple rendering targets, are there other effects you can do other than the alpha blending?
1:00:50soysaucethekid With multiple rendering targets, are there other effects you can do other than the alpha blending?
1:02:04necktrox Are you going to support shaders and, if so, will you try to support multiple render targets in the shaders?
1:02:04necktrox Are you going to support shaders and, if so, will you try to support multiple render targets in the shaders?
1:02:04necktrox Are you going to support shaders and, if so, will you try to support multiple render targets in the shaders?
1:04:02pandnh4 Are you excited to get an AArch64 toolchain up and running to get this thing to run on a Raspberry Pi 3?
1:04:02pandnh4 Are you excited to get an AArch64 toolchain up and running to get this thing to run on a Raspberry Pi 3?
1:04:02pandnh4 Are you excited to get an AArch64 toolchain up and running to get this thing to run on a Raspberry Pi 3?
1:04:37lord_marshall_ Are you still working full time? Why only stream one hour a night?
1:04:37lord_marshall_ Are you still working full time? Why only stream one hour a night?
1:04:37lord_marshall_ Are you still working full time? Why only stream one hour a night?
1:04:50se24vad How would you go about rendering huge tilemaps? Some batching techniques, or any tips?
1:04:50se24vad How would you go about rendering huge tilemaps? Some batching techniques, or any tips?
1:04:50se24vad How would you go about rendering huge tilemaps? Some batching techniques, or any tips?
1:06:05billdstrong Would that be a good technique to use to create an overhead map?
1:06:05billdstrong Would that be a good technique to use to create an overhead map?
1:06:05billdstrong Would that be a good technique to use to create an overhead map?
1:07:16insobot Soa and aos questions can be made with as minimal interference in timing the host operating
1:07:16insobot Soa and aos questions can be made with as minimal interference in timing the host operating
1:07:16insobot Soa and aos questions can be made with as minimal interference in timing the host operating
1:07:37Close down
1:07:37Close down
1:07:37Close down