共用方式為


ps_3_0緩存器

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

新增快取器

輸入快取器

輸入快取器 (v#) 現在已完全浮點,且 紋理座標緩存器s (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。

輸入快取器類型

註冊 名字 計數 R/W # 讀取埠 # Reads/inst 尺寸 RelAddr 違約 需要 DCL
v# 輸入緩存器 10 R 1 無限 4 沒有 是的
r# 暫存緩存器 32 R/W 3 無限 4 沒有
c# 常數浮點數緩存器 224 R 1 無限 4 0000
我# 常數整數緩存器 16 R 1 1 4 0000
b# 常數布爾緩存器 16 R 1 1 1
p0 述詞緩存器 1 R 1 1 1 沒有
s# 取樣器 (Direct3D 9 asm-ps) 16 R 1 1 4 請參閱附注 1 是的
vFace Face_Register 1 R 1 無限 1 沒有 是的
vPos Position_Register 1 R 1 無限 4 沒有 是的
Loop_Counter_Register 1 R 1 無限 1 n/a 沒有

 

筆記:

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

讀取區數目是可以在單一指令中讀取的不同緩存器數目(適用於每個緩存器類型)。

輸出快取器類型

註冊 名字 計數 R/W 尺寸 RelAddr 違約 需要 DCL
oC# 輸出色彩快取器 請參閱 多重元素紋理 (Direct3D 9) W 4 沒有
oDepth 輸出深度快取器 1 W 1 沒有

 

快取器