is presently its sole maintainer,
You can support him:
Recap and set the stage for the day
Run the game to demo the current state, with a few words on moving towards a more direct streaming approach
handmade_platform.h: Remove the sort data from game_render_commands
handmade_opengl.cpp: Make OpenGLRenderCommands() correctly push textures
handmade_render_group.cpp: Make PushClipRect() call PushRenderElement()
handmade_opengl.cpp: Enable OpenGLRenderCommands() to handle the cliprect case, and run the game to see it working
todo.txt: Update the TODO list with a few words on making a freely rotatable camera
Blackboard: Rotation Matrices
Blackboard: Deriving a Rotation Matrix
Blackboard: 3D Rotation Matrices
Blackboard: 2D vs 3D Axes of Rotation
Blackboard: Coordinate system handedness
Blackboard: Rotating in 3D around the cardinal Z axis
Blackboard: Generalising this to the other axes
Blackboard: Solving for a freely movable camera, using matrix multiplication
Blackboard: Matrix multiplication in summation notation
handmade_math.h: Introduce operator*() that operates on a 4x4 matrix
Blackboard: Determining the shape of the matrix product
Blackboard: Transforming points
handmade_math.h: Introduce Identity(), XRotation(), YRotation() and ZRotation()
handmade_math.h: Introduce Transpose()
Blackboard: Matrix Transpose
handmade_math.h: Introduce Projection()
handmade_opengl.cpp: Make OpenGLRenderCommands() project and transpose our matrix
Step into OpenGLRenderCommands() and inspect the projection matrix
handmade_math.h: Make our new operator*() and Transpose() loop over all the values
Step into OpenGLRenderCommands() again to see the transpose working correctly
a_pulsing_mage Q: You once said that people don't really use matrices as the storage in real world things. Can you talk about the alternatives?
desuused Q: Will we use quaternions? Producing rotation matrix from quaternions seems a good idea
neitchzehrer Q: So from now on, you will only be streaming on Saturday and Sunday?
pepevel Q: Would it be worth investing time doing a SIMD optimization for matrix multiplication, or is it like killing ants with a rifle?
pandamite Q: Are you going to use simpler rotation functions that are mainly focused on smaller matrices such as your 4x4, then emphasizing another method on much larger matrices?
felkcraft Q: Is it worth having code for producing a full rotation matrix (x, y and z) at once instead of multiplying three different matrices?
zilarrezko Q: I'm inferring that those braces encompassing the four rows in those matrix operations aren't doing anything? (It isn't creating an extra dimension in the matrix?)
zamar037 Q: Hi Casey, haven't caught a stream in a while. How are things going?
pepevel Q: Don't you have to return a value in the multiplication function?
emosaru Q: Casey, might be worth pointing out that that behavior in MSVC is specific to inline functions
pandamite Q: I kind of just joined on to this channel. Sorry about the lack of the knowledge of the code so far, but I was referring to the case of having such large matrices that you would consider partitioning the matrices into separate parts for quicker rotations
vaualbus Q: Would it not be better to make the matrix struct use an r32 array of 16 elements instead of a two dimensional one? In that should we SIMD the math operation?
teamrandb Q: Forgive the dumb question, but why are your include guards defined at the bottom of the header instead of the top? Is this purely what you chose to do, or is there another purpose? (#if is checked at the top, but the #define is at the bottom. Most code I've seen does it at the top)
teamrandb Q: Sorry, Casey, I am still looking at older streams. I guess you may have changed that already
Get going with a glimpse into the future