Tuesday 19 February 2008

Videos of work

During my time at Canalside Studios I developed a CPU based particle engine in XNA, here is a old video of it in action:

The engine was used in 3 titles whilst I was working there, here is an early video of one of them, Hexothermic:


Another Game I worked on at Canalside is G3:


Finaly here are two videos of CPU based particle engines I have created in DirectX 10 for my final year dissertation. The first uses inheritance to create different emitter types and processes the particle rotation in a slghtly different way (has to convert from euler angles to world space vectors), resulting in poorer performance, it can only render 8000 particles on screen at 60FPS:



And here is a CPU based particle engine built using templates, no angles are needed, velocity is used directly as the direciton in which the partciles fire, it is able to render 10000-12000 particles on screen at 60FPS:

Dissertation

For my final year we have to produce a dissertation, it can be regarding anything that interests you. For mine I have chosen to develop two particle engines and discuss the advantages and disadvantages of both. Both engines will be developed in C++ using the DirectX 10 SDK. I have chosen to use DirectX 10 as previousily I have only used DirectX 9 and I want to familiarize myself with DirectX 10 and explore some of the new features available.

My first engine, which is already running, though it is not finalized, is a CPU based particle engine. All particle data is processed on the CPU, afterwhich it is uploaded to the GPU as a point list. The vertex shader simply passes the particle data through to the geometry shader. The GS creates a quad (as point sprites are no longer available in DX10) based upon the size and position of the particle. Finally the particle colour is passed to the pixel shader where the quad is textured and presented on screen. I have used templates to build an emitter at runtime.

My second engine, which is still under development, is a GPU based particle engine. Acceleration, velocity, position etc. is processed in the pixel shader, where all data is stored in a floating point texture. The data is then passed to (virtually) the same shader used to render the previous particle engine, the only differance is that the particles position is not passed to the shader via a vertex buffer, it is passed via a vertex texture.

My first post!

Hi. I have created this blog to share my ideas, developments and work with anyone wishing to read. If you wish to leave any feedback or general comments please do so. I will eventually get round to adding some code examples and discuss what I am developing at the minute.

I am currently studying my final year of a Computer Games Programming course and the University of Huddersfield. I have experience with Microsoft's DirectX 9 and 10 and XNA. I know how to program in Java, C# and C++ (my favourite).

My favourite area of games development is Rendering. I enjoy developing shaders, effects and strange rendering techniques. I feel it is a very visual aspect of programming, you can see your results almost instantly (providing it compiles).

My placement year was spent at Canalside Studios (www.canalsidestudios.com). During my time there I learnt a lot and we managed to obtain a contract with Microsoft to publish one of our titles on XBox Live Arcade!