Dual-Level Scatter
Accelerate Scattering in Blender with this Hidden Trick
The thing is, each object is rendered with a separate request to the graphics card, which is called a draw call. The bridge between the graphics card and the processor is a bottleneck that will slow down the entire system. In engines like Unity, you can find out the number of draw calls, and reduce it by batching whereas in Blender, this functionality is missing.
So, what can we do to reduce the number of requests? This modifier reduces the number of requests by first creating blocks of grass, converting them into a single mesh, and then distributing it over the surface. As a result, number of objects goes down and this method yields an up to 80-fold increase* in performance
The scatter, also has many useful settings and features, including procedural animation of a light breeze. Culling by camera frustum and distance.
* The actual speed boost achieved by this technique depends on several factors, with the polygon count of the scattering model and amount of models in each block being the most significant. In general, the fewer polygons in the model, the more substantial the performance increase will be.