Синтаксис
Ниже приведен синтаксис для вызова 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.
/См3
Вывод сборки с цветовой кодировкой.
/Сжать
Сжатие байт-кода шейдера DX10 из файлов.
/D <id>=<text>
Определите макрос.
/Распаковки
Распаковка байт-кода шейдера DX10 из первого файла. Выходные файлы должны быть перечислены в том порядке, в который они находились во время сжатия.
/Dumpbin
Загружает двоичный файл вместо компиляции шейдера.
/E <name>
Точка входа шейдера. Если точка входа не указана, main считается именем записи шейдера.
/enable_unbounded_descriptor_tables
Включает неограниченные таблицы дескрипторов. Новые возможности для Direct3D 12.
Файл /extractrootsignature <>
Извлеките корневую сигнатуру из байт-кода шейдера. Новые возможности для Direct3D 12.
Файл /Fc <>
Файл со списком кода выходной сборки.
Файл /FD <>
Извлечение сведений о базе данных программы шейдера (PDB) и запись в указанный файл. При компиляции шейдера используйте параметр /Fd для создания PDB-файла с сведениями об отладке шейдера.
Файл /Fe <>
Вывод предупреждений и ошибок в указанный файл.
Файл /FH <>
Выходной файл заголовка, содержащий код объекта.
Файл /Fl <
Вывод библиотеки. Требуется D3dcompiler_47.dll или более поздняя версия библиотеки DLL.
Файл /Fo <>
Выходной файл объекта. Часто используется расширение .fxc, хотя используются и другие расширения, такие как .o", .obj" или .dxbc".
Файл /Fx <>
Выходной код сборки и шестнадцатеричный файл со списком.
/Gch
Компилируйте как дочерний эффект для профилей fx_4_x.
Примечание
Поддержка устаревших профилей эффектов не рекомендуется.
/Ввп
Отключите режим производительности эффекта.
/Gec
Включите режим обратной совместимости.
/Ges
Включите строгий режим.
Файл /getprivate <>
Сохраните частные данные из большого двоичного объекта шейдера (скомпилированного двоичного файла шейдера) в данный файл. Извлекает частные данные, ранее внедренные с помощью /setprivate, из большого двоичного объекта шейдера.
Параметр /dumpbin необходимо указать с параметром /getprivate. Пример:
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
Избегайте конструкций управления потоком.
/Gfp
Предпочитать конструкции управления потоком.
/Гис
Принудительная строгость IEEE.
/Gpp
Принудительная частичная точность.
/I <include>
Дополнительный путь включения.
/Lx
Выходные шестнадцатеричные литералы. Требуется D3dcompiler_47.dll или более поздняя версия библиотеки DLL.
/matchUAV
Сопоставление выделения слотов UAV шаблона шейдера в текущем шейдере. Дополнительные сведения см. в разделе Примечания.
/mergeUAV
Объединить выделения слотов UAV шаблонного шейдера и текущего шейдера. Дополнительные сведения см. в разделе Примечания.
/Ni
Выходные номера инструкций в списках сборок.
/Нет
Смещение байтов выходных инструкций в списках сборок. При создании сборки используйте параметр /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 и более поздних версий. Удаляет частные данные (произвольную последовательность байтов) из большого двоичного объекта шейдера (скомпилированного двоичного файла шейдера), который вы ранее встроили с /setprivate <file>
помощью параметра .
Параметр /dumpbin необходимо указать с параметром /Qstrip_priv. Пример:
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
Удаление данных отражения из байт-кода шейдера для профилей 4_0 и более поздних версий.
/Qstrip_rootsignature
Удаление корневой подписи из байт-кода шейдера. Новые возможности для Direct3D 12.
/res_may_alias
Предположим, что БПЛА или srV могут быть псевдонимами для cs_5_0+. Требуется D3dcompiler_47.dll или более поздняя версия библиотеки DLL.
Файл /setprivate <>
Добавьте частные данные в данный файл в скомпилированный большой двоичный объект шейдера. Внедряет заданный файл, который обрабатывается как необработанный буфер, в большой двоичный объект шейдера. Используйте параметр /setprivate для добавления частных данных при компиляции шейдера. Или используйте параметр /dumpbin с параметром /setprivate, чтобы загрузить существующий объект шейдера, а затем, когда объект находится в памяти, добавить частный большой двоичный объект данных. Например, используйте одну команду с параметром /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.
/Vi
Отображение сведений о процессе включения.
/Vn <name>
Используйте имя в качестве имени переменной в файле заголовка.
/WX
Обрабатывать предупреждения как ошибки.
/ZI
Включает сведения об отладке.
/Zpc
Упаковать матрицы в порядке столбцов по основным столбцам.
/Zpr
Упаковать матрицы в порядке основной строки.
Имена файлов
[in] Файлы, содержащие шейдеры и (или) эффекты.
Комментарии
/mergeUAVs
Используйте параметры , /matchUAVs
и /shtemplate
для выравнивания слотов привязки UAV для цепочки шейдеров.
Предположим, что у вас есть шейдеры A.fx, B.fx и C.fx. Чтобы выровнять слоты привязки UAV для этой цепочки шейдеров, требуется два прохода компиляции:
Выравнивание слотов привязки UAV для цепочки шейдеров
- Используйте /mergeUAV для компиляции шейдеров и укажите ранее скомпилированный большой двоичный объект шейдера с параметром /shtemplate. Пример:
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- Используйте /matchUAVs для компиляции шейдеров и укажите последний большой двоичный объект шейдера из первого прохода с помощью /shtemplate. Компиляция может выполняться в любом порядке. Пример:
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
Вам не нужно перекомпилировать C.fx во время второго прохода.
После выполнения двух предыдущих этапов компиляции можно использовать A.o, B.o и C.o в качестве окончательных больших двоичных объектов шейдера с выровненными слотами 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 .
Примеры см. в разделе Компиляция с помощью текущего компилятора.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по