目的地暫存器寫入遮罩
寫入遮罩可控制完成指令之後,目的地暫存器哪些元件會寫入。 只要元件的順序為 .rgba 或 .xyzw,就允許輸出寫入遮罩。 也就是說,.rba 和 .xw 都是有效的遮罩。 紋理暫存器有一組規則,而非紋理暫存器有另一組規則。
Syntax
dst.writemask |
---|
where
- dst 是目的地暫存器。
- writemask 是集合中的遮罩序列: (x、y、z、w) 或 (紅色、綠色、藍色、Alpha) 。
備註
下列目的地寫入遮罩可供使用。
圖元著色器版本 | 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 中,這會更新目的地的紅色、藍色和 Alpha 色板。 任意遮罩可在 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
Alpha 寫入遮罩也稱為純量寫入遮罩,因為它使用純量管線。
add r0.a, t1, v1
因此,此指令有效地將 t1 的 Alpha 元件和 v1 的 Alpha 元件總和放入 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
共同發行的指令允許同時發出兩個可能不同的指令。 這可藉由在 Alpha 管線和 RGB 管線中執行指示來完成。
mul r0.rgb, t0, v0
+ add r1.a, t1, c1
如此一來配對指令的優點是,它允許以平行方式在向量和純量管線中執行不同的作業。
這些頂點著色器輸出暫存器僅限於下列寫入遮罩:
註冊類型 | 必要的寫入遮罩 |
---|---|
oFog | 此純量暫存器上不允許任何明確的寫入遮罩 |
選擇 | 此純量暫存器上不允許任何明確的寫入遮罩 |
oPos | .xyzw (,這是預設) |
oT# | 結合遮罩:.x | .xy | .xyz | .xyzw (,這是預設) |
相關主題