if_comp - vs
셰이더에서 계산할 수 있는 값을 기반으로 하는 조건과 함께 if bool - vs...else - vs...endif - vs 블록을 시작합니다. 이 명령은 조건에 따라 코드 블록을 건너뛰는 데 사용됩니다.
Syntax
if_comp src0, src1 |
---|
여기서
_comp는 두 원본 레지스터 간의 비교입니다. 다음 중 하나일 수 있습니다.
Syntax 비교 _gt 초과 _lt 보다 작음 _ge 크거나 같음 _le 작거나 같음 _eq 같음 _ne 같지 않음 src0은 원본 레지스터입니다. 성분을 선택하려면 복제 swizzle이 필요합니다.
src1은 원본 레지스터입니다. 성분을 선택하려면 복제 swizzle이 필요합니다.
설명
꼭짓점 셰이더 버전 | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
if_comp | x | x | x | x |
이 명령은 조건에 따라 코드 블록을 건너뛰는 데 사용됩니다.
if_lt src0, src1
jump to the corresponding else or endif instruction;
부동 소수점 숫자에서 같음 및 비교 모드를 사용하지 않도록 주의해야 합니다. 부동 소수점 계산 중에 반올림이 발생하므로 오류를 방지하기 위해 엡실론 값(작은 0이 아닌 숫자)에 대해 비교를 수행할 수 있습니다.
제한 사항은 다음과 같습니다.
- if_comp...else - vs...endif - vs 블록(조건부 if 블록과 함께)은 최대 24개 계층까지 중첩될 수 있습니다.
- src0 및 src1 레지스터에는 복제 swizzle이 필요합니다.
- if_comp 블록은 else - vs 또는 endif - vs 명령으로 끝나야 합니다.
- if_comp...else - vs...endif - vs 블록은 루프 블록을 걸칠 수 없습니다. if_comp 블록은 완전히 loop - vs 블록 내부 또는 외부에 있어야 합니다.
예
이 명령은 조건부 동적 흐름 제어를 제공합니다.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
관련 항목