   frag: "#ifdef GL_ES\nprecision highp float;\n#define GLSLIFY 1\n#endif\n\nuniform float uTime, uDir;\nuniform sampler2D uTexture;\n\nvarying vec2 uv;\n\n#define t uTime\n\nvoid main() {\n  float ux = uDir < 0. ? 1. - uv.x : uv.x;\n  if (ux > uTime) discard;\n\n  float gradient = 1. - t;\n  float x = ux - (t - gradient);\n  float alpha = 1. - x / gradient;\n  vec4 color = texture2D(uTexture, uv);\n  gl_FragColor = vec4(color.rgb, alpha);\n}",
              uniforms: { uDir: e.prop("dir"), uTime: e.prop("