Если _ comp-PS

Запуск If bool-PS... else-PS... endif-PS блок с условием на основе значений, которые могут быть вычислены в шейдере. Эта инструкция используется для пропуска блока кода на основе условия.

Синтаксис

Если _ comp src0, src1

Где:

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

    Синтаксис Сравнение
    _gt Больше
    _светл Меньше чем
    _GE Больше или равно
    _Le Меньше или равно
    _EQ Равно
    _видимому Не равно
  • src0 является исходным регистром. Для выбора компонента требуется репликация свиззле.

  • src1 является исходным регистром. Для выбора компонента требуется репликация свиззле.

Remarks

Версии шейдеров пикселей 1_1 1_2 1 _ 3 1_4 2 _ 0 2 _ x 2 _ SW 3 _ 0 3 _ SW
Если _ comp x x x x

Эта инструкция используется для пропуска блока кода на основе условия.

if (src0 comparison src1)
   jump to the corresponding else or endif instruction;

Будьте внимательны при использовании режимов сравнения «равно» и «не равно» для чисел с плавающей запятой. Поскольку округление происходит во время вычислений с плавающей запятой, для предотвращения ошибок можно выполнить сравнение со значением Эпсилон (небольшим ненулевым числом).

К ним относятся указанные ниже ограничения.

  • Если _ comp... else-PS... в виде блоков endif-PS (вместе с блоками в виде предикатов) можно вкладывать до 24 слоев.
  • для регистров src0 и src1 требуется репликация свиззле.
  • Если _ блоки Comp должны заканчиваться инструкциями else-VS или endif-VS .
  • Если _ comp... else-PS... endif-блоки PS не могут помешать блоку цикла. _Блок catch должен быть полностью внутри блока Loop или вне его.

Пример

Эта инструкция обеспечивает условное динамическое управление потоком.

if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y

else
// Instructions to run otherwise

endif

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