我使用 Photoshop 的 NVIDIA 纹理工具插件保存了一张 *.dds 图像,并选择了D3DFMT_A32R32G32B32F格式。因为它是浮点格式,所以我认为数据保存在线性颜色空间中。但是,当我在代码中加载文件时,我发现我需要执行从 sRGB 到线性的转换,以获得我预期的结果。
这是对的吗?D3DFMT_A32R32G32B32F是 sRGB 格式吗?或者,它是Photoshop插件中的错误吗?或者,格式在色彩空间方面是否不可知?
在相关的说明中,我选择了旧的D3DFMT_A32R32G32B32F格式,因为该插件似乎不支持较新的 DXGI 格式。
从技术上讲,浮点数据可以在任何颜色空间中。在 DirectXTex 中,我通常认为浮点格式是线性空间,但旧插件肯定可以将所有内容视为 sRGB。
传统的DDSURFACEDESC2
DDS 文件不显式编码颜色空间。NVIDIA的一些黑客试图添加sRGB与线性,但它从未被广泛采用。使用DXGI_FORMAT
的DX10
扩展标头,只有少数格式明确指示sRGB,因此即使在那里,您也可以在技术上拥有各种颜色空间中的数据。
请参阅此博客文章