周三下午,一个开发者在示例程序里跑出 1.2 FPS 。同一张AMD Radeon RX 9070,换上一套新的几何组织方式后,帧数跳到 79 FPS 。微软在10月28日宣布推出DirectX 12 Agility SDK 1.620正式版和1.722预览版,为DirectX光线追踪(DXR)带来多项更新,并称这是DXR自2018年推出以来最重大的一次更新。 先把问题摆清楚。传统光追需要构建和更新加速结构,让GPU快速判断光线与场景几何体的相交关系,这些结构通常采用包围体层次结构(BVH)等形式。场景里一旦塞满动画、几何体流式加载和频繁变化的物体,反复构建加速结构就成了实打实的计算开销。 新版预览SDK给出的解法是 集群几何体(Clustered Geometry) :把几何数据划分成可重复使用的小型集群,每个集群最多包含 256个三角形和256个顶点 。开发者组合这些集群构建更大的光追加速结构,减少重复处理几何数据的工作量,从而更高效地用高精度模型做光线追踪。 这带来的直接变化是,开发者有望在光栅化渲染和光线追踪中复用同一套高精度几何数据,减少为光追单独制作简化模型的需求,反射和阴影与实际场景的匹配程度也能跟着改善。 另一项 分区顶层加速结构(PTLAS) 盯的是大型动态场景的更新效率。传统顶层加速结构(TLAS)要管理场景中的物体实例,场景一大,哪怕只有少量物体变化,更新开销也可能很高。PTLAS允许把场景划成多个分区,只更新发生变化的部分,未变化区域保留既有结构。结合GPU驱动的加速结构构建功能,还能让GPU直接参与构建和更新,减少CPU侧准备工作。这些功能可以单独用,也可以组合用。 回到那组数字。微软公布的D3D12RaytracingClusteredGeometry示例中,采用AMD Radeon RX 9070的测试配置使用集群几何体后,性能从传统底层加速结构(BLAS)方案的1.2 FPS提升至79 FPS,约为原来的 66倍 ;加速结构构建时间从 788毫秒 缩短至 3.11毫秒 ;加速结构总内存占用从约 7.3 GiB 降至 774 MiB ,减少近90%。 微软同时强调,上述数据来自特定开发示例和测试配置,并不代表所有游戏都能获得相同幅度的提升,实际效果取决于具体工作负载、引擎实现方式和GPU架构。 硬件支持方面,首批范围包括: 所有英伟达GeForce RTX显卡 AMD Radeon RX 9000系列显卡 英特尔Arc B系列独立显卡和部分酷睿Ultra处理器集成显卡 微软表示,这些DXR新功能不要求GPU具备超出现有光线追踪能力的全新硬件特性,但仍需要显卡厂商提供相应驱动支持。微软还提到NVIDIA在《战争机器:事变日》中使用的RTX Mega Geometry技术,作为类似思路的早期实例。此次DirectX标准化更新有望让不同显卡厂商的开发者通过统一接口采用集群几何体等技术,具体支持范围仍取决于各厂商的驱动实现与验证进度。 光追之外,1.620正式版还改进了高级着色器交付(Advanced Shader Delivery,ASD)技术。其中部分图形程序(Partial Graphics Programs)允许开发者在多个渲染管线配置之间复用预编译着色器组件,有望减少着色器包体积和编译开销。不过这项优化目前仅支持AMD Radeon RX 7000和RX 9000系列显卡,其他厂商的支持计划仍有待推进。 1.620正式版还加入了DirectX Dump Files GPU崩溃诊断功能、Fence Barriers Tier 1、批量异步命令列表API,以及面向机器学习工作负载的DirectX Compute Graph Compiler运行时接口等更新。微软同时确认,Shader Model 6.10仍处于预览阶段,计划随12月初发布的Agility SDK 1.621正式版推出。 特别