纹理从 4096 压缩到 512 而不会降低质量

Texture compression from 4096 to 512 without losing quality

我在 4k 图像上烘焙纹理并使用 Gimp 将其缩小到 512,但在 Unity 3D 中质量很差。图片格式为png。 在 4k 图像上烘焙纹理并缩小到手机游戏的 512 是个好主意吗? 我该怎么做才能在移动游戏开发中保持小尺寸(512 或以下)烘焙纹理的良好质量?

一般来说,如果您使用较小的纹理,您可能会牺牲一些纹理质量。这是有道理的:随着数据的减少,某些东西 一定会丢失,而且通常是精细的细节和锐利的边缘。不过,可以使用一些策略来充分利用纹理数据:

  • 确保尽可能有效地布置模型的 UV。与细节不重要的部分(如低频服装或模特的下侧)相比,细节重要的部分(如面部)应给予更多的 UV space。最小化未使用的纹理 space.

  • 在可行的情况下,您可以使用重叠 UV 来重复使用 UV 的相似部分 space。如果您的模型完全对称,则可以将两半映射到相同的 space。或者,如果您的模型是一个具有相同边的板条箱,您可以将每一边映射到相同的 UV 方块。

  • 看看是否可以将纹理分解为多个对缩小尺寸不太敏感的纹理,然后将它们层叠在一起。例如,风景纹理可以分解为低频颜色纹理和高频噪声纹理。在那种情况下,低频纹理可以在不损失质量的情况下缩放得更小,而高频纹理可以用裁剪的平铺纹理替换,或者在着色器中按程序生成。

  • 尝试不同的大小调整算法。大多数图像编辑器都可以选择使用双三次或双线性方法调整大小。双三次在保留边缘方面做得更好,而双线性有时可以更好地匹配某些 content/shaders。您还可以通过谨慎使用模糊或锐化滤镜来改善调整大小的纹理。

  • 如果您的游戏目标硬件支持它,您应该评估使用硬件压缩格式,如 ETC2 或 ASTC。例如,ETC2 格式可以将 24 位 RGB 纹理数据压缩为原来的六倍,同时仍具有相同的图像尺寸。压缩是有损的,因此丢失了一些图像信息并且存在一些伪像,但对于某些内容,它看起来比重新缩放到类似数据大小的原始纹理更好。根据内容,调整大小和硬件纹理压缩的某种组合可能会让您最接近所需的 quality/size 权衡。 Unity 手册声称它会在导出时自动选择一个好的默认纹理格式,但您可以尝试其他格式 in the export options.

  • 通常,使用较小纹理的动机是消耗较少的显存并提高性能。但是,如果动机只是为了减少游戏的下载大小,您可以尝试其他图像格式。例如,JPG 允许您选择图像质量值以获得更小的文件大小。不过,它很少用于游戏,因为它占用的视频内存与类似大小的 PNG 一样多,可能有瑕疵,并且不支持 alpha。