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


setp_comp — ps

Задайте регистр предиката.

Синтаксис

setp_comp dst, src0, src1

 

Где:

  • _comp — это сравнение двух исходных регистров по каналу. Может принимать одно из следующих значений:

    Синтаксис Сравнение
    _Gt Больше чем
    _Lt Меньше чем
    _Ge Больше или равно
    _Le Меньше или равно
    _Эквалайзер Равно
    _Ne Не равно

     

  • dst — это регистр предиката , p0.

  • src0 — это регистр источника.

  • src1 является исходным регистром.

Комментарии

Версии шейдера пикселей 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
setp_comp x x x x

 

Эта инструкция работает следующим образом:

per channel in destination write mask
{
  dst.channel = src0.channel cmp src1.channel
}

Для каждого канала, который может быть записан в соответствии с маской записи назначения, сохраните логический результат операции сравнения между соответствующими каналами src0 и src1 (после разрешения сверток модификатора источника).

Регистры источника позволяют указывать произвольные повороты компонентов.

Регистр назначения допускает произвольные маски записи.

Регистр dst должен быть регистром предиката.

Применение регистра предиката

После инициализации регистра предиката с помощью setp_comp его можно использовать для управления инструкцией для каждого компонента. Ниже приведен синтаксис.

([!]p0[.swizzle]) instruction dest, src0, ...

Где:

  • [!] является необязательным логическим NOT.
  • p0 — это регистр предиката.
  • [.swizzle] — это необязательный swizzle, применяемый к содержимому регистра предиката, прежде чем использовать его для маскирования инструкции. Доступные swizzles: .xyzw (по умолчанию, если не указано) или любой реплицируемый swizzle: .x/.r, .y/.g, .z/.b или .a/.w.
  • Инструкция — это любая аритметическая или текстурная инструкция. Это не может быть статическая или динамическая инструкция управления потоком.
  • dest, src0, ... регистры, требуемые инструкцией;

Если регистр предиката настроен со значениями компонентов (true, true, false, false), его можно применить к следующей инструкции:

(p0) add r1, r2, r3

, чтобы выполнить добавление двух компонентов.

r1.x = r2.x + r3.x
r1.y = r2.y + r3.y

Компоненты z и w r1 не будут записаны, так как регистр предиката содержит значение false в компонентах z и w.

Применение регистра предиката к арифметической инструкции или инструкции текстуры увеличивает количество слотов инструкций на 1.

Регистр предиката также можно применить к инструкциям , если pred - ps, callnz pred - ps и breakp - ps инструкции. Эти инструкции управления потоком не имеют увеличения количества слотов инструкций при использовании регистра предиката.

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