iPad max limits

I am just curious. I have read the (and understand the) whole “It depends on what you are doing” thing. But without sounding like a politician and giving a 1000 word “Wow he sounds really clever” answer that leaves me wondering “So the answer he gave was… what again?” I want to ask a simple question and just get a straight answer, please…

Back when the iPhone was just getting Unity support, there was a clear ceiling you should try not to breach: 7k ploys per frame and 10 draw calls max. Sure you could go over it and there were some settings in the docs to optimise performance and bla bla bla and people were reporting they could run at 25k with no problems etc etc etc, but is there such a clear cut answer for ceiling limits for the iPad 1st gen?

iPhone was 7k tris and 10 draw calls…
iPhone 4 is [your answer here] and iPad 1st Gen is [your answer here]

I am just trying to gauge the power difference between the devices in terms of Unity, not chip developer self-praising Greek geek speak… :stuck_out_tongue:

For example… I have a scene consisting of 400 models of 2 triangles each. Most use the same material but at most, there are about 10 materials in the scene. Then there are some models, also around 30 or so, each around 20 polys or less and using a maximum of 10 materials between them also. Now, as I understand this, Unity automatically batches small objects together but it does so at build time. My objects are all created at runtime so I am not sure if this applies to it or not…

I have seen mesh merger script flying about the place but I need to be able to change the materials on any model at any time so merging the meshes is not really an option.

The issue here is that in the Editor it lists my scene as using between 700 and 1200 draw calls for those 450 models that total up to somewhere under 2k triangles. Will the iPad be able to run this app? Will models still be batched even if they are created dynamically? If so then I guess I would have a maximum of 20 to 40 draw calls due to the sheer size of the model’s polygons and the number of materials. (I actually create all materials in an array and assign them to each model as appropriate from there to make sure they use the same material and not have 700 materials with the same texture)… but if it does not get batched and the polygons on sreen (or in the entire scene, actually) is only 1.5k, will the iPad be able to handle 700+ draw calls?

What exactly are the target ceiling figures for iPhone and iPad? I will list the question again:

For iPhone 1st Gen it was 7k tris and 10 draw calls…
For iPhone 4 it is [your answer here] and for iPad 1st Gen it is [your answer here]

Thanks for helping me get this clarified :slight_smile:

I think everyone's afraid of your really wordy question! I'd tell you if I knew.

4 Answers

4

Docs say:

Keep vertex count below:
40K per frame when targeting iPhone 3GS and newer devices (with SGX GPU)

Docs say:

Unity can automatically batch moving objects into the same draw call if they share the same material. Batching dynamic objects has certain overhead per vertex, so batching is applied only to meshes containing less than 300 vertices.

Dynamic batching is done automatically and does not require any additional effort on your side.

I think the performance you get will depend more on the shaders that you use for your game. 700 draw calls does sound “a lot”. I think, and you don’t want to hear this, that you just need to try your game on these devices and see what happens.

Hi Graham

The reason I asked this here was because I didn’t want to buy the developer license just to try it out. Buying the licence and having it count down while I work feels like a money waster. This project was originally intended for the web player bt then I realised there is no reason why I can’t release to desktop also… and then it struck me: “What about iOS?” So I was more curious than anything else…

Luckily I found a very simple method of installing games onto my iDevices without requiring any Apple licences (yeay!) so I was able to test this out myself. Amazingly enough, this thing actually ran perfectly smooth on my wife iPhone 3G !!! Incredible!!! But for one small caveat… The project is 90% dependent on me clicking on the scene and selecting the object below. Since different selection modes would select different things, each model is marked with a Tag and I need to test that object for it’s Tag and only if it matches, do I get that object’s Transform.position. Well, on the iPhone 3 that tap never did anything.

So I figured that Unity must be batching the models and that is causing unexpected behaviour since I require each individual mesh’s transform.position. So I went back into Unity, removed the static tick from the 2 poly object that appears 400 times in the scene and grid building again. Unfortunately my wife then took her phone and started charging the iPad so my “will it work on this last gen hardware” test was done for now and then the target platform was being tested. Maaaaaan, it was shoddy as hell!

I was working on a game a while back and tried using only one texture for the entire game. I had a 1024x1024 with high bpi and fit most of the game’s graphics into it. So I then did 30 GUI.DrawTextures within 30 clip regions and the result was that a click would take 3 seconds to register. This feels the same on my iPad. Movement is very unresponsive and jerky. So from this I am assuming that the draw calls are a bit too much for the iPad. Fine. So that answers the question. 2k at 1000 dark calls is NOT gonna happen…

But then I hit another snag… Even now the tapping doesn’t work!!! I still don’t get the object I tap on! What’s up with that??? This means the problem might be elsewhere and if I can figure out why casting a ray from the screen to worlds ace yields the desired results in all platforms apart from iOS then perhaps the stuff could be batched again… but I guess this is a separate question, isn’t it :slight_smile:

But thanks for the info.

p.s. in case you are curious about the circumventing of the Apple licence thing, I forgot the full path now but find the folder where Xcode stores the various SDK versions and inside the one of your choice, open up the plist and under the setting “Code signing required” just change YES to NO. Now when you click Build and Run in Unity it will result in a project with one error. Click on that error and it will tell you that your code signing identity doesn’t exist. So go to the code signing field and change “iPhone developer” to “Don’t code sign” and voila. I still can’t seem to create an IPA file from any of my projects so I can’t share my games, but by hitting Play it does copy it to my device and I can at least play/test my development on it :slight_smile:

1024width
768height

I know this isn’t an answer but i’ve been looking for the same answer and I finally just got the dev license and tried it on my iPad 2… I was floored. Maybe someone can shed some light for me.

In unity Stats Widget thingy:

  • Main Thread 16.5ms Renderer:13.6ms
  • Draw calls: 1016 Batched: 0 tris:
  • 236.9k verts 212.4k used textures: 4 -0.7 MB
  • Render Textures: 0 0 B
  • switches: 0 screen 938x689 - 7.4MB @@@@@@@@@@ I am targeting to iPad 2+
  • VRAM Usage: 7.4 MB to 12.9MB of 256
  • VBO Total 451 - 4.8MB Shadow casters:
  • 0 Visible Skinned Meshes: 0
  • Animations 1

So here is the thing. My iPad is running this crazy model like a champ. I also have like 12 GUI Styles going and I am swiping to animate this and again, runs fantastic. PROBLEM IS, my computer cant handle making new animations for it. It’s too slow…

For those looking for some insight, there ya go. For all others that might have more explination as to why my comp cant handle this would be great.