Skip to content

Latest commit

 

History

History
87 lines (62 loc) · 2.38 KB

Readme.md

File metadata and controls

87 lines (62 loc) · 2.38 KB

😺 Renderer

Aiming to build a pure self-made C++-based renderer.

Introductions 😺

This project aims to document my self-learning journey in Computer Graphics and further improve it in the future. I will try to write all the code myself and strive to accurately reproduce the equations. As a result, the code may have a fully-personalized style. One of the main objectives is to ensure that all important code blocks are accompanied by detailed annotations, providing better understanding for readers. Additionally, I will work towards adding more functions and reproducing interesting papers using this renderer.

Features 😸

* Shader Based

* Flat Shading

* Gouraud Shading

* Phong Shading

* Depth Testing

* Normal Mapping

* Tangent Space Normal Mapping

* Shadow Mapping

* X11 + Keyboard-based Camera/Light control

* RayTracer ! (I love Pink Floyd :)

Usage 💻

This project is powered by WSL2 with Ubuntu 20.04.

sudo apt install gcc libx11-dev
make ./main
Press W A S D I K to control the camera.
Press 8 2 4 6 + - to control the light.

Todo 💪

  • Orbital Camera
  • UI
  • Antialiasing
  • Back-face culling
  • Skybox
  • Ray-tracing for Rasterizer
  • ……

Reference 📔

https://nostarch.com/computer-graphics-scratch

https://learnopengl.com/

https://github.com/ssloy/tinyrenderer

https://en.wikipedia.org/wiki/Total_internal_reflection

https://en.wikipedia.org/wiki/Specular_reflection