1

我最近一直在阅读有关 sRGB 转换及其带来的一些好处的信息。我在 GPU Gems 3 中阅读了一篇非常有用的文章,该文章现在免费提供,其中涵盖了一些自动方法与手动着色器编写的方法。这是这篇文章:

https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch24.html

在什么情况下使用手动转换而不是自动转换是有益的?在我看来,使用传递给 glTexImage2D 的 GL_SRGB_EXT 和使用 GL_EXT_framebuffer_sRGB 不需要任何手动转换?

4

1 回答 1

1

好吧,那篇文章已经提出了一个原因。如果您假设(错误的)伽马值 2.0,您可以使用 sqrt 计算它,这可能比屏幕后面的内置方法更快,很可能类似于pow(frag.rgb,1.0/2.2). 当然,如果渲染到 sRGB 是在硬件中实现的,这不会优化任何东西。

另一个原因可能是您想自己在非线性色彩空间中进行一些计算。例如,如果您想转换为Y'CbCr 之类的图像处理任务。

最后,也许您可​​以通过一些查询获得输出设备的伽玛值的非常精确的值,然后进行手动转换可能会提供(可能几乎不明显)更好的质量。

于 2012-08-08T17:15:04.830 回答