m3x2 – im Vergleich

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

Syntax

m3x2 dst, src0, src1

where

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

Hinweise

Vertex-Shaderversionen 1_1 2 _ 0 2 _ x 2 _ sw 3 _ 0 3 _ sw
m3x2 x x x x x x

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

Die folgenden Gleichungen zeigen, wie die Anweisung funktioniert:

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

Der Eingabevektor befindet sich im Register src0. Die Eingabematrix 3x2 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 negate-Modifizierer sind für das src1-Register ungültig. Das dest- und src0-Register oder eines der src1+i-Register können nicht identisch sein.

Vertex-Shaderanweisungen