首页
/ DirectXShaderCompiler 1.8.2505版本发布:长向量支持与SM 6.9预览

DirectXShaderCompiler 1.8.2505版本发布:长向量支持与SM 6.9预览

2025-06-15 21:54:22作者:伍霜盼Ellen

DirectXShaderCompiler(简称DXC)是微软开源的HLSL着色器编译器,用于将高级着色器语言(HLSL)编译为DXIL中间语言或SPIR-V格式。2025年5月发布的1.8.2505版本带来了多项重要更新,包括对Shader Model 6.9的预览支持、长向量类型、SPIR-V新特性等重大改进。

核心功能更新

类型缓冲区限制强化

本次版本对类型化缓冲区(包括ROV缓冲区)进行了重要限制:现在仅支持向量和标量类型。这一变更移除了对矩阵和结构体的支持,虽然这些类型在某些上下文中曾经可用,但生成的代码并不可靠。作为这一变更的一部分,加载和存储操作也进行了重构,开发者如果发现任何行为差异应当及时反馈。

验证器机制优化

编译器现在将始终使用内部验证器,不再搜索外部的DXIL.dll。同时移除了隐藏的-select-validator选项,这一变更简化了验证流程并提高了可靠性。

SPIR-V新特性

缓冲区指针支持

新增了vk::BufferPointer功能,为Vulkan环境下的缓冲区引用提供了更直接的访问方式。这一特性特别适合需要精细控制内存访问模式的高级着色器场景。

四边形操作指令

实现了QuadAny和QuadAll指令,这些指令在SIMD架构下能够高效地执行跨四边形的逻辑运算,为图形算法和通用计算提供了新的优化可能性。

Shader Model 6.9预览

虽然SM 6.9仍处于预览阶段,但本次发布已经包含了多项前瞻性功能。需要注意的是,预览版着色器使用特殊的PREVIEW_BYPASS哈希模式,且仅能在特定环境下运行:

  • 需要AgilitySDK 1.717.0-preview
  • 需要支持预览版的驱动程序
  • 需要在开发者模式下启用实验性着色器模型

长向量支持

SM 6.9最引人注目的特性之一是长向量支持。现在HLSL中可以定义最多包含1024个元素的向量类型,这些长向量可以:

  • 从原始缓冲区加载/存储
  • 用于元素级运算
  • 显著减少某些算法中的数据分块需求

不过,在以下上下文中仍然保持最大4元素的传统限制:

  • 入口函数的输入/输出参数
  • 网格、光线追踪和节点着色器的特殊参数类型
  • 各种缓冲区类型(常量、纹理、类型化缓冲区)
  • 纹理资源

DXIL向量扩展

DXIL中间语言现在原生支持最多1024元素的向量,包括:

  • 向量LLVM指令
  • 加载/存储操作
  • 各种元素级DXIL操作

这一改进不仅减少了生成的DXIL代码大小,还可能带来性能提升,特别是在处理大规模数据并行操作时。

协作向量运算

作为线性代数功能子集,协作向量运算为大规模向量处理提供了新的可能性。新增的内置操作包括:

  • 长向量与ByteAddressBuffer中矩阵的乘法
  • 可选的累加和偏置操作
  • 外积和向量累加运算

配套的HLSL头文件提供了更友好的API封装,使得这些底层功能更易于使用。

光线追踪增强

针对DXR着色器的两项重要改进:

  1. 不透明度微图(Opacity Micromaps):通过三角形细分实现快速命中/未命中检测,减少anyhit调用需求,提升光线追踪性能。

  2. 着色器执行重排序(Shader Execution Reordering)

    • 新增MaybeReorderThread()函数,显式指定线程重排序点以改善执行连贯性(仅限光线生成着色器)
    • HitObject类型解耦了遍历、相交测试和anyhit着色与closesthit及miss着色的关联,提供更精细的控制和更好的重排序机会(可用于光线生成、closesthit和miss着色器)

开发者注意事项

  1. 使用SM 6.9预览功能时需注意,生成的着色器将不兼容未来正式版SM 6.9。

  2. 长向量虽然强大,但并非所有HLSL元素级内置函数都已支持,使用时需验证功能可用性。

  3. 类型化缓冲区的限制变更可能影响现有代码,需要检查并更新相关着色器。

  4. 协作向量运算特别适合机器学习推理、大规模物理模拟等计算密集型场景。

本次发布的编译器二进制文件包括Windows平台的dxc.exe、dxcompiler.dll、dxv.exe、dxil.dll,以及Linux平台的对应版本,同时提供了Windows符号文件(.pdb)。也可以通过NuGet包Microsoft.Direct3D.DXC/1.8.2505.28获取。

这些改进为图形编程和通用计算开辟了新的可能性,特别是长向量和协作运算功能将显著提升大规模数据并行处理的效率和便利性。开发者可以开始探索这些新特性,为下一代图形和计算应用做好准备。

登录后查看全文
热门项目推荐

热门内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
139
1.91 K
kernelkernel
deepin linux kernel
C
22
6
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
273
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
923
551
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
421
392
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
74
64
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.3 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8