頂点シェーダー ステージ
頂点シェーダー (VS) ステージは、入力アセンブラーからの頂点を処理し、変換、スキニング、モーフィング、頂点ごとの照明などの頂点ごとの操作を実行します。 頂点シェーダーは常に 1 つの入力頂点で動作し、1 つの出力頂点を生成します。 パイプラインを実行するには、頂点シェーダー ステージが常にアクティブである必要があります。 頂点の変更や変換が必要ない場合は、パススルー頂点シェーダーを作成し、パイプラインに設定する必要があります。
頂点シェーダー
各頂点シェーダー入力頂点は、最大 16 個の 32 ビット ベクトル (それぞれ最大 4 つのコンポーネント) で構成でき、各出力頂点は最大 16 個の 32 ビット 4 コンポーネント ベクトルで構成できます。 すべての頂点シェーダーには、少なくとも 1 つの入力と 1 つの出力が必要です。これは、1 つのスカラー値に限られます。
頂点シェーダー ステージでは、入力アセンブラーから生成された 2 つのシステム値 (VertexID と InstanceID) を使用できます (システム値セマンティクス 参照)。 VertexID と InstanceID はどちらも頂点レベルで意味があり、ハードウェアによって生成された ID は、それらを理解する最初のステージにのみフィードできるため、これらの ID 値は頂点シェーダー ステージにのみフィードできます。
頂点シェーダーは、隣接性を持つ入力プリミティブ トポロジ内の隣接する頂点を含め、すべての頂点で常に実行されます。 頂点シェーダーが実行された回数は、VSInvocations パイプライン統計を使用して CPU から照会できます。
頂点シェーダーは、画面空間の派生物が必要ない (HLSL 組み込み関数を使用する) ロードおよびテクスチャ サンプリング操作を実行できます (HLSL 組み込み関数を使用する: Sample (DirectX HLSL Texture Object)、SampleCmpLevelZero (DirectX HLSL Texture Object)、および SampleGrad (DirectX HLSL Texture Object))。