这是我的 GLSL 着色器,用于输入纹理数据。
vec3 ExtractColor(vec3 Color, float LumaMask)
{
float Luma = dot(Color, vec3(1));
float ColorMask = exp(-Luma * 2 * PI / LumaMask);
Color = mix( Color, vec3(Luma), ColorMask);
return vec3(Color / dot(Color, vec3(1.0)));
}
我面临的问题是,当颜色非常接近黑色或明亮时,它会转换为绿色。
这里 vec3(Luma) 值被用作新的颜色值,因此请尝试以下操作。
改变
Color = mix( Color, vec3(Luma), ColorMask);
到
Color = mix(Color, Color, ColorMask);