1

私は現在、頂点の量が三角形の量によって定義されていないシェーダーに取り組んでいます。私のシェーダーは、X 単位ごとにキューブを配置します。

これは、作成される立方体の数と必要な頂点の数を事前に知ることができないことを意味します。

ただし、maxvertexcount[x]. には何を入れxますか?

これを回避するにはどうすればよいですか?

注: 私はジオメトリ シェーダーの初心者であり、ほとんど何も知りません。

4

1 に答える 1

1

呼び出しごとに必要な頂点の数 ( inputのように「取る」) はわかっています

これはプリミティブ トポロジによって定義されます。たとえば、三角形 (ストリップ) は 3 を取り、三角形の隣接関係は 6 を取ります。呼び出しごとに出力できる頂点の数には実装上の制限があるため、MaxVertexCount は絶対に知っておく必要があります。

1 回の呼び出しでその制限に達した場合は、GPU にジオメトリ シェーダーを複数回呼び出すよう強制する必要があります (Shader Model 5.0 機能)。D3D はこのプロセスを「ジオメトリ シェーダーのインスタンス化」と呼び、uint InstanceID : SV_GSInstanceIDどの重複した呼び出し (インスタンス) が実行されているかを識別します。

問題の説明は、実際にこれを明確に答えるのを難しくしています。実際に何をしようとしているのかを示すために、HLSL コードをいくつか含めていただけますか?

于 2014-06-07T01:45:03.080 に答える