Open world enviornment - Trees & Rocks & Grass at scale

Here is a video from my game and this cinematic scene has generated landscape and 5-10k decor objects (grass, trees, etc).

What I have done is:

  • Using instances
  • Optimize scene by freezing meshes, materials and etc.
  • I use offscreen canvas.
  • I do compute work with web workers (vertices, indices, animations and more)
  • I do compute work for landscape
  • I send only chunks of data depending on player location.
  • I dispose/reuse objects not visible for the player.
  • I have a FPS controller maxing at 60fps

I target players with 3d card equal at GTX 1030, and I found all of these points above to be useful for me, especially using web workers for compute work and offload the engine to a separate thread.