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,34 @@
|
|
|
1
|
+
// CrazyParametricFun — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrazyParametricFun.glsl
|
|
2
|
+
// Author: mandubian
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image is pulled along a parametric curve into a psychedelic swirl
|
|
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 a;
|
|
16
|
+
uniform float b;
|
|
17
|
+
uniform float amplitude;
|
|
18
|
+
uniform float smoothness;
|
|
19
|
+
|
|
20
|
+
vec4 transition(vec2 uv) {
|
|
21
|
+
vec2 p = uv.xy / vec2(1.0).xy;
|
|
22
|
+
vec2 dir = p - vec2(.5);
|
|
23
|
+
float dist = length(dir);
|
|
24
|
+
float x = (a - b) * cos(progress) + b * cos(progress * ((a / b) - 1.) );
|
|
25
|
+
float y = (a - b) * sin(progress) - b * sin(progress * ((a / b) - 1.));
|
|
26
|
+
vec2 offset = dir * vec2(sin(progress * dist * amplitude * x), sin(progress * dist * amplitude * y)) / smoothness;
|
|
27
|
+
return mix(getFromColor(p + offset), getToColor(p), smoothstep(0.2, 1.0, progress));
|
|
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,76 @@
|
|
|
1
|
+
// CrossZoom — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl
|
|
2
|
+
// Author: rectalogic
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through a strong zoom blur
|
|
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
|
+
|
|
17
|
+
const float PI = 3.141592653589793;
|
|
18
|
+
|
|
19
|
+
float Linear_ease(in float begin, in float change, in float duration, in float time) {
|
|
20
|
+
return change * time / duration + begin;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
float Exponential_easeInOut(in float begin, in float change, in float duration, in float time) {
|
|
24
|
+
if (time == 0.0)
|
|
25
|
+
return begin;
|
|
26
|
+
else if (time == duration)
|
|
27
|
+
return begin + change;
|
|
28
|
+
time = time / (duration / 2.0);
|
|
29
|
+
if (time < 1.0)
|
|
30
|
+
return change / 2.0 * pow(2.0, 10.0 * (time - 1.0)) + begin;
|
|
31
|
+
return change / 2.0 * (-pow(2.0, -10.0 * (time - 1.0)) + 2.0) + begin;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
float Sinusoidal_easeInOut(in float begin, in float change, in float duration, in float time) {
|
|
35
|
+
return -change / 2.0 * (cos(PI * time / duration) - 1.0) + begin;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
float rand (vec2 co) {
|
|
39
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
vec4 crossFade(in vec2 uv, in float dissolve) {
|
|
43
|
+
return mix(getFromColor(uv), getToColor(uv), dissolve);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
vec4 transition(vec2 uv) {
|
|
47
|
+
vec2 texCoord = uv.xy / vec2(1.0).xy;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
vec2 center = vec2(Linear_ease(0.25, 0.5, 1.0, progress), 0.5);
|
|
51
|
+
float dissolve = Exponential_easeInOut(0.0, 1.0, 1.0, progress);
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
float strength = Sinusoidal_easeInOut(0.0, strength, 0.5, progress);
|
|
55
|
+
|
|
56
|
+
vec4 color = vec4(0.0);
|
|
57
|
+
float total = 0.0;
|
|
58
|
+
vec2 toCenter = center - texCoord;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
float offset = rand(uv);
|
|
62
|
+
|
|
63
|
+
for (float t = 0.0; t <= 40.0; t++) {
|
|
64
|
+
float percent = (t + offset) / 40.0;
|
|
65
|
+
float weight = 4.0 * (percent - percent * percent);
|
|
66
|
+
color += crossFade(texCoord + toCenter * percent * strength, dissolve) * weight;
|
|
67
|
+
total += weight;
|
|
68
|
+
}
|
|
69
|
+
return color / total;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
half4 main(float2 _coord) {
|
|
73
|
+
vec2 _uv = _coord / _resolution;
|
|
74
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
75
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
76
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// DefocusBlur — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DefocusBlur.glsl
|
|
2
|
+
// Author: Sergey Kosarevsky
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through an out-of-focus blur
|
|
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 blurSize;
|
|
16
|
+
|
|
17
|
+
vec4 transition(vec2 uv) {
|
|
18
|
+
float T = progress;
|
|
19
|
+
float half_ = 0.5;
|
|
20
|
+
float D = (T < half_) ? mix(0.0, blurSize, T / half_) : mix(blurSize, 0.0, (T - half_) / half_);
|
|
21
|
+
vec4 C0 = getFromColor(uv);
|
|
22
|
+
vec4 C1 = getToColor(uv);
|
|
23
|
+
C0 += getFromColor(vec2(-0.326, -0.406) * D + uv);
|
|
24
|
+
C1 += getToColor(vec2(-0.326, -0.406) * D + uv);
|
|
25
|
+
C0 += getFromColor(vec2(-0.840, -0.074) * D + uv);
|
|
26
|
+
C1 += getToColor(vec2(-0.840, -0.074) * D + uv);
|
|
27
|
+
C0 += getFromColor(vec2(-0.696, 0.457) * D + uv);
|
|
28
|
+
C1 += getToColor(vec2(-0.696, 0.457) * D + uv);
|
|
29
|
+
C0 += getFromColor(vec2(-0.203, 0.621) * D + uv);
|
|
30
|
+
C1 += getToColor(vec2(-0.203, 0.621) * D + uv);
|
|
31
|
+
C0 += getFromColor(vec2( 0.962, -0.195) * D + uv);
|
|
32
|
+
C1 += getToColor(vec2( 0.962, -0.195) * D + uv);
|
|
33
|
+
C0 += getFromColor(vec2( 0.473, -0.480) * D + uv);
|
|
34
|
+
C1 += getToColor(vec2( 0.473, -0.480) * D + uv);
|
|
35
|
+
C0 += getFromColor(vec2( 0.519, 0.767) * D + uv);
|
|
36
|
+
C1 += getToColor(vec2( 0.519, 0.767) * D + uv);
|
|
37
|
+
C0 += getFromColor(vec2( 0.185, -0.893) * D + uv);
|
|
38
|
+
C1 += getToColor(vec2( 0.185, -0.893) * D + uv);
|
|
39
|
+
C0 += getFromColor(vec2( 0.507, 0.064) * D + uv);
|
|
40
|
+
C1 += getToColor(vec2( 0.507, 0.064) * D + uv);
|
|
41
|
+
C0 += getFromColor(vec2( 0.896, 0.412) * D + uv);
|
|
42
|
+
C1 += getToColor(vec2( 0.896, 0.412) * D + uv);
|
|
43
|
+
C0 += getFromColor(vec2(-0.322, -0.933) * D + uv);
|
|
44
|
+
C1 += getToColor(vec2(-0.322, -0.933) * D + uv);
|
|
45
|
+
C0 += getFromColor(vec2(-0.792, -0.598) * D + uv);
|
|
46
|
+
C1 += getToColor(vec2(-0.792, -0.598) * D + uv);
|
|
47
|
+
C0 /= 13.0;
|
|
48
|
+
C1 /= 13.0;
|
|
49
|
+
return mix(C0, C1, T);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
half4 main(float2 _coord) {
|
|
53
|
+
vec2 _uv = _coord / _resolution;
|
|
54
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
55
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
56
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Directional — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Directional.glsl
|
|
2
|
+
// Author: Gaëtan Renaudeau
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image pushes the outgoing one out in a given direction
|
|
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 direction;
|
|
16
|
+
|
|
17
|
+
vec4 transition (vec2 uv) {
|
|
18
|
+
vec2 p = uv + progress * sign(direction);
|
|
19
|
+
vec2 f = fract(p);
|
|
20
|
+
return mix(
|
|
21
|
+
getToColor(f),
|
|
22
|
+
getFromColor(f),
|
|
23
|
+
step(0.0, p.y) * step(p.y, 1.0) * step(0.0, p.x) * step(p.x, 1.0)
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
half4 main(float2 _coord) {
|
|
28
|
+
vec2 _uv = _coord / _resolution;
|
|
29
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
30
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
31
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// DirectionalScaled — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalScaled.glsl
|
|
2
|
+
// Author: Thibaut Foussard
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Like Directional, with both images scaled down while they slide
|
|
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 direction;
|
|
16
|
+
uniform float scale;
|
|
17
|
+
|
|
18
|
+
float parabola(float x) {
|
|
19
|
+
float y = pow(sin(x * acos(-1.0)), 1.);
|
|
20
|
+
return y;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
vec4 transition (vec2 uv) {
|
|
24
|
+
float easedProgress = pow(sin(progress * acos(-1.0) / 2.), 3.);
|
|
25
|
+
vec2 p = uv + easedProgress * sign(direction);
|
|
26
|
+
vec2 f = fract(p);
|
|
27
|
+
|
|
28
|
+
float s = 1. - (1. - (1. / scale)) * parabola(progress);
|
|
29
|
+
f = (f - 0.5) * s + 0.5;
|
|
30
|
+
|
|
31
|
+
float mixer = step(0.0, p.y) * step(p.y, 1.0) * step(0.0, p.x) * step(p.x, 1.0);
|
|
32
|
+
vec4 col = mix(getToColor(f), getFromColor(f), mixer);
|
|
33
|
+
|
|
34
|
+
float border = step(0., f.x) * step(0., (1. - f.x)) * step(0., f.y) * step(0., 1. - f.y);
|
|
35
|
+
col *= border;
|
|
36
|
+
|
|
37
|
+
return col;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
half4 main(float2 _coord) {
|
|
41
|
+
vec2 _uv = _coord / _resolution;
|
|
42
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
43
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
44
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// DoomScreenTransition — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DoomScreenTransition.glsl
|
|
2
|
+
// Author: Zeh Fernando
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image melts down in uneven columns, like the Doom screen wipe
|
|
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 bars;
|
|
16
|
+
|
|
17
|
+
uniform float amplitude;
|
|
18
|
+
|
|
19
|
+
uniform float noise;
|
|
20
|
+
|
|
21
|
+
uniform float frequency;
|
|
22
|
+
|
|
23
|
+
uniform float dripScale;
|
|
24
|
+
|
|
25
|
+
float rand(int num) {
|
|
26
|
+
return fract(mod(float(num) * 67123.313, 12.0) * sin(float(num) * 10.3) * cos(float(num)));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
float wave(int num) {
|
|
30
|
+
float fn = float(num) * frequency * 0.1 * float(bars);
|
|
31
|
+
return cos(fn * 0.5) * cos(fn * 0.13) * sin((fn+10.0) * 0.3) / 2.0 + 0.5;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
float drip(int num) {
|
|
35
|
+
return sin(float(num) / float(bars - 1) * 3.141592) * dripScale;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
float pos(int num) {
|
|
39
|
+
return (noise == 0.0 ? wave(num) : mix(wave(num), rand(num), noise)) + (dripScale == 0.0 ? 0.0 : drip(num));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
vec4 transition(vec2 uv) {
|
|
43
|
+
int bar = int(uv.x * (float(bars)));
|
|
44
|
+
float scale = 1.0 + pos(bar) * amplitude;
|
|
45
|
+
float phase = progress * scale;
|
|
46
|
+
float posY = uv.y / vec2(1.0).y;
|
|
47
|
+
vec2 p;
|
|
48
|
+
vec4 c;
|
|
49
|
+
if (phase + posY < 1.0) {
|
|
50
|
+
p = vec2(uv.x, uv.y + mix(0.0, vec2(1.0).y, phase)) / vec2(1.0).xy;
|
|
51
|
+
c = getFromColor(p);
|
|
52
|
+
} else {
|
|
53
|
+
p = uv.xy / vec2(1.0).xy;
|
|
54
|
+
c = getToColor(p);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
return c;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
half4 main(float2 _coord) {
|
|
62
|
+
vec2 _uv = _coord / _resolution;
|
|
63
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
64
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
65
|
+
}
|
package/sksl/Dreamy.sksl
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Dreamy — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Dreamy.glsl
|
|
2
|
+
// Author: mikolalysenko
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade with a gentle wavy distortion
|
|
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
|
+
vec2 offset(float progress, float x, float theta) {
|
|
16
|
+
float phase = progress*progress + progress + theta;
|
|
17
|
+
float shifty = 0.03*progress*cos(10.0*(progress+x));
|
|
18
|
+
return vec2(0, shifty);
|
|
19
|
+
}
|
|
20
|
+
vec4 transition(vec2 p) {
|
|
21
|
+
return mix(getFromColor(p + offset(progress, p.x, 0.0)), getToColor(p + offset(1.0-progress, p.x, 3.14)), progress);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
half4 main(float2 _coord) {
|
|
25
|
+
vec2 _uv = _coord / _resolution;
|
|
26
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
27
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
28
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// DreamyZoom — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DreamyZoom.glsl
|
|
2
|
+
// Author: Zeh Fernando
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Zooms and rotates into a bright flash, then out 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 float rotation;
|
|
16
|
+
|
|
17
|
+
uniform float scale;
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 uv) {
|
|
20
|
+
|
|
21
|
+
float phase = progress < 0.5 ? progress * 2.0 : (progress - 0.5) * 2.0;
|
|
22
|
+
float angleOffset = progress < 0.5 ? mix(0.0, rotation * 0.03926990816987241548078304229099, phase) : mix(-rotation * 0.03926990816987241548078304229099, 0.0, phase);
|
|
23
|
+
float newScale = progress < 0.5 ? mix(1.0, scale, phase) : mix(scale, 1.0, phase);
|
|
24
|
+
|
|
25
|
+
vec2 center = vec2(0, 0);
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
vec2 assumedCenter = vec2(0.5, 0.5);
|
|
29
|
+
vec2 p = (uv.xy - vec2(0.5, 0.5)) / newScale * vec2(ratio, 1.0);
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
float angle = atan(p.y, p.x) + angleOffset;
|
|
33
|
+
float dist = distance(center, p);
|
|
34
|
+
p.x = cos(angle) * dist / ratio + 0.5;
|
|
35
|
+
p.y = sin(angle) * dist + 0.5;
|
|
36
|
+
vec4 c = progress < 0.5 ? getFromColor(p) : getToColor(p);
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
return c + (progress < 0.5 ? mix(0.0, 1.0, phase) : mix(1.0, 0.0, phase));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
half4 main(float2 _coord) {
|
|
43
|
+
vec2 _uv = _coord / _resolution;
|
|
44
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
45
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
46
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// Drop_Zone_Flicker — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Drop_Zone_Flicker.glsl
|
|
2
|
+
// Author: bread
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A flickering glitch with RGB offset, ghosting and scanlines that flashes back to the outgoing 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 frameRate;
|
|
16
|
+
uniform float rgbOffset;
|
|
17
|
+
uniform float blockAmount;
|
|
18
|
+
uniform float ghostAmount;
|
|
19
|
+
uniform float redCyan;
|
|
20
|
+
uniform float scanline;
|
|
21
|
+
|
|
22
|
+
float sat(float x) {
|
|
23
|
+
return clamp(x, 0.0, 1.0);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
float hash12(vec2 p) {
|
|
27
|
+
p = fract(p * vec2(443.8975, 397.2973));
|
|
28
|
+
p += dot(p, p.yx + 19.19);
|
|
29
|
+
return fract(p.x * p.y);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
vec2 safeUv(vec2 uv) {
|
|
33
|
+
return clamp(uv, vec2(0.001), vec2(0.999));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
float frameReveal(float f) {
|
|
37
|
+
if (f < 0.5) return 0.00;
|
|
38
|
+
if (f < 1.5) return 0.28;
|
|
39
|
+
if (f < 2.5) return 0.43;
|
|
40
|
+
if (f < 3.5) return 0.46;
|
|
41
|
+
if (f < 4.5) return 0.38;
|
|
42
|
+
if (f < 5.5) return 0.48;
|
|
43
|
+
if (f < 6.5) return 0.26;
|
|
44
|
+
if (f < 7.5) return 0.10;
|
|
45
|
+
if (f < 8.5) return 0.00;
|
|
46
|
+
if (f < 9.5) return 0.00;
|
|
47
|
+
if (f < 10.5) return 0.30;
|
|
48
|
+
if (f < 11.5) return 0.58;
|
|
49
|
+
if (f < 12.5) return 1.00;
|
|
50
|
+
if (f < 13.5) return 0.70;
|
|
51
|
+
if (f < 14.5) return 0.42;
|
|
52
|
+
if (f < 15.5) return 0.55;
|
|
53
|
+
if (f < 16.5) return 0.72;
|
|
54
|
+
if (f < 17.5) return 0.88;
|
|
55
|
+
if (f < 18.5) return 0.34;
|
|
56
|
+
if (f < 19.5) return 0.48;
|
|
57
|
+
if (f < 20.5) return 0.56;
|
|
58
|
+
if (f < 21.5) return 0.76;
|
|
59
|
+
if (f < 22.5) return 0.93;
|
|
60
|
+
return 1.00;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
float frameGlitch(float f) {
|
|
64
|
+
if (f < 0.5) return 0.00;
|
|
65
|
+
if (f < 6.5) return 0.92;
|
|
66
|
+
if (f < 10.5) return 0.38;
|
|
67
|
+
if (f < 11.5) return 0.78;
|
|
68
|
+
if (f < 12.5) return 0.12;
|
|
69
|
+
if (f < 17.5) return 0.74;
|
|
70
|
+
if (f < 22.5) return 0.88;
|
|
71
|
+
if (f < 23.5) return 0.28;
|
|
72
|
+
return 0.00;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
vec4 chromaFrom(vec2 uv, float amt) {
|
|
76
|
+
vec2 o = vec2(amt, 0.0);
|
|
77
|
+
return vec4(
|
|
78
|
+
getFromColor(safeUv(uv + o)).r,
|
|
79
|
+
getFromColor(safeUv(uv)).g,
|
|
80
|
+
getFromColor(safeUv(uv - o)).b,
|
|
81
|
+
1.0
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
vec4 chromaTo(vec2 uv, float amt) {
|
|
86
|
+
vec2 o = vec2(amt, 0.0);
|
|
87
|
+
return vec4(
|
|
88
|
+
getToColor(safeUv(uv - o)).r,
|
|
89
|
+
getToColor(safeUv(uv)).g,
|
|
90
|
+
getToColor(safeUv(uv + o)).b,
|
|
91
|
+
1.0
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
float blockMask(vec2 uv, float f) {
|
|
96
|
+
vec2 big = floor(uv * vec2(4.0, 2.0));
|
|
97
|
+
vec2 small = floor(uv * vec2(8.0, 4.0));
|
|
98
|
+
|
|
99
|
+
float wide = step(0.48, hash12(vec2(big.x, f * 1.37)));
|
|
100
|
+
float chunks = step(0.56, hash12(small + vec2(f * 2.11, f * 0.73)));
|
|
101
|
+
|
|
102
|
+
float verticalCut = smoothstep(
|
|
103
|
+
-0.035,
|
|
104
|
+
0.035,
|
|
105
|
+
uv.x - mix(0.18, 0.78, hash12(vec2(f, 4.7)))
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
return sat(mix(wide, chunks, 0.38) * 0.72 + verticalCut * 0.28);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
vec4 transition(vec2 uv) {
|
|
112
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
113
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
114
|
+
|
|
115
|
+
float f = floor(progress * frameRate);
|
|
116
|
+
float reveal = frameReveal(f);
|
|
117
|
+
float glitch = frameGlitch(f);
|
|
118
|
+
|
|
119
|
+
float rnd = hash12(vec2(f, 9.13));
|
|
120
|
+
vec2 jitter = vec2(
|
|
121
|
+
(rnd - 0.5) * 0.042,
|
|
122
|
+
(hash12(vec2(f, 2.71)) - 0.5) * 0.010
|
|
123
|
+
) * glitch;
|
|
124
|
+
|
|
125
|
+
vec2 fromUv = safeUv(uv + jitter);
|
|
126
|
+
vec2 toUv = safeUv(uv - jitter * 0.55);
|
|
127
|
+
|
|
128
|
+
float block = blockMask(uv, f);
|
|
129
|
+
float localReveal = sat(
|
|
130
|
+
reveal +
|
|
131
|
+
(block - 0.5) * blockAmount * glitch +
|
|
132
|
+
(hash12(vec2(f, floor(uv.y * 9.0))) - 0.5) * 0.18 * glitch
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
localReveal = smoothstep(0.22, 0.78, localReveal);
|
|
136
|
+
|
|
137
|
+
vec4 oldClip = chromaFrom(fromUv, rgbOffset * glitch);
|
|
138
|
+
vec4 newClip = chromaTo(toUv, rgbOffset * glitch);
|
|
139
|
+
|
|
140
|
+
vec4 color = mix(oldClip, newClip, localReveal);
|
|
141
|
+
|
|
142
|
+
float leftWash = (1.0 - smoothstep(0.10, 0.78, uv.x)) * glitch;
|
|
143
|
+
float cyanWash = smoothstep(0.08, 0.62, uv.x) * (1.0 - smoothstep(0.86, 1.0, uv.x)) * glitch;
|
|
144
|
+
|
|
145
|
+
vec3 redGhost = oldClip.rgb * vec3(1.34, 0.42, 0.38);
|
|
146
|
+
vec3 cyanGhost = newClip.rgb * vec3(0.48, 1.12, 1.24);
|
|
147
|
+
|
|
148
|
+
color.rgb = mix(color.rgb, redGhost, leftWash * redCyan * 0.42);
|
|
149
|
+
color.rgb = mix(color.rgb, cyanGhost, cyanWash * redCyan * 0.30);
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
float oldReturn = glitch * (1.0 - smoothstep(0.94, 1.0, reveal));
|
|
154
|
+
oldReturn *= 0.18 + 0.52 * (1.0 - abs(localReveal - 0.5) * 2.0);
|
|
155
|
+
color.rgb = mix(color.rgb, oldClip.rgb, oldReturn * ghostAmount);
|
|
156
|
+
|
|
157
|
+
float lines = sin((uv.y + f * 0.017) * 1080.0);
|
|
158
|
+
color.rgb += lines * scanline * glitch;
|
|
159
|
+
|
|
160
|
+
float exposurePulse = (hash12(vec2(f, 12.4)) - 0.35) * 0.10 * glitch;
|
|
161
|
+
color.rgb += exposurePulse;
|
|
162
|
+
|
|
163
|
+
return vec4(sat(color.r), sat(color.g), sat(color.b), 1.0);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
half4 main(float2 _coord) {
|
|
167
|
+
vec2 _uv = _coord / _resolution;
|
|
168
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
169
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
170
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// EdgeTransition — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/EdgeTransition.glsl
|
|
2
|
+
// Author: Woohyun Kim
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Both images fade through black with their edges glowing
|
|
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 edge_thickness;
|
|
16
|
+
uniform float edge_brightness;
|
|
17
|
+
|
|
18
|
+
vec4 detectEdgeColor(vec3[9] c) {
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
vec3 dx = 2.0 * abs(c[7]-c[1]) + abs(c[2] - c[6]) + abs(c[8] - c[0]);
|
|
25
|
+
vec3 dy = 2.0 * abs(c[3]-c[5]) + abs(c[6] - c[8]) + abs(c[0] - c[2]);
|
|
26
|
+
float delta = length(0.25 * (dx + dy) * 0.5);
|
|
27
|
+
return vec4(clamp(edge_brightness * delta, 0.0, 1.0) * c[4], 1.0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
vec4 getFromEdgeColor(vec2 uv) {
|
|
31
|
+
vec3 c[9];
|
|
32
|
+
for (int i=0; i < 3; ++i) for (int j=0; j < 3; ++j)
|
|
33
|
+
{
|
|
34
|
+
vec4 color = getFromColor(uv + edge_thickness * vec2(i-1,j-1));
|
|
35
|
+
c[3*i + j] = color.rgb;
|
|
36
|
+
}
|
|
37
|
+
return detectEdgeColor(c);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
vec4 getToEdgeColor(vec2 uv) {
|
|
41
|
+
vec3 c[9];
|
|
42
|
+
for (int i=0; i < 3; ++i) for (int j=0; j < 3; ++j)
|
|
43
|
+
{
|
|
44
|
+
vec4 color = getToColor(uv + edge_thickness * vec2(i-1,j-1));
|
|
45
|
+
c[3*i + j] = color.rgb;
|
|
46
|
+
}
|
|
47
|
+
return detectEdgeColor(c);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
vec4 transition (vec2 uv) {
|
|
51
|
+
vec4 start = mix(getFromColor(uv), getFromEdgeColor(uv), clamp(2.0 * progress, 0.0, 1.0));
|
|
52
|
+
vec4 end = mix(getToEdgeColor(uv), getToColor(uv), clamp(2.0 * (progress - 0.5), 0.0, 1.0));
|
|
53
|
+
return mix(
|
|
54
|
+
start,
|
|
55
|
+
end,
|
|
56
|
+
progress
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
half4 main(float2 _coord) {
|
|
61
|
+
vec2 _uv = _coord / _resolution;
|
|
62
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
63
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
64
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// FilmBurn — generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl
|
|
2
|
+
// Author: Anastasia Dunbar
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Glowing film-burn light leaks wash over the image and 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 float Seed;
|
|
16
|
+
float sigmoid(float x, float a) {
|
|
17
|
+
float b = pow(x*2.,a)/2.;
|
|
18
|
+
if (x > .5) {
|
|
19
|
+
b = 1.-pow(2.-(x*2.),a)/2.;
|
|
20
|
+
}
|
|
21
|
+
return b;
|
|
22
|
+
}
|
|
23
|
+
float rand(float co){
|
|
24
|
+
return fract(sin((co*24.9898)+Seed)*43758.5453);
|
|
25
|
+
}
|
|
26
|
+
float rand(vec2 co){
|
|
27
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
28
|
+
}
|
|
29
|
+
float apow(float a,float b) { return pow(abs(a),b)*sign(b); }
|
|
30
|
+
vec3 pow3(vec3 a,vec3 b) { return vec3(apow(a.r,b.r),apow(a.g,b.g),apow(a.b,b.b)); }
|
|
31
|
+
float smooth_mix(float a,float b,float c) { return mix(a,b,sigmoid(c,2.)); }
|
|
32
|
+
float random(vec2 co, float shft){
|
|
33
|
+
co += 10.;
|
|
34
|
+
return smooth_mix(fract(sin(dot(co.xy ,vec2(12.9898+(floor(shft)*.5),78.233+Seed))) * 43758.5453),fract(sin(dot(co.xy ,vec2(12.9898+(floor(shft+1.)*.5),78.233+Seed))) * 43758.5453),fract(shft));
|
|
35
|
+
}
|
|
36
|
+
float smooth_random(vec2 co, float shft) {
|
|
37
|
+
return smooth_mix(smooth_mix(random(floor(co),shft),random(floor(co+vec2(1.,0.)),shft),fract(co.x)),smooth_mix(random(floor(co+vec2(0.,1.)),shft),random(floor(co+vec2(1.,1.)),shft),fract(co.x)),fract(co.y));
|
|
38
|
+
}
|
|
39
|
+
vec4 blendedColor(vec2 p) {
|
|
40
|
+
return mix(getFromColor(p), getToColor(p), sigmoid(progress,10.));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
vec4 transition(vec2 p) {
|
|
44
|
+
vec3 f = vec3(0.);
|
|
45
|
+
for (float i = 0.; i < 13.; i++) {
|
|
46
|
+
f += sin(((p.x*rand(i)*6.)+(progress*8.))+rand(i+1.43))*sin(((p.y*rand(i+4.4)*6.)+(progress*6.))+rand(i+2.4));
|
|
47
|
+
f += 1.-clamp(length(p-vec2(smooth_random(vec2(progress*1.3),i+1.),smooth_random(vec2(progress*.5),i+6.25)))*mix(20.,70.,rand(i)),0.,1.);
|
|
48
|
+
}
|
|
49
|
+
f += 4.;
|
|
50
|
+
f /= 11.;
|
|
51
|
+
f = pow3(f*vec3(1.,0.7,0.6),vec3(1.,2.-sin(progress*3.14159265358979323),1.3));
|
|
52
|
+
f *= sin(progress*3.14159265358979323);
|
|
53
|
+
|
|
54
|
+
p -= .5;
|
|
55
|
+
p *= 1.+(smooth_random(vec2(progress*5.),6.3)*sin(progress*3.14159265358979323)*.05);
|
|
56
|
+
p += .5;
|
|
57
|
+
|
|
58
|
+
vec4 blurred_image = vec4(0.);
|
|
59
|
+
float bluramount = sin(progress*3.14159265358979323)*.03;
|
|
60
|
+
|
|
61
|
+
for (float i = 0.; i < 50.; i++) {
|
|
62
|
+
vec2 q = vec2(cos(degrees((i/50.)*360.)),sin(degrees((i/50.)*360.))) * (rand(vec2(i,p.x+p.y))+bluramount);
|
|
63
|
+
vec2 uv2 = p+(q*bluramount);
|
|
64
|
+
blurred_image += blendedColor(uv2);
|
|
65
|
+
}
|
|
66
|
+
blurred_image /= 50.;
|
|
67
|
+
|
|
68
|
+
return blurred_image+vec4(f,0.);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
half4 main(float2 _coord) {
|
|
72
|
+
vec2 _uv = _coord / _resolution;
|
|
73
|
+
vec4 _c = clamp(transition(vec2(_uv.x, 1.0 - _uv.y)), 0.0, 1.0);
|
|
74
|
+
return half4(_c.rgb * _c.a, _c.a);
|
|
75
|
+
}
|