Quick answer: Unity SRP Batcher reporting 'not compatible' after a runtime SetBlendMode? Runtime state changes invalidate per-material constant buffer - use material variants instead.

Lit shader; runtime calls material.SetBlendMode for transparency toggle. Frame Debugger: SRP Batcher off for that material.

Use material variants

Author opaque and transparent variants. Switch by swapping the material reference; SRP Batcher remains active.

Or accept the cost

For rare blend mode changes, the batcher dropout is fine. Measure; tune.

Verify in Frame Debugger

Per-renderer batcher state visible. SRP Batcher: !ChangeRender = state mutation; the root cause.

“SRP Batcher trades flexibility for batching. State mutations break the trade.”

Author material variants up front. Runtime state changes look efficient but break batching; variants are the disciplined choice.

Related reading