语法
下面是用于调用效果编译器工具 FXC.exe 的语法。 有关示例,请参阅脱机编译。
使用情况
fxc SwitchOptions Filenames
参数
每个开关选项之间用空格或冒号隔开。
SwitchOptions
[in] 编译选项 只有一个必需选项,并有多个可选项。 用空格或冒号将每个选项隔开。
必需选项
/T <profile>
着色器模型(请参阅配置文件)。
可选选项
/?, /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>
定义宏。
/decompress
解压第一个文件中的 DX10 着色器字节码。 输出文件应按压缩时的顺序排列。
/dumpbin
加载二进制文件,而不是编译着色器。
/E <名称>
着色器入口点。 如果为给出入口点,则 main 将被视为着色器入口名称。
/enable_unbounded_descriptor_tables
启用无限制描述符表。 Direct3D 12 的新功能。
/extractrootsignature <file>
从着色器字节码中提取根签名。 Direct3D 12 的新功能。
/Fc <file>
输出程序集代码列表文件。
/Fd <file>
提取着色器程序数据库 (PDB) 信息并写入给定文件。在编译着色器时,使用 /Fd 生成包含着色器调试信息的 PDB 文件。
/Fe <file>
将警告和错误信息输出到指定文件。
/Fh <file>
包含对象代码的输出标头文件。
/Fl <file
输出一个库。 需要 D3dcompiler_47.dll 或更高版本的 DLL。
/Fo <file>
输出对象文件。 扩展名通常为“.fxc”,也有使用其他扩展名的,如“.o”、“.obj”或“.dxbc”。
/Fx <file>
输出程序集代码和十六进制列表文件。
/Gch
作为 fx_4_x 配置文件的子效果进行编译。
注意
已弃用对旧 Effects 配置文件的支持。
/Gdp
禁用效果性能模式。
/Gec
启用向后兼容模式。
/Ges
启用严格模式。
/getprivate <file>
将着色器 blob(编译后的着色器二进制文件)中的私有数据保存到给定的文件中。 从着色器 Blob 中提取之前由 /setprivate 嵌入的专用数据。
必须使用 /getprivate 指定 /dumpbin 选项。 例如:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
避免使用流量控制结构。
/Gfp
优先选择流量控制结构。
/Gis
强制执行 IEEE 严格要求。
/Gpp
强制执行部分精度。
/I <include>
其他包含路径。
/Lx
输出十六进制文本。 需要 D3dcompiler_47.dll 或更高版本的 DLL。
/matchUAVs
匹配当前着色器中的模板着色器 UAV 槽分配。 有关更多信息,请参阅备注。
/mergeUAVs
合并模板着色器和当前着色器的 UAV 槽分配。 有关更多信息,请参阅备注。
/Ni
程序集列表中的输出指令编号。
/No
程序集列表中的输出指令字节偏移量。 在生成程序集时,可使用 /No 对每个指令的字节偏移量进行批注。
/nologo
取消显示版权消息。
/Od
禁用优化。 /Od 意味着 /Gfp,但输出可能与 /Od /Gfp 不一致。
/Op
禁用预着色器(已弃用)。
/O0 /O1, /O2, /O3
优化级别。 O1 为默认设置。
- O0 - 禁用指令重新排序。 这有助于减少寄存器负载,同时加快循环模拟速度。
- O1 - 禁用 ps_3_0 及以上版本的指令重新排序。
- O2 - 与 O1 相同。 保留供将来使用。
- O3 - 与 O1 相同。 保留供将来使用。
/P <file>
预处理到文件(必须单独使用)。
/Qstrip_debug
从 4_0+ 配置文件的着色器字节码中删除调试数据。
/Qstrip_priv
从 4_0+ 着色器字节码中剥离专用数据。 删除之前使用 /setprivate <file>
选项嵌入的着色器 blob(编译后的着色器二进制文件)中的专用数据(任意字节序列)。
必须使用 /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+ 的别名。 需要 D3dcompiler_47.dll 或更高版本的 DLL。
/setprivate <file>
将给定文件中的专用数据添加到编译后的着色器 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 <file>
将根签名附加到着色器字节码。 Direct3D 12 的新功能。
/shtemplate <file>
使用给定的模板着色器文件来合并 (/mergeUAVs) 和匹配 (/matchUAVs) 资源。 有关更多信息,请参阅备注。
/Vd
禁用验证。
/verifyrootsignature <file>
根据根签名验证着色器字节码。 Direct3D 12 的新功能。
/Vi
显示有关包含过程的详细信息。
/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 作为最终着色器 Blob,并对齐 UAV 槽。
档案
每个着色器模型都标有 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 成员中显示了设备支持的顶点和像素着色器配置文件。
有关示例,请参阅使用当前编译器进行编译。