Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Creative [Beta] Ultimate GPU Particle System

Discussion in 'Tools In Progress' started by MaxProude, Mar 13, 2018.

?

Do you want to have a GPU Particle System in Unity?

Poll closed Apr 13, 2018.
  1. Yes

    100.0%
  2. No

    0 vote(s)
    0.0%
  1. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    I think it will work right now, but again I didn't test it. Also the exposed properties need some cleaning up and some more functions other than play, start, stop and emit. I prepared a lot already but I need to make it nicer and also write a documentation for it. I'll add, fix and polish over the years (I hope :) )
     
    MostHated and Mark_01 like this.
  2. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Thanks Mark_01 :)

    I didn't sign up to any sales, because they don't allow Assets that are already on sale. And having a double sale would be silly :)

    I will keep this asset up to date as long as there are people, who are interested in this. I also believe, that this Asset will be easier to manage, because it doesn't need so many Unity features. The Shaders use basic math and the rest should be easy to manage. I know that Unity likes to change editor functions a lot, which is a bit of a pain in the a***, but I guess I just have to power through this :)
     
    MostHated and Mark_01 like this.
  3. NikkiC5

    NikkiC5

    Joined:
    Jun 11, 2016
    Posts:
    11
    This looks excellent. Can anyone confirm that this works in VR?
     
    Mark_01 and MaxProude like this.
  4. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey Nikki 5,
    I'll try to get this tested still in beta, but for now I can't confirm it.
     
    o2co2 and NikkiC5 like this.
  5. NikkiC5

    NikkiC5

    Joined:
    Jun 11, 2016
    Posts:
    11
    Very much appreciated!
     
  6. o2co2

    o2co2

    Joined:
    Aug 9, 2017
    Posts:
    45
    When to update?
     
  7. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey o2co2,

    Im currently wrapping up fixes in the next update. It's almost done.
    In the next few days I'll submit the new version for review. So it should be live next week.

    Best regards,

    Max
     
    Mark_01 likes this.
  8. rf-tetsuya-onishi

    rf-tetsuya-onishi

    Joined:
    Mar 8, 2016
    Posts:
    3
    What kind of licensing form will be provided for [BETA] Ultimate GPU Particle System?
     
  9. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hello,

    The Unity EULA applies:
    https://unity3d.com/de/legal/as_terms

    Best regards,

    Max
     
  10. rf-tetsuya-onishi

    rf-tetsuya-onishi

    Joined:
    Mar 8, 2016
    Posts:
    3
    Thank you for your reply
    But what I wanted to confirm was copyleft
    For example, MIT license or GPL license
     
  11. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    It's not an open source license. You can make derivatives of it for your end product (e.g. a game) and publish it, but you cannot change it and publish it again. The Asset Store does not allow us to add any terms or conditions. So if you want to find out exactly, you would have to contact the Unity support.
     
    Mark_01 likes this.
  12. rf-tetsuya-onishi

    rf-tetsuya-onishi

    Joined:
    Mar 8, 2016
    Posts:
    3
    Thank you for your reply
    I completely understood
    I am looking forward to the release of the official version
     
    MaxProude likes this.
  13. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Ultimate GPU Particle System v0.2b has been submitted for review.
    New and improved features are:
    • Mesh Particles
    • Mesh Emitter
    • Mesh Target
    • Texture Emitter
    • Sprite sheet flip book with motion vectors
    • Surface shader support
    • Collision with planes
    • Burst mode
    Collision.gif Collision-2.gif Flipbook.gif MeshEmitterAndTarget.gif TextureEmitter.gif
     
  14. turboturboturbo

    turboturboturbo

    Joined:
    Dec 2, 2018
    Posts:
    25
    Last edited: Dec 11, 2018
  15. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey TURBOMAN-,

    yes, the demo is part of the package. I didn't have the time to create any tutorials yet, but it's very simple to use.
    Kvant is just a prototype. UGS has a fully fledged editor just like Unity's Shuriken editor.

    Editor.png
     
    Mark_01 likes this.
  16. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    I'm another one who would consider this for VR. Particle effects in VR can be expensive on FPS (at least realistic ones.) I need fast, efficient ones and I was hoping this could fit that need.
     
    NikkiC5, MaxProude and Mark_01 like this.
  17. horeaper

    horeaper

    Joined:
    Oct 30, 2013
    Posts:
    46
    Is there any way to "convert" the current Shuriken particles to this system? So I don't need to recreate all my particles?
     
  18. casey_unity415

    casey_unity415

    Joined:
    Dec 18, 2018
    Posts:
    12
    Looks amazing! how taxing is it on the GPU?
     
    MaxProude likes this.
  19. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hello horeaper,
    This feature is still in the making. It will be released together with a shuriken fallback feature after the holiday season.
     
    TokyoWarfareProject likes this.
  20. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    There are two parts to take into consideration when estimating the performance of a gpu particle system: the time to calculate the particle's data like positions and velocities and the actual drawing/ rendering of the particles.
    Also the amount of particles is important. If you are on PC you can no doubt use more than a couple of millions of particles that have the size of a pixel, but as soon as you want to make bigger particles that fill the screen, overdraw will bring your (any) gpu to its knees. At the same time, mobile GPUs can handle thousands of small particles very well. It really depends on what you want to create. Millions of particles on a mobile gpu is unrealistic, especially if you target older devices.
     
  21. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,521
    Suggestion: don't use red and green in the interface, they scream for attention , use the standard unity buttons for on and off instead .
     
  22. idavida

    idavida

    Joined:
    Nov 12, 2012
    Posts:
    33
    So I just purchased this asset but I have a need I can't seem to get by my own. I want a GPU-based particle system simulated in world-space (to create a burning tail after an object), but I'm always limited to the buffer size.

    Is there a way to create a world-space GPU-based particle from this asset if I know that all the particles will never cover a huge area, just that the space would be moving over a huge world. They will die after 2seconds, but will follow a platform based character.

    This asset works IF my camera looks at the worlds origo, but that's not what I want.
     
  23. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    If I understand correctly, your problem is, that you have a fast moving emitter with many particles that have holes in it, correct? This is a bit of a tricky case, because UGS doesn't do any subframe I terpolation. You can counter act this by using a box collider and make it look get in the forward direction of your movement to close these gaps.

    Does this answer your question?

    Best regards,

    Max
     
  24. idavida

    idavida

    Joined:
    Nov 12, 2012
    Posts:
    33
    Ah, it doesn't necessarily need to be fast moving, just that it can translate an object over a large distance. My object can translate 2000 units in any direction but the particle itself is only 20 units width or so. If I change the buffer to be larger I can get it to display particles, but I don't need it to be big, just not static from world origio.

    This works with simulation space in local, but I want it in world.
     
    Last edited: Dec 29, 2018
  25. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,951
    A bit late to this discussion but I thought I'd chime in having just picked up a copy of the asset. Everyone seems to be focusing on the fact that it doesn't require compute shaders, but I believe the real strength of the asset is that it doesn't require the SRP.

    I haven't spent any real time with the new render pipelines so it's entirely possible I'm way off on the amount of effort required, but I would think converting a project is not just a matter of opening it and running an automated process.
     
    Last edited: Jan 2, 2019
    hippocoder likes this.
  26. mitaywalle

    mitaywalle

    Joined:
    Jul 1, 2013
    Posts:
    247
    Hi, have some questions:
    - is there any mobile-launchable performance tests?
    - is there any batching between emitters? What performance with it?
    - what is mobile requirements? Shader model, OpenGLES version? AFAIK, float textures requiers OpenGLES 3.12. Am I right?
     
    MaxProude likes this.
  27. tof114

    tof114

    Joined:
    Jun 25, 2018
    Posts:
    2
    Hi,

    I'm a bit new to this sort of advanced components with Unity and it turns out i can't manage to get UGS work on my MacBookPro2018. So I need a bit of help please.
    I created a new 3D project with Unity 2018.3.0f2 (personal) and imported the UGS asset package.

    1- The console displays
    Assets/Ultimate GPU Particle System/PostProcessing/Editor/PropertyDrawers/MinDrawer.cs(6,34): error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.PostProcessing.MinAttribute' and 'UnityEngine.MinAttribute'

    2 - I cannot run the scene as Unity says i have compilation errors.

    3 - Lastly i can't add a GameObject>Effects> GPU particle system as this option doesn't exist in my menu

    It's most likely due to my lack of expertise so any help would be much appreciated.

    Thanks.
     
    MaxProude likes this.
  28. idavida

    idavida

    Joined:
    Nov 12, 2012
    Posts:
    33
    Don't know if it's a Mac thing, but some shader in this pack took forever to import in 2018.1 pc which leads me to think you should try to reimport the assets. Right click the folder and try!
     
    MaxProude likes this.
  29. tof114

    tof114

    Joined:
    Jun 25, 2018
    Posts:
    2
    Thanks.

    Actually, i "fixed" this error : Assets/Ultimate GPU Particle System/PostProcessing/Editor/PropertyDrawers/MinDrawer.cs(6,34): error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.PostProcessing.MinAttribute' and 'UnityEngine.MinAttribute'

    by replacing MinAttribute with PostProcessing.MinAttribute

    would be good to get this validated by author if possible.
     
    MaxProude likes this.
  30. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    Just purchased this, what's up with the post processing? Not at all clear how or where it overlaps with the Unity post processing v2 from looking at the files to import. Holding off on importing it until I get an answer on this.
     
    MaxProude likes this.
  31. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey Snacktime,
    Post effects are still in development so it might indeed be safer to not import them, but then of course, the demo scenes won't have any post effects. If you want to see the setup, please import the package in an empty project.
    UGS is still in development and will receive updates in the future.

    Thank you for your support!

    Max
     
  32. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Post effects are being developed and I'll update them sporadically. To avoid errors, please do not import multiple versions at the same time.
     
  33. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    That's because of the new standard shader support. If you don't need it, you can remove the shader from your project. Then it will compile much faster. It will throw an error if you choose it in the material tab however.
     
  34. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    This is due to the post effects. I'm sorry for the inconvenience. You probably have multiple versions of the post effects in your project. To avoid this error, please do not import the post processing folder.
     
  35. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey miteywalle,
    I can send you an APK that I prepared for release, but I'm not at a pc at the moment so I can only send it to you tomorrow.

    There is no batching between emitters. If you want to work efficiently, you can reuse the same emitter. It's a design issue. They are very good at displaying many particles but they are all independent. That's because they all have a unique buffer and can't share materials.

    As for support, I can't pinpoint it down to a certain gles version but the minimum requirement is at least half precision render texture support. For vector fields you also need 3d texture support. Normal turbulence works without that though. I've tested it on many devices and the low end is a galaxy S4 or higher and an iPhone 4 or higher.

    I'll post the download link here later.
     
  36. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    here's the mobile demo apk: LINK
     
  37. mitaywalle

    mitaywalle

    Joined:
    Jul 1, 2013
    Posts:
    247
    Thanks you, unfortunately not my use-case
     
    MaxProude likes this.
  38. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    What are you looking for? Maybe I can slap something together :)
     
  39. superjayman

    superjayman

    Joined:
    May 31, 2013
    Posts:
    185
    Particles Do Not Play If They Are Far Away From World Origin???

    Also, switching from local to world , particles still remain in local space??

    Why do particles only come active if Camera looks towards world Origin? Weird..

    These issues make this package unusable!
     
    Last edited: Jan 12, 2019
    idavida, LIVENDA_LABS and MaxProude like this.
  40. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    I'll take a look into it. I think the particles not showing is due to bounding boxes. Next update will bring a tool for editing and viewing of the bounding box. It might simply get culled.

    The SIM space is probably a bug caused by serialisation. Fixes incoming!
     
  41. sanomas

    sanomas

    Joined:
    Jan 12, 2019
    Posts:
    1
    Hello, what technique are you using for mesh emitters and targets? Does it has some requirements for mesh like UV channel or works with arbitrary meshes? Does it require some sort of pre-generated data for mesh like emit points texture or works entirely in real-time? Also it would be great to see them in action in your demo, looks like it missing them at the moment. Thanks!
     
  42. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    At the moment it creates a buffer out of the vertex data only taking vertices, edges and triangles into consideration. I want to add vertex colours in the future however.
    It is being baked on initiation
     
  43. superjayman

    superjayman

    Joined:
    May 31, 2013
    Posts:
    185
    Any Update On This? Cheers
     
  44. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Im working on it. Please hang on.
    Cheers,

    Max
     
  45. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    I have a quick fix for you, that you can use before the next update is released:
    In GPUParticleSystemEditor.cs change the following lines in line 306 from


    if (EditorGUI.EndChangeCheck())
    {
    particleSystem.SetSimulationSpace();
    }


    to this


    if (EditorGUI.EndChangeCheck())
    {
    serializedObject.ApplyModifiedProperties();
    particleSystem.SetSimulationSpace();
    }


    Sorry for the bug :D
     
  46. richardkettlewell

    richardkettlewell

    Unity Technologies

    Joined:
    Sep 9, 2015
    Posts:
    2,281
    I agree. @MaxProude i think you should mention this on your asset store page too, so users know that it's for use with the built-in renderer vs HDRP or LWRP.
     
    MaxProude likes this.
  47. Imperatoss

    Imperatoss

    Joined:
    Mar 24, 2018
    Posts:
    51
    Hi, awesome Asset so far!!!

    I just have an issue if i duplicate an GPUParticle object. Only one of them renders while the other is blank.
    It only happens if i duplicate it. It doesnt appear if i create a new GPUParticle Object and insert the same values.

    Would be great if you could fix that =) its a lot of work to copy all the values several times


    I guess its the Instance ID of the Material which gets overwritten if you paste component values, but i´m not sure : /

    I managed to solve it.

    I just changed in GPUParticleSystem.cs following Lines at 46

    Code (CSharp):
    1.     private virtual void CheckInstanceID()
    2.     {
    3.         if (instanceID == -1)
    4.         {
    5.             SetLightMode();
    6.             SetRenderQueue();
    7.             instanceID = gameObject.GetInstanceID();
    8.         }
    9.     }
    into

    Code (CSharp):
    1.    
    2. private void CheckInstanceID()
    3.     {
    4.         if (instanceID == -1)
    5.         {
    6.             SetLightMode();
    7.             SetRenderQueue();
    8.             instanceID = gameObject.GetInstanceID();
    9.         }
    10.  
    11.         else
    12.         {
    13.             GPUParticleSystem[] systems = GameObject.FindObjectsOfType<GPUParticleSystem>();
    14.  
    15.             foreach (GPUParticleSystem system in systems)
    16.             {
    17.                 if ((instanceID == system.instanceID || particleMaterial.GetInstanceID() == system.particleMaterial.GetInstanceID()) && gameObject.name != system.gameObject.name)
    18.                 {
    19.                     instanceID = gameObject.GetInstanceID();
    20.  
    21.                     Material newMaterial;
    22.  
    23.                     if (lightMode == LightMode.Off)
    24.                     {
    25.                         newMaterial = new Material(Shader.Find("GPUParticles/GPUParticles"));
    26.                     }
    27.                     else
    28.                     {
    29.                         newMaterial = new Material(Shader.Find("GPUParticles/ParticleStandard"));
    30.                     }
    31.  
    32.                     particleMaterial = newMaterial;
    33.  
    34.                     break;
    35.                 }
    36.             }
    37.         }
    38.     }
    39.  
     
    Last edited: Jan 20, 2019
    MaxProude likes this.
  48. Imperatoss

    Imperatoss

    Joined:
    Mar 24, 2018
    Posts:
    51
    Now i have another issue :D

    If i set a Layer for the ParticleSystem. The Camera doesnt renders the Particles if i set the Camera Layer to the same one.
     
    MaxProude likes this.
  49. look001

    look001

    Joined:
    Mar 23, 2017
    Posts:
    111
    Hi, this asset looks pretty cool. I am wondering why this is an editor extension. Can i create dynamic simulations at runtime or are they baked in the unity editor in the forhand? Also if it is possible, is it legal to use it at runtime? It's lisenced per developer seat and not for end-users. Thank you! I am looking forward to use the asset :)
     
    MaxProude likes this.
  50. MaxProude

    MaxProude

    Joined:
    Feb 24, 2013
    Posts:
    175
    Hey imperatoss,

    thanks for the heads up! I'll look into this.
     
    Mark_01 likes this.