opengl实现PS中部分图像处理效果-正片叠底、逆正片叠底、颜色加深、减淡

时间:2022-09-10 17:12:08

效果图

opengl实现PS中部分图像处理效果-正片叠底、逆正片叠底、颜色加深、减淡

正片叠底shader

varying vec2 V_Texcoord;

uniform sampler2D U_BaseTexture;
uniform sampler2D U_BlendTexture;

void main()
{
	vec4 blendColor=texture2D(U_BlendTexture,V_Texcoord);
	vec4 baseColor=texture2D(U_BaseTexture,V_Texcoord);
	//r,g,b,a 
	gl_FragColor=blendColor*baseColor;
}
逆正片叠底shader

varying vec2 V_Texcoord;

uniform sampler2D U_BaseTexture;
uniform sampler2D U_BlendTexture;

void main()
{
	vec4 blendColor=texture2D(U_BlendTexture,V_Texcoord);
	vec4 baseColor=texture2D(U_BaseTexture,V_Texcoord);
	//r,g,b,a 
	gl_FragColor=vec4(1.0)-((vec4(1.0)-blendColor)*(vec4(1.0)-baseColor));
}
颜色加深shader

varying vec2 V_Texcoord;

uniform sampler2D U_BaseTexture;
uniform sampler2D U_BlendTexture;

void main()
{
	vec4 blendColor=texture2D(U_BlendTexture,V_Texcoord);
	vec4 baseColor=texture2D(U_BaseTexture,V_Texcoord);
	//r,g,b,a 
	gl_FragColor=vec4(1.0)-(vec4(1.0)-baseColor)/blendColor;
}


颜色减淡shader

varying vec2 V_Texcoord;

uniform sampler2D U_BaseTexture;
uniform sampler2D U_BlendTexture;

void main()
{
	vec4 blendColor=texture2D(U_BlendTexture,V_Texcoord);
	vec4 baseColor=texture2D(U_BaseTexture,V_Texcoord);
	//r,g,b,a 
	gl_FragColor=baseColor/(vec4(1.0)-blendColor);
}