if(sm4 - asm)
논리적 OR 결과를 기반으로 하는 분기입니다.
if{_z|_nz} src0.select_component |
---|
항목 | 설명 |
---|---|
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개의 구성 요소 벡터인 경우)는 단일 구성 요소 선택기를 사용해야 합니다.
- src0에서 제공하는 32비트 레지스터는 비트 수준에서 테스트됩니다. 비트가 0이 아닌 경우 if_z는 true가 됩니다. 모든 비트가 0이면 if_nz는 true가 됩니다.
- 흐름 제어 블록은 서브루틴 및 메인당 최대 64개의 깊이를 중첩할 수 있습니다. HLSL 컴파일러는 이 제한을 초과하는 서브루틴을 생성하지 않습니다. 서브루틴당 64개 수준 깊이보다 많은 제어 흐름 명령 동작은 정의되지 않습니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 셰이더 | 기하 도형 셰이더 | 픽셀 셰이더 |
---|---|---|
x | x | x |
최소 셰이더 모델
이 함수는 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원됨 |
---|---|
셰이더 모델 5 | 예 |
셰이더 모델 4.1 | 예 |
셰이더 모델 4 | 예 |
셰이더 모델 3(DirectX HLSL) | 아니요 |
셰이더 모델 2(DirectX HLSL) | 아니요 |
셰이더 모델 1(DirectX HLSL) | 아니요 |