GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级( 二 )


Mesh着色器:下一代几何处理管线的基础 在过去的二十年中 , 传统的几何图形处理管线已经增加了好几个阶段了 , 不过它的核心理念仍然基于传统的光栅化预着色方法的 , 放在今天已经过于复杂 , 并且拖累处理效率 。 硬件和软件开发者都希望改变这一现状 , 于是 , DirectX 12引入了Mesh着色器 , 它为开发者提供了前所未有的可编程能力 。
GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级
本文插图
原本的管线中 , GPU硬件的并行能力被隐藏 , 或者说是被自动化了 , 硬件会帮助打包操作然后并行执行它 , 这很高效 , 但也存在问题——灵活性不够 。
Mesh着色器就完全改变了这一过程 , 它不再是针对单一顶点或图元的单一函数 , 而是工作在整个计算线程组中 。 在某一阶段中 , Mesh着色器的每个线程都是针对一个顶点 , 而在另外一个阶段 , 每个线程针对着一个图元 。 整个线程组的内存是共享的 , 访问灵活度很高 , 同时开发人员对硬件的控制权也更大 , 甚至还能启发新的技术 , 节约内存使用量和内存带宽 。
GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级
本文插图
与Mesh着色器一同出现的还有一个可选的放大着色器(Amplification Shader)阶段 , 它运行在Mesh着色器之前 , 计算得到需要多少个Mesh着色器 , 并启动他们 。
GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级
本文插图
采样器反馈 最后一个大特性就是采样器反馈(Sampler Feedback) , 先说效果:更好的视觉质量、更短的加载时间和更少的卡顿 。 它的核心思想实际上就是让程序只加载必要的纹理 , 把资源交给更有需要的地方 。
采样器反馈是允许游戏引擎去跟踪纹理采样器的使用方式 , 让后者向引擎提供反馈 , 方法是生成“反馈图(Feedback Map)” , 它会记录不同纹理区域的不同驻留等级 , 然后程序可以根据这些反馈信息来做决策——包括该如何使用纹理采样器和要在显存中保留哪些资源等 。 这比原先的流程更为精确 , 可以更好地分配计算资源 。 简单来说它的实际效果就是用更少的显存渲染更大、更详细的纹理 。
GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级
本文插图
另外 , 采样器反馈还允许了一项新技术——纹理空间着色 。 它可以在不栅格化对象的情况下进行对象着色 , 其中心目的就是缓存和重用着色结果 , 减少GPU的计算量 。
总结:面向新图形架构和下世代主机 在微软推出DirectX 12 Ultimate之后 , NVIDIA和AMD就迅速地宣布已经/将要支持它 , 实际上 , DirectX 12 Ultimate的绝大部分新特性可以说是基于Turing架构来的 , NVIDIA在设计Turing架构之处是预留了相当部分的新特性没有公开的 。 而AMD方面在目前只能说是一个跟进者 , 要用上新特性 , 首先要等到年底的RDNA 2架构 。
DirectX 12 Ultimate的这些特性很明显有两个共通的目标 , 一是提高开发者对硬件的控制力 , 二是提高总体计算效率 。 这也是为下世代主机——Xbox Series X和传说中的Xbox Series S所准备的 , 很难说我们要等多长时间才能看到这些特性被应用到实际游戏中去——至少今年是看不到的 , 需要等引擎开发商、游戏开发者对新世代主机做适配或者做专门性的开发后 , 我们才能在PC游戏中也看到这些技术的运用 。
【GPU:详解DirectX 12 Ultimate:一次面向未来应用的大升级】以上就是DirectX 12 Ultimate的详细解读 , 由于我不是业内人员 , 对这些特性的理解也只是点到为止 , 难免存在认知错误 , 敬请读者指正 。


推荐阅读