Feed on
Posts
Comments

Category 'Portfolio'

Click the post title to be able to read and write comments.

I implemented this during a weekend, mostly because relief mapping has always interested me. Decided to toss in parallax mapping as well when I was “in the neighborhood”, and a little normal mapping for good measure as well. This is the basic implementation of both techniques with no optimizations or artifact corrections.

Here is a small code snippet. Nothing special, just don’t like to not show code.

float ray_intersect_relief(in float2 orig, in float2 dir)
{
    const float max_num_linear_steps = 20;
    const float max_num_binary_steps = 5;
    float depth = 0.0f;
    float size = 1.0f / max_num_linear_steps;
// Attempt to find the first intersection against the relief map with a linear search.
    // This is because binary search can easily miss topography.
    for(int i = 0; i < max_num_linear_steps - 1; i++)
    {
        float4 t = gTexRelief.Sample(textureSampler, orig + dir * depth);
        if(depth < t.r)
            depth += size;
    }
     // A binary search to try and find the "edge" of the closest intersection point
    for(int j = 0; j < max_num_binary_steps; j++)
    {
        size *= 0.5f;
        float4 t = gTexRelief.Sample(textureSampler, orig + dir * depth);
        if(depth < t.r)
            depth += 2*size;
        depth -= size;
    }
    return depth;
}

The development of Graphics Hardware Technology is blazing fast, with new and more improved models, that out spec the previous generations with leaps and bounds, before one has the time to digest the potential of the previous generations computing power. With the progression of this technology the computer games industry has always been quick to adapt this new power and all the features that emerge as the graphic card industry learn what the customers need from their products. The current generations of games use extraordinary visual effects to heighten the immersion into the games, all of which is thanks to the constant progress of the graphics hardware, which would have been an impossibility just a couple of years ago.

Ray tracing has been used for years in the movie industry for creation of stunning special effects and whole movies completely made in 3D. This technique for giving realistic imagery has always been for usage exclusively for non-interactive entertainment, since this way of rendering an image is extremely expensive when it comes to computations. To generate one single image with Ray Tracing you might need several hundred millions of calculations, which so far haven’t been proven to work in real-time situations, such as for games.

However, due to the continuous increase of processing power in Graphical Processing Units, GPUs, the limits of what can, and cannot, be done in real-time is constantly shifting further and further into the realm of possibility. So this thesis focuses upon finding out just how close we are to getting ray tracing into the realm of real-time games.

Two tests were performed to find out the potential a current (2009) high-end computer system has when it comes to handling a raster – ray tracing hybrid implementation. The first test is to see how well a modern GPU handles rendering of a very simple scene with phong shading and ray traced shadows without any optimizations. And the second test is with the same scenario, but this time done with a basic optimization; this last test is to illustrate the impact that possible optimizations have on ray tracers. These tests were later compared to Intel’s results with ray tracing Enemy Territory: Quake Wars.

 

If you wish to read the thesis you can find it here

This is a two player co-operative horror game that me and my classmates made as our final project in our Bachelors education in Computer Science. We also competed in the Swedish Game Awards -09 with this game.

My role in this project was as the Project Leader and the 3D Engine programmer. Since we have had bad experiences with existing 3D Engines I decided to start creating my own 3D engine for the game about 6 months before we started working on the actual game. As of the end of march 2009 the engine consisted of 12,000 LOC.

Other than this I also worked on modelling the house (which was made in 3D Studio Max) and spent much time completing our in-house Collada parser.

A class project made by me an my classmates (9 people) during 3 weeks in May 2008 for a Game Production course.

This was coded entirely in Python and used the game engine Panda3D.

My responsiblity for this project was that of Project Lead and my main implementation responsibility was coding the quest system.

It features Phong Shading, Normalmapping, Skinned mesh, Level parsing from XML and the main feature is the Quadtree implementation which is shown in the middle of the clip with different colors for the different splits.

We used DirectX 9.0c for this project and the client was coded in C++.

This game and the level editor which accompanied this game (Made by a classmate) recieved a diploma for best project in the course.

Featuring Walking on terrain, multi-textured terrain, Phong shading and a basic particlesystem.

The project was made with C++ and DirectX 9.0c