Georgi Nikolov

Software Engineer
Torstra├če 179 / 10115 Berlin / Germany

Software Rasterizer

Personal Project

url -

code -

Technologies Used:

C, SDL2, WebAssembly



3D renderer written as an exercise to learn C and how graphics APIs such as OpenGL are implemented under the hood. Supports native and web via Emscripten.


  1. Software rasterization
  2. Pure C17 implementation
  3. Right hand Y-up coordinate system
  4. Uses SDL for access to graphics hardware, mouse, keyboard, etc.
  5. Supports native and web via emscripten
  6. Perspective correct interpolation
  7. Support for vertex and fragment shaders
  8. Depth buffer
  9. Face culling
  10. Viewport clipping
  11. Loading and parsing Wavefront .OBJ files and PNG images
  12. Cube map sampling

References and readings

  1. 3D Computer Graphics Programming
  2. Modern C
  3. niepp/spbr
  4. Lode's Computer Graphics Tutorial

Geometries demo

Geometry demo

Depth buffer demo

Visualised depth buffer

Environment mapping

Environment mapping

Plasma demo

Plasma demo

Tunnel demo

Tunnel demo

2D Physics demo

2D Physics demo