Seeing how the frame is greater than both game and draw, I would assume I am GPU bound. However, these stats were captured using r.screenPercentage 1 (And yes, the command did indeed work).
So does this mean I am bound by the draw thread? If so, why is the frame greater to and not equal to draw?
(Second part to question)
How do I profile the issue? There is extremely little information on profiling the draw thread. The only things I have found have been :
Draw calls (I max out at 200, so I doubt that’s a problem)
Object count (Not sure but I don’t think my count goes above 1-2 hundred).
Hopefully I get some answers, I really want to finish this project and release it!
Okay, so I ran the command ‘show staticmeshes’ and I still get around the same performance. I can’t stay above 40fps. And even with the static meshes disabled, my frame time is 60% more than my game and draw times.
Frame time is basically GPU time. GPU time is always after Draw and Game. GPU can only go as fast as draw. But GPU has additional stuff to do, so with an already high draw, things are now even slower.
As I said before, you could set the Min Draw Distance to something ridiculously low on your meshes. This will cull most of your meshes. See if this improves your framerate.
Culling doesn’t work on mobile. However, I set most (90%) of my meshes to hidden in game, and the performance is still terrible.
What about collision complexity? Could that effect performance dramatically? Because most of my static meshes do have complex collision on them. I haven’t been able to find an answer to this question online. I’ve been trying to find a way to test if the collision is an issue. Still haven’t come up with anything.
As the others said you should post your hardware you are testing with
Collision is indeed a huge CPU drain on mobile - you definitely need to go through and manually turn collision off for everything that does not need it. On the objects that do need it see if you can reduce the collision to simple shapes and reduce to only query or physics collision.
Also mobile culling is now supported.
Hardware occlusion on 4.20 with OpenGL 3.1 for supported phones (I would use 4.21 as there were bugs with it in 4.20)