Hi !
I test the performance of Model Importer option - “Optimize Game Objects” on Samsung Galaxy Note 3. When I test the option on my PC, Optimize-ON is much better than Optimize-Off. But the profiler results(Animator.Update + MeshSkinning.Update) are similar on Galaxy Note 3.
There is extra cost(Animator.SendTransformChanged) in Optimize-Off, but its MeshSkinning.Update is less to compensate.
My question is whether Optimize-ON is suited for mobile devices or not ?
I hope the improvement of Optimize-ON on mobile devices is as good as using on the PC.
What I need to pay attention to the use of Optimize-ON ?
Can you log a bug with your project? so we can investigate what going on. It should be faster.
yes
yes
The only drawback is that you can’t access anymore the transforms unless you expose them,.
Also if you do have some special setup on your rig like extra transform used as handle for props they will all be removed too.
Getting the same results on iOS. Selecting optimize game objects does get rid of the hierarchy but the performance is mostly the same or a little worse at times
So after some investigation it turn out that in your case the bottle neck is not the transform hierarchy but rather dynamic batching and single thread rendering.
Here the answer from our android specialist
“So turn off dynamic batching. In this case I would assume dynamic batching would only cause more harm than good. Secondly since we want to scale to multiple cores I would suggest enabling mutithreaded rendering.
If they do that they should clearly see the difference between the optimized version and the non-optimized one.”
Hi Mecanim.Dev,
Thanks for your reply !
We make a profiler about multithreaded rendering, dymamic batching and GPU skinning options. There are only 100 skinnedmesh characters in the scene and the results are as follows.
Optimize Game Objects multithread dynamic GPU skinning FPS drall call
Sorry, the layout of results looks a mess. We test all combinations of Optimize Game Objects, multi-threaded rendering, dynamic batching and GPU skinning options. X O X X 38-45 112 means disabling “Optimize Game Objects”, enabling “multi-threaded rendering”, disabling “dynamic batching”, disabling “GPU skinning”, FPS is 38-45 and draw call is 112.
The enabling multi-threaded rendering and disabling dynamic batching is the best combination but I have some questions.
There are only 100 characters using the same skinnedmesh(459 verts(position, normal, uv), 658 tris) in the scene. According to Unity documents dynamic batching is applied only to meshes containing less than 900 vertex attributes in total. And I always thought dynamic batching was not applied to skinnedmeshes. Why did dynamic batching work in this case ?
GPU Skinning seems not to improve the performance. There are extra 100 draw call in some cases. Is this a bug of Unity profiler on mobile devices ?