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.
Files changed (51) hide show
  1. package/LICENSE +25 -0
  2. package/gl-transitions.js +1 -1
  3. package/gl-transitions.json +1 -1
  4. package/index.js +1 -1
  5. package/package.json +12 -2
  6. package/transitions/AdvancedMosaic.glsl +18 -0
  7. package/transitions/BlockDissolve.glsl +13 -0
  8. package/transitions/BookFlip.glsl +29 -0
  9. package/transitions/BowTieWithParameter.glsl +70 -0
  10. package/transitions/DefocusBlur.glsl +43 -0
  11. package/transitions/DirectionalScaled.glsl +31 -0
  12. package/transitions/EdgeTransition.glsl +47 -0
  13. package/transitions/FilmBurn.glsl +59 -0
  14. package/transitions/Fold.glsl +9 -0
  15. package/transitions/GlitchDisplace.glsl +11 -7
  16. package/transitions/HSVfade.glsl +26 -0
  17. package/transitions/HorizontalClose.glsl +13 -0
  18. package/transitions/HorizontalOpen.glsl +15 -0
  19. package/transitions/LeftRight.glsl +25 -0
  20. package/transitions/Overexposure.glsl +21 -0
  21. package/transitions/PuzzleRight.glsl +54 -0
  22. package/transitions/Rectangle.glsl +26 -0
  23. package/transitions/RectangleCrop.glsl +26 -0
  24. package/transitions/Rolls.glsl +37 -0
  25. package/transitions/RotateScaleVanish.glsl +36 -0
  26. package/transitions/SimpleFlip.glsl +11 -0
  27. package/transitions/SimpleZoomOut.glsl +19 -0
  28. package/transitions/Slides.glsl +37 -0
  29. package/transitions/StaticFade.glsl +44 -0
  30. package/transitions/TVStatic.glsl +25 -0
  31. package/transitions/TilesWave.glsl +59 -0
  32. package/transitions/TopBottom.glsl +24 -0
  33. package/transitions/VerticalClose.glsl +13 -0
  34. package/transitions/VerticalOpen.glsl +14 -0
  35. package/transitions/ZoomLeftWipe.glsl +33 -0
  36. package/transitions/ZoomRigthWipe.glsl +33 -0
  37. package/transitions/coord-from-in.glsl +15 -0
  38. package/transitions/directional-easing.glsl +15 -0
  39. package/transitions/directionalwarp.glsl +1 -1
  40. package/transitions/dissolve.glsl +53 -0
  41. package/transitions/fadecolor.glsl +1 -1
  42. package/transitions/mosaic_transition.glsl +16 -0
  43. package/transitions/perlin.glsl +9 -9
  44. package/transitions/pixelize.glsl +4 -2
  45. package/transitions/powerKaleido.glsl +54 -0
  46. package/transitions/randomNoisex.glsl +16 -0
  47. package/transitions/rotateTransition.glsl +19 -0
  48. package/transitions/scale-in.glsl +15 -0
  49. package/transitions/static_wipe.glsl +34 -0
  50. package/transitions/tangentMotionBlur.glsl +139 -0
  51. 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
+ }