Introduction
Project Introduction
This project is the first part of my Graphics Programming self-taught master program where I 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 I want to solidify my knowledge of coordinate transformations, and triangle rendering algorithms. I also want to expand my 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.