loop (sm4 - asm)
Указывает цикл, который выполняет итерацию до тех пор, пока не будет обнаружена инструкция прерывания.
loop |
---|
Комментарии
Цикл может выполнять итерацию бесконечно, хотя общее выполнение шейдера может быть принудительно завершено после выполнения определенного количества инструкций.
Блоки управления потоком могут вложить до 64 глубин на подпрограмму и main. Компилятор HLSL не будет создавать подпрограммы, превышающие это ограничение. Поведение инструкций потока управления за пределами 64 уровней на подпрограмму не определено.
Формат маркера для удобства содержит смещение соответствующей инструкции endloop в шейдере.
В следующем примере показано, как использовать инструкцию цикла.
loop
// example of termination condition
if_nz r0.x
break
endif
...
endloop
Эта инструкция применяется к следующим этапам шейдера:
Вершинный построитель текстуры | Шейдер геометрии | Построитель текстуры |
---|---|---|
x | x | x |
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | да |
Модель шейдера 4 | да |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |
Связанные темы