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


Оператор for

Итеративно выполняет ряд инструкций на основе вычисления условного выражения.

[Атрибут] для ( Инициализатор; Условного; Iterator ) { Statement Block; }

Параметры

Атрибут

Необязательный параметр, который управляет способом компиляции инструкции. Если атрибут не указан, компилятор сначала попытается создать свернутую версию цикла, и в случае сбоя или если некоторые операции были бы проще, если цикл был развернут, возвращается к развернутой версии цикла.

attribute Описание
unroll(x) Распакуть цикл, пока он не перестанет выполняться. При необходимости можно указать максимальное количество выполнений цикла. Несовместим с атрибутом [loop] .
loop Создайте код, использующий управление потоком для выполнения каждой итерации цикла. Несовместим с атрибутом [unroll] .
fastopt Сокращает время компиляции, но обеспечивает менее агрессивную оптимизацию. Если вы используете этот атрибут, компилятор не будет раскрутить циклы.
Этот атрибут влияет только на целевые объекты модели шейдера, которые поддерживают инструкции прерывания . Этот атрибут доступен в модели шейдера vs_2_x и модели шейдера 3 и более поздних версий. Это особенно полезно в модели шейдера 4 и более поздних версий, когда компилятор компилирует циклы. Компилятор по умолчанию имитирует циклы, чтобы оценить, можно ли их развернуть. Если вы не хотите, чтобы компилятор отменял циклы, используйте этот атрибут, чтобы сократить время компиляции.
allow_uav_condition Позволяет условие завершения цикла шейдера вычислений основываться на считываемом БПЛА. Цикл не должен содержать встроенные функции синхронизации.

Инициализатор

Начальное значение счетчика цикла.

Условного

Условное выражение. Если условное выражение имеет значение true, выполняется блок инструкций. Цикл завершается, когда выражение принимает значение false.

Итератор

Обновите значение счетчика цикла.

Блок инструкций

Одна или несколько инструкций HLSL.

Комментарии

Атрибуты [unroll] и [loop] являются взаимоисключающими и создают ошибки компилятора, если указаны оба параметра.

Атрибуты [fastopt] и [allow_uav_condition] игнорируются, если указан параметр [unroll] .

См. также раздел

Управление потоком