Маска записи для конечного регистра
Маска записи определяет, какие компоненты целевого регистра записываются после завершения инструкции. Маска записи выходных данных допускается до тех пор, пока компоненты находятся в порядке 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 (которая является значением по умолчанию) |
Связанные разделы