Jump to content
  • entries
  • comments
  • views

Particles benchmarking

Sign in to follow this  


I did a small benchmark of my particle system - the one used for rendering clouds to impostors, or rendering the brute-force voxel space as particles. Keep in mind this is on a Radeon 9700.

When fillrate is not a concern, i get around 15 million particles per second. A vertex shader is used to align the vertices in eye-space (ie. billboarding). That's around 50000 particles @ 300 fps. Don't forget that it transforms 4 times more vertices (so that's 60 million vertices a second), since each particle is made of a quad.

There were two tricks to make it go that fast:

1. Eliminate the CPU sort - the vertex and index buffers are 100% static. Specifically, in theory there are exactly 45 combinations of index buffers to sort the particles perfectly from back to front, for a given camera position. So i'm basically using one VB and 45 IBs, and all the work that is needed at run time is to bind the VB and select one of the 45 IBs, the one that corresponds to the viewing angle.

2. Eliminate the CPU billboarding calculations - thanks to the vertex shader, it was not really hard.

The next (and hopefully last) step is to implement a priority queue, to get ride of these slowdowns when moving fast.
Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!