uniform mat4 u_Color; varying vec2 v_TexCoord; varying vec2 v_TexCoord2; varying vec2 v_TexCoord3; varying vec2 v_Position; uniform sampler2D u_Tex0; uniform sampler2D u_Tex1; uniform float u_Time; uniform vec2 u_Resolution; vec2 direction = vec2(0.9,0.3); float speed = 0.2; float pressure = 1.0; float zoom = 3.0; float r = 0.0; float g = 1.0; float b = 0.0; float mode = 1.0; void main() { gl_FragColor = texture2D(u_Tex0, v_TexCoord); vec2 offset = (v_TexCoord + (direction * u_Time * speed)) / zoom; vec3 bgcol = texture2D(u_Tex0, v_TexCoord).xyz; vec3 fogcol = texture2D(u_Tex1, offset).xyz; vec3 col = bgcol + fogcol*pressure; vec4 color = texture2D(u_Tex0, v_TexCoord); vec4 texcolor2 = texture2D(u_Tex0, v_TexCoord3); if(gl_FragColor.a < 0.01) { if(texcolor2.a > 0.01) { gl_FragColor = vec4(r, g, b, mode); } else { discard; } } gl_FragColor = mix(gl_FragColor, vec4(col, color.a), 0.5); vec4 texcolor = texture2D(u_Tex0, v_TexCoord2); if(texcolor.r > 0.9) { gl_FragColor *= texcolor.g > 0.9 ? u_Color[0] : u_Color[1]; } else if(texcolor.g > 0.9) { gl_FragColor *= u_Color[2]; } else if(texcolor.b > 0.9) { gl_FragColor *= u_Color[3]; } if(gl_FragColor.a < 0.01) discard; }