共用方式為


目的地快取器寫入遮罩

寫入遮罩可控制完成指令之後,目的地緩存器哪些元件會寫入。 只要元件的順序為 .rgba 或 .xyzw,就允許輸出寫入遮罩。 也就是說,.rba 和 .xw 是有效的遮罩。 紋理快取器有一組規則,而非紋理緩存器則有另一組規則。

語法

dst.writemask

 

哪裡

  • 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 (這是預設值)

 

像素著色器緩存器修飾詞