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

World Building InfiniGRASS STUDIO✅-Massively optimized,interactive & non uniform volume grass for procedural worlds

Discussion in 'Tools In Progress' started by nasos_333, Aug 24, 2015.

  1. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,079
    I was going to use it as beard on a character face or eyebrows but seems this isn't possible.
     
  2. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    This may be possible actually :), but need a bit of a trick, for example you can attach 2-3 colliders in the face bones (that will approximate the face animation for example) and paint the grass in the static colliders, with follow object mode on.

    If the beard area does not shape shift is even easier and you could do one collider to approximate the beard attachment surface.

    Depending on the setup of face, this can be a possibility (and is much cheaper than actually reading the mesh exactly and stick to it)
     
    ksam2 likes this.
  3. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,079
    My problem here is the face doesn't have any bones and it's animated by blend shapes.
    That could be really awesome :(
     
  4. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    That is more advanced, so i am not sure how it would be possible. For static collider trick case though i tried it and works very nicely, i will post a video with lateral motion using the shader for feeding the speed of motion.

    I will also check how blendshapes work and maybe i can come up with something
     
    ksam2 likes this.
  5. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Here is some sample videos of how the system could be used for hair like emulation ( i use the vines that are directed downwards)



     
    ksam2 likes this.
  6. Fatalis

    Fatalis

    Joined:
    Sep 9, 2013
    Posts:
    52
    I could not find a way to implement my custom grass in any of the demo scenes, so the issue is in a personal scene. I am using Unity 5.3.4 and InfiniGrass 1.7.5. I have tried both .spm (Speedtree) and .obj files of a simple fern mesh and I get the issue with both. No error comes up in the log.
     
  7. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    You can send me a sample of the fern to see possible causes, some SpeedTree models are very high polygon in the top quality, so that could cause the issue.
     
  8. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    I have created a fern brush for v1.8, which is batch efficient and can send over the sample.
     
  9. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269

    Fern brush preview - with and without snow. The brush is ready for download in google drive link.
     
  10. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    Two major breaktrough features are coming in the next version of InfiniGRASS, for performance, intitial loading time and RAM conservation, especially useful when big amount of grass is required.

    InfiniGRASS v1.8 features and fixes

    - New RAM saving mode where batched models can be copied around to increase grass-tree density with far less RAM consumption (as the mesh is shared). This can be used in combination with the current mode for any kind of performance and RAM consumption variants. This mode also decreases initial loading time.

    - Fixed v1.7.5 issue where the LODs will not work after a Refresh in Editor and have to regrow the grass to make them work. This is no issue when grass is grown in play mode (only when coming from pre-gorwn grass in editor).

    - Added option to recreate grass gradually at game start in a fast speed (not depending on player approach), instead of growing all at first frame. This can be used to override the issue with Unity GC collection that does not free RAM in mesh elimination mode, so RAM now is freed when grass is all created at game start, with a slight delay to get to normal frame rates, then everything is normal and RAM is fully freed.

    The issue with ram is the Unity GC collection method, if too much is loaded in RAM at the same frame, the GC collector pushes some of the items to level 3 of GC collection levels and cannot then easilly cast the garbage out. This is solved by the gradual methods. More info in this post: http://answers.unity3d.com/questions/7853/garbage-collection.html

    For example a scene with 5 managers at 850MB when all grass is loaded at first frame, with this system active after loading in around 3-4 seconds, it is just 450MB (with mesh elimination on).

    The update will be ready soon as a hotfix and will have a Beta period to make sure everything is as polished as possible.
     
  11. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    I noticed in the Grass Manager script is that the Terrain TData is not grabbed if "Scale per splat map" variable is not active,
    this is my oversight as the system was first used to scale the grass, so the TData was not used for Mass Placement and left this check. Also i usually test with my demos, where "Scale per splat map" is active, that is why i missed this issue so far.

    If you get a TData related error, please check the "Scale per splat map" parameter in the brush settings and try with this option on (it to scale the grass per splat as well for variety).

    The issue where TData is not grabbed if Adapt on terrain is not chosen ("Scale per splat map" in Inspector) will be fixed for v1.8.
     
  12. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    A note on shadows, it seems that a wrong shadow setting can increase draw calls a lot, in the above pics i show shadow settings in the proper close setting (with just 7 draw calls) going to 100 draw calls when shadow distance is very large.

    In the coming v1.8 i will have a shadow manager to help regulate shadows as well
     
    ksam2 likes this.
  13. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Combining InfiniGRASS with Sky Master ULTIMATE volumetric fog (settings for bright misty forest)

    Also i am working on combinations with the new in Sky Master ULTIMATE v3.4 volumetric lighting system, and will post results soon.
     
  14. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269



    The system i use in my game to reconfigure trees on the fly, that allows an infinite number of trees created by a few items. This is not a generic tree creator, it supports specific placement of details as needed, so trees look both varied and as detailed as desired.

    The Platanos trees and reconfigurator will be a separate standalone pack that will be fully compatible with InfiniDy systems (infiniGRASS - InfiniTREE) for using it with massively optimized performance.

    This system will be included in InfiniTREE and also will be a free bonus download to all InfiniGRASS reviewers that help the asset move forward.
     
  15. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    InfiniGRASS v1.7.6 is up at the Unity Asset Store

    - Fixed issue where Snow material could create white lines in certain texture arrangements
    - Fixed Daisy3D and Distant forest brush issue where could not be erased in real time
    - Fixed issue where Terrain data (TData) would not be grabbed properly when "Scale per Splat map" option is not selected
    - Fixed issue where the LODs will not work after a Refresh in Editor and have to regrow the grass to make them work. This is no issue when grass is grown in play mode (only when coming from pre-gorwn grass in editor).
     
  16. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    InfiniGRASS is in the Unity Stuff picks this week !!! Many thanks to the Unity team for selecting the asset.

    I am now hard at work on InfiniGRASS 2 that will take the system to the next level, supporting muliple new RAM saving modes, automated Grass manager grid - layer creation and population by Unity terrain grass-trees or Mass planting, higher level LOD of Grass Managers in play mode, Grass Manager groups for enabling various growth modes and distances per group (instant grow in start, gradual grow on start, full gradual growth) as needed, new mass erase mode for real time optimized grass removal across multiple Grass Managers, batch instantiation mode for adding density with a single shared batched mesh and much more (plus new brushes like Fern and Unity Trees)

    Please if you like the asset, remember when possible to leave a review and help the asset move forward and with the development of the new features and systems. Every review counts and helps a lot with the development. Thanks in advance for any reviews for the system.
     
    Last edited: Jun 29, 2016
  17. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Tutorial focusing on LOD creation (for first grass type). The steps are also detailed in the video comments.
     
  18. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Some top down look samples, this is using also the new in v2.0 batch instantiation system for thicker grass with less RAM consumption (increases draw calls a bit).

    The test is in my old 2010 PC (core 2 duo CPU, xbox one level GPU) and has multiple image filters (Unity blur as well, which is rather heavy)

    Also no LODs are used here (i suppose in the top down case with fixed camera LODs may not be used as well, so i use the full grass for better reference)

    In v2.0 there is a system that will automatically assing Grass Managers per area and LOD them at a higher level too for maximizing performance even further (so near areas wont affect the game at all). This can be done already in v1.7.6, but needs a custom script to enable/disable the managers, while in v2.0 will be automatic and have various layers/groups support too.

    Also a Mass Erase feature in real time will be supported in v2.0, with a circle that will mark the erase spot and will have maximium performance (it is done per batch and not per grass patch like the current erase method) and will work across multiple Grass Managers as well.
     
  19. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Menu of the new Global Grass Manager (WIP), where manager groups are created, populated (convert from Unity, Mass place, auto tiling etc methods) and controlled (for higher level LOD, RAM saving modes, growth modes and distances etc)
     
  20. Fera_KM

    Fera_KM

    Joined:
    Nov 7, 2013
    Posts:
    307
    This looks great! I am really tempted to pick this one up.

    One quick question, how does it work with Skyshop/Alloy, if it is an issue at all?
     
  21. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    The system uses its own shaders, to get wind on the grass mainly. Other objects (eg rocks etc) can use any shader i suppose (and already do use various shaders for river rocks etc and works fine). Also i have created a shader to support Unity Tree system for v2.0 and works fine.

    Also if these packs have grass shaders, as long as they are independent of vertex information, they will also work (i dont bake vertex wind info like SpeedTree though, so SpeedTree shaders dont work with it for example for wind, this is something i will consider for v2.x cycle to bake also vertex information from the source items for such special cases)

    Let me know for further questions
     
  22. Fera_KM

    Fera_KM

    Joined:
    Nov 7, 2013
    Posts:
    307
    Actually, Marmorset Skyshop is a Lighting/GI hack, so it's dependent on skyshop compatible shaders or else they will not receive the skyshop surface light. Alloy is a custom deferred renderer so it is also reliant on its own shader system (or compatible ones).

    hmm, reading your response again, maybe I misunderstood you, are you saying you can use any surface shader for the grass on top of vertex deformation in infinigrass?
     
  23. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    No, you can use any shader for the non grass items that are optimized by InfiniGRASS system. Also you can use any shader on the grass, but will need its own wind/vertex deformation system (otherwise grass will remain still).

    The InfiniGRASS shaders do not have any special setup for either Skyshop or Alloy or other similar systems (as this would be impossible to cover all special cases in a single shader)

    That said, the vertex deform code is pretty straightforward in InfiniGRASS, so adding my wind to other shaders is also possible with some coding and depending on the complexity of the target shader. I can give guidance to this for a specific case if needed or even look at the shader if supplied and try to implement the wind (a double sided cutout base shader is the best fit to start on)
     
  24. Deleted User

    Deleted User

    Guest

    @nasos_333
    I can settle this. Do your shaders use the Unity surface shader framework? If so, do they use the Standard or StandardSpecular lighting models?

    If yes in both cases, Alloy has a system for injecting our lighting code into shaders like yours without any modifications:
    https://alloy.rustltd.com/documentation/injection-headers
     
  25. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    An update on my current work for InfiniGRASS v2.0, that will bring the system to a new level with new modes for copying batched items and pooling, plus a global mananger to create, LOD and manage groups of Grass Managers and assign grass to them with conversion from Unity terrain grass-trees, a tiling system, Mass Placement and other methods.

    InfiniGRASS v2.0 (includes v1.8) features:

    v1.8 CHANGES IN v1.7.6 (Mesh elimination, gradual grow etc)
    - Added option to do mesh elimination even if disable grower is not enabled
    - Added option to disable script in Gradual Growth manager mode
    - Added a delay in elimination of original mesh, to avoid the rare flickering if batched model is not enabled in time to cover the original meshes absense
    - Added global control (for all or per grass type) to enable/disable real time colliders to grass
    - Added feature that disables colliders based on LOD level (LOD level can be user defined as well, default is level two)
    - Added check if grower is enabled and eliminate original disabled for individual patch erase method

    v2.0 features:
    - Global Grass Manager that allow the easy spread and control of grass across Grass Manager grids and conversions from Unity terrain to InfiniGRASS
    - New RAM saving gradual growth at start mode (all grass grows at game start, but gradually ot overcome Unity CG Collect limitation)
    - Multiple layers (Grass Manager groups) each easilly controlled for growth parameters (full gradual, gradual at game start, all grown at game start etc), material update and other features.
    - Conversion of both Unity terrain trees and grass to InfiniGRASS, with automatic split to multiple Grass Managers
    - Higher level LOD of Grass Manager groups-grids for maximizing performance (disabled managers have zero overhead)
    - Mass Erase feature with optimized erase (both in speed as whole batches are erased and RAM as it is properly freed)
    - New batch instantiation mode for copying the batched items around (following the ground) in a random way or pre-defined placement. This mode saves RAM (as meshes are shared) and also decreases initial loading time.
    - Use of the batch instantiation system by feeding it with Unity terrain positions, thus allowing a combination of batched models and copies of batches when converting Unity Grass-Trees.
    - Grass Manager groups creation from auto tiling a source Manager, Unity terrain grass-tree conversion or Mass Placement method.
    - New Streaming possibilities, with full control of layers for streaming radius per layer (e.g. trees layer can be streamed at higher radius than grass, to both have the trees appear further away and spead the streaming work in different frames for lower chance of spikes) and faster streaming with batch instantiation (than creating brush stroke and batch) and pooling of instances (pooling will come in v2.0 or v2.1).
    - Grass pooling (reuse disabled batch instances, in multi grass manager case, disabled batchers will return items to pool)

    Possible v2.0 features (i am working on those, but cant say if will make v2.0 or need further polish and move to v2.1)
    - Shadow manager
    - Global brush manager and brush creator, Unity terrain brush converter to InfiniGRASS

    Beyond v2.0
    - Smooth seasonal changes
    - Grass burn
    - Reconfigurable trees (possibly will also be a separate pack and will be included in InfiniTREE, all reviewers of InfiniGRASS will get this module for free and will work directly with InfiniGRASS batching for performance)
    - Top down rednderer for various effects like vertex colorartion from Unity terrain texture etc
    - Bake vertex info during batching to have 100% compatibility with SpeedTree
     
  26. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Burn grass WIP (shader)


    Grass Erase across multiple Grass Managers


    UPDATE:

    The grass burn mechanism is now done at its base, the full system may come in v2.0 as well, or soon after v2.0 if i see it requires extra polish to get it perfected.

    Grass erase is also now possible for multiple grass managers

    If you like the asset, please remember when possible to leave a review for the system to help with the ongoing development and with bringing the massive v2.0 update as fast as possible.
     
  27. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Grass burn feature, burn areas selectively (grass may dissapear or leave black remains) - WIP




    New pure Unity 5 Deferred mode shaders, plus snow on vertex grass (first version - WIP for v2.1)




    New Mass plant interface, with icon based assignment of InfiniGRASS items to splat maps, plus the new Grass and Tree conversion of Unity terrain to InfiniGRASS, also icon based



    UPDATE:


    v2.0 development is progressing and most of the interface is now done and is under tweaking. The new icons system that plants InfiniGRASS brushes in Unity terrain grass-trees and splat maps is finilized and supports selective assignment of all the Unity terrain properties for conversion and planting with InfiniGRASS.

    A grass burn feature has also been implemented and is enhanced/tweaked, i am not sure yet whether will be a v2.0 feature or will come in v2.1, depends on the polish that will be required to get the desired effect and the number of extar features i will have to implement to make it as impressive as possible (e.g. optimized fire particle FX - a first version is also added - etc).

    I have also created a first version of a pure Deferred (Unity 5) version of the shaders, that will come in v2.1 of the system, and this early version is available for anyone that is interested in google drive download. The vertex variety in the new shaders also supports gradual snow growth.

    If you like the asset, please remember when possible to leave a review
    for the system to help with the ongoing development and with bringing the massive v2.0 update as fast as possible.
     
  28. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Awhile ago I asked this:
    We need to detect the type of grass (for a cover system). We can do that with Unity Terrain grass/detail meshes. We're waiting for the GAIA-friendly version of infiniGrass (and I'm not sure how that'll work) -- but once that version is out, will there be a way to detect what type of grass/bush the player-character is standing in?

    And Nasos said:

    We're now about ready to start building this cover system, so wondering:
    1) What kind of precision would the first method offer? We need 1m or maybe 1.5m accuracy in detecting grass cover for the player-character.

    2) Does your Unity terrain grass conversion procedure (currently in progress, right?) enable exposure of the grass-type on texture, so we can read the texture and know what kind of grass is around the player-character?
     
  29. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi gecko,

    I have played with the exposure of grass type idea today in v2.0 Global Grass Manager and managed to implement a first version that has 100% accuracy and can also give exact info on the grass in the player radious, e.g. how many patches per grass type and all types. You could even get a mean distance to the player etc if needed (but since you need small radius i guess this wont be required at first) or any other info needed with per grass patch accuracy.

    I have added a control to update this info in a user defined number of seconds. This can easilly be extended to also check when the player actually moves so wont check if the position has not changed beyond a certain threshold.

    This system will work across all Grass Managers in the scene as well (like the grass erase and grass burn)

    Let know for any other ideas and details you would like to see in the system for v2.0.
     
  30. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    That sounds great! Any chance we could get a beta copy so we could start working on integration with our cover system? (I can send you my purchase receipt for proof of purchase.)
     
  31. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Sure, the Beta will be available for all reviewers of the system, so no invoice checks will be needed.

    I hope to have a first Beta version this week, i am working around the clock for this and is getting there, most of the core functionality is in place now and needs the extra polishing and adding full options to cover all cases and give the best control possible.

    I will probably leave on the 22ond of July for a week vocation, so even if the Beta is not fully ready by then, i can send a copy of the system progress until then to get started and give feedback on the system as well.

    Here is a sample of the grass type discovery system in action.

     
  32. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    That looks really cool! But all we want to know if IF the player is in grass, so we would set the distance to 0 -- would that work?

    And eventually we'll need to know this information (in grass or not in grass) for several NPCs as well...do you think we could extend it to them, individually?
     
  33. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    With zero wont work, but this is the same as having a texture based way to find and doing a zero pixel lookup. The way i would use this is by having a small distance (e.g. half meter or one meter) and detect grass there, and if density is high enough can tell that the player is in the grass (this depends on grass type too i suppose) and depending on the used radius can also tell if standing on grass.

    This could be combined with a second check to sense a high radius, to get another idea of the surrounding grass as well. The radius can be toggled as needed to get the information at the required depth.

    In either case, since you know the exact grass patch positions, you can also devise any other way to determine grass to hero relation very easilly, if another method would work better.

    The system can be extended of course to do the find in any spot, and any number of spots. I can also add a list of targets to determine grass type around as well for v2.0.
     
    Last edited: Jul 18, 2016
  34. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269



    InfiniGRASS v2.0
    Next generation forest and grass (full shadows, special shaders, interactivity including local wind, grass-tree erase and burn), with pooling to enable endless worlds with reuse of assets.

    v2.0 of the system will have multiple features to control RAM usage and reduce memory consumption, pooling is the ultimate method that allows the reuse of assets, thus can enable vast open worlds with very fast streaming and next generation visuals due to the combination with batching.

    The ratio of batched vs batch copied - streamed and pooled items is fully used controllable, for the best adapation per case and multiple layers of grass each with its own growth and batch - pooling - streaming parameters is possible for total control.
     
    Last edited: Jul 19, 2016
  35. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi everyone,

    I will be leaving on vocation for next week, so while i will try to see to any issues that come up, i will probably be limited in this, so i will try to check as often as possible.

    I have also finished with a Pre-Beta version of InfiniGRASS 2.0 (that has some of ULTIMATE edition items as well) and is available to all users that want to try it, with the note that the v2.0 Beta is still not ready and there is a lot of front end additions to be made for usuability and some modes and conversions are not yet finilized fully (e.g. Unity grass is converted, but the density is not yet optimal and must be controlled with a downscale factor, which could be extended with various other controls to decide the exact conversion density and options).

    The core though works and is stable (new batch instantiation, pooling etc), so you can start doing Unity terrain conversions and use the new erase, burn systems, plus create manager groups and control growth modes etc

    Let me know with a PM and the invoice and i can send the Pre-Beta in Google Drive link. Also i recommend using the Pre-Beta on a copy of the project, just in case or at least make a backup of the InfiniGRASS related scenes.
     
  36. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    InfiniGRASS new burn feature has now got an option to radially burn the grass based on the point of initial impact (or bomb or fire). This will offer a more realistic spread approach and will be the default mode. The particles will also follow a similar radial pattern for each grass section that gets burned.

    I will post a video of the effect and the latest particle fire FX soon.
     
  37. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    A first stress test of the new v2.0 system

    50 next gen trees and grass like the trees-grass combo in the above video (two batched, 48 instance copies) per tile, 100 x 100 tiles = 50x10.000 = 500.000 trees and 500.000 grass patches

    This arrangment has a 1.2GB RAM footprint for all trees-grass (no deletions) and using pooling.

    The trees-grass are all streamed and the streaming is also super fluid and fast comparing to the full batching (without instance copies) of v1.x system. Each tile can be pre-defined or instantiated on the fly with its Grass Manager.

    I will post a video with the streaming soon

    EDIT: I will now export a demo for testing without Unity ovehead. Also i noticed that besides the main ram there is also an increase in the swap file, i dont know which is Unity's and what is the scene's, so i will create a more detailed usuage report by looking at the standalone demo and post more details asap.
     
    Last edited: Jul 31, 2016
  38. GingerDr73

    GingerDr73

    Joined:
    Sep 25, 2013
    Posts:
    21
    Really looking forward to these new updates! I've been doing some tests with the current version of InfiniGrass but I'm waiting for the new conversion/placement features before I introduce it into my game. I would like to get a better idea of the workflow for the Unity terrain conversion feature. Currently I generate custom masks and use these with GAIA to place a large variety of grass and small rocks on my terrains. Will the Unity terrain conversion mean I can simply tell InfiniGrass to convert that terrain and it will handle the conversion to InifiGrass?
    So the workflow would look like:

    Custom Masks > GAIA > Unity Terrain > InifiGrass

    How will this work with when I make changes to the masks? Will I have to delete all InifiGrass and go through the process again each time?

    Does this mean we could have SpeedTree's that have been placed as Unity terrain tree prototypes managed by InfiniGrass? What kind of performance boosts could we be looking at if that is the case?

    Cheers,
    AusSnipe73
     
  39. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi,

    The system will convert by type at first, so you select the type from Unity terrain trees-grasses and a type for these from InfiniGRASS, so you can apply anything in their place. In v2.x cycle i plan to have conversion of Unity grass-trees to InfiniGRASS as well, so you can have the exact same brushes as in Untiy terrain, but this will take more time to perfect due to the big number of different items Unity terrain handles.

    Ideally i would like to have solved the SpeedTree issue before i introduce the Unity brushes to InfiniGRASS conversion and perhaps added a billboard shader as well (the Unity trees are already convertable with a special shader i will include in v2.0 and the simple Unity grass is a simple texture change, so is trivial to convert)

    I will try to have automated brush conversion for Unity trees and grass for v2.0, if not have the time will surly be in v2.1 as priority.

    The planting is very fast, since i dont grow any grass (unlike the current version where all grass has to be grown), so the replant will be no problem. It automatically creates the Grass Manager grid and populate it as well, so there is no manual steps to redo a similar planting (with new data on terrain).

    Note also that you can further refine the planting based on verious InfiniGRASS traits (like in Mass Placement) so you could convert the grass from Unity in various ways and layers, for extra control (e.g. LOD various Unity grass types at different distances)

    SpeedTrees can already be batched and have a nice performance boost (using one level below highest models though, as the highest are not good suited for batching, they are too high poly), with the limitation that InfiniGRASS leaf and wind shaders must be used. The vertex baking will help do the same with SpeedTree shaders and use SpeedTree wind.
     
    Last edited: Aug 4, 2016
  40. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    is the snow feature introduced with sky master or does it ship with infinigrass itself? i dont have/need skymaster but i am interested in snow coverage
     
  41. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi, the snow is included in the asset, and the coverage is directly compatible with Sky Master (so when Sky Master is in snow storm the grass will gather snow without further scripting, it is automated). Sky Master is not required to get the snow, but requires extra scripting if Sky Master is not used.

    Sky Master ULTIMATE has snow material for meshes, mesh and Unity terrain (with also rain wetness), SpeedTrees, Unity trees etc, so can do a global snow coverage and that is why i chose to go with a global shader variable so everything is snowable across the various asset types.

    The system grows snow based on a global shader snow coverage variable (this is not public in the shader variables in Inspector and requires the coding to set) and there is also two variables in the shader to fine tune the effect over this base coverage (an offset in Time.y and a strength of vibrance in Time.z shader variables).The offset could also be used as standalone to do the coverage (adjust the Time.y variable for example), if a base and offset system is not needed (though it is recommended as each grass type may differ and need its own fine tuning with the offset of a base coverage)

    The shader is also described in the manual in section "Interactive Grass shader options", for reference.

    A sample of coding the snow growth can be found in the latest demo of the system, so you can sample that code to see how to handle for other system and let me know if there are any further questions.
     
  42. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    I'm having trouble getting Mass Placement to work. See screenshot of the inspector. I created two empty game objects and placed them at diagonal corners of the terrain, but when I press Mass Place, nothing happens, except that those to objects get moved to the same position (somewhat near the previous position of one of them), and this is in the console. What am I doing wrong?

    SepX=1 SepZ=0 Dist=0.3
    UnityEngine.Debug:Log(Object)
    Artngame.INfiniDy.InfiniGRASSManagerEditor:OnInspectorGUI() (at Assets/Asset Store Tools/InfiniGRASS/Scripts/Editor/InfiniGRASSManagerEditor.cs:2013)
    UnityEditor.DockArea:OnGUI()
     

    Attached Files:

  43. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Hey @nasos_333 -- can you give me any tips on the problem above?
     
  44. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi,

    From the screenshot i see that Density shown is zero, so there wont be any planting in this case.

    To increase density you can adjust he "Density of Mass Grow" slider. The maximum margin of the Density slider depends on the world scale though, so if there is a smaller than my default game world must first scale with the World Scale, in order to allow bigger density to be planted. I have done it this way because the Mass Planting can be heavy and allowing more density for a larger scale world could cause Unity to become unstable, so i have this as control method.

    In summary, first adjust the World Scale variable to lower and then increase the "Density of Mass Grow" until you see above zero Density noted in the Inspector and then play with the corners to ideally not get a huge ammount of grass with a single planting (the amount is written in the Density = ... part in the Inspector)

    Also make sure the two corners Y axis is higher than the terrain, since the raycasting is downwards (and if lower than terrain may miss the collider and not plant on the missed spots)

    Let me know if these helped and for further details

    EDIT: I just saw the date of original message, sorry for the delayed response, i had not cought the message from the notifications for some reason and just saw the new one.
     
  45. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,240
    Still not working. Even if I set the World Scale to 1 and the Density of Mass Grow to its maximum value (400 in that case), Density=0. Also, I place the Corner A and B objects but when I click on the InfiniGrass Manager, one of them snaps back close to the other. (Both of those objects are a bit above the terrain.) No errors in the console.
     
  46. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Hi gecko,

    The x and z axis of Corner B should be higher than corner A ones, otherwise B will shift to A and wont define properly the area, probably that is why you get the zero grass.

    Here is a video with Mass plcace in smaller scale, for reference

    https://www.youtube.com/watch?list=PLJQvoQM6t9Gddp8uags3YC4D9zUQ4CbYt&v=4RSPTd2x1sw

    Let me know if this worked
     
  47. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    First version of automatic Land creation and streaming (InfiniLAND) and fully automatic next generation grass and tree creation (Streamer manager that combines InfiniLAND terrain information and InfiniGRASS 2.0 new planting methods) and InfiniGRASS 2.0.

    This is all created automatically (Land + grass placement) and then streamed as the player approaches (currently on the fly in play mode, InfiniLAND is not yet optimized with multithreading and for real time), this pic is from the standard setup (no pooling or batch copying), now i am working on controlling and finetuning the batch copies amount and will create the batch copy + pooling setup, to test and refine the new memory saving methods.

    The v2.0 demo goal is to have an endless land (generated on the fly) with procedural placement of next gen grass and foliage and with batch copy and pooling this should be possible, i hope to have the first complete demo next week.

    The planting is distributing items per splat map and thus it is possible to clear roads automatically, as seen in the paths in the pic (where InfiniLAND has assigned a tile texture).
     
    Last edited: Aug 21, 2016
  48. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    A few news on the v2.0 Beta:


    The Beta was extended with much new functionality, one thing was the creation of a full procedural mode and a procedural terrain generation module (this is for demo purposes and may or not be in the asset) that showcases how the grass is planted on a real time generated terrain on the fly and then streamed.

    The issues i discovered during the full automated planting mode called for various new planting methods and controls, like an out of planting plane elimination of grass blades so the pooling of the items can be both easier and happen with higher frequency.

    These controls can also be used when planting grass manually, so are globally useful besides the streaming and full procedural planting.

    Also there are various extra controls that need to go in for the pooling of composite and with custom rotation brushes, so extra work is needed to cover all possible cases of planted items.

    Since the system got so much new functionalty than i initially had planned (but essential to showcase and realize its full potential) the Beta will be delayed into September than the late August planned, to make sure all option tie perfectly together and are as optimized and easy to use as possible. I will try my best for first week of September to have a fully polished and easy to use version, the release is still planned for late September (since the Beta will be in a much more advanced state)
     
  49. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    UPDATE:

    A few updates of v2.0 progress

    - The terrain generator sample system is now multithreaded, thus the grass creation performance can be seen more clearly (as terrain before multithreading caused some spikes on map edges approach). Now the demo is super smooth at all times, even on my old 2010 PC.

    - The terrain generation - planting and growing are now fully separated processes and each will be multithreaded and optimized (WIP - e.g. planting at a radial manner when further terrains are constructed). Optimization is constantly happening as the system development progresses and extra needs and possibilites arise.

    - An impostor system is being created (WIP) to display the further away trees and grass as needed. Initially will be based on a particle system (though this is TBD as the system development progresses)

    - A system to render the tree prefabs for billboarding and for sprite sheet creation is adapted specifically for the system (WIP - i took the base from my Toon Effects Maker asset that has animation to spritesheet rendering abilities and adding various extra features like multithreading for the only rendering of billboards if needed, sheet creation for optimized particle based display etc, some of these features may come in v2.x cycle than v2.0 though, v2.0 will have the base render to texture ability which will support the base functionality of the Impostors system)
     
  50. GingerDr73

    GingerDr73

    Joined:
    Sep 25, 2013
    Posts:
    21
    Sounds good, looking forward to trying this out sometime soon. Although personally I'm not particularly interested in the terrain generation system but the tree billboarding and impostering sounds great.