OpenGL shader中如何调整色彩亮度

shader中色彩亮度的调整方法

如果要调节一个色彩,那么这个行为可以对应到RGB坐标的缩放操作上。一个色彩若要到达其最大亮度,则通过缩放其RGB值,使得至少其中一个值达到最大值1(实际上可以大于1)。

在shader中如果要使得一个色彩变得更加明亮,则使用一个大于1的标量因子对RGB坐标进行整体放大。然后使用函数将最大值限制到1,最小值限制到0,代码例子如下:

//将漫射色彩调亮50%,注意clamp函数将色彩各部件限制到有效范围
colorDiffuse = clamp(vMaterialDiffuse * 1.5,
                         vec4(0.0, 0.0, 0.0, 0.0),
                         vec4(1.0, 1.0, 1.0, 1.0));

注:如果RGB坐标放大的倍数过大,则所有部件值都达到1,整个色彩就显示为白色。这种情形下,色调(color hue)已经变化。如果要较好保持色调,那么放大的倍数应该仅能让其中的最大值刚好到达1。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容