爱思助手

你还记得苹果WWDC2014上神奇的Metal吗?

苹果在今年的WWDC开发者大会一下子给我们灌输了好几个新的名词。作为普通用户,我们从媒体的相继报道了解到了什么是HomeKit,什么是HealthKit,它们分别能为我们做些什么。可其中一个技术却鲜有报道,但是在WWDC发布会现场的演示却是给我们带来最深的印象。那就是苹果的新图形显示技术Metal。

 

何为Metal

 

简言之,Metal是苹果对图形处理器的新编程方法。苹果声称无需对硬件做出改变就能让图形显示性能提升,并称游戏即使在60fps的帧速率下的画面更加细腻。听起来像变了场魔术。实际上的效果怎样呢?

 

Metal能释放硬件

 

总结地说,Metal的确正如苹果所说的,它可以释放硬件的性能,即A7的“本质”。

 

你还记得苹果WWDC2014上神奇的Metal吗?

 

图形处理器本质上就是巨大的“状态机”。把它想象成一块巨大的古老的板,上面布满了开关和表盘,每个开关标注有特定的功能。并不是所有的功能都能一起使用,但你可以随时切换这些开关。你手动进行的切换和操作将决定了“系统的状态”。

 

图形编程员的工作是打开正确的开关,然后用几何体填满处理器。这就是苹果在谈到Metal每帧能够处理的“描绘指令”(drawcall)时所指的。

 

使用OpenGL,目前制作图像的标准是,编程员可以单独打开每个开关,单独调试好表盘。每次做出这些操作后,图形处理器就不得不检查一遍,这个巨大机器的状态是否可行。

 

而使用Metal就不同了。编程员可以先定义好他们想要机器达到的状态,然后简单地应用这些状态即可。他们不再需要单独设置,而且要不偏不倚,正确设置。使用Metal的过程更像是从菜单选择你想要的食物。

 

你还记得苹果WWDC2014上神奇的Metal吗?

 

▲Metal让游戏开发者更容易地发挥设备硬件的性能

 

从用户的角度来看,这些听起来跟他们无关紧要。但是最终效果将产生明显的改善。

 

Metal的魔力

 

Metal是根据如今GPU和CPU的工作原理而设计的,尤其是针对苹果的A7。A7将GPU和CPU整合到一块芯片,共享一个内存池。

 

OpenGL更多是基于这样的理念,即GPU为单独的显卡。但现实是,GPU和CPU共享一个内存池,在这种情况下,Metal能释放更多性能。管理绘图必需的资源变得越来越简单和快速。许多效果,譬如倒影,要求绘制情景到一张图像,然后再把这张图像导入最终情景。Metal简化了很多。

 

你还记得苹果WWDC2014上神奇的Metal吗?

 

▲在WWDC大会上,游戏开发者展示Metal技术带来的惊叹效果

 

现代GPU和CPU都内置多个核心——它们会走,会说,会跑,会跳,并能同时进行这些事情——Metal提供一种方法,通过允许图形命令的多处理,来释放所有这些能力。相比之下,OpenGL总是单线程的,不能使硬件的性能尽可能地发挥极致。

 

Metal释放的不仅仅是图形显示的性能,它还支持一种叫做“通用图形单元计算”的模式——是指,使用GPU运行一些没必要跟图形有关的软件。OpenCL,Mac用户应该很熟悉,是一个面向异构系统通用目的并行编程的开放式免费标准,是用来编写执行GPU的软件的一种开源标准。Metal将这种通用用途的图形编程功能带到iOS。顾名思义,OpenCL与OpenGL非常相似,所以Metal的设计对OpenCL同样有益,正如Metal对OpenGL的益处一样。这里来看,处理器共享内存也有很大的好处。

 

你还记得苹果WWDC2014上神奇的Metal吗?

 

▲Metal的好处很多,不仅仅只对游戏和图形显示有好处

 

多线程访问也是一样的。利用Metal的通用计算能力,我们将开始看到A7发挥出意想不到的性能。一些从OS X移植到iOS的应用程序将能更好地利用iOS的GPU,使软件完成前所未有的任务。

 

听起来很牛逼。但是对普通iOS设备用户来说意味着什么呢?在某些情况下,Metal的进步就像建造大型强子对撞机——我们实际上不知道会有何种机遇,但这是个勇敢的新世界,充满了无限可能。

 

说实际的,用户肯定能看到一些好处,比如载入速度变快了,情景画面更细腻了,大量的应用程序可能都可以使用GPU作为一个计算平台。

 

Metal是重大策略举措

 

你还记得苹果WWDC2014上神奇的Metal吗?

 

▲已有几家大型游戏开发商承诺支持Metal

 

当然,不是因为有了Metal就不费吹灰之力地实现这些。开发者需要采用新系统编写他们的软件。但好消息是,许多大型的iOS游戏公司已经做出这方面的承诺。Unreal和Unity这两大游戏引擎也都已经表示将支持Metal。因此,即使开发者自己不想去思考如何执行Metal,只要使用这两大游戏引擎,就能让自己的软件得到提升。游戏开发者也不需要花精力去重新编写。

 

另外,研究Metal也隐藏着苹果的策略。苹果需要自己控制自己的产品体验。与其把自己的命运跟科纳斯组织绑在一起,苹果宁愿自己掌握,以便在需要的时候尽可能快地改进Metal。(科纳斯组织是是一个由成员资助的,专注于制定开放标准(Openstandard)的行业协会,重点制定免费的API,使在各种平台和设备上创作或播放的多媒体可以得到硬件加速。OpenGL和OpenCL都在其工作组内。)

 

这是一个重大的策略举措,因为这标志着苹果认为他们拥有大量的开发者群体,设备使用的数量也足够庞大,这些资本足以支持苹果走自己的路。同时也意味着,苹果开始更认真地对待iOS游戏体验。在手游市场能否击退传统家机市场的争辩中,iOS游戏体验还无法成为强有力的证据。现在看来,苹果似乎要扭转这个趋势。

 

当然,这也不是说OpenGL或OpenCL要退出舞台,不再发挥作用。还将有许多应用更适合使用它们来编程。只不过Metal更适合现代芯片,如A7。或许等我们看到Metal的魔力,我们才算真正看到A7的魔力。