Parallel software rasterizer written in C++.
Above scene (~35k triangles) renders in 60fps at 1920 x 1080 resolution on AMD Ryzen 5 3600 CPU.
- rendering with or without depth buffer
- drawing with or without index buffer
- programmable shaders (at compile time with C++ templates)
- multithreaded (each thread renders one vertical slice of the image)
- ability to specify viewport dimensions and offset (to render to only part of the image)
- loading meshes and textures
- sutherland-hodgman and front triangle clipping
- configurable alpha blending
- configurable depth test
- deffered rendering is possible and accelerated with specialized method for screen quad rendering
- rendering to screen or texture
git clone https://github.com/pwalig/rasterizer.git
cd rasterizer
git submodule init
git submodule update --depth 1
Project depends on:
Download both libraries and set envirionment variables GLM_PATH
and STB_PATH
to point to downloaded / cloned source code.
Project can be built with CMake.
Run the following.
mkdir build
cmake -S . -B build
cmake --build build
to get release build with MSVC on Windows use:
cmake --build build --config Release
Project can be built with Visual Studio.
Just open rasterizer.sln and run.
Tested only on Visual Studio 2022 other versions might not work.