Search Unity

[RELEASED] Massive Vegetation - ultra high performance billboard rendering system

Discussion in 'Assets and Asset Store' started by graphicDNA, Jul 19, 2018.

  1. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Hi guys!
    I've just released Massive Vegetation. It's a fully featured, ultra high performance component that allows rendering millions of trees or plants in real time, even with low to mid-range hardware. The creation tools included are extremely quick and user friendly, and allow creating huge amounts of billboards in a matter of seconds.

    Massive Vegetation is based on camera-facing billboards, and so it's not designed for high-fidelity or close-up images of trees. In such cases, a 3D model would probably do better. Massive Vegetation's billboards are ideal for rendering grass, plants or trees where performance is a critic factor, or when the number of elements is huge.

    It comes in two flavors: the "Billboards" component for use cases with low-mid billboard count, offering full local control on individual billboards, and the "Billboards Batch" component, designed for use cases with thousands of elements. In such cases, local control is not needed (nor really practical) and a quick and easy creation of billboards is prioritized.

    The package includes demo scenes, full source code for both the components/editors and shaders, and several ready-to-use tree/plants sprite sheets.

    Feedback will be really welcome and appreciated.

    Thanks a lot, and hope you like it!


    Video showreel (make sure to watch it in 4k, 60 fps):


    Features and usage examples video:


    Technical demo video (make sure to watch it in 4k, 60 fps):



    Features:
    - Ultra-high-performance billboard rendering system
    - Visual editing tools, integrated in Unity’s Editor
    - Support for hundreds, thousands or millions of billboards in your real-time scenes
    - Fully compatible with the Unity’s built-in Sprite Editor
    - Manual or automatic creation mode
    - Full local control of billboard’s position, size and rendering parameters
    - Automatic planting of billboards on the ground
    - Automatic randomization of size, type and billboard flipping, to create more natural environments
    - Fully compatible with Unity’s forward rendering pipeline, including dynamic shadows, multiple lights and fog
    - Complex lighting and transparency algorithms, including Alpha To Coverage, Ambient Occlusion and Spherical Harmonics.
    - Automatic Frustum and Distance culling to dramatically improve performance, and allow creating huge, open-world environments
    - Wind Animation included
    - Includes several Sprite Sheets with ready-to-use trees, grass and plants
    - Automatic creation of Colliders, to add physics collisions to trees and plants
    - All-included, single price, no extra packages with additional charges
    - No additional packages, all included / single price
    - Full source code included

    Pending Features:
    - By now, it only works with the Forward Rendering Pipeline
    - Untested with baked lighting
     
    Neviah likes this.
  2. witcher101

    witcher101

    Joined:
    Sep 9, 2015
    Posts:
    516
    Does this work with webgl??
     
  3. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    I´m afraid not. We use custom Geometry Shaders, which are not supported even in WebGL 2.0. If this feature is added in the future, then it will work without a problem. Thanks!
     
  4. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Is deferred rendering support planned for the future? Can "automatic creation of colliders" be disabled?
     
  5. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Yes, deferred rendering is in the roadmap, but still cannot say when it'll be available.

    Yes, adding colliders is 100% optional. In fact, they are not added by default.

    Thanks!
     
  6. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    I'm just curious, what is the issue with deferred rendering and this asset as is?
     
  7. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    The thing is that we use geometry shaders to generate and animate the billboard's triangles on the GPU, and so we cannot use surface shaders.
    Because of that, I needed to implement all lighting, fog, shadow casting and receiving manually, so forward rendering passes works well.
    Now, I guess I need to do the same with deferred rendering passes, but I haven't started looking at it yet.
    Thanks!
     
  8. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    A new version is under review, ready to be published this week, which includes a 50% discount for everyone the following 2 weeks.
    It also adds new ready-to-use tree sprites, multi-object editing support and improved undo operations in the editor.
    Hope you like it!
     
  9. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Version 1.2.1 is now live, and with a 50% discount for the following two weeks!
     
  10. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    We've been doing some tests with deferred rendering, and although Massive Vegetation doesn't yet fully support it, it can definitely work pretty well in a deferred scene.

    Billboards are rendered as a post-pass using the traditional forward rendering, so it won't leverage the deferred rendering path to increase performance with multiple lights (yet), but it works.

    We created a demo video here:



    We continue working to add full support for deferred rendering to our shaders.

    Cheers!
     
    Neviah likes this.
  11. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Now, close-up detail of wind animation and dynamic lights...

     
  12. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Hi again guys,

    This video shows the desert demo scene of Massive Vegetation running live in real-time on a LG G6.

    I can generate timing statistics in case anyone is interested.

     
  13. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Yesterday, version 1.3.5 was released, including a remarkable price cut and two new features:

    • Support for scriptable objects, allowing saving the source data of Billboards Batch to an asset, in your project folders. This way, you can freely re-use your source data and manage it as you find more convenient (including support for version control systems)
    • Customizable collision layers: now, when checking for the ground to plant the trees/grass, Massive Vegetation allows you to specify what layers should be considered for the RayCasting.

    This new video shows the 67k Pines demo running in real-time on an Android device.

     
  14. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    CARTOON BILLBOARDS now included

    A new version has been submitted (now going through the asset store review process, and will be live in 1-2 days). It includes a fix for a compilation error in game builds, plus some new tree sprites for cartoon rendering (with a new demo scene).

     
  15. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Today, we have run some performance tests with the most dense scene we provide: the one with 2 million billboards.

    Even inside the Unity Editor, the results on a GTX 980 are pretty impressive: in all cases above 200 fps (below ~ 4ms per frame).



    CPU is an i7, although doesn't play a very important role on this.
     
  16. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Latest version of Massive Vegetation (already available) includes a new feature called Adaptive Verticality, which drastically improves how billboards look from above, when the camera is looking down. Grass rendering is the typical example of this:



    Hope you like it!
     
  17. superjayman

    superjayman

    Joined:
    May 31, 2013
    Posts:
    185
    Can you please make it so it's easy to delete placed vegetation!.. At the moment you can only select a certain amount because of pagination and it's very annoying.

    A brush type system where I can easly remove or add??
     
  18. LukeDawn

    LukeDawn

    Joined:
    Nov 10, 2016
    Posts:
    404
    Any news when this asset will work with deferred rendering?
     
    Joe-Censored likes this.
  19. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Hi, sorry for the late reply.

    The idea about a brush for deleting it s great. I'll implement it in a future update. Thanks

    The package should already work with deferred rendering, but as a post processing pass. There's a demo with deferred rendering you can try.

    Cheers
     
    Joe-Censored likes this.
  20. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Can I assume the post processing pass method is compatible with other post processing effects, such as Unity's post processing stack v2?
     
    LukeDawn likes this.
  21. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    I think so, but honestly didn't test it.

    I'll try to get some time to test that.

    Cheers
     
    Joe-Censored likes this.
  22. farzaan090

    farzaan090

    Joined:
    Jul 23, 2018
    Posts:
    15
    Does this allow you to use your own 3d prefabs and have those converted into billboards?
     
  23. LIVENDA_LABS

    LIVENDA_LABS

    Joined:
    Sep 23, 2013
    Posts:
    377
    Does not work on Android with OpenGL 3.2 ? Works with Vulkan
     
  24. pojoih

    pojoih

    Joined:
    Mar 30, 2013
    Posts:
    226
    Just brought your Asset, seams nice especially performance wise. Would be a great addition to the Lightweight Render Pipeline. Any Plans to make it compatible to the LWRP?
     
  25. graphicDNA

    graphicDNA

    Joined:
    Jun 26, 2017
    Posts:
    47
    Yes, just started to work with the lwrp. I'll post any updates
     
    pojoih likes this.
  26. superjayman

    superjayman

    Joined:
    May 31, 2013
    Posts:
    185
    Does not work with OpenGL ES 3.1+AEP like you stated on your product page, testing with Android 8
     
  27. pojoih

    pojoih

    Joined:
    Mar 30, 2013
    Posts:
    226
    Works on Quest but only in Multi Pass. I've tried modifying the shaders according to this guide but not luck yet. It's a hassle to fiddle with cginc files in Unity cause apparenty hot reloading does not work and I have to restart the editor every time I make a modification :(.
     
  28. BeorGames

    BeorGames

    Joined:
    Jul 28, 2018
    Posts:
    65
    I've followed the tutorial and finished with pink dots, I'm using URP, is it supported?