上次从基本原理上说明了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
评分
-
查看全部评分
|