다음을 통해 공유


대상 레지스터 쓰기 마스크

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

통사론

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(기본값)
오티# 결합된 마스크: .x | .xy | .xyz | .xyzw(기본값)

 

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