GitHub - zauonlok/renderer: A shader-based software renderer written from scratc...
source link: https://github.com/zauonlok/renderer
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Software Renderer
This is a shader-based software renderer written from scratch. It is written in C89 with minimal dependencies, available for Windows, macOS, and Linux.
Features
- Cross-platform (Windows, macOS, and Linux)
- Minimal dependencies
- Shader-based
- Blinn–Phong reflection model
- Physically based rendering (PBR)
- Metalness workflow
- Specular workflow
- Image-based lighting (IBL)
- Tangent space normal mapping
- Shadow mapping
- Cubemapped skybox
- Skeletal animation
- Orbit camera control
- Back-face culling
- Homogeneous clipping
- Perspective-correct interpolation
- Depth testing
- Alpha testing
- Alpha blending
- Platform abstraction layer (window, event, and timer)
- Math library (vector, matrix, and quaternion)
- Mesh loading (obj, gltf)
- Image loading (tga, hdr)
Download
Binaries for Windows, macOS, and Linux are available.
Build
To build the renderer from source, a C89 compiler and development files for your window system are required.
Windows
Install Visual Studio and
run build_win32.bat
.
macOS
Install Xcode and
run build_macos.sh
.
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
Usage
Launch
If the 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 click and drag
- Pan: right click and drag
- Zoom: scroll up or down
- Rotate lighting: A D S W
- Reset everything: Space
Screenshots
Scene CommandViewer blinn azura
Viewer blinn centaur
Viewer blinn craftsman
Viewer blinn elfgirl
Viewer blinn kgirl
Viewer blinn mccree
Viewer blinn nier2b
Viewer blinn phoenix
Viewer blinn witch
Viewer pbr assassin
Viewer pbr crab
Viewer pbr dieselpunk
Viewer pbr drone
Viewer pbr helmet
Viewer pbr junkrat
Viewer pbr ornitier
Viewer pbr ponycar
Viewer pbr sphere
References
License
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK