       // worm 1
       c += clamp(worm(iPos.xy + fragWorldPos), 0.0, 1.0);
       // worm 2
-      c += clamp(worm(iPos.xy + fragWorldPos + vec2(iSize.y)), 0.0, 1.0);
+      c += clamp(worm(iPos.xy + fragWorldPos + iSize.xy), 0.0, 1.0);
       // worm 3
-      c += clamp(worm(iPos.xy + fragWorldPos - vec2(iSize.y)), 0.0, 1.0);
+      c += clamp(worm(iPos.xy + fragWorldPos - iSize.xy), 0.0, 1.0);
     }
 
     gl_FragColor = vec4(vec3(1.0), c);

    //float tilt = 0.0;

    float pixPerPano = iResolution.x / (iScreenPanoEnd - iScreenPanoStart);
    float pixPerTunnel = iResolution.x / (iScreenTunnelEnd - iScreenTunnelStart);
    float tunnelPerPix = (iScreenTunnelEnd - iScreenTunnelStart) / iResolution.x;


    float panoStartX = (iEffectPanoStart - iScreenPanoStart) * pixPerPano;
    float tunnelStartX = (iEffectTunnelStart - iScreenTunnelStart) * pixPerTunnel;
    float startX = max(panoStartX, tunnelStartX);

    float tunnelEndX = (iEffectTunnelEnd - iScreenTunnelStart) * pixPerTunnel;
    float panoEndX = (iEffectPanoEnd - iScreenPanoStart) * pixPerPano;
    float endX = min(panoEndX, tunnelEndX);

    vec2 fragWorldPos = iScreenTunnelStart + gl_FragCoord.xy * tunnelPerPix;

    float c = 0.0;


precision highp float;
uniform vec3 iPos;
uniform vec3 iSize;
uniform float iGain;
uniform vec2 iResolution;
uniform float iScreenPanoStart;
uniform float iScreenPanoEnd;
uniform float iEffectPanoStart;
uniform float iEffectPanoEnd;
uniform vec2 iScreenWorldSize;

float worm(vec2 pos){ //}, float tiltFactor){
    // sine-wave based baseline (causing the horizontal waviness)
    float xLine = sin(pos.x*0.1)*0.1;
    // add nother wave for some more randomness
    xLine += sin(pos.x+0.13)*0.21;
    xLine += sin(pos.x+1.521)*0.31;
    // tilt
    //xLine += pos.x*tiltFactor;

