Projects Software and Hardware

WebGL Raytracer

A re-implementation of my simple ray tracer, this time purely in a fragment shader for WebGL.


Some of the most important classes in OpenGL2 packed into easy-to-reuse classs. Namely framebuffer (and depthbuffer) objects, Shaders and vertex buffer objects. Recently I have updated the classes to support OpenGL3.

OpenGL mirrors

A quick look on the math of arbitrary mirror planes in OpenGL.

Software Rasterizer

Very inefficient-but-fun-to-implement software rasteriser :)

Volume Rendering

A look into GPU-based raycasting methods to render volumes.

Dynamic Cubemapping

An OpenGL2 method to render dynamic cubemaps; for example, for dynamic reflections or refractions.

Spectral Rendering

Spectral Rendering on the GPU using FBOS and MRTs.

ACES II light

A wooden replica of an ACES II ejection seat.

Rocket Science

A small 2D simulator of rocket movement written in Mono/C#. The goal was to have an easy to use 2D Orbiter replacement with full orbital mechanics (well, on a plane anyway). KSP now fills that role.


A semi-voxel renderer (like the old Novalogic titles) by ray casting on the GPU combined with traditional rasterisation graphics.

MAME Arcade

Building my own MAME cabinet

Simple Ray Tracer

This was just a quick over-the weekend test of some raytracing techniques. It developed further into a multi-tiled, multi-threaded SIMD raytracer to test the multicore systems at uni. Currently, it supports diffuse phong shading, and almost everything is pretty much hardcoded, although this might change in the future.

Deferred Shading in OpenGL2

A straight-forward, non-optimized tech demo of deferred shading by rendering everything into float FBOs. The first pass renders into the G-buffer render target, the second pass reads back these values and calculates final shading.


I was fed up with the overkill of cppUnit, so as a small exercise for the software engineering exam (back then) I wrote this lightweight C++ unit test suite. Everything is packed into a single, quite small header, so it won’t clutter your project with unnecessary files and libraries. Provided is an example and doxygen documentation.


This viewfrustum culling demo was built upon the OpenGL Pseudo-Instancing white paper from NVIDA. 25 Terrain tiles with 2500 trees each, as well as 60 clouds with 250 particles each were rendered, for a full 26500 quads.