Указание целевых объектов компилятора

При вызове функции D3DCompile, D3DCompile2 или D3DCompile2 или D3DCompileFromFile необходимо указать целевой объект шейдера — набор функций шейдера. Здесь мы перечислим целевые объекты для различных профилей, которые поддерживает D3DCompile* и компилятор HLSL.

Уровни функций Direct3D 11.0 и 11.1

Ниже приведены целевые объекты шейдеров, которые поддерживают уровни функций Direct3D 11.0 и 11.1.

Назначение Описание
cs_5_0 DirectCompute 5.0 (вычислительный шейдер)
ds_5_0 Шейдер домена
gs_5_0 Шейдер геометрии
hs_5_0 Шейдер корпуса
ps_5_0 Построитель текстуры
vs_5_0 Вершинный построитель текстуры

 

Уровень компонентов Direct3D 10.1

Ниже приведены целевые объекты шейдеров, поддерживаемые уровнем функций Direct3D 10.1.

Назначение Описание
cs_4_1 DirectCompute 4.1 (вычислительный шейдер
gs_4_1 Шейдер геометрии
ps_4_1 Построитель текстуры
vs_4_1 Вершинный построитель текстуры

 

Уровень компонентов Direct3D 10.0

Ниже приведены целевые объекты шейдеров, поддерживаемые уровнем функций Direct3D 10.0.

Назначение Описание
cs_4_0 DirectCompute 4.0 (вычислительный шейдер
gs_4_0 Шейдер геометрии
ps_4_0 Построитель текстуры
vs_4_0 Вершинный построитель текстуры

 

Уровни функций Direct3D 9.1, 9.2 и 9.3

Ниже приведены целевые объекты шейдеров, которые поддерживают уровни функций Direct3D 9.1, 9.2 и 9.3.

Примечание

При использовании профилей шейдеров *_4_0_level_9_x HLSL вы неявно используете профили шейдеров модели 2.x для поддержки оборудования с поддержкой Direct3D 9. Профили модели шейдера 2.x поддерживают более ограниченное поведение управления потоком, чем профили модели шейдера версии 4.x и более поздних версий.

 

Назначение Описание
ps_4_0_level_9_1 Пиксельный шейдер для 9.1 и 9.2 (аналогичные ограничениям ps_2_0)
  • 64 арифметические и 32 инструкции текстуры
  • 12 временных регистров
  • 4 уровня зависимых операций чтения
ps_4_0_level_9_3 Пиксельный шейдер для версии 9.3 (аналогичные ограничениям ps_2_x² с дополнительными функциями шейдера)
  • 512 инструкций
  • 32 временных регистра
  • Управление статическим потоком (максимальная глубина 4)
  • Управление динамическим потоком (максимальная глубина 24)
  • D3DPS20CAPS_ARBITRARYSWIZZLE
  • D3DPS20CAPS_GRADIENTINSTRUCTIONS
  • D3DPS20CAPS_PREDICATION
  • D3DPS20CAPS_NODEPENDENTREADLIMIT
  • D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT
vs_4_0_level_9_1 Вершинный шейдер для версий 9.1 и 9.2 (аналогично vs_2_0)
  • 256 инструкций
  • 12 временных регистров
  • Управление статическим потоком (максимальная глубина 1)
vs_4_0_level_9_3 Вершинный шейдер для версии 9.3 (аналогично vs_2_a² с дополнительными функциями шейдера и инстансингом)
  • 256 инструкций
  • 32 временных регистра
  • Управление статическим потоком (максимальная глубина 4)
  • D3DVS20CAPS_PREDICATION

 

Устаревшая модель шейдера Direct3D 9 3.0

Ниже приведены целевые объекты шейдеров для устаревшей модели шейдеров Direct3D 9 3.0

Назначение Описание
ps_3_0 Шейдер пикселей 3.0
ps_3_sw Шейдер пикселей 3.0 (программное обеспечение)
vs_3_0 Вершинный шейдер 3.0
vs_3_sw Вершинный шейдер 3.0 (программное обеспечение)

 

Устаревшая модель шейдера Direct3D 9 2.0

Ниже приведены целевые объекты шейдеров для устаревшей модели шейдера Direct3D 9 2.0

Назначение Описание
ps_2_0 Пиксельный шейдер 2.0
ps_2_a Пиксельный шейдер 2a
ps_2_b Пиксельный шейдер 2b
ps_2_sw Программное обеспечение шейдера пикселей 2.0
vs_2_0 Вершинный шейдер 2.0
vs_2_a Вершинный шейдер 2a
vs_2_sw Программное обеспечение вершинного шейдера 2.0

 

Устаревшая модель шейдера Direct3D 9 1.x

Ниже приведены целевые объекты шейдеров для устаревшей модели шейдера Direct3D 9 1.x⁴.

Назначение Описание
tx_1_0 Профиль шейдера текстуры, который использует устаревшие функции D3DX9⁵ D3DXCreateTextureShader и D3DXFillTextureTX
vs_1_1 Вершинный шейдер 1.1

 

Устаревшие эффекты

Ниже приведены целевые объекты для устаревших эффектов.

Назначение Описание
fx_2_0 Эффекты (FX) для Direct3D 9 в D3DX9⁵
fx_4_0 Эффекты (FX) для Direct3D 10.0 в D3DX10⁵
fx_4_1 Эффекты (FX) для Direct3D 10.1 в D3DX10⁵
fx_5_0 Эффекты (FX) для Direct3D 11⁵

 

Примечания

Ниже приведены некоторые примечания, которые относятся к предыдущим разделам:

  1. Устройства с уровнями компонентов 10.0 и 10.1 при необходимости могут поддерживать DirectCompute. Чтобы проверить поддержку, используйте ID3D11Device::CheckFeatureSupport с D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS.
  2. Уровень компонентов 9.3 фактически требует оборудования, которое соответствует требованиям к устаревшей модели шейдера Direct3D 9 3.0, но этот уровень компонентов не использует целевые объекты vs_3_0 или ps_3_0.
  3. Используйте только устаревшие модели шейдеров Direct3D 9 с API Direct3D 9. Вместо этого используйте профили 9.x с API Direct3D 10.x и 11.x.
  4. Текущие функции D3DCompile* шейдера HLSL не поддерживают устаревшие пиксельные шейдеры 1.x. Последней версией HLSL для поддержки этих целей был D3DX9 в выпуске пакета SDK DirectX за октябрь 2006 г.
  5. Все версии D3DX и пакета SDK для DirectX являются устаревшими. Дополнительные сведения см. в разделе Где находится пакет SDK для DirectX?.

Руководство по программированию для HLSL