Unity Community |

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.
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)
60 tris is really nothing but interesting - but it's good to see in a benchmark how different texture sizes perform. 64x64 is as bad as 1024x1024, that's good to know!
But as i have learned some days ago using mipmapping will be always faster - so when using mipmaps I've no control about the texture size anyway or am I wrong?
I am more surprised about the fact that the iPhone is actually very british and a grandson of the Acorn Archimedes- Prozessor and GPU are both from british companies.
So if your iDevice is slow blame the brits, if the touchscreen is not responding blame the germans, if it crashes blame the americans, if it does not survive when it falls on the floor blame the chinese![]()
Oops sorry, I made a mistake, it's not 60 tris / frame, but 60K (60000).
Finally, I think the real useful calculation would be :
+3700 kTris / sec, which means +3700 tris / miliseconds.
In a recent Profiler, I had :
So :iPhone Unity internal profiler stats:
cpu-player> min: 5.2 max: 15.8 avg: 10.2
cpu-ogles-drv> min: 3.2 max: 9.7 avg: 3.9
cpu-present> min: 1.0 max: 13.7 avg: 2.8
frametime> min: 15.3 max: 33.2 avg: 17.2
draw-call #> min: 6 max: 6 avg: 6 | batched: 7
tris #> min: 10164 max: 10164 avg: 10164 | batched: 392
verts #> min: 5198 max: 5198 avg: 5198 | batched: 264
player-detail> physx: 0.3 animation: 1.4 culling 0.3 skinning: 5.5 batching: 0.1 render: 2.4 fixed-update-count: 0 .. 2
mono-scripts> update: 0.1 fixedUpdate: 0.0 coroutines: 0.1
mono-memory> used heap: 700416 allocated heap: 1417216 max number of collections: 0 collection total duration: 0.0
tris #> avg: 10164
in :
render: 2.4
which means 4235 tris / ms.
In that number, we must count all the shaders differencies and other graphic workouts that exceed a simple textured mesh display.
So it's not very accurate.
But that would abstractly mean that instead of doing a 2.4 rendertime, I'd do a 1.3 rendertime.
Plus the kTexels / second boost that is impossible to measure right now.
Would be interesting to make some bench using those optimizations, and without.
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)
What????? 256*256 > 512*512???
Really![]()
My Blog:Http://Www.1Vr.Cn
Unity Tencent QQ Group:2453819,34643309,7838310,7838228
Unity Forum: http://www.iu3d.com
Development Environment:Unity Pro & iPhone Adv & MacBook Pro & iPhone & iPod & iPad & Zpad.
What about the results of the iphone 2G and 3G in this database? It always says 512k triangles/s. I guess it's just not tested ? I mean the 3GS can't be 10 times faster.
Yes it isOriginally Posted by VIC20
What about the results of the iphone 2G and 3G in this database? It always says 512k triangles/s. I guess it's just not tested ? I mean the 3GS can't be 10 times faster.
(GPU wise)
(video comparison on a demo)
Although, I think it effectively misses somes tests about 2G/3G. But those numbers seem quite realistic.
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)
I am not only worried about the performance crazyness... how can it be even the same?Originally Posted by Minevr
What????? 256*256 > 512*512???
Really
This makes me think I can't trust those results.
Did you mean:Originally Posted by n0mad
- It will always be better perfs to use 2 x 512*512 textures than one 1024*1024
It will always be better perfs to use 4 x 512*512 textures than one 1024*1024
?
Busting bottles over the heads of saints since '68
No, incorrect math asideOriginally Posted by n0mad
- It will always be better perfs to use 2 x 512*512 textures than one 1024*1024, multiple textures = multiple draw calls = much slower than any minor differences in texture performance, if they do in fact exist.
--Eric
Oh my .... well yesOriginally Posted by ader
Did you mean:Originally Posted by n0mad
- It will always be better perfs to use 2 x 512*512 textures than one 1024*1024
It will always be better perfs to use 4 x 512*512 textures than one 1024*1024
?![]()
Aw, that's true.Originally Posted by Eric5h5
No, incorrect math asideOriginally Posted by n0mad
- It will always be better perfs to use 2 x 512*512 textures than one 1024*1024, multiple textures = multiple draw calls = much slower than any minor differences in texture performance, if they do in fact exist.
--Eric
Anyway, there must be a trick![]()
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)
I've seen such odd facts in other hardwares as well.Originally Posted by shadowman
I am not only worried about the performance crazyness... how can it be even the same?Originally Posted by Minevr
What????? 256*256 > 512*512???
Really
This makes me think I can't trust those results.
If this benchmark is serious (and since it has been existing for years, I'm sure it's serious), there might be some weird explanation behind the new GPU pipeline.
Just like the one where AlphaTest is slower than Blending on iDevices, but not in other big GPUs (PC, consoles, etc).
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)
not from my knowledge , but I hear that texture size things is related to how in the hardware the binary data are stocked that will make a "normal" reason for such behaviors, hearing that from some core engineer guys ( didn't really understand all the speech..)
so that shouldn't be weird things but somethings totally normal form "the core enginneer" point of view ,
I wonder if there is some infos on teh web about that particular things in a more general way ...
Hey, I found a post in Toucharcade developers forums :
If this is true, this is very important, as every skinning operations were put on VFP in iUnity 1.5.Originally Posted by hackdirt
Video on the 3GS is undoubtedly faster, but the 3GS has a deprecated VFP unit that runs more slowly on the 3GS than 2G devices. Thus, if a game uses VFP optimizations for heavy duty floating point operations (such as matrix operations), the game will certainly run more slowly on the 3GS.
Is it confirmed ?
edit : I have some kind of proof that 3GS is less effective with VFP than older models : If I put a negative X scale (= mirroring) on a 41 bones skinnedMesh, my global frametime is nearly cut by an half.
On my 3G, it is barely visible.
I read a post from ReJ some time ago, where he was stating that they'll put native Neon optimization instead of Neon VFP in a future build.
That would mean replacement of VFP I guess, and if the guy in the quote says truth, that would mean a big skinning/physics/vector perf overall. Until I'm completely wrong.
Kinetic Damage, a 4 years long fighting game project : Official Trailer,
[iTunes Link], [Free Lite Version]
Official Site : www.kineticdamage.com, Facebook page (blog, articles, dev updates).
Dev Blog : Giant thread (+ additional tips & techniques)