Distort the UV with barrel or pincushion effect. Adapted from this shadertoy.
npm i glsl-barrel-pincushion -S
strength > 0 for barrel distortion, strength < 0 for pincushion.
uniform float uTime;
#pragma glslify: barrelPincushion = require(glsl-barrel-pincushion)
#pragma glslify: rectangle = require(glsl-2d-primitives/rectangle)
attribute vec2 vUv;
void main() {
vec2 st = barrelPincushion(vUv, sin(uTime));
float shape = rectangle(st, vec2(0.5));
gl_FragColor = vec4(color, shape);
}
MIT. See LICENSE for details.