三大API大战《奇点灰烬》,谁才能主宰未来游戏?
在绝大数人心目中,对于游戏帧数影响最大的因素一定是硬件,尤其是显卡,一张顶级的显卡和一张入门级显卡的游戏体验可以说是差天共地,第二个因素很可能就是CPU处理器不够高级,带不动显卡。没错,这些硬件对于游戏帧数、画面流畅度有着关键性决定权,但是我们往往忽略了一个事实,那就是我们使用硬件去体验游戏,而游戏相当于一个软件,开发得好不好、优化得怎么样、用了什么样的图形API都会影响到游戏体验。Vulkan、DirectX 12以及DirectX 11三大API对于游戏的影响到底有多大,会直接影响到我们购买显卡吗?
我们先来回顾一下Vulkan、DirectX 12以及DirectX 11它们的一些历史信息。
DirectX 11带来了Tessellation(拆嵌式细分曲面技术)、Multi-Threading(多线程)、DirectCompute(通用计算)、Shader Model 5.0(渲染引擎5.0)以及Texture Compression(纹理压缩)五个重要特性。
DirectX 12规范并没有更新更先进图形渲染技术,它重点放在了改善对底层硬件的优化,减少了CPU的负担,原本需要繁复提交Draw Call的过程被砍掉了,暴露出更多底层API给游戏开发者,开发者可以根据自己游戏需求删减不必要的冗余操作,从而达到提升效能,间接地提高了显卡的性能。
而Vulkan诞生至今才一年多,是一个非常年轻的API,其规范开发组织Khronos表示,Vulkan得益于AMD Mantle API的启发(其实DirectX 12很多东西也是来源于Mantle),为Vulkan构建了一套完善的开发体系,在功能和性能方面都十分丰富,拥有最新图形技术、通用目的计算、预编译着色器、多核心多线程高效率、底层驱动过载、横跨桌面/移动/主机/嵌入式、底层GPU硬件控制、精炼API。
那么DirectX 11、DirectX 12以及Vulkan之间的差距到底有多少?这方面大家可能关注得比较少,毕竟完整支持这种测试的软件、游戏真的太少了。
在今年三月份Futuremark公司推出了3DMark重大更新版本,原本的API开销测试放弃了AMD Mantle API,而新增了热门的Vulkan API性能测试,在3DMark API Overhead测试中我们可以直观地比较Vulkan、DirectX 12以及DirectX 11的API性能。那么“API开销功能”到底测的是啥?
3DMark在其官网如此介绍“API Overhead Feature Test”(API开销测试),“在游戏中每一帧画面都需要用数以千计的Draw Call来绘制,但是更多的Draw Call开销都将会进一步约束CPU的性能,如果API能够以较低的开销来绘制一帧画面,那么可以在单位时间内处理更多的画面以及绘制更多的纹理、特效。”(解释:每次在准备数据并通知GPU渲染的过程称为一次Draw Call。一般情况下,渲染一次拥有一个网格并携带一种材质的物体便会使用一次Draw Call。)
通俗一点来讲,由于CPU与GPU是异步并行的,每一次的Draw Call都要两者进行通信,频繁Draw Call显然会影响效率,此外两者互联的数据IO总线速率会成为系统的瓶颈,此外Draw Call自身还需要时间进行处理以及切换渲染材质,因此高效的API更加有利于发挥出显卡性能。
API Overhead Feature Test所做的就是通过步进方式增加绘制画面指令数目来测试API的性能,测试结果显示的就是画面帧率下降至30fps时API每秒绘制画面指令数目。根据这个原则,我们就可以看到处于同一系统下,Vulkan、DirectX 12以及DirectX 11 三者API性能差距(因此该测试中,CPU性能越高,API开销测试得分更高)。
另外需要注意的有两点:一是API Overhead feature test只是测试同一系统下,三种API的性能差距,并不能以此作为根据,横向对比各个显卡性能;二是如果想要正确测试出Vulkan API性能,必须要安装好对应的Vulkan驱动。
RX Vega 56平台开销测试:
GTX 1070平台开销测试:
3Dmark API开销测试很明显,高下立判。
测试平台:
一般来说现在的游戏对于CPU处理器的多线程支持都不太足够,多线程不行那么就是高频率说了算,实际测试也是这样的。这里我们选用了一般人比较少用,但广泛存在于游戏玩家中的Intel Core i7-7700K处理器,四核八线程对于玩游戏来说应该是足够了,而且胜在频率足够高,更容易发挥出显卡性能。其余配置都跟我们测试显卡的差不多,详情查阅表格。
操作系统是Microsoft Windows 10™ Build 15063,只有Windows 10才支持DirectX 12嘛。驱动方面,RX Vega 56使用的AMD Software Crimson ReLive Edition17.8.2 Beta版本,而GTX 1070使用的NVIDIA GeForce 385.41 WHQL版本。
AMD驱动支持情况:
NVIDIA驱动支持情况:
想要找一个都支持完整支持Vulkan、DirectX 12以及DirectX 11三种API的游戏来测是确实有点困难,不过天佑小编,《奇点灰烬》制作组在官方论坛上表示,最新的Build 2.4 Preview预览版当中加入对于Vulkan API的支持,加上原本宣称得效率爆炸的DirextX 12和平常的DirectX 11,至此《奇点灰烬》集齐了三大神兽API,可以让我们体验下不同API下对游戏帧数的影响。
如果你也拥有《奇点灰烬》这个游戏,可以在Steam游戏管理中参加抢先测试的功能,选择“Opt-In V2.40 Preview”就可以检测到更新,更新完成以后进入游戏你就可以选择Vulkan、DirectX 12以及DirectX 11 API来进行游戏了(记得重启游戏才会生效哦)。
在测试前我们先要声明一下,这个成绩仅仅是代表在《奇点灰烬》中的表现,Vulkan、DirectX 12以及DirectX 11测试在不同游戏中的效率肯定不一样的,全看游戏开发者对于API运用程度、编程功力。
我们先来看一下AMD今年最新力作RX Vega 56的表现,在《奇点灰烬》游戏Benchmark中,分别利用微星的Afterburner日志输出功能记录了测试过程的所有信息,我们提取出帧数以及帧生成时间做出折线图供大家直观感受一下。
帧数曲线:
在帧数图表中,最引人注目的就是波澜不惊的红线,那是代表着RX Vega 56在DirectX 12 API下跑《奇点灰烬》Benchmark 180秒的表现,真的非常平稳,稳定在75帧左右。而DirectX 11帧数表现十分起伏,高的时候有108帧,少的时候仅仅27帧,而新加入了Vulkan API显得非常高效率,基本上帧数表现都要超越DirectX 12。帧数表现高下立判了,Vulkan > DirectX 12 > DirectX 11,而且这个差距也是蛮大的。
帧生成曲线:
再看回帧生成时间曲线图,DirectX 12还是那么“心如止水”,起伏很小,而Vulkan表现也不错,而DirectX 11 API表现确实“错落有致”,差异性极大。
帧数曲线:
换用NVIDIA GTX 1070进行同样的测试,这一次帧数表现就不如RX Vega 56那么稳定发挥了,三种API帧数折线交错再一次,很难第一时间发现谁更好。但是DiretX 11的劣势还是比较明显,而去掉它折线以后,结论一下子就明朗了。DirectX 12表现稍微压Vulkan一头。 DirectX 12 > Vulkan > DirectX 11。
帧生成曲线:
看一下帧生成时间曲线图就能发现 DirectX 11的帧生成时间真的波动太大了,非常容易造成画面撕裂,建议大家使用G-Sync屏幕来对抗DirectX 11这个不大不小的画面撕裂问题(也不是所有游戏都这样,但这是比较好的解决方案)。
由于RX Vega 56的DirectX 11成绩低得有些离谱,因此我们觉得再加入一张RX 580的测试,验证一下AMD显卡在《奇点灰烬》DirectX 11的性能低下问题。
结果发现,AMD显卡在《奇点灰烬》DirectX 11 API下性能对比 DirectX 12与Vulkan确实性能要低一些。就连帧生成时间也是差一些的,难道是AMD都集中精力去优化《奇点灰烬》DirectX 12模式?
由于RX Vega 56的成绩实在是有点诡异,我们加测了RX 580显卡。
帧数曲线:
帧生成曲线:
总结:DirectX 11效率垫底,DirectX 12Vulkan前途光明
从以上的测试结果来看,各位可以看到Vulkan在理论API开销测试中效率非常高,效率直接碾压DirectX 11,快要追赶上DirectX 12,但是稍微可惜的是在实际游戏《奇点灰烬》测试中,Vulkan在NVIDIA显卡、AMD RX 500系列显卡中未能敌过DirectX 12。因此在实际应用上,Vulkan还差一点,可能与开发者对于API处理熟练程度、显卡驱动支持程度有所关联,Vulkan还只是个孩子。
此外我们看到DirectX 11即便是加入了多线程依然不敌DirectX 12,其API开销确实要更大,在游戏《奇点灰烬》中全面落败,查看更多数据会发现它对于CPU利用率确实不高,看来DirectX 12和Vulkan才是未来的图形API生力军。