- Home /
Dynamic batching leads to performance drop?
I've been working on an platformer for android. My scene consists of a lot of platforms moving across the screen. I initially used the Legacy/Diffuse shader for all my platforms and enabled GPU instancing. The performance was fine. But then I tried to compare the performance with dynamic batching (with GPU instancing turned off)
Turns out, the performance got worse. I noticed that every now and then, the platforms' movement get a bit jerky. I thought maybe I should use mobile shaders instead. The performance was still bad (once again, with dynamic batching enabled). So I connected my game to the profiler to find out what's going on.
Here's what the profiler showed when I was using Mobile/VertexLit shader for all my platforms (with dynamic batching):
As you can see, the game produces a lot of Gfx.WaitForPresent spikes, which leads to the stutter. But when I use GPU instancing instead of dynamic batching, those spikes don't show up as much (and when they do, they're not that big in size). Also, the performance is really good. Even when I'm using Mobile/BumpedSpecular (Only 1 directional light) shader (with GPU instancing), those spikes barely show up and the performance is really good.
So is this normal? I was always under the impression that dynamic batching would be really good for my game (and even better than GPU instancing). But it seems that's not the case.
Sorry I just wrong a comment thinking you were referring to static not dynamic :P
Dynamic batching is a resource hog sometimes, especially if you have a lot of DIFFERENT objects. However, if your platforms are moving, they can't be staticly batched, but have you considered doing a bit of both? Statically batch your static objjects, dynamically batch your dynamic objects.
Yes I've done that. $$anonymous$$y static objects are already static batched.
Well your real killer here is Vsync, that WaitForTargetFPS crap is killing you. I'd disable Vsync immediately.
EDIT: Also make sure you don't have any code that mentions Application.targetFrameRate
Your answer
Follow this Question
Related Questions
dynamic batching problem with spriterenderer 1 Answer
Dynamic batching slows down? 0 Answers
Dynamic Batching, Combine Meshes? 1 Answer
(Unity3.3 standard)How to CombineChildren and keep Dynamic Batching? 0 Answers
iOS pro: Will splitting a large mesh into many dynamically batched meshes hurt my performance? 0 Answers