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


Модели шейдеров и профили шейдеров

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

Модель шейдера 1 началась с DirectX 8 и включала уровни сборки и инструкции C-like. Эта модель имеет множество ограничений, вызванных ранним программируемым оборудованием шейдера. Модель шейдера 2 и 3 значительно расширена по количеству инструкций, а шейдеры констант могут использовать. Они гораздо более мощны, чем модель шейдера 1, но по-прежнему несут некоторые из существующих ограничений первой модели шейдера.

Начиная с Windows Vista, модель шейдера 4 является полным перепроектированием. Он позволяет неограниченным инструкциям и константам (в пределах аппаратных ограничений компьютера), имеет шаблонные объекты, чтобы сделать выборку текстур более чистой и более эффективной, и имеет наименьшие ограничения любой модели шейдера. Однако для нее требуется модель драйвера Windows, доступная только в операционной системе Windows Vista (или более поздней версии).

Профили шейдеров

Профиль шейдера — это целевой объект для компиляции шейдера; В этой таблице перечислены профили шейдеров, поддерживаемые каждой моделью шейдера.

Модель шейдера Профили шейдеров
модели 1 шейдера 1 vs_1_1
модель шейдера 2 ps_2_0, ps_2_x, vs_2_0, vs_2_x, ps_4_0_level_9_0, ps_4_0_level_9_1, ps_4_0_level_9_3, vs_4_0_level_9_0, vs_4_0_level_9_1, vs_4_0_level_9_3, lib_4_0_level_9_1, lib_4_0_level_9_3
модели 3 шейдера 3 ps_3_0, vs_3_0
модель шейдера 4 cs_4_0, gs_4_0, ps_4_0, vs_4_0, cs_4_1, gs_4_1, ps_4_1, vs_4_1, lib_4_0, lib_4_1
модели шейдера 5 cs_5_0, ds_5_0, gs_5_0, hs_5_0, ps_5_0, vs_5_0, lib_5_0 (хотя gs_4_0, gs_4_1, ps_4_0, ps_4_1, vs_4_0 и vs_4_1 были представлены в модели шейдера 4.0, модель шейдера 5 добавляет поддержку этих профилей шейдеров для структурированных буферов и буферов адресов байтов.)
модели шейдера 6 cs_6_0, ds_6_0, gs_6_0, hs_6_0, ps_6_0, vs_6_0, lib_6_0

Различия между Direct3D 9 и Direct3D 10:

  • Direct3D 9 представила модели шейдера 1, 2 и 3.
  • Direct3D 10 представила модель шейдера 4.
  • Direct3D 10.1 представила модель шейдера 4.1.

Профили эффектов

Профиль эффекта — это целевой объект для компиляции эффекта или шейдера; В этой таблице перечислены профили эффектов, поддерживаемые каждой версией Direct3D.

Различия между Direct3D 9 и Direct3D 10:

  • Direct3D 9 представил профили платформы эффектов fx_1_0 и fx_2_0.
  • Direct3D 10 представила профиль платформы эффектов fx_4_0.
  • Direct3D 10.1 представил профиль платформы эффектов fx_4_1.
  • Direct3D 11 представил профиль платформы эффектов fx_5_0.

Заметка

Эти устаревшие профили эффектов устарели.

Справочник по для HLSL