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