Skip to content

A simple 3D software renderer built in C++ from scratch.

Notifications You must be signed in to change notification settings

prakhar9998/3DRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A simple 3D software renderer built in C++ from scratch.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published