ジオメトリシェーダ

DirectX10のレンダリングパイプラインは次のようになっている(正確には違うんだけど)。
入力

頂点シェーダ

ジオメトリシェーダ

ラスタライザ

ピクセルシェーダ

出力


頂点シェーダとピクセルシェーダはDirectX9の時に触ったことがあるけど、ジオメトリシェーダは初めて。
ジオメトリシェーダでは頂点数の増減や移動ができる
これによって例えばモデルに毛を生やしたり出来るようになる。
DirectXSDKに付いてきたサンプルではポリゴンの各頂点を法線方向に移動させて爆破を表現している。


ジオメトリシェーダの詳細についてはMSDNを参照すること。チュートリアル 13:ジオメトリ シェーダー | Microsoft Docs
ここでは重要そうなところだけ抜粋しておく

  • ジオメトリシェーダの初期化
    • maxvertexcountの設定。maxvertexcountは出力される頂点の最大数を示す、まぁ名前の通り。
    • 関数の作成、GS〜とかが一般的。第一引数はtriangleを入れて3角形が処理されることを示し、頂点フォーマットと識別子を入力する。第二引数には出力形式とストリームを入れる。


[maxvertexcount(3)]
void GS( triangle GSPS_INPUT input[3], inout TriangleStream<GSPS_INPUT> TriStream )


今のところは使う予定ないな