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


Программные шейдеры

Программные шейдеры реализованы таким образом, чтобы обеспечить разработку шейдеров без поддержки базового оборудования. Они поддерживают полный набор функций. Поскольку они реализованы в программном обеспечении, они не дадут наилучшей производительности.

Версия Набор компонентов Требования
vs_2_sw Все особенности vs_2_x Поддерживается только программной обработкой вершин и опорным устройством.
vs_3_sw Все особенности vs_3_0 Поддерживается только программной обработкой вершин и опорным устройством.
ps_2_sw Все особенности ps_2_x Поддерживается только эталонным устройством.
ps_3_sw Все особенности ps_3_0 Поддерживается только эталонным устройством.

 

Некоторые проверки для программных шейдеров ослаблены. Это полезно для отладки и создания прототипов. Следующие проверки ослаблены: (все остальные проверки остаются прежними)

Тип валидации Расслабление
Инструкция имеет значение: Это расслабленно для vs_2_sw, vs_3_sw и ps_2_sw, ps_3_sw. Допускается неограниченное количество инструкций.
Количество констант float: Это расслабленно для vs_2_sw, vs_3_sw и ps_2_sw, ps_3_sw. Допускается использование до 8192 констант.
Целочисленные константы подсчитывают: Это расслабленно для vs_2_sw, vs_3_sw и ps_2_sw, ps_3_sw. Допускается использование до 2048 констант.
Подсчеты булевых констант: Это расслабленно для vs_2_sw, vs_3_sw и ps_2_sw, ps_3_sw. Допускается использование до 2048 констант.
Глубина чтения в зависимости от ситуации: Это расслаблено для ps_2_sw. Как и в vs_3_0 и ps_3_0, разрешено неограниченное количество зависимых чтений.
Количество инструкций и этикеток по регулированию расхода: Это расслаблено для vs_2_sw. Допускается неограниченное количество инструкций по регулированию расхода и до 2048 этикеток.
Количество циклов/начало/шаг: Они расслаблены для vs_2_sw, vs_3_sw, ps_2_sw и ps_3_sw. Размер шага итерации для инструкций по повторению и циклу — 32-разрядные целые числа со знаком. Количество итераций может составлять до MAX_INT/64.
Ограничения по портам чтения: vs_2_sw, vs_3_sw, ps_2_sw и ps_3_sw не имеют ограничений на порт чтения.
Количество интерполяторов: Существует 16 регистров - vs_3_0 (o#) в vs_3_sw и 10 регистров ps_3_0 (v#) для ps_3_sw.

 

Справочник шейдера Asm