Search Unity

[Open Source] TC Particles: millions of GPU particles

Discussion in 'Assets and Asset Store' started by pvloon, Feb 28, 2013.

  1. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    Yeah you can't even make structure that aren't multiples of 4 bytes. That makes we wonder what I was trying to do before then, must have at least been a multiple of 4... In any case, I think I should also stick to only using half2 and half4's so that each element you load is still a multiple of the word size, loading a variable at a 2 byte offset from the struct might be impossible too without fancy driver tricks.

    In any case, those numbers sound really promising... experiments soon^tm
     
    ctp likes this.
  2. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    Well as it turns out, those numbers were off because I wasn't actually doing it right. From what I can tell, you can't use a half, because its eventually turned into a float. I want to say this is done by the compiler, but I wouldn't quote me on that, I read something along those lines when going through some forums trying to figure out why things weren't working. That's why the vert functions in the CG file weren't working, I was trying to read at a point that was calculated on the length of halfs, not floats.

    I tried reducing the struct size by packing various combinations of two floats into a uint, but either I wasn't doing it right or the loss in precision was just too much for my project.

    I think at this point I'll leave it up to someone with more experience. I did gain some performance by taking out variables from the particle struct that I didn't need and reducing the size to 28 bytes, but it's nowhere near the two and a half times that I mentioned earlier.

    Realistically, I think other things running in the scene are a bigger drain. I'm still managing ~400,000 point particles and ~50,000 stretched billboard particles, which is pretty good considering I'm also running a fluidsim in the background and I have a beat up laptop with a 650m in it.
     
  3. knchaffin

    knchaffin

    Joined:
    May 18, 2013
    Posts:
    58
    Re: @p v loon" Great to hear you're still at it Ken! Wouldn't worry too much about your job given the insane stuff you've pulled off with CUDA <-> Unity and other DirectCompute interop ;)

    Actually, I was concerned that you not change some members of the particle structure to half's that would prevent me from using the elements as single precision floats in scientific simulations. But, you are probably not thinking of changing those members.

    Ken Chaffin
     
    ctp likes this.
  4. knchaffin

    knchaffin

    Joined:
    May 18, 2013
    Posts:
    58
    Arthur, actually I was concerned that if you change some particle structure members from float to half's, I might not be able to use these values in scientific simulations. But, you are probably not considering changing these members.

    Ken Chaffin
     
    ctp likes this.
  5. StephenWebb

    StephenWebb

    Joined:
    Feb 3, 2013
    Posts:
    3
    How difficult is it to get the world position of a particle, and to check for events like on mouse over?
     
  6. guils

    guils

    Joined:
    Dec 17, 2013
    Posts:
    1
    Hi,
    I'm looking for some documentation on TC Particles. The package doesn't seems to contain any manual and the tcparticles.tinycubestudio.com server is down. Is it possible to get the documentation somewhere else?

    Thanks
     
  7. Lex-DRL

    Lex-DRL

    Joined:
    Oct 10, 2011
    Posts:
    132
    Does anyone know: is there any other GPU particles plugin/asset for Uinty?
    I had a hope that some day TC particles will become cross-platform (with GPU-particles implementations for both DX and OpenGL under SM4.0+). But seems like even DX part becoming more and more abandoned.
    Maybe there's an alternative I don't know about? Or TC Particles is still the only hope for us?
     
    ctp likes this.
  8. ctp

    ctp

    Joined:
    Apr 21, 2013
    Posts:
    9
    What Lex-DRL said!
    I too would like to know of any other GPU particle system plugin/asset for Unity.
    I'm sort of puzzled that Unity has not made one yet.
     
  9. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    @StephenWebb: Very hard :/ Data lives on the GPU, so the CPU can't really tell what's going on. Depends on what you want to do though, if you just want to color particles near the mouse for example you could have the GPU figure that out.

    @guils: Woops, site should be back up soon, damn hosting packages

    @Lex-DRL: TC Particles will someday become cross platform, though it's not really up to me :( Unity is doing work however to trans compile compute shaders. Right now that means that TC Particles _does_ run on Open GL 4.4+ devices. Thats just linux atm however, mac doesn't support modern OpenGL uuurgh. In the future however, they will do compute shaders for Metal that WILL run on mac. They announced this a while back though, hard to tell when it'll be there!

    @ctp: I'd love for unity to make one ^^ Supporting the full shuriken feature set would be very hard though. I think they'd rather just make shuriken perform better first (we have threads laying around anyway) but yeah, will never be quite the same. We'll see where it goes.
     
    ctp and Lex-DRL like this.
  10. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    I think I asked this a long time ago but got no response, so will ask again.

    Is using meshes as emitter source shapes still working? When I try it I get very messed up results that don't seem to resemble the shape of my mesh, but perhaps I'm using an inappropriate mesh. If it does work, please give an example of a mesh that works or what sort of mesh aspects to avoid in order to steer clear of problems.
     
  11. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    Has anyone else been having trouble with getting Boids working? I thought it was mentioned before, but I couldn't find it in any of the earlier posts.

    I've been working on this all weekend and I have no idea what's going on. From the profiler markers that I put in, it seems like the kernels are running (Init, Sum, Update), but anything written to the particle buffer isn't getting saved. I went in and manually set the positions and velocities to zero, but the system just keeps on going as it does normally. Anyone have an idea of whats going on?
     
  12. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    Naturally, I figured it out after posting. It looks like the particle buffer was not being assigned to the kernels by the particle manager. I set the particle buffer before the Init and Update kernels and everything works, although I swear this is the first thing I tried when I started this morning.

    I have to dig into it a little deeper, but I think the addition of a TCForce is screwing with things, which might be why I didn't notice it was actually working before.
     
    ctp likes this.
  13. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    @elbows: Seems to be working! At least on some of the meshes I tried. On like a unity default capsule, does that work for you? If that does might be something with your specific mesh, though in theory it shouldn't really matter what the mesh looks like :/

    @smnerat: mmhrm seems you're right! I tried setting up the buffers and while it's a bit better seems like boids is kinda busted generally :( will need some more work

    also website with docs should be up again
     
    ctp likes this.
  14. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    Thanks, I shall do some investigation this weekend and let you know what the culprit was.
     
  15. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    @p-v-loon It kind of seems like it, but I've re/over written so many of the scripts and shaders for all the random stuff that I've been doing (things TC was not intended for) that I can never really say for sure if I created the problem myself or not. I actually just sent you a message about a problem that probably shouldn't be in this forum if you got a minute to check it out.
     
  16. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    So my hard drive crashed and I took the opportunity to restart my project by importing only the packages I need since a lot of the ones I had were for testing and trial purposes that were just making clutter.

    I imported TC and now when I run my scene, the point particles look strange or aren't rendering at all. I know this was a problem in the last version of TC which I worked around by using a script that would just change the material shader once I was in play mode. This worked whether it was a different shader or even the same one, but that's not the case in the new version.

    Does anyone know whats going on or have a work around?

    ***EDIT*** It looks like the uv's weren't getting set, but I can't figure out why. I just sample the main texture using float2(0.5f, 0.5f) instead of i.uv and everything is good.
     
    Last edited: Aug 20, 2016
  17. Tonmy_

    Tonmy_

    Joined:
    Jan 20, 2014
    Posts:
    5
    Hi, I wanted to know how well TC particles perform in VR, both performance and aesthetically. Is there a VR demo or evaluation version to see it in action? (developing for htc vive in here.
     
  18. SunnySunshine

    SunnySunshine

    Joined:
    May 18, 2009
    Posts:
    673
    Does this asset support collisions against scene depth and/or distance fields?
     
  19. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    Hey all, sorry didn't see the new replies here!

    @smnerat: That sounds really strange, no idea why UV related stuff would have changed. Any specific settings that breaks with? is it still broken? Sampling at 0.5,0.5 just gives a constant color right?

    @Tonmy: TC Particles works pretty well in VR, I've used a (modified) version in a project for a client that was pushing >200K through a complex vector field, rendered easily on a vive. The simulation parts are only done once and not per eye so that helps.

    @SunnySunshine: Had some plans originally to support that but it's pretty involved, so don't really have the time now to implement that. It is doable in theory. However - I think even UE is kinda moving away from depth collisions as they just don't buy you that much. Distance fields collisions however are amazing. Supporting that though would involve designing a complete workflow to handle that within unity... Not really within scope :/

    Lastly, finally a small little update again:

    V1.5.1
    -Added new Emit(Vector3[] positions) overload (and List<Vector3>)
    -Slightly optimized emission code

    -Fixed color over speed not working
    -Code cleanup

    Should be up in the next few days

    Cheers,
    Arthur
     
    elbows likes this.
  20. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    Hi,

    Any ideas about this error when used with Unity 5.5?

    Shader error in 'TCParticles/Blend': buffer requires a 't' register at Assets/Plugins/TCParticles/Shaders/TCIncInit.cginc(4) (on d3d11)

    (error repeated for other TC shaders)

    Also the small update you mentioned doesnt seem to have appeared in the store yet.
     
  21. BjornAlbihn

    BjornAlbihn

    Joined:
    Aug 23, 2012
    Posts:
    1
    Hi! An idea / question.

    Would it be possible to pass on vertex colors when using a mesh shape, and have them multiplied to the starting color value (so that white would emit the interpolated vertex color)? That way you could do colored shapes consisting of particles.

    We looked at setting the colors on the Face structs and passing it on, but stopped as we could not figure out the rest of the steps, especially getting the ComputeBuffer to handle the data. Is it at all possible or are we trying to do something that will be costly/impossible?
     
  22. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Searching for the right particle system I want it GPU based since my hw limitations.
    My final goal it's not game but videos, and want to achieve something like that

    and also this one

    Interested to know if TCP will be able to interact with Unity objects, if will be possible to emit particles from mesh and what's about his learning path. I did find really few (if some) tutorials.
     
  23. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    @pvloon No idea, my guess is that it was my own doing. It's a safe bet that nothing was wrong with TC straight from the asset store, since at the time, I was attempting to implement my own custom lighting. Custom lighting was to tall of an order and I ended up rewriting TC to use meshes instead, so I haven't really looked at any of the old shaders lately.
     
  24. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    @elbows: Seems like the unity 5.5 shader compiler is slightly more picky about some semantics, I've corrected the shader and did some other updates so that it should be 5.5 compatible now. Also seems like I was an idiot and didn't do the final submit for the update, woops. Done that now alongside the 5.5 update

    @BjornAlbihn : The problem is that currently colours are not stored per particle but rather figured out on life / velocity. This makes every particle 12 bytes (about 25-30%) smaller in memory. I have however had many requests for the ability to emit based on an image / textures mesh / vertex colored mesh... I have been close to pulling the trigger and adding the color field for each particle many times, but it would mean a significant performance decrease for current users which is a hard sell. Ill think on it a bit, if I can shave off some other parts it'd make it easier.

    @davide445: TC Particles can emit from meshes, and there's interaction in the forms of forces / primitive colliders. Recreating the exact effect in the video might be slightly tricky though as Cinema 4D does give you a little more control. Something that approaches that look should be doable though!

    @smnerat: Alright, strange. Custom lighting sounds like a cool undertaking though! Are you still having problems?


    Also, looking at the current Unity Roadmap it seems like unity 5.6 will fully support TC Particles on Mac, even in Editor! I'll keep an eye out for the beta :)
     
    ctp and elbows like this.
  25. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    @pvloon It turned out to be pretty interesting, and it really wasn't all that bad to implement. The hardest part was sorting, tracking, and dividing the TCParticles into groups since a mesh can only have 65k verts. Well one of the hardest, point particles were the easiest, but billboards and especially stretched billboards gave me some problems.

    So now the particles react to scene lighting which is pretty awesome, and the surface shaders still need some work, but they're looking pretty good right now. Casting shadows works okay, but there's a performance hit, and unfortunately self shadowing still can't be used with tons of particles since the shadow calculations just kill the frame rate (~12ms just for shadows at 250k particles).

    Since I'm already voxelizing the particles for other stuff, I think I might try and implement voxel shadowing sort of like SonicEther did with lighting in SEGI. That's still a ways down the road, right now I'm still working on particle types, ribbons and line strips are up next.
     
  26. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Getting this error trying to import TCP asset into Unity 5.4.2f2 project:

    PlayerSettings Validation: Requested build target group (15) doesn't exist; #define symbols for scripting won't be added.
    UnityEditor.PlayerSettings:SetScriptingDefineSymbolsForGroup(BuildTargetGroup, String)
    UnityStandardAssets.CrossPlatformInput.Inspector.CrossPlatformInitialize:SetEnabled(String, Boolean, Boolean) (at Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs:132)
    UnityStandardAssets.CrossPlatformInput.Inspector.CrossPlatformInitialize:.cctor() (at Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs:22)
    UnityEditor.EditorAssemblies:processInitializeOnLoadAttributes()


    "The type or namespace name `Profiling' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?"
    Any hint?
     
    Last edited: Dec 14, 2016
  27. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    Thanks for working on a 5.5 fix.

    Regarding 5.6, I managed to get one compute-shader project working on a metal-supporting mac so far. I have to use the -force-metal option when starting Unity editor to get metal to work in the editor.

    I gave TC particles a quick go and it didnt work, but this wasnt too surprising for reasons including me not even using the version that should be fixed to work with 5.5 yet. I also note that when it comes to non-compute shaders, metal still isnt going to work with, for example, pragma target 5.0. According to the docs I'd still need to use target 3.5 maximum for metal, but I was making some changes to other shaders (not TC particles) and target 4.5 also seemed to be working.

    I'm mad keen on metal compute, including getting TC particles working with that fluid simulation I posted about a very long time ago. So if you need any testing doing on a metal-compatible version, please let me know!
     
    Last edited: Dec 15, 2016
    ctp likes this.
  28. ixikos

    ixikos

    Joined:
    Jun 21, 2013
    Posts:
    19
    Is the 5.5 fix live yet? I am having this issue -
    Shader error in 'TCParticles/Blend': buffer requires a 't' register at Assets/Plugins/TCParticles/Shaders/TCIncInit.cginc(4) (on d3d11)

    Compiling Vertex program with TC_UV_NORMAL TC_BILLBOARD
    Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA
     
  29. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    About the error

    The type or namespace name `Profiling' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?

    I resolved simply commenting everywhere

    Code (CSharp):
    1. //using UnityEngine.Profiling;
    I didn't know what I'm doing, but being my goal video and not game creation performance it's not my first concern.
     
    Last edited: Dec 19, 2016
  30. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Ok trying to obtain some initial result

    - Testing the Turbulence module I didn't obtain any result even setting very high power at >200
    - Also there is any way to obtain some attraction that make the particles stick to an object surface?
    TCP noiseJPG.JPG TCP noise Inspector.JPG
     
  31. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    @davide445 It's been a while since using the turbulence force, but I think you need to change the power setting under the red "TC Force" label to apply more power. I believe the turbulence power that you have set to 748.2 is used when actually generating the noise, so that wouldn't take effect unless you hit Update Noise.

    @pvloon You mentioned the buffer size and memory usage if you increased the struct size, which I brought up quite a while ago. Have you done any tests on this? I attempted to gain some performance by changing the struct size, but decreasing or even increasing the size never really got me anywhere.

    It seems like its the Graphics.DrawProcedural() call that really kills the frame rate, but I can't verify that anymore. I know I've seen this in another forum post as well, but I can't seem to find it right now.

    I'm not sure how a buffer is stored and accessed by a GPU, but at 1,000,000 particles, the entire buffer would increase from 44MB to 56MB. I thought the buffer was stored in the VRAM, so the increase in size shouldn't really hurt anything, but I'm just basing this of off a few different threads that I've come across, so maybe it would?
     
  32. Killersan

    Killersan

    Joined:
    May 27, 2014
    Posts:
    76
    Guys, maybe You could help me. I would like to know TC Particles but mostly for such effect like was presented in Elemental sword demo along with Alloy (I got it already). Do You know if it's included in some kind of demo and if yes then if it will work in Unity 5.4. ?
     
  33. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    @smnerat: Damn that sounds really awesome. Would love to see if you have some screenies :) Is it for a game you're working on?

    @davide445: Strange, I guess you might be on a slightly wrong version of unity? latest 5.5 should not have any errors when importing but seems you might be trying to import 5.5 version into 5.4.

    Any luck on the turbulence yet? They seem to work here in tests. The turbulence power affects the shape of the noise but the power under the red TC force tab is the intensity of the force.

    There is a stickiness parameter for TC Colliders that might get you the effect you want.

    @smnerat: Mmh you might be right, this is just what I remember from performance tests way back in the day but intuitively it does make sense that the draw procedural way outways updating some ~10MB of extra data or whatever.


    @Killersan: Unfortunately that was a bit of a one-off demo. The particles were made half with shuriken and half TC Particles- the shuriken half uses sprites we don't have redist rights too. The TC Particles half is a fairly trivial TC Particle system just emitting over distance with a line emitter & some glowy material on it. So, I can't pass you the demo but if you do decide to get it I can help you out setting up the effect
     
  34. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    @pvloon
    No error with 5.5 thanks
    Some strange behavior:
    - No modification made in play mode is preserved exiting in edit mode
    - There is some strange perspective, it's almost impossible to align objects since appear every time I change perspective also the objects change position. In that way it's also difficult to test local forces since it's really difficult to make the force affected volume catch the particles on screen. I did see the turbulence working but only after minutes of messing around shifting the cube in different positions so to be in particle stream path.
    - About turbolence it does make something but not what I did expect. Seems more a grid of pipes pipelining the particles in different directions instead of dispersing them randomly
    TCP noise 2.JPG
     
    Last edited: Jan 5, 2017
  35. Killersan

    Killersan

    Joined:
    May 27, 2014
    Posts:
    76
    If I get it will You be able to send me whole demo without sprites and just point me a direction where and what should it looks like ? I'm not an fx creator so I would like to get as much ready elements as I can to prevent from failure...
     
  36. smnerat

    smnerat

    Joined:
    Sep 23, 2012
    Posts:
    35
    @pvloon I made a couple of small mobile games, but they don't hold my interest too well and anything I really want to make is way too big for a single person. Since I don't really want to work on small games, I've become pretty interested in the non-game uses for Unity, and this current project is a fluid simulation based music visualizer.

    Between the fact that I'm learning as I go and that at the end of the day I'm definitely not an artist, progress is pretty slow. But, I think I'm nearing the end and am hoping to at least be able to put up a few screen shots or a video sometime soon.



    Also, I did some tests using an old project with the original version of TC and compared it to the version in my current project. I can currently run the update function for 1 million particles at about ~10ms in both versions. Drawing 1 million particles using meshes takes about ~10ms as well. I don't remember the number off hand, but using DrawProcedural to draw the particles was something crazy like 40ms. I know this is highly dependent on what kind of hardware is used, but at least for me, DrawProcedural is the killer rather than the buffer size.
     
  37. 3d_Artist1987

    3d_Artist1987

    Joined:
    Jul 9, 2012
    Posts:
    710
    tc particle possible to follow path?
     
  38. tarrabass

    tarrabass

    Joined:
    Jun 4, 2015
    Posts:
    13
    I would like to update the turbulence parameter in real time
    for the moment i need to puch the button update texture.
    any reason for you made the modification of noise parameter not realtime ?
    And
    i init the posittion of particles thank ot vector<pos> comming from a point cloud.
    any chance to initate the color of each particles ?

    thanks
     
    Last edited: Feb 24, 2017
  39. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    So tarrabass contacted me and we worked some stuff out - which grew into a pretty large TC Particles update :) I'm putting the final touches on it now and will be submitting this update next week somewhere!

    TC Particles 1.6


    Particles now store their color!
    • You can now emit particles from a textured mesh with uv1/2/3/4 channel
    • Colors can also be set with new 'ParticleProto' emission (see API)
    • Color over lifetime is multiplicative with this base color
    • Stored in compact format, two other fields were optimised away, so particles are smaller than before! (few % performance increase)

    TC Force turbulence generation rewritten:
    • Parameters can now be adjusted in real time! Automatically updates if needed, takes <1ms in nearly all cases.
    • No more hassle to manage textures in the project etc.
    • Now uses 'curl' noise internally - this noise has a nice property (divergence free) that prevents clumps of particles & looks very fluid like
    • Should match old settings mostly. If it doesn't - switch force to TurbulenceTexture mode and old texture will still be plugged in.
    • Don't need power of 2 resolution anymore, can support higher resolutions than before
    • New 'persistence' parameter on most noise types for mroe control
    • Turbulence preview is much improved - now runs all on the GPU and was made very fast, colors show proper gradient instead of some made up derivative, now displaces arrows in direction of force for some additional feedback of the noise 'feel'
    • Renamed Pink noise to Perlin noise (since that's always what it was)
    • Voronoi was removed as it never worked super well, didn't port well to GPU
    • The Turbulence Frequency & power was removed (an additional noise on top of the regular one). The new noises do well without + the new persistence parameter helps.

    Rewrote parts of mesh emission
    • Made NormalizeArea explicit instead of guessing it - faster if off, but particles may appear non uniform on the surface. On by default now as NormalizeArea was made MUCH faster too (binary instead of linear search).
    • Fixed wireframe not updating correctly when changing meshes
    • Fixed a few memory leaks of the mesh buffers

    New ParticleProto API: Emit from a list of 'particle prototypes' that can set initial position, size, velocity, color

    Improved extension system:
    • Now sets more parameters on extension kernels
    • Recognizes numthreads and scales appropriately
    • New TCFramework.cginc means you don't have to copy code anymore to extension compute shaders & will be in sync
    • Callback when emission is set

    Colour over lifetime (& velocity over lifetime) is now basked to 128 sized gradients (was 64), little nicer!

    Performance:
    • Removed GC generated every frame by the renderer
    • Removed GC when frustum culling was enabled
    • Performance improvments in emission, forces & colliders (few %)
    • Fixed emission launching 2x the nr of threads actually needed
    • More buffer reuse & other micro optimizations

    Large code cleanup, small bug fixes:
    • Removed BurstsForSystem API on shape emitters - was confusing and didn't really work
    • Removed some unused files
    • Fixed particles sometimes spawning outside of sphere/hemisphere shape
    • Fixed random emission direction besides having a ranom direction also having a random speed and not using the start speed

    Samples:
    • New point cloud importer & Sample data! Shows rendering >3.5 million points
    • Added new ColorCube sampel showing ParticleProto sample
    • Forces sample was revamped, few bug fixes, nicer behaviour.
    • Modernised old samples, cleaned, restructed folders to group each sample in own folder.

    The update was submitted to the asset store on 9 march so coming soon!


    If this sounds exciting or if you need some more stuff in there give a shout here :)
     
    Last edited: Mar 9, 2017
    davide445, elbows and John-G like this.
  40. John-G

    John-G

    Joined:
    Mar 21, 2013
    Posts:
    1,111
    Excellent, thanks for update. Any chance of some tutorials this time with the updated system?
     
    Last edited: Mar 4, 2017
    davide445 likes this.
  41. dienat

    dienat

    Joined:
    May 27, 2016
    Posts:
    302
    What is the benefit of this system over shuriken in the 5.5 version?
     
  42. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    @dienat I've just tested TCP so can't give a complete answer, but the main difference is TC Particles is GPU based, vs Shuriken is CPU based. So you can easily push particles number x10 or more, achieving effects in a different way.
    TCP is smooth with 300.000 particles even on my old system. I didn't do a comparison in term of features, so maybe something is lacking.
     
  43. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    TC Particles 1.6 is submtited to the asset store! I've edited the post above to reflect the final release notes

    @John-G: I do plan on adding some more samples (and started reworking older samples) to show some aspects more clearly. Not sure about videos as honestly it's just not economical to do that for TC Particles (1.6 happened because of two TC Particles related contracts, both willing to let me share back work into TC). I might do something super low key and just go over some of the properties. Any topics you're missing in particular?

    @dient, davide445: That's about right :) The GPU is a great fit for particle simulation and gives you a LOT more power - meaning 300.000 particles can easily be simulated (on my 980 ti I can run millions of particles with complex force behaviours in real time). TC Particles also has more controls to apply forces to to particles. Take a look at this game to see what kind of effects you can do with that: http://www.desolus.com/ . All that said - Shuriken is better for more traditional particle effects where you don't need high particle counts. Especially with recent improvments Shuriken is more flexible.
     
    Last edited: Mar 11, 2017
    davide445 and John-G like this.
  44. John-G

    John-G

    Joined:
    Mar 21, 2013
    Posts:
    1,111
    No worries, will use the new samples to try and learn the methods.
     
  45. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    I see the new version 1.6 is live on the store now! I am too tired to try it right now though so have nothing to report.
     
  46. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    Yup 1.6 is up! Let me know about any issues or new features you'd like to see
     
  47. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Now that the new 1.6 is available I'm interested to know the differences in term of features with Particle Playground. GPU particles allows bigger numbers so to achieve effects in a different way, but I can't understand if there also features to differentiate with PP.
     
    ZJP likes this.
  48. pvloon

    pvloon

    Joined:
    Oct 5, 2011
    Posts:
    586
    They still have different aims: PP wants to be as feature wide as possible, TC Particles wants to be as lean and fast as possible.

    TC Particles can still simulate way more particles (orders of magnitude, my experience with PP performance has not been great). It can do effects like having lots of ambient particles float around, star fields, explosions with many sparks, super fast turbulence effects, having 1000s of small emitters with shape emitters, point cloud rendering etc.

    Feature wise they do have overlap (mesh emission, turbulence & forces)

    And then PP has a lot that TC Particles doesn't have and probably will never have (script callbacks, particle recorder, gameobjects following particles etc.)

    And then lasty there are PP features I would like to get too (particle trails, bezier curve emission, skinned mesh emission).
     
    davide445 likes this.
  49. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,299
    My main feature request going forwards is for platform support beyond DX11. Unity has done great things getting Compute Shaders working on other platforms such as Linux, some flavours of Android OpenGL ES3.1 devices, and with Unity 5.6 support for macOS and iOS devices that support Metal.

    I have converted other compute-shader assets to work on metal with often very minimal effort and no support from the asset devs - often it was just a case of changing any shaders that targeted 5.0 to target 4.5 instead. It doesnt look quite that simple with TC Particles because I get some unhelpful console errors with not much clue which shader or code is causing them. I do not suggest you look into this yet but I will be looking at this in detail once 5.6 is out of beta and I wondered if you are interested in helping. I am not setup to test Compute Shaders on Linux or Android but I will be trying to get it working on macOS Sierra and iOS with relatively modern iphone & ipad pro devices.
     
  50. Homer-Johnston

    Homer-Johnston

    Joined:
    Nov 26, 2012
    Posts:
    46
    I noticed long ago you mentioned you were thinking about adding lighting support in, although you expected it would be very difficult. Do you think this would still be possible? Did you think it require some re-engineering to your core system code, or just shaders? I poked around with your shaders for a few hours before I realized that your particles only processed light passes when lights were hitting the particles' emitter... I was wondering if the only way to handle lights might be to set a few "important" ones via global shader variables and generally be unable to handle dynamic lights or shadowed areas etc... or did you think something better would have been possible?

    Thanks for your recent updates and I hope you feel the ambition to work on this again!
     
    Last edited: Mar 20, 2017