Other Projects

As a personal project, I optimized a Software Renderer initially created for the class Fundamental Computer Graphics.

Software Renderer pipeline (December 2011):

  1. Transform vertices of polygons according to the camera position
  2. Clip polygons according to the view frustum
  3. Interpolate normals and texture UV coordinates
  4. Split polygons into triangles and scan convert each one to generate individual pixels
  5. Draw pixels to the screen.


Project Optimizations (February 2014):

  • Used a Z-buffer to reduce lightning calculations
  • Used Intel Threading Building Blocks for concurrent calculations
  • Used 128 bits Streaming SIMD Extensions (SSE) to perform the lightning calculation


So far these optimizations have  resulted in a ~5x speed up for the worst case scenario (camera very close to the object).
This was tested on my (now old) computer, which has 4 cores.


In the future I plan to perform some kind of spatial partitioning in order to reduce the amount of processed polygons.

You can download the EXE here