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