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.
Zugehörige Themen