Прочитать на английском

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


if (sm4 - asm)

Ветвь на основе результата логического ИЛИ.

src0.select_component if{_z|_nz}
Элемент Описание
src0
[in] Содержит компонент, на котором проверяется условие.

Комментарии

Формат маркера для удобства содержит смещение соответствующей инструкции endif в шейдере.

В следующем примере показано, как использовать эту инструкцию.

                if_z r0.x // if all bits in r0.x are zero
                   ...
                else // (optional)
                   ...
                endif
                if_nz r1.x // if any bit in r0.x is nonzero
                   ...
                else // (optional)
                   ...
                endif

Ограничения

  • Исходные операнды (если 4 вектора компонентов) должны использовать один селектор компонентов.
  • 32-разрядный регистр, предоставляемый src0 , тестируется на битовом уровне. Если какой-либо бит не равен нулю, if_z будет иметь значение true. Если все биты равны нулю, if_nz будет иметь значение true.
  • Блоки управления потоком могут вложить до 64 глубин на подпрограмму (и main). Компилятор HLSL не будет создавать подпрограммы, превышающие это ограничение. Поведение инструкций потока управления, превышающее 64 уровня (на подпрограмму), не определено.

Эта инструкция применяется к следующим этапам шейдера:

Вершинный построитель текстуры Шейдер геометрии Построитель текстуры
x x x

Минимальная модель шейдера

Эта функция поддерживается в следующих моделях шейдеров.

Сборка модели шейдера 4 (DirectX HLSL)