ps_3_0暫存器

圖元著色器相依于暫存器以取得頂點資料、輸出圖元資料、在計算期間保留暫存結果,以及識別紋理取樣階段。 有數種類型的暫存器,每一種都有獨特的功能。 本節包含圖元著色器 3_0 版所實作之輸入和輸出暫存器的參考資訊。

新增暫存器

輸入暫存器

輸入暫存器 (v#) 現在是完整的浮點,且 紋理座標緩存器 (t#) 已合併到其中。 dcl_semantics (sm3 - ps asm) 著色器頂端用來描述特定Input_Register中包含的內容。 引進圖元類型的語意 (類似于此模型的頂點側) 。 當輸入暫存器定義為紋理座標) (色彩時,不會執行任何限制。 定義為色彩的暫存器評估,與多重取樣時的紋理座標不同。

臉部暫存器

此模型的臉部暫存器 (vFace) 是新的。 這是最終會包含基本區域的浮點純量暫存器。 不過,在ps_3_0中,只有此登錄的正負號有效。 因此,如果值小於零, (在基本類型是負數) 基本類型是負值, (區域為負數,則逆時針) 。 因此,在 ps_3_0只比較此暫存器與 0 (> 0 或 < 0) 。 在圖元著色器內,應用程式可以決定要使用的光源技術。 您可以透過這種方式達成雙面光源。 此暫存器需要宣告,因此未宣告的使用方式會標示為錯誤。 對於行和點基本類型,這個暫存器是未定義的。 臉部暫存器只能作為條件,並遵循下列指示: setp_comp - psif_comp - psbreak_comp - ps

迴圈計數器暫存器

迴圈計數器緩存器 (aL) 是這個模型的新功能。 它會在每個迴圈執行時自動遞增- ps/endloop - ps區塊。 如有需要,可以在 區塊中使用它來進行相對定址。 在迴圈外部使用迴圈計數器暫存器是不正確。

位置暫存器

此模型的新位置暫存器 (vPos) 。 它包含對應通道中的目前圖元 (x、y) 。 (z、w) 通道是未定義的。 此暫存器需要宣告,因此未宣告的使用方式會標示為錯誤。 宣告時,此暫存器必須只具有下列其中一個遮罩:.x、.y、.xy。

輸入暫存器類型

註冊 名稱 Count R/W # 讀取埠 # Reads/inst 尺寸 RelAddr Defaults 需要 DCL
V# 輸入暫存器 10 R 1 無限制 4 Yes
R# 暫存暫存器 32 R/W 3 無限制 4 No
c# 常數浮點數暫存器 224 R 1 無限制 4 0000 No
我# 常數整數暫存器 16 R 1 1 4 0000 No
B# 常數布林值暫存器 16 R 1 1 1 FALSE
P 述詞暫存器 1 R 1 1 1 No
s# Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 請參閱附注 1 Yes
vFace Face_Register 1 R 1 無限制 1 Yes
vPos Position_Register 1 R 1 無限制 4 Yes
Loop_Counter_Register 1 R 1 無限制 1 n/a No

 

注意:

  • 取樣器查閱的預設值存在,但值取決於紋理格式。

讀取區數目是可在單一指令中讀取之每個暫存器類型 () 的不同暫存器數目。

輸出暫存器類型

註冊 名稱 Count R/W 尺寸 RelAddr Defaults 需要 DCL
Oc# 輸出色彩暫存器 請參閱 Direct3D 9 (多重元素紋理) W 4 No
oDepth 輸出深度暫存器 1 W 1 No

 

寄存 器