Hey folks,
I’m building a small mobile game with URP. I’m the artist/asset person on the team (not a programmer), so I might be missing something obvious on the rendering side.
-Render Pipeline: URP 14.0.12 (SRP Batcher checked)
-Unity version: 2022.3.62f2
-Platform: Android/iOS
-Levels are spawned as prefabs at runtime, so I can’t rely on editor Static Batching.
I want;
different meshes that share the same material should benefit from SRP Batcher (low SetPass) and
exact duplicates (same mesh + same material) should use GPU Instancing (single/few draw).
what im seeing;
in Frame Debugger I sometimes get SRP: First call from ScriptableRenderLoopJob (expected), but other draws break with ‘SRP: Node have different shaders.’ The weird part is those renderers look like they use the same shader/material.
Also Saved by batching stays at ‘0’ (I know it’s Static/Dynamic, not SRP Batcher, just noting it).
I can’t clearly verify instancing: in Stats it doesn’t increase, and in Frame Debugger I don’t see DrawInstanced / Instances:N.
Typical numbers: Batches 250–280, SetPass 13.
and i tried;
For SRP Batcher groups: material Enable GPU Instancing = OFF, Shader Graph Enable Instancing Variants = OFF.
For instanced groups: Enable GPU Instancing = ON, Instancing Variants = ON.
All renderers point to the same .mat (no duplicated materials).
Keywords/settings are aligned (normal/detail/emission/receive shadows, opaque/queue 2000, etc.).
Most objects use Light/Reflection Probes = Off.
My Camera inspector doesn’t expose ‘Per Object Data’ toggles in this Unity/URP version.
so in this point i have so many questions;
- Exactly when does ‘SRP: Node have different shaders’ trigger? Can it be different pass (ForwardLit vs DepthOnly), a renderer feature, or an instancing variant split (INSTANCING_ON/OFF) even if the shader name is the same?
- With Shader Graph Enable Instancing Variants ON: if some renderers use materials with Enable GPU Instancing ON and others OFF, will that split SRP Batcher groups?
- In 2022.3/URP 14, what’s the most reliable way to confirm instancing is active—is the Frame Debugger’s DrawInstanced / Instances:N line the right thing to trust?
- Since we can’t use editor Static Batching, what’s a practical workflow to mix SRP Batcher + Instancing?
- When Frame Debugger says ‘different shaders,’ which fields should I compare between the two draws?
- Can you help me pls?
Game stats
also if i turn off the srp batcher i get these numbers:
205.2 FPS (4.9ms)
Cpu: main 2.9ms render thread .8ms
Batches: 96 Saved by batching: 226
.
.
.
SetPass calls: 45
Thanks a lot for any pointers!
