[video output=day358 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Introduction to Depth Buffers" vod_platform=youtube id=7EiCGEgb_No annotator=Miblo]
[0:36][Promote Handmade.Network's new "Submit a Project" functionality[ref
    site="Handmade.Network"
    page="Project List"
    url="https://handmade.network/projects"]]
[3:20][Determine to fully finish the CLANG compatibility]
[4:23][handmade_debug_interface.h: Cast the __FUNCTION__ to a char * in the TIMED_FUNCTION() macro, and close the issue]
[6:11][A few words on compiler differences]
[8:02][On engine programming and the licensing of the code]
[9:28][Blackboard: 3D Update]
[12:06][Blackboard: On the distastefulness of 2D regarding sorting and perspective]
[14:15][Blackboard: Call the 2D renderer a failed experiment]
[14:50][Run the game to take a look at what we've already got]
[16:36][Blackboard: Surgery and engaging more with the 3D API, including shaders]
[21:41][Blackboard: Sorting and overdraw]
[25:51][Blackboard: On how sorting primitives becomes problematic]
[28:30][Blackboard: Z-buffer or "Depth" buffer]
[32:19][Blackboard: On the screen being a buffer to which we write RGBA values]
[35:45][Blackboard: Augmenting the pixel data to include depth and stencil values]
[38:45][Blackboard: Old Pixel Fill, Take #1]
[40:17][Blackboard: Old Pixel Fill, Take #2]
[42:22][Blackboard: New Pixel Fill, with the augmented pixel data]
[48:13][Blackboard: "Pass" Comparisons before Blend]
[50:39][Blackboard: Per-pixel sorting and order independence]
[54:44][Blackboard: Stencil]
[59:40][Blackboard: Caveat Emperor: Blend is not order independent for transparency]
[1:07:41][Blackboard: Changing the blend equation to be order independent]
[1:10:26][Blackboard: Framebuffer Atomics and Per-pixel Sorting]
[1:16:22][Blackboard: Partitioning opaque and transparent objects]
[1:19:50][Blackboard: Overdraw Still Matters!]
[1:24:47][Blackboard: Z Prepass]
[1:28:40][Blackboard: On the potential wasteage of GPU wide operations]
[1:31:38][Q&A][:speech]
[1:31:52][@desuused][Is it possible to use dithering (and possibly post-processing and super-resolution) for order independent transparency?]
[1:32:03][Blackboard: Screen door effect]
[1:33:54][@wasenabled][Per-pixel sorting on the graphics card. What, if any, software control is available via shaders, or is this just a hardware optimization that some graphics cards do behind the scenes to handle the opacity issue without a pre-filtered Z-buffer?]
[1:34:20][Blackboard: The point of atomics]
[1:37:52][@anonymous519][What do you think of frame buffering like Vulkan's mailbox present mode to decouple the game update rate from the display device's refresh rate? You can render as many frames as you want, but only the most recently rendered frame is swapped in on vertical retrace]
[1:43:52][@zilarrezko][Is it valid to render to sub-buffers and then render those sub-buffers to the back buffer so as to be able to render more than one sub-buffer at a time?]
[1:47:51][@nacre314][Do you feel you're still on the path to finishing the game in 600-ish episodes?]
[1:50:29][@dudeinbasement1][Do you find the weekends go by faster with streaming on them? And you have more time for 1935?]
[1:50:51][@anonymous519][What if I want my game to be deterministic, or what if my game does physics calculations and I need to update at a fixed rate for stability. Different people have different monitors with different refresh rates. Most people seem to then interpolate but this adds latency. Isn't mailboxing the better approach in this situation?]
[1:52:27][@zilarrezko][Skip this if you'd like / explained it already: Could you explain Z-fighting and solving it as a problem?]
[1:53:10][Wrap it up][:speech]
[/video]
