This is a shader-based software renderer written from scratch in C89 with minimal dependencies, available for Windows, macOS, and Linux.
- Cross platform
- Minimal dependencies
- Shader based
- Homogeneous clipping
- Back-face culling
- Perspective correct interpolation
- Depth testing
- Alpha testing
- Alpha blending
- Cubemapped skybox
- Skeletal animation
- Tangent space normal mapping
- Shadow mapping
- ACES tone mapping
- Blinn–Phong reflection model
- Physically based rendering (PBR)
- Metallic-roughness workflow
- Specular-glossiness workflow
- Image-based lighting (IBL)
- Orbital camera controls
- PBR material inspector
Pre-built binaries for Windows, macOS, and Linux are available for download from the Releases page.
To build the software renderer from source, a C89 compiler and development files for your window system are required.
Install Visual Studio
with C++ support and run build_win32.bat
.
Install Command Line Tools for Xcode with the command below and
run build_macos.sh
.
xcode-select --install
Install GCC and Xlib with the following commands and run build_linux.sh
.
sudo apt install gcc libx11-dev
sudo dnf install gcc libX11-devel
sudo zypper install gcc libX11-devel
A CMakeLists.txt
file is provided for generating project files using
CMake (see examples below).
mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..
start Renderer.sln
mkdir build
cd build
cmake -G Xcode ..
open Renderer.xcodeproj
mkdir build
cd build
cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ..
make
If the software renderer is launched without arguments, one of the available scenes will be chosen randomly. To display a specific scene (see below), additional arguments should be supplied. The command line syntax is:
Viewer [test_name [scene_name]]
- Orbit: left mouse button
- Pan: right mouse button
- Zoom: mouse wheel
- Rotate lighting: A D S W
- Reset everything: Space
For PBR scenes, a material inspector that is very similar to the layers view of Marmoset Viewer is provided. Double click to bring it up.