Bagikan melalui


m3x2 - vs

Mengalikan vektor 3 komponen dengan matriks 3x2.

Sintaks

m3x2 dst, src0, src1

 

Di mana

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

Keterangan

Versi shader vertex 1_1 2_0 2_x 2_sw 3_0 3_sw
m3x2 x x x x x x

 

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

Persamaan berikut menunjukkan bagaimana instruksi beroperasi:

dest.x = (src0.x * src1.x) + (src0.x * src1.y) + (src0.x * src1.z);
dest.y = (src0.x * src2.x) + (src0.y * src2.y) + (src0.z * src2.z);

Vektor input berada di register src0. Matriks input 3x2 ada di register src1 dan register berikutnya yang lebih tinggi dalam file register yang sama, seperti yang ditunjukkan dalam ekspansi berikut. Hasil 2D dihasilkan, membiarkan elemen lain dari register tujuan (dest.z dan dest.w) tidak terpengaruh.

Operasi ini biasanya digunakan untuk transformasi 2D. Instruksi ini diimplementasikan sebagai sepasang produk titik seperti yang ditunjukkan di sini.

m3x2   r0.xy, r1, c0   which will be expanded to:

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

Pengubah swizzle dan negate tidak valid untuk register src1. Register dest dan src0, atau salah satu register src1+i, tidak boleh sama.

Instruksi Vertex Shader