微软 DirectX 12 到底带来了什么?
微软的Windows 10今年夏天就可以发布了,除了界面和操作上的改进之外,Win10最让游戏玩家动心的部分莫过于DirectX 12(以下简称DX12)了,这是新一代的图形API规范,那么它到底能为我们带来什么样的变化呢?为了及早用上DX12,我们又该做些什么准备呢?
DX12将带来3D游戏性能、画质上的提升
对于DX12,我们说起来并不算陌生,超能网前前后后曝光DX12消息的新闻和评测有几十篇了,大家对DX12相对DX11的性能提升印象很深刻 吧,不过另一方面,DX12对我们来说还是“熟悉的陌生人”,我们了解其中的一部分,但是更多的人还没有最好迎接DX12的准备,今天这篇文章将详细介绍 DX12到底带来了哪些变化,又有哪些显卡和平台将会支持DX12。
1、DX12带来的新变化
我们都知道微软会在今年的Windows 10系统带来DX12,也从之前超能网连篇累牍的报道与测试中知道了DX12改善了底层硬件效率,多线程支持更好,游戏性能更强。但大家对DX12的完整 印象依然很模糊,它到底能为我们带来什么新变化,使用DX12 API的游戏会在画质、性能等方面有质的提升吗?
DX12可以分为三个层次
就像之前的DirectX规范一样,DX12实际上也可以分为多个功能不同的功能层(Feature Level),不过DX12这次还多了一个底层优化,所以DX12规范可以视作三个不同层级:
·D3D 12 Low Level API:这部分实际上是见诸报道最多的一部分,DX12相比DX11性能大提升就是底层优化的功劳,这也是DX12最吸引人的一点,不论是对游戏开发者还是对游戏玩家来说都是如此。
底层优化部分包括Low Overhead(低开销)、更多的控制及异步计算(Async Compute)等多个部分,低开销类似AMD提出的Mantle优化,后者也是大幅改善了游戏的多线程效率,降低了驱动层开销,现在这部分已经可以使用 3DMark的Driver Overhead做测试了,详情可以参考我们之前做过的两篇测试:
·DX12 Feature Level 12_0:前面的底层优化部分实际上是帮助DX12打通了“经脉”, 提高了开发者的潜力,但那些并不涉及具体的招式——Feature Level 12_0这部分开始涉及更新的3D渲染方法,包括平铺资源(Tiled Resoure)、归类UAV访问、无绑定(Bindless)等等,其中多项功能实际上DX11.1中就有了,不过DX11中多是T1级别的,现在的则 是T2级别的。
·DX12高级功能Feature Level 12_1:跟以往的DX11.1/11.2一样,DX12还有 比Feature Level 12_0更高级的Feature Level 12_1功能,包括立体平铺资源(Volume Tiled Resources)、保守光栅(Conservative Rasterization)、光栅顺序视图(Raster Order Views)等,这些功能通常属于可选支持,但它们可以更好地提升开发者的效率或者游戏画质,同时对显卡的要求也更高。
以上三部分是DX12规范的主要内容,但这些还不是DX12的全部功能,还记得之前曝光过的DX12黑科技——A、N显卡混合交火吗?微软确实在 DX12中尝试了不同显卡的混搭技术,该技术名为Muti-Adapter(多显卡适配器),它就可以把不同架构的GPU联合起来渲染。
DX12的多GPU混合渲染演示
微软的Build大会上做过一个多显卡的演示,分别使用独显及独显+集显两种方式渲染635帧的UE引擎,其中独显渲染帧速35.9fps,支持 Muti-Adapter的集显+独显平台成绩为39.7fps,小幅优势领先了独显平台。(提升不大的原因主要是独显与集显的性能差距通常很大,并行运 算的时候不会有CF/SLI这样的接近2倍提升,之前Lucid的Virtu技术也是如此。)
Muti-Adapter技术另一个好处就是多卡下对GPU显存的利用率更高,以往不论是CF还是SLI技术,DX只能将其中一个显卡的显存存储数 据,另一个显卡的显存就浪费了,比如GTX 980 Ti显卡双卡SLI时,其总的显存容量还是4GB,多卡互联时其GPU容量并不能翻倍。
现在有了Muti-Adapter技术,它就可以合并所有的显存而利用了,显存容量可以翻倍了。(微软的WDDM 2.0模型还支持了GPU虚拟内存,猜测跟这个也有关系)
总之,微软的DX12最重要的变化就是带来了底层硬件优化,它改善了多线程效率,降低了驱动开销,这对游戏玩家和开发者来说都是大有裨益的。3D渲 染技术上DX12也有更新,而在多卡互联上,DX12有可能成为黑马,如果最终对AMD、NVIDIA及Intel核显异构运算支持到位,那么游戏玩家届 时就不会受CF或者SLI的限制了。
2、DX12显卡兼容列表
巧妇难为无米之炊,不过在解决米之前我们得先解决做饭用锅问题——那些显卡才能支持DX12,或者说完整支持DX12,从前面的介绍来看,支持和完整支持还是有些不同的。
对于DX12支持,我们之前听到的最多的就是AMD、NVIDIA各自宣称他们的GCN架构、Fermi及之后的架构都会支持DX12,Intel也是自第四代智能处理器、也就是Haswell开始的核显开始支持DX12。
这方面,AMD之前公布了具体的DX12兼容列表了,NVIDIA前不久也公布了自家的DX12兼容名单,不过NVIDAI还趁机“黑”了AMD一 把,因为AMD的显卡目前并不完整支持DX12规范,但N家的GTX 980/980 Ti等GM2xx核心的GPU可以完整支持DX12_1。要知道在DX11时代,AMD的显卡能完整DX11.1及DX11.2规范,而NVIDIA的显 卡只能支持到DX11.0,现在只能说是风水轮流转了。
AMD、NVIDIA、Intel对DX12规范的支持度
AMD、NVIDIA、Intel三家厂商的GPU对DX12的详细支持规格可以参考上图,AMD的GCN 1.0架构(多数HD 7000及后来的马甲)只能支持兼容DX12、支持到Feature Level 11_1,HD 7790及R7 260/260X、R9 285等GCN新核心的显卡可以支持到Feature Level 12_0,但目前所有显卡都不能完整支持Feature Level 12_1功能。
AMD显卡的DX12支持列表
NVIDIA方面,虽然Fermi及之后的显卡都可以兼容DX12,不过真要支持DX12功能还得看Maxwell架构,其中GM1xx第一代 Maxwell架构的显卡可以支持到Feature Level 12_0,包括GTX 980/970/960/Titan X/980 Ti在内的第二代Maxwell架构则可以支持到Feature Level 12_1。
Intel方面,Haswell之后的核显都可以兼容DX12,但说到Feature Levei支持,Haswell及最新的Broadwell依然只能支持到Feature Level 11_1。
当然,事情也得分两面看,NVIDIA当年不能完全支持DX11.1,就说DX11.1是可选功能,实际影响不大,现在他们能完整支持DX12,就 开始宣传DX12_1的好处,实际上DX12_1的3D功能也不会有什么质变,实际游戏中也难说能带来明显的体验差别,大家对这个问题还是淡定就好。
3、DX12平台及软件支持
迈过硬件支持这一关之后我们还要面临软件平台支持的问题,这会涉及到我们用的操作系统选择。
目前能确定支持DX12的系统就只有微软全力打造的Windows 10系统,以往期待的Windows 7支持DX12的美梦已经破灭了,不过微软多少也发了点善心——Windows 7/8/8.1用户可以免费升级Windows 10系统。
微软之所以如此决绝地让DX12成为Windows 10专属,除了保证Windows 10只许胜不许败的战略之外,还有一个因素不能忽略——Windows 10升级了WDDM 2.0显示驱动引擎,支持DX12必须先支持WDDM 2.0,Windows 7支持的还只是WDDM 1.1。
Widonws 10是目前唯一确定支持DX12的系统
WDDM 2.0中最主要的变化是支持GPU虚拟显存寻址(GPU virtual memory),所有GPU物理内存都被抽象成虚拟内存,由GPU负责管理,每个步骤都可以有自己的虚拟内存。另一个新功能是驱动常驻(Driver residency),显存管理器会数据从命令缓冲器提交到驱动层之前所有分配空间都是常驻的,为此还增加了DDI设备驱动接口。
支持WDDM 2.0和Windows 10是支持DX12的一个前提,我们现在依然不能确定他们与DX12之间到底谁是因谁是果,但可以肯定的是微软只让Windows 10支持DX12更多地还是出于商业策略,Windows 7/8/8.1在技术上不见得就不能支持WDDM 2.0及DX12,现在我们能做的只能是祈祷Windows 10系统能跟Windows 7一样大获成功,成为游戏玩家的首选平台,不然以后可有得纠结了。
4、支持DX12的引擎及游戏
有了DX12显卡和Windows 10平台,支持DX12还是只卖出第一步,这些内容相当于做饭的大厨和厨具,饭菜是否好好吃还得看食材——DX12游戏,这一项是目前进度最慢的,毕竟这 是最顶层的,落后于硬件和系统平台是必然的,反过来说软硬件平台没准备好的话,DX12游戏也不可能运行起来。
支持DX12一劳永逸的方法还是得靠游戏引擎,目前已经支持DX12的3D引擎有EPIC的UE 4.4、Crytek的CryEngine、Unity的Unity 5、Oxide Games的Nitrous等,已有的游戏包括《九阳神功》、赛车游戏Forza 5等,前者是CryEnging引擎的,后者是UE引擎的。
还有很多游戏厂商自己开发的引擎支持DX12,比如Build大会上惊艳四方的Square Enix《最终幻想》所用的 Luminous 引擎打造的的“巫女哭泣”(Witch: Chapter 0)Demo等。
《九阳神功》将成为首个支持DX12的国产游戏
值得一提的是,在首波DX12游戏中,国内的游戏厂商这次也走在了前列,Build大会上游戏蜗牛就作为嘉宾发表了《九阳神功》(英文King of wushu)游戏的开发经历,它就使用了CryEnging引擎并支持DX12,当然还有NVIDIA的Gameworks特效。
《奇点灰烬》最快6月就能上市了
大部分DX12游戏发布上市也要等到今年底的圣诞节期间了,一些游戏大作可能要到明年,不过我们最早能见到的DX12游戏很可能是《奇点灰烬》 (Ashes of the Singularity),这款游戏使用的Nitrous引擎也不默认,关注过Mantle的玩家对该引擎另一个作品《Star Sworm》应该很熟悉,它能支持Mantle也就能更好地支持DX12。
不过这款游戏之所以这么快上市很可能是它只是支持了DX12中的底层优化功能,这部分功能之前支持Mantle的时候应该已经做好了,但它应该没有完全使用高级DX12渲染功能,否则开发进度上不会这么快。
总之,DX12虽然是Windows 10功能中的一部分,但对PC游戏玩家来说DX12比目前的DX11性能更强、功能更多,对移动平台来说,DX12也有着提升性能甚至降低功耗的奇效 (GPU利用率上升,CPU功耗可以降低了)。相比DX11需要全新硬件不同,DX12可以兼容AMD、NVIDIA、Intel的DX11显卡,虽然更 高级的功能还是需要全新的硬件,但DX12相对DX11来说总体上并没有提高硬件需求,这种平滑升级更有利于玩家升级到Windows 10平台。
出处: 超能网