Поделиться через


Синтаксис

Ниже приведен синтаксис вызова FXC.exe, средства компилятора эффектов. Пример см. в статье "Автономная компиляция".

Использование

Имена файлов fxc SwitchOptions

Аргументы

Разделите каждый параметр коммутатора пробелом или двоеточием.

SwitchOptions

[in] Параметры компиляции. Существует только один обязательный вариант, и многие другие, которые являются необязательными. Отделяйте каждое пространство или двоеточие.

Обязательный параметр

Профиль /T <>

Модель шейдера (см . профили).

Необязательные параметры

/?, /help

Справка по FXC.exeпечати.

@<command.option.file>

Файл, содержащий дополнительные параметры компиляции. Этот параметр можно смешать с другими параметрами компиляции командной строки. Файл command.option.file должен содержать только один параметр для каждой строки. Файл command.option.file не может содержать пустые строки. Параметры, указанные в файле, не должны содержать начальные или конечные пробелы.

/all_resources_bound

Включите агрессивное выравнивание в SM5.1+. Новые возможности Direct3D 12.

/Кубовый

Выходная сборка с кодом цвета.

/компресс

Сжатие байт-кода шейдера DX10 из файлов.

/D <id>=<text>

Определите макрос.

/снижать давление

Декомпрессировать байт-код шейдера DX10 из первого файла. Выходные файлы должны быть указаны в том порядке, в который они находились во время сжатия.

/dumpbin

Загружает двоичный файл вместо компиляции шейдера.

/E <name>

Точка входа шейдера. Если точка входа не указана, основной считается именем записи шейдера.

/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.

/matchUAVs

Сопоставление выделения слотов UAV шаблона в текущем шейдере. Дополнительные сведения см. в разделе "Примечания".

/mergeUAVs

Слияние выделения слотов UAV для шейдера шаблона и текущего шейдера. Дополнительные сведения см. в разделе "Примечания".

/Ni

Выходные номера инструкций в списках сборок.

/Нет

Смещение байтов инструкции вывода в списках сборок. При создании сборки используйте параметр /No, чтобы заметить его с смещением байтов для каждой инструкции.

Позволяет запретить вывод сообщения об авторских правах.

/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

Предположим, что для cs_5_0+могут быть псевдонимы для uav/SRV. Требуется D3dcompiler_47.dll или более поздняя версия библиотеки DLL.

/setprivate <file>

Добавьте частные данные в указанный файл в скомпилированный большой двоичный объект шейдера. Внедряет заданный файл, который обрабатывается как необработанный буфер, в большой двоичный объект шейдера. Используйте /setprivate для добавления частных данных при компиляции шейдера. Или используйте параметр /dumpbin с параметром /setprivate для загрузки существующего объекта шейдера, а затем после того, как объект находится в памяти, чтобы добавить частный большой двоичный объект данных. Например, используйте одну команду с /setprivate для добавления частных данных в скомпилированный большой двоичный объект шейдера:

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 <>

Используйте указанный файл шейдера шаблона для объединения ресурсов (/mergeUAVs) и сопоставления (/matchUAVs). Дополнительные сведения см. в разделе "Примечания".

/Vd

Отключите проверку.

/verifyrootsignature <file>

Проверьте байт-код шейдера для корневой подписи. Новые возможности Direct3D 12.

/Vi

Отображение сведений о процессе включения.

/Vn <name>

Используйте имя в качестве имени переменной в файле заголовка.

/WX

Обработайте предупреждения как ошибки.

/Zi

Включает сведения об отладке.

/Zpc

Матрицы пакетов в порядке основного столбца.

/Zpr

Матрицы пакетов в порядке крупных строк.

Имена файлов

[in] Файлы, содержащие шейдеры и/или эффекты.

Замечания

/mergeUAVs/matchUAVsИспользуйте параметры и /shtemplate параметры для выравнивания слотов привязки UAV для цепочки шейдеров.

Предположим, у вас есть шейдеры A.fx, B.fx и C.fx. Чтобы выровнять слоты привязки UAV для этой цепочки шейдеров, вам потребуется два прохода компиляции:

Выравнивание слотов привязки UAV для цепочки шейдеров

  1. Используйте /mergeUAVs для компиляции шейдеров и укажите ранее скомпилированный большой двоичный объект шейдера с /shtemplate. Например:
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. Используйте /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 в качестве конечных blob-объектов шейдера с выровненными слотами UAV.

Профили

Каждая модель шейдера помечена профилем HLSL. Чтобы скомпилировать шейдер для определенной модели шейдера, выберите соответствующий профиль шейдера из следующей таблицы.

Тип шейдераПрофили
Шейдер вычислений
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Шейдер домена
ds_5_0
ds_5_1
Шейдер геометрии
gs_4_0
gs_4_1
gs_5_0
gs_5_1
Связывание шейдера HLSL
lib_4_0
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
Дополнительные сведения о связывании шейдеров см. в разделе ID3D11Linker и ID3D11FunctionLinkingGraph.
Шейдер корпуса
hs_5_0
hs_5_1
Построитель текстуры
ps_2_0
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
Корневая подпись
rootsig_1_0
Шейдер текстур
tx_1_0
Шейдер вершин
vs_1_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 .

Примеры см. в разделе "Компиляция с помощью текущего компилятора".