GLSL 色彩特效

1、碧绿效果

使色彩呈暗绿色
fragmentShader代码

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = pow(col.g-col.b,2.0)/0.5;
        gl_FragColor.g = pow(col.r-col.g,2.0)/0.5;
        gl_FragColor.b = pow(col.r-col.g,2.0)/0.5; 
        gl_FragColor.a = 1.0;
    }

2、老照片

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = 0.393*col.r+0.769*col.g+0.189*col.b;
        gl_FragColor.g = 0.349*col.r+0.686*col.g+0.168*col.b;
        gl_FragColor.b = 0.272*col.r+0.534*col.g+0.131*col.b;
        gl_FragColor.a = 1.0;
    }

3、冰冻

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = abs(col.r-col.g-col.b)*3.0/2.0;
        gl_FragColor.g = abs(col.g-col.b-col.r)*3.0/2.0;
        gl_FragColor.b = abs(col.b-col.r-col.g)*3.0/2.0;
        gl_FragColor.a = 1.0;
    }

4、熔铸效果

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = col.r*0.5/(col.g+col.b);
        gl_FragColor.g = col.g*0.5/(col.r+col.b);
        gl_FragColor.b = col.b*0.5/(col.r+col.g);
        gl_FragColor.a = 1.0;
    }

5、暗调效果

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = col.r*col.r;
        gl_FragColor.g = col.g*col.g;
        gl_FragColor.b = col.b*col.b;
        gl_FragColor.a = 1.0;
    }

6、对调效果

    varying vec2 texture_coor;
    uniform sampler2D texture;

    void main() {
        vec3 col = texture2D(texture,texture_coor).rgb;
        gl_FragColor.r = col.g*col.b;
        gl_FragColor.g = col.r*col.b;
        gl_FragColor.b = col.r*col.g;
        gl_FragColor.a = 1.0;
    }

7、饱和

    varying vec2 texture_coor;

    uniform sampler2D texture;
    uniform float vibrance;

    void main() {
        vec4 color = texture2D(texture, texture_coor);
        float average = (color.r + color.g + color.b) / 3.0;
        float mx = max(color.r, max(color.g, color.b));
        float amt = (mx - average) * (-vibrance * 3.0);
        color.rgb = mix(color.rgb, vec3(mx), amt);
        gl_FragColor = color;
    }

Reference
http://blog.csdn.net/kezunhai/article/details/41832317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值