- Home /
Low frame rate with only one texture on iPad
I have only one big texture(1024x1024) with Diffuse material, without any scripts, and my frame rate is 19. When I am trying to add on scene 2-3 other texture(some of them with alpha chanel, and iPhone/transparent/vertex color shader on material) frame rate drops to 10. Dont know how to fix this. Sure it drops only on iPad, on Mac it works perfect.
P.S. Frame rate drops only on Unity 3.0, on Unity iPhone 1.7 it works great.
Are you applying the material to Unity primitive geometry or a custom imported mesh?
I"m having this problem too - also in Unity 3.0, with a single quad on screen. It happens regardless of the texture size I use. In fact, applying a material with no texture still causes my framerate to drop to 19. It only happens on the iPad or iPad simulator, iPhone and all other platforms run smoothly.
I wrote up a bug and submitted a simple example project to Unity and I'm hoping for the best.
Oh - the performance gets progressively worse as the quad covers more of the screen (view frustum). Once it covers the whole screen, I hit 19 FPS. Again, this is with a single quad with a basic diffuse material and no texture.
Answer by jtbentley · Aug 29, 2010 at 02:13 AM
The problem is most likely OpenGL ES 2 shaders being used. Build only for arm6 archiecture in xcode, or in your player settings, turn OFF OpenGL ES 2.0 compliant shaders. Unless you're quite the shader nerd, you're better off avoiding opengl 2.0 :)
This fixed the issue for me, but only on the hardware iPad (which caused much confusion and frustation before I decided to skip the simulator build). No matter what build configuration I used, the simulator always had the performance problem - so there may be a bug where the simulator uses OpenGL ES 2.0 no matter what.
The simulator will always perform very differently than the hardware. You can not use the Simulator to judge performance in any way. Just use it to test if things are working then test on hardware for speed.
Answer by Toxic Blob · Mar 09, 2011 at 05:48 PM
I've found that for backgrounds, rather than using one large sprite it's more efficient to use a single GUITexture. Changing my background sprite to a GUITexture increased my frame rate from double digets to triple digets.
Answer by ultimatearcade · Feb 14, 2013 at 12:48 PM
i struggled with this also, until i found this post! http://answers.unity3d.com/questions/9729/how-can-i-display-a-flat-background-2d-image-not-a.html do this instead when setting up a static background image it will not effect the framerate and give you perfect background ... just make sure you follow the final step after the green block (set all the pixel inset values to 0, and set the scale to (1, 1, 1) ) to make sure it fits full screen.
Answer by ArmarageX · Mar 08, 2013 at 03:23 AM
Had a similar problem where using a 1 poly plane as a full screen background... It used to be 512x512 mobile diffuse shader, i even dumbed it down 256 even, and still getting 30fps (aiming for 60fps).
Changed the shader to Mobile/Unlit and it cranked up to 55 FPS...
My guess is that the bigger the object takes up screen space... the more PIXEL LIGHTING CALCULATION takes place (diffuse takes lighting). So im calculating full screen size pixels for my plane... one poly or not one poly..
According to that theory, that would mean if that 1 poly plane took up less screen space... then it would work nice.... But having it display full screen, best be an mobile/UNLIT shader..
Your answer
Follow this Question
Related Questions
Poor fog performance on the iPad? 2 Answers
Confusing Ipad performance problems - help! 1 Answer
using non-square textures on iphone 3 Answers
Unity iphone - texture upload speed 1 Answer