Version: 2020.1

Graphics.DrawProceduralIndirect

切换到手册
public static void DrawProceduralIndirect (Material material, Bounds bounds, MeshTopology topology, ComputeBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

参数

material 要使用的 Material
bounds 围绕要绘制的实例的包围体。
topology 程序化几何体的拓扑。
camera 如果为 /null/(默认值),将在所有摄像机中绘制网格。否则,仅在给定摄像机中渲染网格。
bufferWithArgs 具有绘制参数的缓冲区。
argsOffset 缓冲区中的字节偏移,绘制参数所在位置。
properties 在绘制此网格之前应用于材质的其他材质属性。请参阅 MaterialPropertyBlock
castShadows 确定网格是否可以投射阴影。
receiveShadows 确定网格是否可以接受阴影。
layer 要使用的 Layer

描述

在 GPU 上绘制程序化的几何形状。

DrawProceduralIndirect 在 GPU 上执行绘制调用,没有任何顶点或索引缓冲区。 要绘制的几何体数量可从 ComputeBuffer 中读取。典型的用例是从 ComputeShader 中生成任意数量的数据,然后渲染该数据,无需回读 CPU。

这主要在 Shader Model 4.5 级别的硬件中有用,其中着色器可以从 ComputeBuffer 缓冲区读取任意数据。

带参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移处具有四个整数: 每个实例的顶点数、实例数、起始顶点位置和起始实例位置。 这会映射到 Direct3D11 DrawInstancedIndirect 和其他图形 API 中的等效函数。在 OpenGL 4.2 之前的版本和支持间接绘制的所有 OpenGL ES 版本中,最后一个参数保留,因此必须是零。

CommandBuffers 中也有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect

另请参阅:Graphics.DrawProceduralComputeBuffer.CopyCountSystemInfo.supportsComputeShaders


public static void DrawProceduralIndirect (Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, ComputeBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

参数

material 要使用的 Material
bounds 围绕要绘制的实例的包围体。
topology 程序化几何体的拓扑。
indexBuffer 用于将顶点提交到 GPU 的索引缓冲区。
camera 如果为 /null/(默认值),将在所有摄像机中绘制网格。否则,仅在给定摄像机中渲染网格。
bufferWithArgs 具有绘制参数的缓冲区。
argsOffset 缓冲区中的字节偏移,绘制参数所在位置。
properties 在绘制此网格之前应用于材质的其他材质属性。请参阅 MaterialPropertyBlock
castShadows 确定网格是否可以投射阴影。
receiveShadows 确定网格是否可以接受阴影。
layer 要使用的 Layer

描述

在 GPU 上绘制程序化的几何形状。

DrawProceduralIndirect 在 GPU 上执行绘制调用,没有顶点缓冲区。 要绘制的几何体数量可从 ComputeBuffer 中读取。典型的用例是从 ComputeShader 中生成任意数量的数据,然后渲染该数据,无需回读 CPU。

这主要在 Shader Model 4.5 级别的硬件中有用,其中着色器可以从 ComputeBuffer 缓冲区读取任意数据。

带参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移处具有五个整数: 每个实例的索引数、实例数、起始索引位置、基顶点位置和起始实例位置。 这会映射到 Direct3D11 DrawIndexedInstancedIndirect 和其他图形 API 中的等效函数。在 OpenGL 4.2 之前的版本和支持间接绘制的所有 OpenGL ES 版本中,最后一个参数保留,因此必须是零。

CommandBuffers 中也有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect

另请参阅:Graphics.DrawProceduralComputeBuffer.CopyCountSystemInfo.supportsComputeShaders

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961