setp_comp - vs

조건자 레지스터를 설정합니다.

Syntax

setp_comp dst, src0, src1

 

여기서

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

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

     

  • dst는 조건자 레지스터인, p0입니다.

  • src0은 원본 레지스터입니다.

  • src1은 원본 레지스터입니다.

설명

꼭짓점 셰이더 버전 1_1 2_0 2_x 2_sw 3_0 3_sw
setp_comp x x x x

 

이 명령은 다음과 같이 작동합니다.

per channel in destination write mask
{
  dst.channel = src0.channel cmp src1.channel
}

대상 쓰기 마스크에 따라 쓸 수 있는 각 채널에 대해 src0 및 src1의 해당 채널 간 비교 연산의 부울 결과를 저장합니다(원본 한정자 스위즐이 확인된 후).

원본 레지스터를 사용하면 임의 구성 요소 스위즐을 지정할 수 있습니다.

대상 레지스터는 임의의 쓰기 마스크를 허용합니다.

dest 레지스터는 조건자 레지스터여야 합니다.

조건자 레지스터 적용

조건자 레지스터가 setp로 초기화되면 구성 요소별로 명령을 제어하는 데 사용할 수 있습니다. 구문은 다음과 같습니다.

([!]p0[.swizzle]) instruction dest, srcReg, ...

여기서

  • [!]는 선택적 부울 NOT입니다.
  • p0은 조건자 레지스터입니다.
  • [.swizzle]은 명령을 마스킹하기 위해 조건자 레지스터를 사용하기 전에 조건자 레지스터의 콘텐츠에 적용할 선택적 스위즐입니다. 사용 가능한 스위즐은 .xyzw(지정되지 않은 경우 기본값) 또는 모든 복제 스위즐: .x/.r, .y/.g, .z/.b 또는 .a/.w입니다.
  • 명령은 모든 산술 또는 텍스처 명령입니다. 이는 정적 또는 동적 흐름 제어 명령일 수 없습니다.
  • dest, srcReg, ...는 명령에 필요한 레지스터입니다.

조건자 레지스터가 (true, true, false, false) 구성 요소 값으로 설정되었다고 가정하면 다음 명령에 적용할 수 있습니다.

// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4

2-구성 요소 더하기를 수행합니다.

r2.x = r3.x + r4.x
r2.y = r3.y + r4.y

r2의 x 및 y 구성 요소는 조건자 레지스터가 구성 요소 z 및 w에 false를 포함했기 때문에 기록되지 않습니다.

조건자 레지스터를 산술 또는 텍스처 명령에 적용하면 명령 슬롯 수가 1씩 증가합니다.

조건자 레지스터는 if pred - vs, callnz pred - vsbreakp - vs 명령에도 적용할 수 있습니다. 이러한 흐름 제어 명령은 조건자 레지스터를 사용할 때 명령 슬롯 수가 증가하지 않습니다.

꼭짓점 셰이더 명령