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

# メッシュ シェーダー パイプラインの概要

> メッシュ シェーダー パイプラインが入力アセンブラーをプログラム可能な Amplification および Mesh ステージに置き換え、XBOX Series X|S 上でスケーラブルなジオメトリを実現する方法。

RTX Turing および AMD RDNA 2.0 GPU では、新しいジオメトリ処理パイプラインが導入されています。このパイプラインは、増幅シェーダーとメッシュ シェーダーという 2 つの新しいプログラマブル シェーダー ステージで構成されており、入力アセンブラーおよびテセレーターのハードウェアを使用しません。両ステージともコンピュートに近い動作で、スレッドグループを公開し、生成されたスレッド ID を唯一の入力として利用しますが、ジオメトリ処理の投入に関連する機能も提供します。

この新しいパラダイムは、インデックス/頂点のフェッチをプログラマブル シェーダーへオフロードする効果があり、GPU のコア数とメモリ帯域幅に応じてスケールできるようになります。これは入力アセンブラーの拡大するボトルネックを回避し、改善された一貫したレートで GPU に作業を投入できるようにします。また、オンチップ メモリを用いたパイプライン処理で、プリミティブ単位まで含む複数の粒度でジオメトリを早期にカリングするインターフェイスも提供します。

**図 1. メッシュ シェーダー パイプラインのステージ。緑色のステージはプログラマブルです。青色のステージは固定機能です。**

![メッシュ シェーダー パイプラインのステージ図](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)

## メッシュ シェーダー

メッシュ シェーダー (MS) は、本質的にはコンピュート シェーダーであり、頂点、インデックス、プリミティブ データをプリミティブ アセンブラーにエクスポートするためのステージ固有の組み込み関数を備えています。すべてのデータは、シェーダー コード内で定数バッファー ビュー (CBV) およびシェーダー リソース ビュー (SRV) から明示的にフェッチする必要があります。

つまり、開発者はドロー コールの捉え方を、コンピュート シェーダーのワークフローに沿ったものへと再調整する必要があります。シェーダーの作成者は、スレッドグループ サイズを決定し、各スレッドをどのように使ってワークロードを完成させるかを決めます。シェーダー ウェーブ組み込み関数とグループ共有メモリを利用して、データを共有し、ラスタライズ対象のプリミティブ リストを効率的に構築できます。

**図 2. メッシュ シェーダーのみのパイプラインをバインドした状態で DispatchMesh(4, 1, 1) 呼び出しからディスパッチされる GPU 作業の可視化。コンピュート シェーダーと同様に、DispatchMesh は x、y、z の各次元におけるスレッドグループ数を必要とします。指定した数のメッシュ シェーダー スレッドグループが実行のためにディスパッチされます。**

![メッシュ シェーダーのみのパイプラインをバインドした状態で DispatchMesh コマンドからディスパッチされる作業の可視化。](https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_pipeline.png?fit=max\&auto=format\&n=6hkHc7s12mHcTMCE\&q=85\&s=da9bfe92b2e4eb38fb3c7c45a4e84568)

## 増幅シェーダー

増幅シェーダー (AS) は、メッシュ シェーダー ステージの前に位置するオプションのステージです。このステージもコンピュートに近く、メッシュ シェーダー スレッドグループのクラスターを動的にディスパッチする機能を持ちます。各スレッドグループは、ディスパッチするメッシュ シェーダー スレッドグループの数を自身で計算します。各スレッドグループはまた、生成する各メッシュ シェーダー スレッドグループに渡すために、最大 16 KB の共有カスタム ペイロード データを保持します。このデータはグループ共有メモリから直接エクスポートできます。

増幅シェーダーの機能により、シェーダー プログラムはカスタム条件に基づいてワークロードを動的に減少または増加させることができます。これにより、粒度の低い効率的なカリングやカスタム テセレーションが可能になります。

**図 3. AS-MS パイプライン ステート (PS) オブジェクトのディスパッチの可視化。一部の AS スレッドグループは MS スレッドグループのディスパッチを選択します。他はまったくディスパッチしない場合もあります。**

![AS-MS パイプラインをバインドした状態で DispatchMesh コマンドからディスパッチされる作業の可視化。](https://mintcdn.com/microsoft-4404708b/6hkHc7s12mHcTMCE/images/gdk/features/graphics/ms_as_pipeline.png?fit=max\&auto=format\&n=6hkHc7s12mHcTMCE\&q=85\&s=8a1227f965a71d9e511a040e3651d7f8)

## このセクションの内容

## 関連項目

[XBOX Series X|S グラフィックス機能の概要](https://docs.xbox.com/ja-jp/build/core-features/graphics/graphics-newfeatures-toc.md)
[グラフィックスの概要](https://docs.xbox.com/ja-jp/build/core-features/graphics/overviews/graphics.md)
[グラフィックス](https://docs.xbox.com/ja-jp/build/core-features/graphics/gc-graphics-toc.md)


## Related topics

- [メッシュ シェーダー パイプライン API の概要](https://docs.xbox.com/ja-jp/build/core-features/graphics/newfeatures/ms/ms-api-design.md)
- [なぜメッシュ シェーダーなのか?](https://docs.xbox.com/ja-jp/build/core-features/graphics/newfeatures/ms/ms-why.md)
- [メッシュレット](https://docs.xbox.com/ja-jp/build/core-features/graphics/newfeatures/ms/ms-meshlet-render.md)
- [メッシュレット カリングの例](https://docs.xbox.com/ja-jp/build/core-features/graphics/newfeatures/ms/ms-meshlet-culling.md)
- [XBOX Series X|S のメッシュ シェーダーとメッシュレット](https://docs.xbox.com/ja-jp/build/core-features/graphics/newfeatures/ms/index.md)
