Volume-Based Ambient Occlusion

Volume-Based Ambient Occlusion

Volume-Based Ambient Occlusion As a project in the course Technology for Advanced Computer Games, my friends and I implemented a Volume-Based Ambient Occlusion render pass on the GPU, as well as the voxel fragmentation of scene geometry into a Sparse Voxel Octree (SVO). The AO is calculated in a fragment shader and uses a 3D texture filled with the geometry data. The texture is 512x512x512, which becomes the total resolution of the scene. When the geometry is being rendered, the volume data is used for the light calculations. We ray march the 3D texture to simulate outgoing rays from every fragment for the calculation of ambient occlusion. The SVO is implemented on the CPU and can be used to visulize the 3D rasterization of the scene. However, as for now, it is not used for the AO calculations, which was our goal from the beginning....
FLIP Smoke Simulation with IBL

FLIP Smoke Simulation with IBL

FLIP Smoke Simulation with IBL We implemented a Smoke simulation with some modifications to our PIC/FLIP fluid solver, which you can see more of down below. The smoke uses temperature and density for the visualization, which is done with a volume ray caster in Houdini.  The smoke is illuminated with Image Based Lighting (IBL), which means that an environment map is used for light sampling. This gives really realistic results compared to just having a few normal light sources. This project was a part of the course SFX – Tricks of the Trade. A small report and some clips are also available below. Two of the clips use a built-in fire shader from...
Light-Stage rendering on the GPU

Light-Stage rendering on the GPU

Light-Stage rendering on the GPU I did a simple real-time Light-Stage renderer in Matlab, with the use of Accelereyes’ Jacket. A HDR environment map is used for the lighting.  The object is photographed, illuminated from 253 different direction, one at a time. For every image, the direction of that specific light is derived, in spherical coordinates, and from that, a pixel in the environment map is chosen (The map has been scaled down to smooth out the lighting). The intensity of that pixel can then be multiplied with the the whole specific image. This will give the illusion of the object being illuminated by the environment map. All the 253 images are intensity scaled in different aspects and finally summed to create the final image. All this is done about 10 times per second, for a 256×256 image size, thanks to the parallelism of the GPU. This project was a part of the course Image...
PIC/FLIP fluid simulation

PIC/FLIP fluid simulation

PIC/FLIP fluid simulation During the spring 2012, a fellow student and I took a course in advanced fluid simulation. It was held by two Ph.D’s in mathematics at Linköping University. Since we had already implemented an Eulerian fluid, during our third year, we wanted to do something that would result in an improvement. The method of choice was a PIC/FLIP solver. Particles are used for the advection step, to propagate velocity, and the pressure is solved on a staggered grid. We use a PCG (preconditioned conjugate gradient) solver to do this. We also looked more deeply into the surface reconstruction, and implemented a method, using anisotropic kernels, to get a smooth surface that keeps the smaller details of the fluid, such as splashes. This was based on an article written by Jihun Yu and Greg Turk that can be found here. The result is a fluid that can be run well in real-time on a 64x32x32 grid with 200000 particles. Even with the particle number increased to about a million, the simulation still runs in a few fps. This time, the implementation was done completely on the CPU.  Clip 1 Clip 2 Clip...
Zombiehunter

Zombiehunter

Zombihunter Zombiehunter is a game that I created as a project for the course Design and Programming of Computer Games. It is a single player zombie survival game that lets you compete againts other player by getting as high score as possible. As this is the first game I have ever created, I wanted to keep the main concept simple and focus on entertaining gameplay, that makes the player want to play many times and try out different tactics. The game is made completely with XNA Game Studio, thus programmed in C#. No 3D objects are used. The shadows and lighting are individual 2D textures; a small trick that turned out to work great. The game became one of the nominees in the LiU Game Awards 2012. ...