In my opinion, this splits into five parts. First of all the visual quality has to be very high. A blade of grass or other vegetation parts are not just some green mesh parts. All the pictures of the vegetation I create are scanned in a portable studio out in the woods or at home for the best lighting setup.

Next, you need some kind of wind animation. You simply can’t walk through a forest and see all the vegetation static. That simply doesn’t feel right.

Third, you need some way to interact with the vegetation. If you walk by an ivy branch, the branch should have some interaction with your character.

Your vegetation should be as complex/unique as possible but efficient at the same time. It will not look good if you only use 5 different blades of grass for designing grass clusters. The more different kinds of leaves/blades of grass you have the better the result will look. Plus the more you optimize, the more people will be happy with your designs.

Building Grass

The most common way to implement grass is to arrange the blades of grass side by side in the albedo map and using a big plane to map this to an object. This planes will then be stacked inside each other at different angles. If you look at the grass from the top you will not see the grass blades under you. A better way is to put a smaller plane around each blade of grass and put these blades as a structure. Both ways have two big disadvantages: the quad overdraw and the shader complexity are very high. The only way to reduce them is to model each blade of grass individually so that the opacity of usage is as low as possible. This will also lower the quad overdraw. The downside of this method is that the vertex count is higher than other methods, but I benefited from it. For using the Unreal Engine Pivot Painter Tool 2.0 you need a finer mesh for the wind simulation. Further, the UE4 is using foliage instances what makes the vertex count not that important.