我最近一直在阅读关于sRGB转换和它带来的一些好处的文章。我在GPU Gems3中读到了一篇非常有用的文章,它现在是免费的,它涵盖了一些自动方法与手动着色器编写的方法。下面是这篇文章:
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch24.html
在什么情况下,使用手动转换而不是自动转换是有益的?在我看来,通过使用传入glTexImage2D的GL_SRGB_EXT和使用GL_EXT_framebuffer_sRGB,不需要进行任何手动转换?
发布于 2012-08-09 01:15:05
好吧,其中一个原因已经在那篇文章中给出了。如果你假设(错误的)伽马值为2.0,你可以用sqrt来计算它,这可能比屏幕后面的内置方法更快,很可能是pow(frag.rgb,1.0/2.2)。当然,如果渲染到sRGB是在硬件中实现的,这不会优化任何东西。
另一个原因可能是您希望自己在非线性颜色空间中进行一些计算。例如,如果您想要转换为用于图像处理任务的Y'CbCr之类的内容。
最后,也许你可以通过一些查询得到一个非常精确的输出设备的伽马值,然后进行手动转换可能会得到更好的质量(可能几乎不会引起注意)。
https://stackoverflow.com/questions/11866588
复制相似问题