草庐IT

commandEncoder

全部标签

swift - 在下一个计算着色器中使用一个计算着色器的结果的正确方法是什么

假设我在Metal中分配了两个计算着色器A和B。我不希望B在A完成之前运行。目前我正在将每个着色器编码到它们自己的命令缓冲区中并像这样提交:commandBufferA.commit()commandBufferA.waitUntilCompleted()commandBufferB.commit()这是正确的技术吗? 最佳答案 如果您需要在CPU上使用内核的结果,则在命令缓冲区上调用waitUntilCompleted()很有用,但如果您的意图只是使用后续计算命令中的计算命令(调度)。如果计算命令之间存在数据依赖性,则前者写入的结

ios - 如何使用 Metal 自定义计算着色器并获得非常流畅的性能?

我正在尝试使用苹果提供的默认MPSKernal滤镜和自定义computeShaders通过Metal应用实时相机滤镜。在计算着色器中,我使用MPSImageGaussianBlur进行了就地编码代码在这里funcencode(tocommandBuffer:MTLCommandBuffer,sourceTexture:MTLTexture,destinationTexture:MTLTexture,cropRect:MTLRegion=MTLRegion.init(),offset:CGPoint){letblur=MPSImageGaussianBlur(device:device,