I'm definitely enjoying my first experiences with procedural grass.

A few more details on what's going on:

  • 200,000 blades per scene
  • Each blade is a curved strip of double-sided quads
  • Perlin noise functions control various properties of the grass to give variation
  • Blades have simple pre-computed occlusion based on the terrain height function
  • Everything is generated on the CPU and shoved into a single vertex/index buffer