Quick answer: Unity SRP Batcher disengaging when you set MaterialPropertyBlock? MPB breaks batching - use _BaseColor variants or per-instance properties via Shader.SetGlobalVector with object index.
Frame Debugger shows 'SRP Batcher: !MPB' on objects that were batching yesterday. Setting a tint via MPB knocked them out.
Avoid MPB on SRP Batcher path
SRP Batcher specifically excludes MPB-tagged renderers. Use a material variant per instance, or duplicate the material at runtime via Material.Instantiate.
Or use per-instance properties
In the shader's CBUFFER_START(UnityPerMaterial), declare all properties. SRP Batcher batches the constant buffer; per-instance data lives elsewhere.
Profile the alternative
Material instances cost memory; MPB costs draw calls. Decide based on which dominates your scene.
“SRP Batcher trades flexibility for throughput. MPB belongs to the flexibility side.”
Don't reflexively avoid material instances. For small scenes, the memory cost is negligible and the draw call savings are real.