Planet Rendering

My favorite topic in computer graphics is universe/space/planet visualization. When the time to pick a topic for my Master’s dissertation came I already knew what I was going to do! 😛 Although the dissertation was about my favorite topic, because of some unfortunate events, I didn’t spend a lot of time on it. As a result my implementation was only about vertex data with no texturing at all. The technique I used was a Chunked LOD implementation for spherical grids. The application consists of two executables: Chucky and Worldy. Chunky is used for preprocessing the original data and creating a custom file format. Worldy is the actual visualization application. The download includes a preprocessed earth dataset from NASA Blue Marble Next Generation.
You can also have a look at my dissertation here:Real-Time Planet Rendering Thesis



The only video game I had made before joining my Master’s was the one I did when I was still in High School. And this, because I am not really into all this game logic programming stuff. I mostly enjoy graphics and scientific programming. On the second semester of my Master’s I had the opportunity to work on a video game once again. We were a team of 6 people and our goal was to create a platform game with realistic physics and then port it to Nintendo’s GameCube. I was responsible for the following: Graphics Engine, Audio Engine, Graphics Engine for GameCube and the Character Editor. I can assure you it was really fun! Especially when we were porting the game to GameCube. 24hours in a row in the laboratory was an unforgettable experience!

  • 2D physics support using Box2D library
  • Graphics using OpenGL(PC) and GX(GameCube)
  • Audio using FMOD library
  • Level and character editor


Foo Racer

Tired of all the 3D stuff? Then Foo Racer can be a nice break! Foo Racer is a game written in assembly for the QL200 PIC development board. It uses the board’s LED 2D array as a screen. The player has to control a car and avoid obstacles. Foo Racer was a group coursework in my Master’s.

I would like to thank my friend nuclear for the YouTube upload:


The thing I like the most in this academic coursework project is, believe it or not, the name! FeezeeX was a coursework for the module “Simulation and Concurrency” in the second semester of my Master’s. We had to make a distributed physics application that could take advantage of all the CPU cores. It was the first time in my life I was playing with physics programming! It was fun, but also… PAINFUL! 😛 The application will fully function with 2 instances running. Please have a look at the README file. For the rendering I used a lite version of my EOS engine with a couple additions (DDS textures, cubemaps, better GUI). The main features of FeezeeX are:

  • EOS Lite Engine based
  • Multi-threaded networking system using client server model
  • Sphere,Cylinder,Plane,Polygon collision detection and response


RenderMonkey Shaders

Sometimes you just need to test a shader without getting into any CPU-side code. There are several programs who allow you to do this. ATI’s RenderMoney is one of these programs. During the second semester in my Master’s I had to create a series of GLSL shaders implementing various techniques. The following are the effects and techniques I managed to implement:

  • Phong Lighting
  • Bump/Parallax Mapping
  • Water Rendering
  • Underwater effects (vertex distortion and caustics)
  • Cubemap Refractions and Reflections
  • Fur mapping
  • GPU Partice System
  • Flag Animation


D3D Assembly shaders

I present you my first and last attempt to write some D3D assembly shaders. I can admit that it was fun! But OK… let’s don’t overdo it! HLSL works better for me! 😛 The shaders included are:

  • Diffuse lighting
  • Diffuse lighting with multiple lights
  • Vertex morphing
  • Two tone painting
  • Phong lighting (ambient+diffuse+specular)
  • Cartoon rendering
  • Sphere mapping



Accelhullrate is a video-game-wanna-be slot racer game coursework I did for the module “Real Time Graphics” in my Master’s during the first semester. For this project I created a 3D engine from scratch, called EOS. I can admit that I was lazy to do the game logic part for this project. I implemented almost all the graphics features but very few game logic related ones. While the game is using OpenGL 2.0 for rendering, I didn’t use any OpenGL 3.x deprecated functions. The only exception was the code for the GUI rendering where I used fixed function and immediate mode. The following are the main features of the game/engine:

  • Shader-based 3D Engine (GLSL)
  • Per-pixel lighting
  • Sphere mapping reflections
  • Sky-dome with dynamic day-night cycle
  • OBJ file loading
  • Water and fire particle systems
  • Simple terrain rendering
  • GUI Rendering



EREBUS Engine is a 3D engine I made for my BSc thesis. The name come from a Hellenic mythological figure Erebus. The engine is using Direct 3D 10 and implements some of the fundamental graphics algorithms and techniques in computer graphics.

  • Per Pixel Phong Lighting
  • Bump Mapping
  • Cube Environment Mapping
  • Simple QuadTree Terrain Rendering
  • Z-fail Shadow Volumes
  • Projective Shadows

My BSc thesis document can be found here but it is Hellenic language: 3D Engines and Computer Graphics.

EDIT: Engine was crashing on some machines. I did a quick fix and I also included a required D3DX dll file.

BEK Engine

At the end of my first year in university I wanted to make a simple OpenGL 3DS file loader. After I was done I started adding various features… particle systems, per pixel lighting, MD3 model loading, shadow volumes, BSP rendering etc. It might started as a simple 3DS Loader but after some months it became a big (yeah right..) 3D Engine. I was still learning C++, computer graphics and OpenGL and I can admit that I am not proud of my code! 😛 Anyways… these are some of the main features of the engine:

  • BSP Rendering
  • Per-Pixel lighting parallax mapping
  • Z-fail shadow volumes
  • Dynamic cube mapping
  • 3DS, MD3 and MD5 model loader
  • Lens flare effects
  • GUI system


My First Game: GLBall

Ladies and gentlemen, I present you my first video game! 😀 As you can see, my lack of imagination led to this magnificent name: GLBall. I made this game during my last year in high school while I was still learning C and OpenGL. The technologies used for this game are C, OpenGL, Direct Input and Direct Sound.