Search Unity

HDRP Grass Warning

Discussion in 'High Definition Render Pipeline' started by alsharefeeee, Oct 7, 2020.

  1. alsharefeeee

    alsharefeeee

    Joined:
    Jul 6, 2013
    Posts:
    80
    Hi everone,
    trying to add grass to the terrain when I saw this
    HDRP Terrain.png

    "Current render pipeline does not support Detail shaders"
    Does this mean I can't add grass?

    using Unity 2019.4.11f1, HDRP 7.4.1 and terrain tools 3.0.1
     
    AntonioModer likes this.
  2. Drazok

    Drazok

    Joined:
    Jan 26, 2019
    Posts:
    9
    You can try to add grass as trees ;)
     
  3. alsharefeeee

    alsharefeeee

    Joined:
    Jul 6, 2013
    Posts:
    80
    Hmm...but the frame rate drop is crazy
     
  4. Drazok

    Drazok

    Joined:
    Jan 26, 2019
    Posts:
    9
    That's why I'm trying to get past it using DrawMeshInstanced, but I'm having problems putting shadergraph shaders into addressables...
     
  5. alsharefeeee

    alsharefeeee

    Joined:
    Jul 6, 2013
    Posts:
    80
    AntonioModer likes this.
  6. EJSainz

    EJSainz

    Joined:
    Mar 24, 2015
    Posts:
    30
    Also, try to disable shadow casting for grass. I had a 12000 draw call scene from which 9000 where draw calls for shadows. I just disabled shadowing for that material and worked like charm (from 30fps to 80fps).
     
    usamakzafar and alsharefeeee like this.
  7. HIBIKI_entertainment

    HIBIKI_entertainment

    Joined:
    Dec 4, 2018
    Posts:
    595
    Edit: as of 2021.2( tech stream +) HDRP details rendering with Shadergraph and GPUinstancing support can be utilised.

    Directly HDRP does not support rendering of the details using the terrain system.
    i certainly don't advise using grass as trees, simply because it would absolutely kill your performance and artistic ability on larger spaces, but you might be able to get away with it in some cases.

    However, there are solutions availble below ( bold = recomended for unity terrain users in HDRP)

    Personally me an my team have invested heavily into these two 3rd party assets:

    The Vegetation Engine (TVE) - Asset unification (shader conversion/PBR), interaction.
    https://assetstore.unity.com/publishers/20529

    Nature Renderer (NR) - Procedural instancing of terrain details (enables detail painting in HDRP), does not support trees ( yet)
    https://assetstore.unity.com/publishers/13640

    this will enable you to have detials painting in HDRP, with instancing indirect on anythign in the details panel.

    both quite happily support one another and can be used together or not.


    To simply paint your grass on terrain in HDRP, you'll specifically need either
    Nature Renderer
    or
    i believe GPU instancer but i havn't used it to confirm, however i believe it instances both details ( Grass/plants/Rock) AND trees, where as NR just does grass/plants.

    You'll also need Nature Renderer shader if you use NR alone which is a new product from them, that has a simpler conversion process similar toTVE but again just for grass/plants.

    Vegetation studio pro is probably the previous large package from previous unity versions, but works on its own system ( not terrain) utilising burst preview from unity but works on any object ( tree rocks grass etc that you wish to "place" on the terrain

    where things become interesting is that TVE can unify all of this and run all of the renderers if you have/want them.

    but i recomend do some research and look into exactly what you need as you'll be crossing off multiple requirements of a project, instancing - 3 seperate ones - trees/placement/unity terrain system.


    potentially for you the ideal world would likely be combining
    TVE ( NR details + GPUI trees).

    this would be lightweight.
    you can convert all of your terrain assets- props, prefabs
    to TVE that enables NR for grass-like details instancing and also enables GPUI for tree instancing
    and the workflow mirrors the use of unity terrain as you know it.

    TVE does bring alot to the table like wind, motion, masking, colouring, wetness, seasonal,size (shrink)
    NR shader, does a few similar processes to if you want something simple for just details only rendering working with NR and NR shader alone will be just fine.

    i'm obviously not here to tell you how to spend your money but absolutely research specifically what you need.

    Feel free to tag/message me if you need more input.

    for use case i can likely spawn about 3.5 million grass of 3k polys/tris on a 10km terrain with about 6ms on CPU GPU. now this is extremely arbitrary, and of course culling and large colider placements on level design is extremely important still.

    Hope that helps.
     
    Last edited: Feb 2, 2022
  8. alsharefeeee

    alsharefeeee

    Joined:
    Jul 6, 2013
    Posts:
    80
    Wow thanks! both of them seems very interesting. I read a lot of recommendation for Visual Studio Pro but didn't know it didn't support Unity terrain.
     
    HIBIKI_entertainment likes this.
  9. HIBIKI_entertainment

    HIBIKI_entertainment

    Joined:
    Dec 4, 2018
    Posts:
    595
    You're most welcome :)