Unity 4.6.3: Metal rendering support and update of IL2CPP for iOS
Today we shipped the public release of Unity 4.6.3. You can get it on our download page. With this release, we’re bringing iOS Metal rendering support to Unity 4.x. Unity 4.6.3 is the first Unity 4.x public version supporting both critical features in the iOS world: iOS 64 bit via IL2CPP and Metal rendering. Unity 4.6.3 also brings critical updates to IL2CPP for iOS 64 bit.
What is Metal rendering ?
It is a new low-level rendering API developed by Apple for iOS 8 and further. It focuses on doing less in GPU drivers, so the CPU overhead while making Metal calls is minimal. This way, games can consume less CPU time and can do more fancy stuff in the remaining freed up time.
Here’s a short description from Apple:
“Metal provides the lowest-overhead access to the GPU, enabling you to maximize the graphics and compute potential of your iOS 8 app. With a streamlined API, precompiled shaders, and support for efficient multi-threading, Metal can take your game or graphics app to the next level of performance and capability.”
For more information, please consult the official Apple Metal rendering developer site.
How to enable Metal rendering ?
To bring Metal support, Unity takes care of most of the things that happen behind the scenes. Metal will be used by default on capable devices. If you want more control, you can find Graphics API selector in Player Settings; with values like Automatic, Metal, OpenGL ES 3.0, OpenGL ES 2.0:
If you want to detect whether you’re running on Metal at runtime, do something like if (SystemInfo.graphicsDeviceVersion.StartsWith(“Metal”)).
We worked really hard to make Metal usage as seamless as possible, but please report issues if you run into them!
Update of IL2CPP on iOS-64 bit
Unity 4.6.3 is a critical update to IL2CPP on iOS-64 bit:
Fifty fixes were made for various bugs and crashes. We are very grateful for your feedback which enabled us to move and iterate fast.
Missing support of .NET classes was added for ThreadPool, Asynchronous Sockets, WebRequest.
Added support for async delegates (BeginInvoke/EndInvoke).
We are committed to fixing and improving IL2CPP support for iOS-64 bit in further Unity 4.6.x patches and public releases as well as in Unity 5, so if you have any issues, do not hesitate to report those and ping us on the forums.
Unity 4.6.3 release is not limited only to Metal rendering or IL2CPP on iOS. It has number of fixes and improvements to Android, iOS, 2D, animation, shaders, UI and others. For a full list of changes, please consult the release notes.