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.
Usage of third party libraries is limited to :
- stbimage for png loading.
- 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 !
Click one of the cube to select it. Press T,R or S to enable translation, rotation and scale gizmos.
Download and extract the binaries.