There’s a draw call per sub-mesh, as each sub-mesh can have its own material (there’s no grouping of sub-meshes per material, as it would hurt performances to perform this grouping in javascript). You should generate the checkerboard differently (with instances or thin instances, for eg, or maybe by just using a checkerboard texture?).
Note that you should not push the sub-mesh created with new SubMesh(...)
to Mesh.subMeshes
, because it already pushes the sub-mesh to Mesh.subMeshes
: that’s why you have 128 draw calls instead of 64.