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 |