I’ve read the paper “cascade demo secretes” by Nvidia and wanted to implement a particle system entirely on the gpu myself. So I wrote this small demo. Basicly it works like this:
- Vertexbuffer1 is rendered.
- the geometry shader processes the information (recomputes particle positions, speeds, etc.)
- the result is written into vertexbuffer2 by transform feedback
- vertexbuffer2 is drawn
- the geometry shader creates out of a point a billboard with 4 vertices
- fragment shader renders the billboard with the texture on it
- vertexbuffer1 and vertexbuffer2 are swaped
Needed Extensions:
- EXT_gpu_shader4
- NV_transform_feedback
- EXT_geometry_shader
Download:
Youtube Video:
Pingback: The Geeks Of 3D » GPU Particle System Demo
You say it only uses the GPU, but it eats up 100% of CPU time, too… 😛
Thats a redicioulos argument. Of course it still uses the CPU for driverstuff and drawcalls. Also the CPU has to wait until the Graphics card has finished the calculations. Why the cpu usage is 100% during this time is none of my concerne but of the driver developers.
are there more demos to come ?
cheers
Very cool demo! I saw it and it inspired me in many ways. How hard would it be to make an OpenGL ES version? Any interest? I’ve got some ideas, please contact me, I’d like to discuss them with you!
btw, the demo doesn’t work on ati cards :/ (tested on a radeon hd 4850)
I know that this demo does not work on ati cards. When I wrote the demo the EXT_transform_feedback extension was not aviable yet and ati didn’t support the EXT_geomtry_shader extension. Maybe I replace the NV_transform_feedback with the EXT_transform_feedback someday, then it should work on ATI cards to.
Pingback: OpenGL demos taking advantages of Shader Model 4 « dzutrinh’s blog