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