precision mediump float; uniform sampler2D u_image; // our texture uniform float time; uniform vec2 u_mouse; float frequency=30.0; float amplitude=0.01; float speed=0.01; float divisoresX=600.0; float divisoresY=300.0; uniform lowp float pixelWidth; uniform lowp float pixelHeight; uniform mediump float dotsx; uniform mediump float dotsy; // the texCoords passed in from the vertex shader. varying vec2 v_texCoord; varying mediump vec2 vTex; void main() { float distortionX= v_texCoord.x + sin(v_texCoord.y*frequency + time*speed)*amplitude * 1.0; float distortionY= v_texCoord.y + sin(v_texCoord.x*frequency + time*speed)*amplitude * 1.0; //float distortionX= v_texCoord.x + (v_texCoord.x*frequency) + (time*speed*amplitude); //float distortionY= v_texCoord.y + (v_texCoord.y*frequency) + (time*speed*amplitude); // Mouse parallax vec2 parallax=u_mouse*0.01; vec2 distortedPosition=vec2(distortionX, distortionY); vec4 color = texture2D(u_image, distortedPosition+parallax); float entro=0.0; if(mod((distortionX),(1.0/divisoresX)*5.0)>1.0/divisoresX ){ color= vec4(0,0,0,0.2); entro=1.0; gl_FragColor = color; } else if(mod((distortionY),(1.0/divisoresY)*4.0)>1.0/divisoresY){ color= vec4(0,0,0,0.2); entro=1.0; gl_FragColor = color; }else if(entro==0.0 && color.w > 0.1){ color=vec4(color.x,color.y,color.z,0.04); gl_FragColor = color; } //l_FragColor = color; }