"      varying float red; varying float green; varying float blue; varying vec3 rgbVal ...."

glsl 图像处理篇

 


 


 


varying float red;
varying float green;
varying float blue;
varying vec3 rgbValue;
varying vec4 v_tex_coord;
varying vec4 v_pos_world;
uniform sampler2D albo;
uniform sampler2D lightBuffer;
//灰度图1
float grayPic(vec3 vec3Color)
{
return (vec3Color.x>vec3Color.y?vec3Color.x:vec3Color.y)>vec3Color.z?(vec3Color.x>vec3Color.y?vec3Color.x:vec3Color.y):vec3Color.z;
}
//灰度图2
float grayPic2(vec3 vec3Color)
{
return (vec3Color.x + vec3Color.y + vec3Color.z)/3.0;
}
//灰度图3
float grayPic3(vec3 vec3Color)
{
return (vec3Color.x0.3 + vec3Color.y0.59 + vec3Color.z0.11);
}
//黑白效果
float whiteBlack(vec3 vec3Color)
{
float ave = (vec3Color.x + vec3Color.y+vec3Color.z)/3.0;
if(ave>0.255)
return 1.0;
else
return 0.0;
}
//底片效果
vec3 negativeMode(vec3 vec3Color)
{
vec3 resultVec3;
resultVec3.x = 1 - vec3Color.x;
resultVec3.y = 1 - vec3Color.y;
resultVec3.z = 1 - vec3Color.z;
return resultVec3;
}
//浮雕效果
void main(void)
{
vec4 clr = texture2D(albo, v_tex_coord.xy);
vec4 tex_coord = v_pos_world;
tex_coord.xy/=tex_coord.w;
tex_coord.x=0.5
tex_coord.x+0.5;
tex_coord.y=0.5 tex_coord.y+0.5;
vec4 bfr = texture2D(lightBuffer,tex_coord.xy);
//gl_FragColor = vec4( red, green, blue, 1.0 );
gl_FragColor = clr
0.8 + bfr*0.1;
//gl_FragColor.rgb = max(gl_FragColor.r,gl_FragColor.g);
//gl_FragColor.rgb = whiteBlack(gl_FragColor);
gl_FragColor.rgb = negativeMode(gl_FragColor).xyz;
}

 


 


 

0   0   0   0   0  
0 回帖  

赞助商 我要投放

又拍云
又拍云联合 Let‘s encrypt 推出免费 SSL 证书
自动续期,永久免费
Promoted by 又拍云