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

此次发布是对先前着色器模型 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(
省略该属性的着色器将继续按旧版限制进行验证,因此现有代码不受影响。这一特性解锁了诸如大型瓦片剔除、软件光栅化分箱以及大型矩阵工作负载等算法,这些此前受到规格限制而非硬件限制。
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 7000 和 9000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达计划在即将发布的版本中支持。对于可变组共享内存,AMD Radeon RX 7000 和 9000 系列显卡支持,但仅支持默认内存大小限制,更高的限制计划在未来的驱动版本中提供;英特尔 Arc B 系列显卡支持默认大小;英伟达所有 RTX 硬件支持,且不同硬件的值可能不同。对于光线追踪内建函数(TriangleObjectPositions/ClusterID),AMD Radeon RX 7000 和 9000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达所有 RTX 硬件支持。对于批处理异步命令列表 API,AMD Radeon RX 7000 和 9000 系列显卡支持,英特尔 Arc B 系列显卡支持,英伟达所有 RTX 硬件支持。



