輸出色彩暫存器
圖元著色器色彩輸出暫存器 (oC#) 是輸出結果至多個轉譯目標的僅限寫入暫存器。
Syntax
Oc# |
---|
其中:
名稱 | 描述 |
---|---|
oC0 | 轉譯目標 #0 |
oC1 | 轉譯目標 #1 |
oC2 | 轉譯目標 #2 |
oC3 | 轉譯目標 #3 |
備註
- 如果寫入 oCn 但沒有對應的轉譯目標,則會忽略此寫入 oCn。
- 如果適用) ,轉譯狀態D3DRS_COLORWRITEENABLE、D3DRS_COLORWRITEENABLE1、D3DRS_COLORWRITEENABLE2和D3DRS_COLORWRITEENABLE3決定 oCn 最終會寫入轉譯目標 (。 如果著色器會寫入指定 oCn 暫存器所定義的部分元件,但並非所有元件都 D3DRS_COLORWRITEENABLE為指定的 oCn 暫存器轉譯狀態,則未寫入的通道會在對應的轉譯目標中產生未定義的值。 如果未寫入 oCn 的元件,則對應的轉譯目標完全不能更新為上述 () ,因此不會套用D3DRS_COLORWRITEENABLE* 轉譯狀態。
著色器模型 2 限制
- oCn 只能使用 mov - ps 指令撰寫。
- oC0 必須一律以著色器寫入。
- 寫入任何 oCn 時,不允許使用 .xyzw = 預設 swizzle) 或來源修飾詞以外的來源 swizzle (。
- 除了 .xyzw = 預設遮罩 () 或指令修飾詞以外,不允許寫入任何 oCn 以外的目的地寫入遮罩。
- 如果寫入 oCn,則 oC0 - oCn-1 也必須寫入。 例如,若要寫入 oC2,您也必須寫入 oC0 和 oC1。
- 每個著色器最多隻寫入任何 oC# 。
- 對於ps_2_x和ps_3_0,您無法在動態流程式控制制內寫入 oC# 和 oD# 暫存器,或在靜態流程式控制制內寫入 oC# (寫入 oC# 即可) 。
著色器模型 3 限制
- 針對 ps_3_0,輸出暫存器 oC# 和 oD# 可以寫入任何次數。 圖元著色器的輸出來自著色器執行結束時輸出暫存器的內容。 如果寫入輸出暫存器未發生,可能是因為流程式控制制或著色器剛未寫入,則對應的轉譯目標也不會更新。 如果寫入輸出暫存器中的通道子集,則會將未定義的值寫入其餘通道。
- 對於 ps_3_0,oC# 暫存器可以使用任何寫入遮罩來寫入。
- 對於ps_2_x和ps_3_0,您無法在動態流程式控制制內寫入 oC# 和 oD# 暫存器,或在靜態流程式控制制內寫入 oC# (寫入 oC# 即可) 。
- 您可能不會執行任何漸層計算 (或隱含叫用漸層計算的作業,例如texld - ps_2_0 和 up、texldb - ps、texldp - ps) ,其流程式控制制語句內的分支條件會依每個基本基礎而有所不同, (例如:動態流程式控制制指令) 。 指令預先設定不會被視為動態流程式控制制。
相關主題