CLUSTERED SINGLE SURFACE PARTICLES
- When creating single surface particle systems, its common to create a single
- mesh, updating all the verts with one simple update() call.
- There is big problem with this approach, assuming the quantity of verts exceeds
- a given system dependent amount - "bottlekneck". The time it takes to both transfer and
- update the vertex data on the card...AGP speed & other factors determine how much data
- you can send before a significant framerate drop occurs.....
- One solution..is to break the single surface system into clusters - groups of single surface
- meshes. You then update the verts in these clusters throughout the gamecycle, so perhaps
- updating a cluster after I/O processing, and another cluster after some other operation..
-
- The idea is quite simple, you send bursts of small/medium sized data sets to the
- graphics card, do some game processing & the send more data. This prevents the
- cpu from wasting cycles waiting..the more data that must be sent the longer the
- cpu idles waiting for the data to complete transfer + the card to update itself...
[perhaps 100 quads per surface/cluster is reasonable?]
The speed gains my not be great..i havent tested the concept....but its worth
a shot - i might try moding bloodlocusts single surface system to work like this..
but i have heaps of more important code to get finished in my own project...
anyway - perhaps someone could try this out + post results?
- When creating single surface particle systems, its common to create a single
- mesh, updating all the verts with one simple update() call.
- There is big problem with this approach, assuming the quantity of verts exceeds
- a given system dependent amount - "bottlekneck". The time it takes to both transfer and
- update the vertex data on the card...AGP speed & other factors determine how much data
- you can send before a significant framerate drop occurs.....
- One solution..is to break the single surface system into clusters - groups of single surface
- meshes. You then update the verts in these clusters throughout the gamecycle, so perhaps
- updating a cluster after I/O processing, and another cluster after some other operation..
-
- The idea is quite simple, you send bursts of small/medium sized data sets to the
- graphics card, do some game processing & the send more data. This prevents the
- cpu from wasting cycles waiting..the more data that must be sent the longer the
- cpu idles waiting for the data to complete transfer + the card to update itself...
[perhaps 100 quads per surface/cluster is reasonable?]
The speed gains my not be great..i havent tested the concept....but its worth
a shot - i might try moding bloodlocusts single surface system to work like this..
but i have heaps of more important code to get finished in my own project...
anyway - perhaps someone could try this out + post results?