SPARK open-source advanced particle engine

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki

SPARK open-source advanced particle engine

Postby Juff » Fri Oct 30, 2009 8:24 pm

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 :


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

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.
Posts: 18
Joined: Fri Oct 30, 2009 7:53 pm

Postby Valmond » Fri Oct 30, 2009 8:39 pm

This looks extremely impressive!

What hardware will this run on?
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Postby Dorth » Fri Oct 30, 2009 8:49 pm

zlib license. beautiful professional job. looks like it could give a good competition to . What's not to like? Great job, I'll be sure to include this lib in any current and future project using Irrlicht.
Posts: 931
Joined: Sat May 26, 2007 11:03 pm

Postby hybrid » Fri Oct 30, 2009 9:11 pm

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.
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany

Postby Viz_Fuerte » Fri Oct 30, 2009 9:23 pm

:shock: ohhhhhhh, is beautiful!!!
User avatar
Posts: 91
Joined: Sun Oct 19, 2008 5:29 pm
Location: Valencia (Spain)

Postby Virion » Fri Oct 30, 2009 10:19 pm

very very impressive
User avatar
Competition winner
Posts: 2138
Joined: Mon Dec 18, 2006 5:04 am

Postby stefbuet » Fri Oct 30, 2009 11:03 pm

And tutorials are in French too :P
Awesone work! nice job!
User avatar
Competition winner
Posts: 495
Joined: Sun Dec 09, 2007 4:13 pm
Location: france

Postby andres » Fri Oct 30, 2009 11:27 pm

Prof. Andres Jessé Porfirio
Federal Technological University of Parana (UTFPR)

User avatar
Competition winner
Posts: 78
Joined: Tue Jul 08, 2008 5:18 pm
Location: Guarapuava/Brazil

Postby shadowslair » Fri Oct 30, 2009 11:46 pm

Beautiful indeed. Unfortunately it`s for OpenGL only. :?
"Although we walk on the ground and step in the mud... our dreams and endeavors reach the immense skies..."
User avatar
Posts: 758
Joined: Mon Mar 31, 2008 3:32 pm
Location: Bulgaria

Postby Juff » Fri Oct 30, 2009 11:57 pm

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.
Posts: 18
Joined: Fri Oct 30, 2009 7:53 pm

Postby Nadro » Sat Oct 31, 2009 1:59 am

It looks great :)
Posts: 1643
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Postby 3DModelerMan » Sat Oct 31, 2009 2:11 am

Maybe one of the devs can put it in the next release...
That would be illogical captain...

My first full game:
User avatar
Posts: 1691
Joined: Sun May 18, 2008 9:42 pm

Postby ProjectIRR » Sat Oct 31, 2009 2:22 am

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?
Posts: 21
Joined: Mon Oct 26, 2009 3:21 am

Postby Juff » Sat Oct 31, 2009 2:57 am

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 ?
Posts: 18
Joined: Fri Oct 30, 2009 7:53 pm

Postby Halifax » Sat Oct 31, 2009 4:11 am

Hey Juff, glad to see you added an Irrlicht rendering module and the zlib license. Great job!
TheQuestion = 2B || !2B
User avatar
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95


Return to Project Announcements

Who is online

Users browsing this forum: No registered users and 1 guest