A matrix is a convention you must share
Model transforms place an object in the room; the view transform expresses that room relative to the camera; projection produces clip coordinates. With this course’s column vectors, the shader multiplies projection × view × model × position. The rightmost operation acts first. State storage order and multiplication order separately rather than using “column-major” to explain both.
The starter’s Mat4 stores columns contiguously and uploads with transpose false. The default mode rotates a flat triangle. The --camera path uploads model, view and projection independently to camera.vert using the tested helpers. Camera space is right-handed and looks along minus Z; near and far map to OpenGL’s minus-one-to-one NDC depth convention.
Validate finite field of view, positive aspect, and ordered positive near/far distances before constructing a projection. A singular or unsupported camera should produce an ordinary error rather than NaNs in gl_Position. Use simple identity, translation, and quarter-turn tests before judging a rotating room by eye.
Add a floor and two box-shaped exhibits. Verify a known point through your transform chain and keep the initial panel as a regression scene.
