Question about Culling (if this is even the correct term)

You can’t do anymore at this point. i’m currently implementing a vegetation module for my engine to render massive forests and fast grass generated on the fly. In order to cull i use a spatial chunked approach in a octree. Depending on your wanted result or how you deal with the terrain, you could share the geometry with multiple meshes and do the rest in the shader (adapting height of a heightmap for example).

If the scene is very large spatial management should be considered anyway, as well as using instances or a static “bunch of grass” geometry to use in a tiled manner or as i mentioned, performing the placement in the shader.

For a simple quick solution you could split your grass-field into a chunked raster clustering all grass-blades for example by a 8x8 grid of BufferGeometries, depending on the density and size of your scene to get a well balanced draw-call / triangle count.