美文网首页游戏设计&游戏开发
用cocos2d-js修改Sprite的色调

用cocos2d-js修改Sprite的色调

作者: samael | 来源:发表于2017-01-17 09:58 被阅读209次

    在游戏中我们要实现同样的敌人样子,但是还有是一定的区别

    总不能让美术一套一套的出图吧

    我们需要对精灵的色相进行调整而不是简单的setColor,如图

    jpg

    基本原理就是让纹理中的每种颜色在色盘中平移一个值

    jpg

    shader代码

    // hue.fsh
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    varying vec2 v_texCoord;
    uniform mat3 u_hue;
    uniform float u_alpha;
    
    void main()
    {
        vec4 pixColor = texture2D(CC_Texture0, v_texCoord);
        vec3 rgbColor = u_hue * pixColor.rgb;
        gl_FragColor = vec4(rgbColor, pixColor.a * u_alpha);
    }
    
    
    // hue.vsh
    attribute vec4 a_position;
    attribute vec2 a_texCoord;
    attribute vec4 a_color;
    
    #ifdef GL_ES
    varying lowp vec4 v_fragmentColor;
    varying mediump vec2 v_texCoord;
    #else
    varying vec4 v_fragmentColor;
    varying vec2 v_texCoord;
    #endif
    
    void main()
    {
        gl_Position = CC_PMatrix * a_position;
        v_fragmentColor = a_color;
        v_texCoord = a_texCoord;
    }
    

    完整的代码可以参考相关链接里

    相关链接

    http://color-wheel-artist.com/hue.html
    https://github.com/samael65535/GameLab/blob/master/src/HueTest.js

    相关文章

      网友评论

        本文标题:用cocos2d-js修改Sprite的色调

        本文链接:https://www.haomeiwen.com/subject/hilmbttx.html