Version: 2022.3

Light.AddCommandBufferAsync

切换到手册
public void AddCommandBufferAsync (Rendering.LightEvent evt, Rendering.CommandBuffer buffer, Rendering.ComputeQueueType queueType);
public void AddCommandBufferAsync (Rendering.LightEvent evt, Rendering.CommandBuffer buffer, Rendering.ShadowMapPass shadowPassMask, Rendering.ComputeQueueType queueType);

参数

evt 图形处理期间,在 GPU 上开始执行该命令缓冲区的时间点。
buffer 要执行的缓冲区。
queueType 要在其上执行缓冲区的所需异步计算队列的类型。
shadowPassMask 指定要为其执行缓冲区的阴影通道的遮罩。

描述

向 GPU 的异步计算队列添加命令缓冲区,并在图形处理到达给定点时执行该命令缓冲区。

当图形队列处理到达 evt 参数描述的时间点时,在 GPU 上执行一个异步计算命令缓冲区。

可以将多个命令缓冲区设置为在同一个光源事件发生时执行(甚至可以多次添加同一个缓冲区)。若要从执行中删除命令缓冲区,请使用 RemoveCommandBuffer

通过传递阴影通道遮罩可以详细控制将对其执行缓冲区的阴影通道。

命令缓冲区只能调用以下命令在异步计算队列上执行,否则将出现错误(在日志中记录并在 Editor 窗口中显示):

CommandBuffer.BeginSample

CommandBuffer.CopyCounterValue

CommandBuffer.CopyTexture

CommandBuffer.CreateGPUFence

CommandBuffer.DispatchCompute

CommandBuffer.EndSample

CommandBuffer.IssuePluginEvent

CommandBuffer.SetComputeBufferParam

CommandBuffer.SetComputeFloatParam

CommandBuffer.SetComputeFloatParams

CommandBuffer.SetComputeTextureParam

CommandBuffer.SetComputeVectorParam

CommandBuffer.WaitOnGPUFence

系统保证缓冲区中的所有命令都在同一队列上执行。如果目标平台不支持异步计算队列,则将工作分发到图形队列。

另请参阅:GPUFence、SystemInfo.supportsAsyncComputeCommandBufferRemoveCommandBufferGetCommandBuffers