0

我们目前正在使用 GL_SRGB8_ALPHA8 进行 FBO 颜色校正,但它会在较暗的场景中导致显着的色带。

是否有每个颜色通道有 10 位的 GL_SRGB8_ALPHA8 版本(例如 GL_RGB10_A2)?如果没有,这个用例有什么解决方法?

附加的图像已添加对比度以使其更明显,但在源中仍然很明显。

在此处输入图像描述

4

2 回答 2

1

从表面上看,Direct3D 9 似乎支持这一点,因为它不将 sRGB 编码为格式。相反,它将采样器设置为解码为线性空间,因此我看不出它在 D3D9 上如何无法正常工作,否则纹理将被错误地过滤。我不知道它是如何实现的。即使使用 GL_EXT_texture_sRGB_decode ,也决定(有一个注释)不启用这种 D3D9 类似的行为。

像往常一样,OpenGL 似乎总是在追逐这个现在旧 API 的幽灵。它可能只有 D3DSAMP_SRGBTEXTURE 之类的东西,并且与它具有同等地位。大概是硬件实现了它。任何条带都可能取决于显示器,因为最终它必须向下转换为显示器的颜色深度,这可能远低于 10 位。

于 2021-08-05T14:39:41.427 回答
0

最后,我们最终得到了线性 16 位浮点格式,我怀疑驱动程序在内部将它用于 SRGB 无论如何,正如@mick-p 指出的那样,我们总是受限于显示颜色深度

于 2021-08-05T18:11:51.583 回答