driven by nostalgia

what is nostalgia?

nos·tal·gia/nɒˈstældʒə, -dʒiə, nə-/


1.a wistful desire to return in thought or in fact to a former time in one's life, to one's home or homeland, or to one's family and friends;
a sentimental yearning for the happiness of a former place or time: a nostalgia for his college days.

2.something that elicits or displays nostalgia.


1770–80; Neo-Latin, from Greek nóst (os) a return home + -algia, "nostalgia," in Unabridged. Source location: Random House, Inc. Accessed: July 21, 2011.

Do you still remember the time when 256 colors were sufficient to display anything of importance?

The time when you were entertained by indistinguishable moving pixels?

The time when you were frightened by the Skifree snow monster? You still are.

The time when bloom and blur effects were not used excessively?

The time when performance was a myth and fps meant feet per second?

The time has come to introduce a new era of computer graphics - inefficient, scruffy and marvelous.

The Nostalgia engine is a modern, lightweight real-time rendering engine based on the .NET Framework 4.0 and uses the OpenGL API currently up to 4.3 through the Open Toolkit Library. It is not only a general purpose engine for the everyday work of a former visual computing student, but an effort to demonstrate the power of the beautiful C# language and the .NET Framework for real-time applications.

lighthouse demo

The lighthouse real-time demo is the first application of the Nostalgia engine. It was made during a practical course about real-time rendering at the Vienna University of Technology in 2011. The task was to create a harmonious OpenGL 3.x demo with respect to content and visual appearance which uses a few common real-time effects.

It is written in C#, using OpenGL 4.0 to support displacement mapping via the new tessellation shaders. Other effects include bloom, depth peeling, irradiance and environment cube mapping, parallax normal mapping, post-process volumetric light scattering, projected grid water with perlin noise heightfield waves, and shadow mapping with percentage closer filtering.

The original music was taken from the Black Mesa Source theme.

Download: Binaries for Windows (23.9 MB)

Note: This demo requires an OpenGL 4.0 compatible video card (NVIDIA GeForce 400 / ATI Radeon HD 5000 series or better) for the tessellation and will not run otherwise. Also, the demo was written for NVIDIA systems and might not work properly with ATI video cards.

sop - setoptimusprofile

NVIDIA Optimus is an energy-saving technology that allows automatic seamless switching between an integrated and a discrete high-performant GPU in mobile devices. Unfortunately, the switching decision is currently based* on a profile system in which application profiles have to be created either by NVIDIA (pre-defined profiles for popular applications such as video games) or by the user.

* Informations regarding the switching system are sparse. According to the NVIDIA Optimus whitepaper, the discrete NVIDIA GPU is triggered by DX, DXVA and CUDA calls, but no OpenGL calls. From my experience, however, CUDA calls do not trigger the switching mechanism.

For a developer on an Optimus system, this is rather annoying since an own application profile has to be created for each GPU-intensive application. Even more annoying, every application user with an Optimus system has to create a profile for the application, too, or else the application will use the integrated GPU, which might be inperformant or might not work at all because of missing hardware features.

SOP is a simple workaround for developers based on NVIDIA's NvAPI that creates an application profile for the current application such that it is always started using the discrete GPU. If the profile already exists, the application is bound to the existing profile. Multiple applications can be gathered in one generic profile, thus keeping the profile system neat and tidy. The profile itself can also be edited in the NVIDIA Control Center.

Download: C++ header file only, Readme

Download: Complete demo application with C++ source code

Download: C# source file only, Readme

Download: Complete demo application with C# source code

staircase-aware smoothing of medical surface meshes

staircase-aware smoothing of medical surface meshes

This is an implementation staircase-aware mesh smoothing as proposed in the paper "Staircase-Aware Smoothing of Medical Surface Meshes" by Tobias Mönch, Simon Adler, and Bernhard Preim.

For further information, please visit this site. There you'll find a detailed description of the application, implementation and parameter details, as well as download links for Windows binaries, sources, and documentation.

texture virtualization for terrain rendering

texture virtualization for terrain rendering

Antelope Island Utah - Visualising Gigapixel Texture Datasets Using Virtual Texturing.

Developed by the Multimedia Lab of Ghent University. Image retrieved from here.

This is a state of the art report written in April 2012 on the concept of texture virtualization, including both Clipmaps and Virtual Texturing. A modern, comprehensive Virtual Texturing system for real-time applications is presented among popular and important acceleration techniques, recent developments and promising fields of application which have not been covered in the main contributions on the matter.

Abstract: Virtual texturing is a technique that allows the use of arbitrarily large textures within the limited physical video memory. Through a paging and streaming system, only the currently visible parts of a mipmap chain are stored in the video memory while the rest of the data may reside in any other memory or storage device. Not only does this enable the use of unique and very detailed textures, but makes high resolution images such as satellite or aerial photography data usable in real-time applications without further modifications or downsampling.

This work sketches the virtual texturing pipeline and discusses the benefits and limitations of it. Due to the nature of terrains in real-time applications, the discussed methods are of particular importance for performant and photorealistic terrain rendering and are thus viewed with regard to these properties and needs. Special emphasis is devoted to recent developments in virtual texturing and possible future fields of application as well as acceleration techniques.

Download: PDF file (2.3 MB)

assimp 3.0 opengl demo with bone animation


"Open Asset Import Library (short name: Assimp) is a portable Open Source library to import various well-known 3D model formats in a uniform manner. The most recent version also knows how to export 3d files and is therefore suitable as general-purpose 3D model converter. [...] Assimp aims at providing a full asset conversion pipeline for use in game engines / realtime rendering systems of any kind - but is not limited to this audience. In the past, it has been used in a wide and diverse range of applications."

As the accompanying tool AssimpView uses the Direct3D API, there was no sample code available for the usage of Assimp with OpenGL for quite some time. Especially the bone animation is a cumbersome task, which is why I decided to create and provide a basic bone animation demo for OpenGL. The demo is written in C++ and uses SDL for context handling and GLEW for extension handling. Both libraries are included in the download link below.

Download: Binaries for Windows and source code (3.9 MB, last updated 01.08.2012)

Download: Binaries and source code of the demo using Assimp 2.0 (3.1 MB, last updated 09.05.2012)

Note: This demo was written for NVIDIA systems and might not work properly with ATI video cards.

integration of 3d characters into a 2d adventure engine

integration of 3d characters into a 2d adventure engine

Since winter 2010, I have been developing and maintaining a library for the adventure game engine Visionaire to integrate 3D characters into the 2D game scenes. The main objective is to integrate the 3D models in such a way that they behave like the already existing 2D characters in the game logic and can be replaced with each other. Also, backward compatibility, efficient rendering, and simple interfaces for the user are crucial design criteria. Besides the basic rendering, the library also offers shadow rendering, toon shading, and ambient occlusion, which can be adjusted as needed to seamlessly integrate the 3D character into the e.g. hand-drawn or pre-rendered scene.

The theoretical background of the implementation as well as a general survey over 2.5D games is discussed in my Bachelor Thesis at the Vienna University of Technology, which is available here (28.0 MB).

animated transitions in statistical data graphics

This program was made during a practical course about information visualization at the Vienna University of Technology in 2011. It implements the basic idea proposed in the paper Animated Transitions in Statistical Data Graphics (Heer and Robertson, 2007).

For further information, please visit this site. There you'll find a short summary of the paper, implementation and dataset details, as well as download links for Windows binaries, sources, and documentation.


Apefruit is an OpenGL 3.2 game that I have done together with a colleague during a practical course at the Vienna University of Technology in 2010. The gameplay is a crossover of football and the game mode "bombing run" of the Unreal Tournament game series, except that the players are monkeys and the football is a giant banana.

The game was written in C++ and the shader language GLSL using GLFW for context handling, GLEW for extension handling, GLM as mathematics library, ODE for collision detection, and FMOD Ex for audio playback. All libraries are included in the download link below.

The sounds and background music were taken from the games Unreal Tournament 2004 and Serious Sam: The Second Encounter.

Download: Binaries for Windows (22.2 MB)

Note: This game was written for NVIDIA systems and might not work properly with ATI video cards.

contact and imprint


This website is maintained by name

Having a question or trouble with some code? Have you already asked the oracle about it? If no, please do so now. Still have questions?

Jabber: j

Carrier pigeon: No longer accepted due to repeated abuse. is a private, non-commercial website. All content on this website is published under the right to freedom of speech as declared in the Universal Declaration of Human Rights and is to be interpreted as my opinion at a certain point of time or the opinion of a third-party if denoted. Hence I do not claim correctness or harmlessness of any of the content provided on this website.

This website contains links to third-party websites of which content I cannot control or can be held liable for. I added these links at a certain time when the linked websites did not seem to contain any offensive or illegal content. I do not permanently check all linked websites for availability and content changes, so please inform me if a link has to be changed or removed.

All compiled and source code files provided on this website are provided as is and without any guarantee of executability, safety or security. They are published in a publicly available private archive and are to be interpreted as coding suggestions and should not be used without an examination of the code - as should nothing you download from the internet. Several applications depend on third-party libraries which might be included in the downloads. Please consider the respective licences and copyright regulations.

If not denoted otherwise in the code files itself, all of my code published on this website is published under the BSD 3-clause license!