gl-transitions 1.43.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/gl-transitions.js +1 -1
- package/gl-transitions.json +1 -1
- package/index.js +1 -1
- package/package.json +12 -2
- package/transitions/AdvancedMosaic.glsl +18 -0
- package/transitions/BlockDissolve.glsl +13 -0
- package/transitions/BookFlip.glsl +29 -0
- package/transitions/BowTieWithParameter.glsl +70 -0
- package/transitions/DefocusBlur.glsl +43 -0
- package/transitions/DirectionalScaled.glsl +31 -0
- package/transitions/EdgeTransition.glsl +47 -0
- package/transitions/FilmBurn.glsl +59 -0
- package/transitions/Fold.glsl +9 -0
- package/transitions/GlitchDisplace.glsl +11 -7
- package/transitions/HSVfade.glsl +26 -0
- package/transitions/HorizontalClose.glsl +13 -0
- package/transitions/HorizontalOpen.glsl +15 -0
- package/transitions/LeftRight.glsl +25 -0
- package/transitions/Overexposure.glsl +21 -0
- package/transitions/PuzzleRight.glsl +54 -0
- package/transitions/Rectangle.glsl +26 -0
- package/transitions/RectangleCrop.glsl +26 -0
- package/transitions/Rolls.glsl +37 -0
- package/transitions/RotateScaleVanish.glsl +36 -0
- package/transitions/SimpleFlip.glsl +11 -0
- package/transitions/SimpleZoomOut.glsl +19 -0
- package/transitions/Slides.glsl +37 -0
- package/transitions/StaticFade.glsl +44 -0
- package/transitions/TVStatic.glsl +25 -0
- package/transitions/TilesWave.glsl +59 -0
- package/transitions/TopBottom.glsl +24 -0
- package/transitions/VerticalClose.glsl +13 -0
- package/transitions/VerticalOpen.glsl +14 -0
- package/transitions/ZoomLeftWipe.glsl +33 -0
- package/transitions/ZoomRigthWipe.glsl +33 -0
- package/transitions/coord-from-in.glsl +15 -0
- package/transitions/directional-easing.glsl +15 -0
- package/transitions/directionalwarp.glsl +1 -1
- package/transitions/dissolve.glsl +53 -0
- package/transitions/fadecolor.glsl +1 -1
- package/transitions/mosaic_transition.glsl +16 -0
- package/transitions/perlin.glsl +9 -9
- package/transitions/pixelize.glsl +4 -2
- package/transitions/powerKaleido.glsl +54 -0
- package/transitions/randomNoisex.glsl +16 -0
- package/transitions/rotateTransition.glsl +19 -0
- package/transitions/scale-in.glsl +15 -0
- package/transitions/static_wipe.glsl +34 -0
- package/transitions/tangentMotionBlur.glsl +139 -0
- package/transitions/x_axis_translation.glsl +18 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: chenkai
|
|
4
|
+
// ported from https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/671116/
|
|
5
|
+
|
|
6
|
+
float rand (vec2 co) {
|
|
7
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// motion blur for texture from
|
|
11
|
+
vec4 motionBlurFrom(vec2 _st, vec2 speed) {
|
|
12
|
+
vec2 texCoord = _st.xy / vec2(1.0).xy;
|
|
13
|
+
vec3 color = vec3(0.0);
|
|
14
|
+
float total = 0.0;
|
|
15
|
+
float offset = rand(_st);
|
|
16
|
+
for (float t = 0.0; t <= 20.0; t++) {
|
|
17
|
+
float percent = (t + offset) / 20.0;
|
|
18
|
+
float weight = 4.0 * (percent - percent * percent);
|
|
19
|
+
vec2 newuv = texCoord + speed * percent;
|
|
20
|
+
newuv = fract(newuv);
|
|
21
|
+
color += getFromColor(newuv).rgb * weight;
|
|
22
|
+
total += weight;
|
|
23
|
+
}
|
|
24
|
+
return vec4(color / total, 1.0);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// motion blur for texture to
|
|
28
|
+
vec4 motionBlurTo(vec2 _st, vec2 speed) {
|
|
29
|
+
vec2 texCoord = _st.xy / vec2(1.0).xy;
|
|
30
|
+
vec3 color = vec3(0.0);
|
|
31
|
+
float total = 0.0;
|
|
32
|
+
float offset = rand(_st);
|
|
33
|
+
for (float t = 0.0; t <= 20.0; t++) {
|
|
34
|
+
float percent = (t + offset) / 20.0;
|
|
35
|
+
float weight = 4.0 * (percent - percent * percent);
|
|
36
|
+
vec2 newuv = texCoord + speed * percent;
|
|
37
|
+
newuv = fract(newuv);
|
|
38
|
+
color += getToColor(newuv).rgb * weight;
|
|
39
|
+
total += weight;
|
|
40
|
+
}
|
|
41
|
+
return vec4(color / total, 1.0);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// bezier in gpu
|
|
46
|
+
float A(float aA1, float aA2) {
|
|
47
|
+
return 1.0 - 3.0 * aA2 + 3.0 * aA1;
|
|
48
|
+
}
|
|
49
|
+
float B(float aA1, float aA2) {
|
|
50
|
+
return 3.0 * aA2 - 6.0 * aA1;
|
|
51
|
+
}
|
|
52
|
+
float C(float aA1) {
|
|
53
|
+
return 3.0 * aA1;
|
|
54
|
+
}
|
|
55
|
+
float GetSlope(float aT, float aA1, float aA2) {
|
|
56
|
+
return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
|
|
57
|
+
}
|
|
58
|
+
float CalcBezier(float aT, float aA1, float aA2) {
|
|
59
|
+
return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;
|
|
60
|
+
}
|
|
61
|
+
float GetTForX(float aX, float mX1, float mX2) {
|
|
62
|
+
// iteration to solve
|
|
63
|
+
float aGuessT = aX;
|
|
64
|
+
for (int i = 0; i < 4; ++i) {
|
|
65
|
+
float currentSlope = GetSlope(aGuessT, mX1, mX2);
|
|
66
|
+
if (currentSlope == 0.0) return aGuessT;
|
|
67
|
+
float currentX = CalcBezier(aGuessT, mX1, mX2) - aX;
|
|
68
|
+
aGuessT -= currentX / currentSlope;
|
|
69
|
+
}
|
|
70
|
+
return aGuessT;
|
|
71
|
+
}
|
|
72
|
+
float KeySpline(float aX, float mX1, float mY1, float mX2, float mY2) {
|
|
73
|
+
if (mX1 == mY1 && mX2 == mY2) return aX; // linear
|
|
74
|
+
return CalcBezier(GetTForX(aX, mX1, mX2), mY1, mY2); // x to t, t to y
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// norm distribution
|
|
78
|
+
float normpdf(float x) {
|
|
79
|
+
return exp(-20.*pow(x-.5,2.));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
vec2 rotateUv(vec2 uv, float angle, vec2 anchor, float zDirection) {
|
|
83
|
+
uv = uv - anchor; // anchor to origin
|
|
84
|
+
float s = sin(angle);
|
|
85
|
+
float c = cos(angle);
|
|
86
|
+
mat2 m = mat2(c, -s, s, c);
|
|
87
|
+
uv = m * uv;
|
|
88
|
+
uv += anchor; // anchor back
|
|
89
|
+
return uv;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
vec4 transition (vec2 uv) {
|
|
95
|
+
|
|
96
|
+
vec2 iResolution = vec2(100.0, 100.0); // screen size
|
|
97
|
+
|
|
98
|
+
vec2 myst = uv;
|
|
99
|
+
float ratio = iResolution.x / iResolution.y; // screen ratio
|
|
100
|
+
float animationTime = progress; //getAnimationTime();
|
|
101
|
+
float easingTime = KeySpline(animationTime, .68,.01,.17,.98);
|
|
102
|
+
float blur = normpdf(easingTime);
|
|
103
|
+
float r = 0.;
|
|
104
|
+
float rotation = 180./180.*3.14159;
|
|
105
|
+
if (easingTime <= .5) {
|
|
106
|
+
r = rotation * easingTime;
|
|
107
|
+
} else {
|
|
108
|
+
r = -rotation + rotation * easingTime;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// rotation for current frame
|
|
112
|
+
vec2 mystCurrent = myst;
|
|
113
|
+
mystCurrent.y *= 1./ratio;
|
|
114
|
+
mystCurrent = rotateUv(mystCurrent, r, vec2(1., 0.), -1.);
|
|
115
|
+
mystCurrent.y *= ratio;
|
|
116
|
+
|
|
117
|
+
// frame timeInterval by fps=30
|
|
118
|
+
float timeInterval = 0.0167*2.0;
|
|
119
|
+
if (easingTime <= .5) {
|
|
120
|
+
r = rotation * (easingTime+timeInterval);
|
|
121
|
+
} else {
|
|
122
|
+
r = -rotation + rotation * (easingTime+timeInterval);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// rotation for next frame
|
|
126
|
+
vec2 mystNext = myst;
|
|
127
|
+
mystNext.y *= 1./ratio;
|
|
128
|
+
mystNext = rotateUv(mystNext, r, vec2(1., 0.), -1.);
|
|
129
|
+
mystNext.y *= ratio;
|
|
130
|
+
|
|
131
|
+
// get speed at tagent direction
|
|
132
|
+
vec2 speed = (mystNext - mystCurrent) / timeInterval * blur * 0.5;
|
|
133
|
+
if (easingTime <= .5) {
|
|
134
|
+
return motionBlurFrom(mystCurrent, speed);
|
|
135
|
+
} else {
|
|
136
|
+
return motionBlurTo(mystCurrent, speed);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Author:lizhongjian
|
|
2
|
+
// License: MIT
|
|
3
|
+
|
|
4
|
+
vec4 transition (vec2 uv) {
|
|
5
|
+
vec2 newUV = uv;
|
|
6
|
+
newUV.x -= progress;
|
|
7
|
+
if(uv.x >= progress)
|
|
8
|
+
{
|
|
9
|
+
return getFromColor(newUV);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
return mix(
|
|
14
|
+
getFromColor(uv),
|
|
15
|
+
getToColor(uv),
|
|
16
|
+
progress
|
|
17
|
+
);
|
|
18
|
+
}
|