DirectX Shader Compiler 编译引擎 · HLSL 到 DXIL 的完整链路
dxcompiler.dll 是微软 DirectX Shader Compiler(DXC)项目的编译核心动态链接库,随 Windows SDK、DirectX 12 Agility SDK 以及部分显卡驱动与开发工具分发。它基于 LLVM/Clang 前端构建,是旧版 D3DCompiler(fxc)编译链路在 Shader Model 6 时代的官方继任者,承担着色器源码到 GPU 可执行字节码的全部转换工作。
提供符合现代 C++ 语义的 HLSL 词法分析、语法分析与语义校验,支持模板、类、运算符重载、命名空间等高级语言特性。
将源码降级为 LLVM IR,经 SROA、内联、循环优化、死代码消除等通道处理后,降低寄存器压力与指令开销。
把优化后的 IR 翻译为 DXIL(DirectX Intermediate Language),一种面向 D3D12 的强类型、基于 LLVM 位码的中间格式,并封装进 DXBC 容器供运行时消费。
支持生成 PDB 调试符号与源码级关联信息,供 PIX、RenderDoc、Nsight 等工具进行着色器调试;同时可提取资源绑定、常量缓冲区布局、输入输出签名等反射数据。
覆盖 Shader Model 6.0 至 6.8,支持 Wave Intrinsics、DXR 光线追踪、Mesh Shader 与 Amplification Shader,并可通过 SPIRV-CodeGen 输出 SPIR-V 目标。
| 接口 | 用途 |
|---|---|
| IDxcCompiler3 | 主要编译入口,接收参数表并返回 IDxcResult |
| IDxcUtils | 创建 Blob、加载源码、解析容器反射信息 |
| IDxcIncludeHandler | 处理 include 指令与头文件搜索 |
| IDxcContainerReflection | 读取 DXIL 容器中的反射与签名数据 |