入力アセンブラー ステージ

Direct3D 10 以降の API は、パイプラインの機能領域をステージに分けます。パイプラインの最初のステージは、入力アセンブラー (IA) ステージです。

入力アセンブラー ステージの目的は、ユーザーが入力したバッファーからプリミティブ データ (ポイント、線、三角形) を読み取り、他のパイプライン ステージで使用されるプリミティブにデータをアセンブルすることです。 IA ステージは、複数の異なるプリミティブ型 (線の一覧、三角形のストリップ、隣接性を持つプリミティブなど) に頂点をアセンブルします。 ジオメトリ シェーダーをサポートするために、新しいプリミティブ型 (隣接性を持つライン リストや、隣接性を持つ三角形リストなど) が追加されました。

隣接性情報は、ジオメトリ シェーダーでのみアプリケーションから見えます。 たとえば、ジオメトリ シェーダーが隣接性を含む三角形に関与していた場合、入力データには三角形ごとに 3 つの頂点と、各三角形の隣接性データに 3 つの頂点が含まれます。

入力アセンブラー・ステージが隣接データを出力するように要求された場合、入力データには隣接データが含まれている必要があります。 これには、ダミーの頂点を提供する必要が生じることあります (縮退三角形を形成)。場合によっては、頂点が存在するかどうかに関係なく、頂点属性の 1 つフラグを付けることによってもできます。 さらに、このことはジオメトリ シェーダーにより検出されて処理される必要もあります。ただし、縮退ジオメトリのカリングはラスタライザー ステージで行われます。

プリミティブの組み立て中に、IA の 2 番目の目的は、シェーダーの効率を高めるために システムによって生成された値 をアタッチすることです。 システムにより生成された値は、セマンティクスとも呼ばれるテキスト文字列です。 3 つのシェーダー ステージはすべて共通のシェーダー コアから構築され、シェーダー コアはシステムによって生成された値 (プリミティブ ID、インスタンス ID、頂点 ID など) を使用して、シェーダー ステージでまだ処理されていないプリミティブ、インスタンス、頂点のみに処理を減らすことができます。

パイプライン ブロック図に示すように、IA ステージがメモリからデータを読み取ると (データがプリミティブにアセンブルされ、システムによって生成された値がアタッチされます)、データは頂点シェーダー ステージに出力されます。

このセクションの内容

トピック 説明
Input-Assembler ステージでのはじめに
入力アセンブラー (IA) ステージを初期化するには、いくつかの手順が必要です。 たとえば、パイプラインに必要な頂点データを使用してバッファー リソースを作成し、バッファーの場所とバッファーに含まれるデータの種類を IA ステージに指示し、データからアセンブルするプリミティブの種類を指定する必要があります。
プリミティブ トポロジ
Direct3D 10 以降では、 D3D_PRIMITIVE_TOPOLOGY 列挙型で表されるいくつかのプリミティブ型 (またはトポロジ) がサポートされています。 これらの型は、パイプラインによって頂点がどのように解釈およびレンダリングされるかを定義します。
バッファーなしのInput-Assembler ステージの使用
シェーダーにバッファーが必要ない場合は、バッファーの作成とバインドは必要ありません。 このセクションでは、単一の三角形を描画する単純な頂点シェーダーとピクセル シェーダーの例を示します。
System-Generated値の使用
システム生成値は、シェーダー操作の特定の効率を可能にするために、(ユーザーが指定した入力 セマンティクスに基づいて) IA ステージによって生成されます。

グラフィックス パイプライン

パイプライン ステージ (Direct3D 10)