目的地暫存器寫入遮罩

寫入遮罩可控制完成指令之後,目的地暫存器哪些元件會寫入。 只要元件的順序為 .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 - pstexld - 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 (,這是預設)

 

圖元著色器暫存器修飾詞