Модификаторы для ps_1_X

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

Ниже показан список модификаторов.

Модификатор Описание Синтаксис Версия 1_1 Версия 1_2 Версия 1_3 Версия 1_4
_x2 Умножение на 2 instruction_x2 X X X X
_x4 Умножение на 4 instruction_x4 X X X X
_x8 Умножение на 8 instruction_x8 X
_d2 Деление на 2 instruction_d2 X X X X
_d4 Деление на 4 instruction_d4 X
_d8 Деление на 8 instruction_d8 X
_сидеть Насыщенное (зажим с 0 и 1) instruction_sat X X X X

 

  • Модификатор умножения умножает регистровые данные на два после чтения. Это то же самое, что и сдвиг влево.
  • Модификатор деления делит данные регистра на два после чтения. Это то же самое, что и сдвиг вправо.
  • Насыщенный модификатор фиксирует диапазон значений регистра от нуля до одного.

Модификаторы инструкций можно использовать для арифметических инструкций. Они не могут использоваться в инструкциях по адресу текстуры.

Модификатор умножения

Этот пример загружает целевой регистр (dest) с суммой двух цветов в исходных операндах (src0 и src1) и умножает результат на два.

add_x2 dest, src0, src1

В этом примере объединяются два модификатора инструкций. Во-первых, добавляются два цвета в исходных операндах (src0 и src1). Затем результат умножается на два и зацепляется от 0,0 до 1,0 для каждого компонента. Результат сохраняется в целевом регистре.

add_x2_sat dest, src0, src1

Модификатор деления

Этот пример загружает целевой регистр (dest) с суммой двух цветов в исходных операндах (src0 и src1) и делит результат на два.

add_d2 dest, src0, src1

Модификатор насыщенных

Для арифметических инструкций модификатор насыщенности зажимает результат этой инструкции в диапазоне от 0,0 до 1,0 для каждого компонента. В следующем примере показано, как использовать этот модификатор инструкции.

dp3_sat r0, t0_bx2, v0_bx2    ; t0 is bump, v0 is light direction

Эта операция возникает после любого модификатора умножения или деления инструкций. _sat чаще всего используется для закрепления результатов продукта. Однако она также обеспечивает согласованную эмуляцию многопассных методов, где буфер кадров всегда находится в диапазоне от 0 до 1, а также синтаксисе DirectX 6 и 7.0, в котором определяется насыщенность на каждом этапе.

В этом примере загружается целевой регистр (dest) с суммой двух цветов в исходных операндах (src0 и src1) и фиксирует результат в диапазоне 0,0 до 1,0 для каждого компонента.

add_sat dest, src0, src1

В этом примере объединяются два модификатора инструкций. Во-первых, добавляются два цвета в исходных операндах (src0 и src1). Результат умножается на два и зацепляется от 0,0 до 1,0 для каждого компонента. Результат сохраняется в целевом регистре.

add_x2_sat dest, src0, src1

инструкции по шейдеру пикселей