Синтаксис
Ниже приведен синтаксис вызова 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, чтобы заметить его с смещением байтов для каждой инструкции.
/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
Предположим, что для 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 для цепочки шейдеров
- Используйте /mergeUAVs для компиляции шейдеров и укажите ранее скомпилированный большой двоичный объект шейдера с /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 в качестве конечных 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 .
Примеры см. в разделе "Компиляция с помощью текущего компилятора".