鑲嵌 (TS) 階段
鑲嵌 (TS) 階段會建立代表幾何填補的網域取樣模式,並產生一組較小的物件 (三角形、點或線條),以連接這些樣本。
用途和使用方式
下圖醒目提示了 Direct3D 圖形管線的各個階段。
下圖顯示鑲嵌階段的整體進程。
該進程會從低詳細程度的細分表面開始。 接著則會使用連接這些樣本的對應幾何填補、網域樣本和三角形,著手醒目提示輸入填補。 最後則會醒目提示對應至這些樣本的頂點。
Direct3D 執行階段可支援實作鑲嵌的三個階段,鑲嵌旨在將 GPU 上的低詳細程度細分表面轉換為高詳細程度原始物件。 鑲嵌會將高階表面並排 (或分解) 至適當的結構中,以進行轉譯。
鑲嵌階段會搭配運作,藉此將高階表面 (可讓模型保持簡單且效率十足) 轉換為多個三角形,以利在 Direct3D 圖形管線中進行詳細的轉譯。
鑲嵌會使用 GPU,從使用四邊形填補、三角形填補或等值線建構的表面來計算更詳細的表面。 為了取得近似的高階表面,每個填補都會使用鑲嵌係數細分為三角形、點或線條。 Direct3D 圖形管線會使用三個管線階段來實作鑲嵌:
- 輪廓著色器 (HS) 階段 - 這個可進行程式設計的著色器階段會產生對應至每個輸入填補 (四邊形、三角形或線條) 的幾何填補 (和填補常數)。
- 鑲嵌 (TS) 階段 - 這個固定函式管線階段會建立代表幾何填補的網域取樣模式,並產生一組較小的物件 (三角形、點或線條),以連接這些樣本。
- 網域著色器 (DS) 階段 - 這個可進行程式設計的著色器階段會計算對應至每個網域樣本的頂點位置。
只要在硬體中實作鑲嵌,圖形管線就能評估詳細程度較低 (多邊形數量較低) 的模型,並以較高的詳細程度加以轉譯。 雖然您也能進行軟體鑲嵌,但硬體實作的鑲嵌可產生數量驚人的視覺化詳細資料 (包括適用於位移對應的支援),而且無需將視覺化詳細資料新增至模型大小內並癱瘓重新整理速率。
鑲嵌的優勢包括:
- 鑲嵌可節省大量的記憶體和頻寬,進而讓應用程式從低解析度模型轉譯詳細程度更高的表面。 Direct3D 圖形管線中實作的鑲嵌技巧也支援位移對應,可產生數量驚人的表面詳細資料。
- 鑲嵌支援多項可調整轉譯技巧,例如持續或檢視相依的詳細資料層級,能即時進行計算。
- 鑲嵌能以較低的頻率執行代價高昂的運算 (使用詳細程度較低的模型執行計算),藉此改善效能。 這可包括使用混合圖形或變形目標來進行混合計算,以產生逼真的動畫,或是執行實體計算,以做為碰撞偵測或柔體力學之用。
Direct3D 圖形管線會在硬體中實作鑲嵌,以將工作從 CPU 卸載至 GPU。 如果應用程式實作大量的變形目標和/或更精密的面板設定/變形模型,就有可能顯著提升效能。
鑲嵌為固定函式階段,會透過將輪廓著色器繫結至管線來初始化 (請參閱操作說明:初始化鑲嵌階段)。 鑲嵌階段的目的,在於將網域 (四邊形、三角形或線條) 細分為許多較小的物件 (三角形、點或線條)。 鑲嵌會在正規化的 (零到一) 座標系統內並排標準網域。 舉例來說,四邊形網域會鑲嵌至正方形中。
鑲嵌 (TS) 階段中的不同階段
鑲嵌 (TS) 階段會透過兩個階段運作:
第一個階段會使用 32 位元浮點算數處理鑲嵌係數,藉此修正四捨五入問題、處理非常小的係數,以及減少和合併係數。
第二個階段會根據所選的資料分割類型來產生點或拓撲清單。 這式鑲嵌階段的核心作業,且會使用固定點算數的 16 位元小數。 固定點算數可進行硬體加速,同時保有可接受的精確度。 舉例來說,假設有個 64 公尺寬的填補,這個精確度就能以 2 公釐的解析度來配置點。
資料分割類型 範圍 Fractional_odd [1...63] Fractional_even TessFactor 範圍:[2..64] 整數 TessFactor 範圍:[1..64] Pow2 TessFactor 範圍:[1..64]
鑲嵌會透過兩個可進行程式設計的著色器階段實作:輪廓著色器和 網域著色器。 這些著色器階段會使用在著色器模型 5 定義的 HLSL 程式碼來進行程式設計。 著色器目標為:hs_5_0 和 ds_5_0。 當著色器已繫結至管線時,標題會建立著色器,然後從傳遞至執行階段中的已編譯著色器擷取硬體程式碼。
啟用/停用鑲嵌
只要建立輪廓著色器,並將其繫結至輪廓著色器階段 (這會自動設定鑲嵌階段),即可啟用鑲嵌。 若要從已鑲嵌的填補產生最終頂點位置,您也需要建立網域著色器,並將其繫結至網域著色器階段。 啟用鑲嵌後,輸入至輸入組合語言 (IA) 階段中的資料必須為填補資料。 輸入組合語言拓撲必須為填補常數拓撲。
若要停用鑲嵌,請將輪廓著色器和將網域著色器設為 NULL。 無論幾何著色器 (GS) 階段或資料流輸出 (SO) 階段,都無法讀取輪廓著色器輸出控制點或填補資料。
輸入
鑲嵌會使用鑲嵌係數 (指定網域將以何種精細度鑲嵌) 和磁碟分割類型 (指定用來進行填補配量的演算法),對每個填補進行一次操作。
輸出
鑲嵌會將 uv (以及選擇性的 w) 座標和表面拓撲輸出至網域著色器階段。
相關主題