About a month into unity now. After watching some tutorials and learning a few basics, I’ve started creating my own terrain assets. Taking what I’ve learned and making changes to reach what I have here.
The video contains a few assets I’ve created. Including my own shaders and models.
I’m just looking for some feed back and constructive criticism to help improve my work. Thanks!
P.S: If the video is blurry on play, just rewind and play again. Seems I’ve had to do this a few times.
Quick note: looks like you are using the old-fashioned grass option (based on providing a texture). While this is an easy way to get started, over the long haul it will pay off to use Detail Meshes instead, since you’ll have a lot more control over them – you’ll be able to use your own shaders, to control how they fade out in the distance, and so on.
If you’re just getting started be aware that the scene as shown will struggle on mobile hardware: there’s a lot of overdraw with this level of density in the grass and that’s pretty gnarly on mobile devices. A scene like this will be fine on mid-upper range hardware but it’ll likely struggle on all but the beefiest phones.
It’s actually a detail mesh used not a plain texture. Which does contain a custom shader I made to control terrain blending and color along with changing the blade tips to create more variation. Detail distance is pretty low. About 40 units. Overall the grass generates about 80k verts on any given view. It’s not really a lot of detail but more so of how it is blended. The shader uses gpu instancing, which I read is better for mass items like this. Please correct me if I’m wrong.
I’ve also been working on newer (better) tree models. I’ll try and post an updated clip showing them once I finalize them.
I’m not really going for mobile devices but is something I’ll keep in mind.
Thank you for the reply. I’ll definitely keep what you’ve listed in mind.
When I update the clip I will include performance specs so that people could help with optimization if needed.
GPU instanced details (with custom meshes) is definitely they way to go, much more controllable than the older texture-based grass. Since it’s you’re own shader, one easy thing to make sure of : for mass-duplicated stuff like the grass, always prefer alpha test to alpha blend transparency, the runtime perf is significantly better.
On the purely subjective level, I think my eyes expect to see a value gradient on the grass, darker at the bottom to lighter at the top. Most of the time the base of the grass will be getting less light because it’s occluded by its neighbors, a controllable gradient along the height does a lot to increase the feeling of depth. It might also help to add a color shift in the distance to increase the foreground/background dynamic in the scene. Both of these things however are just random art feedback, not tech stuff.
I’ll have to check into the alpha test option my next time i have available to work on it.
As far as your suggestion for the grass…
I had a variant that offered near and far gradient to shift hue but it made the loading in of mesh way to noticeable. Like little pop corn bursting out once it was in detail range so in order to combat that I just made a texture with several but subtle color variants into that the grass samples color from. Then controlling the blending of the tips made it almost look seamless as it loads in. I can make the color variant more noticeable by texture or have the grass more prominent by changing tip blending values.
I just chose the current setup as it looks more dense but also uses less. Making the loading in nearly unnoticeable.
I still have a lot of work to do. Once i upload a new clip though i don’t think you’ll recognize it. It has definitely changed a lot with much trial and error. I still have so many things to learn shader wise to correct a lot of things.
I’ll keep you posted! Thank you for your advice. The aplha thing especially as i did not know of it.
This thread explains the way the grass chunks get drawn in:
I’d definitely consider adding an in-shader fade using dithered alpha to avoid the jarring draw-in – basically extend the draw range, but fade out the individual models within the potential range so you don’t get the jarring appearance of big blocks of grass. Add in a color fade to match the underlying terrain, and consider gradually forcing the vertex normals to look up (which is what most of the ground normals do, so this makes the terrain ↔ grass match easiier)
Cool! All of the tricks I mentioned are doable in shadegraph, if you grab the URP version of the terrain samples project there’s a shadergraph in there you can take apart to see a bunch of tricks for distance fades, faking subsurface, and doing vertex animation
Thank you, I’ll take that as a compliment. It’s come a long way since the last screen shot. I haven’t posted any updates because i wasn’t getting much feedback.
I’ve created a pine forest environment that compliments the other forest. I also updated the mountains and cliff models.
I’ll try and post a screenshot in next couple days.
Thank you for taking the time and looking and giving feedback.