Fog and Alpha for Layers ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
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)
2:07Recap and set the stage for the day
2:07Recap and set the stage for the day
2:07Recap and set the stage for the day
3:36handmade_world_mode.cpp: Set Volumes to not be Upright in UpdateAndRenderWorld
3:36handmade_world_mode.cpp: Set Volumes to not be Upright in UpdateAndRenderWorld
3:36handmade_world_mode.cpp: Set Volumes to not be Upright in UpdateAndRenderWorld
4:38Run the game and see the difference that makes
4:38Run the game and see the difference that makes
4:38Run the game and see the difference that makes
9:31handmade_render_group.h: Make GlobalAlpha in render_group a v4 and rename it to GlobalModulate
9:31handmade_render_group.h: Make GlobalAlpha in render_group a v4 and rename it to GlobalModulate
9:31handmade_render_group.h: Make GlobalAlpha in render_group a v4 and rename it to GlobalModulate
10:41Consider clearly distinguishing between colours that have premultiplied alpha and those that don't
10:41Consider clearly distinguishing between colours that have premultiplied alpha and those that don't
10:41Consider clearly distinguishing between colours that have premultiplied alpha and those that don't
12:39handmade_render_group.cpp: Introduce StoreColor and make PushBitmap, PushRect and Clear call it
12:39handmade_render_group.cpp: Introduce StoreColor and make PushBitmap, PushRect and Clear call it
12:39handmade_render_group.cpp: Introduce StoreColor and make PushBitmap, PushRect and Clear call it
14:25Blackboard: Hadamard Product
14:25Blackboard: Hadamard Product
14:25Blackboard: Hadamard Product
17:05handmade_render_group.h: Add tGlobalColor and GlobalColor to render_group to allow us to do a linear blend as well as a modulate
17:05handmade_render_group.h: Add tGlobalColor and GlobalColor to render_group to allow us to do a linear blend as well as a modulate
17:05handmade_render_group.h: Add tGlobalColor and GlobalColor to render_group to allow us to do a linear blend as well as a modulate
20:08handmade_render_group.cpp: Pass the Group to the StoreColor calls
20:08handmade_render_group.cpp: Pass the Group to the StoreColor calls
20:08handmade_render_group.cpp: Pass the Group to the StoreColor calls
21:11Blackboard: Fade vs Haze
21:11Blackboard: Fade vs Haze
21:11Blackboard: Fade vs Haze
22:22handmade_world_mode.cpp: Conditionally compute the tGlobalColor and GlobalColor for fade and haze in UpdateAndRenderWorld
22:22handmade_world_mode.cpp: Conditionally compute the tGlobalColor and GlobalColor for fade and haze in UpdateAndRenderWorld
22:22handmade_world_mode.cpp: Conditionally compute the tGlobalColor and GlobalColor for fade and haze in UpdateAndRenderWorld
25:11Run the game and note that we're not handling alpha multiplication correctly
25:11Run the game and note that we're not handling alpha multiplication correctly
25:11Run the game and note that we're not handling alpha multiplication correctly
26:04handmade_render.cpp: Stop DrawRectangle, DrawRectangleSlowly and DrawRectangleQuickly from premultiplying the alpha
26:04handmade_render.cpp: Stop DrawRectangle, DrawRectangleSlowly and DrawRectangleQuickly from premultiplying the alpha
26:04handmade_render.cpp: Stop DrawRectangle, DrawRectangleSlowly and DrawRectangleQuickly from premultiplying the alpha
27:20handmade_render_group.h: Rename Color to PremulColor where appropriate
27:20handmade_render_group.h: Rename Color to PremulColor where appropriate
27:20handmade_render_group.h: Rename Color to PremulColor where appropriate
29:41Run the game, see that our two renderers draw solid filled rectangles in different colours and investigate why this is the case
29:41Run the game, see that our two renderers draw solid filled rectangles in different colours and investigate why this is the case
29:41Run the game, see that our two renderers draw solid filled rectangles in different colours and investigate why this is the case
37:52handmade_render.cpp: Try not squaring the Color when modulating incoming Color in DrawRectangle
37:52handmade_render.cpp: Try not squaring the Color when modulating incoming Color in DrawRectangle
37:52handmade_render.cpp: Try not squaring the Color when modulating incoming Color in DrawRectangle
39:21handmade_render.cpp: Try Squaring the Color up front in DrawRectangle
39:21handmade_render.cpp: Try Squaring the Color up front in DrawRectangle
39:21handmade_render.cpp: Try Squaring the Color up front in DrawRectangle
42:37handmade_render.cpp: Try multiplying all the Colors by 255 again
42:37handmade_render.cpp: Try multiplying all the Colors by 255 again
42:37handmade_render.cpp: Try multiplying all the Colors by 255 again
43:25Run the game and see that that's almost exact
43:25Run the game and see that that's almost exact
43:25Run the game and see that that's almost exact
43:38Blackboard: Ensuring that we remain in the same colour space
43:38Blackboard: Ensuring that we remain in the same colour space
43:38Blackboard: Ensuring that we remain in the same colour space
47:23Debugger: Step into UpdateAndRenderWorld when CameraRelativeP.z > FadeTopStartZ and inspect the Color values
47:23Debugger: Step into UpdateAndRenderWorld when CameraRelativeP.z > FadeTopStartZ and inspect the Color values
47:23Debugger: Step into UpdateAndRenderWorld when CameraRelativeP.z > FadeTopStartZ and inspect the Color values
52:39handmade_opengl.cpp: Try rendering everything at 50% opacity
52:39handmade_opengl.cpp: Try rendering everything at 50% opacity
52:39handmade_opengl.cpp: Try rendering everything at 50% opacity
55:27Debugger: Step into OpenGLRectangle and inspect the Entry->PremulColor values
55:27Debugger: Step into OpenGLRectangle and inspect the Entry->PremulColor values
55:27Debugger: Step into OpenGLRectangle and inspect the Entry->PremulColor values
57:08handmade_render_group.h: Conditionally add DebugTag to render_group_entry_header and render_group if we are in HANDMADE_SLOW mode
57:08handmade_render_group.h: Conditionally add DebugTag to render_group_entry_header and render_group if we are in HANDMADE_SLOW mode
57:08handmade_render_group.h: Conditionally add DebugTag to render_group_entry_header and render_group if we are in HANDMADE_SLOW mode
1:00:10handmade_world_mode.cpp: Make UpdateAndRenderWorld set DebugTag to 1 if CameraRelativeP.z > FadeTopStartZ
1:00:10handmade_world_mode.cpp: Make UpdateAndRenderWorld set DebugTag to 1 if CameraRelativeP.z > FadeTopStartZ
1:00:10handmade_world_mode.cpp: Make UpdateAndRenderWorld set DebugTag to 1 if CameraRelativeP.z > FadeTopStartZ
1:01:06Debugger: Break into our BreakHere line in OpenGLRenderCommands
1:01:06Debugger: Break into our BreakHere line in OpenGLRenderCommands
1:01:06Debugger: Break into our BreakHere line in OpenGLRenderCommands
1:02:18handmade_world_mode.cpp: Negate the alpha of tGlobalColor for the fade
1:02:18handmade_world_mode.cpp: Negate the alpha of tGlobalColor for the fade
1:02:18handmade_world_mode.cpp: Negate the alpha of tGlobalColor for the fade
1:02:56Run the game and see that the fade is now correct
1:02:56Run the game and see that the fade is now correct
1:02:56Run the game and see that the fade is now correct
1:04:02Investigate why we are seeing nothing below our level
1:04:02Investigate why we are seeing nothing below our level
1:04:02Investigate why we are seeing nothing below our level
1:07:32handmade_world_mode.cpp: Enable the correct blending in UpdateAndRenderWorld
1:07:32handmade_world_mode.cpp: Enable the correct blending in UpdateAndRenderWorld
1:07:32handmade_world_mode.cpp: Enable the correct blending in UpdateAndRenderWorld
1:07:55handmade_world_mode.cpp: Initialise a BackgroundColor in UpdateAndRenderWorld and pass this to Clear and the GlobalColor for the lowest floors
1:07:55handmade_world_mode.cpp: Initialise a BackgroundColor in UpdateAndRenderWorld and pass this to Clear and the GlobalColor for the lowest floors
1:07:55handmade_world_mode.cpp: Initialise a BackgroundColor in UpdateAndRenderWorld and pass this to Clear and the GlobalColor for the lowest floors
1:08:55Run the game and see the haze happening
1:08:55Run the game and see the haze happening
1:08:55Run the game and see the haze happening
1:09:27Q&A
1:09:27Q&A
1:09:27Q&A
1:10:03thesizik One thing you could try is having the center of the perspective projection be the player's position, so things on other levels line up straight
🗪
1:10:03thesizik One thing you could try is having the center of the perspective projection be the player's position, so things on other levels line up straight
🗪
1:10:03thesizik One thing you could try is having the center of the perspective projection be the player's position, so things on other levels line up straight
🗪
1:10:29soysaucethekid The Hadamard transform seems like it can be used for a lot of things. What is it doing in handmade_world.cpp in the subtract function?
🗪
1:10:29soysaucethekid The Hadamard transform seems like it can be used for a lot of things. What is it doing in handmade_world.cpp in the subtract function?
🗪
1:10:29soysaucethekid The Hadamard transform seems like it can be used for a lot of things. What is it doing in handmade_world.cpp in the subtract function?
🗪
1:10:56Blackboard: Hadamard Product ~= Diagonal Matrix
1:10:56Blackboard: Hadamard Product ~= Diagonal Matrix
1:10:56Blackboard: Hadamard Product ~= Diagonal Matrix
1:16:32cubercaleb For the record, a circle with an x would be the tensor product
🗪
1:16:32cubercaleb For the record, a circle with an x would be the tensor product
🗪
1:16:32cubercaleb For the record, a circle with an x would be the tensor product
🗪
1:17:25jayp2 Would it be difficult to implement textured or just different fog colors, so you could make, for instance, vignetted fog?
🗪
1:17:25jayp2 Would it be difficult to implement textured or just different fog colors, so you could make, for instance, vignetted fog?
🗪
1:17:25jayp2 Would it be difficult to implement textured or just different fog colors, so you could make, for instance, vignetted fog?
🗪
1:19:46shabiel How did you finally discover the gamma correction bug? What was the clue that made you say ah ha?
🗪
1:19:46shabiel How did you finally discover the gamma correction bug? What was the clue that made you say ah ha?
🗪
1:19:46shabiel How did you finally discover the gamma correction bug? What was the clue that made you say ah ha?
🗪
1:21:05Wind it down
1:21:05Wind it down
1:21:05Wind it down