ffcreator
Version:
FFCreator is a lightweight and flexible short video production library
56 lines (44 loc) • 1.38 kB
JavaScript
'use strict';
/**
* Fluidly - Simulate flip book switching effect
*
* @object
*/
module.exports = {
name: 'Fluidly',
paramsTypes: {},
defaultParams: {},
glsl: `
vec2 accel = vec2(0.01);
vec2 mirror(vec2 v) {
vec2 m = mod(v, 2.0);
return mix(m, 2.0 - m, step(1.0, m));
}
float tri(float p) {
return mix(p, 1.0 - p, step(0.5, p))*2.0;
}
vec4 transition (vec2 uv) {
vec2 iResolution = vec2(1.0);
float iTime = progress;
vec2 vuv1 = uv - 0.5;
vuv1 *= vec2(1.,iResolution.y/iResolution.x);
vuv1 += 0.5;
float p = pow(min(cos(PI * (mod(iTime,2.)-1.) / 2.), 1. - abs(mod(iTime,2.) - 1.) ), 1. );
float delayValue = p*7. - uv.y*2. + uv.x - 2.0 ;
delayValue = clamp(delayValue,0.,1.);
vec2 acc = vec2(0.5,2.);
vec2 translateValue = p + delayValue * acc;
vec2 translateValue1 = vec2(-0.5,1.)* translateValue;
vec2 translateValue2 = vec2(-0.5,1.) * (translateValue - 1.0 - acc);
vec2 w = sin( sin(iTime)*vec2(0,0.3) + uv*vec2(0,4.)) * vec2(0, 0.5);
vec2 xy = w*(tri(p)*0.5 + tri(delayValue)*0.5);
vec2 uv1 = vuv1 + translateValue1 + xy;
vec2 uv2 = vuv1 + translateValue2 + xy;
vec4 t0 = getFromColor(mirror(uv1));
vec4 t1 = getToColor(mirror(uv2));
return mix(t0, t1, delayValue);
}
`,
author: 'https://www.shadertoy.com/view/wsjGWW',
};