SRP Batching With MaterialPropertyBlock

I learned that MaterialPropertyBlock breaks SRP Batching.

In the URP environment, it is good that materials with the same shader (keyword) are batched together, but I think it can be a problem that all materials that need to be changed at runtime are instantiated.

I think there may be a memory issue, but are there any other potential problems?

If there is any way to mitigate or solve this issue, what is it?

I recommend not using MPBs at all and create way more Material assets and then swap materials on assets at runtime and this won’t break SRP batching or if you need to animate your material transitions use something like Material.Lerp().

I believe you can also modify the values of the sharedMaterial and not break batching but obviously every renderer with that material will also change.

For more info on this subject I highly recommend Unity - Manual: Scriptable Render Pipeline Batcher and SRP Batcher: Speed up your rendering | Unity Blog