» Particles Unplugged
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Particles Unplugged

module dx11 particles kinect
Credits: Martin Zrcek - me, vux for creating DX11, and a workshop :) based on dottore's particle system

about

Bug is dead, PS Unplugged is alive and working now.
(You need directx11-nodes-alpha )

The meaning of this particle system is to split the DX11 Particles in parts: Particle Emition, Particle Animation and Drawing the particles. To set a "standard" what these parts should do, so that we can freely combine them together. You can blend modules in real time to change your PS.

It's like Vvvv concept. One can make a module of placing particles on a mesh. Another one can make collision of particles with depth of Kinect , or render this in blobs, add a material and finally somebody else can come and simply combine these parts with different ones.

How the idea came up: Just on a NODE festival I spoke to Vux about an idea of this particle system where every force is added as a single node. He answered that it was his initial idea too, but he realised there is a performance loss, so that's not a good idea. What I thought was "that's great, it was his idea too" :) and started working on it. Now it's only few forces, so performance should be the same. There are some bugs, of course. Like a weird blinking if you put small lifetime.

P.S.: I'm a freelancer, so often unemployed. And can't keep working for "thanks, nicely done". Seriously, not good, wanted to quit Vvvv already and many friends told me to. If you think you could use my skills, send me an email: martin@probenesov.cz or visit portfolio

download

Particles_Unplugged.zip
27.11.13 [12:30 UTC] by Martin Zrcek | 1882 downloads
Stable 01
Show 2 older revisions

Older Revisions

Particles_Unplugged.zip
26.09.13 [09:15 UTC] by Martin Zrcek | 555 downloads
old, bugged alpha
PS_Root_Simple.v4p
26.09.13 [13:15 UTC] by Martin Zrcek | 270 downloads
old, bugged root

Martin Zrcek 26/09/2013 - 09:30

This has some future, but many bugs I'm sure. Let's make it great. More of us.

robe 26/09/2013 - 11:28

Hey Thanks!
But here is not working:

00:02:25 ERR : SlimDX.Direct3D11.Direct3D11Exception in SlimDX: E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)
 
Stacktrace:
   at SlimDX.Result.Throw[T](Object dataKey, Object dataValue)
   at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue)
   at SlimDX.Direct3D11.Texture2D.Build(Device device, Texture2DDescription description, D3D11_SUBRESOURCE_DATA* data)
   at SlimDX.Direct3D11.Texture2D..ctor(Device device, Texture2DDescription description)
   at FeralTic.DX11.Resources.DX11DynamicTexture2D..ctor(DX11RenderContext context, Int32 width, Int32 height, Format format)
   at VVVV.DX11.Nodes.VideoInNode.Update(IPluginIO pin, DX11RenderContext context)
   at VVVV.DX11.Lib.RenderGraph.DX11DeviceRenderer.ProcessNode(DX11Node node)

win7 x64
nvidia quadro 2000

Is slimdx still used in dx11? Have I to install it?

alg 26/09/2013 - 11:31

Looks like i'm trying to do the same, but a little bit more highlevel https://github.com/smakhtin/ParticlesGPU-Modular/tree/dx11. Currently stuck on some performance issues with a lot of compute shaders.

Noir 26/09/2013 - 11:33

Same problem here on beta31

win7 x64
nvidia gtx 550ti

Martin Zrcek 26/09/2013 - 11:53

>alg: Ok, try to. Probably more people do. The point of this contribution is to make this working and usable, not to keep trying to :) When you're done, I will hold my thumbs for you.

>robe: maybe something with x64 Vvvvs or DX11 nodes? Don't really know.
I use win7 x64, GeForce GTX 675MX, 32-bit Vvvvs and 32-bit dx11 nodes

microdee 26/09/2013 - 12:49

well it looks like it works on ati cards but doesn't work on nvidia cards. my college has a similar system except he has an ati card and my pc has an nvidia. it worked for him but not for me

robe 26/09/2013 - 13:24

Hi Martin, I'm using VVVV and dx11 32 bit.. (win7x64, nvidia quadro2000 as I said)
Can someone explain me what

00:02:25 ERR : SlimDX.Direct3D11.Direct3D11Exception in SlimDX: E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)

means?

Is this contrib using SlimDX? and what parameter was passed?
Is this related to variable type? I don't know because I just learned int-long-float-double... and I know that they can have some limit in bit you can put inside them

Thanks

Martin Zrcek 26/09/2013 - 14:39

So far, I just put there a "simple root" in older revisions to see if the problem is maybe in one part of the program.
Could you please try to open single nodes in Emit, Anim, Draw to see if at least some of them work?

And thanks for trying this!

robe 26/09/2013 - 15:34

I'm sorry Martin, but it does'n work for me..
I tryed to mess all the pin of every node in the patch

With "PS_Root_Simple.v4p" no error in tty.
I will give it another try later

circuitb 26/09/2013 - 15:46

@Martin,
same as robe here !

u7angel 26/09/2013 - 15:48

not working here either. 32bit beta / GTX680

circuitb 26/09/2013 - 17:54

forgot to mention
b31_x86 / gtx670

catweasel 03/10/2013 - 16:34

The PSEmitVelocityTexturedQuad seems to cause the errors (nvidia GTX470), but even deleting this, I still don't see any particles :(

Stacktrace:
   at SlimDX.Result.Throw[T](Object dataKey, Object dataValue)
   at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue)
   at SlimDX.Direct3D11.Texture2D.Build(Device device, Texture2DDescription description, D3D11_SUBRESOURCE_DATA* data)
   at SlimDX.Direct3D11.Texture2D..ctor(Device device, Texture2DDescription description)
   at FeralTic.DX11.Resources.DX11RenderTarget2D..ctor(DX11RenderContext context, Int32 w, Int32 h, SampleDescription sd, Format format, Boolean genMipMaps, Int32 mmLevels, Boolean allowUAV, Boolean allowShare)
   at FeralTic.DX11.DX11RenderTargetPool.Lock(Int32 w, Int32 h, Format format, SampleDescription sd, Boolean genMM, Int32 mmLevels, Boolean oneframe)
   at VVVV.DX11.DX11TempRTRendererNode.OnUpdate(DX11RenderContext context)
   at VVVV.DX11.AbstractDX11Renderer2DNode.Update(IPluginIO pin, DX11RenderContext context)
   at VVVV.DX11.AbstractDX11Renderer2DNode.Render(DX11RenderContext context)
   at VVVV.DX11.Lib.RenderGraph.DX11DeviceRenderer.ProcessNode(DX11Node node)
 
00:00:06 ERR : SlimDX.Direct3D11.Direct3D11Exception in SlimDX: E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)
 
Stacktrace:
   at SlimDX.Result.Throw[T](Object dataKey, Object dataValue)
   at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue)
   at SlimDX.Direct3D11.Texture2D.Build(Device device, Texture2DDescription description, D3D11_SUBRESOURCE_DATA* data)
   at SlimDX.Direct3D11.Texture2D..ctor(Device device, Texture2DDescription description)
   at FeralTic.DX11.Resources.DX11RenderTarget2D..ctor(DX11RenderContext context, Int32 w, Int32 h, SampleDescription sd, Format format, Boolean genMipMaps, Int32 mmLevels, Boolean allowUAV, Boolean allowShare)
   at FeralTic.DX11.DX11RenderTargetPool.Lock(Int32 w, Int32 h, Format format, SampleDescription sd, Boolean genMM, Int32 mmLevels, Boolean oneframe)
   at VVVV.DX11.DX11TempRTRendererNode.OnUpdate(DX11RenderContext context)
   at VVVV.DX11.AbstractDX11Renderer2DNode.Update(IPluginIO pin, DX11RenderContext context)
   at VVVV.DX11.Lib.RenderGraph.DX11DeviceRenderer.ProcessNode(DX11Node node)
 
00:00:06 ERR : System.NullReferenceException in VVVV.DX11.Nodes: Object reference not set to an instance of an object.
 
Stacktrace:
   at VVVV.DX11.Nodes.DX11QuadLayerNode.RenderInstancedTextured(DX11RenderContext context)
   at VVVV.DX11.Nodes.DX11QuadLayerNode.Render(IPluginIO pin, DX11RenderContext context, DX11RenderSettings settings)
   at VVVV.DX11.Nodes.DX11RendererNode.Render(DX11RenderContext context)
   at VVVV.DX11.Lib.RenderGraph.DX11DeviceRenderer.ProcessNode(DX11Node node)
 
00:00:06  *  : [graph event] unexpected error: Object reference not set to an instance of an object.
00:00:06  -  : To help us track this error down, enable the ExceptionDialog via the menu or starting vvvv with /showexceptions.

Is the error after deleting it.
Setting the stride to 48 (and restarting the pacth) I get some quads drawn to screen. I've looked through the shaders but see anything obvious thats not working.

I was also starting on a paticle system in the same way, but had got stuck porting my boids over, got clustering ok, but moving away was broken! I think its a really useful idea though, a modular particle system would be amazing, and if you need more performance you can combine the maths into fewer shaders so you get less draw calls...
Interesting start, we need to get this working and then we can start to build a library of behaviours!

catweasel 03/10/2013 - 16:49

https://mega.co.nz/#!bdYCxTaI!MgfYxCTVCex33JVR2q6CrxA0gOZB6WyIEuqmn7Iz-tE

OK, seems to work with a stride of 48, now why is that? There are 17 properties in the particle buffer, which would give a stride of 68, but the patch is set by default to 56, and only works for me with 48.
Is this Nvidia maxing out the stride?
Does anyone have this working as Martin posted it? Ati or Nvidia?
Does my patch work for anyone?

BTW if you use the quad, the scale seems to be at 1, try 0.001 if your screen goes white!

robe 03/10/2013 - 21:31

Hi Catweasel.
your patch works here.. well, not really, but I can see some particle.
I can't really manage their behaviour.. the fan of the videocard is going crazy and when I reset the stopwatch the render is filled with with square and the system become unstable for 5 secs.

Apart from this I really trust this contribution, It seems a good concept, but I really don't know how to help to make it work stable.

Thanks

VVVValentin 19/10/2013 - 11:08

Just tried to run the demo patch.
Getting a blue renderer, maxed out gpu, 10 fps and nothing showing in the renderer o.O
Windows 7, AMD Radeon HD 6780, 32bit vvvv.

Martin Zrcek 21/10/2013 - 15:35

Thanks guys for trying this so far, I'm currently looking for that error.

catweasel 27/11/2013 - 16:06

All works for me on ATI :)
Good work

What was the issue before, it would be nice to know so we can avoid similar in future!

Martin Zrcek 27/11/2013 - 16:22

Good idea. There was a rotation attribute at Particle structure in PSDraw and Stride did not count with it. Two slashes on a right place solved the problem. Try un-commenting rotation and you will see.

m4d 27/11/2013 - 16:36

nice stuff! (also now fully working on nv gpus)

u7angel 27/11/2013 - 17:25

loving it!

colorsound 27/11/2013 - 18:10

very cool , thanks ;D
works here with nvidia 580M

Noir 27/11/2013 - 19:58

thanks 4 sharing

rogalag 29/11/2013 - 10:50

Nice!

io 17/09/2014 - 00:38

GTX560M not working here, black renderer.

aelfwine 17/09/2014 - 12:11

GTX 760 ---- same problem for me

mediadog 19/09/2014 - 04:41

Yup, seems the newer betas (I'm using 31.2) broke the links to "Quad". Look in the patches in the "Render" folder, and reconnect the texture input and layer outputs. That fixes most for me; the first demo patch has a problem with DynamicBuffer, in that it is getting NILs, which cause it stop working, a known bug.

anonymous user login

Shoutbox

~5h ago

fibo: Hello Frankfurt!

~6h ago

tobyk: For anyone at NODE not on the vvvv matrix chat beer at naxoshalle from 6pm!

~8h ago

tobyk: Beer tonight in Frankfurt?

~21h ago

Elias: new #vvvv and #vl release: vvvv50beta35.8

~1d ago

dominikKoller: Is there a reason the old Arduino nodes are still not set to Legacy?

~1d ago

dawoof: has anyone used a LEDMX4 pro?

~3d ago

yar: I heard you like raymarching. https://vimeo.com/222084800

~3d ago

tonfilm: very nice @mburk!!! so here is the next task if you have nothing else to do: https://github.com/tebjan/CraftLie/issues/7

~3d ago

sebescudie: such wow! thanks!

~3d ago

mburk: SuperPhong -> SuperPhysical superphysical