Skip to content

ldalzotto/SoftwareRasterizer

Repository files navigation

Welcome

This project emulates computations done by the GPU hardware to draw 3D objects.
The goal of this project is to remove the usage of graphics API like OpenGL or Vulkan by re-implementing rasterization functions.

This project was made to challenge myself to write a software rasterizer from scratch with little prior knowledge in C and 3D mathematics. Learning graphics concepts and maths in the process.
It is a learning journey, so as much as possible, it will use handmade solutions (memory containers, maths library, 3D scene management, 3D graphics abstraction, OS interactions).

The big picture of the algorithms used for the software renderer and the entity movement are detailed here.

Third party

Usage of third party libraries is limited to :

  1. stbimage for png loading.

Features

  • 3D mesh rasterization on the CPU.
  • Line renderer.
  • Pixel shading with texture mapping.
  • Flat shading.
  • 3D transformation gizmo to move entities in the world.
  • obj file loader.

The project only works for windows platform !

Entity selection

Click one of the cube to select it. Press T,R or S to enable translation, rotation and scale gizmos.

Try it from precompiled binaries

Download and extract the binaries.