dp3 — ps
Вычисляет трехкомпонентное точечный продукт исходных регистров.
dp3 dst, src0, src1 |
---|
where
- dst — это регистр назначения.
- src0 — это регистр источника.
- src1 — это регистр источника.
Версии шейдера пикселей | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dp3 | x | x | x | x | x | x | x | x | x |
В следующем фрагменте кода показаны выполненные операции:
dest.x = dest.y = dest.z = dest.w =
(src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z);
Эта инструкция выполняется в конвейере вектора, всегда записывая данные в цветовые каналы. В версии 1_4 эта инструкция по-прежнему использует конвейер вектора, но может выполнять запись в любой канал.
Инструкция с маской записи в формате RGB(XYZ) регистра назначения может быть выдана совместно с dp3, как показано ниже.
dp3 r0.rgb, t0, v0 // Copy scalar result to color components
+mov r2.a, t0 // Copy alpha component from t0 in parallel
Инструкцию dp3 можно изменить с помощью модификатора входного аргумента source Register Signed Scaling (_bx2), примененного к ее входным аргументам, если они еще не расширены до подписанного динамического диапазона. Для шейдера освещения модификатор инструкций насыщения (_sat) часто используется для закрепления отрицательных значений до черного цвета, как показано в следующем примере.
dp3_sat r0, t0_bx2, v0_bx2 // t0 is a bump map, v0 contains the light direction