金属着色器在缓冲区中插值

时间:2018-05-05 08:32:16

标签: ios fragment-shader metal metalkit

我需要将缓冲区传递给Metal fragment shader,它是N个浮点值的数组。但我希望着色器插入值,如果绘制的纹理的宽度大于N像素。如果我使用纹理,很容易使用采样器并设置线性滤波,但是不清楚是否可以在片段着色器中的任意缓冲区上设置插值。

1 个答案:

答案 0 :(得分:1)

不,不可能为您在缓冲区中的值进行金属插值。 Metal无法知道缓冲区是否具有关联的“几何体”。例如,N个浮点值的数组可以是N个水平元素,N个垂直元素,5个N / 5个元素等等。插值需要知道哪个元素是给定元素的邻居,这需要几何知识。

当然,您可以在着色器中自行进行插值。

您还可以使用-newTextureWithDescriptor:...的{​​{1}} / makeTexture()方法从缓冲区创建纹理。然后你可以从那个纹理中采样。