gpt4 book ai didi

ios - Metal 计算内核与片段着色器

转载 作者:可可西里 更新时间:2023-11-01 03:48:40 25 4
gpt4 key购买 nike

除了标准的vertexfragment 函数外,Metal 还支持kernel。我找到了一个将图像转换为灰度的 Metal kernel 示例。

kernelfragment 中执行此操作到底有什么区别?计算 kernel 可以做什么(更好)而 fragment 着色器不能,反之亦然?

最佳答案

Metal 有四种不同类型的命令编码器:

  • MTLRenderCommandEncoder
  • MTLComputeCommandEncoder
  • MTLBlitCommandEncoder
  • MTLParallelRenderCommandEncoder

如果您只是从事图形编程,那么您对MTLRenderCommandEncoder 最为熟悉。那是您设置顶点和片段着色器的地方。这经过优化以处理大量绘图调用和对象基元。

内核着色器主要用于MTLComputeCommandEncoder。我认为内核着色器和计算编码器用于图像处理示例的原因是因为您没有像您那样绘制任何图元与渲染命令编码器一起使用。尽管这两种方法都使用图形,但在本例中,它只是简单地修改纹理上的颜色数据,而不是计算屏幕上多个对象的深度。

计算命令编码器也更容易设置为使用线程进行并行计算:

https://developer.apple.com/reference/metal/mtlcomputecommandencoder

因此,如果您的应用程序想要在数据修改上使用多线程,那么在这个命令编码器中比在渲染命令编码器中更容易做到这一点。

关于ios - Metal 计算内核与片段着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41014713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com