Skip to content

References

Everything that helped — with a line on why.


Video

Sebastian Lague — Building a Software Rasterizer The original inspiration for this project. Revisited several times during development to clarify concepts in the pipeline, especially perspective-correct interpolation for texture mapping.

Brendan Galea — 3D Projection Clarified how the projection matrix works: what the aspect ratio and focal length actually do, and how to use the near and far planes to define the depth function. Clear and complete.

Mike Shack — SDL3 Setup Quick visual walkthrough of the SDL3 window and rendering setup. Useful for getting started fast.

Mr Mouse Math — Computer Graphics MVP Model Helped clarify the view matrix — specifically where the three camera axes come from and how rotating a point aligns with the camera's coordinate system.

OBJ File Format Explained Short and clear explanation of the OBJ format. Confirmed the structure before implementing the parser.


Articles & Documentation

Scratchapixel — Rasterization Algorithm The best explanation of barycentric coordinates and the rasterization pipeline found during the project. Clear derivations with good visualizations.

BMP File Format Specification The reference used to understand the BMP header: where the pixel data starts, width, height, and the row padding calculation.

Phong Reflection Model Reference for the Phong shading formula — ambient, diffuse, specular, and the shininess exponent.

cppreference — std::vector Quick reference for C++ vectors used as the framebuffer structure.

cppreference — std::istringstream Understanding token-by-token parsing for the OBJ and MTL file readers.

cppreference — std::fstream Reading binary files (BMP) and text files (OBJ/MTL) in C++.

cppreference — std::thread Reference for implementing multithreading — thread creation, hardware_concurrency(), and join().

cppreference — C++ Classes Quick refresher on C++ class structure, used for Mesh, Render, and Material.


Tools

SDL3 — Window management, input, and the texture/renderer pipeline.

CLion — IDE. CMake integration and the run configuration working directory setting saved a lot of debugging time.

reMarkable — Tablet used for all handwritten derivations. Every matrix and formula was drawn here before being coded.

Claude — Used throughout to design and build the interactive visualizations embedded in this documentation. Also used as a thinking partner for the MkDocs setup.