     //float tilt = 0.0;
 
     float pixPerPano = iResolution.x / (iScreenPanoEnd - iScreenPanoStart);
-    float pixPerTunnel = iResolution.x / (iScreenTunnelEnd - iScreenTunnelStart);
-    float tunnelPerPix = (iScreenTunnelEnd - iScreenTunnelStart) / iResolution.x;
+    float startX = (iEffectPanoStart - iScreenPanoStart) * pixPerPano;
+    float endX = (iEffectPanoEnd - iScreenPanoStart) * pixPerPano;
 
-
-    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;
+    vec2 fragWorldPos = gl_FragCoord.xy / iResolution * iScreenWorldSize;
 
     float c = 0.0;
 

      // 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);
      // worm 3
      c += clamp(worm(iPos.xy + fragWorldPos - vec2(iSize.y)), 0.0, 1.0);
    }

    gl_FragColor = vec4(vec3(1.0), c);

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;

