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
Category Archives: portfolio
Ragged
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:
FeezeeX!
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!
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
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.
Download(win32)
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.