A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Separate names with a comma.
Discussion in 'World Building' started by MadeFromPolygons, Feb 13, 2019.
Is there still a unity fix to this issue???? cuz it isnt working even in 2020.1.1
@camta005 There will be a production ready solution for painting details on current terrain with custom ShaderGraph shaders in 2021.2 with HDRP and URP support
The built-in "Grass" mode will not be supported, but recreating that effect in ShaderGraph is straight forward.
is that a specific terrain tools or a general (gpu) instance painter?
That's stupid, completely and utterly stupid. Nobody is asking for this stuff right now. I mean hey cool make the new superior grass system and when it's done it's done, but how about make the original one work now without making desperate people have to go spend $79 dollars on the asset store for a feature that should for all intents and purposes be supported or have to wait 3 years like I have or have to wait another year for 2021.2 to come out. URP does it, so should HDRP, there's no excuse for this.
I'm sorry for the rant, but it is truly, very truly frustrating to be waiting years, have heard multiple Unity devs say 'oh we're working on a new terrain system with layers, grass will be paintable on said layers, etc' just to hear it's been canceled/put on hold for other important things.
I have almost no faith in what the teams say any longer, because when it comes to grass it always seems to get pushed to the back burner. Every single time. Yes all these new features coming are great! But come on, we need to at least be able to make a beautiful environment to give these new features any real value.
Yes the moon is pretty, but eventually staring at rocks and dirt all day is going to bore everybody.
After spending the better part of 4 days researching solutions for this completely ridiculous problem, as of HDRP version 10.3.1 the options that a developer currently has are:
- Purchase the Vegetation Studio or Vegetation Engine asset(s). Minimum for these is $60 USD, and you're at the mercy of another developer.
- Create a grass prefab and use the hacky workaround of placing them as Trees. Not a great solution, unsure about how good performance can be with this.
- Write a custom terrain shader solution for a feature that somehow has been glossed over for nearly 3 years.
I've decided to go with the grass-as-trees approach for now, and I'll see about doing some performance benchmarks.
@jeremyco do you have any info on how you connected your alpha map to the position in VFX Graph? I’m currently trying to build what you said you were able to accomplish with VFX Graph and splat maps, but I can’t figure out how to make that connection to have the grass show up on just my splat map. Any suggestions to get me going in the right direction?
I know another one: switch game engines.
Seriously, though... The HDRP itself should've never been called "production-ready" in 2019.3+, considering it lacks such a fundamental thing. Just to put it into perspective: "To be production-ready, a render pipeline needs to provide tools for artists to express their creativity" was said in a blog post last year.
It does enable you to do so... you just have to show restraint...
It's production ready- as long as your production doesn't have foliage, water, impostors, custom post fx, tessellation, real-time GI, or any kind of open worlds.
That sounds awesome. It is 100% compatible with games that are still in concept stage.
So after some extensive testing of all the non-paid options, I've found some more frustrating discoveries as well as a temporary solution.
Polybrush doesn't work on Unity Terrain, so placing them in a reasonable manner is out of the question.
Using trees-as-grass seems to be the only reasonable solution for the current HDRP mess, however there seems to be no way of altering placed trees rotation, so your grass will always grow perfectly vertical.
Trees-as-grass skyrockets draw calls, however it doesn't seem to introduce any actual lag.
Unity very much needs to get the terrain system sorted because it is a completely broken mess as it is currently, and having to use an already hacky workaround to get something as simple as grass working is just silly and makes me worry that if the last hacky workaround (replacing build in billboard shaders for grass) got patched out, it feels like I can't really trust further updates to not break more stuff.
The only other viable solution I can foresee possibly working is using the VFX graph to place grass on terrain. I'm not certain how possible it is to control where grass would be painted with a solution like that however.
TLDR; Want grass in HDRP? Use trees-as-grass and deal with its rubbish look or pay 60+ dollars to get a solution.
I believe it's now in alpha, 2021.2. I think you have to download it from github to test, not sure though. I couldn't find the github pull for it. so maybe it's not in yet.
This just in . . .
and the status are "released" so. . .
Grass still not working on Unity 2020.1.3f1 HDRP 8.2.0, you have seen a forest without grass before and I really need some grass for my project
First line on that link says: "This feature has landed and is available since 2021.2 Alpha 1."
The Unity and HDRP version you're using have both stopped being updated with new features a while ago.
The new Terrain SRP Details release in 2021.2 Alpha 1. does not include support for the specific grass texture details.
what does that even means?
I'd assume it's this what they meant with "specific grass texture details":
From how it sounds, Grass in HDRP should now be a Detail Mesh instead:
(Source: same link as above)
I haven't tried it yet, but I read this to mean that the grass billboards are not supported. In the Terrain component under the details tab, you can add a "Detail Mesh" or a "Grass Texture". The detail mesh is just painting a mesh(which could be grass-like) and should now be supported in HDRP. The "grass texture" defines a simple diffuse texture and some settings like noise and color variation, and the (built-in) rendering system will generate billboards and a material for you. The problem is that HDRP does not support the shader that the grass billboard material uses.
I don't really understand why this is so hard for Unity. I know billboard grass textures are kind of old-school, and you probably want to use detail meshes(if not a different system entirely)- but on the other than it's been how many years now, and HDRP still doesn't have feature-parity with the built-in renderer.
My guess is that this is due to the built-in billboard implementation being very hardcoded in the depths of Unity's C++ catacombs. Almost everything about it is a hard black box: the billboard geometry generation, the name of the shader it looks up, the pass the shader must contain, when the draw commands are issued, the generation of the texture atlas which contains all your billboard textures.
Now, Unity could simply read the information from the inspector and sidestep all that stuff, but this seems a classic case of the perfect being the enemy of the good: the billboards are quite dated, so surely people have great ambitions for making something far better... which never comes out.
I read that @valarus mentioned the GPU instancing already; here is my sample implementation that works rather well using this approach, with the terrain detail meshes and HDRP:
I tried rather hard to not add additional functionality in my script,so that you can just add the script to existing terrain systems with detail information and do not have to rely on me expanding functionality later. Billboards do not work, just detail meshes (mostly because this is just a hobby project and I do not have time, not because it is hard to add them).
I did not try too hard to create pretty models. It should work with any shader that supports GPU instancing. Tested with Unity LTS 2020.3, HDRP 10.5.1.
EDIT: Billboarding and detail meshes should both work now.
As the new version of the repository contains a lot of new updates (compute shaders with culling, and butterflies), I created a new thread here:
Maybe I'm misreading, but I thought this was resolved?
I'm in 2021.3.7f1 / HDRP and still getting white grass. What am I doing wrong?
Unity terrain does not support Grass Texture as mesh anymore in HDRP. You need to add detail mesh only and it only works starting from a specific version up of Unity: https://docs.unity3d.com/Manual/terrain-Grass.html
Believe me, this was a feature I was waiting for for a very long time. I think this works starting from 2021.3 if I recall but not the grass textures, you will need to use mesh details. It's pretty optimized and is much better than using grass as trees lol, but if you still insist on using grass planes maybe try the hack fixes from this thread or just import some planes yourself and use them as detail mesh!
Anything changed? Or we still are missing just grass in HDRP?
Detail distance for grass meshes only seems to work up to 34 meters - is this a known limitation? If so, grass textures would be useful for adding grass further out.
Relating to the Detail Objects system, I'm making a Procedurally Generated game, creating terrains and Detail Objects in code at runtime, and since the updates that came in 2021.2, I can no longer procedurally generate Detail Prototypes in a Build. (They appear in the editor, but once you make a build they're not working correctly - Billboard Grass doesn't appear at all, and Detail Meshes are shaded wrong and arent' affected by wind.)
I've made an example project and video and reported the issue to Unity, which they have verified as true, and accepted into the Issue Tracker, and they'll look into it sometime (I assume!).
If this is the sort of issue that affects you, please vote for it, as I think that this will hopefully help the Unity engineers to make the Detail / Grass system more robust and work more fully overall.
If you'd like to see this issue fixed, please got to this page and click on VOTE ON THIS ISSUE:
If this doesn't affect you, apologies for taking up your time.