Archive | June, 2014

quick thoughts on iOS Metal

3 Jun

One of many surprises to me out of Apple’s WWDC 2014 keynote yesterday was the Metal API announcement – a very low-level API for performing complex graphics and computation on Apple devices. Basically Metal strips out a layer of overhead which exists to simplify graphics programming for most but which gets in the way of the very advanced programmers. As always, AnandTech has a terrific deep dive and a take on the overall market and ecosystem impact, and I also think Alex St. John’s perspective is scathing of OpenGL and low-level APIs while also utterly insightful at the same time.

Since I’ve got only  a few minutes before I have to check out of this SoCal hotel and be somewhere else, I’ll just add a few quick thoughts.

First, it’s worth noting that even some very advanced graphics programmers may not see huge performance wins from Metal:

(Brad Larson maintains an excellent graphics library for image manipulation called GPUImage)

That said, of the class of very advanced programmers who will jump on Metal are… the teams that maintain the game engines, frameworks, and toolchains used by 95% (perhaps 99%) of the games for mobile. Unity3D, Unreal Engine, and a few others simply dominate mobile gaming on both iOS and Android and have traditionally targeted a relatively common core of OpenGL ES for both platforms.

Due to this I find it unlikely that the API itself will act to lock anybody into iOS from a classic API perspective – everybody is using an engine or framework and indeed tools much higher up the value chain. But… Metal could very well offer an iOS performance lock-in on mobbile.

The most realistic rendering games will look great on iOS until Google does deeper/better driver work on Android. As it turns out, that is crazy hard due to the diversity and fragmentation of Android hardware. In this respect, if Metal is indeed a 10x speed improvement or a 10x detail improvement, it may very well be a masterful move – non-iOS games from the same engines will just look lousy on Android. Wow.