Optimizing Render Target Blends and Clears
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:40Run the game and set the stage for the day
0:40Run the game and set the stage for the day
0:40Run the game and set the stage for the day
1:55handmade_render.cpp: Accelerate BlendRenderTarget() with SIMD instructions
1:55handmade_render.cpp: Accelerate BlendRenderTarget() with SIMD instructions
1:55handmade_render.cpp: Accelerate BlendRenderTarget() with SIMD instructions
11:06Run the game and see that it's fine
11:06Run the game and see that it's fine
11:06Run the game and see that it's fine
11:40handmade_render.cpp: Introduce ClearRectangle() based on BlendRenderTarget(), and make RenderCommandsToBitmap() call it
11:40handmade_render.cpp: Introduce ClearRectangle() based on BlendRenderTarget(), and make RenderCommandsToBitmap() call it
11:40handmade_render.cpp: Introduce ClearRectangle() based on BlendRenderTarget(), and make RenderCommandsToBitmap() call it
18:21Run the game and see how that does
18:21Run the game and see how that does
18:21Run the game and see how that does
19:27build.bat and win32_handmade.cpp: Switch to -Od and disable threading in order that we can step in to the code
19:27build.bat and win32_handmade.cpp: Switch to -Od and disable threading in order that we can step in to the code
19:27build.bat and win32_handmade.cpp: Switch to -Od and disable threading in order that we can step in to the code
21:13Debugger: Step in to ClearRectangle() and inspect the Color values
21:13Debugger: Step in to ClearRectangle() and inspect the Color values
21:13Debugger: Step in to ClearRectangle() and inspect the Color values
22:10handmade_render.cpp: Make ClearRectangle() correctly compute those Color values
22:10handmade_render.cpp: Make ClearRectangle() correctly compute those Color values
22:10handmade_render.cpp: Make ClearRectangle() correctly compute those Color values
23:46Debugger: Step in to ClearRectangle() and inspect the Sr values
23:46Debugger: Step in to ClearRectangle() and inspect the Sr values
23:46Debugger: Step in to ClearRectangle() and inspect the Sr values
25:05Blackboard: Operating on reciprocal square-root of X in such a way that we end up with the square-root
25:05Blackboard: Operating on reciprocal square-root of X in such a way that we end up with the square-root
25:05Blackboard: Operating on reciprocal square-root of X in such a way that we end up with the square-root
26:38handmade_opengl.cpp: OpenGLRenderCommands() glClearColor()
26:38handmade_opengl.cpp: OpenGLRenderCommands() glClearColor()
26:38handmade_opengl.cpp: OpenGLRenderCommands() glClearColor()
27:51Internet: Consult the EXT_framebuffer_sRGB documentation1
27:51Internet: Consult the EXT_framebuffer_sRGB documentation1
27:51Internet: Consult the EXT_framebuffer_sRGB documentation1
28:15handmade_render.cpp: Make ClearRectangle() operate in linear space, not gamma space
28:15handmade_render.cpp: Make ClearRectangle() operate in linear space, not gamma space
28:15handmade_render.cpp: Make ClearRectangle() operate in linear space, not gamma space
29:08Run the game and see that we're a little better
29:08Run the game and see that we're a little better
29:08Run the game and see that we're a little better
29:55handmade_render.cpp: Revert ClearRectangle() to operate in gamma space, and investigate why the clear color is not correct
29:55handmade_render.cpp: Revert ClearRectangle() to operate in gamma space, and investigate why the clear color is not correct
29:55handmade_render.cpp: Revert ClearRectangle() to operate in gamma space, and investigate why the clear color is not correct
31:59handmade_render.cpp: Make BlendRenderTarget() use the SourceColor in the blend
31:59handmade_render.cpp: Make BlendRenderTarget() use the SourceColor in the blend
31:59handmade_render.cpp: Make BlendRenderTarget() use the SourceColor in the blend
35:09Run the game and see that the alpha blending now works
35:09Run the game and see that the alpha blending now works
35:09Run the game and see that the alpha blending now works
35:41handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables at their full size
35:41handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables at their full size
35:41handmade_entity.cpp: Make UpdateAndRenderEntities() draw the traversables at their full size
36:42handmade_render.cpp: Investigate why the hero's body isn't being skewed correctly in the software renderer
36:42handmade_render.cpp: Investigate why the hero's body isn't being skewed correctly in the software renderer
36:42handmade_render.cpp: Investigate why the hero's body isn't being skewed correctly in the software renderer
37:43Run the game and demo the incorrect bending
37:43Run the game and demo the incorrect bending
37:43Run the game and demo the incorrect bending
38:44handmade_render.cpp: Trim out some superfluous stuff from DrawRectangleQuickly()
38:44handmade_render.cpp: Trim out some superfluous stuff from DrawRectangleQuickly()
38:44handmade_render.cpp: Trim out some superfluous stuff from DrawRectangleQuickly()
42:01Run the game and demo our bugs
42:01Run the game and demo our bugs
42:01Run the game and demo our bugs
42:58Debugger: Look through ClearRectangle() and consider what could be going wrong
42:58Debugger: Look through ClearRectangle() and consider what could be going wrong
42:58Debugger: Look through ClearRectangle() and consider what could be going wrong
47:10handmade_render.cpp: Make ClearRectangle() set the Color values in the 65534 space
47:10handmade_render.cpp: Make ClearRectangle() set the Color values in the 65534 space
47:10handmade_render.cpp: Make ClearRectangle() set the Color values in the 65534 space
47:23Run the game, see how close we are and wonder why we suddenly see pink upon switching back to the software renderer
47:23Run the game, see how close we are and wonder why we suddenly see pink upon switching back to the software renderer
47:23Run the game, see how close we are and wonder why we suddenly see pink upon switching back to the software renderer
48:17handmade_opengl.cpp: Prevent OpenGLDisplayBitmap() from doing the blending
48:17handmade_opengl.cpp: Prevent OpenGLDisplayBitmap() from doing the blending
48:17handmade_opengl.cpp: Prevent OpenGLDisplayBitmap() from doing the blending
49:03Run the game and see that we're good to go
49:03Run the game and see that we're good to go
49:03Run the game and see that we're good to go
50:37handmade_render.cpp: Investigate why DrawRectangleQuickly() is not bending the hero correctly
50:37handmade_render.cpp: Investigate why DrawRectangleQuickly() is not bending the hero correctly
50:37handmade_render.cpp: Investigate why DrawRectangleQuickly() is not bending the hero correctly
57:12handmade_render.cpp: Remove extraneous initialisations from DrawRectangleQuickly()α
57:12handmade_render.cpp: Remove extraneous initialisations from DrawRectangleQuickly()α
57:12handmade_render.cpp: Remove extraneous initialisations from DrawRectangleQuickly()α
58:52Blackboard: Doing the dot-product on unit vectors vs vectors with length
58:52Blackboard: Doing the dot-product on unit vectors vs vectors with length
58:52Blackboard: Doing the dot-product on unit vectors vs vectors with length
1:00:54Blackboard: Doing that in a non-orthogonal coordinate space
1:00:54Blackboard: Doing that in a non-orthogonal coordinate space
1:00:54Blackboard: Doing that in a non-orthogonal coordinate space
1:02:08Q&A
🗩
1:02:08Q&A
🗩
1:02:08Q&A
🗩
1:02:37krrsplat Earlier when that pink color showed up, that was the color you used long long ago when you were setting up the OpenGL renderer
🗪
1:02:37krrsplat Earlier when that pink color showed up, that was the color you used long long ago when you were setting up the OpenGL renderer
🗪
1:02:37krrsplat Earlier when that pink color showed up, that was the color you used long long ago when you were setting up the OpenGL renderer
🗪
1:02:56Blackboard: Why we were seeing the pink
1:02:56Blackboard: Why we were seeing the pink
1:02:56Blackboard: Why we were seeing the pink
1:04:48thesizik Are the PynX and V calculations correct?
🗪
1:04:48thesizik Are the PynX and V calculations correct?
🗪
1:04:48thesizik Are the PynX and V calculations correct?
🗪
1:05:16krrsplat As far as the vectors go for movement, can you just add U and V to get the new movement?
🗪
1:05:16krrsplat As far as the vectors go for movement, can you just add U and V to get the new movement?
🗪
1:05:16krrsplat As far as the vectors go for movement, can you just add U and V to get the new movement?
🗪
1:05:34bryanwwag Could normal maps be render targets here with appropriate enums / branching to blend / light, or do they still belong outside of the current render targets array?
🗪
1:05:34bryanwwag Could normal maps be render targets here with appropriate enums / branching to blend / light, or do they still belong outside of the current render targets array?
🗪
1:05:34bryanwwag Could normal maps be render targets here with appropriate enums / branching to blend / light, or do they still belong outside of the current render targets array?
🗪
1:06:14realist_01 Do you think you could transform this game into a network game that multiple players can have different kinds of character assets, and, if yes, will you consider doing it?
🗪
1:06:14realist_01 Do you think you could transform this game into a network game that multiple players can have different kinds of character assets, and, if yes, will you consider doing it?
🗪
1:06:14realist_01 Do you think you could transform this game into a network game that multiple players can have different kinds of character assets, and, if yes, will you consider doing it?
🗪
1:06:41thesizik As in, it looked like there might be an X-Y swap in those two variables
🗪
1:06:41thesizik As in, it looked like there might be an X-Y swap in those two variables
🗪
1:06:41thesizik As in, it looked like there might be an X-Y swap in those two variables
🗪
1:07:20bryanwwag Makes sense, I'm comparing it to deferred rendering, which I'm no expert on
🗪
1:07:20bryanwwag Makes sense, I'm comparing it to deferred rendering, which I'm no expert on
🗪
1:07:20bryanwwag Makes sense, I'm comparing it to deferred rendering, which I'm no expert on
🗪
1:08:27realist_01 You should do networking. You could charge for extra items or levels, etc. continuously, thus making you a "reliable" stream of money
🗪
1:08:27realist_01 You should do networking. You could charge for extra items or levels, etc. continuously, thus making you a "reliable" stream of money
🗪
1:08:27realist_01 You should do networking. You could charge for extra items or levels, etc. continuously, thus making you a "reliable" stream of money
🗪
1:08:37thesizik I mean you used an X variable when you meant a Y variable
🗪
1:08:37thesizik I mean you used an X variable when you meant a Y variable
🗪
1:08:37thesizik I mean you used an X variable when you meant a Y variable
🗪
1:10:26Blackboard: Inverting the matrix to solve for UV coordinates
1:10:26Blackboard: Inverting the matrix to solve for UV coordinates
1:10:26Blackboard: Inverting the matrix to solve for UV coordinates
1:13:30vorpleblade What is the blackboard software you are using?
🗪
1:13:30vorpleblade What is the blackboard software you are using?
🗪
1:13:30vorpleblade What is the blackboard software you are using?
🗪
1:13:41realist_01 Nub3sock asked if you would consider local multiplayer
🗪
1:13:41realist_01 Nub3sock asked if you would consider local multiplayer
🗪
1:13:41realist_01 Nub3sock asked if you would consider local multiplayer
🗪
1:14:29Miblo Speaking of normal maps, could we have used those to help sort the sprites? I know they don't give you 3D data, but is there anything in there that we could leverage?
🗪
1:14:29Miblo Speaking of normal maps, could we have used those to help sort the sprites? I know they don't give you 3D data, but is there anything in there that we could leverage?
🗪
1:14:29Miblo Speaking of normal maps, could we have used those to help sort the sprites? I know they don't give you 3D data, but is there anything in there that we could leverage?
🗪
1:16:45Wrap it up
🗩
1:16:45Wrap it up
🗩
1:16:45Wrap it up
🗩