Skip to content

A c++ implemtation of software rasterization application with pbr

Notifications You must be signed in to change notification settings

SunXLei/SRender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SRender

SRender is a software rasterization application written from scratch in C++11 with minimal dependencies (except win32 for display image) for windows platform. The purpose of writing this renderer is mainly for better understanding basic CG knowledge and algorithms.

The number of core codes is about 2000 lines, so it's easy for studying or reading. You can feel free to make changes on this project. Here some screenshots of SRender:

Image-based lighting

Blinn-Phong Shading

Main Features

  • Blinn-Phong shading
  • Perspective correct interpolation
  • Back-face culling
  • Homogeneous clipping
  • Cubemap skybox
  • Physically based rendering (PBR)
  • Metallic-roughness workflow
  • Image-based lighting (IBL)
  • movable camera

Binaries for Usage

The pre-built binaries can be found in bin folder. You can start with binaries and obj assets. (Note: the obj folder should be placed in the parent directory of binaries)

The obj models folder be downloaded from here:

https://pan.baidu.com/s/1_EgKzcFXJLCuDi1o5fhQww

extract code: ghde

Build

If you want to check more details of SRender, the cmakelists.txt file is provided for building project files using CMake.

For visual studio:

mkdir build
cd build
cmake -G "Visual Studio 15 2017" ..

Another way is directly opening the SRender file with CLION, it will automatically configure the project.

Control of Camera

  • Rotation: holding left mouse button
  • Pan: holding right mouse button
  • Zoom: mouse wheel

Reference

zauonlok's implementation of software renderer.

GAMES101.

About

A c++ implemtation of software rasterization application with pbr

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published