renderer

联合创作 · 2023-09-29 19:41

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

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报