uniform float tt; uniform vec2 radius; const float PI = 3.1415926; vec4 simple() { vec2 vectorFromCenter = vec2(gl_TexCoord[0]) - radius; float distanceFromCenter = length(vectorFromCenter); float ringSize = 3.0; float ringWidth = PI * ringSize; // 9.42 float ringsThatFit = floor(radius.x / ringWidth); float offset = ((ringsThatFit * PI) * tt); float y = sin((distanceFromCenter / ringSize)-offset) * 1.5; float maxLength = (ringsThatFit * ringWidth); float currentOffset = maxLength * tt; float b = smoothstep(radius.x, radius.x - (radius.x * 0.5), distanceFromCenter); float inner = currentOffset; y = distanceFromCenter <= inner ? 0.0 : y; // 2 rings.. float outer = ((2.0*2.0) * ringWidth) + currentOffset; y = distanceFromCenter >= outer ? 0.0 : y; return vec4(1, 0, 0, 1) * vec4(y) * vec4(b) * gl_Color; } void main() { // gl_FragColor = gl_FrontColor; gl_FragColor = simple(); }