是否可以在金属中使用双三次采样器?

Is it possible to use a bicubic sampler in metal?

在计算着色器中,我可以看到双三次是一个选项,但前提是定义了 __HAVE_BICUBIC_FILTERING__。当我将 bicubic 设置为过滤选项时,出现语法错误。 LinearNearest 编译正常。我正在 MacOS.

上构建 metal 2

另一种方法是使用采样器描述符在 CPU 上定义采样器,但那里也没有双三次选项。

this thread 中的评论讨论了他们无法设置 bicubic

我搜索了 metal shading language specification,那里根本没有提到双三次。任何帮助将不胜感激。

这取决于设备类型、操作系统(版本和类型)以及处理器架构。 下面的代码可以在以下配置上轻松编译:iOS 15, iPhone 12 / 13, Xcode 13.

#if defined(__HAVE_BICUBIC_FILTERING__)
    constexpr sampler textureSampler (mag_filter::bicubic, min_filter::bicubic);
    const half4 colorSample = colorTexture.sample (textureSampler, in.textureCoordinate);
    return float4(colorSample);
#endif