Why scale break a batch?

Here is my guess about how dynamic batching works (without HW instancing support):

  • sort objects with the same mesh by material
  • buffers are filled with copies of the mesh for each instance
  • transformation is applied on CPU, using SIMD I guess
  • buffers send to GPU (or updated)
  • set material and draw

In my guess algorithm we can apply individual scaling for each instance, but Unity sorts by material and scaling. Why?

My guess: there are some default properties for scale (or inverse scale) on shaders, so these properties are different on your objects.