Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модификаторы инструкций влияют на результат инструкции перед записью в регистр назначения. Например, используйте их для умножения или деления результата на два или для закрепления результата между нулем и одним. Модификаторы инструкций применяются после выполнения инструкции, но перед записью результата в целевой регистр.
Ниже показан список модификаторов.
| Модификатор | Описание | Синтаксис | Версия 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
Связанные разделы