if_comp - ps

셰이더에서 계산할 수 있는 값을 기반으로 하는 조건과 함께 if bool - ps...else - ps...endif - ps 블록을 시작합니다. 이 명령은 조건에 따라 코드 블록을 건너뛰는 데 사용됩니다.

Syntax

if_comp src0, src1

 

여기서

  • _comp는 두 원본 레지스터 간의 비교입니다. 다음 중 하나일 수 있습니다.

    Syntax 비교
    _gt 초과
    _lt 보다 작음
    _ge 크거나 같음
    _le 작거나 같음
    _eq 같음
    _ne 같지 않음

     

  • src0은 원본 레지스터입니다. 성분을 선택하려면 복제 swizzle이 필요합니다.

  • src1은 원본 레지스터입니다. 성분을 선택하려면 복제 swizzle이 필요합니다.

설명

픽셀 셰이더 버전 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
if_comp x x x x

 

이 명령은 조건에 따라 코드 블록을 건너뛰는 데 사용됩니다.

if (src0 comparison src1)
   jump to the corresponding else or endif instruction;

부동 소수점 숫자에서 같음 및 비교 모드를 사용하지 않도록 주의해야 합니다. 부동 소수점 계산 중에 반올림이 발생하므로 오류를 방지하기 위해 엡실론 값(작은 0이 아닌 숫자)에 대해 비교를 수행할 수 있습니다.

제한 사항은 다음과 같습니다.

  • if_comp...else - ps...endif - ps 블록(조건부 if 블록과 함께)은 최대 24개 계층까지 중첩될 수 있습니다.
  • src0 및 src1 레지스터에는 복제 swizzle이 필요합니다.
  • if_comp 블록은 else - vs 또는 endif - vs 명령으로 끝나야 합니다.
  • if_comp...else - ps...endif - ps 블록은 루프 블록을 걸칠 수 없습니다. if_comp 블록은 완전히 루프 블록 내부 또는 외부에 있어야 합니다.

이 명령은 조건부 동적 흐름 제어를 제공합니다.

if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y

else
// Instructions to run otherwise

endif

픽셀 셰이더 명령