Rasterizer

PUBLISHED ON JUL 12, 2019


This is a simple realtime software renderer that emulates the typical graphics pipeline. Therefore, it doesn’t use the help of any Graphics API such as D3D11/12, OpenGL or Vulkan. The software is built mostly from ‘scratch’, written in standard C++98/C++11. To be more precise, the renderer tries to mimic the OpenGL pipeline by providing its implementation instead of relying on the GPU.

The goal of this project is to learn and uncover what’s behind the blackbox of a Graphics API that is often untold (to me at least) and taken as it is. Also to learn how one might write a renderer back in the day. Although, raycasting or so was probably more appropriate than this renderer. Initially, I planned to implement only a few trivial graphics features, but it somehow grew more than expected.


  • Features:
  • Back End Features:

  • Wireframe Rendering
  • Flat Shading
  • Gouraud Shading
  • Phong Shading
  • Diffuse Texture Mapping
  • Scene Switching
  • Rendermode Switching
  • OBJ file Parser
  • JSON file Scene Description
  • Backface Culling
  • Depth Buffering
  • Perspective Correct Interpolation
  • Extendable Vertex and Fragment Shaders
  • Linear Algebra Library
  • Rasterizer
  • Line Rendering


I’m actually glad I finish this project because it allowed me to gain a deeper and richer understanding of hardware rendering and as result made me appreciate it more.

If you’re interested to know more, you can the find source code on this github [link].


Render Samples