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