Start by defining the coordinate spaces and the transformation matrices (model, view, projection) in homogeneous coordinates. Then walk through the pipeline step-by-step, showing how a point is transformed from world space to NDC and then to screen space, and explain the normal transformation with the inverse-transpose. Finish with a concrete numeric example to solidify the explanation.
Pro tip: Emphasize that normals are covectors and transform differently from points; using the inverse-transpose preserves perpendicularity under non-uniform scaling. Mention that this is crucial for correct lighting in real-time rendering, a key concern at NVIDIA.
Explain that homogeneous coordinates add a fourth component w to represent points and vectors, enabling affine transformations as matrix multiplications. List the spaces: object, world, view (eye), clip, NDC, and screen.
Detail the model matrix (object to world), view matrix (world to eye), and projection matrix (eye to clip). Mention that these are 4x4 matrices and how they are composed.
Show the sequence: p_clip = P * V * M * p_object. Then perform perspective division (divide by w) to get NDC, and finally apply viewport transform to get screen coordinates.
Derive why normals require the inverse-transpose: if a point transforms by M, a normal (as a covector) transforms by (M^{-1})^T to remain perpendicular to the surface. Show that using M directly would skew normals under non-uniform scaling.
Choose a simple point (e.g., (1,0,0,1)) and simple matrices (e.g., translation and scaling) to compute the final screen coordinates. Also show a normal transformation with a non-uniform scale to illustrate the inverse-transpose.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.