Поделиться через


m3x2 — vs

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

Синтаксис

m3x2 dst, src0, src1

 

where

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

Комментарии

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

 

Маска xy требуется для регистра назначения. Модификаторы negate и swizzle разрешены для src0, но не для src1.

В следующих уравнениях показано, как работает инструкция:

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

Входной вектор находится в register src0. Матрица входных данных 3x2 находится в регистре src1, а следующий более высокий регистр — в том же файле регистра, как показано в следующем расширении. Создается результат двухd, в результате чего остальные элементы регистра назначения (dest.z и dest.w) не затрагиваются.

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

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

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

Модификаторы swizzle и negate недопустимы для регистра src1. Регистр dest и src0 или любой из регистров src1+i не могут совпадать.

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