> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mesh Shader 管線概觀

> Mesh Shader 管線如何以可程式化的 Amplification 和 Mesh 階段取代輸入組合器，在 XBOX Series X|S 上提供可調整的幾何處理。

RTX Turing 和 AMD RDNA 2.0 GPU 引進了新的幾何處理管線。此管線由兩個新的可程式化著色器階段 (Amplification Shader 和 Mesh Shader) 組成，且不使用輸入組合器和鑲嵌器硬體。這兩個階段都類似計算著色器，公開執行緒群組並使用產生的執行緒識別碼作為唯一提供的輸入，但也提供與提交幾何處理相關的功能。

此新範式的效果是將索引/頂點擷取卸載到可程式化著色器，使其能隨 GPU 核心數量和記憶體頻寬擴充。這避開了輸入組合器日益嚴重的瓶頸，並有助於以更佳且一致的速率將工作送入 GPU。它也提供了一個介面，能以管線化方式搭配晶片上記憶體，在多種細微度 (細至每個基本型別層級) 提早剔除幾何。

**圖 1. Mesh Shader 管線的各個階段。綠色階段為可程式化。藍色階段為固定功能。**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_mesh_shader_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=1bdf8c428560eef0a048ae32c01c9759" alt="Mesh Shader 管線的階段圖" width="800" height="100" data-path="images/gdk/features/graphics/ms_mesh_shader_pipeline.png" />

## Mesh Shader

Mesh Shader (MS) 本質上是計算著色器，具備階段專屬的內建函式，可將頂點、索引和基本型別資料匯出至基本型別組合器。所有資料都必須在著色器程式碼中從常數緩衝區檢視 (CBV) 和著色器資源檢視 (SRV) 明確擷取。

這表示開發人員需要調整對繪製呼叫的看法，使其更符合計算著色器的工作流程。著色器作者決定執行緒群組大小，以及如何使用每個執行緒來完成工作負載。他們可以存取著色器 wave 內建函式和 groupshared 記憶體，以共用資料並有效率地建置要點陣化的基本型別清單。

**圖 2. 在繫結僅含 Mesh Shader 的管線時，從 DispatchMesh(4, 1, 1) 呼叫分派之 GPU 工作的視覺化呈現。與計算著色器一樣，DispatchMesh 需要 x、y 和 z 維度中的執行緒群組數量。這會分派指定數量的 Mesh Shader 執行緒群組來執行。**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=da9bfe92b2e4eb38fb3c7c45a4e84568" alt="從繫結僅含 Mesh Shader 管線之 DispatchMesh 命令分派之工作的視覺化呈現。" width="578" height="350" data-path="images/gdk/features/graphics/ms_pipeline.png" />

## Amplification Shader

Amplification Shader (AS) 是位於 Mesh Shader 階段之前的選擇性階段。此階段同樣類似計算著色器，能夠動態分派一組 Mesh Shader 執行緒群組。每個執行緒群組會計算自己要分派的 Mesh Shader 執行緒群組數量。每個執行緒群組也包含最多 16 KB 的共用自訂承載資料，以傳遞給其產生的 Mesh Shader 執行緒群組。此資料可以直接從 groupshared 記憶體匯出。

Amplification Shader 的功能讓著色器程式能根據自訂準則動態減少或放大其工作負載。這開啟了有效率、較低細微度的剔除或自訂鑲嵌的可能性。

**圖 3. 分派 AS-MS 管線狀態 (PS) 物件的視覺化呈現。有些 AS 執行緒群組會選擇分派 MS 執行緒群組。其他執行緒群組可能完全不分派。**

<img src="https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_as_pipeline.png?fit=max&auto=format&n=6hkHc7s12mHcTMCE&q=85&s=8a1227f965a71d9e511a040e3651d7f8" alt="從繫結 AS-MS 管線之 DispatchMesh 命令分派之工作的視覺化呈現。" width="953" height="350" data-path="images/gdk/features/graphics/ms_as_pipeline.png" />

## 本節內容

## 另請參閱

[XBOX Series X|S 圖形功能概觀](/zh-TW/build/core-features/graphics/graphics-newfeatures-toc)
[圖形概觀](/zh-TW/build/core-features/graphics/overviews/graphics)
[圖形](/zh-TW/build/core-features/graphics/gc-graphics-toc)


## Related topics

- [Why Mesh Shaders?](/build/core-features/graphics/newfeatures/ms/ms-why.md)
- [Mesh Shader pipeline overview](/build/core-features/graphics/newfeatures/ms/ms-overview.md)
- [Mesh shaders and meshlets on XBOX Series X|S](/build/core-features/graphics/newfeatures/ms/index.md)
- [Mesh Shader pipeline API overview](/build/core-features/graphics/newfeatures/ms/ms-api-design.md)
- [D3D12_MESH_SHADER_TIER (XBOX Series consoles)](/reference/graphics/d3d12_xs/enums/d3d12_mesh_shader_tier_xs.md)
