Georgi Nikolov

Software Engineer

connect@georgi-nikolov.com
Torstraße 179 / 10115 Berlin / Germany

Software Rasterizer

2023
Personal Project

url - https://gnikoloff.github.io/software-renderer/

code - https://github.com/gnikoloff/software-renderer


Technologies Used:

C, SDL2, WebAssembly

Role:

Development

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.

Features

  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