swift - MTKTextureLoader 导致灰度图像中的条带
问题描述
我正在尝试在金属着色器中实现一个简单的 LUT 颜色等级。它适用于彩色 LUT,但当 LUT 为灰度时,就会出现问题。首先,加载灰度图像会导致“图像解码失败”错误,此错误解决方法已修复该错误。
通过将图像重新表征为资产包中的纹理,它可以成功加载,但输出图像上有条带。果然,捕获一个 GPU 帧表明在纹理中引入了条带:
在资源包或源 PNG 上进行快速查看时,不会出现此条带。检查纹理的像素格式显示它已被编码为 ASTC_4x4_sRGB,Apple 文档指出这是低动态范围内容的压缩格式。似乎这种压缩可能是降低 LUT 纹理的原因。通常在使用 LUT 时,我会注意避免任何压缩,但我找不到在 MTKTextureLoader 中禁用压缩或强制像素格式的方法。
我还尝试了各种 MTKTextureLoader 选项,包括启用/禁用 sRGB、mipmap 等。
关于如何修复条带的任何想法?
解决方案
推荐阅读
- python - python - 使用 DEAP 进行多变量多目标优化
- javascript - Google Scripts CSV 文件返回框和问号
- swift - 多个同名节点之一的快速动作序列
- java - BorderFactory 和 Metal L&F 问题
- python - 尝试在 mongo 游标上循环时,Pymongo 身份验证失败
- javascript - 尝试在 iOS webview 应用程序中使用 SpeechSynthesis API
- reporting-services - SSRS – 如何对四舍五入的金额求和?
- javascript - 如何获取文本已知的特定锚点的链接
- angular - 如何在 Angular 中配置 MSAL?
- cmake - CMake 生成器不在那里吗?