A screenshot from the Fairy Forest demo.

Fairy Forest

A couple of semesters ago I decided to somewhat challenge myself. I took a class from the graduate program of Visual Computing at my university and decided to do it as a sort of a hobby project. This course has the students make a graphics demo, such as you would see in demoscene.

My idea was to make a magical forest with as many point lights flying around as possible. In the end I implemented the following effects:

  • Deferred Shading [1] in order to handle a lot of lights. I actually ended up using a hybrid approach, where I would use the spheres near the camera as stencils, and instanced rendering for everything else. This should theoretically minimize the amount of overdraw happening.
  • Two automatic Level of Detail techniques to reduce the amount of polygons.
    • An edge collapse [2] algorithm would run on startup to decimate the objects and create varying levels of detail for an object. Obviously this isn’t something you would want to do in a game where all of the assets need to be loaded dynamically during gameplay, but since everything in my demo fits in a small amount of memory due to heavy instancing, it was no problem to load everything and wait for a little bit at startup.
    • Geometry shader billboarding [3] as the lowest resolution level of detail.
  • A few post processing effects were also implemented:
    • Bloom [4]
    • HDR [5] for the fairies flying in the atmosphere.
    • Depth of Field [6] to focus mostly on the creatures in front of the camera.

Feel free to skip around through the video, it’s somewhat slow at the beginning.

Definitely the most dificult part of the project was the sheer amount of work I had to do. These projects are usually done in pairs, but I had to do it myself since my partner decided to drop the course. I was, however, very excited about the project, and I can’t wait until I get to do something like this again.


[1] Deferred Shading

[2] Edge Collapse

[3] Geometry Shader Billboarding

[4] Basic Bloom Effect, Extension

[5] HDR

[6] Depth of Field

This was done for the Real Time Rendering course at the TU Wien.