微软的着色器模型 6.10(Shader Model 6.10)与 AgilitySDK 1.720 预览版现已发布,为 DX12 API 增添了多项全新特性。

微软近日推出了 DX12 线性代数“矩阵”API、组波索引、光线追踪内建函数等新功能,这些均包含在着色器模型 6.10(Shader Model 6.10)及 AgilitySDK 720 预览版中。

Microsoft-DX12-DirectX-12-Custom-scaled.jpeg

此次发布是对先前着色器模型 6.9(Shader Model 6.9)、DXR 1.2 及其他增强功能的进一步扩展,这些功能曾是 AgilitySDK 1.619 的一部分。随着 AgilitySDK 1.720 预览版的发布,着色器模型 6.10(Shader Model 6.10)及以下多项特性被加入到 DX12 API 中:

着色器模型 6.10(通过 DXC 1.10.2605.2 实现):

  • linalg::Matrix(线性代数矩阵)

  • Group Wave Index(组波索引)

  • Variable Group Shared Memory(可变组共享内存)

  • 光线追踪内建函数:

    • TriangleObjectPositions(三角形对象位置)

    • ClusterID(簇ID)

linalg::Matrix

着色器模型 6.10(Shader Model 6.10)引入了一组面向广泛用例的矩阵 API,统称为 LinAlg(线性代数的缩写)。通过这一发布,微软使开发者能够在一个统一的 API 中,既可以从实时图形管线的单个着色器线程高效驱动神经渲染技术,也可以利用更高带宽的矩阵 MMA 操作用于机器学习和图像处理应用。

组波索引

着色器模型 6.10(Shader Model 6.10)引入了两个新的内建函数:GetGroupWaveIndex() 和 GetGroupWaveCount(),它们使计算、网格、放大和节点着色器能够直接了解线程组内的波前(wave)层级结构。GetGroupWaveIndex() 返回当前波前的索引(从 0 到 N-1),而 GetGroupWaveCount() 返回执行该线程组的总波前数量。这些函数使得波前级别的工作专精与协作成为可能,而无需依赖像通过 WaveGetLaneCount() 除以 SV_GroupIndex 这样不安全的变通方法(这种方法在所有硬件上无法保证正确性)。现在,一个单一的代码路径可以在所有波前大小上实现可移植运行。

可变组共享内存

着色器模型 6.10(Shader Model 6.10)解除了长期以来对组共享内存 32 KB(网格着色器为 28 KB)的上限限制,通过一个新的运行时查询 MaxGroupSharedMemoryPerGroup 来暴露实际硬件限制。着色器作者可以使用一个新的 【GroupSharedLimit()】 入口点属性来声明其着色器所需的最大共享内存,这既为编译器提供了编译时的可移植性检查,同时又允许访问现代 GPU 的全部容量。

省略该属性的着色器将继续按旧版限制进行验证,因此现有代码不受影响。这一特性解锁了诸如大型瓦片剔除、软件光栅化分箱以及大型矩阵工作负载等算法,这些此前受到规格限制而非硬件限制。

D3D12 特性:

批处理异步命令列表 API

D3D12 传统的 CopyBufferRegion、ClearUnorderedAccessViewFloat/Uint、ResolveSubresource 及类似命令都是严格串行执行的,因为旧的 ResourceBarrier 模型无法表达两个相同类型操作之间的依赖关系(例如,拷贝目标到拷贝目标)。这意味着 GPU 会在每个顺序执行的拷贝或清除操作之间停顿,即使这些操作访问的是完全独立的内存。

批处理异步命令(Batched Async Commands)特性通过引入新的命令列表方法解决了这个问题,这些方法移除了隐式的序列化契约,允许驱动程序和硬件在单个批处理调用内重叠执行独立的工作。开发者仅在存在真实数据冲突时(例如,两个拷贝操作写入同一缓冲区的重叠区域)才使用增强型屏障显式选择同步,而其他所有操作都将并发执行。

所有主要硬件供应商,包括 英伟达(NVIDIA)AMD英特尔(Intel),都为此新预览版提供了支持:

  • AMD:AMD Software: AgilitySDK Developer Preview Edition 25.30.41.02

  • 英特尔(Intel):Intel Arc Graphics – Windows

  • 英伟达(NVIDIA):请联系您的开发者关系代表以获取开发中驱动程序的访问权限。

在硬件支持方面,英伟达(NVIDIA) 在其整个 RTX GPU 产品线中支持大部分功能,而 AMD英特尔(Intel) 则在其最新硬件(如 Arc B 系列和 RDNA 4(Radeon RX 9000))上支持特定功能。组波索引目前受 RX 7000(RDNA 3)RX 9000(RDNA 4) GPU 支持,而在 英伟达(NVIDIA) 方面,计划在即将发布的版本中支持。英特尔也将在未来版本中新增对新的线性代数 API 的支持。

具体来说,对于 linAlg::Matrix 特性,AMD Radeon RX 9000 系列显卡提供支持,英特尔计划在即将发布的版本中支持,而英伟达所有 RTX 硬件均支持。对于组波索引,AMD Radeon RX 70009000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达计划在即将发布的版本中支持。对于可变组共享内存,AMD Radeon RX 70009000 系列显卡支持,但仅支持默认内存大小限制,更高的限制计划在未来的驱动版本中提供;英特尔 Arc B 系列显卡支持默认大小;英伟达所有 RTX 硬件支持,且不同硬件的值可能不同。对于光线追踪内建函数(TriangleObjectPositions/ClusterID),AMD Radeon RX 70009000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达所有 RTX 硬件支持。对于批处理异步命令列表 API,AMD Radeon RX 70009000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达所有 RTX 硬件支持。


文章标签: #DX #着色器 #神经渲染 #GPU支持 #新特性

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。