我正在选择一种图像格式,该格式将用作所有内部纹理的存储格式。该格式将用作生成不同平台和配置的压缩纹理的源格式,因此需要涵盖所有可能的纹理类型(2D、立方体、体积测量、不同数量的 mip-map、浮点像素格式、等)并且完全无损。此外,格式必须能够保留一些元数据。
目前为此使用了一种自定义格式,但由于在大多数图像编辑器中都可以查看,因此艺术家可以更容易地使用常用格式。
我曾想过使用 DDS,但据我所知,这种格式不支持元数据。
所有建议表示赞赏!
根据您的要求,您应该保持自制格式。除了支持体积和立方体纹理的 DDS 之外,我不知道任何图像格式。不幸的是,DDS 不支持元数据。
您能找到的最接近的是 TIFF。它不直接支持立方体贴图或体积纹理,但它支持任意数量的子图像。这样,您可以将子图像重新用作切片或立方体。
TIFF 对自定义元数据也有很好的支持。libtiff 图像读/写库工作得很好。如果您来自 OO 方面,它看起来有点过时,但它完成了它的工作。
尼尔斯
在查看各种游戏的资源时,我发现它们中的大多数都在TGA中存储了纹理(我不知道它们是否被压缩)
对于支持任意元数据和多帧的格式,TIFF 可能是您最接近的选择,但我认为您最好将资产(在本例中为图像)与它们在引擎中的转换和使用方式分开。
将图像保存为 32 位 PNG 格式,并将类型和元信息放入 XML。这使您的数据保持可见、可读和可编辑。晦涩的自定义格式适用于引擎,而不是人。
坚持与您的艺术家合作的任何东西。
这些格式将存储图层以及您的艺术家需要和习惯的所有东西。由于您的艺术家将创建大量资产,因此即使这意味着编写一些额外的代码,也可以使他们的生活尽可能轻松。
如果本机格式 (psd/xcf) 不支持元数据(无论它可能是什么),请将其放在图像“沿”的某个位置。
对于立方体贴图之类的东西,mipmaps(如果不是由转换器生成)坚持命名指导线或指导线如何将它们放入一个文件中。
根据您用于创建体积材料的工具,只需坚持使用该工具的原生格式即可。
虽然为目标编写自定义格式通常是一个好主意,但为艺术家编写自定义格式会导致混乱......
我对 DDS 的经验是,它是一种文档记录不充分且难以使用的格式,并且几乎没有优势。通常更简单的方法是为每个图像类存储一个主文件,该文件具有对构成它的源图像的引用(即立方体贴图的 6 个面,体积纹理的任意数量的切片)以及任何其他有用的元数据。将元数据保存在单独的文件(或数据库)中总是一个好主意,因为您不希望在执行搜索、填充浏览器等时加载大量图像。这也很有意义将源图像格式(tiff、tga、jpeg、dds ...)与“元格式”(cube、volume ...)分开,因为您可能会发现需要使用有损压缩来支持 HDR 格式或非常大的源体数据。
作为替代解决方案,也许花一些时间为您的文件格式编写免费图像编辑器插件?我以前从来没有做过,所以我不知道所涉及的工作,但是那里有大量的示例代码供您使用。