I created a software rasteriser from scratch in C++, demonstrated through a space-themed scene. I wrote the logic for all necessary aspects of the rendering pipeline, taking primitives from the camera matrix transformations between local-world-camera space to the z-buffer and finally blitting them to a window.
The project demonstrates:
- A star-field consisting of point primitives
- Asteroids consisting of line primitives (loops)
- A background gradient plane consisting of triangle primitives
- Spaceships consisting of triangle strip primitives
- Planets/moons consisting of triangle fan primitives (circles)
- Mesh constructed from file
- Interpolated colour across a line
- Interpolated colour across a triangle
- Semi-transparency
- Textured primitives
- Movement of scene elements
- Independent three-dimensional rotation of scene elements
I gained experience applying fundamental graphics programming theory, and memory-management in C++.
Nearest neighbour vs bilinear filtering