DrawProcedural
Add a "draw procedural geometry" command.
Read time 3 minutesLast updated 5 days ago
Definition
- Type: Method
- Namespace: UnityEngine.Rendering
- Assembly: UnityEngine.CoreModule
DrawProcedural(Matrix4x4, Material, int, MeshTopology, int, int, MaterialPropertyBlock)
Add a "draw procedural geometry" command.
public void DrawProcedural(Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, int vertexCount, int instanceCount, MaterialPropertyBlock properties)
Parameters
Transformation matrix to use.
Material to use.
Which pass of the shader to use (or -1 for all passes).
Topology of the procedural geometry.
Vertex count to render.
Instance count to render.
Additional material properties to apply just before rendering. See MaterialPropertyBlock.
Remarks
When the command buffer executes, this will do a draw call on the GPU, without any vertex or index buffers. This is mainly useful on Shader Model 4.5 level hardware where shaders can read arbitrary data from ComputeBuffer buffers.
In the vertex shader, you'd typically use the SV_VertexID and SV_InstanceID input variables to fetch data from some buffers.
Note that the draw call will not have any lighting related shader data (light colors, directions, shadows, light and reflection probes etc.) set up. If the shader used by the material uses any lighting related variables, the results are undefined.
Additional Resources: CommandBuffer.DrawProceduralIndirect, MaterialPropertyBlock, Graphics.DrawProcedural.
DrawProcedural(GraphicsBuffer, Matrix4x4, Material, int, MeshTopology, int, int, MaterialPropertyBlock)
Add a "draw procedural geometry" command.
public void DrawProcedural(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, int indexCount, int instanceCount, MaterialPropertyBlock properties)
Parameters
The index buffer used to submit vertices to the GPU.
Transformation matrix to use.
Material to use.
Which pass of the shader to use (or -1 for all passes).
Topology of the procedural geometry.
Index count to render.
Instance count to render.
Additional material properties to apply just before rendering. See MaterialPropertyBlock.
Remarks
When the command buffer executes, this will do a draw call on the GPU, without a vertex buffer. This is mainly useful on Shader Model 4.5 level hardware where shaders can read arbitrary data from ComputeBuffer buffers.
In the vertex shader, you'd typically use the SV_VertexID and SV_InstanceID input variables to fetch data from some buffers.
Additional Resources: CommandBuffer.DrawProceduralIndirect, MaterialPropertyBlock, Graphics.DrawProcedural.
DrawProcedural(GraphicsBuffer, Matrix4x4, Material, int, MeshTopology, int, int)
Add a "draw procedural geometry" command.
public void DrawProcedural(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, int indexCount, int instanceCount)
Parameters
The index buffer used to submit vertices to the GPU.
Transformation matrix to use.
Material to use.
Which pass of the shader to use (or -1 for all passes).
Topology of the procedural geometry.
Index count to render.
Instance count to render.
Remarks
When the command buffer executes, this will do a draw call on the GPU, without a vertex buffer. This is mainly useful on Shader Model 4.5 level hardware where shaders can read arbitrary data from ComputeBuffer buffers.
In the vertex shader, you'd typically use the SV_VertexID and SV_InstanceID input variables to fetch data from some buffers.
Additional Resources: CommandBuffer.DrawProceduralIndirect, MaterialPropertyBlock, Graphics.DrawProcedural.
DrawProcedural(GraphicsBuffer, Matrix4x4, Material, int, MeshTopology, int)
Add a "draw procedural geometry" command.
public void DrawProcedural(GraphicsBuffer indexBuffer, Matrix4x4 matrix, Material material, int shaderPass, MeshTopology topology, int indexCount)
Parameters
The index buffer used to submit vertices to the GPU.
Transformation matrix to use.
Material to use.
Which pass of the shader to use (or -1 for all passes).
Topology of the procedural geometry.
Index count to render.
Remarks
When the command buffer executes, this will do a draw call on the GPU, without a vertex buffer. This is mainly useful on Shader Model 4.5 level hardware where shaders can read arbitrary data from ComputeBuffer buffers.
In the vertex shader, you'd typically use the SV_VertexID and SV_InstanceID input variables to fetch data from some buffers.
Additional Resources: CommandBuffer.DrawProceduralIndirect, MaterialPropertyBlock, Graphics.DrawProcedural.