다음을 통해 공유


for 문

조건식의 평가를 기반으로 일련의 문을 반복적으로 실행합니다.

[Attribute] for ( Initializer; Conditional; Iterator ) { Statement Block; }

매개 변수

Attribute

문이 컴파일되는 방법을 제어하는 선택적 매개 변수입니다. 특성이 지정되지 않은 경우 컴파일러는 먼저 루프의 롤링된 버전을 내보내려고 시도하고, 실패하는 경우 또는 루프가 언롤링된 경우 일부 작업이 더 쉬울 경우 루프의 언롤링된 버전으로 대체됩니다.

attribute 설명
unroll(x) 실행이 중지될 때까지 루프를 풉니다. 선택적으로 루프가 실행되는 최대 횟수를 지정할 수 있습니다. [loop] 특성과 호환되지 않습니다.
loop 흐름 제어를 사용하여 루프의 각 반복을 실행하는 코드를 생성합니다. [unroll] 특성과 호환되지 않습니다.
fastopt 컴파일 시간을 줄이지만 덜 공격적인 최적화를 생성합니다. 이 특성을 사용하면 컴파일러에서 루프를 풀지 않습니다.
이 특성은 break 명령을 지원하는 셰이더 모델 대상에만 영향을 미칩니다. 이 특성은 셰이더 모델 vs_2_x셰이더 모델 3 이상에서 사용할 수 있습니다. 컴파일러가 루프를 컴파일할 때 셰이더 모델 4 이상에서 특히 유용합니다. 컴파일러는 루프를 풀 수 있는지 여부를 평가하기 위해 기본적으로 루프를 시뮬레이트합니다. 컴파일러가 루프를 풀지 않도록 하려면 이 특성을 사용하여 컴파일 시간을 줄입니다.
allow_uav_condition 컴퓨팅 셰이더 루프 종료 조건이 UAV 읽기를 기반으로 할 수 있습니다. 루프는 동기화 내장 함수를 포함하지 않아야 합니다.

Initializer

루프 카운터의 초기 값입니다.

Conditional

조건부 입니다. 조건식이 true로 평가되면 문 블록이 실행됩니다. 식이 false로 평가되면 루프가 종료됩니다.

Iterator

루프 카운터의 값을 업데이트합니다.

Statement Block

하나 이상의 HLSL 구문입니다.

설명

[unroll][loop] 특성은 상호 배타적이며 둘 다 지정된 경우 컴파일러 오류를 생성합니다.

[fastopt][allow_uav_condition] 특성은 [unroll]이 지정된 경우 무시됩니다.

추가 정보

흐름 제어