1. 超能网 >> 
  2. 评测 >> 
  3. 显卡 >> 
  4. DX11/DX12/Vulkan API大战《奇点灰烬》,谁才能主宰未来游戏?

DX11/DX12/Vulkan API大战《奇点灰烬》,谁才能主宰未来游戏?

2017-8-31 15:45  |  作者:梁俊豪   |  关键字:Vulkan,DirectX 12,DirectX 11,API开销,奇点灰烬

分享到:
Vulkan、DirectX 12以及DirectX 11三大API对于游戏帧数的影响到底有多大,会直接影响到我们购买显卡吗?
本文约3025字,需5分钟阅读
在绝大数人心目中,对于游戏帧数影响最大的因素一定是硬件,尤其是显卡,一张顶级的显卡和一张入门级显卡的游戏体验可以说是差天共地,第二个因素很可能就是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生力军。
    
  1. lpiori2高中生 09-19 23:11

    那是不是要我们买A卡了??

    支持(0)  |   反对(0)  |   举报  |   回复

    34#

  2. 
  3. 孤独的旅行者大学生 09-15 08:47

    不是很客观啊 著名N黑游戏不说 这游戏就是处理器噩梦 DX12还有偏处理器选项 7700K处理器真的没瓶颈么?
    游戏优化就有问题 狂吃处理器 内存就2G多点消耗 显卡常年挂空 显存3G多点占用 我用i7 6700处理器打12人中等图20分钟卡的跟PPT一样 显卡负载还不到70% 跑分跟实测又是一回事

    支持(1)  |   反对(0)  |   举报  |   回复

    33#

  4. 
  5. 游客  09-13 15:39

    战未来的东西谁知道呢

    支持(0)  |   反对(0)  |   举报  |   回复

    32#

  6. 
  7. 游客  09-06 13:22

    yjhercules 终极杀人王 :

    一个游戏也就是当笑了,至于未来,毕竟这个游戏代表性一般,当然有时间我会玩玩,另外呢帧生成时间,只要保持在一个范围
    30ms 单帧低于30ms 那么一秒内就能累加到30fps的平均帧,
    不过只是个别帧接近30ms 所以还要区间分析法
    那就是每一秒内 有几秒是接近30ms 而且单秒内,fps是否接近60
    这一切都需要进行更基础的计算,所以超能需要matlib这个软件
    至于编程这花点时间去学,当然只要采集的数据是正确,
    matlib出来的结果就没有办法否定。 ...
    08-31 15:54 已有21次举报
  8. 支持(2)  |   反对(9)  |   举报  |   回复
  9. 游客:

    yjhercules来到卖场里,所有人便对他笑,有人说:”Y神,你的脸上又挨了一巴掌。“他不回答,对柜里说,“来一块二手680。”便排出600元。他们又故意的高声嚷道,“你一定又在洗1050ti结果被打脸了!”Y神睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你在给黄记洗地,结果被人吊着打。”Y神便涨红了脸,额上的青筋条条绽出,争辩道:“这怎么算侮辱,这……粉丝的事,能算诽谤吗”接连便是难懂的话,什么“5770驱动不兼容英雄萨姆”,什么“不测极大值极小值”什么”DX12没有用“之类,引得众人都哄笑起来:店内 ...
    09-01 07:59
  10. 支持(12)  |   反对(0)  |   举报  |   回复
  11. 垃圾A D0G,DX11是高贵的象征,比如gtx1070,gtx1080,屌丝才会去用DX12和Vulkan!

    已有7次举报

    支持(0)  |   反对(4)  |   举报  |   回复

    31#

  12. 
  13. 游客  09-01 18:03

    跟IT有什么关系?你们这帮下水道里的蛆虫

    支持(1)  |   反对(1)  |   举报  |   回复

    30#

  14. 
  15. 游客  09-01 11:38

    vk和dx12的性能表现与应用水平关系极大,现有所有游戏都无法证明究竟哪个api性能好

    支持(0)  |   反对(0)  |   举报  |   回复

    25#

  16. 
  17. 游客  09-01 09:00

    管你什么结果?伊斯兰教和你们功都是邪教!

    支持(3)  |   反对(0)  |   举报  |   回复

    24#

  18. 
  19. 游客  09-01 07:59

    yjhercules 终极杀人王 :

    一个游戏也就是当笑了,至于未来,毕竟这个游戏代表性一般,当然有时间我会玩玩,另外呢帧生成时间,只要保持在一个范围
    30ms 单帧低于30ms 那么一秒内就能累加到30fps的平均帧,
    不过只是个别帧接近30ms 所以还要区间分析法
    那就是每一秒内 有几秒是接近30ms 而且单秒内,fps是否接近60
    这一切都需要进行更基础的计算,所以超能需要matlib这个软件
    至于编程这花点时间去学,当然只要采集的数据是正确,
    matlib出来的结果就没有办法否定。 ...
    08-31 15:54 已有21次举报
  20. 支持(2)  |   反对(9)  |   举报  |   回复
  21. yjhercules来到卖场里,所有人便对他笑,有人说:”Y神,你的脸上又挨了一巴掌。“他不回答,对柜里说,“来一块二手680。”便排出600元。他们又故意的高声嚷道,“你一定又在洗1050ti结果被打脸了!”Y神睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你在给黄记洗地,结果被人吊着打。”Y神便涨红了脸,额上的青筋条条绽出,争辩道:“这怎么算侮辱,这……粉丝的事,能算诽谤吗”接连便是难懂的话,什么“5770驱动不兼容英雄萨姆”,什么“不测极大值极小值”什么”DX12没有用“之类,引得众人都哄笑起来:店内 ...

    支持(12)  |   反对(0)  |   举报  |   回复

    22#

  22. 
  23. 游客  09-01 01:34

    游客:

    前途光明?没用!
    市场占有率最大的NV,它不喜欢,所以游戏商都不愿意去做这个支持
    一个再好的技术,但是软件它不支持,就=0

    当然,编写DX12的确很难,很考验开发商的水平,水平摆在那里就这么一点,所以想要提升也很难,毕竟,你不能要求员工么天天加班优化DX12吧,那也要花钱的,谁出
    08-31 19:50 已有2次举报
  24. 支持(4)  |   反对(3)  |   举报  |   回复
  25. 每次换代都有你这种不带脑子的类似的评论。到时候又死死地气打脸

    已有1次举报

    支持(3)  |   反对(0)  |   举报  |   回复

    21#

  26. 
  27. 游客  08-31 19:50

    前途光明?没用!
    市场占有率最大的NV,它不喜欢,所以游戏商都不愿意去做这个支持
    一个再好的技术,但是软件它不支持,就=0

    当然,编写DX12的确很难,很考验开发商的水平,水平摆在那里就这么一点,所以想要提升也很难,毕竟,你不能要求员工么天天加班优化DX12吧,那也要花钱的,谁出

    已有2次举报

    支持(4)  |   反对(3)  |   举报  |   回复

    20#

  28. 
  29. 游客  08-31 19:45

    大家帮忙转发一下

    已有2次举报

    支持(0)  |   反对(0)  |   举报  |   回复

    18#

  30. 
  31. 游客  08-31 19:43

    大家帮忙转发一下

    已有1次举报

    支持(0)  |   反对(1)  |   举报  |   回复

    17#

  32. 
  33. 游客  08-31 18:55

    dx12,哈哈今年pc游戏又基本全回到dx11了,奇点灰烬那渣画质玩过的都懂,这也配叫dx12游戏那星际争霸2可以叫dx13了,以为个个程序员都是卡马克?dx12最重要的cpu多线程优化特性nvidia早在dx11上就很完善了,也就a卡特别需要dx12来做到n卡在dx11上的multi core,可是游戏开发人员是为了做游戏又不是在玩程序,只要dx12和vulkan相比dx11和opengl在画面特效上没有任何进步,就注定是鸡肋

    已有4次举报

    支持(2)  |   反对(5)  |   举报  |   回复

    15#

  34. 
  35. alex310110研究生 08-31 18:13

    DX12把更底层的API一丢,结果没了驱动搀和,厂商不乐意花钱让码农搞多卡支持,SLI、CF全被埋葬……

    支持(2)  |   反对(0)  |   举报  |   回复

    14#

  36. 
  37. 游客  08-31 17:02

    游客:

    "DirectX 12规范并没有更新更先进图形渲染技术,它重点放在了改善对底层硬件的优化,减少了CPU的负担,原本需要繁复提交Draw Call的过程被砍掉了"
    这句话啥意思?Draw call被砍掉了?还是Draw call没有以前调用的频繁了?
    08-31 15:57
  38. 支持(0)  |   反对(0)  |   举报  |   回复
  39. 梁俊豪 编辑 :

    谢谢指正,Draw call过程不是一部到位的,他中间还有好几道程序,DX12允许你去掉不需要的过程,比方说DX11完成需要6道程序,DX12只要3道。
    08-31 16:09
  40. 支持(0)  |   反对(0)  |   举报  |   回复
  41. DX11需要哪6道程序?DX12怎么需要3道了?能不能解释一下?DX12真正减少的应该是DX runtime和Driver的负担,比如说,GPU和CPU的同步,之前是Driver做的,现在要APP来显式的做;之前surface sync需要driver来检测需不需要做,现在DX12也是通过transition()这个接口来告诉driver哪个texture需要sync,这样driver的负担就减轻了

    支持(2)  |   反对(0)  |   举报  |   回复

    13#

  42. 
  43. 梁俊豪编辑 08-31 16:57

    yjhercules 终极杀人王 :

    一个游戏也就是当笑了,至于未来,毕竟这个游戏代表性一般,当然有时间我会玩玩,另外呢帧生成时间,只要保持在一个范围
    30ms 单帧低于30ms 那么一秒内就能累加到30fps的平均帧,
    不过只是个别帧接近30ms 所以还要区间分析法
    那就是每一秒内 有几秒是接近30ms 而且单秒内,fps是否接近60
    这一切都需要进行更基础的计算,所以超能需要matlib这个软件
    至于编程这花点时间去学,当然只要采集的数据是正确,
    matlib出来的结果就没有办法否定。 ...
    08-31 15:54 已有21次举报
  44. 支持(2)  |   反对(9)  |   举报  |   回复
  45. 梁俊豪 编辑 :

    Y神,你的mathlab打错了。。。
    08-31 16:07
  46. 支持(0)  |   反对(0)  |   举报  |   回复
  47. 游客:

    你俩都错了... 小编复仇失败...
    是matlab...
    08-31 16:50
  48. 支持(6)  |   反对(0)  |   举报  |   回复
  49. 支持(2)  |   反对(0)  |   举报  |   回复

    12#

  50. 
  51. 游客  08-31 16:50

    yjhercules 终极杀人王 :

    一个游戏也就是当笑了,至于未来,毕竟这个游戏代表性一般,当然有时间我会玩玩,另外呢帧生成时间,只要保持在一个范围
    30ms 单帧低于30ms 那么一秒内就能累加到30fps的平均帧,
    不过只是个别帧接近30ms 所以还要区间分析法
    那就是每一秒内 有几秒是接近30ms 而且单秒内,fps是否接近60
    这一切都需要进行更基础的计算,所以超能需要matlib这个软件
    至于编程这花点时间去学,当然只要采集的数据是正确,
    matlib出来的结果就没有办法否定。 ...
    08-31 15:54 已有21次举报
  52. 支持(2)  |   反对(9)  |   举报  |   回复
  53. 梁俊豪 编辑 :

    Y神,你的mathlab打错了。。。
    08-31 16:07
  54. 支持(0)  |   反对(0)  |   举报  |   回复
  55. 你俩都错了... 小编复仇失败...
    是matlab...

    支持(6)  |   反对(0)  |   举报  |   回复

    11#

  56. 
  57. 游客  08-31 16:37

    其实就是农企驱动DX11做不好,想把ball抛给游戏开发商,然后今年就没出多少DX12游戏,和上年大反转,估计开发商不上当了

    支持(1)  |   反对(1)  |   举报  |   回复

    10#

  58. 
  59. 游客  08-31 16:31

    yjhercules 终极杀人王 :

    一个游戏也就是当笑了,至于未来,毕竟这个游戏代表性一般,当然有时间我会玩玩,另外呢帧生成时间,只要保持在一个范围
    30ms 单帧低于30ms 那么一秒内就能累加到30fps的平均帧,
    不过只是个别帧接近30ms 所以还要区间分析法
    那就是每一秒内 有几秒是接近30ms 而且单秒内,fps是否接近60
    这一切都需要进行更基础的计算,所以超能需要matlib这个软件
    至于编程这花点时间去学,当然只要采集的数据是正确,
    matlib出来的结果就没有办法否定。 ...
    08-31 15:54 已有21次举报
  60. 支持(2)  |   反对(9)  |   举报  |   回复
  61. 梁俊豪 编辑 :

    Y神,你的mathlab打错了。。。
    08-31 16:07
  62. 支持(0)  |   反对(0)  |   举报  |   回复
  63. 小编的复仇

    支持(0)  |   反对(0)  |   举报  |   回复

    9#

  64. 
  65. 游客  08-31 16:27

    小白求助,这个API开销到底是高好还是低好?

    支持(0)  |   反对(0)  |   举报  |   回复

    8#

查看全部评论(27)
回复