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。
网友评论