Early z-pass.
Re grass, the amount of overdraw is usually minimal. Trees will generally incur a lot more of if.
When using meshes, Per instance fade can just be done in the shader for the grass mesh. Same as the flattening of it.
In my case, since cost is very minimal for moving verts, I’m able to use an RT to define how tall the grass is by placing gameplay elements around the level.
So one doesn’t necessarily need the grass node to make things work (though it is faster to set up by a factor or 10 or just about).
On the other transparency setting, i believe it would cost you more. But if you are using transparent materials - particularly as foliage - you have worse performance issues to begin with…
Note: masks dithering looks ok in temporal AA, but potentially does not in forward rendering and other modalities.
Unfortunately optimizing for one thing precludes optimizing for the other.
And those who live in a forward rendered world have their own secret tips/tricks to optimize which i for one am not privy to…