m3x2 – ps

Multipliziert einen 3-Komponenten-Vektor mit einer 3x2-Matrix.

Syntax

m3x2 dst, src0, src1

 

where

  • dst ist das Zielregister. Ergebnis ist ein Vektor mit zwei Komponenten.
  • src0 ist ein Quellregister, das einen 3-Komponenten-Vektor darstellt.
  • src1 ist ein Quellregister, das eine 3x2-Matrix darstellt, die dem ersten von 2 aufeinanderfolgenden Registern entspricht.

Bemerkungen

Pixelshaderversionen 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
m3x2 x x x x x

 

Die xy-Maske ist für das Zielregister erforderlich. Negieren und Swizzle-Modifizierer sind für src0 zulässig, aber nicht für src1.

Die folgenden Formeln zeigen, wie die Anweisung funktioniert:

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);

Der Eingabevektor befindet sich im Register src0. Die 3x2-Eingabematrix befindet sich im Register src1 und das nächsthöhere Register in derselben Registerdatei, wie in der folgenden Erweiterung gezeigt. Ein 2D-Ergebnis wird erzeugt, sodass die anderen Elemente des Zielregisters (dest.z und dest.w) nicht betroffen sind.

Dieser Vorgang wird häufig für 2D-Transformationen verwendet. Diese Anweisung wird wie hier gezeigt als Paar von Punktprodukten implementiert.

m3x2   r0.xy, r1, c0   which will be expanded to:

dp3   r0.x, r1, c0
dp3   r0.y, r1, c1

Swizzle- und negieren-Modifizierer sind für das src1-Register ungültig. Das dst- und src0-Register oder eines der src1+i-Register kann nicht identisch sein.

Pixelshaderanweisungen