Version: 5.4
public void DrawProceduralIndirect (Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset= 0, MaterialPropertyBlock properties= null);

パラメーター

matrix 使用するトランスフォーム(変換)マトリックス
material 使用するマテリアル
shaderPass 使用するシェーダーのパス (あるいはすべてに -1 を渡します。)
topology プロシージャルジオメトリのトポロジー
properties レンダリングの前にだけ適用するマテリアルプロパティーを追加します。 MaterialPropertyBlock を参照してください。
bufferWithArgs Draw Arguments のバッファ
argsOffset Draw argument があるバッファのバイトオフセット

説明

"draw procedural geometry" コマンドを追加。

When the command buffer executes, this will do a draw call on the GPU, without any vertex or index buffers. The amount of geometry to draw is read from a ComputeBuffer. Typical use case is generating arbitrary amount of data from a ComputeShader and then rendering that, without requiring a readback to the CPU.

シェーダーが ComputeBuffer バッファから任意のデータを読むことができる DirectX 11 の低レベルで便利です。

Buffer with arguments, bufferWithArgs, has to have four integer numbers at given argsOffset offset: vertex count per instance, instance count, start vertex location, start instance location. This very much maps to Direct3D11 DrawInstancedIndirect / OpenGL ES 3.1 glDrawArraysIndirect function (on OpenGL ES 3.1 the last argument is reserved and therefore not used).

頂点シェーダーで、通常、いくつかのバッファからデータをフェッチするのに SV_VertexID や SV_InstanceID の入力変数を使用します。

See Also: DrawProcedural, MaterialPropertyBlock, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, SystemInfo.supportsComputeShaders.