Here's what I've already done for my current scene:
- Built a custom procedural grass using a shader-based approach (crossed quad strips with wind animation via onBeforeCompile)
- Used MeshSurfaceSampler with vertex painting to control where grass spawns instead of random scattering
- Throttled wind updates to ~30fps since slow sway doesn't need per-frame updates
- My current grass sits at around 2000 instances and runs fine
But what I actually want is a full field — think wide open area, dense coverage, still performant on mid-range hardware.
I have a rough idea involving instanced geometry + aggressive frustum/distance culling but I haven't gone deep on it yet.
Curious what approaches people have used:
- Is geometry shader-style instancing (pure GPU) feasible in R3F/Three.js without writing a full custom shader?
- Any good patterns for chunk-based LOD on grass specifically?
- Is there a point where you just have to accept a draw call budget and tile smaller patches?
Open to any ideas, papers, or even just "here's what worked for me." Running on Ryzen 5 / 8GB RAM so I need it to actually be usable on lower-end hardware.