Hey all, I’m working on a crowd scene with ~50 animated characters and I’m targeting mobile VR, so performance is important. It appears draw calls are my main bottleneck so I looked into reducing draw calls for skinned meshes, but am a bit confused around what the best practice is for URP.
All 50 characters use the same mesh and same materials. Here you can see the stats and frame debug without any optimization:
The stats window reports ~50 FPS with 300+ batches. My first point of confusion is where the 300 batches comes from, since I believe that the characters are being rendered as part of the GPUSkinning call, and the debugger only reports ~180 of those.
My next step was to disable GPU Compute Skinning in the Player Settings:
You can see here that the number of batches is more or less the same, but the draw calls (which are contained in the MainLightShadow, DrawOpaqueObjects, and DrawTransparentObjects categories in the debugger) is down to ~12. This seems way more efficient, yet my FPS goes down to 35.
So my main question is, what’s the best practice when rendering multiple of the same animated skinned mesh renderers when using the URP?