Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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