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


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

Инструкции по шейдеру пикселей