Need help with renderer?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

zauonlok
1.4K Stars 146 Forks MIT License 583 Commits 1 Opened issues

Description

A shader-based software renderer written from scratch in C89

Services available

!
?

Need anything else?

Contributors list

# 32,747
C++
Shell
C
softwar...
580 commits
# 101,717
F#
f-sharp
Emacs
Visual ...
1 commit

Software Renderer

This is a shader-based software renderer written from scratch in C89 with minimal dependencies, available for Windows, macOS, and Linux.

Features

  • 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

Download

Pre-built binaries for Windows, macOS, and Linux are available for download from the Releases page.

Build

To build the software renderer from source, a C89 compiler and development files for your window system are required.

Windows

Install Visual Studio with C++ support and run

build_win32.bat
.

macOS

Install Command Line Tools for Xcode with the command below and run

build_macos.sh
.
xcode-select --install

Linux

Install GCC and Xlib with the following commands and run

build_linux.sh
.

Ubuntu / Debian

sudo apt install gcc libx11-dev

Fedora / RHEL

sudo dnf install gcc libX11-devel

openSUSE / SUSE

sudo zypper install gcc libX11-devel

Bonus

A

CMakeLists.txt
file is provided for generating project files using CMake (see examples below).

Visual Studio

mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..
start Renderer.sln

Xcode

mkdir build
cd build
cmake -G Xcode ..
open Renderer.xcodeproj

Makefile

mkdir build
cd build
cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ..
make

Usage

Launch

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]]

Controls

  • Orbit: left mouse button
  • Pan: right mouse button
  • Zoom: mouse wheel
  • Rotate lighting: A D S W
  • Reset everything: Space

Inspector

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.

Screenshots

| Scene | Command | | --------------------------------------------------------------------------------------- | ------------------------- | | |

Viewer blinn azura
| | |
Viewer blinn centaur
| | |
Viewer blinn craftsman
| | |
Viewer blinn elfgirl
| | |
Viewer blinn kgirl
| | |
Viewer blinn lighthouse
| | |
Viewer blinn mccree
| | |
Viewer blinn nier2b
| | |
Viewer blinn phoenix
| | |
Viewer blinn vivi
| | |
Viewer blinn whip
| | |
Viewer blinn witch
| | |
Viewer pbr assassin
| | |
Viewer pbr buster
| | |
Viewer pbr crab
| | |
Viewer pbr dieselpunk
| | |
Viewer pbr drone
| | |
Viewer pbr helmet
| | |
Viewer pbr horse
| | |
Viewer pbr junkrat
| | |
Viewer pbr ornitier
| | |
Viewer pbr ponycar
| | |
Viewer pbr robot
| | |
Viewer pbr sphere
| | |
Viewer pbr spheres
|

References

Rendering pipeline

Physically based rendering

File formats

Miscellaneous

License

MIT License

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.