【问题标题】:Is D3DFMT_A32R32G32B32F Linear or sRGB?D3DFMT_A32R32G32B32F 是线性还是 sRGB?
【发布时间】:2019-12-07 04:35:25
【问题描述】:

我使用 Photoshop 的 NVIDIA 纹理工具插件保存了一个 *.dds 图像,我选择了 D3DFMT_A32R32G32B32F 格式。因为它是浮点格式,所以我认为数据保存在线性颜色空间中。但是,当我在代码中加载文件时,我发现我需要执行从 sRGB 到线性的转换,才能得到我期望的结果。

这是正确的吗? D3DFMT_A32R32G32B32F 是 sRGB 格式吗?或者,它是 Photoshop 插件中的错误吗?或者,就色彩空间而言,格式是否不可知?

在相关说明中,我选择了旧版 D3DFMT_A32R32G32B32F 格式,因为该插件似乎不支持较新的 DXGI 格式。

【问题讨论】:

    标签: graphics textures nvidia direct3d dds-format


    【解决方案1】:

    从技术上讲,浮点数据可以在任何颜色空间中。在DirectXTex 中,我通常认为浮点格式是线性空间,但旧插件当然可以将所有内容都视为 sRGB。

    传统的DDSURFACEDESC2 DDS 文件没有明确编码色彩空间。 NVIDIA 的一些 hack 尝试添加 sRGB 与线性,但从未被广泛采用。对于使用 DXGI_FORMATDX10 扩展标头,只有少数格式明确指示 sRGB,因此即使在这种情况下,您也可以在技术上拥有各种颜色空间的数据。

    this blog post

    【讨论】:

    • 谢谢 Chuck,非常感谢您提供的信息和详细的博文!我假设,如果 dds 文件中没有明确说明色彩空间,那么事后就无法确定它。正确的?而且我只需要在保存方式上保持一致(即相同的插件),以便假设 sRGB/linear。
    猜你喜欢
    • 2016-04-01
    • 2020-04-25
    • 2020-08-09
    • 1970-01-01
    • 2021-05-27
    • 2021-10-13
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多