if_comp - vs
Запустите если логическое - против...else - vs...endif — и блок, с условием на основе значений, которые можно вычислить в шейдере. Эта инструкция используется для пропуска блока кода на основе условия.
Синтаксис
if_comp src0, src1 |
---|
Где:
_comp — это сравнение двух исходных регистров. Может принимать одно из следующих значений:
Синтаксис Сравнение _Gt Больше _Lt Меньше _Ge Больше или равно _Le Меньше или равно _Эквалайзер Равно _Ne Не равно src0 — это исходный регистр. Репликация swizzle необходима для выбора компонента.
src1 — это исходный регистр. Репликация swizzle необходима для выбора компонента.
Замечания
Версии шейдера вершин | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
if_comp | x | х | х | x |
Эта инструкция используется для пропуска блока кода на основе условия.
if_lt src0, src1
jump to the corresponding else or endif instruction;
Будьте осторожны, используя равные и не равные режимы сравнения на числах с плавающей запятой. Так как округление происходит во время вычислений с плавающей запятой, сравнение можно сделать с значением epsilon (небольшое ненулевое число), чтобы избежать ошибок.
К ним относятся указанные ниже ограничения.
- if_comp...else - vs...endif — и блоки (вместе с предикатами, если блоки) можно вложить до 24 слоев глубоко.
- для регистров src0 и src1 требуется реплика te swizzle.
- if_comp блоки должны заканчиваться иначе — vs или endif — и инструкцией.
- if_comp...else - vs...endif — и блоки не могут перестраивает блок цикла. Блок if_comp должен быть полностью внутри или за пределами цикла — и блок.
Пример
Эта инструкция предоставляет условный динамический поток управления.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
См. также