目的地暫存器遮罩
遮罩會指定目的地緩存器哪些元件會隨著指令的結果更新。 紋理寄存器有一組規則,而非紋理寄存器有另一組規則。
- dx9_graphics_reference_asm_vs_registers_modifiers_masking - 本節包含將遮罩套用至目的地暫存器的規則。
- Texture_Register_Masks - 紋理暫存器有一些獨特的規則。
目的地暫存器遮罩
如下表所示,遮罩功能(其中 r 是有效的頂點著色器 註冊器之一)可以套用至向量資料的各個元件。
元件修飾詞 | 描述 |
---|---|
r.{x}{y}{z}{w} | 目的地遮罩 |
- 一般而言,指定目標暫存器的寫入遮罩是良好的編碼風格。 它可讓程式代碼更容易閱讀和維護。
- 只要 x 在 y 之前、y 在 z 之前,且 z 在 w 之前,就可以指定任何元件組合(包括 none)。
- oPts 和 oFog 輸出緩存器只能使用一個遮罩。
- 某些指示需要目的地緩存器使用單一寫入掩碼:exp、expp、log、logp、pow、rcp 和 rsq。
- 在 1.0 版中,frc 指令需要下列其中一個遮罩組合:.x 或 .y 或 .xy。 2.0 版沒有遮罩限制。
- sincos 需要下列其中一個遮罩組合:.x 或 .y 或 .xyz。
- m3x2 需要 .xy 寫入遮罩。
- m3x3 和 m4x3 需要 .xyz 寫入掩碼。
- m3x4 和 m4x4 需要 .xyz 寫入掩碼或默認寫入掩碼 (xyzw)。
紋理暫存器遮罩
在紋理座標緩存器上使用修飾詞的驗證規則比其他緩存器的驗證規則更嚴格。
- 如果寫入 oTn,則所有先前的暫存器(oTn-1 ~ oT0)也必須同時寫入。
- 任何 oT# 暫存器的「合併」寫入遮罩必須正好是下列其中一項:
- .x
- .xy
- .xyz
- .xyzw(相當於不使用任何組件修飾符)
例如,頂點著色器可以在不同的指令中輸出到紋理緩存器。
oT1.y
oT0.y
oT2
oT0.xz
oT1.x
或者,可以合併指示。
oT0.xyz
oT1.xy
oT2.xyzw
這些限制僅適用於紋理座標寄存器。
相關主題