When i use Instantiate(myMesh) or retrieve meshFilter.mesh (not sharedMesh), a copy of the mesh is created. I use duplicate meshes for per-vertex damage modelling and i only change colors buffer. My question is, what is really duplicated in the memory? Are all other hardware buffers shared? Or are they duplicated the moment i duplicate the mesh object?
In memory, it duplicates everything that is used to build the mesh (i.e. what you see as the mesh asset in Unity > subMeshList, triangleList, vertexList, UVs, …). All the rest will stay the same, and won’t thus be duplicated. It will a.o. still use the same material as the original mesh.
Whole mesh will be duplicated since in runtime memory vertex data has to be grouped together, i.e. it’s not separate streams.