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