• Home
  • Documentation
  • Forum
  • Blog
  • Users
    • Map
    • Userlist
    • Businesses
    • Userpages
    • Connections
  • Contributions
    • All
    • Store
  • Downloads
    • vvvv beta
    • vvvv beta previews
  • Store
Show / Hide Table of Contents

Particles Unplugged

Author: Martin Zrcek
Date: 26 Sep, 2013
Category: module
Credits:

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

Download

64bit

2-Particles_Unplugged.zip
27 Nov, 2013 - 11:30
Stable 01
1-Particles_Unplugged.zip
26 Sep, 2013 - 07:15
old, bugged alpha
0-PS_Root_Simple.v4p
26 Sep, 2013 - 11:15
old, bugged root

Description

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

Comments

Comments are no longer accepted.
Please create a new topic in the vvvv beta forum to discuss this contribution.
Martin Zrcek
26 Sep, 2013 - 07:30

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

robe
26 Sep, 2013 - 09: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 Sep, 2013 - 09: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 Sep, 2013 - 09:33

Same problem here on beta31

win7 x64 nvidia gtx 550ti

Martin Zrcek
26 Sep, 2013 - 09: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 Sep, 2013 - 10: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 Sep, 2013 - 11: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 Sep, 2013 - 12: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 Sep, 2013 - 13: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 Sep, 2013 - 13:46

@Martin, same as robe here !

u7angel
26 Sep, 2013 - 13:48

not working here either. 32bit beta / GTX680

circuitb
26 Sep, 2013 - 15:54

forgot to mention b31_x86 / gtx670

catweasel
03 Oct, 2013 - 14: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%20event> 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 Oct, 2013 - 14: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 Oct, 2013 - 19: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 Oct, 2013 - 09: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 Oct, 2013 - 13:35

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

catweasel
27 Nov, 2013 - 14: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 Nov, 2013 - 14: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 Nov, 2013 - 14:36

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

u7angel
27 Nov, 2013 - 15:25

loving it!

colorsound
27 Nov, 2013 - 16:10

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

Noir
27 Nov, 2013 - 17:58

thanks 4 sharing

rogalag
29 Nov, 2013 - 08:50

Nice!

io
16 Sep, 2014 - 22:38

GTX560M not working here, black renderer.

aelfwine
17 Sep, 2014 - 10:11

GTX 760 ---- same problem for me

mediadog
19 Sep, 2014 - 02: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.

  • Improve this Doc

© 2020 by vvvv group. Imprint | Privacy Policy.
Thanks to DocFX for building this website. Analytics by Plausible.

Back to top