glsl计算sprite的亮度饱和度对比度

//glsl计算sprite的亮度饱和度对比度
#ifdef GL_ES
precision mediump float;                    
#endif
uniform sampler2D u_texture;                
varying vec2 v_texCoord;                    
varying vec4 v_fragmentColor;               

void main(void)                             
{                                           
    vec4 color = texture2D(u_texture, v_texCoord);               
    if(color.a >= 0.4)
    {                                    
        vec3 avg = vec3(0.5,0.5,0.5);                
        vec3 luncoeff = vec3 (0.2125, 0.7154, 0.0721);                
        float T1 = 0.4;                                                 
        float T2 = 2.4;                                                 
        //计算亮度                                                    
        vec3 brtColor = color.rgb * T2;                                  
        float intensityf = dot(brtColor,luncoeff);                         
        vec3 intensity = vec3(intensityf,intensityf,intensityf);        
        //计算饱和度        
        vec3 satColor = vec3(mix(intensity, brtColor, 1.));                
        //计算对比度    
        vec3 conColor = vec3(mix(avg, satColor, T1));                    
        gl_FragColor = vec4(conColor.r,conColor.g,conColor.b,color.a);    
    }
    else
    {
        gl_FragColor = color;
    }
}

 

转载于:https://www.cnblogs.com/beeasy/p/5047000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值