{
  "name": "Roulette (H-Scroll)",
  "curve": "Quartic Out",
  "type": "fixed",
  "duration": 1.5,
  "passes": [
    {
      "name": " h scroll",
      "inputs": [
        "default"
      ],
      "glsl": "precision highp float;

varying vec2 sourceTextureCoordinate;
uniform float progress; // normalized 0-1

const int SAMPLES = 25;

vec4 dirBlur(vec2 uv, vec2 dir){
  vec3 acc = vec3(0.0);
  float delta = 2.0 / float(SAMPLES);
  for (int i  = 0; i <  SAMPLES; ++i){
    float t = float(i) * delta - 1.0;
    vec2 sampleUV = fract(uv + dir * t);
    acc += sampleInput(sampleUV).rgb;
  }
  return vec4(acc/float(SAMPLES),1.0);
}

// effect uniforms
void main() {
  vec2 uv = sourceTextureCoordinate;
  float t = clamp(progress, 0.0, 1.0);

  float shiftX = t * 6.0;
  uv = fract(uv + vec2(shiftX, 0.0));

  float blurCurve = 1.0 - abs(progress - 0.5) * 2.0;
  blurCurve = clamp(blurCurve, 0.0,1.0);

  float r = radians(0.0);
  vec2 dir = vec2(cos(r),sin(r)) * (0.1 * blurCurve);


  vec4 color = dirBlur(uv,dir);

  gl_FragColor = toOutputFormat(color);
}
",
      "uniforms": {}
    }
  ]
}
