다음을 통해 공유


m3x4 - ps

3-성분 벡터에 3x4 행렬을 곱합니다.

Syntax

m3x4 dst, src0, src1

 

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

  • dst는 대상 레지스터입니다. 결과는 4-성분 벡터입니다.
  • src0은 3-성분 벡터를 나타내는 원본 레지스터입니다.
  • src1은 3x4 행렬을 나타내는 원본 레지스터로 4개의 연속된 레지스터 중 첫 번째 레지스터에 해당합니다.

설명

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

 

대상 레지스터에는 xyzw(기본값) 마스크가 필요합니다. Negate 및 swizzle 한정자는 src0에는 허용되지만 src1에는 허용되지 않습니다.

다음 코드 조각은 수행된 작업을 보여 줍니다.

 
dest.x = (src0.x*src1.x) + (src0.y*src1.y) + (src0.z*src1.z);
dest.y = (src0.x*src2.x) + (src0.y*src2.y) + (src0.z*src2.z);
dest.z = (src0.x*src3.x) + (src0.y*src3.y) + (src0.z*src3.z);
dest.w = (src0.x*src4.x) + (src0.y*src4.y) + (src0.z*src4.z);

입력 벡터는 레지스터 src0에 있습니다. 입력 3x4 행렬은 레지스터 src1에 있고, 아래 확장에 표시된 대로 다음 두 개의 상위 레지스터에 있습니다.

이 작업은 일반적으로 투영 효과가 있지만 변환을 적용하지 않는 행렬로 위치 벡터를 변환하는 데 사용됩니다. 이 명령은 여기에 표시된 것처럼 한 쌍의 내적으로 구현됩니다.

m3x4   r0.xyzw, r1, c0   will be expanded to: 

dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
dp3 r0.z, r1, c2
dp3 r0.w, r1, c3

픽셀 셰이더 명령