3D Raster Engine

This project is an example of a Software 3D rasterization engine.

It was written as coursework for uni and involves loading in a model file and dealing with all the math to draw it onto the screen. This does not use a framework or API so it’s entirely handled by the software.

The project is written in C++ and covers

  • Vertices
  • Vectors
  • Matrix Operations
  • Back face Culling
  • Z Buffering (Painter's algorithm)
  • Camera
  • Wireframe
  • Gouraude Shading
  • Lighting (Ambient, Directional, Point, Spot)
  • Specular Lighting
  • UV Texture Mapping

It follows the graphics pipeline applying the model transformations, perspective transformation and the view transformation.

The parts of this project I believe deviate from the other submissions is that I used inheritance for the lighting, having a standard light class that handled applying the color changes to the pixel but having the actual math calculated.

I also allowed for different lighting settings to be created and stored in a vector array for loading later, as well as another vector array to hold models allowing for multiple models to be displayed.

Below if a video of the full showcase submitted, I scored a 100/100 for this project.

If you've come here from my CV and want to see the source code email me and I would be happy to send it.

Tech Used

Date Written: