EA将推出15款游戏支持Mantle
AMD虽然在这一代仅发布了一款新GPU核心,却带来了一个足以震撼PC游戏界的全新理念。通过像游戏机那样直接控制硬件,减少系统中间层,来充分发挥GPU性能。足够好的理想,如果不能变成成品那永远是理想。尽管之前说的全平台导入Mantle这一预计被索尼和微软否掉了,但我们还是看到了PC上的《战地4》Mantle版没有停止开发,并且称在年底会与大家见面。
在没有看到成品,大家还在期盼的同时,AMD开发者峰会在美国圣何塞会议中心召开了。会议的游戏图形阶段,EA方面的寒霜引擎开发技术指导Johan Andersson主持了名为「Mantle for Developers」的讲演。日本游戏媒体4gamer.net发布了一篇对此的报导,我们将此文予以编译,看看从支持Mantle的游戏开发商的角度,Mantle的当下、和前景是什么样的。
AMD在美国召开的开发者峰会「AMD Developer Summit 2013」(以下简称APU13)上,对GCN架构Radeon专用的独家图形API「Mantle」进行了详细说明。在此之前的R9 290、280等系列评测中我们也向大家简要介绍过。
▲ Johan Andersson (EA DICE,寒霜引擎技术指导)
大会的第三天,即北美时间2013年11月13日,重点转向了关于游戏的图形运用,举行了名为「Mantle for Developers」的讲演。本文主要说的就是这一方面的内容。
主持讲演的是EA DICE技术指导Johan Andersson。负责寒霜3引擎的开发,本次通过「Battlefield 4」(以下简称BF4),从对Mantle支持的立场,对Mantle的优势与可能性进行解说。
● EA准备令15款作品支持Mantle
Andersson说,Mantle版BF4以12月下旬发布为目标,现在正在开发进行中。实现方式是将PlayStation 4的渲染引擎装载进Mantle中。开发时间实际上仅有两个月。
但是,「由于需要更深层的优化与多GPU的支持,且要将PC版的图形要素全部加入,因此绝对不是PS4版的移植」。
与BF4同样使用寒霜3引擎的「植物大战僵尸:花园战争」也正在向Mantle移植中。这款游戏并非面向高性能独立显卡使用,而是以APU为对象,以逼近高配置PC的图形效果为方向进行开发。
另外除EA DICE之外,Electronic Arts公司(以下简称EA)旗下其他工作室负责的游戏,已经确定有15款以对Mantle的支持为前提进行开发。比如《极品飞车18;宿敌》 《龙腾世纪:审判》 《境之边缘》系列的新作与《星球大战》的新作,还有《质量效应》系列等,都准备支持Mantle。
▲ 《植物大战僵尸》支持Mantle,目标是APU流畅运行
▲ 不限于EA DICE,EA公司各工作室共计15款作品都准备支持Mantle
绕开繁琐的传输机制 缩短延迟
Andersson这次要说的并不是这些游戏作品,而是要谈谈Mantle到底能做什么。所谓「通过特定的架构,弱化虚拟层,以达到直接控制GPU」的Mantle,具体是怎么实现的,就有必要进行一番了解了。事实上Andersson也是从这开始谈起的。
目前PC上使用的的DirectX(Direct 3D)和OpenGL图形API,是以不同厂商(目前主流的AMD/ATI、nVidia、Intel,更多的已经成为历史的如S3、3Dfx、3DLabs、Matrox等等)制造的不同架构GPU为对象开发的。使用这些API进行开发,目的是同样的应用程序最终得到同样的运行结果(性能上先不论)。
这些API登场的90年代,是很多半导体制造商独自架构的GPU投入市场,百家争鸣的年代。因此要在不同架构间的差异之上,让所有的GPU都能有同样的图形表现,这一「稳定兼容」的保证,造就了这些图形API。从显卡的角度上看,也就是一款显卡需要「支持DirectX」「支持OpenGL」,才能保证可以运行市面上的应用。
▲ 从游戏(应用程序)角度来看,DirectX与OpenGL这些API就像黑盒,即只知道外部接口,内部是不为所知的
为了实现稳定兼容、弱化硬件架构差异,因而使用了复杂的硬件抽象层。由此一来,从应用程序的角度来看,DirectX或者OpenGL就像是黑盒一般的存在。
然而这种做法虽然取得了很好的通用性,但一个弊端就是,硬件本来所持有的,即原生的性能无发完全发挥。Andersson指出:「现在的DirectX和OpenGL,即便是在搭载多核心CPU的电脑上,向GPU传送指令和数据时,多核心的优势也得不到发挥」。
在这里有必要简要说明一下游戏图形的描绘过程:
——应用程序呼出DirectX或OpenGL的API
——API将标记「让GPU处理」的指令存储至内存中称为「指令缓存」的一个区域。
——图形驱动程序将这些命令依次发送至GPU
——根据驱动程序发送的顺序,GPU依次执行
这里面重要的一点是,DirectX或OpenGL的情况下,对「指令缓存」的管理并不是由应用程序,而是由API执行。于是DirectX或OpenGL,则一直在改善着处理「指令缓存」时多核心CPU的充分利用。
然而API与应用程序的线程管理是完全脱离开的,应用程序方面无法做到完全并行的细化控制。相反,一些场合还会出现应用程序的执行线程与API相冲突,进而造成的就是处理延迟。Andersson指出的「多核心优势得不到发挥」就是指的这一点。
▲ 上面幻灯片显示了DirectX与OpenGL「并行处理的局限」。核心数虽多,「Render(渲染)」进程仅能由「CPU 1」进行处理。
因此Mantle将性能最大化的路径,就在于与DirectX或OpenGL不同的方法。Mantle的「指令缓存」管理设计为,不经由指令缓存,由应用程序直接向GPU发送指令。
这样一来,各CPU线程拥有独自的指令缓存,可以依次向GPU传送。由此一来,多核心的执行效率得到提高,到达GPU的延迟缩短,结果就是硬件的性能得到充分的发挥。
▲ Mantle的情况:指令缓存控制自身实现每个CPU核心并行化处理,提高了处理效率
实现至今为止无法做到的高度并行?
现在的GPU不仅有图形渲染功能,还具备GPGPU(通用计算)、显存与系统内存之间的传输处理「DMA」(Direct Memory Access)的执行部分。这些执行部分,毫无疑问同样是通过指令缓存所存储的指令来执行的。
▲ 现代GPU包含图形渲染(图形)与GPGPU(运算)、DMA这些功能
▲ Mantle的GPU处理优化,是通过CPU方面应用程序的协调运作实现的
Mantle实现了让应用程序管理指令缓存,不再需要中间层,应用程序可以直接控制GPU的各执行部分运作。「GPU的运作将变得与黑盒式的DirectX或OpenGL大大不同」,Andersson这样描述道。
有了Mantle,应用程序则可以实现「某一图形渲染工作正在执行的其间,DMA得到命令,将下一个渲染所需要的数据从系统内存传输至显存」这样的协调动作,也就是减少了等待时间。
再或者,GPGPU方面一边运算光照,着色器则同时生成阴影,最终两方面的结果加以合成,这样也可是可以做到的。
▲ 协调工作优化的实例。这里图形方面处理渲染的途中,DMA方面复制接下来需要的数据
▲ 其他的优化实例。GPGPU方面处理光照,同时图形方面处理阴影
可能有人觉得GPGPU理应是用作图形以外的用途,作为图形使用这一点比较奇怪。但这正是 PlayStation 4与Xbox One这一代游戏主机在游戏图形上所使用的手段。寒霜3引擎就使用了这一模式,利用GPGPU处理culling与后期效果。
回到Mantle。Andersson称,应用程序获得了控制图形渲染与GPGPU、DMA的各执行部分的权限,为了使应用程序可以做到适宜地覆盖并行处理,Mantle「对渲染管线进行了革新」。
▲ 通过Mantle,可以实现GPGPU进行几何处理与栅格化,与图形渲染同时协调工作,这是至今为止无法实现的。
比如,有了Mantle,可以通过GPGPU执行几何处理与光栅化处理,仅将最后的像素着色任务交给着色器,这样的话就可以得到相当实用的处理速度。
具体的,Mantle可以在游戏图形中处理庞大的顶点数据「点云(point cloud)」或皮克斯在CG动画爱用的「微多边形化(其实就是曲面细分?)」手法。也就是说,Mantle可以实现不需要三角形(多边形)网格3D模型的游戏图形。
PlayStation 3游戏图形流行利用Cell CPU内的协处理器进行特殊的顶点着色,这一类似通用计算的手法,Mantle使用起来也是毫无问题的。将不需要描绘的多边形进行废弃的culling操作、判定可否遮蔽的「Occlusion Query(遮蔽探査)」这些任务,可以通过GPGPU进行处理。
这样一来,GPGPU与着色器并用的手法,达到了GPU与CPU充分利用,「支持Mantle的应用程序中,可能会实现全新的渲染机制」,Andersson对此表示期待。
成败由其他厂商的支持与否决定?
Mantle现在仅在Windows环境下提供。因为Mantle目标硬件为PC,Windows作为PC游戏大量占有的平台,被优先支持也是理所当然的。
不过Andersson希望Mantle也在其他的平台上展开。具体的对象,Andersson称,希望既有Linux与Mac OS,也有Android等移动操作系统。
Andersson说,假设Mantle支持了Linux,Valve计划的基于Linux的游戏机「Steam Machine」的存在就变得非常有意思。另外,移动设备上,他主张,「正因为绝对性能较低,Mantle更具存在意义」。
▲ Andersson主张将Mantle覆盖面扩张至Linux、Mac OS,以及移动平台
▲ Andersson指出,Mantle的普及需要多家厂商的参与,言外之意就是NVIDIA的参与是必要的
先不说PC上运行的Linux,这是少数群体。在移动设备领域上,AMD还没有涉足,单单要求AMD一家推进Mantle是很困难的。若要实现Mantle向移动设备推进,需要与涉及SoC的其他图形厂商携手共进才行。
▲ AMD Mantle首席架构师、原ATi图形开发人员、《无冬之夜》《F.E.A.R》系列开发参与者 Guennadi Riguer
在前几天的APU13上,AMD Mantle首席架构师、明星编程师Guennadi Riguer称,「NVIDIA等GPU竞争对手在技术上也可以参加『Mantle计划』」。
Andersson也基于此,主张:「从现代的GPU架构上来看,其他制造商的GPU也可以导入Mantle框架」,「希望所有的GPU都能实现通过Mantle的控制」。
9月份Mantle发布,从这一时间可以看出,AMD想借PS4、Xbox One所采用GCN架构GPU这一优势,将Mantle推至两大主机使用。然而发布一个月之后,尽管得到游戏开发者群体良好的回应,但对于Mantle今后能否形成一股势力,却并不是非常乐观。
在Mantle上,AMD现在似乎在期待顶尖游戏工作室的明星编程师、NVIDIA等其他的GPU制造商(Intel、移动平台的PowerVR、高通等)的回应和建议。但要得到这些支援,AMD亟需一些动作让他们看到(Mantle的实物,至少是雏形)。不过,很快了不是么?
◇ 4gamer.net 作者:西川善司
编辑结语:
与大家之前看到的一些论调不同,从Andersson的话中,AMD并没有希望借Mantle给NVIDIA等竞争对手予以重击,而是侧重于GPU性能的挖掘。不是商人的姿态,这次的AMD更像是一个忠实的开发者。当然不排除意识到不能闭门造车,开放才会有希望而转变态度的可能。总之不论过程怎样,现在看来,Mantle似乎又将成为一个共享的产品或是方案。
不过这里有一个前后矛盾的地方,就是在「共享」这一实现上,Mantle本来是基于对应的专用硬件进行将中间层「瘦身化」的产物。如果做到令多家GPU架构共用,那么又会像DirectX类的API一样臃肿起来,也就违背了Mantle的初衷。
或许AMD想让其他厂商参与的只是这一个模式,而非最终成品。那么届时会有对应Radeon的Mantle,对应Geforce的Mantle等。这样一来,GPU厂商众则就是以各自的自家高效API来替代DirectX的Direct 3D部分。尽管Direct 3D不是DirectX的全部,但作为DirectX重要的部分,与微软之间出现竞争是不可避免的。同时出现多套互斥的API之后(同一款PC游戏就会有至少3套),对游戏开发者的压力也会几倍地增长。预算拮据的游戏厂商可能会由于无法推出对应全部显卡的游戏,而出现旗下某款游戏仅支持某家显卡而不支持其他显卡的情况。从各方面考虑,目前Mantle站的并不是很稳。
总之在第一款Mantle游戏没有推出之前,一切都是纸上谈兵。待到基于这款API的游戏真正登场,然后Mantle是将继续成为话题,还是「就没有然后」了呢,我们拭目以待。
via:硬派
|