m3x3 - ps

Mengalikan vektor 3 komponen dengan matriks 3x3.

Sintaks

m3x3 dst, src0, src1

 

Di mana

  • dst adalah register tujuan. Hasilnya adalah vektor 3 komponen.
  • src0 adalah register sumber yang mewakili vektor 3 komponen.
  • src1 adalah register sumber yang mewakili matriks 3x3, yang sesuai dengan register pertama dari 3 berturut-turut.

Keterangan

Versi shader piksel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
m3x3 x x x x x

 

Masker xyz diperlukan untuk register tujuan. Pengubah negasi dan gerimis diizinkan untuk src0 tetapi tidak untuk src1.

Cuplikan 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);

Vektor input berada di register src0. Matriks input 3x3 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 normal selama komputasi pencahayaan. Instruksi ini diimplementasikan sebagai satu set produk titik seperti yang ditunjukkan di bawah ini.

m3x3 r0.xyz, r1, c0  which will be expanded to:

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

Instruksi Pixel Shader