Quick answer: Unity BatchRendererGroup not rendering after a material swap? BRG caches material properties at registration - re-register the batch when materials change.

DOTS-style instanced rendering. Tinted instances stop drawing after a tint change.

Re-register on change

brg.RemoveBatch(handle);
handle = brg.AddBatch(metadata, mesh, material);

BRG batches are immutable per material. Material swap requires a fresh batch.

Or pre-compute variants

Register one batch per material variant. Switch by toggling visibility per batch rather than swapping per batch.

Use MaterialPropertyBlock alternatives

BRG accepts per-instance material data via GraphicsBuffer. Tint becomes a buffer index, not a material swap.

“BRG is high-performance because it's restrictive. The restrictions are real.”

Read the BRG sample code before integrating. The API is deliberately spare; reading the samples is the documentation.