setUniform 时候传的参数 time/10.0f 改成 modf(time,10.0f)对取值做一下约束是不是也行?
这个我没事,在引擎里面 有更新time的地方,他会更新4个time值,你选一个不常用的, 直接time(float) - time(int)得到小数部分,然后 * 0.3就是fract(CC_Time[1]*.3)的值, 这种做法设置好iResolution的值,你会看到全屏幕中加了流光shader的地方是一个整体一样,从屏幕左下角的shader空间到又上交的空间, 按minggo的做法就是每个空间都会有一个单独的流光效果互相不影响,你试试
发一个更简单一点的
uniform float act_time;需要自己传过去是一个时间0-1
varying vec2 v_texCoord;
uniform float act_time;
void main(void)
{
float time = act_time*3.5;
float y = time-pow(v_texCoord.x,1.0)2.0;
float dis = abs(y - v_texCoord.y);
float dis1 = abs(y-0.2 - v_texCoord.y);
vec4 color1 = texture2D(CC_Texture0, v_texCoord);
if((dis1<0.05||dis<0.1)&&color1.a!=0.0&&color1.g>0.3)
{
gl_FragColor = color12.5;
}else
{
gl_FragColor= color1;
}
}
1赞
请问有什么好的SHADER的书籍或者新手教程可以学习吗?