kvark's picture

KRI features: GPU-powered Particle Engine

Hello everybody!

I've recently completed the core implementation of the Particle Engine and want to share with you.
Short video:
http://kri.googlecode.com/files/demo_particles.avi

The complete description will appear here some day:
http://code.google.com/p/kri/wiki/Particles

In brief:
Scene is created in blender and exported to KRI.
Upon loading, the demo attaches the plane-reflector behavior to the particle system (direct physics export not yet supported) and starts the animation.
Particles are randomly emitted from the monkey face surface in the direction of normals (that is translated automatically from Blender). They are affected by gravity (default) & plane reflector.
Everything is updated on GPU via Transform Feedback and drawn as point sprites. The update functionality can handle 1M particles at 30fps, while the drawing is a bottleneck.

I'm going to extend the particle system to be used in FUR rendering soon.

Images
monkey particles

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
the Fiddler's picture

I have to say that the KRI engine is very very impressive. I've been following development closely and will probably use it for a game project in the (not too distant) future.

kvark's picture

Wow.

I'm glad you like it! I thought you are doing something similar yourself, but I have no idea about the extra dimensions you drain free time from to do so many things at once :)
I can't say KRI is ready for the end-user (at least, for a regular end-user). Just today I was redesigning uniform dictionaries structure and changed pretty much of the internals (oh, need to update docs again... does anyone read them?:)
Nevertheless, I intend to add you to the project members as soon as you decide to use it.

BTW, I have one more particle demo, that might be of interest (committed as kri/demo_mandel).
Recall the Mandelbrot set with (Z' = Z*Z +C) equation. I tried to show this iterative process in a different perspective:
At each screen point on a grid, a real particle is born. Than at each iteration it actually jumps to the next position according to the equation mentioned.
Particles increase their intensity and change color through iterations, and have the limit of the iterations before death (going outside radius-2 circle is death as well).
When a particle dies, it's reborn in the initial grid position.

So, I see the dynamic picture of the Mandelbrot's hidden dimension. It's pretty exciting :)