是否兑现了承诺?DirectX 12在PC游戏业界的现状

2016年是非常有趣的一年,我们看到了微软最新API,DirectX 12正式问世并采用在游戏中。DX12将为开发组开放显卡硬件的底层权限,应该会让游戏画面表现更流畅。相比之下,主机游戏的开发组一直都拥有硬件的底层调用权限,因此许多开发组都在期待PC平台也能提供类似的API。


但最终结果来看,今年大多数PC游戏都没有实现去年最初的期待。DX12目前的表现也并不像一个底层API应有的水平。事实上,DX12的速度反而要比DX11更慢,每一款游戏都是这样。前几次DX驱动更新都带来了画质提升,因此新版DX帧数下降还有情可原,但这次的DX12并没有带来新的画面特效,所以帧数下降无法令人接受。


我们对2016年所有支持DX12的游戏进行了回顾测试,几乎无一例外地,DX11版的表现要比DX12更好,帧数更高的同时画面效果完全一致。


《古墓丽影:崛起》在DX11下的帧数更高,不过少数场景下DX12表现更好。不过总体表现还是DX11更胜一筹。《杀手6》也是一样,在DX12下只有少数场景表现更好,但总体表现还是不如DX11,甚至DX12下还会出现崩溃现象。不仅如此,《杀出重围:人类分裂》在DX12补丁发布以后依然会出现严重卡滞,完全不如DX11。《量子破碎》的Windows 10版只支持DX12,表现明显不如DX11下的Steam版。


真正出乎意料的是《战地1》的表现。DICE团队最初搞过Mantle,而开放底层硬件资源的想法正是Mantle的核心,所以我们以为《战地1》能够充分利用DX12的特点。但没想到《战地1》的DX12模式依然非常不如DX11模式。相比之下,《战地4》的Mantle模式就比DX11更出色。


另外让人感到不解的还有两款策略游戏,《文明6》和《全面战争:战锤》。一般来讲,这种系统复杂的策略游戏非常考验硬件的多任务处理性能,但这两部作品的DX12模式依然没有什么出众之处。


然后来看微软自家的DX12大作《战争机器4》,这款游戏只有DX12模式,所以没有对比。但《战争机器:终极版》的表现不如预期,而且《极限竞速:地平线3》的性能问题也很严重。


有人问了,为什么会这样?原因很简单。因为DX12和DX11相差太多了,我们在这里没法详细讲解技术上的细节,但简单理解可以认为制作组为了适应DX12,需要重新编写自家引擎中的大多数代码,不然就无法发挥DX12的特色。而要想重写引擎可不是说干就干的事。所以大多数制作组的DX12支持都是简单地加入了DX12的异步计算功能。虽然这个功能的确能够产生积极效果,但却并不是DX12的全部。


DX12不仅仅是异步计算,它能够允许多块GPU的高效协作,优化CPU的多任务处理,减少CPU运算压力,更好地处理绘图请求。DX12对于底层硬件权限的开放应该能够让资深制作组如鱼得水。但目前只有很少数的DX12优势得到了运用发挥。


另外不得不提的是DX12在两大显卡厂商之间的差异。从架构上讲,AMD的GPU更适合异步计算,许多游戏的DX12模式都在AMD显卡上表现更好,异步计算只是原因之一,另一个原因其实是AMD的DX11驱动并不如Nvidia那么优化。所以AMD显卡在DX12中获得的提升更明显。而Nvidia方面因为DX11优化程度很高,许多底层硬件权限已经相当开放,所以从DX12中获得的提升并不多。


不可否认,DX12是一款有趣的底层API,但目前它在游戏中的表现很糟糕。今年的游戏现状证明DX12并不能奇迹般地提升性能表现,反而证明了API大幅改动会为游戏开发造成预想不到的麻烦和退步。


为了更好地利用DX12的特点,制作组必须对引擎进行大规模重写,他们究竟是否会重写,重写以后的表现又是否会有大幅提高,这就要等到2017年才知道了。