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) нет

 

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