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

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

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

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

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

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

Модель шейдера Профили шейдеров
Модель шейдера 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 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 профиля effect-framework.

Примечание

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

Справочник по HLSL