대상 레지스터 쓰기 마스크

쓰기 마스크는 명령이 완료된 후 대상 레지스터의 구성 요소가 기록되는 구성 요소를 제어합니다. 구성 요소가 .rgba 또는 .xyzw 순서에 있는 한 출력 쓰기 마스크가 허용됩니다. 즉, .rba 및 .xw는 유효한 마스크입니다. 텍스처 레지스터에는 한 세트의 규칙이 있고 비텍스처 레지스터에는 또 다른 규칙 세트가 있습니다.

Syntax

dst.writemask

 

라는 설치 관리자 실행 파일에 포함됩니다. 여기서

  • dst는 대상 레지스터입니다.
  • writemask는 (x,y,z,w) 또는 (빨강, 녹색, 파랑, 알파) 세트의 마스크 시퀀스입니다.

설명

다음 대상 쓰기 마스크를 사용할 수 있습니다.

픽셀 셰이더 버전 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw(기본값) x x x x x x x x x
.xyz x x x x x x x x x
.w x x x x x x x x x
임의 마스크 x x x x x x

 

임의 마스크를 사용하면 모든 채널 세트를 결합하여 마스크를 생성할 수 있습니다. 채널은 대상의 빨간색, 파란색 및 알파 채널을 업데이트하는 register.rba와 같은 r, g, b, a 순서로 나열되어야 합니다. 임의 마스크는 버전 1_4 이상에서 사용할 수 있습니다.

대상 쓰기 마스크를 지정하지 않으면 대상 쓰기 마스크는 기본적으로 rgba 사례로 설정됩니다. 즉, 대상 레지스터의 모든 채널이 업데이트됩니다.

버전 1_0~1_3의 경우 dp3 - ps dp3 산술 명령은 .rgb 또는 .rgba 출력 쓰기 마스크만 사용할 수 있습니다.

대상 레지스터 쓰기 마스크는 산술 연산에만 지원됩니다. 버전 1_4 명령인 texcrd - pstexld - ps_2_0 이상을 제외하고 텍스처 주소 지정 명령에 사용할 수 없습니다.

기본값은 네 가지 색 채널을 모두 작성하는 것입니다.

// All four color channels can be written by explicitly listing them.
mul r0.rgba, t0, v0

// Or, the default mask can be used to write all four channels.
mul r0, t0, v0

알파 쓰기 마스크는 스칼라 파이프라인을 사용하기 때문에 스칼라 쓰기 마스크라고도 합니다.

add r0.a, t1, v1

따라서 이 명령은 t1의 알파 구성 요소와 v1의 알파 구성 요소의 합계를 효과적으로 r0.a에 배치합니다.

색 쓰기 마스크는 색 채널에 대한 쓰기를 제어하는 데 사용됩니다.

// The color write mask is also referred to as the vector write mask, 
//   because it uses the vector pipeline.
mul r0.rgb, t0, v0

버전 1_4의 경우 마스크의 순서가 r,g,b,a인 한 대상 쓰기 마스크를 모든 조합으로 사용할 수 있습니다.

// This example updates the red, blue, and alpha channels.
mov r0.rba, r1

공동 실행된 명령을 사용하면 잠재적으로 서로 다른 두 가지 명령을 동시에 실행할 수 있습니다. 이 작업은 알파 파이프라인 및 RGB 파이프라인의 명령을 실행하여 수행됩니다.

  mul r0.rgb, t0, v0
+ add r1.a,   t1, c1

이러한 방식으로 명령을 페어링하면 벡터 및 스칼라 파이프라인에서 여러 작업을 병렬로 수행할 수 있다는 장점이 있습니다.

이러한 꼭짓점 셰이더 출력 레지스터는 다음 쓰기 마스크로 제한됩니다.

레지스터 형식 필수 쓰기 마스크
oFog 이 스칼라 레지스터에는 명시적 쓰기 마스크가 허용되지 않습니다.
oPts 이 스칼라 레지스터에는 명시적 쓰기 마스크가 허용되지 않습니다.
oPos .xyzw(기본값)
oT# 결합된 마스크: .x | .xy | .xyz | .xyzw(기본값)

 

픽셀 셰이더 레지스터 한정자