Just browsed again the GLBenchmark results for 3GS, and I realized some interesting things :
- 3GS has a much higher fillrate for Multi-textures than Single-Textures
- Ambient light is a bit more expensive than Omni
- the most interesting ... 256x256 texturing is a lot more expensive than 512x512
- The overall is clearly optimized for 512x512
- NEAREST_MIPMAP_LINEAR filtering beats Linear
- GL_MAX_VIEWPORT_WIDTH is set to 2048, as Height.
So what I can understand is :
- It appears that every device has a slightly higher fillrate with multi than single texturing, but with the 3GS, there's a 20000 kTexels gap, which is huge.
Would it mean that we would have better performance with a 2 texures pass, one being a plain color, than with a single texture pass ?
- As ambient lights are barely used when you have more than one light, would it be possible to completely shut down Ambient in a shader ?
- Never use 256x256 textures. Never.
- It will always be better perfs to use 2 x 512*512 textures than one 1024*1024
- Better use NEAREST_MIPMAP_LINEAR filtering.
- We can use the 3GS as an HD video emitter (like connecting it to a TV).
Also, other facts :
- 2G and 3G have same performances between each other
- 3G just don't care about texture size at all, same perfs for all.
- same for filtering
So at last, there is no impact on doing those optimizations for any type of iDevice, and benefits will be greatly visible on 3GS.
Overall, if we're using 512x512 textures, using Nearest MipMap Linear, shutting down Ambient, and optimize the texturing for Multi Textures, we can gain :
- +14745 kTexels / second,
- +3700 kTris / second
edit : This is not very huge, as 3700 kTris / sec would mean 60k tris / frame at 60 FPS. And I'm really not sure about the single to multi-texture trick.
But still interesting.