Unity官方博客:很快为Metal增加支持
Unity公司最近表示很快将为苹果此前宣布的Metal增加支持,而且专门在官方博客为此进行了解释,Unity在博客的问答环节中说,“我们迫不及待的向用户们推出,但还不能给出一个确定的日期。过去我们虽然做了很多的努力,但要正式推出我们觉得仍然需要继续努力,希望能够在Unity 5.0版本推出,随后我们会加入计算着色器支持”。以下是ashkeling整理的译文:
【ashkeling专稿,转载请注明出处】
ashkeling报道/Unity公司最近表示很快将为苹果此前宣布的Metal增加支持,而且专门在官方博客为此进行了解释,以下是ashkeling整理的译文:
在最近的WWDC开发者大会上,苹果推出了Metal,这款新的图形API低成本高效率,专门为A7芯片设计。游戏制作者们可以通过它充分利用iOS硬件,在未来的游戏中获得更好的现实化、细节化以及更加互动化的效果。
我们将很快为Metal增加支持,但在此之前,我们希望解释一下这个新技术,以及为什么它对游戏开发者如此之重要:
Metal概述:
Metal有一些重要的理念,那就是低消耗、更多可预测的表现以及更好的可编程性。
创造并尽可能多的使用前端处理。着色器可以通过代码编译并且可以进行离线优化。所有和渲染相关的操作都可以在渲染开始前创建并使用,包括着色器、顶点布局、图层混合模式、渲染目标格式等。这意味着开发者不再需要对每一次绘图调用进行检查,大量节省了CPU的处理能力。
支持更多的通用多线程。开发者可以从任意线程创作资源,可以从多线程通过多个方式准备绘图调用提交。
所有的iOS设备里都有CPU和GPU共享的内存,CPU的数据不再必须被复制到一些图像存储器中,在你创建缓冲区的时候,只需要找到指针即可,GPU会得到同样的存储数据。
让用户引擎同步处理。为了处理每一个图形场景,必须完成所有的操作并且做大量的猜测。在Metal中,用户负责CPU和GPU之间的数据同步,引擎对需要做的工作有更好的了解,减少了资源浪费。
所有iOS设备中的GPU都使用TBDR(Tile-Based Deferred Rendering)架构。这在Metal API中表现的很明确,尤其是在渲染目标的时候。API不再需要猜测任何事情,所有的帧缓冲相关动作都可以精确完成,比如像素的加载和存储、抗锯齿方案等等。
所有以上特点意味着更低的CPU消耗和更加可预测的表现。
为图形和计算着色器加入了新的C/C++11语言。这还意味着iOS可以做计算着色器、原子操作、任意缓冲区写入以及和在GPU上一样不可思议的声音技巧。
没有延迟,API非常简单而且流畅。而且还加入了超有用的可选‘调试层’,可以精确的检查并提醒你在编程中出现的错误或者失误。
下面,我们来了解更多的细节:
绘图调用问题
如果你在做游戏,尤其是手游,你或许会了解绘图调用问题。每个在游戏中渲染的物体都需要同样的CPU消耗,在目前的手游平台,这意味着你的渲染对象只有几百个。在游戏中,你一定非常想把CPU用于做其他事情,比如游戏玩法、物理、AI、动画等等。Unity有办法最小化绘图调用产生的CPU消耗,包括动态和静态计算、遮挡剔除、LOD和DB(distance-based)图层剔除,你还可以把相邻的物体合并,把文本放入图形中以减少素材数量。
有个非常不错的问题是,为什么渲染的时候必须消耗CPU呢?毕竟,真正的渲染工作是由GPU来做的。
其中有一些CPU消耗是引擎产生的,CPU必须重做可视目标,确定哪些着色器是需要渲染的,哪些光线影响哪些物体、需要使用哪些素材等等。有些需要缓存,有些是多线程的,总体来讲,这是独立平台的编码。在Unity发布的每个引擎版本中,我们都努力优化这方面的工作,而Metal基本上不会影响到这些。
然而,CPU消耗有一部分是用在‘图形API和驱动’环节。由于游戏之间有所不同,这部分的消耗有时候会非常大。Metal试图把这部分消耗尽可能消除,主要是通过对设备进行更好的适配,减少OpenGL ES过去那样的大量猜测工作。前端渲染创建和检查、细化和渲染目标加载以及存储相关的操作,在API上不进行实时操作,这一切都意味着更低的CPU消耗。
在我们目前测试的基础上,API和驱动消耗减少到了CPU时间的百分之几。这和之前15%-40%的CPU消耗相比,简直是质的飞跃。这意味着,目前我们的CPU消耗主要来自于编程方面。我像,我们还需要继续为之优化。
我们还希望通过多线程使用Metal进行渲染提交操作,这也可以带来非常有趣的优化机会。
计算方面的机会
有了Metal,GPU可以用来在传统的顶点加碎片渲染区域的计算工作,也就是‘计算着色’。基本上,Metal可以在GPU内部的微型处理器上运行任何一种‘平行计算’,计算着色器还有‘本地存储’功能,GPU上的内存可以让这些平行计算之间共享数据。这些特殊的存储可以让GPU做一些此前传统的顶点和片段着色器不可能实现的工作。
计算渲染器有很多领域可以使用,比如后期处理效果优化、粒子系统、光影效果等等。虽然我们还没有在Unity中使用太多的计算着色器,但我们希望未来可以使用更多令人期待的东西。
最后,Unity在博客的问答环节中说,“我们迫不及待的向用户们推出,但还不能给出一个确定的日期。过去我们虽然做了很多的努力,但要正式推出我们觉得仍然需要继续努力,希望能够在Unity 5.0版本推出,随后我们会加入计算着色器支持”。另外,需要注意的是,Metal的硬件需求是iOS 8和A7芯片。
如若转载,请注明出处:http://www.ashkeling.com/2014/07/168786