Bagikan melalui


m3x4 - vs

Mengalikan vektor 3 komponen dengan matriks 3x4.

Sintaks

m3x4 dst, src0, src1

 

Di mana

  • dst adalah register tujuan. Hasilnya adalah vektor 4 komponen.
  • src0 adalah register sumber yang mewakili vektor 3 komponen.
  • src1 adalah register sumber yang mewakili matriks 3x4, 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
m3x4 x x x x x x

 

Masker xyzw (default) 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);
dest.y = (src0.x * src2.x) + (src0.y * src2.y) + (src0.z * src2.z);
dest.z = (src0.x * src3.x) + (src0.y * src3.y) + (src0.z * src3.z);
dest.w = (src0.x * src4.x) + (src0.y * src4.y) + (src0.z * src4.z);

Vektor input berada di register src0. Matriks 3x4 input ada di register src1 dan tiga register berikutnya yang lebih tinggi, seperti yang ditunjukkan pada ekspansi di bawah ini.

Operasi ini biasanya digunakan untuk mengubah vektor posisi oleh matriks yang memiliki efek proyektif tetapi tidak menerapkan terjemahan. Instruksi ini diimplementasikan sebagai sepasang produk titik seperti yang ditunjukkan di sini.

m3x4   r0.xyzw, r1, c0   will be expanded to: 

dp3 r0.x, r1, c0
dp3 r0.y, r1, c1
dp3 r0.z, r1, c2
dp3 r0.w, r1, c3

Instruksi Vertex Shader