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. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    The terrain system main purpose is to showcase an endless randomly generated world and the grass on the fly planting on the procedural terrain based on rules (than the pre-paint of grass case), plus the new batch copy and pooling systems in action in a vast world for low memory consumption.

    Whether the endless terrain demo and terrain scripts will be included in the asset is still TBD.

    The billboarding base version is done and i now i am doing the billboard renderer, which will automate the billboard texture creation (and create an altas as well for the various grass types). When this is done i will post the first version of the demo.
     
  2. nasos_333

    nasos_333

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

    The new in v2.0 Billboard Altas generator is now fully working, it grabs the list of the used grasses, plants and renders them in texture and combines the result in a customizable atlas, which will be used in the Impostor billboards system. The process is fully automated.

    This system currently grabs one aspect for each grass type, though can easilly be extended later to create other approach choices for impostors, like cross section or fade based on direction ones. These will be evaluated for v2.x cycle of the system.
     
  3. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Video from the Demo WIP of the new InfiniGRASS v2.0 system, the goal is to have a vast open streaming land and next generation foliage with minimal memory consumption and optimal performance.

    The demo showcases the new streaming and pooling system in InfiniGRASS v2.0 in the very rough terrain case (most stressing and demanding case).

    Flat terrains (or flat terrain areas) are way more forgiving as there can be near 100% pooling used and near zero memory consumption, so this demo showcases the most extreme case where there is both a vast terrain and is irregular to a big degree.

    The base systems are all in, though a lot more optimizations are possible, e.g. if land tiles are larger (thus must be planted with much more grass-trees) a radial planting system will be devised so the planting happens gradually and starting nearest to the player as well.

    Another idea on further optimizing the real time planting is to plant a first big area around the player and then plant the terrains he is moving towards gradually as priority, with a route estimation algorithm. These extra details will come in v2.x cycle for even further optimization (or v2.0 if i manage to have this ready soon, as the first step which is decoupling it from streaming and terrain generation is already done and the flags to notify planting is implemented as well, thus an iterator with custom rules is generally easy to adapt)

    Another thing missing is the pool restrictions, for example now the pool of items can get very big thus creating some extra delay when the generated lands are vast in number, but this can easilly be limited to get items as needed to cover the immediate throughput needs, so the list does not create issues.

    And finally i see that some operations like material names grab etc can be cached for further reducing GC collection due to those, so is another optimization that will go in. On the DX11 side the new in Unity 5.4 GPU instancing is also evaluated for v2.x versions

    The demo is software recorded (Bandicam) in my 2010 PC (non gaming core 2 duo CPU, xbox one level GPU)

     
    Last edited: Aug 31, 2016
  4. nasos_333

    nasos_333

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

    New left mouse button painting is now available as a hotfix for v1.7.6, for everyone interested.

    I have managed to find a way to use the left mouse and the only limitation is that other objects cannot be selected when the Grass Manager is selected and is in paint modes (grass, rocks and fence). I can send the patch for v1.7.6 immediately on PM request.

    This will be the default painting mode in v2.0 as well.
     
  5. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269









    WIP from the new Sky Master ULTIMATE 3.4 and InfiniGRASS v2.0 demo, for procedural world and weather conditions generation.

    Based on this new combination of systems, a lot of weather etc functionality will be fine tuned and new system will be created to tie the climate, foliage and land together in various ways for the procedural fully automated creation of an evolving world.
     
  6. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269




    WIP videos from the new Sky Master ULTIMATE 3.4 and InfiniGRASS v2.0 demo, for procedural world, weather conditions generation and automatic foliage placement and growth.
     
  7. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269





    New v2.0 streaming vast world
    demo WIP.

    The WIP is now focused on getting the most out of batching when in combination with pooling, using a grass placement AI that makes sure the optimal result is selected based on landscape and other conditions.
    .
     
  8. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    still i did not fix the problem.
    that's why i started a fresh test setup. if i add ethan the std character from unity.
    a world scale of 3 is plausible. the wind and turbulence parameters and everything works with this.
    even the stop motion parameter is plausible but it is only adjusting the distance from the player effected by this bulging effect and not the height. the height is always off.i am pretty sure that i use the right parameters and adjust them.
    i really would like to have skype session if it is not to much to ask for. at the moment i do move, so i am kind of busy but ill send you my skype contact soon.

     
  9. nasos_333

    nasos_333

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

    I did some more testing with an even smaller scale and the specific grass type and indeed the Y offset is not bound at this scale, so i created an external variable in order to control it per material (since the low grass will require a smaller amount of Y offset than the higher grass etc)

    The default (hardcoded before) was 3, i recommend a value between 0.7-0.8 for low grass and 1.5 for the higher one (e.g. first grass type)

    I will send the updated shader in PM. The variable is called "Interaction Max Offset in Y axis" and can be regulated per material to fine tune the effect (in "InfiniGRASS Durectional Wind ROOF" shader)
     
  10. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269












    Streaming world demo WIP with InfiniGRASS v2.0 and Sky Master ULTIMATE v3.4 for evolving volume clouds, volumetric lighting and sky-atmosphere-fog shading.
     
  11. nasos_333

    nasos_333

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

    It has come to my attention that in lower scales (e.g. World Scale 1-5) there is an issue with the Interaction effect of grass, which may be very high in Y axis (independtly of the "Stop motion distance" variable that adjustes the effect radius from the player, except when it is set to zero).

    I have devised a new version of the "InfiniGRASS Directional Wind ROOF" shader for that purpose, which has a controllable Y axis offset for the interaction and i can send immediately upon PM request.

    I have also added an external variable, so the Y offset can be adjusted per material for fine tuning (e.g. 0.8 in the low grass case in 3 world scale). The offset variable is named "Interaction Max Offset in Y axis" (in "InfiniGRASS Directional Wind ROOF" shader).

    The default value (hardcoded before) was 3, i recommend a value between 0.7-0.8 for low grass and 1.5 for the higher one (e.g. first grass type)
     
  12. nasos_333

    nasos_333

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

    The final stage of optimization is now completed and an infinite world is now supported for v2.0 of InfiniGRASS.

    Also i have adapted the new demo and brushes / world to a much lower than v1.x scale, close to 1:1 so the issue
    with scaling in shader in lower scales etc will all be handled on release. I am also adapting all brushes and shaders for that purpose.

    A revised version for the painter is also available in Google Drive download upon PM request. The new version is updated to paint with left mouse button and not paint when ctrl (look) or alt or ctrl+alt (pan mode - latest addition)
    are active. This is especially usefull when a pen is used for painting and in certain Mac systems (command+alt is
    also handled).
     
  13. Knightmore

    Knightmore

    Joined:
    May 11, 2012
    Posts:
    227
    The more Screenshots I see, the more I want to get my hands on 2.0 together with SpeedTree Trees. Can't wait to get it working under the Sky Master ULTIMATE "roof" :D

    My texture only ground is ready and waiting for you Nasos :p
     
  14. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Thanks, i am working around the clock to get it all done, there is a lot of things still to go, but the core is working great and is super optimized in both performance, streaming and ram usuage so it is a big morale boost for the rest of the work :)

    I hope to have the first demo early next week too, with a super stress case which will include an infinite world, multiple grass and tree types, streaming thick foliage and forests, lots of irregular terrain, real time terrain creation and planting on the terrain with AI, pooling and min-max batching (max batched items for top performance and min actual batching using pooling and the grass placement AI and layering), GPU based terrain erosion, road coverage etc, plus Sky Master new v3.4 volume clouds and volume lighting, fog, weather effects and water.
     
    Knightmore likes this.
  15. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    i have managed to make a nice custom brush. when i transport this to another project of course i do copy the prefabs over but how do i get the setting for the manager with all the brush settings to another project??? which file is it?

    another question. the normal map does not have to be any effect!? the specularity is somehow pretty flat. i guess a bending via normalmap would be very helpful.

    in the picture fern in foreground has normalmap. background is infinigrass

    edt: in playmode there is a slight normal effect

     
    Last edited: Oct 11, 2016
  16. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    finally! and even the interaction is smooth!
     
  17. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    That looks amazing :), very nice brush

    The specular in InfiniGRASS shader is inverted to make the feeling of backlight in all grass types, this is not possible if the normal is used as it would normally be, as the back light would not show in front. So it a faster way to do tranlucency. That said the system can use other shaders and i plan to add more shader options as well to handle various grass types in various ways.

    The v5.4 shader (in the works) will also be pure deffered mode, plus GPU instancing ready and have various other features.
     
  18. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    the fern is custom the rest is your brushes. sounds good to me i think shading whise there is a lot of room for improvement even if its by far the best for unity at the moment.
    what about transfering custom brushes to different projects - what is the propper way?
     
    Last edited: Oct 12, 2016
  19. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    If you need to move just the prefabs, you can select the folders and create a unity package

    If you need the settings in the Grass Manager too, you can copy the desired scene, remove - erase grass and package it aloneside the brushes and prefabs for example and then copy the manager in the scenes needed in the new project.

    You can copy with the grass too, but keeping a template scene without grass and just the brush settings is advised to be on the safe side.
     
  20. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    okay makes sense - thought they are maybe stored in an external file/meta/xml.
     
  21. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269




    They are per manager stored, though since i do have a parameter save/load method (and buttons in Inspector) it would be nice idea for v2.0 to have a file based import / export as well based on that system that can address all parameters en mass, i will see to it for the v2.0 features.

    I also post a sample of what the demo will cover (various grasses, snow, trees etc), it uses Sky Master for sky-clouds-water, InfiniLAND for terrain (this is the CPU version in the pics - GPU is implemented now, pics below) and InfiniGRASS v2.0 for on the fly planting, grass making and batching - pooling.

    http://imgur.com/1ACsHnd
    http://imgur.com/qkLZpYM
    http://imgur.com/fQVfnHC
     
    Last edited: Oct 14, 2016
  22. nasos_333

    nasos_333

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

    A first Windows refined demo of the InfiniGRASS v2.0 system, that addresses some of the issues i discovered from the feedback from the first demo (First v2.0 WIP demo: https://dl.dropboxusercontent.com/u/79230236/INFINIDY/INFINIGRASS/v2.0/STREAMING Test1 WEBPLAYER.html, this Webplayer demo has a few issues with scaling, on some systems the grass gets a strange very large scale which i could not recreate on my system yet and snow does not appear in shadowed areas).

    InfiniGRASS v2.0.7 early WIP demo (real time rule based planting, batching, pooling, infinite world memory handling - Windows Demo): https://drive.google.com/file/d/0B-QCdE1dswQBNTJCakY5S0cwalk/view?usp=sharing

    This is an early preview and has multiple performance boosts to be finalized (e.g. planting is now happening all around the player, the planting code is using multiple passes which can be condensed to one etc) and multiple grass placement - batching - density - sizing variance etc refinements to be done.

    Feedback on the new demo is appreciated and will help a lot in the further development and refinement of the procedural system.
     
  23. Doctor06

    Doctor06

    Joined:
    Nov 1, 2014
    Posts:
    31
    I am wanting to apply this package to planetary terrain. I can see that it is possible to apply it to a sphere, but the problem is that when you have a massive planet, you have to deal with LOD and sub division terrain which does not allow me to apply Inifigrass because the terrain does not yet exists from far away.
    Is there a way to go about this?
    I also see that Infinigrass v2.0 does projection now which leads me to think it might solve my problem. What do you think?
    What is the ETA for v2.0? do you have any beta testers?
    Great work by the way! i love it!
     
  24. nasos_333

    nasos_333

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

    The new projection mode will be for planar surfaces (at least for the first version 2 release) so would not help in round planet (i guess in its upper side would work though). The system can be adjusted later to support arbitary axis, but this is more complex and requires knowledge of the planet region as input as well to adjust the method, plus a bit different hanling in the shader etc. The idea with this is that it will still be a planar projection, but the plane will be the tanget of the planet region player is currently in and adjust the grass projecting in this plane.

    There are also other systems of v2.0 that can help a lot, like the new faster streaming mode for example.

    The current system can prefab the grass manager along with a terrain chunk and you could ungrow the grass, then prefab and use the gradual grow option to stream the ungrown grass along the terrain chunks ahead of the player - grass grow distance (so with zero spikes) and then the grass would grow as the player moves close to the grass patches. This though does full batching in the grass that comes into play and even though is multithreaded, depending on density can create spikes.

    This is one of the major aspects v2.0 will solve using a much faster streaming technique, plus pooling and memory saving modes that help avoid batching as much as possible. I will also have a full procedural mode that is for planar surfaces, which can also be extended later to sherical planets (it is using raycasting, so it is a matter of creating the raycast array differently and would not be very hard to add in v2.x cycle as it is straightforward)

    Let me know for more questions and details
     
  25. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    hopefully there will be good tutorials for all new features/ workflows. i had a really hard start. still the customization part is pretty much of a "hack" you should have presets/templates for different species/types of foliage. sure i can alter your presets but its somehow not straight forward. you have a really great product here dont get me wrong.
     
  26. nasos_333

    nasos_333

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

    Sure, these are all considered for v2.0, the goal is to make everything easier, e.g. Mass Planting is now much easier and 100% stable indepently of grass amount, plus there are automated modes that take all work away from the user.

    Converting already painted Unity terrain grass-trees to InfiniGRASS types is also now possible so wont have to paint the grass again.

    This reasoning will extend to grass types, with conversions from Unity grass-trees to provide new equivalent and optimized InfiniGRASS brushes (that may not come in 2.0 though but is 100% planned for v2.x cycle) and a brush edtitor (which will still use Unity editor though, but is planned to automated the instantiation to the scene and application back to the prefab).

    The reason why i have not created a brush editor yet, is because it is not 100% clear what it will do, as the Unity editor itself is the grass editor and the system is made to have absolute customizability so uses all Unity editor features for the editing, but i have though that i can guide a part of the process so the parts where the prefabs must go in the scene for editing (or created new or copied from presets for new brushes) and then applied back to the prefab and to the grass grower could be automated. I will persue that as well for v2.x.
     
  27. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    InfiniGRASS v2.0 any type of ground automated adaptation mode (real time included)
    (Sky Master ULTIMATE v3.4 on sky-clouds-lighting-volumetric effects)




    UPDATE:




    WIP of v2.0, a new breakthrough feature has been added (shader based grass terrain adaptation) that will further help reduce draw calls and improve streaming performance, plus increase the usuage of pooling.

    This new feature will allow the use of any size of batched group on any kind of underlying terrain and also will offer real time adaptation to terrain changes and even any object on scene if required (thus grass can adapt on rocks or any other surface as well automatically)

    And a video showcasing real time the area in the pics above, with dynamic grass handling. The video is software recorded on my 2010 PC (core 2 duo CPU, xbox one level GPU).

     
    Acissathar likes this.
  28. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Does it performs on mobile ?
    Does grass has an option to colorize bazed on terrain color or use some tiling color texture to distribute grass color variation ?
     
  29. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Hi,

    Generally the system is targeting the highest end visuals with great performance ratio, so while i support mobile (including a SM2.0 shader for lower end mobiles) and the system will run on mobile, it is not expected to have anywhere close to similar results with the dekstop, so the mobile should benefit from the batching, but would have to be downgraded in other aspects to have meaninful use (e.g. shadows could kill mobile performance and this would not be relevant to InfiniGRASS for example but a general limitation)

    In v2.0 i have extra options to control shadows etc and this should make it even more mobile setup friendly and pooling that should also help a lot in mobiles.

    I have shader based color variation, with user controlled frequency and coloration. Also a grass variant that can grab ground texture color (not apply to Unity terrains) and match the underside vertices with it. In v2.x cycle there are many more plans for varying all grass properties with various ways, including top down rendering of the terrain to grab color and vary the grass etc

    EDIT: A sample of the shader based coloration is shown in the above posted pic, the grass is one type and gets colored from green to purple and the frequency, amount etc are controllable
     
  30. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    How does it performs compared to Unity default grass with same low settings in a similar scene with similar grass density ? Does it has any advantages ?

    Nice.

    Using a top down terrain rendered smoothed texture 512*512 color would be great.
     
  31. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    I have not done tests vs Unity grass, though i am sure it can be faster depending on batching level, as the batching is customizable, so you can have as big batches as needed to lower draw calls. This is for the base grass that is closer to the Unity one, the other types may be faster (vertex) or slower (complex mesh ones) depending on case and overdraw and each has its ups and downs in other areas (like memory consumption etc)
    On the terrain rendering, that is the plan (with controllable reslution by user), i will update this only when nessesary as well, for maximum performance in inifite worlds (where the terrains will change).
     
  32. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    InfiniGRASS 2.0 WIP on procedural endless worlds, with memory management, automated grass planting with focus on irregular surfaces and next gen grass with maximum batching (with the latest auto placement feature, the batches can be very big on both flat and fully irregular grounds, maximizing performance and keeping the perfect adaptation and grass placement variety and possibilities).

    This video showcases the endless world auto creation and grass placement possibilities.

    The video is software recorded on my 2010 PC (core 2 duo, xbox one level GPU) and is WIP in grass density and batching grouping optimizations (not yet fully optimized for the latest auto placement on any surface system, which allows much bigger batches for much less draw calls).
     
  33. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Performance using the new auto ground adapt system, which allows bigger batches to be used anywhere on the map without rebatching (fastest mode and also insreases streaming speed and lowers memory and CG allocations exponentially using the new in v2.0 pooling system.

    The metrics above are without most extra optimizations (which are listed in the pic) and reflect only the core system optimization (which is the most important one and is beeing adapted for the new procedural demo currently)
     
  34. doublegumbo

    doublegumbo

    Joined:
    Oct 24, 2013
    Posts:
    53
    If this has been answered earlier in this thread, please direct me to it, but how do you disable grass from casting shadows?

    I've tried ticking / unticking the below boxes in the Infinidy Grass Field script attached to the prefabs, as per the manual's instructions, but these settings don't seem to have any affect on the grass's shadow casting ability. At least, not the grass that's included with the package.

    grass shadow help.png

    Any guidance would be extremely useful.

    Thanks,
    -G
     
  35. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Code (csharp):
    1.  
    2. //Put in ControlCombineChildrenINfiniDyGrass.cs variables on script top
    3.  
    4. //v1.8e
    5. public bool ShadowControl = true;
    6. public bool ShadowsOff = true;
    7. public bool ShadowsOffprev = false;
    8. public int ShadOffatLOD = 1; // control the LOD where shadows will be cutback
    9. int prevShadItemCount = 0;
    10. int prevShadItemCount64 = 0;
    11.  
    12.  
    13. //Put in LateUpdate() in ControlCombineChildrenINfiniDyGrass.cs
    14.  
    15. //v1.8e
    16. if (ShadowControl) {
    17.    if (ShadowsOffprev != ShadowsOff || prevShadItemCount != Destroy_list.Count || prevShadItemCount64 != Destroy_list64.Count) {          
    18.  
    19.            if (ShadowsOff) {
    20.              if (Application.isPlaying) {
    21.                Component[] filters = GetComponentsInChildren<MeshFilter>(true);
    22.                for (int i = 0; i < filters.Length; i++) {
    23.                  if (filters [i].gameObject.name == "Combined mesh64" || filters [i].gameObject.name == "Combined mesh") {
    24.                    MeshRenderer renderer = filters [i].gameObject.GetComponent<MeshRenderer> ();
    25.                    string MaterialName = renderer.material.name;
    26.                    int LODlevel = -1;
    27.                    if (MaterialName.Contains ("LOD2")) {
    28.                      LODlevel = 2;
    29.                    }
    30.                    if (MaterialName.Contains ("LOD1")) {
    31.                      LODlevel = 1;
    32.                    }
    33.                    if (MaterialName.Contains ("LOD0")) {
    34.                      LODlevel = 0;
    35.                    }
    36.                    if (LODlevel == -1 && ShadOffatLOD < 1 || LODlevel == 0 && ShadOffatLOD < 2 || LODlevel == 1 && ShadOffatLOD < 3 || LODlevel == 2 && ShadOffatLOD < 4) {
    37.                      renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
    38.                    } else {
    39.                      renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
    40.                    }
    41.                  }
    42.                }
    43.              }
    44.            } else {
    45.              if (Application.isPlaying) {
    46.                Component[] filters = GetComponentsInChildren<MeshFilter>(true);
    47.                for (int i = 0; i < filters.Length; i++) {
    48.                  if (filters [i].gameObject.name == "Combined mesh64" || filters [i].gameObject.name == "Combined mesh") {
    49.                    MeshRenderer renderer = filters [i].gameObject.GetComponent<MeshRenderer> ();
    50.                    renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
    51.                  }
    52.                }
    53.              }
    54.            }
    55.  
    56.            ShadowsOffprev = ShadowsOff;
    57.    }
    58.    prevShadItemCount = Destroy_list.Count; //Added_items.Count;
    59.    prevShadItemCount64 = Destroy_list64.Count;
    60. }
    61.  
    Code for disabling shadows on a hardcoded LOD level, the additions must go in the batcher script code as noted above.

    Put "ShadOffatLOD = 0;" to disable shadows completly (e.g. when LODs are not implemented or need to completly remove shadows for mobile etc)

    The shadow control process will be streamlined in v2.0 to be controlled per brush (same code, and enable-disable the mode by setting and saving the mode setting for each brush in the Grass Manager settings)
     
    Last edited: Nov 7, 2016
  36. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269

    Performance using the new auto ground adapt system (WIP)
    , which allows bigger batches to be used anywhere on the map without rebatching (fastest mode and also insreases streaming speed and lowers memory and CG allocations exponentially using the new in v2.0 pooling system.

    The metrics above are without most extra optimizations and reflect only the core system optimization (which is the most important one and is beeing adapted for the new procedural demo currently)

     
    zenGarden and Knightmore like this.
  37. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Will you make a new demo without including your others plugins to be able to look at performance of infinigrass only ?
     
  38. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    Sure, i can do a switch to turn off everything else in the demo.
     
    zenGarden likes this.
  39. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    InfiniGRASS v2.0 WIP, grass shaping and placement (using the new Full procedural mode in the pics sample). The rules and methods of procedural grass placement will also apply to the editor side placement (so can be used as base for further refinement)
     
  40. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Real time grass eraser tool, shader based to shape grass as needed at a shader level. This is used over the batch level erasing, to further refine grass as required with more detail.

    The eraser is also used to shape grass, e.g. bend it and change height and other functionalities.

    The tool will also be used in the editor time to refine the grass.

     
  41. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    Grass shaping (v2.0 WIP)

    This system can be used for grass shaping (height, bending etc) and for permanent grass modification in real time by players, and can support multiple players moving through the grass at the same time and modifying it, based on speed and other properties.
     
  42. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269







    InfiniGRASS v2.0 Beta demo WIP. Everything in the pics is procedurally created and controlled (e.g. grass can be adapted to ground changes and on chosen scene objects in real time, e.g. can build a castle and grass could adapt to some of the walls or ruins etc as needed dynamically).

    All items in the pics-demo are using ARTnGame assets (land-sky-foliage-clouds-lighting etc)

    Biomes can be changed on the fly (so emerging lands can be a different biome). The grass can get permanent shaping in real time, by mouse or player(s) motion (including height and bend control, for removing or extending the grass or anything between etc).

    The demo so far has two biomes included. Biome parts can also be changed between biomes for any kind of variance (will be implemented in the next demo version).
     
  43. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269



    InfiniGRASS v2.0 WIP, snow and various grass types (InfiniGRASS v2.0 procedural world demo with Sky Master ULTIMATE v3.4)
     
    jason-fisher likes this.
  44. jason-fisher

    jason-fisher

    Joined:
    Mar 19, 2014
    Posts:
    133
    Looks ready, time to release! :D

    I have a few voxel octree planets that this sounds perfect for. :)

    Would it be feasible to use some kind of simple average color-based particle system to represent grass from greater distances/orbit?
     
    Last edited: Dec 5, 2016
    nasos_333 likes this.
  45. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    The demo first version is almost done, i have now pre-populated the pool so the get in scene time is reduced to minimal (and added tools to pre-populate the grass pools in the editor easilly as well)

    I hope to release it this week to give a first feeling of the system.)
     
  46. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    i wrote you regarding to the specular higlights on the foliage. i understand how you achieve the translucensy effect for your shader. anyway did you have a chance to take a look at the "adam" customized std shader for there foliage?! i really like how the light reacts to the normalmap and the resulting specular highglights
     
  47. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269


    I have worked on an extra variant with specularity in vertex grass and this will be available in the coming demo, which should be ready this weekend hopefully, to sample more variants in lighting possibilties.

    I have not checked Adam one, i will surly do so for later versions as well, since shaders are a big chapter and will be wip in v2.x cycle a lot.

    I have not integrated the emulated translucency in this new shader though (since i use the specular to emulate it) and i am looking at ways that i could combine the two in one for the v2.x cycle.
     
    Last edited: Dec 9, 2016
  48. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    267
    the adam shader is definitely worth it to be checked out. i am very excited for the new 2.x stuff and the new demo.
     
    nasos_333 likes this.
  49. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,079
    I'm going to use InfiniGrass again. just have one question, can I add my own grass to InfiniGrass? I have some good grass textures but don't know how can I add those textures to infinigrass.
     
  50. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,269
    As a first easy step, you can find the type 0 grass material in the assets and replace the texture there, this grass uses quads so it should work with most textures with some tweaking (i have 8 textures changed directly on this same material-brush in the upcoming demo too, so is also an easy way to change the whole grass styling in one grass type in one go)

    Then can copy this brush (main grower, bark and branch) and define a new material as well, for making individual brushes based on this.

    Also make sure to check my tutorial videos for constructing brushes (linked in the asset store page, videos section)

    The grass prefabs are handled like any other Unity prefab, so you can place various meshes as well, besides changing materials and textures. The edit of the prefabs also is done like all other Uniy prefabs (e.g. drag to the scene, edit and Apply changes)

    Let me know for further questions and details
     
    ksam2 likes this.