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