precision highp float; uniform sampler2D uParticlesA; uniform sampler2D uParticlesB; uniform vec4 uTouchPoint; varying vec2 fUV; void main() { vec4 particleAData = texture2D(uParticlesA, fUV); vec2 normalizedPosition = particleAData.xy - uTouchPoint.xy; float x = (normalizedPosition.x * normalizedPosition.x) / (uTouchPoint.z * uTouchPoint.z); float y = (normalizedPosition.y * normalizedPosition.y) / (uTouchPoint.w * uTouchPoint.w); if ((x + y) <= 1.0) { particleAData.w = distance(particleAData.xy, uTouchPoint.xy); particleAData.z = atan(particleAData.y - uTouchPoint.y, particleAData.x - uTouchPoint.x); } gl_FragColor = particleAData; }