共用方式為


圖元著色器階段

圖元著色器階段 (PS) 可啟用豐富的底紋技術,例如每圖元光源和後置處理。 圖元著色器是一種程式,結合常數變數、紋理數據、插補每個頂點值,以及其他數據來產生每像素輸出。 轉譯器階段會針對基本類型所涵蓋的每個圖元叫用圖元著色器一次,不過,您可以指定 NULL 著色器,以避免執行著色器。

圖元著色器

當多重取樣紋理時,每個覆蓋圖元都會叫用一次圖元著色器,而每個涵蓋的多取樣器都會進行深度/樣板測試。 通過深度/樣板測試的範例會以像素著色器輸出色彩更新。

圖元著色器內部函式會產生或使用與螢幕空間 x 和 y 相關的數量衍生專案。 衍生工具最常見的用途是計算紋理取樣的詳細數據層級計算,並在非等性篩選的情況下,選取沿著非等性座標軸的樣本。 一般而言,硬體實作會在多個像素上執行圖元著色器(例如 2x2 網格線),讓圖元著色器中計算的數量衍生專案在相鄰圖元的相同執行點,可以合理近似為值的差異。

輸入

在沒有幾何著色器的情況下設定管線時,圖元著色器限製為16、32位、4個元件輸入。 否則,圖元著色器最多可能需要 32、32 位、4 個元件輸入。

圖元著色器輸入數據報含頂點屬性(可以插入或不含檢視方塊更正),也可以視為每個基本常數。 根據所宣告的插補模式,圖元著色器輸入會從要點陣化之基本類型的頂點屬性進行插補。 如果在點陣化之前裁剪基本類型,在裁剪程式期間也會採用插補模式。

頂點屬性會在圖元著色器中心位置進行插補(或評估)。 圖元著色器屬性插補模式會在輸入緩存器宣告中,以每個元素為基礎,在 自變數輸入結構中宣告。 屬性可以線性插補,或使用 距心取樣。 距心評估只有在多重取樣期間才相關,以涵蓋基本型別所涵蓋的圖元,但圖元中心可能不是:centerid 評估會盡可能接近 (非涵蓋) 圖元中心。

輸入也可以使用 系統值語意來宣告,以標記其他管線階段所使用的參數。 例如,圖元位置應該以SV_Position語意標示。 IA 階段可以為像素著色器產生一個純量(使用SV_PrimitiveID):轉譯器階段也可以為圖元著色器產生一個純量(使用SV_IsFrontFace)。

輸出

圖元著色器最多可以輸出 8、32 位、4 個元件色彩,如果捨棄圖元則不顯示色彩。 圖元著色器輸出緩存器元件必須先宣告,才能使用;每個快取器都允許不同的輸出寫入遮罩。

使用深度寫入啟用狀態(在輸出合併階段中)來控制深度數據是否會寫入深度緩衝區(或使用捨棄指令來捨棄該像素的數據)。 圖元著色器也可以輸出選擇性的 32 位、1 個元件、浮點、深度值以進行深度測試(使用SV_Depth語意)。 深度值是在 oDepth 快取器中輸出,並取代深度測試的插補深度值(假設已啟用深度測試)。 使用固定函式深度或著色器 oDepth 之間無法動態變更。

圖元著色器無法輸出樣板值。

圖形管線

管線階段 (Direct3D 10)