Introduction
Project Introduction
This project is the first part of our Graphics Programming self-taught master program where we learn all the basics on computer graphics.
The first project consists on building a CPU-based rasterizer software from scratch to learn what GPU APIs are doing under-the-hood to render pixels with optimal performance. With this project we want to solidify our knowledge of coordinate transformations, and triangle rendering algorithms. We also want to expand our knowledge on color theory and simple vertex shading.
Objective
Build a CPU-based rasterizer from scratch (no GPU APIs). Implement:
- Line drawing (Bresenham’s algorithm)
- [Optional] Experiment with an Antialiasing algorithm Xiaolin Wu’s line algorithm
- Triangle rasterization
- Depth buffering
- Basic vertex transformations
- Simple Flat Shading, Gouraud Shading (per-vertex shading), Per-pixel shading
- Edge Functions & Barycentric Coordinates (Rasterization method)
- Color theory (RGB, HSV, gamma correction - sRGB)
- [Optional] Quaternions for rotation
Deliverable: Render a rotating 3D cube with proper depth sorting.