[11:20][Temporarily change PushSimpleScene() to push trees as non-upright sprites, and :run the Renderer Test to see the trees Z-fighting with the ground][:programming :rendering]
[12:20][Respecify and simplify PushSprite() as a non-upright sprite pushing function][:rendering]
[17:49][:Run the Renderer Test to see all our non-upright sprites][:rendering]
[17:52][Introduce PushUpright() as a dedicated function that handles upright sprites][:rendering]
[19:03][:Run it to see the grass as upright sprites][:rendering]
[19:16][Give PushUpright() default values for MinUV and MaxUV][:rendering]
[21:12][Camera-matched quads, placing 2D sprites in a 3D world][:blackboard :camera :rendering]
[26:39][Make PushUpright() interpolate the sprite axes between the world axes and camera-relative axes, running it to see the grass sprites rotating to follow the :camera][:programming :rendering :run]
[28:18][Attenuating the sprite's Y-axis for lay-down, while preserving the camera's X-axis][:blackboard :camera :rendering]
[30:34][Make PushUpright() use the camera's X-axis][:camera :rendering]
[31:16][:Run it to see the grass following the :camera][:rendering]
[31:26][Change PushSimpleScene() to call PushUpright() for the tree sprites][:rendering]
[31:49][:Run it to see the trees following the :camera, until we crash when panning][:rendering]
[33:02][Add Shift to the :camera struct so that the panning code can cold-set the Offset][:rendering]
[35:01][:Run it to try and see if the panning is working correctly][:camera :rendering]
[35:40][Change PushSimpleScene() to use the (rectangular) wall sprite instead of the tree, to help debug the sprite lay-down attenuation][:camera :rendering]
[36:08][:Run it to see that the wall sprites are not slanted][:camera :rendering]
[36:14][Make PushUpright() use 0.25 × the world axes for the sprite's Y-axis][:camera :rendering]
[36:28][:Run it to see our correctly tilting sprites, but their insufficient camera-facing rotation][:camera :rendering]
[37:05][Temporarily make PushSimpleScene() skew the wall sprites][:camera :rendering]
[38:40][:Run it to see our skewed walls sprites erroneously collapsing under rotation][:camera :rendering]
[40:00][Enable PushUpright() to correctly attenuate the Y-axis of skewed sprites][:camera :rendering]
[47:22][Subtracting the :camera Z-axis to push the Y-axis into the screen][:blackboard :rendering]
[1:52:49][:Run it to see our triangles wound backwards][:hardware :rendering]
[1:53:10][Fix our triangle winding in OpenGLEndFrame()][:hardware :rendering]
[1:53:35][:Run it to see our correctly drawn scene][:hardware :rendering]
[1:54:04][Q&A][:speech]
[1:54:25][@mmozeiko][Q: Primitive restart index is in GL Core since version 3.1: glPrimitiveRestartIndex() function][:rendering]
[1:54:37][@lkalinovcic][Q: I thought you had to bind a GL_ELEMENT_ARRAY_BUFFER to do indexing, is this not true if no buffer is bound?][:rendering]
[1:55:38][@rale_2][Q: Using indices seems to take a lot more memory if the vertex data contains texture coordinates, normals, etc. How do you know when it's a good idea to render by indices?][:rendering]
[1:57:16][@ivereadthesequel][Q: I have one regarding @vaualbus' pre-stream question if that's alright: Why were the next steps of investigations into the MessageBox call not working to try doing it with the indirect call, then next to do it on another thread? What was the line of thinking?]
[1:58:10][@lkalinovcic][Q: What is your opinion on texture arrays vs texture atlases? Why did you choose to do texture arrays?][:hardware :rendering]
[2:00:22][@centhusiast][Q: Does the window size have anything to do with the tuning of the t value in the renderer, e.g. if we use the full screen window?][:rendering]
[2:00:58][@lkalinovcic][Q: Texture arrays require all textures to be the same size and have the same number of mipmaps, though. Isn't that a significant limitation? Atlases require manual handling in the shader, but I feel like they're more general][:hardware :rendering]
[2:01:51][@rooctag][Q: What are we going to mipmap in [~hero Handmade Hero]?][:hardware :rendering]
[2:02:00][@frostyninja][Q: Off-topic: How long is fall break going to be?]
[2:02:11][@areriff][Q: There's a rewrite of Dependencies Walker for Windows 10.[ref
site=GitHub
page="lucasg / Dependencies"
url=https://github.com/lucasg/Dependencies] The old depends.exe is not up to date for Windows 10 dlls. You might find it useful for [~hero Handmade Hero]]
[2:04:35][@lkalinovcic][Q: Do you know if texture sampling is implemented in hardware? If it's not, then I don't think manually handling atlases would be slower][:hardware :rendering]
[2:06:57][@ivereadthesequel][Q: This is just about paradigms: What sets apart the functions you have made to construct structs certain ways (like GetStandardCamera) from the methodology around constructors in C++ that I presume you dislike? Or are they actually similar?][:language]
[2:07:46][Demo C++ constructors, with an example of a better constructor][:language :rant :speech]
[2:19:16][:API Granularity][:language :speech]
[2:21:43][@mmozeiko][Q: You were selecting .NET executables in dependency walker, for which it won't show anything]
[2:21:52][@vaualbus][Q: Back to the message box pre-stream answer, removing the filtering of message 0x738 make the window appear]
[2:22:13][@centhusiast][Q: Are you testing the renderer with the PNG asset? Do you think the renderer would have a better :performance with bitmap because the decoding of that is easier than the PNG one?][:rendering]
[2:22:42][@lkalinovcic][Q: I'm not sure, but doesn't camera Camera = {} in C++ call the constructor? (I know it zeroes if it's a normal structure, but I think if it's a thing with a constructor it calls it)][:language]
[2:23:18][@cubercaleb][Q: Also, placement new returns a new "object" (in terms of C / C++ object lifetimes), so you technically need to access it through the pointer returned, so it is disgusting][:language]
[2:23:35][@darkepopt][Q: Do you think you could submit a constructor like that to the C++ committee?][:language]
[2:24:19][][:language :speech][quote 628]
[2:24:58][Thoughts on proprietary software companies offloading QA to their users][:rant :speech]