Tinyrenderer is a computer graphics course that teaches software rendering by implementing a simplified 3D renderer from scratch in bare C++.
The project addresses the difficulty many people face when learning graphics APIs by demonstrating how OpenGL, Vulkan, Metal, and DirectX work under the hood. Rather than teaching GPU programming directly, it builds understanding by implementing a complete software renderer without third-party graphics libraries. The approach starts with the absolute basics—setting individual pixel colors—and progressively adds line drawing using Bresenham's algorithm, triangle rasterization, depth buffering, camera handling, shading, texture mapping, normal mapping, shadow mapping, and indirect lighting techniques. The final renderer produces a complete 3D image from a triangulated mesh and textures in approximately 500 lines of code.
This material suits developers who want to understand the fundamental concepts underlying modern graphics APIs rather than those seeking a production renderer or GPU-accelerated solution. The course is structured as a series of articles with accompanying code, designed for learners willing to implement each concept themselves over ten to twenty hours of programming. The instructor explicitly warns against simply using the provided source code directly, emphasizing that working through the implementation is essential to grasping the concepts. This is educational material, not a library to integrate into projects.
The project maintains a stable, focused scope centered on its pedagogical mission. The repository contains the complete course notes alongside reference implementations, with the initial starter code provided separately to guide students through the learning process. Development activity reflects a mature educational resource rather than an actively evolving software tool.