Unity Technologies recently shared a list of upcoming Unity iOS 3.2 optimizations in relation to OpenGL ES 2.0, the programmable rendering pipeline available in iPhone 3GS / iPod Touch 3gen and newer as well as the iPad.
OpenGL ES 2.0 support has been there since Unity 3.0, but up to now (Unity 3.1 f4) the performance is having some problems that make the use of OES 2.0 a step you commonly want to do if you need programmable rendering pipeline for visual effects that are crucial to your application.
Unity 3.2 is definitely going to change this, making it possible to use the programmable pipeline in general without fearing the potential lose of performance!
Responsible for this is, among other things, the much better support for shader precision specifiers will help to achieve pretty significant performance gains for shaders that can make use of it.
Responsible for this is, among other things, the much better support for shader precision specifiers will help to achieve pretty significant performance gains for shaders that can make use of it.
This is done by making operations that don't need to run at full float precision, run at a lower precision which requires less time
This performance optimization isn't automatic. You will potentially need to update your custom shader code if it didn't make good use of the corresponding types in CG (GLSL users will have to as the precision specifiers didn't work correctly before), but this one time work is for the good of your applications performance, rather straight forward to do and will yield in significant gains commonly.
For all who don't use and require custom shaders, the good news is that Unity Technologies added mobile oriented shaders in addition to the previously built-in shaders according the blog, so if you use those shaders, you take advantage of it right out of the box.
The shader is using more optimizations than just the precision specifiers which is allowing it to run even faster than it would with a simple precision specification based enhancements (mobile bumped specular was mentioned to be 5.2x faster than the 3.1 Bumped Specular which is desktop focused) at the cost of some lost features which you potentially never required on mobiles. This is a pretty significant step ahead for mobile developers, especially such with a less technical background on shaders and mobile hardware limitations.
I'm expecting to see significantly more applications making use of the power and flexibility OES 2.0 offers with the performance these new built-in shaders seem to offer, pushing the bar for competing technology, including UDK, pretty high up.
Another welcome enhancements as its one of the most commonly desired and required shader usages, Normal Mapping, got additional love by receiving a better compression scheme that no longer is causing a calculation overhead which was mobile unfriendly.
For those less tech savy, I would like to point out that normal mapping is the way to pretend to have more geometry detail than you have and could afford on a mobile platform.
All these new enhancements together will definitely bring a lot of joy to all of us iOS developers and that at very little effort.
In addition to the things mention on the blog, Aras recently shared (see here) that Unity 3.2 will be also be receiving Antialiasing, a feature Unity iOS devs so far had to add through a more or less troublesome modification of the XCode export from Unity.
Antialias itself is something you don't just want to use in any case as its very taxing on limited graphics hardware like the one used in iOS devices, but if your game is light enough, you can get more visual quality at no effort!
The future for iOS game developers is bright :)
