setp_comp по сравнению с

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

Синтаксис

setp_comp dst, src0, src1

 

Где:

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

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

     

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

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

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

Комментарии

Версии вершинного шейдера 1_1 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 (после разрешения изменений модификатора источника).

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

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

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

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

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

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

Где:

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

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

// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4

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

r2.x = r3.x + r4.x
r2.y = r3.y + r4.y

Компоненты x и y r2 не будут записываться, так как регистр предиката содержал значение false в компонентах z и w.

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

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

Инструкции по вершинным шейдерам