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


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

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

Синтаксис

dst.writemask

 

где

  • dst — это регистр назначения.
  • writemask — это последовательность маски из любого набора: (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
.w 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 и альфа-компонент версии 1 в 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,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 (которая является значением по умолчанию)

 

модификатор регистра пикселей