【发布时间】:2020-04-06 01:35:49
【问题描述】:
我的纹理资源应该是线性的还是 sRGB?无论哪种情况,导入它们的正确方法是什么?
(有a similar question on r/godot,但我没有看到任何彻底的答案。)
Godot 似乎假设所有 PNG 纹理都是线性的,而不管 PNG 中嵌入的任何 gamma 或 sRGB 信息。我通过对 PNG 进行十六进制编辑来测试这一点,使其具有各种类型的 gAMA 和 sRGB 块。这与大多数图像编辑器不一致,它们往往默认使用非线性色彩空间。因此,如果您在例如创建 PNG Gimp 并将其粘贴在 Sprite3D 上,默认情况下它看起来会褪色。
Godot(至少在 3.2 中)有一个 Srgb 导入选项,当设置为 Enable 时,会使此类纹理看起来正常。但我担心:
- 这个选项似乎是来自主干的removed。
- 如果 sRGB > 线性转换发生在 uint8 > float32 转换之前,这将丢弃很多颜色精度。
- 如果
Srgb的默认Detect设置没有检测到实际的sRGB PNG,它有什么意义?
还有hint_albedo,但我希望用户不必为了让纹理按预期工作而编写着色器。
推荐的纹理工作流程是什么?
【问题讨论】: