盖帝创业未半而中道归隐,今三分天下,此诚危急存亡之秋也。——《三机演义·后出师表》
如果以后的史书这么形容DirectX 12(以下简称DX12)面临的形势,有些人也许就不同意了,人家微软在PC市场还是绝对主流好不好?没错,PC上即便两三年不升级DX12也没谁能夺得了微软的主导权,但是我们把眼光放长远点。
移动平台现在是OpenGL ES的天下,Android及iOS莫不如是,微软虽有WP及Surface RT,但是影响力着实有限;主机平台,Xbox与PS也只能说是平分秋色,微软新一代Xbox One还不占上风。就算是说到大本营,PC平台也不是那么安稳的,AMD都在PC平台推自家的Mantle了,Valve还准备用Linux平台造PC的反,DX标准再不推陈出新,微软真没有危机吗?
我相信有,而且微软就算反应再迟钝,这些变化也不可能觉察不到,大概也不会任由这些厂商跳到自己头上耍威风,反击是免不了的。在沉寂了5年多之后,微软终于正式公开DX12的存在了,而它也将成为微软谋划未来几年在桌面、移动及主机平台的一副好牌。
由于DirectX 12只是公开了消息,并没有详细的资料,即便有,枯燥乏味的技术名词对我们来说也没存在感。不过我们可以从这几年来的发展及要求来逆向推测一下微软的DirectX 12到底应该在什么地方加强,这要比单纯的技术介绍更有意义。
DirectX 12新技术大猜想
1、支持移动GPU,软硬件平台大一统
微软的DX规范在PC平台是绝对的一哥,但在方兴未艾的移动市场上,DX并不是主流,OpenGL ES才是,包括安卓和苹果的iOS平台都支持这一标准,微软在WP手机、Surface RT平板上倒是力推DX标准,但是后者的影响力太低,而且现在的DX11规范也没有针对移动平台优化,只能等DX12新一代标准了。
此外,在传统的合作伙伴AMD、Intel及NVIDIA之外,高通的名字也首次列入其中,他们是移动处理器厂商,是微软在WP手机上的合作伙伴。联系到这两点,不难猜测微软的DX12也准备在移动平台发力了,兼顾PC、移动及主机三大平台。
再往前看,自从鲍帝让位、纳帝登基之后,微软在移动平台准备打个翻身仗了,而且不限于手机、平板这些市场,微软准备把Xbox主机、WP手机、Surface平板及桌面PC连成一体,代号Threshold的Windows 9系统就会考虑多平台融合的问题,而作为底层API的DX规范自然也要跟进大战略。
在此之前,微软的Xbox主机已经采用了PC架构,Surface Pro平板本来就是PC架构,Surface RT及WP手机是以ARM为基础的,但是现在有了高通,DX12显然会支持更多的移动GPU,大一统的目标虽然还远,但现在正朝着这个目标一点点前进。
实际上就在MSDN的官方页面上,微软在发布公开DX12规范之后也悄悄改变了页面设计,增加了Xbox One的图标,之前是没有的。
2、优化硬件底层,学学Mantle亦无妨
在微软确认GDC大会上公开DX12之后,大部分媒体和分析人士都认为DX12会在硬件底层优化下下功夫,直接点说就是类似AMD的Mantke优化那样。实际上微软自己也提到了这个问题,他们在官方公告中说到:
“对PC游戏工业来说,驱动层间接代价(Driver overhead)已经成为一个令人沮丧的问题。在桌面电脑上,它降低了游戏帧数,而在移动系统上,它不仅降低了帧数,也减少了续航时间。在这堂课程上,来自AMD的Graham Sellers、Intel的Tim Foley、NVIDIA公司的Cass Everitt、John McDonald将会讲解OpenGL中已把Driver overhead降低多达10倍的高级概念,这些技术适用于各个开发商及多个平台,他们还会现场演示实际的Demo。”
这番表态意味着微软也认识到了现在的硬件与API之间欠缺优化,CPU导致的间接成本已经不可接受,限制了GPU性能发挥,而GDC大会上他们会讨论这些问题,新一代DX规范理应在这个问题上作出改进。
不管DX的底层API是微软自己开发的,还是分享自AMD,这总归是好事。此前Mantle版《男友4》的实测也证实了,Mantle优化对提升性能还是有效果的,平均能提升7-10%,高端显卡中甚至能提升60%以上。简单的一个API优化就能有如此幅度的性能提升,这可比架构升级有效多了。
AMD推出的Mantle只能由A卡玩家享受,虽然AMD保持开放性,但是NVIDIA并不接招,而DX12一旦支持了类似的底层优化了,NVIDIA显然就能名正言顺地支持了,N卡玩家也能享受到类似的优化效果了。
3、提升GPU通用计算,HSA、CUDA靠边站?
由于设计目标不同,GPU的并行计算能力要远远高于CPU,目前桌面级的高端GPU浮点性能可达5000GFLOPS,是四核处理器的几十甚至几百倍,不玩游戏的时候,这样强大的浮点性能就有点浪费了,所以GPU通用计算也是这几年来的研究热点。
DX11规范中微软已经加强了GPU通用计算的支持,不过这几年来情况又有了新的变化。AMD、Intel的处理器中CPU与GPU的融合程度越来越高,AMD还推出了hUMA统一内存及hQ统一队列等技术,并主导HSA基金会一同推进GPU通用计算。Intel及NVIDIA方面也有各自的算盘,大家的目标都是差不多的。
在这样的情况下,微软也要加强DX规范在GPU通用计算上的支持了。此前在DX10及DX11中有推Direct Compute计算,这是一种基于HLSL(用于DX的高级渲染语言)的运算,AMD在《古墓丽影》中使用的TressFX特效就使用了Direct Compute技术,这种通用的技术好处之一就是不挑硬件平台,AMD及NVIDIA的显卡都可以支持。
微软在DX12中有可能推出Direct Compute 6.0,当然它也不会真的让HSA、CUDA靠边站,毕竟GPU通用计算有不同的标准,除了这些还有OpenCL之类的,大家在不同的领域和层面上相安无事,共同推进GPU通用计算大目标而已。只不过微软主推的DX标准更容易得到AMD、NVIDIA的共同支持,对大家都更有利一些。
4、改进纹理渲染技术,动态纹理何如?
图形渲染本来是DX规范中的核心,不过新的图形技术反倒是这几个猜想中最不明确的一个,因为DX11之后的这几年并没有听说新出了什么3D技术,这不是说3D技术停步不前了,只不过是没有形成DX11中“曲面细分”那样有代表性的升级罢了。
3D技术日新月异,但是形成规范并不是一蹴而就的事,“曲面细分”成为DX11标准之前也是经过了多年发展的,这得有个技术成熟的过程。(这里欢迎专业3D技术人员指正,许多先进的3D技术并不一定在媒体上经常曝光)
从《孤岛危机》及《泰坦陨落》这两种不同的游戏来看,开发商只要舍得高精度建模,不论是CryEngine这样的高科技引擎还是Source这样的经典引擎,实现精美的画质都是可行的,问题在于硬件需求及游戏速度。在这一点上,私以为卡马克提出的“Mega Texture”技术是个不错的思路,这是一种动态贴图管理技术,可以让显卡根据画面需要动态装载、动态卸载渲染资源,好处是可以解放美工的工作量,降低显卡的硬件需求。
这项技术早在《DOOM》系列中就有过应用,后来的《Rage》游戏也应用了这个技术,虽然这款游戏在市场上并不算成功,不过Mega Texture在技术上还是很有启发的。
此前在DX11.2的升级中,微软已经支持Tiled Resource贴图,而AMD提出的方案是PRT(Partially-Resident Texture,部分常驻纹理),这种贴图技术就跟ID的Mega Texture技术有相通之处,而在DX12规范中,不管微软会不会推出类似或者更高级的纹理技术,DX12的纹理渲染技术和性能都应该会有提升。
DX11.2中开始出现类似的贴图技术
5、更先进的4K、3D显示等新技术支持
除了上面提及的几条重大技术事项之外,DX12规范还应该会照顾一下辅助性的新技术,比如4K显示、3D立体等等,实际上之前的DX11.1升级中就涉及了3D立体显示的问题,而今年的廉价4K显示器也多了起来,三星的28寸U28D590D、戴尔的P2815Q都已经开卖,售价都在4000-5000元之间,随着更多显示器及面板厂商的介入,4K显示器的价格肯定会大幅降低的,今年底就可能降至3000元内。
总结:微软DX大融合,多平台并发
从DX9.0之后,每一代的DX规范升级周期大约都在4-5年之间,DX12同样也要前瞻未来四五年的技术及市场,移动平台依然会继续火下去,多种娱乐平台的交互也会越来越强,手机、平板、主机与PC如果使用统一的图形API开发,交互起来也会更容易,这也是DX12规范传达出的第一个关键更新。
作为横跨硬件与软件的“桥梁”,DX图形规范理应发挥更好的衔接作用,但是之前的设计在新一代硬件上是有脱节的,这也是AMD发展Mantle优化的原因之一,越先进的GPU所受限制也越多,发挥不出应该的效能,微软现在也注意到了开发者的需求,从官方的表态来看DX12显然也会做出改进,简化开发,释放GPU应用的潜能,提升游戏性能。