这是 DirectX 11 和 DirectX 12 之间的重要区别。因此DirectX 12 允许游戏开发人员在更接近硬件的地方进行优化,从而减少 API 和图形驱动程序的开销。
在发布之初,DirectX 12 的性能实际上略低于 DirectX 11,主要原因是其复杂性,不过经过微软多年优化,DirectX 12 的API性能本身现已经优于 DirectX 11。
其中最明显的区别是它们与硬件的交互方式。大多数使用 DirectX 11 开发的游戏只能使用两到四个 CPU 内核。其中一个内核通常会告诉 GPU 做什么。然后,游戏会使用剩余的核心来处理各种 CPU 密集型设置,如游戏的粒子或绘制距离。
然而对于3A游戏来说,这造成了新的多核CPU用户出现“一核有难N核围观”的硬件资源浪费现象,影响了游戏性能。
而DirectX 12 将 CPU 的工作量分散到多个内核上,并允许每个内核同时与 GPU 对话。另外,DirectX 12 还配备了一些面向未来的功能,其中包括异步计算和流水线状态对象(PSO)。异步计算允许多个工作负载并行工作,从而提高了 GPU 的利用率。这基本上释放了显卡 的全部潜能。
DX12虚幻引擎测试,前者采用传统串行渲染,后者采用并行 异步多设备运算,将运算负荷分担到独显和集显上
就像餐厅里的服务员一样。当服务员为您点餐时,他们会先问您想喝什么。收到饮料后,他们会问您想吃什么主菜。您点的菜是分步进行的。服务员不会在您吃完主菜之前问您想吃什么甜点。这样做虽然有效,但效率不高。
有了 DirectX 12 的异步计算,服务员就能像快餐连锁店一样,一次性完成您点的菜。这样可以最大限度地利用 GPU,提高游戏性能。
除图形渲染外,显卡还能处理大量其他任务,如运行机器学习算法。在 DirectX 11 中,显卡一次只能按一定顺序执行其中一项任务。当出现这种情况时,性能就会受到影响,因为 GPU 资源没有得到有效利用。
另外,DX12加入了对光追等最新图形属性的支持。
当然,这些都是理论对比。那么实际性能表现呢?
3、只要硬件支持,DX12总体性能更好
对实际性能表现来说,游戏分为画质性能和流畅性能。前者由于DX12支持更多的新的显卡的渲染特性,因此画质上面,一般是要由于DX11的。特别是2015年以后的3A大作,体现更为明显。
而在流畅度方面,由于DX12引入了并行处理和一部运算等更适应8核以上CPU或者大小核设计的异步运算架构CPU,因此在吃CPU性能的游戏上的优势更加明显。同时由于DX12能够将运算负载分配在CPU的多核 集显 独显,因此在优化到位情况下,微软声称可以节约最高50%的系统资源,流畅度也更好。