语法
下面是用于调用效果编译器工具 FXC.exe 的语法。 有关示例,请参阅 脱机编译。
使用情况
fxcSwitchOptions文件名
参数
用空格或冒号分隔每个开关选项。
SwitchOptions
[in]编译选项。 只有一个必需的选项,还有更多是可选的。 用空格或冒号分隔每个。
必需选项
/T <配置文件>
着色器模型 (请参阅 配置文件) 。
可选选项
/?, /help
打印的 FXC.exe
帮助。
@<command.option.file>
包含其他编译选项的文件。 此选项可以与其他命令行编译选项混合。 command.option.file 每行只能包含一个选项。 command.option.file 不能包含任何空白行。 文件中指定的选项不得包含任何前导空格或尾随空格。
/all_resources_bound
在 SM5.1+ 中启用主动平展。 Direct3D 12 的新增功能。
/Cc
输出颜色编码程序集。
/compress
压缩文件中的 DX10 着色器字节码。
/D <id>=<text>
定义宏。
/解 压缩
从第一个文件解压缩 DX10 着色器字节码。 输出文件应按压缩过程中的顺序列出。
/dumpbin
加载二进制文件,而不是编译着色器。
/E <名称>
着色器入口点。 如果未提供入口点,则main被视为着色器条目名称。
/enable_unbounded_descriptor_tables
启用无限制的描述符表。 Direct3D 12 的新增功能。
/extractrootsignature <文件>
从着色器字节代码中提取根签名。 Direct3D 12 的新增功能。
/Fc <文件>
输出程序集代码列表文件。
/Fd <文件>
提取着色器程序数据库 (PDB) 信息并写入给定文件。编译着色器时,请使用 /Fd 生成包含着色器调试信息的 PDB 文件。
/Fe <文件>
将警告和错误输出到给定的文件。
/Fh <文件>
包含对象代码的输出头文件。
/Fl <文件
输出库。 需要 DLL 的D3dcompiler_47.dll或更高版本。
/Fo <文件>
输出对象文件。 通常给定扩展名“.fxc”,但使用其他扩展,例如“.o”、“.obj”或“.dxbc”。
/Fx <文件>
输出程序集代码和十六进制列表文件。
/Gch
编译为fx_4_x配置文件的子效果。
注意
已弃用对旧版效果配置文件的支持。
/Gdp
禁用效果性能模式。
/Gec
启用向后兼容模式。
/Ges
启用严格模式。
/getprivate <文件>
将着色器 blob 中的私有数据 (编译的着色器二进制) 保存到给定文件。 从着色器 Blob 中提取以前由 /setprivate 嵌入的私有数据。
必须使用 /getprivate 指定 /dumpbin 选项。 例如:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
避免使用流控制构造。
/Gfp
首选流控制构造。
/Gis
强制 IEEE 严格性。
/Gpp
强制部分精度。
/I <include>
其他包含路径。
/Lx
输出十六进制文本。 需要 DLL 的D3dcompiler_47.dll或更高版本。
/matchUAV
匹配当前着色器中的模板着色器 UAV 槽分配。 有关详细信息,请参阅 备注。
/mergeUAV
合并模板着色器与当前着色器的 UAV 槽分配。 有关详细信息,请参阅 备注。
/镍
在程序集列表中输出指令编号。
/不
程序集列表中输出指令字节偏移量。 生成程序集时,请使用 /No 将程序集批注为每个指令的字节偏移量。
/nologo
取消显示版权消息。
/Od
禁用优化。 /Od 表示 /Gfp,但输出可能与 /Od /Gfp 不同。
/Op
禁用已弃用) (预示符。
/O0 /O1、/O2、/O3
优化级别。 O1 是默认设置。
- O0 - 禁用指令重新排序。 这有助于减少寄存器负载,并实现更快的循环模拟。
- O1 - 禁用ps_3_0和向上的指令重新排序。
- O2 - 与 O1 相同。 保留供将来使用。
- O3 - 与 O1 相同。 保留供将来使用。
/P <文件>
预处理到文件 (必须单独使用) 。
/Qstrip_debug
从着色器字节码中去除 4_0+ 配置文件的调试数据。
/Qstrip_priv
从 4_0+ 着色器字节码中去除私有数据。 从着色器 blob 中删除私有数据 (任意字节序列) , (先前嵌入 /setprivate <file>
选项的已编译着色器二进制) 。
必须使用 /Qstrip_priv 指定 /dumpbin 选项。 例如:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
从着色器字节码中去除 4_0+ 配置文件的反射数据。
/Qstrip_rootsignature
从着色器字节码中去除根签名。 Direct3D 12 的新增功能。
/res_may_alias
假设 UAV/SRV 可能为 cs_5_0+ 别名。 需要 DLL 的D3dcompiler_47.dll或更高版本。
/setprivate <文件>
将给定文件中的私有数据添加到编译的着色器 Blob。 将给定文件(被视为原始缓冲区)嵌入到着色器 Blob 中。 编译着色器时,使用 /setprivate 添加私有数据。 或者,将 /dumpbin 选项与 /setprivate 一起使用以加载现有的着色器对象,然后在对象位于内存中之后添加专用数据 Blob。 例如,将单个命令与 /setprivate 结合使用,将私有数据添加到已编译的着色器 Blob:
fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx
/setprivate ps01.private.data
或者,使用两个命令,其中第二个命令加载着色器对象,然后添加私有数据:
fxc /T ps_4_0 /Fo ps01.no.private.obj ps01.fx
fxc /dumpbin /Fo ps01.with.private.obj ps01.no.private.obj
/setprivate ps01.private.data
/setrootsignature <文件>
将根签名附加到着色器字节码。 Direct3D 12 的新增功能。
/shtemplate <文件>
使用给定的模板着色器文件来合并 (/mergeUAV) 和匹配 (/matchUAV) 资源。 有关详细信息,请参阅 备注。
/Vd
禁用验证。
/verifyrootsignature <文件>
根据根签名验证着色器字节码。 Direct3D 12 的新增功能。
/六
显示有关包含过程的详细信息。
/Vn <name>
在头文件中使用 name 作为变量名称。
/WX
将警告视为错误。
/ZI
启用调试信息。
/Zpc
按列主顺序打包矩阵。
/Zpr
按行主顺序打包矩阵。
文件名
[in]包含着色器 () 和/或效果 () 的文件。
备注
/mergeUAVs
使用 、 /matchUAVs
和 /shtemplate
选项来对齐一系列着色器的 UAV 绑定槽。
假设你有着色器 A.fx、B.fx 和 C.fx。 若要对齐此着色器链的 UAV 绑定槽,需要两次编译:
对齐一系列着色器的 UAV 绑定槽
- 使用 /mergeUAV 编译着色器,并使用 /shtemplate 指定以前编译的着色器 Blob。 例如:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- 使用 /matchUAV 编译着色器,并使用 /shtemplate 指定第一个通道中的最后一个着色器 blob。 可以按任意顺序进行编译。 例如:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
无需在第二次传递中重新编译 C.fx。
执行上述两个编译阶段后,可以使用 A.o、B.o 和 C.o 作为具有对齐 UAV 槽的最终着色器 Blob。
配置文件
每个着色器模型都标有一个 HLSL 配置文件。 若要根据特定着色器模型编译着色器,请从下表中选择适当的着色器配置文件。
着色器类型 | 配置文件 |
---|---|
计算着色器 |
cs_4_1 cs_5_0 cs_5_1 |
域着色器 |
ds_5_1 |
几何着色器 |
gs_4_1 gs_5_0 gs_5_1 |
HLSL 着色器链接 |
lib_4_1 lib_4_0_level_9_1 lib_4_0_level_9_1_vs_only lib_4_0_level_9_1_ps_only lib_4_0_level_9_3 lib_4_0_level_9_3_vs_only lib_4_0_level_9_3_ps_only lib_5_0 |
外壳着色器 |
hs_5_1 |
像素着色器 |
ps_2_a ps_2_b ps_2_sw ps_3_0 ps_3_sw ps_4_0 ps_4_0_level_9_0 ps_4_0_level_9_1 ps_4_0_level_9_3 ps_4_1 ps_5_0 ps_5_1 |
根签名 |
|
纹理着色器 |
|
顶点着色器 |
vs_2_0 vs_2_a vs_2_sw vs_3_0 vs_3_sw vs_4_0 vs_4_0_level_9_0 vs_4_0_level_9_1 vs_4_0_level_9_3 vs_4_1 vs_5_0 vs_5_1 |
版本说明
对于 Direct3D 12,请参阅 指定 HLSL 中的根签名、 HLSL 中的资源绑定 和使用 HLSL 5.1 的动态索引。
在 Direct3D 10 中,通过调用以下函数,使用 API 获取最适合给定设备的顶点、几何图形和像素着色器配置文件: D3D10GetVertexShaderProfile、 D3D10GetPixelShaderProfile 和 D3D10GetGeometryShaderProfile。
在 Direct3D 9 中,使用 GetDeviceCaps 或 GetDeviceCaps 方法检索设备支持的顶点和像素着色器配置文件。 这些方法返回的 D3DCAPS9 结构指示设备在其 VertexShaderVersion 和 PixelShaderVersion 成员中支持的顶点和 像素 着色器配置文件。
有关示例,请参阅 使用当前编译器进行编译。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈