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) 아니요

셰이더 모델 4 어셈블리(DirectX HLSL)