Page 1 of 7

SPARK open-source advanced particle engine

Posted: Fri Oct 30, 2009 8:24 pm
by Juff
Hi to all,

let me introduce to you my particle engine :

SPARK is a free open-source advanced particle engine written in C++.
The computation and the rendering are totally independant which allows the particle computations not to depend on a rendering system. In that way, SPARK can integrate within any rendering system (either 2D or 3D). This is performed thanks to rendering modules. SPARK has rendering module for OpenGL and SFML and a new one for Irrlicht is released today (developped in collaboration with Darktib).

Why having developped a module for Irrlicht whereas it already has some integrated particle systems ? Because SPARK offers a lot more features and is more scalable than the Irrlicht one.

Basically here are a few things you can do with SPARK :
  • Render particles with points, point sprites, quads or lines
  • Define the orientation of the quad in a very accurate way (not only facing camera)
  • Rotate particles
  • Animate texture and use texture atlas
  • Use 32 bits indices to build up very large particle systems
  • Choose to use VBOs if needed
  • Sort particles
  • Use the inner physics engine (particle vs environment and particle vs particle)
  • have several emitters per systems
  • ...
SPARK particle systems can integrate totally within Irrlicht thanks to the IRRSystem which derives from the Irrlicht SceneNode. So you can use a SPARK particle system in Irrlicht the exact same way as any SceneNode.

Here are a few screenshots taken from some demos :

Image
Image
Image

And you can see a video at this address

By the way, this was my first intrusion into the Irrlicht world and I must say I am really impressed by the ease of use of the engine. It is very easy to set up and get 3D stuff on the screen quickly. However I think there are a few things to improve : the VBO support is still young and will gain a lot with more flexibility. The point sprites are not really useable as the attenuation function are not well set ie you cant get point sprites to fit perfectly in the universe (if you want the formulas to obtain correct integration I can give them to you).

Anyway, hope you ll enjoy the library.

For more information (complete list of features, documentation, tutorials...), to download the library and some demos, check out the website at http://spark.developpez.com

There is also a forum if you need some help or want to discuss about some stuff.

Thanks and tell me what you think about the library and if you have some suggestions for the future releases dont hesitate.

Posted: Fri Oct 30, 2009 8:39 pm
by Valmond
This looks extremely impressive!

What hardware will this run on?

Posted: Fri Oct 30, 2009 8:49 pm
by Dorth
zlib license. beautiful professional job. looks like it could give a good competition to http://fxpression.com/Download.html . What's not to like? Great job, I'll be sure to include this lib in any current and future project using Irrlicht.

Posted: Fri Oct 30, 2009 9:11 pm
by hybrid
That looks really impressive. Good job. Please let us know if you need some extension to the capabilities Irrlicht already offers - in order to integrate your system easier, or to get better render quality/performance.

Posted: Fri Oct 30, 2009 9:23 pm
by Viz_Fuerte
:shock: ohhhhhhh, is beautiful!!!

Posted: Fri Oct 30, 2009 10:19 pm
by Virion
very very impressive

Posted: Fri Oct 30, 2009 11:03 pm
by stefbuet
And tutorials are in French too :P
Awesone work! nice job!

Posted: Fri Oct 30, 2009 11:27 pm
by andres
wooow
impressive!

Posted: Fri Oct 30, 2009 11:46 pm
by shadowslair
Beautiful indeed. Unfortunately it`s for OpenGL only. :?

Posted: Fri Oct 30, 2009 11:57 pm
by Juff
Thanks for all the comments :)
shadowslair wrote:Unfortunately it`s for OpenGL only.
No its not for OpenGL only. If you use the Irrlicht renderers it can be rendered either with OpenGL or Direct3D as the rendering calls are made with Irrlicht. However there is also a rendering module in SPARK to use directly with native OpenGL (without Irrlicht).
hybrid wrote:That looks really impressive. Good job. Please let us know if you need some extension to the capabilities Irrlicht already offers - in order to integrate your system easier, or to get better render quality/performance.
Thanks. Everything is ok regarding integration. Of course more flexibility in the vertex format and/or in the VBO settings would allow me to optimize the rendering.

As I said in the first post, point attenuation in Irrlicht seems a bit arbitrary set. So you cannot really simulate quads facing camera using point sprites atm.
I have implemented a correct attenuation function in the OpenGL renderer that allows to pass from point sprite to quads with no difference at all which means a point sprite of size S will have the exact same render as a quad with size S. You can find it in the spark source code in GLExtHandler.cpp in the method enablePointParameterGLExt if you re interested. This formula can be used for Direct3D as well with very little effort.

Posted: Sat Oct 31, 2009 1:59 am
by Nadro
It looks great :)

Posted: Sat Oct 31, 2009 2:11 am
by 3DModelerMan
Maybe one of the devs can put it in the next release...

Posted: Sat Oct 31, 2009 2:22 am
by ProjectIRR
It looks spectacular. I do have a question though, you say it now has a rendering modulal for Irrlicht, not just OpenGL. Does this mean it just runs with whatever rendered you've chosen? (Can you choose direct X and it works through Irrlicht to render?)

I haven't tested it, but it looks like it would be a great addition to the engine :)

*Edit* After looking at the demos I see it does run with Direct X through Irrlicht :)

I was wondering though, after running the Irrlicht fire demo with and without direct x, does direct x look a little better, or is it me paranoid over picking the right solution?
Image

Posted: Sat Oct 31, 2009 2:57 am
by Juff
That s a bug I have seen on my PC at work. But I thought it was due to my driver not being up to date. Actually only one triangle out of 2 is drawn per particle in OpenGL, that s why the fire looks bad. This is even more noticeable on the basic demo. I think I know from where it is from.

I guess you own a ATI card ? Do you have the latest drivers ?

Do you mind if tomorrow I post a new set of demos so you can test them on your PC to check if the bug is gone ?

Posted: Sat Oct 31, 2009 4:11 am
by Halifax
Hey Juff, glad to see you added an Irrlicht rendering module and the zlib license. Great job!