AAA Grass

Post updated:

Once again we’re pleased to have the opportunity to have something to offer to this great community! This time, what you needed the most! [Purchase here]]([UE4] Advanced Grass Material)

Package intro and description


Example setups:

Performance test:
Running on a GTX 970 @ 1080p

Other products:

The thing that really matters most with grass is how it’s optimized give that UE4 still uses crapped deferred rendering and not forward. Can you give some stats on resource consumption and optimization strategies employed to ensure it looks good but doesn’t drop the guillotine on framerate?

Hey Ryan,

Sure thing.
The scene there contains 44,500 grass instances. Running with a GTX 970 at 1080p it gives ~87 FPS. Haven’t cleaned up the shader for optimization purposes yet.

What’s the material instruction count in that scene if you don’t mind me asking? All things considered grass of that density and distance at that framerate on that hardware isn’t too bad.

Right now it’s 110 instructions. There is room for optimization.

I am very interested. How large is that demo terrain?

I would be interested

One more question, are you looking into anything as far as shader-simulated collisions/wind patterns, stuff like that?


Does it work well for like backyard grass, how customizable is it?

is this realistic or cartoony grass? looks stylized

@phantom530, There is no landscape. Just a floor mesh scaled up so much.
@hippowombat, Wind yes, not collision (at least for now).
@jojo8026, I need to point out that this does not affect the mesh. You’d have to create the backyard grass mesh yourself but yes you can apply the master material to any kind of grass.
@Crushed, Well that’s up to you to decide. I do think the current grass blades look a bit stylized.

I know that, I meant how big is the floor mesh? It looks big, but I want to know how big an area you are using to test.

120x120 Meters. I had to set the painting density to 400 in order to have so much instances in this area. Normally you wouldn’t have 45,000 instances in within 120x120 meters.

A problem with creating realistic grass is that more realistic, thinner blades looks bad on many screens. There isn’t enough pixels to render them properly so you often get tons of aliasing that can’t really be fixed easily. That’s why most games, even the otherwise realistic looking ones have cartoonishly thick grass blades.

Distributed using grass node on landscape I reduced the scale along XY making the blades thinner.

thats true, pic above looks like a good compromise. would buy if overdraw is good and price is reasonable

Overdraw is very dependent on the density. I don’t think I have ever seen grass that don’t look red/white in shader complexity if it’s placed dense enough so ground can’t be seen. The test I did above has reds and whites as well. I will do another test later with less density and check shader complexity.

Same grass, different material instance.

isn’t overdraw only relevant on translucent blending? there’s really no reason for overdraw to exist on opaque/masked materials
or is your grass actually translucent?

looking quite good btw, but could be more natural. the areas that are far (or if you squint your eyes) look really great but the grass up close looks to have kinda cartoony/artificial shapes

Is the light baked or is it real time? Have you tried moving a dynamic shadow casting light through the scene and seeing how that affects perfomance? Any stats on memory usage and latency would be nice… Could we have a shader complexity screenshot and a shot of the material would be wicked. How many triangles are being rendered in that frame. Is the grass moving or is it completely static?
is Post Processing quality at 0 here or do you have it at a normal value? How does it perform with a few hundred large shadow casting objects in place?

It is opaque, but opaque surfaces too have transparent areas if masked. Overdraw doesn’t happen with translucent shading model only.
Thanks for the feedback! :slight_smile: