Skip to content

Latest commit

 

History

History
42 lines (35 loc) · 1.56 KB

README.md

File metadata and controls

42 lines (35 loc) · 1.56 KB

3D Software Renderer

A simple 3D software renderer built in C++ from scratch without using OpenGL, DirectX or Vulkan. Only dependencies are for graphics output and image (texture) loading.

This project is heavily inspired from Tinyrenderer. I created this to get a deeper understanding of 3D Graphics and OpenGL pipeline along with solidifying my concepts of C++ programming.

Features

  • 3D Software Rasterization pipeline
  • Parallelized renderer (using OpenMP)
  • Extendable vertex and fragment shaders using C++ virtual functions
  • Tangent space normal texture mapping
  • Backface culling
  • Perspective correct interpolation in fragment shaders
  • Hidden faces removal using Z-buffer
  • Implementations of Flat, Gouraud, Phong and Normal map shaders.

Engine features

  • SFML Backend for graphics output
  • Camera movement around an axis
  • Obj model parser
  • Templated vector and matrix math library
  • Texture loading (using stbimage)

Samples

Head Fire hydrant Leather Shoes

Todo features

  • Add Scene loader for loading multiple objects
  • Camera control in every directions (currently it has only orbiting controls)
  • PBR Shading
  • Ambient Occlusion
  • Shadows

References