Many instances of the same model (with variations in position, orientation, and size) can be represented with the (legacy) I3DM tile format, or by using the EXT_mesh_gpu_instancing
glTF extension. In terms of rendering performance: You should be able to easily render a few ten thousand instances smoothly with that.
There is a thread that describes some context, even with the exact example of trees to make forests, at From I3dm to EXT_mesh_gpu_instancing? - #10 by bertt . The underlying repository that contains some example data sets, including examples that use EXT_mesh_gpu_instancing
, can be found at GitHub - bertt/cesium_3dtiles_samples