Маска записи регистра назначения

Маска записи определяет, какие компоненты регистра назначения записываются после выполнения инструкции. Маска записи выходных данных допускается, если компоненты находятся в порядке RGBA или XYZW. То есть RBA и XW являются допустимыми масками. Регистры текстур имеют один набор правил, а регистры, не относящиеся к текстурам, имеют другой набор правил.

Синтаксис

dst.writemask

 

where

  • dst является регистром назначения.
  • Маска записи — это последовательность масок из любого набора: (x,y,z,w) или (красный, зеленый, синий, альфа).

Комментарии

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

Версии шейдера пикселей 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.xyzw (по умолчанию) x x x x x x x x x
.Xyz x x x x x x x x x
x x x x x x x x x
произвольная маска x x x x x x

 

Произвольная маска позволяет объединить любой набор каналов для создания маски. Каналы должны быть перечислены в порядке r, g, b, a, например register.rba, который обновляет красный, синий и альфа-каналы назначения. Произвольная маска доступна в версии 1_4 или более поздней.

Если маска записи назначения не указана, маска записи назначения по умолчанию использует регистр rgba. Другими словами, обновляются все каналы в целевом регистре.

В версиях с 1_0 по 1_3 арифметическая инструкция dp3 - ps dp3 может использовать только маски вывода RGB или RGBA.

Маски записи регистра назначения поддерживаются только для арифметических операций. Они не могут использоваться в инструкциях адресации текстур, за исключением инструкций версии 1_4, texcrd - ps и texld - ps_2_0 и выше.

По умолчанию записывается все четыре цветовых канала.

// All four color channels can be written by explicitly listing them.
mul r0.rgba, t0, v0

// Or, the default mask can be used to write all four channels.
mul r0, t0, v0

Маска альфа-записи также называется скалярной маской записи, так как она использует скалярный конвейер.

add r0.a, t1, v1

Таким образом, эта инструкция эффективно помещает сумму альфа-компонента t1 и альфа-компонента v1 в r0.a.

Маска записи цвета используется для управления записью в цветовые каналы.

// The color write mask is also referred to as the vector write mask, 
//   because it uses the vector pipeline.
mul r0.rgb, t0, v0

В версии 1_4 маски записи назначения можно использовать в любом сочетании, если маски упорядочены r,g,b,a.

// This example updates the red, blue, and alpha channels.
mov r0.rba, r1

Совместно издаваемая инструкция позволяет одновременно издавать две потенциально разные инструкции. Это достигается путем выполнения инструкций в конвейере альфа-канала и конвейере RGB.

  mul r0.rgb, t0, v0
+ add r1.a,   t1, c1

Преимущество инструкций связывания таким образом заключается в том, что он позволяет параллельно выполнять различные операции в векторном и скалярном конвейере.

Эти выходные регистры вершинных шейдеров ограничены следующими масками записи:

Тип регистрации Обязательная маска записи
oFog в этом скалярном регистре не разрешена явная маска записи
Выбирает в этом скалярном регистре не разрешена явная маска записи
oPos .xyzw(который является значением по умолчанию)
Ot # комбинированная маска: .x | .xy | .xyz | .xyzw (по умолчанию)

 

Модификаторы регистра пиксельных шейдеров