微软大型免费“公测”系统Windows 10的装机量目前已经达到3亿台,市场份额则达到14.5%,成为全球使用人数第二多的操作系统,距离10亿台的目标指日可待。毫无疑问,已经有越来越多的游戏玩家转向Windows 10系统,其中缘由不言而喻,毕竟微软新一代图形API——DirectX 12(以下简称DX12)是Windows 10专属的,那么想玩新游戏,体验最精彩的3D特效,非Windows 10莫属。
据不完全统计,微软大型免费“公测”系统Windows 10的装机量目前已经达到3亿台,市场份额则达到14.5%,成为全球使用人数第二多的操作系统,距离10亿台的目标指日可待。毫无疑问,已经有越来越多的游戏玩家转向Windows 10系统,其中缘由不言而喻,毕竟微软新一代图形API——DirectX 12(以下简称DX12)是Windows 10专属的,那么想玩新游戏,体验最精彩的3D特效,非Windows 10莫属。
Windows 10巨大的装机量也推动了DX12游戏的蓬勃发展,今年以来已经有越来越多的游戏支持DX12,或者是在游戏正式发售后通过补丁升级了对DX12的支持,想要找一款DX12的游戏仔细体验一番已不再是件难事。不过,对于DX12带来的诸多变化以及AMD、NVIDIA和Intel对DX12的支持情况,很多读者还是一头雾水,那么,DX12里到底都有什么新东西?支持DX12的游戏又有哪些呢?
有关DX12带来的技术革新,我们在去年已经做过一次全面解析,着重介绍了DirectX 12到底带来了什么,在本文中,虽然我们还聚焦于DX12,但与上次的侧重点有所不同,DX12的一些技术介绍、功能等级之前已经说过了,这次我们的着眼点则是AMD、NVIDIA和Intel最新显卡对DX12的支持情况以及它们之间的主要区别,另外,我们还会提及一些已上市或者即将上市的可支持DX12的游戏。
DX12到底带来了什么新功能?
尽管本文不会再长篇赘述DX12的新特性,但我们还是有必要重温一个话题:DX12带来了什么新功能?去年我们说过,这次还会再说一次,因为即便Windows 10装机量超过3亿了,这个问题对不少用户来说仍是个困惑——自己使用的显卡到底支持什么DX12功能。
从最初曝光的类似AMD Mantle那样的底层优化,再到支持AMD、NVIDIA显卡混合工作,微软的DX12确实带来了不少新技术和新功能,而就API层面来说,DX12的新功能可分为三个层级:
首先是底层的优化,DX12降低了系统开销(Low Overhead),给予开发者更多的控制(More Control),并支持异步运算(Asynchronous Compute)。其中,对用户来说,低开销这一项是最重要的,我们此前见过的DX12优势特性展示大多基于这一点,它跟AMD的Mantel优化很相似,可以提高游戏性能,有效利用多核处理器。另外,异步运算也值得一提,AMD与NVIDIA在这一点上有分歧,产生过不少争议,后面我们还会重点谈到。
DX12带来的渲染功能主要是平铺资源(Tiled Resoure)、归类UAV访问、无绑定(Bindless),这属于DX12 Feature Level 12_0级的要求。一般来说,支持DX12 Feature Level 12_0已经算是完整支持DX12了,不过类似此前的DX10.1、DX11.1一样,DX12还有个更高级的Feature Level 12_1,其中有保守光栅(Conservative Rasterization)、光栅顺序视图(Raster Order Views)等新功能。
参考前面那张NVIDIA的PPT,需要留意的是,NVIDIA在这里“耍”了一点小花招——从图中的结构划分来看,我们很容易误认为立体平铺资源(Volume Tiled Resources,简称VTR)也是Feature Level 12_1的要求,但实际上它并不是,VTR是DX11.3里的功能了,在DX12中并不是必备要求。
实际上,微软对DX API的支持定义了多个级别,上述很多技术其实并不是DX12中才出现的,此前的DX11及DX11.1中就被列为可选功能了,在DX12中只是把平铺资源、无绑定等特性变成了必备或者提升了功能级别。
具体到每个技术上,它实际上也是分为多个等级,可分为Tier 1(简称T1,玩魔兽的玩家对这种称呼应该不会陌生)到T2再到T3,不过,本文并不会详细介绍T1到T3的区别,也不会详细介绍上述技术在图形渲染中具体的作用,因为这些东西说清楚不容易,而且内容太枯燥,非专业人士不会对此感兴趣的。
我们只要知道的是,微软在DX FL 12_0、DX FL 12_1上的定义比较宽松,反倒是NVIDIA、AMD这两家厂商私下里争得异常激烈,就和之前的DX10.1及DX11.1/11.2完整支持一样,只不过这一次是NVIDIA占“上风”,他们的显卡可以支持到DX FL 12_1,而AMD的GCN架构只支持到DX FL 12_0,对可选的保守光栅、光栅顺序视图等技术并不热心。
AMD、NVIDIA、Intel显卡对DX12的支持程度
那么AMD、NVIDIA再加上Intel,这三家的GPU对DX12到底支持到什么程度呢,为此,我们专门制作了下面这张表格,从底层优化再到高级特性,这张表格基本上都囊括了,其中对尚未正式确认的Polaris、Psacal及Kaby Lake也给了目前所知的信息,当然,这部分内容就只供参考了。
在底层优化方面,这三家的GPU做得都不错,AMD承诺GCN架构、NVIDIA承诺Fermi及之后、Intel的Haswell及之后架构都可以支持。
异步运算方面值得重点说,AMD、NVIDIA双方已经打过不少口水战了,是目前的热点。从技术上来讲,异步运算是指GPU在运算过程中同时支持图形及计算队列,大家可以把它理解为CPU指令的顺序及乱序执行,异步运算就相当于乱序指令,可以不按顺序处理指令,它支持图形及计算指令混合运算,这样做的好处就是提高效率,进而提升性能。当然,异步运算不仅能让游戏受益,VR应用中也可以受益。
在这两家中,AMD强调他们从GCN架构开始就重视异步运算,这几代架构都做了支持,当然每代GPU支持的混合指令数量并不完全相当,但确定都是支持异步运算的。
AMD强调他们是唯一完整支持异步运算的,言外之意就是NVIDIA或者Intel的GPU不支持异步运算,这在《奇点灰烬》游戏测试中也有过交锋,有一种说法是NVIDIA的GPU功能上是支持异步运算的,但驱动没做好,但这个解释其实很有问题,驱动之前没做好可以理解,但是直到现在也没做好,这恐怕就是有问题了。
对此,我们查阅过相关资料,个人倾向于认为NVIDIA直到Maxwell 1.0架构中都是不能真正支持异步运算的,只能执行纯图形指令,不支持混合指令,Maxwell 2.0架构中可以支持混合指令,但性能较之对手略逊一筹,直到Pascal架构中,这个问题可能才得以解决——此前发布新闻中,NVIDIA强调了Pascal架构的异步运算性能。
至于Intel核显,在Intel官网可以找到有关MIC众核架构中对异步运算的支持,但目前没证据证实他们的核显是否支持异步运算,对此,个人倾向于认为不支持。
在DX12的几个主要特性中,NVIDIA从Maxwell 2.0架构开始做得确实比AMD好了,并且还支持DX12_1,不过话说回来,DX12_1本来就是可选的,并非强制标准,实际应用中开发者选择什么级别的功能来开发游戏也比较复杂,在这一点上,NVIDIA的领先并不足以击倒AMD,因为后者的GCN显卡也做到了DX12_0支持。
AMD的变数发生在Polaris及Vega显卡上,也就是GCN 4.0架构,此前AMD并没有公开新架构的DX12支持程度,乐观点看,AMD可能会趁机补足对DX12_1的支持,减少被NVIDIA攻击的弱点,不过真要是不做改动的话,大家也不要惊讶,这也没什么大不了的。
主要的DX12游戏一览
在API层面,DX12_0还是DX12_1的支持其实并没有那么重要,影响用户的还得看DX12游戏,这里简单统计了已上市及未上市但基本确定支持DX12的游戏,虽然这不是所有DX12的列表,但挑选的绝对是目前的热门或者知名游戏。