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:
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.