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 - ps、if_comp - ps或 break_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 | 不 | 沒有 | 不 |
相關主題