m4x4 - vs
Mengalikan vektor 4 komponen dengan matriks 4x4.
Sintaks
m4x4 dst, src0, src1 |
---|
Di mana
- dst adalah register tujuan. Hasilnya adalah vektor 4 komponen.
- src0 adalah register sumber yang mewakili vektor 4 komponen.
- src1 adalah register sumber yang mewakili matriks 4x4, yang sesuai dengan register pertama dari 4 berturut-turut.
Keterangan
Versi shader vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
m4x4 | x | x | x | x | x | x |
Masker xyzw (default) diperlukan untuk register tujuan. Pengubah negasi dan gerimis diizinkan untuk src0, tetapi tidak untuk src1.
Pengubah swizzle dan negate tidak valid untuk register src0. Register dest dan src0 tidak boleh sama.
Fragmen kode berikut menunjukkan operasi yang dilakukan.
dest.x = (src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z) +
(src0.w * src1.w);
dest.y = (src0.x * src2.x) + (src0.y * src2.y) + (src0.z * src2.z) +
(src0.w * src2.w);
dest.z = (src0.x * src3.x) + (src0.y * src3.y) + (src0.z * src3.z) +
(src0.w * src3.w);
dest.w = (src0.x * src4.x) + (src0.y * src4.y) + (src0.z * src4.z) +
(src0.w * src4.w);
Vektor input berada di register src0. Input matriks 4x4 ada di register src1, dan tiga register berikutnya yang lebih tinggi, seperti yang ditunjukkan pada ekspansi di bawah ini.
Operasi ini umumnya digunakan untuk mengubah posisi oleh matriks proyeksi. Instruksi ini diimplementasikan sebagai serangkaian produk titik seperti yang ditunjukkan di sini.
m4x4 r0.xyzw, r1, c0 will be expanded to:
dp4 r0.x, r1, c0
dp4 r0.y, r1, c1
dp4 r0.z, r1, c2
dp4 r0.w, r1, c3
Topik terkait