PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

DX11,DX12对比---2

[复制链接]
SCE-PhyreEngine 发表于 2016-3-13 23:38 | 显示全部楼层 |阅读模式
点击数:15633|回复数:41
上次从基本原理上说明了DX12和DX11的区别。其实DX12开放了底层的开发性,将以前DX11封闭的受到驱动左右的设备上下文开放给开发者自己决定,确实提升了很大的效率。大家都应该见识过3D Mark那个API功能对比测试。其实DX12的性能表现不只于DrawCall。
    不过话说回来,DX12表现出多少性能提升就和使用DX12的程序人员有很大关系了。因为光ID3D12PipelineState和ID3D12GraphicsCommandList就需要程序人员对这两个有深入理解才行。因为DX12相比DX11对程序开发人员来说是种全新的API。对于DX12不能像DX11那样用什么才去查API文档。
    下面我们对比下DX 12和DX11下的DirectCompute粒子的性能。(不知道DirectCompute是什么意思的自己查下详细的吧
    因为从DX11/Win7时代开始DirectCompute 微软家的GPU通用计算技术(也是开发标准不是私有的)GPU通用计算技术,简单的说就是让GPU(显卡核心)处理图形数据之外的其他数据。越来越越得到业内的认可和重视,DX11时代的一些游戏也用到了DirectCompute 。DirectCompute在游戏中主要用于物理加速和动态模拟。
    这次我们就用DirectCompute Shader分别在DX12 DX11下完成一个银河星爆粒子群,做一个来比对相同粒子数目下(当然同屏)DX12和DX11的各自效率。
    首先我们确保粒子数目都是一样的
DX12    DX11
   使用相同的DirectCompute Shader
   
    由于同屏粒子数也不少了,我正好是4K显示器,那就把分辨率锁死
    DX12 DX11
    要注意的是,DX12下DirectCompute 的相关流水线状态要单独管理
   
      下面是运行结果:
       DX11:
      
      DX12:
      
DX12 29帧,DX11 18帧,提升不小。
     测试环境:Win10 64Bit  ,i7 5930K+ R9 FuryX
     过两天上传可执行程序,周末上传整理好的代码

   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1绝对值 +1 收起 理由
johnnyqr + 1 很给力!

查看全部评分

fastone 发表于 2016-3-29 15:21 | 显示全部楼层
DX12的几个特性:Resource Blinding:实时的数据缓冲处理。。就是将什么顶点了,索引了,纹理了,模型数据直接交给图形流水线让流处理器直接处理,这步以前在DX11的时候是驱动程序来管理的。现在在DX12里程序员自己安排,看谁有本事,谁有本事谁效率就高。同硬件下

Conservative Rasterization:保守光栅。这个功能目前我发现和GI还有AO效果直接挂钩的。这个技术主要不是提升显卡的表现,而是用户能看到的最终显示效果。而且这个特性可以做Hybrid Ray Traced Shadows混合光线追踪阴影,不过我没搞

Raster Order Views:我和一些搞DX12的个人理解是光栅时序,主要影响动态光照效果

Asynchronous compute shaders:就是ACE表现的方面。这个功能对于普通消费者来说相当重要,就是在于提高最终的硬件表现,而且这个提升还不会仅限于最新的显示效果。
DX12和DX11重要的不同点是DX11在处理数据的时候要先将数据信息交给驱动,由驱动程序协管流处理处理。而DX12上面我说了是开发人员直接使用图形流水线让流处理器处理

而且DX12的多线程并行支持力远强于DX11

A卡DX12下效率高不仅是A卡Asynchronous compute shaders方面是全硬件架构支持的,A卡还支持FCR(快速保守光栅化)和UAV Ordering(乱序访问视图排序),前者能提高硬件访问速度,后者可以解决三个问题:顺序无关透明化(OIT)、复杂场景抗锯齿(比如头发或者篱笆)、透明效果阴影。
所以光栅访问速度和相关计算效率很高

DX12不仅可以做到同效果下效率强于DX11,也可以做到同效率下也就是同帧数当然也可以在帧数比DX11还高的情况下实现比DX11更好的效果。这主要取决于开发人员。

国外的开发人员的思想,待遇地位和国内很不一样,国外厉害的程序工程师地位相当高,不像国内程序员大都混得很惨。所以国外的程序开发人员钻研技术的时间更长,他们更喜欢接触使用更底层的API来发挥他们的实力,所以DX12也必然会受到开发人员欢迎(国内端游万年DX9国内早已经除外了)。
fastone 发表于 2016-3-29 15:22 | 显示全部楼层



像以上两张图,配合DX12相关低层光栅技术和DX12并行异步技术的PBR效果。R9 380X和GTX 970等级段的显卡就能跑60帧了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
SCE-PhyreEngine  楼主| 发表于 2016-3-13 23:42 | 显示全部楼层
因为我不确定96000个粒子数目大伙的显卡能否都能跑过,先让fastone用R9 290跑一跑
SCE-PhyreEngine  楼主| 发表于 2016-3-13 23:43 | 显示全部楼层
标题写错了!!!,应该是DX12,DX11对比
SCE-PhyreEngine  楼主| 发表于 2016-3-13 23:45 | 显示全部楼层
下期就会详细讲到为什么DX11和DX12会产生同效果下性能的较大差异。下期开始会讲的很详细,内容会很多
指原莉乃 发表于 2016-3-14 00:36 | 显示全部楼层
用380的c#程序猿路过顶帖
mrplplplpl 发表于 2016-3-14 08:11 | 显示全部楼层
顶楼主技术贴,做个记号,慢慢看
fastone 发表于 2016-3-14 09:44 | 显示全部楼层
SCE-PhyreEngine 发表于 2016-3-13 23:42
因为我不确定96000个粒子数目大伙的显卡能否都能跑过,先让fastone用R9 290跑一跑 ...


你可以上传 ,目前290是22FPS CPU依然是3770

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
笨啦灯 发表于 2016-3-14 09:44 | 显示全部楼层
好好看,好好学
NOIP117 发表于 2016-3-14 10:14 | 显示全部楼层
发布了exe自己也试试
applelovekula 发表于 2016-3-14 10:41 | 显示全部楼层
看不懂。。。。。。。。
fastone 发表于 2016-3-14 10:46 | 显示全部楼层
NOIP117 发表于 2016-3-14 10:14
发布了exe自己也试试

你要先下载好VS 2015开发套件,这代码是在VS 2015下生成的,我看了代码了
NOIP117 发表于 2016-3-14 10:50 | 显示全部楼层
fastone 发表于 2016-3-14 10:46
你要先下载好VS 2015开发套件,这代码是在VS 2015下生成的,我看了代码了

好吧,不过好久没玩vs了
蜡笔小新 发表于 2016-3-14 11:04 | 显示全部楼层
技术贴 mark一下
johnnyqr 发表于 2016-3-14 11:44 | 显示全部楼层
楼主研发哥啊
fastone 发表于 2016-3-14 12:36 | 显示全部楼层
本帖最后由 fastone 于 2016-3-14 12:38 编辑
piplpoly 发表于 2016-3-14 11:27
但是目前DX11开发的游戏,有多少能让顶级卡达不到流畅呢?
再说为了降低成本,游戏开发商选择最稳定的开发平台 ...

就目前,国外那几个开发商的新引擎都是针对了DX12做的,包括DICE  CRYTEK等,最主要的不是DX12问题,是你做的游戏足够吸引玩家不,DX12只是一个底层API,和游戏本身是否玩家买涨关系不大,DX12更多的是引擎组和技术支持部门去判断会占用开发成本多少,DX12目前除了专门针对主机和几个大公司的工作室能去搞外,其余的PC游戏开发商肯定不会优先考虑,因为开发难度是很高的,且不友好,程序员自身必须还得去了解硬件设计,这点是以前DX API 开发所没有的

最后DX12 API和DX11 API是两个不同层面的API,DX12加入的很多新特性完全是考虑效率,利用率和特效密度,而不是单纯增加一个技术特效达到什么,这点DX11是比不上DX12,SCE开发工程师在帖子中就已经说明了这点
fastone 发表于 2016-3-14 13:25 | 显示全部楼层
piplpoly 发表于 2016-3-14 13:02
dx9c dx10 dx11
DX11 最大的功能体现就是曲面积分,效果就是带来更好的画面
DX9C是HDR 高光渲染

DX12带来的是资源利用率提高,立体平铺资源等很多高级技术,纯硬件编程模式+并行渲染技术,是以前API没有的
fastone 发表于 2016-3-14 13:33 | 显示全部楼层
其实微软公布的功能只是面向效率,特效这个是必须看他开发文档的,微软对外只宣传效率,高效性和更好的资源利用,是微软针对DX12的重点宣传点。
小钻风 发表于 2016-3-14 15:34 | 显示全部楼层
DX12最大的优势就是开发者可以直接面对底层进行控制,不必再经过各种负优化的驱动程序,最大提升运行效率
能让你的卡多跑点帧数何乐不为
fastone 发表于 2016-3-14 15:50 | 显示全部楼层
本帖最后由 fastone 于 2016-3-14 15:52 编辑

DX12并非单纯提高效率,AO 光照 体素散射这些都是加入,最明显的变化是你程序员直接使用shader加强画质,而不是靠单纯功能去做。DX12让程序员必须掌握的知识面要更广了,其次是对图形渲染技术的理解要求更高了,但是对于开发习惯了主机 的厂商,这个没难点,甚至更轻松了,因为WINDOWS游戏开发相对主机开发环境来说,是开放的。
马克吐槽 发表于 2016-3-14 16:16 | 显示全部楼层
fastone 发表于 2016-3-14 15:50
DX12并非单纯提高效率,AO 光照 体素散射这些都是加入,最明显的变化是你程序员直接使用shader加强画质,而 ...

简单说就是更接近底层开发吧,硬件资源使用效率更高。好像前面有同学这么说过了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部