在shader中调整饱和度、灰度、亮度

开发视频投影的过程中,有需求要调整画面的饱和度、灰度、亮度。

记录一下关键代码和效果。

关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
vec4 colorCorrection(vec4 originalColor, float saturation, float brightness, float contrast){
float gray = 0.2125 * originalColor.r + 0.7154 * originalColor.g + 0.0721 * originalColor.b;
vec3 grayColor = vec3(gray, gray, gray);
vec3 finalColor = mix(grayColor, originalColor.rgb, saturation);

finalColor = finalColor * brightness;

float avgValue = 0.5 * brightness;
vec3 avgColor = vec3(avgValue, avgValue, avgValue);
finalColor = mix(avgColor, finalColor, contrast);

return vec4(finalColor, originalColor.a);
}

效果


在shader中调整饱和度、灰度、亮度
https://www.liaomz.top/2022/03/07/zai-shader-zhong-diao-zheng-bao-he-du-hui-du-liang-du/
作者
发布于
2022年3月7日
许可协议