Shader Fallback sRGB
?
?

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:04Introduce our special guest, donated by quartertron: owlbot
0:04Introduce our special guest, donated by quartertron: owlbot
0:04Introduce our special guest, donated by quartertron: owlbot
1:31"He kinda has a USB butt"α
1:31"He kinda has a USB butt"α
1:31"He kinda has a USB butt"α
4:42Run the game to recap with a few words on supporting sRGB
4:42Run the game to recap with a few words on supporting sRGB
4:42Run the game to recap with a few words on supporting sRGB
8:58handmade_opengl.h: Consider adding sRGBSupport to the open_gl struct
8:58handmade_opengl.h: Consider adding sRGBSupport to the open_gl struct
8:58handmade_opengl.h: Consider adding sRGBSupport to the open_gl struct
11:28win32_handmade.cpp: Try setting WGL_CONTEXT_MAJOR_VERSION_ARB to 4, run the game and find that we don't get a context
11:28win32_handmade.cpp: Try setting WGL_CONTEXT_MAJOR_VERSION_ARB to 4, run the game and find that we don't get a context
11:28win32_handmade.cpp: Try setting WGL_CONTEXT_MAJOR_VERSION_ARB to 4, run the game and find that we don't get a context
13:42handmade_opengl.cpp: Enable OpenGLInit() to call glTexImage2DMultisample() in order to check whether we support sRGB
13:42handmade_opengl.cpp: Enable OpenGLInit() to call glTexImage2DMultisample() in order to check whether we support sRGB
13:42handmade_opengl.cpp: Enable OpenGLInit() to call glTexImage2DMultisample() in order to check whether we support sRGB
16:58Consult docs.GL to see if we can call glDeleteTextures()1
16:58Consult docs.GL to see if we can call glDeleteTextures()1
16:58Consult docs.GL to see if we can call glDeleteTextures()1
17:46handmade_opengl.cpp: Continue making OpenGLInit() check support for and enable an sRGB framebuffer
17:46handmade_opengl.cpp: Continue making OpenGLInit() check support for and enable an sRGB framebuffer
17:46handmade_opengl.cpp: Continue making OpenGLInit() check support for and enable an sRGB framebuffer
25:54Run the game and see that it's working
25:54Run the game and see that it's working
25:54Run the game and see that it's working
26:18Blackboard: sRGB conversions
26:18Blackboard: sRGB conversions
26:18Blackboard: sRGB conversions
30:32handmade_opengl.cpp: Enable OpenGLInit() to perform atomic tests on the sRGB conversions
30:32handmade_opengl.cpp: Enable OpenGLInit() to perform atomic tests on the sRGB conversions
30:32handmade_opengl.cpp: Enable OpenGLInit() to perform atomic tests on the sRGB conversions
38:06handmade_render.cpp: Look at how DrawRectangleQuickly() performs the sRGB conversions
38:06handmade_render.cpp: Look at how DrawRectangleQuickly() performs the sRGB conversions
38:06handmade_render.cpp: Look at how DrawRectangleQuickly() performs the sRGB conversions
41:22handmade_opengl.cpp: Enable the shader's FragmentCode to perform the sRGB conversion
41:22handmade_opengl.cpp: Enable the shader's FragmentCode to perform the sRGB conversion
41:22handmade_opengl.cpp: Enable the shader's FragmentCode to perform the sRGB conversion
42:47Consult the The OpenGL Shading Language 1.50 Quick Reference Card to see how to do the sqrt2
42:47Consult the The OpenGL Shading Language 1.50 Quick Reference Card to see how to do the sqrt2
42:47Consult the The OpenGL Shading Language 1.50 Quick Reference Card to see how to do the sqrt2
43:08handmade_opengl.cpp: Fix errors in OpenGLInit()
43:08handmade_opengl.cpp: Fix errors in OpenGLInit()
43:08handmade_opengl.cpp: Fix errors in OpenGLInit()
43:39Run the game and note that our sprite colours are sRGB correct but that the other colours are not
43:39Run the game and note that our sprite colours are sRGB correct but that the other colours are not
43:39Run the game and note that our sprite colours are sRGB correct but that the other colours are not
48:34handmade_opengl.cpp: Note that the rendering code contains duplication, and consider changing the format in which we submit textures
48:34handmade_opengl.cpp: Note that the rendering code contains duplication, and consider changing the format in which we submit textures
48:34handmade_opengl.cpp: Note that the rendering code contains duplication, and consider changing the format in which we submit textures
51:24handmade_render_group.h: Introduce textured_vertex and render_entry_textured_quads structs
51:24handmade_render_group.h: Introduce textured_vertex and render_entry_textured_quads structs
51:24handmade_render_group.h: Introduce textured_vertex and render_entry_textured_quads structs
56:03Blackboard: nVidia allows us to use a texture pointer in shaders
56:03Blackboard: nVidia allows us to use a texture pointer in shaders
56:03Blackboard: nVidia allows us to use a texture pointer in shaders
58:15handmade_render_group.h: Spec out the render_entry_textured_quads struct
58:15handmade_render_group.h: Spec out the render_entry_textured_quads struct
58:15handmade_render_group.h: Spec out the render_entry_textured_quads struct
59:51Blackboard: CPU vs GPU memory and mapping regions between them
59:51Blackboard: CPU vs GPU memory and mapping regions between them
59:51Blackboard: CPU vs GPU memory and mapping regions between them
1:05:25Blackboard: Using locked memory to facilitate GPU transfers
1:05:25Blackboard: Using locked memory to facilitate GPU transfers
1:05:25Blackboard: Using locked memory to facilitate GPU transfers
1:08:25handmade_render_group.h: Continue to spec out render_entry_textured_quads
1:08:25handmade_render_group.h: Continue to spec out render_entry_textured_quads
1:08:25handmade_render_group.h: Continue to spec out render_entry_textured_quads
1:11:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to process textured quads
1:11:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to process textured quads
1:11:28handmade_opengl.cpp: Enable OpenGLRenderCommands() to process textured quads
1:17:38handmade_opengl.cpp: Enable OpenGLRenderCommands() to specify the glColor4ub3
1:17:38handmade_opengl.cpp: Enable OpenGLRenderCommands() to specify the glColor4ub3
1:17:38handmade_opengl.cpp: Enable OpenGLRenderCommands() to specify the glColor4ub3
1:22:09handmade_opengl.cpp: Try sending GL_QUADS and run the game to see that it's fine
1:22:09handmade_opengl.cpp: Try sending GL_QUADS and run the game to see that it's fine
1:22:09handmade_opengl.cpp: Try sending GL_QUADS and run the game to see that it's fine
1:23:35A few words on texture atlases
1:23:35A few words on texture atlases
1:23:35A few words on texture atlases
1:24:47handmade_opengl.cpp: Determine to feed some sprites to OpenGLRenderCommands()
1:24:47handmade_opengl.cpp: Determine to feed some sprites to OpenGLRenderCommands()
1:24:47handmade_opengl.cpp: Determine to feed some sprites to OpenGLRenderCommands()
1:26:05handmade_platform.h: Make RenderCommandsStruct() take a VertexArray and consider how to write our loaded bitmaps out
1:26:05handmade_platform.h: Make RenderCommandsStruct() take a VertexArray and consider how to write our loaded bitmaps out
1:26:05handmade_platform.h: Make RenderCommandsStruct() take a VertexArray and consider how to write our loaded bitmaps out
1:29:26"It's high allergy season here, folks, and I'm a snotty boy"β
1:29:26"It's high allergy season here, folks, and I'm a snotty boy"β
1:29:26"It's high allergy season here, folks, and I'm a snotty boy"β
1:29:32handmade_render_group.h: Add CurrentQuads to the render_group struct and introduce Begin
1:29:32handmade_render_group.h: Add CurrentQuads to the render_group struct and introduce Begin
1:29:32handmade_render_group.h: Add CurrentQuads to the render_group struct and introduce Begin
1:31:23handmade_render_group.cpp: Make PushBitmap() blow out the bitmap data inline
1:31:23handmade_render_group.cpp: Make PushBitmap() blow out the bitmap data inline
1:31:23handmade_render_group.cpp: Make PushBitmap() blow out the bitmap data inline
1:36:12Check out the commotion
1:36:12Check out the commotion
1:36:12Check out the commotion
1:37:15"It might be a protest, or it might be a parade of some kind"γ
1:37:15"It might be a protest, or it might be a parade of some kind"γ
1:37:15"It might be a protest, or it might be a parade of some kind"γ
1:38:51quartertron Live police & fire scanner4
🗪
1:38:51quartertron Live police & fire scanner4
🗪
1:38:51quartertron Live police & fire scanner4
🗪
1:40:11handmade_render_group.cpp: Continue working on PushBitmap()
1:40:11handmade_render_group.cpp: Continue working on PushBitmap()
1:40:11handmade_render_group.cpp: Continue working on PushBitmap()
1:44:18handmade_math.h: Introduce BGRAUnpack4x8(), BGRAPack4x8(), RGBAUnpack4x8() and RGBAPack4x8()
1:44:18handmade_math.h: Introduce BGRAUnpack4x8(), BGRAPack4x8(), RGBAUnpack4x8() and RGBAPack4x8()
1:44:18handmade_math.h: Introduce BGRAUnpack4x8(), BGRAPack4x8(), RGBAUnpack4x8() and RGBAPack4x8()
1:45:33handmade_render_group.cpp: Enable PushBitmap() to pack the color
1:45:33handmade_render_group.cpp: Enable PushBitmap() to pack the color
1:45:33handmade_render_group.cpp: Enable PushBitmap() to pack the color
1:47:05handmade_platform.h: Make RenderCommandsStruct() take a VertexCount
1:47:05handmade_platform.h: Make RenderCommandsStruct() take a VertexCount
1:47:05handmade_platform.h: Make RenderCommandsStruct() take a VertexCount
1:48:07handmade_render_group.cpp: Enable PushBitmap() to write out the vertices and the render entry for the quads
1:48:07handmade_render_group.cpp: Enable PushBitmap() to write out the vertices and the render entry for the quads
1:48:07handmade_render_group.cpp: Enable PushBitmap() to write out the vertices and the render entry for the quads
1:53:50Run the game to see that it is not exactly a stunning success, and investigate why we're not seeing the textures
1:53:50Run the game to see that it is not exactly a stunning success, and investigate why we're not seeing the textures
1:53:50Run the game to see that it is not exactly a stunning success, and investigate why we're not seeing the textures
1:55:45Step in to OpenGLRenderCommands() and inspect the Bitmap and Vertex values
1:55:45Step in to OpenGLRenderCommands() and inspect the Bitmap and Vertex values
1:55:45Step in to OpenGLRenderCommands() and inspect the Bitmap and Vertex values
1:56:41handmade_math.h: Make PushBitmap() multiply by 255 before passing the PremulColor to RGBAPack4x8()
1:56:41handmade_math.h: Make PushBitmap() multiply by 255 before passing the PremulColor to RGBAPack4x8()
1:56:41handmade_math.h: Make PushBitmap() multiply by 255 before passing the PremulColor to RGBAPack4x8()
1:57:29Run the game to see some pretty good texture stretching
1:57:29Run the game to see some pretty good texture stretching
1:57:29Run the game to see some pretty good texture stretching
1:57:42handmade_render_group.cpp: Make PushBitmap() set the axes correctly, and run the game to admire it
1:57:42handmade_render_group.cpp: Make PushBitmap() set the axes correctly, and run the game to admire it
1:57:42handmade_render_group.cpp: Make PushBitmap() set the axes correctly, and run the game to admire it
1:58:19Q&A
🗩
1:58:19Q&A
🗩
1:58:19Q&A
🗩
1:58:40desuused Emulating sRGB texture loads and sRGB fragment writes is not enough: sRGB also affects blending, which you can't emulate
🗪
1:58:40desuused Emulating sRGB texture loads and sRGB fragment writes is not enough: sRGB also affects blending, which you can't emulate
🗪
1:58:40desuused Emulating sRGB texture loads and sRGB fragment writes is not enough: sRGB also affects blending, which you can't emulate
🗪
2:01:07zilarrezko Do you have a licence for all those cubes?
🗪
2:01:07zilarrezko Do you have a licence for all those cubes?
🗪
2:01:07zilarrezko Do you have a licence for all those cubes?
🗪
2:01:17rooctag What texture will you use for rects and cubes?
🗪
2:01:17rooctag What texture will you use for rects and cubes?
🗪
2:01:17rooctag What texture will you use for rects and cubes?
🗪
2:01:52mtsmox Is it worth testing sRGB and MSAA in the non-OpenGL compatibility mode?
🗪
2:01:52mtsmox Is it worth testing sRGB and MSAA in the non-OpenGL compatibility mode?
🗪
2:01:52mtsmox Is it worth testing sRGB and MSAA in the non-OpenGL compatibility mode?
🗪
2:03:07Jim0_o Will you be using more than one ShaderProgram? If so, how do you minimize switching between programs when rendering?
🗪
2:03:07Jim0_o Will you be using more than one ShaderProgram? If so, how do you minimize switching between programs when rendering?
🗪
2:03:07Jim0_o Will you be using more than one ShaderProgram? If so, how do you minimize switching between programs when rendering?
🗪
2:04:20mtsmox You could unset it and just see if the assert will fail?
🗪
2:04:20mtsmox You could unset it and just see if the assert will fail?
🗪
2:04:20mtsmox You could unset it and just see if the assert will fail?
🗪
2:05:18win32_handmade.cpp: Research WGL_CONTEXT_PROFILE_MASK_ARB and specify the CORE_PROFILE in Win32OpenGLAttribs5
2:05:18win32_handmade.cpp: Research WGL_CONTEXT_PROFILE_MASK_ARB and specify the CORE_PROFILE in Win32OpenGLAttribs5
2:05:18win32_handmade.cpp: Research WGL_CONTEXT_PROFILE_MASK_ARB and specify the CORE_PROFILE in Win32OpenGLAttribs5
2:06:09Run the game and see that it unexpectedly works, then step through OpenGLInit() to see that it still errors out
2:06:09Run the game and see that it unexpectedly works, then step through OpenGLInit() to see that it still errors out
2:06:09Run the game and see that it unexpectedly works, then step through OpenGLInit() to see that it still errors out
2:07:55insofaras Are you passing a major / minor version too? I think the bit might not be enabled sub 3.2?
🗪
2:07:55insofaras Are you passing a major / minor version too? I think the bit might not be enabled sub 3.2?
🗪
2:07:55insofaras Are you passing a major / minor version too? I think the bit might not be enabled sub 3.2?
🗪
2:09:36Wind this down with the promise of a question for insofaras and a mention of daylight savings time
🗩
2:09:36Wind this down with the promise of a question for insofaras and a mention of daylight savings time
🗩
2:09:36Wind this down with the promise of a question for insofaras and a mention of daylight savings time
🗩