求大神给改个材质效果

原来的效果是来回流光,求改成单向流光

//流光shader
CCEffect %{
techniques:

  • passes:
    • vert: vs
      frag: fs
      blendState:
      targets:
      • blend: true
        rasterizerState:
        cullMode: none
        properties:
        texture: { value: white }
        u_fluxayTexture: { value: white }
        u_fluxaySpeed: { value: 1.0 }
        u_startPos: { value: -0.6 }
        u_UVoffset: { value: [1,0,0,1] }
        u_rotated: { value: 0 }
        u_time: { value: 0 }
        }%

CCProgram vs %{
#include
precision highp float;
in vec3 a_position;
in vec2 a_uv0;
out vec2 uv0;
void main () {
gl_Position = cc_matViewProj * vec4(a_position, 1);
uv0 = a_uv0;
}
}%

CCProgram fs %{
precision highp float;
in vec2 uv0;
uniform sampler2D texture;
uniform ARGS {
vec4 u_UVoffset;
float u_startPos; //流动的时间
float u_rotated;
float u_time;
float u_fluxaySpeed;
sampler2D u_fluxayTexture; //流光图纹理
}
void main()
{
vec2 UVnormalize;
UVnormalize.x = (uv0.x-u_UVoffset.x)/(u_UVoffset.z-u_UVoffset.x);
UVnormalize.y = (uv0.y-u_UVoffset.y)/(u_UVoffset.w-u_UVoffset.y);
if(u_rotated > 0.5)
{
float temp = UVnormalize.x;
UVnormalize.x = UVnormalize.y;
UVnormalize.y = 1.0 - temp;
}

    vec4 src_color = texture2D(texture, uv0).rgba;
    //调整第二张图的UV,调整其x使其产生流动效果
    vec2 flow_uv = vec2(UVnormalize.x,UVnormalize.y);
    flow_uv.x -= (u_time*u_fluxaySpeed)+u_startPos;
    vec4 src_color1 = texture2D(u_fluxayTexture, flow_uv).rgba;
    //根据底图是否有颜色来判断是否显示流光
    if(src_color.a >= 1.0) {
        gl_FragColor = src_color+src_color1;
    }
    else {
        gl_FragColor = src_color;
    }
}

}%

应该是和这个u_time有关系吧,你这个u_startPos: { value: -0.6 }u_fluxaySpeed: { value: 1.0 }那么u_time到1.6时就是刚好到最左边,你这时候如果u_time重新设置成0那么就又会从右往左
总结就是:u_time越大越往左,来回应该是 0->1.6->0;那么单向就是 0->1.6 这里直接设置成0 0->1.6

你需要改的是设置u_time属性那里,你看看那里有setProperty(“u_time”,时间)