Модели шейдеров и профили шейдеров
Высокоуровневый язык заливки для 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.
Примечание
Эти устаревшие профили эффектов являются устаревшими.