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


Модификаторы исходного регистра шейдера пикселей

Используйте модификаторы регистра источника, чтобы изменить значение, считываемое из регистра перед выполнением инструкции. Содержимое исходного регистра остается без изменений. Модификаторы полезны для настройки диапазона данных регистра при подготовке к инструкции. Набор модификаторов, называемых селекторами, копирует или реплицирует данные из одного канала (r,g,b,a) в другие каналы.

ps_1_1 — ps_1_4

В этой таблице указаны версии, поддерживающие каждый модификатор:

Модификаторы регистра источника Синтаксис Версия 1_1 Версия 1_2 Версия 1_3 Версия 1_4
Предвзятости register_bias X X X X
Инвертировать 1 — регистрация X X X X
negate -Зарегистрировать X X X X
масштабировать на 2 register_x2 X
масштабирование со знаком register_bx2 X X X X
Модификаторы texld и texcrd register_d* X X X X
source register swizzling register.xyzw X X X X

 

Модификаторы регистра источника можно использовать только в арифметических инструкциях. Их нельзя использовать в инструкциях по адресу текстуры. Исключением является модификатор масштабирования на 2 . В версии 1_1 масштабирование со знаком можно использовать в исходном аргументе любой инструкции texm*. В версии 1_2 или 1_3 в исходном аргументе любой инструкции адреса текстуры можно использовать масштаб со знаком.

Некоторые ограничения модификаторов:

  • Negate можно сочетать с модификатором смещения, масштабирования со знаком или модификатором scalex2. При объединении отмена выполняется последним.
  • Инвертировать нельзя комбинировать с любым другим модификатором.
  • Инвертирование, отклонение, смещение, масштабирование со знаком и scalex2 можно объединить с любым селектором.
  • Модификаторы регистра источника не следует использовать в регистрах констант, так как они приводят к неопределенным результатам. В версии 1_4 модификаторы для констант запрещены и не будут проверяться.

ps_2_0 и выше

Для версий ps_2_0 и более поздних версий было упрощено количество модификаторов.

Negate

Отмените содержимое исходного регистра.

Модификатор компонента Описание
-R Отрицание источника

 

Модификатор negate нельзя использовать во втором регистре источника этих инструкций: m3x2 - ps, m3x3 - ps, m3x4 - ps, m4x3 - ps, и m4x4 - ps.

Версии шейдера пикселей 2_0 2_x 2_sw 3_0 3_sw
- x x x x x

 

Абсолютное значение

Возьмем абсолютное значение регистра.

Версии шейдера пикселей 2_0 2_x 2_sw 3_0 3_sw
abs x x

 

Если какой-либо шейдер версии 3 считывает данные из одного или нескольких постоянных регистров float (c#), одно из следующих значений должно иметь значение true.

  • Все постоянные регистры с плавающей запятой должны использовать модификатор abs.
  • Ни один из постоянных регистров с плавающей запятой не может использовать модификатор abs.

Модификаторы регистра шейдера пикселей