Ian*_*Ian 2 swift metal metalkit
我正在尝试在金属着色器中实现简单的LUT颜色等级。它与彩色LUT一起使用,但是当LUT为灰度时,问题就会出现。首先,加载灰度图像会导致“图像解码失败”错误,该错误已通过以下方式修复:此错误解决方法该错误。
通过将图像重新表征为资产束中的纹理,可以成功加载图像,但是输出图像上会出现条纹。果然,捕获GPU帧表明已在纹理中引入了条纹:
在资产捆绑包或源PNG中进行“快速查看”时,不会出现此带。检查纹理的像素格式表明它已被编码为ASTC_4x4_sRGB, Apple文档指出这是低动态范围内容的压缩格式。似乎这种压缩可能会导致LUT纹理降级。通常,在使用LUT时,我会避免任何压缩,但是我找不到在MTKTextureLoader中禁用压缩或强制采用像素格式的方法。
我还尝试了各种MTKTextureLoader选项,包括启用/禁用sRGB,mipmap等。
关于如何解决条带的任何想法?
重要的是要了解,MTKTextureLoader在资产目录中使用纹理资产时,大多数运行时纹理加载器选项都将被忽略。可能没有记录,但目前是这种情况。
您可以通过在Xcode资产目录编辑器中选择资产并将其像素格式明确设置为“ 8 Bit Normalized-RGBA”之类的方法,来避免这种自动压缩(这是故意的,但既笨拙又过于激进)。.rgba8Unorm在运行时映射到。
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |