Ada架构光追性能与RT单元的提升
要知晓Ada架构光追性能的提升,要从RT单元的升级讲起。
传统的SM簇中流处理器并非不能进行光追计算,但是会消耗大量的算力资源,阻碍顶点着色、纹理填充等传统计算工作,拖慢即时帧的生成。光追计算的主要工作,其实就是层次包围体积的计算,简称BVH,它是一种碰撞检测算法,用于模拟光的轨迹。
Turing和Ampere架构中,RT单元能够将BVH交由矩形相交引擎加速,而光线三角形相交则由三角形相交引擎加速。有这个RT单元专司其职,使流处理器能够不受干扰的进行它的常规工作,保障了帧生成的速度。
在Ada架构的第三代光追单元中,除了上述两个引擎以外,新增加了“不透明度微遮盖引擎”(OME)和“微网格位移引擎”(DM-ME)。
这两个引擎将光追计算中常遇到的操作做进一步的分工处理,提高整体的效率。如下图所示,OME引擎能够以区块划分哪些像素是遮挡光线的,哪些应该半遮挡的,哪些是透明的。将其分区块统一处理,不像原来那样需要逐个扫描识别,节省了着色器的资源。
而DM-ME则相当于在光追中应用的曲面细分,它通过BVH构建碰撞体积的模型,在以往的第二代RT核心计算中需要顶点几何渲染的介入加上BVH构建出最终成型的光线碰撞路径。
而在Ada架构的第三代RT核心中,有了DM-ME引擎,可以通过矢量位移的固定算法根据单一BVH自动生成最终的光线碰撞模型,从而进一步节省了资源,提高了光追的效率。
着色器执行重排序
早期的RT单元不足以确保光追的高帧速率,是因为RT工作负载可能受到许多因素的限制。特别是在执行多重反弹、随机路径跟踪算法或评估复杂材质时。
典型分歧有两种形式:执行分歧——即不同的线程在着色器内执行不同的着色器或代码路径;数据分歧——即线程访问难以合并或缓存的内存资源。在许多光线跟踪场景中,这两种发散都会自然发生。
Ada架构的一项新技术,旨在通过解决发散问题来提高RT单元执行的效率,称之为着色器执行重新排序(SER),这是一种新的调度系统,可以动态重新排序着色工作,以获得更好的执行和数据位置。
简单的来说,我们可以理解为光追计算中,同一帧画面有许多长度不同的指令,交给各个着色器来执行。这些指令运行速度必然有快慢之分,而一帧画面的生成必须等到该画面所需的指令执行完,这时候如果如果能够将它们按照所需时间统筹安排起来,提到着色器的利用率,避免相互等待的情况,尽量令其同步执行完毕,那么将显著提升帧生成的效率。