如何在不影响背景颜色的情况下提亮白色

时间:2015-03-04 16:06:12

标签: opengl-es glsl opengl-es-2.0

如何在不增加灰色背景亮度的情况下增加白色的亮度?我有这个光照贴图纹理,它位于地板纹理的顶部,但是当我尝试更多地显示白色三角形白色光时,图像的其余部分变得更加明亮。我是用webgl做的。

我试过了:

//问题是白色太暗了。

vec4 baseColor = texture2D(baseTexture,vUv)* texture2D(lightMapTexture,vUv);

和:     vec4 baseColor = mix(texture2D(baseTexture,vUv),texture2D(lightMapTexture,vUv),0.5);

我想要得到的效果是左下图像,其中白色更亮但不影响阴影灰色。

enter image description here

1 个答案:

答案 0 :(得分:1)

照明通常通过乘法混合来完成,而不是添加剂混合(如果你在蓝光下照亮红色物体,它应该显示为黑色 - 你的方案会让它看起来是紫色的)。这也有助于阻止你的黑暗区域变亮并保持对比度(照明下的黑色仍然是黑色)。

如果你想过度饱和"您可以尝试通过功率函数来抑制低和中等范围的光,然后通过缩放系数将其缩放,然后将最终的后照明颜色夹在0和1之间。如果您通过此方案过度饱和,那么你会得到剪裁文物。