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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gl-transitions",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.72.0",
|
|
4
4
|
"description": "The open collection of GL Transitions",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
"shader",
|
|
20
20
|
"opengl",
|
|
21
21
|
"video",
|
|
22
|
-
"animation"
|
|
23
|
-
|
|
22
|
+
"animation",
|
|
23
|
+
"sksl",
|
|
24
|
+
"skia"
|
|
25
|
+
],
|
|
26
|
+
"types": "index.d.ts"
|
|
24
27
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// AdvancedMosaic — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/AdvancedMosaic.glsl
|
|
2
|
+
// Author: Sergey Kosarevsky
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Both images break into large blocks that blend, then sharpen into 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 pixelSize;
|
|
16
|
+
|
|
17
|
+
vec4 transition(vec2 uv) {
|
|
18
|
+
float T = progress;
|
|
19
|
+
float half_ = 0.5;
|
|
20
|
+
float size = (T < half_) ? mix(1.0, pixelSize, T / half_) : mix(pixelSize, 1.0, (T - half_) / half_);
|
|
21
|
+
float D = size * 0.005;
|
|
22
|
+
|
|
23
|
+
vec2 UV = (uv - 0.5) / D;
|
|
24
|
+
vec2 coord = clamp(D * (ceil(UV - 0.5)) + 0.5, 0.0, 1.0);
|
|
25
|
+
vec4 C0 = getFromColor(coord);
|
|
26
|
+
vec4 C1 = getToColor(coord);
|
|
27
|
+
return mix(C0, C1, T);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
half4 main(float2 _coord) {
|
|
31
|
+
vec2 _uv = _coord / _resolution;
|
|
32
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
33
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// BlockDissolve — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BlockDissolve.glsl
|
|
2
|
+
// Author: nwoeanhinnogaehr
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image appears in small random blocks
|
|
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 blocksize;
|
|
16
|
+
|
|
17
|
+
float rand(vec2 co) {
|
|
18
|
+
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
vec4 transition(vec2 uv) {
|
|
22
|
+
return mix(getFromColor(uv), getToColor(uv), step(rand(floor(uv / blocksize)), progress));
|
|
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,50 @@
|
|
|
1
|
+
// BookFlip — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BookFlip.glsl
|
|
2
|
+
// Author: hong
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image turns like a book page from right to left, 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
|
+
float nonZero(float x) {
|
|
16
|
+
return abs(x) < 1e-4 ? (x < 0.0 ? -1e-4 : 1e-4) : x;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
vec2 skewRight(vec2 p) {
|
|
20
|
+
float skewX = (p.x - progress)/nonZero(0.5 - progress) * 0.5;
|
|
21
|
+
float skewY = (p.y - 0.5)/(0.5 + progress * (p.x - 0.5) / 0.5)* 0.5 + 0.5;
|
|
22
|
+
return vec2(skewX, skewY);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
vec2 skewLeft(vec2 p) {
|
|
26
|
+
float skewX = (p.x - 0.5)/nonZero(progress - 0.5) * 0.5 + 0.5;
|
|
27
|
+
float skewY = (p.y - 0.5) / (0.5 + (1.0 - progress ) * (0.5 - p.x) / 0.5) * 0.5 + 0.5;
|
|
28
|
+
return vec2(skewX, skewY);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
vec4 addShade() {
|
|
32
|
+
float shadeVal = max(0.7, abs(progress - 0.5) * 2.0);
|
|
33
|
+
return vec4(vec3(shadeVal ), 1.0);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
vec4 transition (vec2 p) {
|
|
37
|
+
float pr = step(1.0 - progress, p.x);
|
|
38
|
+
|
|
39
|
+
if (p.x < 0.5) {
|
|
40
|
+
return mix(getFromColor(p), getToColor(skewLeft(p)) * addShade(), pr);
|
|
41
|
+
} else {
|
|
42
|
+
return mix(getFromColor(skewRight(p)) * addShade(), getToColor(p), pr);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
half4 main(float2 _coord) {
|
|
47
|
+
vec2 _uv = _coord / _resolution;
|
|
48
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
49
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
50
|
+
}
|
package/sksl/Bounce.sksl
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Bounce — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Bounce.glsl
|
|
2
|
+
// Author: Adrian Purser
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image drops out of the frame with a few bounces, 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 vec4 shadow_colour;
|
|
16
|
+
|
|
17
|
+
uniform float shadow_height;
|
|
18
|
+
|
|
19
|
+
uniform float bounces;
|
|
20
|
+
|
|
21
|
+
const float PI = 3.14159265358;
|
|
22
|
+
|
|
23
|
+
vec4 transition (vec2 uv) {
|
|
24
|
+
float time = progress;
|
|
25
|
+
float stime = sin(time * PI / 2.);
|
|
26
|
+
float phase = time * PI * bounces;
|
|
27
|
+
float y = (abs(cos(phase))) * (1.0 - stime);
|
|
28
|
+
float d = uv.y - y;
|
|
29
|
+
return mix(
|
|
30
|
+
mix(
|
|
31
|
+
getToColor(uv),
|
|
32
|
+
shadow_colour,
|
|
33
|
+
step(d, shadow_height) * (1. - mix(
|
|
34
|
+
((d / shadow_height) * shadow_colour.a) + (1.0 - shadow_colour.a),
|
|
35
|
+
1.0,
|
|
36
|
+
smoothstep(0.95, 1., progress)
|
|
37
|
+
))
|
|
38
|
+
),
|
|
39
|
+
getFromColor(vec2(uv.x, uv.y + (1.0 - y))),
|
|
40
|
+
step(d, 0.0)
|
|
41
|
+
);
|
|
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,136 @@
|
|
|
1
|
+
// BowTieHorizontal — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BowTieHorizontal.glsl
|
|
2
|
+
// Author: huynx
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Two triangles grow from the left and right edges into a bow tie that 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
|
+
const vec2 bottom_left = vec2(0.0, 1.0);
|
|
16
|
+
const vec2 bottom_right = vec2(1.0, 1.0);
|
|
17
|
+
const vec2 top_left = vec2(0.0, 0.0);
|
|
18
|
+
const vec2 top_right = vec2(1.0, 0.0);
|
|
19
|
+
const vec2 center = vec2(0.5, 0.5);
|
|
20
|
+
|
|
21
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
22
|
+
{
|
|
23
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
bool PointInTriangle (vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
27
|
+
{
|
|
28
|
+
bool b1, b2, b3;
|
|
29
|
+
b1 = check(pt, p1, p2) < 0.0;
|
|
30
|
+
b2 = check(pt, p2, p3) < 0.0;
|
|
31
|
+
b3 = check(pt, p3, p1) < 0.0;
|
|
32
|
+
return ((b1 == b2) && (b2 == b3));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
bool in_left_triangle(vec2 p){
|
|
36
|
+
vec2 vertex1, vertex2, vertex3;
|
|
37
|
+
vertex1 = vec2(progress, 0.5);
|
|
38
|
+
vertex2 = vec2(0.0, 0.5-progress);
|
|
39
|
+
vertex3 = vec2(0.0, 0.5+progress);
|
|
40
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
41
|
+
{
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
bool in_right_triangle(vec2 p){
|
|
48
|
+
vec2 vertex1, vertex2, vertex3;
|
|
49
|
+
vertex1 = vec2(1.0-progress, 0.5);
|
|
50
|
+
vertex2 = vec2(1.0, 0.5-progress);
|
|
51
|
+
vertex3 = vec2(1.0, 0.5+progress);
|
|
52
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
53
|
+
{
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
float blur_edge(vec2 bot1, vec2 bot2, vec2 top, vec2 testPt)
|
|
60
|
+
{
|
|
61
|
+
vec2 lineDir = bot1 - top;
|
|
62
|
+
vec2 perpDir = vec2(lineDir.y, -lineDir.x);
|
|
63
|
+
vec2 dirToPt1 = bot1 - testPt;
|
|
64
|
+
float dist1 = abs(dot(normalize(perpDir), dirToPt1));
|
|
65
|
+
|
|
66
|
+
lineDir = bot2 - top;
|
|
67
|
+
perpDir = vec2(lineDir.y, -lineDir.x);
|
|
68
|
+
dirToPt1 = bot2 - testPt;
|
|
69
|
+
float min_dist = min(abs(dot(normalize(perpDir), dirToPt1)), dist1);
|
|
70
|
+
|
|
71
|
+
if (min_dist < 0.005) {
|
|
72
|
+
return min_dist / 0.005;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return 1.0;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
vec4 transition (vec2 uv) {
|
|
80
|
+
if (in_left_triangle(uv))
|
|
81
|
+
{
|
|
82
|
+
if (progress < 0.1)
|
|
83
|
+
{
|
|
84
|
+
return getFromColor(uv);
|
|
85
|
+
}
|
|
86
|
+
if (uv.x < 0.5)
|
|
87
|
+
{
|
|
88
|
+
vec2 vertex1 = vec2(progress, 0.5);
|
|
89
|
+
vec2 vertex2 = vec2(0.0, 0.5-progress);
|
|
90
|
+
vec2 vertex3 = vec2(0.0, 0.5+progress);
|
|
91
|
+
return mix(
|
|
92
|
+
getFromColor(uv),
|
|
93
|
+
getToColor(uv),
|
|
94
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
{
|
|
99
|
+
if (progress > 0.0)
|
|
100
|
+
{
|
|
101
|
+
return getToColor(uv);
|
|
102
|
+
}
|
|
103
|
+
else
|
|
104
|
+
{
|
|
105
|
+
return getFromColor(uv);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (in_right_triangle(uv))
|
|
110
|
+
{
|
|
111
|
+
if (uv.x >= 0.5)
|
|
112
|
+
{
|
|
113
|
+
vec2 vertex1 = vec2(1.0-progress, 0.5);
|
|
114
|
+
vec2 vertex2 = vec2(1.0, 0.5-progress);
|
|
115
|
+
vec2 vertex3 = vec2(1.0, 0.5+progress);
|
|
116
|
+
return mix(
|
|
117
|
+
getFromColor(uv),
|
|
118
|
+
getToColor(uv),
|
|
119
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
else
|
|
123
|
+
{
|
|
124
|
+
return getFromColor(uv);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
return getFromColor(uv);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
half4 main(float2 _coord) {
|
|
133
|
+
vec2 _uv = _coord / _resolution;
|
|
134
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
135
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
136
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// BowTieVertical — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BowTieVertical.glsl
|
|
2
|
+
// Author: huynx
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Two triangles grow from the top and bottom edges into a bow tie that 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
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
16
|
+
{
|
|
17
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
bool PointInTriangle (vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
21
|
+
{
|
|
22
|
+
bool b1, b2, b3;
|
|
23
|
+
b1 = check(pt, p1, p2) < 0.0;
|
|
24
|
+
b2 = check(pt, p2, p3) < 0.0;
|
|
25
|
+
b3 = check(pt, p3, p1) < 0.0;
|
|
26
|
+
return ((b1 == b2) && (b2 == b3));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
bool in_top_triangle(vec2 p){
|
|
30
|
+
vec2 vertex1, vertex2, vertex3;
|
|
31
|
+
vertex1 = vec2(0.5, progress);
|
|
32
|
+
vertex2 = vec2(0.5-progress, 0.0);
|
|
33
|
+
vertex3 = vec2(0.5+progress, 0.0);
|
|
34
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
35
|
+
{
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
bool in_bottom_triangle(vec2 p){
|
|
42
|
+
vec2 vertex1, vertex2, vertex3;
|
|
43
|
+
vertex1 = vec2(0.5, 1.0 - progress);
|
|
44
|
+
vertex2 = vec2(0.5-progress, 1.0);
|
|
45
|
+
vertex3 = vec2(0.5+progress, 1.0);
|
|
46
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
47
|
+
{
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
float blur_edge(vec2 bot1, vec2 bot2, vec2 top, vec2 testPt)
|
|
54
|
+
{
|
|
55
|
+
vec2 lineDir = bot1 - top;
|
|
56
|
+
vec2 perpDir = vec2(lineDir.y, -lineDir.x);
|
|
57
|
+
vec2 dirToPt1 = bot1 - testPt;
|
|
58
|
+
float dist1 = abs(dot(normalize(perpDir), dirToPt1));
|
|
59
|
+
|
|
60
|
+
lineDir = bot2 - top;
|
|
61
|
+
perpDir = vec2(lineDir.y, -lineDir.x);
|
|
62
|
+
dirToPt1 = bot2 - testPt;
|
|
63
|
+
float min_dist = min(abs(dot(normalize(perpDir), dirToPt1)), dist1);
|
|
64
|
+
|
|
65
|
+
if (min_dist < 0.005) {
|
|
66
|
+
return min_dist / 0.005;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return 1.0;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
vec4 transition (vec2 uv) {
|
|
74
|
+
if (in_top_triangle(uv))
|
|
75
|
+
{
|
|
76
|
+
if (progress < 0.1)
|
|
77
|
+
{
|
|
78
|
+
return getFromColor(uv);
|
|
79
|
+
}
|
|
80
|
+
if (uv.y < 0.5)
|
|
81
|
+
{
|
|
82
|
+
vec2 vertex1 = vec2(0.5, progress);
|
|
83
|
+
vec2 vertex2 = vec2(0.5-progress, 0.0);
|
|
84
|
+
vec2 vertex3 = vec2(0.5+progress, 0.0);
|
|
85
|
+
return mix(
|
|
86
|
+
getFromColor(uv),
|
|
87
|
+
getToColor(uv),
|
|
88
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
else
|
|
92
|
+
{
|
|
93
|
+
if (progress > 0.0)
|
|
94
|
+
{
|
|
95
|
+
return getToColor(uv);
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
{
|
|
99
|
+
return getFromColor(uv);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (in_bottom_triangle(uv))
|
|
104
|
+
{
|
|
105
|
+
if (uv.y >= 0.5)
|
|
106
|
+
{
|
|
107
|
+
vec2 vertex1 = vec2(0.5, 1.0-progress);
|
|
108
|
+
vec2 vertex2 = vec2(0.5-progress, 1.0);
|
|
109
|
+
vec2 vertex3 = vec2(0.5+progress, 1.0);
|
|
110
|
+
return mix(
|
|
111
|
+
getFromColor(uv),
|
|
112
|
+
getToColor(uv),
|
|
113
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
{
|
|
118
|
+
return getFromColor(uv);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return getFromColor(uv);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
half4 main(float2 _coord) {
|
|
127
|
+
vec2 _uv = _coord / _resolution;
|
|
128
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
129
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
130
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// BowTieWithParameter — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BowTieWithParameter.glsl
|
|
2
|
+
// Author: KMojek
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A bow-tie wipe with an adjustable shape that can run in reverse
|
|
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 adjust;
|
|
16
|
+
|
|
17
|
+
uniform int reverse;
|
|
18
|
+
|
|
19
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
20
|
+
{
|
|
21
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
bool pointInTriangle(vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
25
|
+
{
|
|
26
|
+
|
|
27
|
+
bool b1 = check(pt, p1, p2) < 0.0;
|
|
28
|
+
bool b2 = check(pt, p2, p3) < 0.0;
|
|
29
|
+
bool b3 = check(pt, p3, p1) < 0.0;
|
|
30
|
+
return b1 == b2 && b2 == b3;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const float height = 0.5;
|
|
34
|
+
|
|
35
|
+
vec4 transition_firstHalf( vec2 uv, float prog )
|
|
36
|
+
{
|
|
37
|
+
if ( uv.y < 0.5 )
|
|
38
|
+
{
|
|
39
|
+
vec2 botLeft = vec2( -0., prog-height );
|
|
40
|
+
vec2 botRight = vec2( 1., prog-height );
|
|
41
|
+
vec2 tip = vec2( adjust, prog );
|
|
42
|
+
if ( pointInTriangle( uv, botLeft, botRight, tip ) )
|
|
43
|
+
return getToColor(uv);
|
|
44
|
+
}
|
|
45
|
+
else
|
|
46
|
+
{
|
|
47
|
+
vec2 topLeft = vec2( -0., 1.-prog+height );
|
|
48
|
+
vec2 topRight = vec2( 1., 1.-prog+height );
|
|
49
|
+
vec2 tip = vec2( adjust, 1.-prog );
|
|
50
|
+
if ( pointInTriangle( uv, topLeft, topRight, tip ) )
|
|
51
|
+
return getToColor( uv );
|
|
52
|
+
}
|
|
53
|
+
return getFromColor( uv );
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
vec4 transition_secondHalf( vec2 uv, float prog )
|
|
57
|
+
{
|
|
58
|
+
if ( uv.x > adjust )
|
|
59
|
+
{
|
|
60
|
+
vec2 top = vec2( prog + height, 1. );
|
|
61
|
+
vec2 bot = vec2( prog + height, -0. );
|
|
62
|
+
vec2 tip = vec2( mix( adjust, 1.0, 2.0 * (prog - 0.5) ), 0.5 );
|
|
63
|
+
if ( pointInTriangle( uv, top, bot, tip) )
|
|
64
|
+
return getFromColor( uv );
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
{
|
|
68
|
+
vec2 top = vec2( 1.0-prog - height, 1. );
|
|
69
|
+
vec2 bot = vec2( 1.0-prog - height, -0. );
|
|
70
|
+
vec2 tip = vec2( mix( adjust, 0.0, 2.0 * (prog - 0.5) ), 0.5 );
|
|
71
|
+
if ( pointInTriangle( uv, top, bot, tip) )
|
|
72
|
+
return getFromColor( uv );
|
|
73
|
+
}
|
|
74
|
+
return getToColor( uv );
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
vec4 transition (vec2 uv) {
|
|
78
|
+
if ( (reverse != 0) )
|
|
79
|
+
return ( progress < 0.5 ) ? transition_secondHalf( uv, 1.-progress ) : transition_firstHalf( uv, 1.-progress );
|
|
80
|
+
else
|
|
81
|
+
return ( progress < 0.5 ) ? transition_firstHalf( uv, progress ) : transition_secondHalf( uv, progress );
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
half4 main(float2 _coord) {
|
|
85
|
+
vec2 _uv = _coord / _resolution;
|
|
86
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
87
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
88
|
+
}
|
package/sksl/Box.sksl
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Box — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Box.glsl
|
|
2
|
+
// Author: lql
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image shrinks into a box, toward the center or 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 rectIn;
|
|
16
|
+
|
|
17
|
+
uniform int location;
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 uv) {
|
|
20
|
+
float p = rectIn == 1 ? 1.0 - progress : progress;
|
|
21
|
+
float x1, y1, x2, y2;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if (location == 0) {
|
|
25
|
+
x1 = y1 = 0.5 * (1.0 - p);
|
|
26
|
+
x2 = y2 = 1.0 - x1;
|
|
27
|
+
} else {
|
|
28
|
+
|
|
29
|
+
x1 = (location == 1 || location == 2) ? 0.0 : 1.0 - p;
|
|
30
|
+
y1 = (location == 1 || location == 3) ? 1.0 - p : 0.0;
|
|
31
|
+
x2 = (location == 1 || location == 2) ? p : 1.0;
|
|
32
|
+
y2 = (location == 1 || location == 3) ? 1.0 : p;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
float in_rect = step(x1, uv.x) * step(uv.x, x2) * step(y1, uv.y) * step(uv.y, y2);
|
|
37
|
+
in_rect = rectIn == 1 ? 1.0 - in_rect : in_rect;
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
return mix(getFromColor(uv), getToColor(uv), in_rect);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
half4 main(float2 _coord) {
|
|
44
|
+
vec2 _uv = _coord / _resolution;
|
|
45
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
46
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
47
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// ButterflyWaveScrawler — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/ButterflyWaveScrawler.glsl
|
|
2
|
+
// Author: mandubian
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Wavy, color-separated ripples scramble the outgoing image 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 float amplitude;
|
|
16
|
+
uniform float waves;
|
|
17
|
+
uniform float colorSeparation;
|
|
18
|
+
const float PI = 3.14159265358979323846264;
|
|
19
|
+
float compute(vec2 p, float progress, vec2 center) {
|
|
20
|
+
vec2 o = p*sin(progress * amplitude)-center;
|
|
21
|
+
|
|
22
|
+
vec2 h = vec2(1., 0.);
|
|
23
|
+
|
|
24
|
+
float theta = acos(dot(o, h)) * waves;
|
|
25
|
+
float s = sin((2.*theta - PI) / 24.);
|
|
26
|
+
float s2 = s * s;
|
|
27
|
+
return (exp(cos(theta)) - 2.*cos(4.*theta) + s2 * s2 * s) / 10.;
|
|
28
|
+
}
|
|
29
|
+
vec4 transition(vec2 uv) {
|
|
30
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
31
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
32
|
+
vec2 p = uv;
|
|
33
|
+
float inv = 1. - progress;
|
|
34
|
+
float disp = compute(p, progress, vec2(0.5, 0.5));
|
|
35
|
+
vec4 texTo = getToColor(p + inv*disp);
|
|
36
|
+
vec4 texFrom = vec4(
|
|
37
|
+
getFromColor(p + progress*disp*(1.0 - colorSeparation)).r,
|
|
38
|
+
getFromColor(p + progress*disp).g,
|
|
39
|
+
getFromColor(p + progress*disp*(1.0 + colorSeparation)).b,
|
|
40
|
+
1.0);
|
|
41
|
+
return texTo*progress + texFrom*inv;
|
|
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,32 @@
|
|
|
1
|
+
// CircleCrop — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CircleCrop.glsl
|
|
2
|
+
// Author: fkuteken
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image closes into a circle over a background color, then the incoming one opens 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 p) {
|
|
18
|
+
vec2 ratio2 = vec2(1.0, 1.0 / ratio);
|
|
19
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
20
|
+
float dist = length((vec2(p) - 0.5) * ratio2);
|
|
21
|
+
return mix(
|
|
22
|
+
progress < 0.5 ? getFromColor(p) : getToColor(p),
|
|
23
|
+
bgcolor,
|
|
24
|
+
step(s, dist)
|
|
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,32 @@
|
|
|
1
|
+
// ColourDistance — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/ColourDistance.glsl
|
|
2
|
+
// Author: P-Seebauer
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Pixels switch to the incoming image in order of how close their colors are
|
|
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 power;
|
|
16
|
+
|
|
17
|
+
vec4 transition(vec2 p) {
|
|
18
|
+
vec4 fTex = getFromColor(p);
|
|
19
|
+
vec4 tTex = getToColor(p);
|
|
20
|
+
float m = step(distance(fTex, tTex), progress);
|
|
21
|
+
return mix(
|
|
22
|
+
mix(fTex, tTex, m),
|
|
23
|
+
tTex,
|
|
24
|
+
pow(progress, power)
|
|
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
|
+
}
|