Tuesday 19 February 2008

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.

No comments: