m4x3 - vs
Mengalikan vektor 4 komponen dengan matriks 4x3.
Sintaks
m4x3 dst, src0, src1 |
---|
Di mana
- dst adalah register tujuan. Hasilnya adalah vektor 3 komponen.
- src0 adalah register sumber yang mewakili vektor 4 komponen.
- src1 adalah register sumber yang mewakili matriks 4x3, yang sesuai dengan register pertama dari 3 berturut-turut.
Keterangan
Versi shader vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
m4x3 | x | x | x | x | x | x |
Masker xyz diperlukan untuk register tujuan. Pengubah negasi dan gerimis diizinkan untuk src0, tetapi tidak untuk src1.
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);
Vektor input berada di register src0. Matriks input 4x3 ada di register src1, dan dua register berikutnya yang lebih tinggi, seperti yang ditunjukkan pada ekspansi di bawah ini. Hasil 3D diproduksi, membiarkan elemen lain dari register tujuan (dest.w) tidak terpengaruh.
Operasi ini biasanya digunakan untuk mengubah vektor posisi oleh matriks yang tidak memiliki efek proyektif, seperti terjadi dalam transformasi ruang model. Instruksi ini diimplementasikan sebagai sepasang produk titik seperti yang ditunjukkan di bawah ini.
m4x3 r0.xyz, r1, c0 will be expanded to:
dp4 r0.x, r1, c0
dp4 r0.y, r1, c1
dp4 r0.z, r1, c2
Pengubah swizzle dan negate tidak valid untuk register src1. Register dst dan src0 tidak boleh sama.
Topik terkait