gl-transitions 1.71.0 → 1.72.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/README.md +38 -6
- package/gl-transitions.js +1 -1
- package/gl-transitions.json +1 -1
- package/index.d.ts +45 -0
- package/index.js +1 -1
- package/package.json +6 -3
- package/sksl/AdvancedMosaic.sksl +34 -0
- package/sksl/BlockDissolve.sksl +29 -0
- package/sksl/BookFlip.sksl +50 -0
- package/sksl/Bounce.sksl +48 -0
- package/sksl/BowTieHorizontal.sksl +136 -0
- package/sksl/BowTieVertical.sksl +130 -0
- package/sksl/BowTieWithParameter.sksl +88 -0
- package/sksl/Box.sksl +47 -0
- package/sksl/ButterflyWaveScrawler.sksl +48 -0
- package/sksl/CircleCrop.sksl +32 -0
- package/sksl/ColourDistance.sksl +32 -0
- package/sksl/CrazyParametricFun.sksl +34 -0
- package/sksl/CrossZoom.sksl +76 -0
- package/sksl/DefocusBlur.sksl +56 -0
- package/sksl/Directional.sksl +31 -0
- package/sksl/DirectionalScaled.sksl +44 -0
- package/sksl/DoomScreenTransition.sksl +65 -0
- package/sksl/Dreamy.sksl +28 -0
- package/sksl/DreamyZoom.sksl +46 -0
- package/sksl/Drop_Zone_Flicker.sksl +170 -0
- package/sksl/EdgeTransition.sksl +64 -0
- package/sksl/FilmBurn.sksl +75 -0
- package/sksl/Fold.sksl +25 -0
- package/sksl/GlitchDisplace.sksl +90 -0
- package/sksl/GlitchMemories.sksl +31 -0
- package/sksl/GridFlip.sksl +89 -0
- package/sksl/HSVfade.sksl +40 -0
- package/sksl/HorizontalClose.sksl +30 -0
- package/sksl/HorizontalOpen.sksl +32 -0
- package/sksl/InvertedPageCurl.sksl +207 -0
- package/sksl/LeftRight.sksl +42 -0
- package/sksl/LinearBlur.sksl +44 -0
- package/sksl/Mosaic.sksl +55 -0
- package/sksl/Overexposure.sksl +38 -0
- package/sksl/PolkaDotsCurtain.sksl +29 -0
- package/sksl/PuzzleRight.sksl +70 -0
- package/sksl/Radial.sksl +32 -0
- package/sksl/Rectangle.sksl +42 -0
- package/sksl/RectangleCrop.sksl +43 -0
- package/sksl/Revolve_Left.sksl +110 -0
- package/sksl/Rolls.sksl +48 -0
- package/sksl/RotateScaleVanish.sksl +49 -0
- package/sksl/SimpleFlip.sksl +27 -0
- package/sksl/SimpleZoom.sksl +33 -0
- package/sksl/SimpleZoomOut.sksl +35 -0
- package/sksl/Slides.sksl +48 -0
- package/sksl/StarWipe.sksl +62 -0
- package/sksl/StaticFade.sksl +61 -0
- package/sksl/StereoViewer.sksl +190 -0
- package/sksl/StripDatamoshGlitch.sksl +201 -0
- package/sksl/Swirl.sksl +46 -0
- package/sksl/TVStatic.sksl +41 -0
- package/sksl/TilesWave.sksl +75 -0
- package/sksl/TopBottom.sksl +41 -0
- package/sksl/VerticalClose.sksl +30 -0
- package/sksl/VerticalOpen.sksl +31 -0
- package/sksl/WaterDrop.sksl +35 -0
- package/sksl/ZoomInCircles.sksl +53 -0
- package/sksl/ZoomLeftWipe.sksl +49 -0
- package/sksl/ZoomRigthWipe.sksl +49 -0
- package/sksl/angular.sksl +36 -0
- package/sksl/burn.sksl +28 -0
- package/sksl/burn0.sksl +65 -0
- package/sksl/cannabisleaf.sksl +30 -0
- package/sksl/chessboard.sksl +41 -0
- package/sksl/circle.sksl +37 -0
- package/sksl/circleopen.sksl +32 -0
- package/sksl/colorphase.sksl +29 -0
- package/sksl/coord-from-in.sksl +32 -0
- package/sksl/crosshatch.sksl +32 -0
- package/sksl/crosswarp.sksl +25 -0
- package/sksl/cube.sksl +82 -0
- package/sksl/directional-easing.sksl +32 -0
- package/sksl/directionalwarp.sksl +33 -0
- package/sksl/directionalwipe.sksl +35 -0
- package/sksl/displacement.sksl +37 -0
- package/sksl/dissolve.sksl +68 -0
- package/sksl/doorway.sksl +68 -0
- package/sksl/fade.sksl +27 -0
- package/sksl/fadecolor.sksl +29 -0
- package/sksl/fadegrayscale.sksl +34 -0
- package/sksl/flyeye.sksl +35 -0
- package/sksl/fragment.sksl +66 -0
- package/sksl/heart.sksl +33 -0
- package/sksl/hexagonalize.sksl +91 -0
- package/sksl/kaleidoscope.sksl +39 -0
- package/sksl/luma.sksl +30 -0
- package/sksl/luminance_melt.sksl +109 -0
- package/sksl/morph.sksl +34 -0
- package/sksl/mosaic_transition.sksl +33 -0
- package/sksl/multiply_blend.sksl +33 -0
- package/sksl/old_tv_lost_signal.sksl +65 -0
- package/sksl/parametric_glitch.sksl +40 -0
- package/sksl/perlin.sksl +75 -0
- package/sksl/pinwheel.sksl +33 -0
- package/sksl/pixelize.sksl +31 -0
- package/sksl/polar_function.sksl +35 -0
- package/sksl/powerKaleido.sksl +70 -0
- package/sksl/randomNoisex.sksl +29 -0
- package/sksl/randomsquares.sksl +33 -0
- package/sksl/ripple.sksl +34 -0
- package/sksl/rotateTransition.sksl +34 -0
- package/sksl/rotate_scale_fade.sksl +50 -0
- package/sksl/scale-in.sksl +32 -0
- package/sksl/splitSlideInHorizontal.sksl +39 -0
- package/sksl/splitSlideInOutHorizontal.sksl +36 -0
- package/sksl/splitSlideInOutVertical.sksl +36 -0
- package/sksl/splitSlideInVertical.sksl +37 -0
- package/sksl/splitSlideOutHorizontal.sksl +35 -0
- package/sksl/splitSlideOutVertical.sksl +35 -0
- package/sksl/squareswire.sksl +39 -0
- package/sksl/squeeze.sksl +36 -0
- package/sksl/static_wipe.sksl +50 -0
- package/sksl/swap.sksl +77 -0
- package/sksl/tangentMotionBlur.sksl +145 -0
- package/sksl/undulatingBurnOut.sksl +65 -0
- package/sksl/wind.sksl +38 -0
- package/sksl/windowblinds.sksl +32 -0
- package/sksl/windowslice.sksl +29 -0
- package/sksl/wipeDown.sksl +26 -0
- package/sksl/wipeLeft.sksl +26 -0
- package/sksl/wipeRight.sksl +26 -0
- package/sksl/wipeUp.sksl +26 -0
- package/sksl/x_axis_translation.sksl +35 -0
- package/sksl/zoomInOut.sksl +34 -0
- package/transitions/AdvancedMosaic.glsl +2 -0
- package/transitions/BlockDissolve.glsl +2 -0
- package/transitions/BookFlip.glsl +9 -2
- package/transitions/Bounce.glsl +5 -0
- package/transitions/BowTieHorizontal.glsl +2 -0
- package/transitions/BowTieVertical.glsl +115 -113
- package/transitions/BowTieWithParameter.glsl +3 -0
- package/transitions/Box.glsl +3 -0
- package/transitions/ButterflyWaveScrawler.glsl +2 -0
- package/transitions/CircleCrop.glsl +5 -3
- package/transitions/ColourDistance.glsl +2 -0
- package/transitions/CrazyParametricFun.glsl +2 -0
- package/transitions/CrossZoom.glsl +3 -0
- package/transitions/DefocusBlur.glsl +3 -0
- package/transitions/Directional.glsl +3 -0
- package/transitions/DirectionalScaled.glsl +3 -0
- package/transitions/DoomScreenTransition.glsl +2 -0
- package/transitions/Dreamy.glsl +2 -0
- package/transitions/DreamyZoom.glsl +2 -0
- package/transitions/Drop_Zone_Flicker.glsl +2 -0
- package/transitions/EdgeTransition.glsl +2 -0
- package/transitions/FilmBurn.glsl +5 -2
- package/transitions/Fold.glsl +2 -0
- package/transitions/GlitchDisplace.glsl +2 -4
- package/transitions/GlitchMemories.glsl +2 -0
- package/transitions/GridFlip.glsl +4 -0
- package/transitions/HSVfade.glsl +2 -0
- package/transitions/HorizontalClose.glsl +2 -0
- package/transitions/HorizontalOpen.glsl +2 -0
- package/transitions/InvertedPageCurl.glsl +2 -0
- package/transitions/LeftRight.glsl +2 -0
- package/transitions/LinearBlur.glsl +3 -0
- package/transitions/Mosaic.glsl +2 -0
- package/transitions/Overexposure.glsl +3 -0
- package/transitions/PolkaDotsCurtain.glsl +3 -0
- package/transitions/PuzzleRight.glsl +2 -0
- package/transitions/Radial.glsl +2 -0
- package/transitions/Rectangle.glsl +4 -2
- package/transitions/RectangleCrop.glsl +3 -0
- package/transitions/Revolve_Left.glsl +3 -0
- package/transitions/Rolls.glsl +4 -0
- package/transitions/RotateScaleVanish.glsl +5 -0
- package/transitions/SimpleFlip.glsl +2 -0
- package/transitions/SimpleZoom.glsl +4 -2
- package/transitions/SimpleZoomOut.glsl +5 -2
- package/transitions/Slides.glsl +3 -0
- package/transitions/StarWipe.glsl +5 -0
- package/transitions/StaticFade.glsl +2 -0
- package/transitions/StereoViewer.glsl +3 -0
- package/transitions/StripDatamoshGlitch.glsl +2 -0
- package/transitions/Swirl.glsl +2 -0
- package/transitions/TVStatic.glsl +3 -0
- package/transitions/TilesWave.glsl +3 -0
- package/transitions/TopBottom.glsl +2 -0
- package/transitions/VerticalClose.glsl +2 -0
- package/transitions/VerticalOpen.glsl +2 -0
- package/transitions/WaterDrop.glsl +4 -0
- package/transitions/ZoomInCircles.glsl +3 -2
- package/transitions/ZoomLeftWipe.glsl +4 -2
- package/transitions/ZoomRigthWipe.glsl +4 -2
- package/transitions/angular.glsl +3 -0
- package/transitions/burn.glsl +3 -0
- package/transitions/burn0.glsl +3 -0
- package/transitions/cannabisleaf.glsl +2 -0
- package/transitions/chessboard.glsl +3 -0
- package/transitions/circle.glsl +4 -0
- package/transitions/circleopen.glsl +4 -0
- package/transitions/colorphase.glsl +4 -0
- package/transitions/coord-from-in.glsl +2 -0
- package/transitions/crosshatch.glsl +3 -0
- package/transitions/crosswarp.glsl +2 -0
- package/transitions/cube.glsl +4 -0
- package/transitions/directional-easing.glsl +3 -0
- package/transitions/directionalwarp.glsl +4 -0
- package/transitions/directionalwipe.glsl +4 -0
- package/transitions/displacement.glsl +3 -0
- package/transitions/dissolve.glsl +4 -4
- package/transitions/doorway.glsl +4 -0
- package/transitions/fade.glsl +2 -0
- package/transitions/fadecolor.glsl +4 -0
- package/transitions/fadegrayscale.glsl +3 -0
- package/transitions/flyeye.glsl +2 -0
- package/transitions/fragment.glsl +2 -0
- package/transitions/heart.glsl +2 -0
- package/transitions/hexagonalize.glsl +3 -0
- package/transitions/kaleidoscope.glsl +2 -0
- package/transitions/luma.glsl +2 -0
- package/transitions/luminance_melt.glsl +6 -2
- package/transitions/morph.glsl +3 -0
- package/transitions/mosaic_transition.glsl +3 -0
- package/transitions/multiply_blend.glsl +2 -0
- package/transitions/old_tv_lost_signal.glsl +2 -0
- package/transitions/parametric_glitch.glsl +4 -0
- package/transitions/perlin.glsl +5 -4
- package/transitions/pinwheel.glsl +3 -0
- package/transitions/pixelize.glsl +7 -4
- package/transitions/polar_function.glsl +3 -0
- package/transitions/powerKaleido.glsl +3 -1
- package/transitions/randomNoisex.glsl +2 -0
- package/transitions/randomsquares.glsl +4 -0
- package/transitions/ripple.glsl +4 -0
- package/transitions/rotateTransition.glsl +2 -0
- package/transitions/rotate_scale_fade.glsl +6 -0
- package/transitions/scale-in.glsl +2 -0
- package/transitions/splitSlideInHorizontal.glsl +3 -0
- package/transitions/splitSlideInOutHorizontal.glsl +3 -0
- package/transitions/splitSlideInOutVertical.glsl +3 -0
- package/transitions/splitSlideInVertical.glsl +3 -0
- package/transitions/splitSlideOutHorizontal.glsl +3 -0
- package/transitions/splitSlideOutVertical.glsl +3 -0
- package/transitions/squareswire.glsl +5 -0
- package/transitions/squeeze.glsl +3 -0
- package/transitions/static_wipe.glsl +4 -0
- package/transitions/swap.glsl +4 -0
- package/transitions/tangentMotionBlur.glsl +2 -0
- package/transitions/undulatingBurnOut.glsl +5 -0
- package/transitions/wind.glsl +4 -1
- package/transitions/windowblinds.glsl +2 -0
- package/transitions/windowslice.glsl +4 -0
- package/transitions/wipeDown.glsl +2 -0
- package/transitions/wipeLeft.glsl +2 -0
- package/transitions/wipeRight.glsl +2 -0
- package/transitions/wipeUp.glsl +2 -0
- package/transitions/x_axis_translation.glsl +2 -0
- package/transitions/zoomInOut.glsl +2 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Overexposure — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Overexposure.glsl
|
|
2
|
+
// Author: Ben Zhang
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through a washed-out, overexposed white
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform float strength;
|
|
16
|
+
const float PI = 3.141592653589793;
|
|
17
|
+
|
|
18
|
+
vec4 transition (vec2 uv) {
|
|
19
|
+
vec4 from = getFromColor(uv);
|
|
20
|
+
vec4 to = getToColor(uv);
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
float from_m = 1.0 - progress + sin(PI * progress) * strength;
|
|
24
|
+
float to_m = progress + sin(PI * progress) * strength;
|
|
25
|
+
|
|
26
|
+
return vec4(
|
|
27
|
+
from.r * from.a * from_m + to.r * to.a * to_m,
|
|
28
|
+
from.g * from.a * from_m + to.g * to.a * to_m,
|
|
29
|
+
from.b * from.a * from_m + to.b * to.a * to_m,
|
|
30
|
+
mix(from.a, to.a, progress)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
half4 main(float2 _coord) {
|
|
35
|
+
vec2 _uv = _coord / _resolution;
|
|
36
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
37
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
38
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// PolkaDotsCurtain — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PolkaDotsCurtain.glsl
|
|
2
|
+
// Author: bobylito
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image appears through growing polka dots
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
const float SQRT_2 = 1.414213562373;
|
|
16
|
+
|
|
17
|
+
uniform float dots;
|
|
18
|
+
uniform vec2 center;
|
|
19
|
+
|
|
20
|
+
vec4 transition(vec2 uv) {
|
|
21
|
+
bool nextImage = distance(fract(uv * dots), vec2(0.5, 0.5)) < ( progress / distance(uv, center));
|
|
22
|
+
return nextImage ? getToColor(uv) : getFromColor(uv);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
half4 main(float2 _coord) {
|
|
26
|
+
vec2 _uv = _coord / _resolution;
|
|
27
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
28
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
29
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// PuzzleRight — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PuzzleRight.glsl
|
|
2
|
+
// Author: JustKirillS
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The image splits into a grid of tiles that flip one by one to the incoming image
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform ivec2 size;
|
|
16
|
+
uniform float pause;
|
|
17
|
+
uniform float dividerWidth;
|
|
18
|
+
|
|
19
|
+
float rand(vec2 co) {
|
|
20
|
+
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
float getDelta(vec2 p) {
|
|
24
|
+
vec2 rectangleSize = 1.0 / vec2(size);
|
|
25
|
+
vec2 rectanglePos = floor(vec2(size) * p);
|
|
26
|
+
float top = rectangleSize.y * (rectanglePos.y + 1.0);
|
|
27
|
+
float bottom = rectangleSize.y * rectanglePos.y;
|
|
28
|
+
float left = rectangleSize.x * rectanglePos.x;
|
|
29
|
+
float right = rectangleSize.x * (rectanglePos.x + 1.0);
|
|
30
|
+
float minX = min(abs(p.x - left), abs(p.x - right));
|
|
31
|
+
float minY = min(abs(p.y - top), abs(p.y - bottom));
|
|
32
|
+
return min(minX, minY);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
vec4 transition(vec2 uv) {
|
|
36
|
+
if (progress < pause) {
|
|
37
|
+
float currentProg = progress / pause;
|
|
38
|
+
float a = 1.0;
|
|
39
|
+
if (getDelta(uv) < dividerWidth) { a = 1.0 - currentProg; }
|
|
40
|
+
return mix(vec4(0.0, 0.0, 0.0, 1.0), getFromColor(uv), a);
|
|
41
|
+
} else if (progress < 1.0 - pause) {
|
|
42
|
+
if (getDelta(uv) < dividerWidth) {
|
|
43
|
+
return vec4(0.0, 0.0, 0.0, 1.0);
|
|
44
|
+
}
|
|
45
|
+
float currentProg = (progress - pause) / (1.0 - pause * 2.0);
|
|
46
|
+
vec2 rectanglePos = floor(vec2(size) * uv);
|
|
47
|
+
float r = rand(rectanglePos) - 0.1;
|
|
48
|
+
float cp = smoothstep(0.0, 1.0 - r, currentProg);
|
|
49
|
+
float rectangleSize = 1.0 / float(size.x);
|
|
50
|
+
float delta = rectanglePos.x * rectangleSize;
|
|
51
|
+
float offset = rectangleSize / 2.0 + delta;
|
|
52
|
+
vec2 p = uv;
|
|
53
|
+
p.x = (p.x - offset) / abs(cp - 0.5) * 0.5 + offset;
|
|
54
|
+
vec4 a = getFromColor(p);
|
|
55
|
+
vec4 b = getToColor(p);
|
|
56
|
+
float s = step(abs(float(size.x) * (uv.x - delta) - 0.5), abs(cp - 0.5));
|
|
57
|
+
return vec4(mix(b, a, step(cp, 0.5)).rgb * s, 1.0);
|
|
58
|
+
} else {
|
|
59
|
+
float currentProg = (progress - 1.0 + pause) / pause;
|
|
60
|
+
float a = 1.0;
|
|
61
|
+
if (getDelta(uv) < dividerWidth) { a = currentProg; }
|
|
62
|
+
return mix(vec4(0.0, 0.0, 0.0, 1.0), getToColor(uv), a);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
half4 main(float2 _coord) {
|
|
67
|
+
vec2 _uv = _coord / _resolution;
|
|
68
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
69
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
70
|
+
}
|
package/sksl/Radial.sksl
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Radial — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Radial.glsl
|
|
2
|
+
// Author: Xaychru
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A radial wipe that sweeps around the center like a clock hand
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform float smoothness;
|
|
16
|
+
|
|
17
|
+
const float PI = 3.141592653589;
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 p) {
|
|
20
|
+
vec2 rp = p*2.-1.;
|
|
21
|
+
return mix(
|
|
22
|
+
getToColor(p),
|
|
23
|
+
getFromColor(p),
|
|
24
|
+
smoothstep(0., smoothness, atan(rp.y,rp.x) - (progress-.5) * PI * 2.5)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
half4 main(float2 _coord) {
|
|
29
|
+
vec2 _uv = _coord / _resolution;
|
|
30
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
31
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Rectangle — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Rectangle.glsl
|
|
2
|
+
// Author: martiniti
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A rectangle grows from the center to cover the outgoing image, then shrinks to reveal the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform vec4 bgcolor;
|
|
16
|
+
|
|
17
|
+
vec4 transition(vec2 p) {
|
|
18
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
19
|
+
|
|
20
|
+
vec2 sq = p.xy / vec2(1.0).xy;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
vec2 bl = step(vec2(abs(1. - 2.*progress)), sq + .25);
|
|
24
|
+
float dist = bl.x * bl.y;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
vec2 tr = step(vec2(abs(1. - 2.*progress)), 1.25-sq);
|
|
28
|
+
dist *= 1. * tr.x * tr.y;
|
|
29
|
+
|
|
30
|
+
return mix(
|
|
31
|
+
progress < 0.5 ? getFromColor(p) : getToColor(p),
|
|
32
|
+
bgcolor,
|
|
33
|
+
step(s, dist)
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
half4 main(float2 _coord) {
|
|
39
|
+
vec2 _uv = _coord / _resolution;
|
|
40
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
41
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
42
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// RectangleCrop — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/RectangleCrop.glsl
|
|
2
|
+
// Author: martiniti
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image shrinks into a small rectangle over a background color, then the incoming one grows from it
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform vec4 bgcolor;
|
|
16
|
+
|
|
17
|
+
vec4 transition(vec2 uv) {
|
|
18
|
+
|
|
19
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
20
|
+
|
|
21
|
+
vec2 q = uv.xy / vec2(1.0).xy;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
vec2 bl = step(vec2(1.0 - 2.0*abs(progress - 0.5)), q + 0.25);
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
vec2 tr = step(vec2(1.0 - 2.0*abs(progress - 0.5)), 1.25 - q);
|
|
28
|
+
|
|
29
|
+
float dist = length(1.0 - bl.x * bl.y * tr.x * tr.y);
|
|
30
|
+
|
|
31
|
+
return mix(
|
|
32
|
+
progress < 0.5 ? getFromColor(uv) : getToColor(uv),
|
|
33
|
+
bgcolor,
|
|
34
|
+
step(s, dist)
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
half4 main(float2 _coord) {
|
|
40
|
+
vec2 _uv = _coord / _resolution;
|
|
41
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
42
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
43
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Revolve_Left — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve_Left.glsl
|
|
2
|
+
// Author: bread
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image swirls and zooms with motion blur into the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform vec2 center;
|
|
16
|
+
uniform float direction;
|
|
17
|
+
uniform float maxRotation;
|
|
18
|
+
uniform float peakZoom;
|
|
19
|
+
uniform float swirl;
|
|
20
|
+
uniform float barrel;
|
|
21
|
+
uniform float motionBlur;
|
|
22
|
+
uniform float switchStart;
|
|
23
|
+
uniform float switchEnd;
|
|
24
|
+
uniform float shadow;
|
|
25
|
+
|
|
26
|
+
float sat(float x) {
|
|
27
|
+
return clamp(x, 0.0, 1.0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
float ease(float x) {
|
|
31
|
+
x = sat(x);
|
|
32
|
+
return x * x * (3.0 - 2.0 * x);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
float revolveEnvelope(float t) {
|
|
36
|
+
float rise = ease((t - 0.10) / 0.33);
|
|
37
|
+
float fall = 1.0 - ease((t - 0.43) / 0.29);
|
|
38
|
+
return rise * fall;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
vec2 rotate2(vec2 p, float a) {
|
|
42
|
+
float s = sin(a);
|
|
43
|
+
float c = cos(a);
|
|
44
|
+
return vec2(c * p.x - s * p.y, s * p.x + c * p.y);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
vec2 warpUv(vec2 uv, float t) {
|
|
48
|
+
float e = revolveEnvelope(t);
|
|
49
|
+
|
|
50
|
+
vec2 p = uv - center;
|
|
51
|
+
p.x *= ratio;
|
|
52
|
+
|
|
53
|
+
float r = length(p);
|
|
54
|
+
float edgeSpin = maxRotation * e;
|
|
55
|
+
float coreSpin = swirl * e * pow(1.0 - sat(r / 0.96), 1.55);
|
|
56
|
+
float visibleAngle = direction * (edgeSpin + coreSpin);
|
|
57
|
+
|
|
58
|
+
p = rotate2(p, -visibleAngle);
|
|
59
|
+
|
|
60
|
+
float sc = 1.0 + (peakZoom - 1.0) * pow(e, 0.85);
|
|
61
|
+
p /= sc;
|
|
62
|
+
|
|
63
|
+
float rr = length(p);
|
|
64
|
+
p *= 1.0 + barrel * e * rr * rr * 2.8;
|
|
65
|
+
|
|
66
|
+
p.x /= ratio;
|
|
67
|
+
return clamp(p + center, vec2(0.001), vec2(0.999));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
vec4 sampleRevolve(vec2 uv, float t) {
|
|
71
|
+
vec2 p = warpUv(uv, t);
|
|
72
|
+
float reveal = smoothstep(switchStart, switchEnd, t);
|
|
73
|
+
return mix(getFromColor(p), getToColor(p), reveal);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
vec4 transition(vec2 uv) {
|
|
77
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
78
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
79
|
+
|
|
80
|
+
float e = revolveEnvelope(progress);
|
|
81
|
+
float span = 0.060 * motionBlur * e;
|
|
82
|
+
|
|
83
|
+
vec4 color = vec4(0.0);
|
|
84
|
+
float total = 0.0;
|
|
85
|
+
|
|
86
|
+
for (int i = -8; i <= 8; i++) {
|
|
87
|
+
float x = float(i) / 8.0;
|
|
88
|
+
float w = 1.0 - abs(x);
|
|
89
|
+
w = w * w + 0.01;
|
|
90
|
+
|
|
91
|
+
float t = sat(progress + x * span);
|
|
92
|
+
color += sampleRevolve(uv, t) * w;
|
|
93
|
+
total += w;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
color /= total;
|
|
97
|
+
|
|
98
|
+
vec2 q = uv - vec2(0.5);
|
|
99
|
+
q.x *= ratio;
|
|
100
|
+
float vignette = 1.0 - shadow * e * smoothstep(0.35, 0.95, length(q));
|
|
101
|
+
color.rgb *= vignette;
|
|
102
|
+
|
|
103
|
+
return color;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
half4 main(float2 _coord) {
|
|
107
|
+
vec2 _uv = _coord / _resolution;
|
|
108
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
109
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
110
|
+
}
|
package/sksl/Rolls.sksl
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Rolls — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Rolls.glsl
|
|
2
|
+
// Author: Mark Craig
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image rolls away around a corner, revealing the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform int type;
|
|
16
|
+
|
|
17
|
+
uniform int RotDown;
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 uv)
|
|
20
|
+
{
|
|
21
|
+
float theta, c1, s1;
|
|
22
|
+
vec2 iResolution = vec2(ratio, 1.0);
|
|
23
|
+
vec2 uvi;
|
|
24
|
+
|
|
25
|
+
if (type == 0) { theta = ((RotDown != 0) ? 3.14159265358979323846 : -3.14159265358979323846) / 2.0 * progress; uvi.x = 1.0 - uv.x; uvi.y = uv.y; }
|
|
26
|
+
else if (type == 1) { theta = ((RotDown != 0) ? 3.14159265358979323846 : -3.14159265358979323846) / 2.0 * progress; uvi = uv; }
|
|
27
|
+
else if (type == 2) { theta = ((RotDown != 0) ? -3.14159265358979323846 : 3.14159265358979323846) / 2.0 * progress; uvi.x = uv.x; uvi.y = 1.0 - uv.y; }
|
|
28
|
+
else if (type == 3) { theta = ((RotDown != 0) ? -3.14159265358979323846 : 3.14159265358979323846) / 2.0 * progress; uvi = 1.0 - uv; }
|
|
29
|
+
c1 = cos(theta); s1 = sin(theta);
|
|
30
|
+
vec2 uv2;
|
|
31
|
+
uv2.x = (uvi.x * iResolution.x * c1 - uvi.y * iResolution.y * s1);
|
|
32
|
+
uv2.y = (uvi.x * iResolution.x * s1 + uvi.y * iResolution.y * c1);
|
|
33
|
+
if ((uv2.x >= 0.0) && (uv2.x <= iResolution.x) && (uv2.y >= 0.0) && (uv2.y <= iResolution.y))
|
|
34
|
+
{
|
|
35
|
+
uv2 /= iResolution;
|
|
36
|
+
if (type == 0) { uv2.x = 1.0 - uv2.x; }
|
|
37
|
+
else if (type == 2) { uv2.y = 1.0 - uv2.y; }
|
|
38
|
+
else if (type == 3) { uv2 = 1.0 - uv2; }
|
|
39
|
+
return(getFromColor(uv2));
|
|
40
|
+
}
|
|
41
|
+
return(getToColor(uv));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
half4 main(float2 _coord) {
|
|
45
|
+
vec2 _uv = _coord / _resolution;
|
|
46
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
47
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
48
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// RotateScaleVanish — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/RotateScaleVanish.glsl
|
|
2
|
+
// Author: Mark Craig
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image spins and shrinks away over the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform int FadeInSecond;
|
|
16
|
+
|
|
17
|
+
uniform int ReverseEffect;
|
|
18
|
+
|
|
19
|
+
uniform int ReverseRotation;
|
|
20
|
+
|
|
21
|
+
vec4 transition(vec2 uv)
|
|
22
|
+
{
|
|
23
|
+
vec2 iResolution = vec2(ratio, 1.0);
|
|
24
|
+
float t = (ReverseEffect != 0) ? 1.0 - progress : progress;
|
|
25
|
+
float theta = (ReverseRotation != 0) ? 6.283185307179586476925286766559 * t : -6.283185307179586476925286766559 * t;
|
|
26
|
+
float c1 = cos(theta);
|
|
27
|
+
float s1 = sin(theta);
|
|
28
|
+
float rad = max(0.00001, 1.0 - t);
|
|
29
|
+
float xc1 = (uv.x - 0.5) * iResolution.x;
|
|
30
|
+
float yc1 = (uv.y - 0.5) * iResolution.y;
|
|
31
|
+
float xc2 = (xc1 * c1 - yc1 * s1) / rad;
|
|
32
|
+
float yc2 = (xc1 * s1 + yc1 * c1) / rad;
|
|
33
|
+
vec2 uv2 = vec2(xc2 + iResolution.x / 2.0, yc2 + iResolution.y / 2.0);
|
|
34
|
+
vec4 col3;
|
|
35
|
+
vec4 ColorTo = (ReverseEffect != 0) ? getFromColor(uv) : getToColor(uv);
|
|
36
|
+
if ((uv2.x >= 0.0) && (uv2.x <= iResolution.x) && (uv2.y >= 0.0) && (uv2.y <= iResolution.y))
|
|
37
|
+
{
|
|
38
|
+
uv2 /= iResolution;
|
|
39
|
+
col3 = (ReverseEffect != 0) ? getToColor(uv2) : getFromColor(uv2);
|
|
40
|
+
}
|
|
41
|
+
else { col3 = (FadeInSecond != 0) ? vec4(0.0, 0.0, 0.0, 1.0) : ColorTo; }
|
|
42
|
+
return((1.0 - t) * col3 + t * ColorTo);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
half4 main(float2 _coord) {
|
|
46
|
+
vec2 _uv = _coord / _resolution;
|
|
47
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
48
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
49
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// SimpleFlip — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/SimpleFlip.glsl
|
|
2
|
+
// Author: nwoeanhinnogaehr
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image flips around the vertical axis into the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
vec4 transition(vec2 uv) {
|
|
16
|
+
vec2 q = uv;
|
|
17
|
+
uv.x = (uv.x - 0.5) / abs(progress - 0.5) * 0.5 + 0.5;
|
|
18
|
+
vec4 a = getFromColor(uv);
|
|
19
|
+
vec4 b = getToColor(uv);
|
|
20
|
+
return vec4(mix(a, b, step(0.5, progress)).rgb * step(abs(q.x - 0.5), abs(progress - 0.5)), 1.0);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
half4 main(float2 _coord) {
|
|
24
|
+
vec2 _uv = _coord / _resolution;
|
|
25
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
26
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
27
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SimpleZoom — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/SimpleZoom.glsl
|
|
2
|
+
// Author: 0gust1
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Zooms into the outgoing image, then fades to the incoming one
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform float zoom_quickness;
|
|
16
|
+
vec2 zoom(vec2 uv, float amount) {
|
|
17
|
+
return 0.5 + ((uv - 0.5) * (1.0-amount));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
vec4 transition (vec2 uv) {
|
|
21
|
+
float nQuick = clamp(zoom_quickness,0.2,1.0);
|
|
22
|
+
return mix(
|
|
23
|
+
getFromColor(zoom(uv, smoothstep(0.0, nQuick, progress))),
|
|
24
|
+
getToColor(uv),
|
|
25
|
+
smoothstep(nQuick-0.2, 1.0, progress)
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
half4 main(float2 _coord) {
|
|
30
|
+
vec2 _uv = _coord / _resolution;
|
|
31
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
32
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
33
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// SimpleZoomOut — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/SimpleZoomOut.glsl
|
|
2
|
+
// Author: Tianshuo
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image zooms out into place while fading in
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform float zoom_quickness;
|
|
16
|
+
|
|
17
|
+
uniform int fade;
|
|
18
|
+
vec2 zoom(vec2 uv, float amount) {
|
|
19
|
+
return 0.5 + ((uv - 0.5) * (1.0-amount));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
vec4 transition (vec2 uv) {
|
|
23
|
+
float nQuick = clamp(zoom_quickness,0.2,1.0);
|
|
24
|
+
return mix(
|
|
25
|
+
getFromColor(uv),
|
|
26
|
+
getToColor(zoom(uv,1.-smoothstep(1.-nQuick, 1., progress))),
|
|
27
|
+
(fade != 0)?smoothstep(1.0-nQuick, 1., progress):(progress<1.0-nQuick?0.0:1.0)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
half4 main(float2 _coord) {
|
|
32
|
+
vec2 _uv = _coord / _resolution;
|
|
33
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
34
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
35
|
+
}
|
package/sksl/Slides.sksl
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Slides — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Slides.glsl
|
|
2
|
+
// Author: Mark Craig
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image slides out, or the incoming one slides in, toward an edge, a corner or the center
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform int type;
|
|
16
|
+
|
|
17
|
+
uniform int In;
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 uv)
|
|
20
|
+
{
|
|
21
|
+
vec2 uv0 = uv;
|
|
22
|
+
float rad = (In != 0) ? progress : 1.0 - progress;
|
|
23
|
+
float xc1, yc1;
|
|
24
|
+
|
|
25
|
+
if (type == 0) { xc1 = .5 - rad / 2.0; yc1 = 0.0; }
|
|
26
|
+
else if (type == 1) { xc1 = 1.0 - rad; yc1 = .5 - rad / 2.0; }
|
|
27
|
+
else if (type == 2) { xc1 = .5 - rad / 2.0; yc1 = 1.0 - rad; }
|
|
28
|
+
else if (type == 3) { xc1 = 0.0; yc1 = .5 - rad / 2.0; }
|
|
29
|
+
else if (type == 4) { xc1 = 1.0 - rad; yc1 = 0.0; }
|
|
30
|
+
else if (type == 5) { xc1 = 1.0 - rad; yc1 = 1.0 - rad; }
|
|
31
|
+
else if (type == 6) { xc1 = 0.0; yc1 = 1.0 - rad; }
|
|
32
|
+
else if (type == 7) { xc1 = 0.0; yc1 = 0.0; }
|
|
33
|
+
else if (type == 8) { xc1 = .5 - rad / 2.0; yc1 = .5 - rad / 2.0; }
|
|
34
|
+
uv.y = 1.0 - uv.y;
|
|
35
|
+
vec2 uv2;
|
|
36
|
+
if ((uv.x >= xc1) && (uv.x <= xc1 + rad) && (uv.y >= yc1) && (uv.y <= yc1 + rad))
|
|
37
|
+
{
|
|
38
|
+
uv2 = vec2((uv.x - xc1) / rad, 1.0 - (uv.y - yc1) / rad);
|
|
39
|
+
return((In != 0) ? getToColor(uv2) : getFromColor(uv2));
|
|
40
|
+
}
|
|
41
|
+
return((In != 0) ? getFromColor(uv0) : getToColor(uv0));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
half4 main(float2 _coord) {
|
|
45
|
+
vec2 _uv = _coord / _resolution;
|
|
46
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
47
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
48
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// StarWipe — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/StarWipe.glsl
|
|
2
|
+
// Author: Ben Lucas
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A growing star reveals the incoming image
|
|
5
|
+
|
|
6
|
+
uniform shader _from;
|
|
7
|
+
uniform shader _to;
|
|
8
|
+
uniform float2 _resolution;
|
|
9
|
+
uniform float progress;
|
|
10
|
+
uniform float ratio;
|
|
11
|
+
|
|
12
|
+
vec4 getFromColor(vec2 uv) { return vec4(unpremul(_from.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
13
|
+
vec4 getToColor(vec2 uv) { return vec4(unpremul(_to.eval(vec2(uv.x, 1.0 - uv.y) * _resolution))); }
|
|
14
|
+
|
|
15
|
+
uniform float border_thickness;
|
|
16
|
+
uniform float star_rotation;
|
|
17
|
+
|
|
18
|
+
uniform vec4 border_color;
|
|
19
|
+
|
|
20
|
+
uniform vec2 star_center;
|
|
21
|
+
|
|
22
|
+
vec2 rotate(vec2 v, float theta) {
|
|
23
|
+
float cosTheta = cos(theta);
|
|
24
|
+
float sinTheta = sin(theta);
|
|
25
|
+
|
|
26
|
+
return vec2(
|
|
27
|
+
cosTheta * v.x - sinTheta * v.y,
|
|
28
|
+
sinTheta * v.x + cosTheta * v.y
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
bool inStar(vec2 uv, vec2 center, float radius){
|
|
33
|
+
vec2 uv_centered = uv - center;
|
|
34
|
+
uv_centered = rotate(uv_centered, star_rotation * 1.2566370614359172);
|
|
35
|
+
float theta = atan(uv_centered.y, uv_centered.x) + 3.141592653589793;
|
|
36
|
+
|
|
37
|
+
vec2 uv_rotated = rotate(uv_centered, -1.2566370614359172 * (floor(theta / 1.2566370614359172) + 0.5));
|
|
38
|
+
|
|
39
|
+
float slope = 0.3;
|
|
40
|
+
if(uv_rotated.y > 0.0){
|
|
41
|
+
return (radius + uv_rotated.x * slope > uv_rotated.y);
|
|
42
|
+
} else {
|
|
43
|
+
return (-radius - uv_rotated.x * slope < uv_rotated.y);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
vec4 transition (vec2 uv) {
|
|
48
|
+
float progressScaled = (2.0 * border_thickness + 1.0) * progress - border_thickness;
|
|
49
|
+
if(inStar(uv, star_center, progressScaled)){
|
|
50
|
+
return getToColor(uv);
|
|
51
|
+
} else if(inStar(uv, star_center, progressScaled+border_thickness)){
|
|
52
|
+
return border_color;
|
|
53
|
+
} else {
|
|
54
|
+
return getFromColor(uv);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
half4 main(float2 _coord) {
|
|
59
|
+
vec2 _uv = _coord / _resolution;
|
|
60
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
61
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
62
|
+
}
|