void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
  // Normalized pixel coordinates (from 0 to 1)
  vec2 uv = fragCoord/iResolution.xy-0.5;

  uv.x*= iResolution.x/iResolution.y;

 float Bcorr[4];
 
 Bcorr[0] = 0.02;
 Bcorr[1] = 0.1;
 Bcorr[2] = 0.05;
 
 float Rcorr[4];
 
 Rcorr[0] = 0.02;
 Rcorr[1] = 0.02;
 Rcorr[2] = 0.15;

 float Gcorr[4];
 
 Gcorr[0] = 0.07;
 Gcorr[1] = 0.02;
 Gcorr[2] = 0.05;

  int calcbackframes = int(mod(float(iFrame),200.))+1;
  float backframes = 0.0;
   
  vec3 rgb = vec3( 0.0 , 0.0 , 0.0 );;
    
  float xadd1=0.79;
  float yadd1=0.4;
  float xadd2=1.13;
  float yadd2=-0.91;
   
  int maxbobs = 2;

  float Radius = 0.12;
  float Smoothamount=0.05;
  float Delta = Radius-Smoothamount;
  
  
  for (int framecounter=1 ; framecounter<=calcbackframes ; framecounter++){
  
    float framesinx1 = -backframes*0.038;
    float framesinx2 = -backframes*0.11;
    
    float framesiny1 = backframes*0.085;
    float framesiny2 = backframes*0.06;
    
    backframes++;
          
     for (int licz=0 ; licz<=maxbobs ; ++licz){
    
      vec2 pos = vec2(uv.x+sin(framesinx1)*0.39+sin(framesinx2)*0.39,uv.y+sin(framesiny1)*0.20+sin(framesiny2)*0.20);
     
      framesinx1+=xadd1;
      framesinx2+=xadd2;
    
      framesiny1+=yadd1;
      framesiny2+=yadd2;   
    
      float samplepixel = smoothstep(Radius,Delta,length(pos));
  
      rgb += vec3(samplepixel*Rcorr[licz],samplepixel*Gcorr[licz],samplepixel*Bcorr[licz]);
  
      }
    }
  

    // Output to screen
    fragColor = vec4(rgb , 1.0); 
}
