微软大型免费公测系统Windows 10装机量已经达到3亿,市场份额已达14.5%,为全球第二多人使用的操作系统,距离10亿目标指日可待。目前已经有越来越多的游戏玩家转向Windows 10系统,因为微软新一代图形API——DirectX 12(以下简称DX12)是Windows 10专属的。
Windows 10巨大的装机量也推动着DX12游戏的发展,今年以来已经有越来越多的游戏支持DX12,或者说在发售之后通过补丁升级了DX12支持,我们已经不再难为无米之炊。不过对于DX12带来的变化及AMD、NVIDIA、Intel对DX12的支持,很多人还是一头雾水——你们三家别打啦,来给我们说说DX12里到底都有啥?支持DX12的游戏又有哪些呢?
对于DX12带来的变化,我们去年已经做过一次解析,今天的这篇课堂里我们还会聚焦DX12,但这次的侧重点有所不同,DX12的一些技术介绍、功能等级之前已经说过了,这次我们主要介绍AMD、NVIDIA及Intel最新显卡的DX12支持及区别,还有就是一些已上市或者还没上市但已经支持DX12的游戏。
重温第一个问题:DX12到底带来了什么新功能?
虽说不会长篇大论介绍DX12的新技术,但我们还是有必要重温一个问题:DX12带来了什么新功能,去年我们说过了,这次还会再说一次,因为即便Windows 10装机量超过3亿了,这个问题对用户来说都是个困扰——自己的显卡到底支持什么DX12功能。
从最初曝光的类似AMD Mantle那样的底层优化,再到支持AMD、NVIDIA显卡混合工作,微软的DX12确实带来了不少新技术新功能,不过就API层面来说,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中只是把平铺资源、无绑定等特性变成了必备或者提升了功能级别。
微软DX12_1、DX12_0与DX11_1、DX11_0的区别
具体到每个技术上,它实际上也是分为多个等级,可分为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、双方已经打过不少口水战了,是目前的热点。从技术上来讲,异步运算是指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列表,不过挑选的已经是热门或者知名游戏了。