Skip to content

yaukeywang/YwSoftRenderer

Repository files navigation

YwSoftRenderer

Implementing a Soft Renderer for Learning CG.

About

Mostly coming from Muli3D, improved by my understanding. It is still a long and hard trip, but worthwhile.

Build

Premake5 is used to build the project, so you need to download a Premake5 execuatable file and put it into the project root directory.

Next, open a command window and type the generating command, e.g.

premake5 vs2017

or

premake5 vs2015

(Currently only support Windows platform, other platforms like OSX and Linux is still on the schedule.)

After executing the command "premake5 vs2017", you can find the Visual Studio solution files at "$(ProjectRoot)/Workspace/vs2017/YwSoftRenderer.sln", open it with Visual Studio and build the solution, all demo executable files are located at "$(ProjectRoot)/Binaries/".

Progress

  • Math support.
  • Base rasterization and rendering stuffs as Muli3D supported.
  • Premake5 support.
  • Input module.
  • Stencil Buffer support.
  • State Block optimize with pooling.
  • Model Data Loading module.
  • Resource and IO module.
  • Texture Data Loading module.
  • More Basic demos.
  • Basic Shading with Light demo (Blinn-Phong, Normal-Mapping).
  • Triangle Shader demo.
  • PBR demo.
  • Alpha Blending support.
  • Alpha Test support.
  • Triangle Shader with Dynamic Vertex Generating support.
  • Material File support.
  • IBL support.
  • New PBR demo. [Working on...]
  • Linear Color Space support.
  • MSAA support.
  • Skeletal Animation support.
  • Scene Space Managment module.
  • Dynamic Shadow demo.
  • Triangle Subdivide demo.
  • Postprocess Effect demo.
  • Log module.
  • Low Level Memory Pool support.
  • Linux support
  • Mac OS X support.
  • Global Illumination support.
  • Raytracing Core and Raytracing Shader support.
  • Custom Shader Compiler and Runtime support.
  • Something unknown...

Examples

Demo 1: Triangle

Demo 1 Triangle

Demo 2: Model

Demo 2 Model

Demo 3: Blinn Phong

Demo 3 Blinn Phong

Demo 4: Normal Mapping

Demo 4 Normal Mapping

Demo 5: Triangle Shader Wireframe

Demo 5 Triangle Shader Wireframe Demo 5 Triangle Shader Wireframe 1 Demo 5 Triangle Shader Wireframe 2

Demo 6: PBR (Unity BRDF 1: Desney Diffuse + Torrance-Sparrow Specular (D=GGX,F=Schlick,V=Smith), IBL is wroking on.)

Demo 6 PBR Chair Demo 6 PBR Unity Adam Lu Head

Demo 7: IBL (With full steps of dynamic generating precomputed data.)

Demo 7 Image Based Lighting

Demo 8: PBR-IBL-Textured (With full steps of dynamic generating precomputed data.)

Demo 7 PBR-IBL-Textured

About

Implementing a Soft Renderer for Learning CG.

Resources

Stars

Watchers

Forks

Packages

No packages published