次の方法で共有


dcl_input vGSInstanceID (sm5 - asm)

ジオメトリ シェーダーのインスタンス化を有効にします。

vGSInstanceID、instanceCount のdcl_input
Item 説明
vGSInstanceID
[入力]インスタンス ID。
instanceCount
[入力]インスタンス数。

注釈

宣言の instanceCount パラメーターは、各入力プリミティブに対してジオメトリ シェーダーを実行する必要があるインスタンスの数を指定します。 instanceCount の最大値は 32 です。

dcl_maxOutputVertexCount を介して出力用に宣言された頂点の最大数は、各インスタンスに個別に適用されます。

この宣言のインスタンス数に、 dcl_maxOutputVertexCountを介してインスタンスあたりの最大頂点数を乗算した値は、 = 1024 である <必要があります。

特定のジオメトリ シェーダー インスタンスが出力できるデータの量は最大 1024 スカラーです。これは、入力用に宣言されたすべてのスカラーをカウントし、宣言された出力頂点数を乗算することによって検証されます。

ジオメトリ シェーダーのインスタンス化を使用すると、入力プリミティブごとに出力できるデータの合計量が効果的に増加します。 1 つのインスタンスに対して 1024 スカラーを使用すると、1 つの入力プリミティブのすべてのジオメトリ シェーダー インスタンスで最大 1024*32 の出力データのスカラーが生成されます。 ただし、インスタンスが多いほど、各インスタンスが出力できる頂点は少なくなります。 1 つのインスタンス (インスタンス化なし) では、1024 個の頂点を出力できます。 *32 インスタンスを宣言すると、各インスタンスは 1024/32 = 32 個の頂点のみを出力できることを意味します。

ジオメトリ シェーダーのインスタンス化宣言は、スタンドアロンの 32 ビット整数入力レジスタ vGSInstanceID をプログラムで使用できるようにします。 各ジオメトリ シェーダー インスタンスは、 vGSInstanceID [0,1,2...]に含まれる値によって識別されます。

vGSInstanceID は、ジオメトリ シェーダー入力頂点配列の一部ではありません (たとえば、三角形を入力する場合は 3 つの頂点)。 vGSInstanceID レジスタは、vPrimitiveID のように独自に立っています。

各ジオメトリ シェーダー インスタンスが終了すると、出力トポロジに暗黙的なカットがあるため、連続するインスタンスは相互に依存しません。

ハードウェアは各ジオメトリ シェーダー インスタンスを並列で実行できますが、最後のすべてのインスタンスの出力は、インスタンス化されたすべてのジオメトリ シェーダー呼び出しが、 vGSInstanceID を 0 から instanceCount-1 に反復処理するループで順番に実行されたかのようにシリアル化され、各インスタンスの末尾に暗黙的な出力トポロジが切り取られます。

この命令は、次のシェーダー ステージに適用されます。

Vertex Hull Domain ジオメトリ ピクセル Compute
X

最小シェーダー モデル

この命令は、次のシェーダー モデルでサポートされています。

シェーダー モデル サポートされています
シェーダー モデル 5 はい
シェーダー モデル 4.1 no
シェーダー モデル 4 no
シェーダー モデル 3 (DirectX HLSL) no
シェーダー モデル 2 (DirectX HLSL) no
シェーダー モデル 1 (DirectX HLSL) no

シェーダー モデル 5 アセンブリ (DirectX HLSL)