m3x4 — по сравнению с

Умножает 3-компонентный вектор на матрицу 3x4.

Синтаксис

m3x4 dst, src0, src1

 

where

  • dst — это регистр назначения. Результатом является вектор из 4 компонентов.
  • src0 — это регистр источника, представляющий 3-компонентный вектор.
  • src1 — это регистр источника, представляющий матрицу 3x4, которая соответствует первому из 4 последовательных регистров.

Комментарии

Версии вершинного шейдера 1_1 2_0 2_x 2_sw 3_0 3_sw
m3x4 x x x x x x

 

Маска xyzw (по умолчанию) требуется для регистра назначения. Модификаторы negate и swizzle разрешены для src0, но не для src1.

В следующем фрагменте кода показаны выполненные операции.

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

Входной вектор находится в register src0. Входная матрица 3x4 находится в регистре src1 и следующих трех более высоких регистрах, как показано в расширении ниже.

Эта операция обычно используется для преобразования вектора положения матрицей, которая имеет проективный эффект, но не применяет преобразование. Эта инструкция реализуется как пара точечных продуктов, как показано ниже.

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

Инструкции по вершинным шейдерам