gl-transitions 1.74.0 → 1.76.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 +78 -0
- package/compatibility.json +2070 -0
- package/glsl3/AdvancedMosaic.glsl +21 -0
- package/glsl3/BlockDissolve.glsl +16 -0
- package/glsl3/BookFlip.glsl +37 -0
- package/glsl3/Bounce.glsl +35 -0
- package/glsl3/BowTieHorizontal.glsl +123 -0
- package/glsl3/BowTieVertical.glsl +117 -0
- package/glsl3/BowTieWithParameter.glsl +74 -0
- package/glsl3/Box.glsl +33 -0
- package/glsl3/ButterflyWaveScrawler.glsl +33 -0
- package/glsl3/CircleCrop.glsl +20 -0
- package/glsl3/ColourDistance.glsl +19 -0
- package/glsl3/CrazyParametricFun.glsl +20 -0
- package/glsl3/CrossZoom.glsl +68 -0
- package/glsl3/DefocusBlur.glsl +47 -0
- package/glsl3/Directional.glsl +18 -0
- package/glsl3/DirectionalScaled.glsl +35 -0
- package/glsl3/DoomScreenTransition.glsl +62 -0
- package/glsl3/Dreamy.glsl +14 -0
- package/glsl3/DreamyZoom.glsl +43 -0
- package/glsl3/Drop_Zone_Flicker.glsl +159 -0
- package/glsl3/EdgeTransition.glsl +50 -0
- package/glsl3/FilmBurn.glsl +63 -0
- package/glsl3/Fold.glsl +12 -0
- package/glsl3/GlitchDisplace.glsl +78 -0
- package/glsl3/GlitchMemories.glsl +17 -0
- package/glsl3/GridFlip.glsl +77 -0
- package/glsl3/HSVfade.glsl +29 -0
- package/glsl3/HorizontalClose.glsl +16 -0
- package/glsl3/HorizontalOpen.glsl +18 -0
- package/glsl3/InvertedPageCurl.glsl +228 -0
- package/glsl3/LeftRight.glsl +28 -0
- package/glsl3/LinearBlur.glsl +30 -0
- package/glsl3/Mosaic.glsl +45 -0
- package/glsl3/Overexposure.glsl +25 -0
- package/glsl3/PolkaDotsCurtain.glsl +14 -0
- package/glsl3/PuzzleRight.glsl +57 -0
- package/glsl3/Radial.glsl +19 -0
- package/glsl3/Rectangle.glsl +29 -0
- package/glsl3/RectangleCrop.glsl +30 -0
- package/glsl3/Revolve_Left.glsl +98 -0
- package/glsl3/Rolls.glsl +42 -0
- package/glsl3/RotateScaleVanish.glsl +42 -0
- package/glsl3/SimpleFlip.glsl +14 -0
- package/glsl3/SimpleZoom.glsl +20 -0
- package/glsl3/SimpleZoomOut.glsl +23 -0
- package/glsl3/Slides.glsl +41 -0
- package/glsl3/StarWipe.glsl +51 -0
- package/glsl3/StaticFade.glsl +47 -0
- package/glsl3/StereoViewer.glsl +214 -0
- package/glsl3/StripDatamoshGlitch.glsl +187 -0
- package/glsl3/Swirl.glsl +34 -0
- package/glsl3/TVStatic.glsl +29 -0
- package/glsl3/TilesWave.glsl +63 -0
- package/glsl3/TopBottom.glsl +27 -0
- package/glsl3/VerticalClose.glsl +16 -0
- package/glsl3/VerticalOpen.glsl +17 -0
- package/glsl3/WaterDrop.glsl +21 -0
- package/glsl3/ZoomInCircles.glsl +40 -0
- package/glsl3/ZoomLeftWipe.glsl +36 -0
- package/glsl3/ZoomRigthWipe.glsl +36 -0
- package/glsl3/angular.glsl +25 -0
- package/glsl3/burn.glsl +14 -0
- package/glsl3/burn0.glsl +55 -0
- package/glsl3/cannabisleaf.glsl +18 -0
- package/glsl3/chessboard.glsl +28 -0
- package/glsl3/circle.glsl +24 -0
- package/glsl3/circleopen.glsl +18 -0
- package/glsl3/colorphase.glsl +19 -0
- package/glsl3/coord-from-in.glsl +18 -0
- package/glsl3/crosshatch.glsl +20 -0
- package/glsl3/crosswarp.glsl +10 -0
- package/glsl3/cube.glsl +71 -0
- package/glsl3/directional-easing.glsl +19 -0
- package/glsl3/directionalwarp.glsl +20 -0
- package/glsl3/directionalwipe.glsl +22 -0
- package/glsl3/displacement.glsl +26 -0
- package/glsl3/dissolve.glsl +54 -0
- package/glsl3/doorway.glsl +55 -0
- package/glsl3/fade.glsl +13 -0
- package/glsl3/fadecolor.glsl +15 -0
- package/glsl3/fadegrayscale.glsl +21 -0
- package/glsl3/flyeye.glsl +20 -0
- package/glsl3/fragment.glsl +54 -0
- package/glsl3/heart.glsl +19 -0
- package/glsl3/hexagonalize.glsl +78 -0
- package/glsl3/kaleidoscope.glsl +25 -0
- package/glsl3/luma.glsl +15 -0
- package/glsl3/luminance_melt.glsl +131 -0
- package/glsl3/morph.glsl +20 -0
- package/glsl3/mosaic_transition.glsl +20 -0
- package/glsl3/multiply_blend.glsl +19 -0
- package/glsl3/old_tv_lost_signal.glsl +51 -0
- package/glsl3/parametric_glitch.glsl +29 -0
- package/glsl3/perlin.glsl +66 -0
- package/glsl3/pinwheel.glsl +20 -0
- package/glsl3/pixelize.glsl +21 -0
- package/glsl3/polar_function.glsl +24 -0
- package/glsl3/powerKaleido.glsl +57 -0
- package/glsl3/randomNoisex.glsl +15 -0
- package/glsl3/randomsquares.glsl +20 -0
- package/glsl3/ripple.glsl +20 -0
- package/glsl3/rotateTransition.glsl +22 -0
- package/glsl3/rotate_scale_fade.glsl +39 -0
- package/glsl3/scale-in.glsl +18 -0
- package/glsl3/splitSlideInHorizontal.glsl +26 -0
- package/glsl3/splitSlideInOutHorizontal.glsl +23 -0
- package/glsl3/splitSlideInOutVertical.glsl +23 -0
- package/glsl3/splitSlideInVertical.glsl +24 -0
- package/glsl3/splitSlideOutHorizontal.glsl +22 -0
- package/glsl3/splitSlideOutVertical.glsl +22 -0
- package/glsl3/squareswire.glsl +26 -0
- package/glsl3/squeeze.glsl +23 -0
- package/glsl3/static_wipe.glsl +39 -0
- package/glsl3/swap.glsl +64 -0
- package/glsl3/tangentMotionBlur.glsl +139 -0
- package/glsl3/undulatingBurnOut.glsl +56 -0
- package/glsl3/wind.glsl +25 -0
- package/glsl3/windowblinds.glsl +18 -0
- package/glsl3/windowslice.glsl +16 -0
- package/glsl3/wipeDown.glsl +12 -0
- package/glsl3/wipeLeft.glsl +12 -0
- package/glsl3/wipeRight.glsl +12 -0
- package/glsl3/wipeUp.glsl +12 -0
- package/glsl3/x_axis_translation.glsl +21 -0
- package/glsl3/zoomInOut.glsl +20 -0
- package/index.d.ts +61 -0
- package/layouts.json +2956 -0
- package/llms-full.txt +1707 -0
- package/llms.txt +153 -0
- package/msl/AdvancedMosaic.metal +136 -0
- package/msl/BlockDissolve.metal +108 -0
- package/msl/BookFlip.metal +191 -0
- package/msl/Bounce.metal +128 -0
- package/msl/BowTieHorizontal.metal +375 -0
- package/msl/BowTieVertical.metal +375 -0
- package/msl/BowTieWithParameter.metal +361 -0
- package/msl/Box.metal +204 -0
- package/msl/ButterflyWaveScrawler.metal +190 -0
- package/msl/CircleCrop.metal +117 -0
- package/msl/ColourDistance.metal +110 -0
- package/msl/CrazyParametricFun.metal +139 -0
- package/msl/CrossZoom.metal +274 -0
- package/msl/DefocusBlur.metal +297 -0
- package/msl/Directional.metal +107 -0
- package/msl/DirectionalScaled.metal +147 -0
- package/msl/DoomScreenTransition.metal +212 -0
- package/msl/Dreamy.metal +133 -0
- package/msl/DreamyZoom.metal +182 -0
- package/msl/Drop_Zone_Flicker.metal +561 -0
- package/msl/EdgeTransition.metal +277 -0
- package/msl/FilmBurn.metal +425 -0
- package/msl/Fold.metal +110 -0
- package/msl/GlitchDisplace.metal +374 -0
- package/msl/GlitchMemories.metal +146 -0
- package/msl/GridFlip.metal +285 -0
- package/msl/HSVfade.metal +161 -0
- package/msl/HorizontalClose.metal +100 -0
- package/msl/HorizontalOpen.metal +103 -0
- package/msl/InvertedPageCurl.metal +762 -0
- package/msl/LeftRight.metal +138 -0
- package/msl/LinearBlur.metal +169 -0
- package/msl/Mosaic.metal +212 -0
- package/msl/Overexposure.metal +130 -0
- package/msl/PolkaDotsCurtain.metal +112 -0
- package/msl/PuzzleRight.metal +262 -0
- package/msl/Radial.metal +102 -0
- package/msl/Rectangle.metal +129 -0
- package/msl/RectangleCrop.metal +127 -0
- package/msl/Revolve_Left.metal +363 -0
- package/msl/Rolls.metal +209 -0
- package/msl/RotateScaleVanish.metal +227 -0
- package/msl/SimpleFlip.metal +110 -0
- package/msl/SimpleZoom.metal +116 -0
- package/msl/SimpleZoomOut.metal +127 -0
- package/msl/Slides.metal +244 -0
- package/msl/StarWipe.metal +204 -0
- package/msl/StaticFade.metal +193 -0
- package/msl/StereoViewer.metal +707 -0
- package/msl/StripDatamoshGlitch.metal +828 -0
- package/msl/Swirl.metal +152 -0
- package/msl/TVStatic.metal +136 -0
- package/msl/TilesWave.metal +290 -0
- package/msl/TopBottom.metal +138 -0
- package/msl/VerticalClose.metal +100 -0
- package/msl/VerticalOpen.metal +103 -0
- package/msl/WaterDrop.metal +126 -0
- package/msl/ZoomInCircles.metal +169 -0
- package/msl/ZoomLeftWipe.metal +152 -0
- package/msl/ZoomRigthWipe.metal +152 -0
- package/msl/angular.metal +111 -0
- package/msl/burn.metal +103 -0
- package/msl/burn0.metal +236 -0
- package/msl/cannabisleaf.metal +120 -0
- package/msl/chessboard.metal +144 -0
- package/msl/circle.metal +115 -0
- package/msl/circleopen.metal +124 -0
- package/msl/colorphase.metal +106 -0
- package/msl/coord-from-in.metal +111 -0
- package/msl/crosshatch.metal +126 -0
- package/msl/crosswarp.metal +103 -0
- package/msl/cube.metal +259 -0
- package/msl/directional-easing.metal +111 -0
- package/msl/directionalwarp.metal +121 -0
- package/msl/directionalwipe.metal +120 -0
- package/msl/displacement.metal +129 -0
- package/msl/dissolve.metal +146 -0
- package/msl/doorway.metal +210 -0
- package/msl/fade.metal +95 -0
- package/msl/fadecolor.metal +104 -0
- package/msl/fadegrayscale.metal +123 -0
- package/msl/flyeye.metal +133 -0
- package/msl/fragment.metal +276 -0
- package/msl/heart.metal +134 -0
- package/msl/hexagonalize.metal +274 -0
- package/msl/kaleidoscope.metal +157 -0
- package/msl/luma.metal +113 -0
- package/msl/luminance_melt.metal +337 -0
- package/msl/morph.metal +131 -0
- package/msl/mosaic_transition.metal +137 -0
- package/msl/multiply_blend.metal +127 -0
- package/msl/old_tv_lost_signal.metal +172 -0
- package/msl/parametric_glitch.metal +152 -0
- package/msl/perlin.metal +206 -0
- package/msl/pinwheel.metal +112 -0
- package/msl/pixelize.metal +134 -0
- package/msl/polar_function.metal +116 -0
- package/msl/powerKaleido.metal +304 -0
- package/msl/randomNoisex.metal +115 -0
- package/msl/randomsquares.metal +118 -0
- package/msl/ripple.metal +113 -0
- package/msl/rotateTransition.metal +116 -0
- package/msl/rotate_scale_fade.metal +167 -0
- package/msl/scale-in.metal +111 -0
- package/msl/splitSlideInHorizontal.metal +147 -0
- package/msl/splitSlideInOutHorizontal.metal +138 -0
- package/msl/splitSlideInOutVertical.metal +138 -0
- package/msl/splitSlideInVertical.metal +144 -0
- package/msl/splitSlideOutHorizontal.metal +131 -0
- package/msl/splitSlideOutVertical.metal +131 -0
- package/msl/squareswire.metal +144 -0
- package/msl/squeeze.metal +133 -0
- package/msl/static_wipe.metal +147 -0
- package/msl/swap.metal +256 -0
- package/msl/tangentMotionBlur.metal +583 -0
- package/msl/undulatingBurnOut.metal +217 -0
- package/msl/wind.metal +131 -0
- package/msl/windowblinds.metal +107 -0
- package/msl/windowslice.metal +108 -0
- package/msl/wipeDown.metal +105 -0
- package/msl/wipeLeft.metal +105 -0
- package/msl/wipeRight.metal +105 -0
- package/msl/wipeUp.metal +105 -0
- package/msl/x_axis_translation.metal +110 -0
- package/msl/zoomInOut.metal +125 -0
- package/package.json +1 -1
- package/skills/gl-transitions/SKILL.md +46 -0
- package/skills/gl-transitions/references/catalog.md +224 -0
- package/skills/gl-transitions/references/skia.md +118 -0
- package/skills/gl-transitions/references/video.md +71 -0
- package/skills/gl-transitions/references/webgl.md +122 -0
- package/sksl/index.d.ts +4 -0
- package/sksl/index.js +1 -0
- package/wgsl/AdvancedMosaic.wgsl +108 -0
- package/wgsl/BlockDissolve.wgsl +78 -0
- package/wgsl/BookFlip.wgsl +157 -0
- package/wgsl/Bounce.wgsl +98 -0
- package/wgsl/BowTieHorizontal.wgsl +331 -0
- package/wgsl/BowTieVertical.wgsl +331 -0
- package/wgsl/BowTieWithParameter.wgsl +313 -0
- package/wgsl/Box.wgsl +176 -0
- package/wgsl/ButterflyWaveScrawler.wgsl +158 -0
- package/wgsl/CircleCrop.wgsl +88 -0
- package/wgsl/ColourDistance.wgsl +82 -0
- package/wgsl/CrazyParametricFun.wgsl +111 -0
- package/wgsl/CrossZoom.wgsl +219 -0
- package/wgsl/DefocusBlur.wgsl +269 -0
- package/wgsl/Directional.wgsl +79 -0
- package/wgsl/DirectionalScaled.wgsl +117 -0
- package/wgsl/DoomScreenTransition.wgsl +171 -0
- package/wgsl/Dreamy.wgsl +102 -0
- package/wgsl/DreamyZoom.wgsl +154 -0
- package/wgsl/Drop_Zone_Flicker.wgsl +513 -0
- package/wgsl/EdgeTransition.wgsl +216 -0
- package/wgsl/FilmBurn.wgsl +361 -0
- package/wgsl/Fold.wgsl +82 -0
- package/wgsl/GlitchDisplace.wgsl +327 -0
- package/wgsl/GlitchMemories.wgsl +118 -0
- package/wgsl/GridFlip.wgsl +250 -0
- package/wgsl/HSVfade.wgsl +131 -0
- package/wgsl/HorizontalClose.wgsl +72 -0
- package/wgsl/HorizontalOpen.wgsl +75 -0
- package/wgsl/InvertedPageCurl.wgsl +690 -0
- package/wgsl/LeftRight.wgsl +109 -0
- package/wgsl/LinearBlur.wgsl +131 -0
- package/wgsl/Mosaic.wgsl +174 -0
- package/wgsl/Overexposure.wgsl +102 -0
- package/wgsl/PolkaDotsCurtain.wgsl +83 -0
- package/wgsl/PuzzleRight.wgsl +230 -0
- package/wgsl/Radial.wgsl +74 -0
- package/wgsl/Rectangle.wgsl +100 -0
- package/wgsl/RectangleCrop.wgsl +98 -0
- package/wgsl/Revolve_Left.wgsl +314 -0
- package/wgsl/Rolls.wgsl +181 -0
- package/wgsl/RotateScaleVanish.wgsl +199 -0
- package/wgsl/SimpleFlip.wgsl +82 -0
- package/wgsl/SimpleZoom.wgsl +85 -0
- package/wgsl/SimpleZoomOut.wgsl +96 -0
- package/wgsl/Slides.wgsl +216 -0
- package/wgsl/StarWipe.wgsl +169 -0
- package/wgsl/StaticFade.wgsl +159 -0
- package/wgsl/StereoViewer.wgsl +625 -0
- package/wgsl/StripDatamoshGlitch.wgsl +755 -0
- package/wgsl/Swirl.wgsl +124 -0
- package/wgsl/TVStatic.wgsl +106 -0
- package/wgsl/TilesWave.wgsl +262 -0
- package/wgsl/TopBottom.wgsl +109 -0
- package/wgsl/VerticalClose.wgsl +72 -0
- package/wgsl/VerticalOpen.wgsl +75 -0
- package/wgsl/WaterDrop.wgsl +98 -0
- package/wgsl/ZoomInCircles.wgsl +138 -0
- package/wgsl/ZoomLeftWipe.wgsl +121 -0
- package/wgsl/ZoomRigthWipe.wgsl +121 -0
- package/wgsl/angular.wgsl +83 -0
- package/wgsl/burn.wgsl +74 -0
- package/wgsl/burn0.wgsl +198 -0
- package/wgsl/cannabisleaf.wgsl +92 -0
- package/wgsl/chessboard.wgsl +116 -0
- package/wgsl/circle.wgsl +87 -0
- package/wgsl/circleopen.wgsl +96 -0
- package/wgsl/colorphase.wgsl +77 -0
- package/wgsl/coord-from-in.wgsl +83 -0
- package/wgsl/crosshatch.wgsl +96 -0
- package/wgsl/crosswarp.wgsl +75 -0
- package/wgsl/cube.wgsl +217 -0
- package/wgsl/directional-easing.wgsl +83 -0
- package/wgsl/directionalwarp.wgsl +92 -0
- package/wgsl/directionalwipe.wgsl +91 -0
- package/wgsl/displacement.wgsl +96 -0
- package/wgsl/dissolve.wgsl +116 -0
- package/wgsl/doorway.wgsl +174 -0
- package/wgsl/fade.wgsl +67 -0
- package/wgsl/fadecolor.wgsl +75 -0
- package/wgsl/fadegrayscale.wgsl +93 -0
- package/wgsl/flyeye.wgsl +105 -0
- package/wgsl/fragment.wgsl +227 -0
- package/wgsl/heart.wgsl +103 -0
- package/wgsl/hexagonalize.wgsl +238 -0
- package/wgsl/kaleidoscope.wgsl +124 -0
- package/wgsl/luma.wgsl +80 -0
- package/wgsl/luminance_melt.wgsl +299 -0
- package/wgsl/morph.wgsl +103 -0
- package/wgsl/mosaic_transition.wgsl +107 -0
- package/wgsl/multiply_blend.wgsl +96 -0
- package/wgsl/old_tv_lost_signal.wgsl +142 -0
- package/wgsl/parametric_glitch.wgsl +124 -0
- package/wgsl/perlin.wgsl +174 -0
- package/wgsl/pinwheel.wgsl +84 -0
- package/wgsl/pixelize.wgsl +105 -0
- package/wgsl/polar_function.wgsl +88 -0
- package/wgsl/powerKaleido.wgsl +254 -0
- package/wgsl/randomNoisex.wgsl +85 -0
- package/wgsl/randomsquares.wgsl +87 -0
- package/wgsl/ripple.wgsl +85 -0
- package/wgsl/rotateTransition.wgsl +85 -0
- package/wgsl/rotate_scale_fade.wgsl +138 -0
- package/wgsl/scale-in.wgsl +79 -0
- package/wgsl/splitSlideInHorizontal.wgsl +118 -0
- package/wgsl/splitSlideInOutHorizontal.wgsl +109 -0
- package/wgsl/splitSlideInOutVertical.wgsl +109 -0
- package/wgsl/splitSlideInVertical.wgsl +115 -0
- package/wgsl/splitSlideOutHorizontal.wgsl +102 -0
- package/wgsl/splitSlideOutVertical.wgsl +102 -0
- package/wgsl/squareswire.wgsl +115 -0
- package/wgsl/squeeze.wgsl +105 -0
- package/wgsl/static_wipe.wgsl +117 -0
- package/wgsl/swap.wgsl +218 -0
- package/wgsl/tangentMotionBlur.wgsl +503 -0
- package/wgsl/undulatingBurnOut.wgsl +181 -0
- package/wgsl/wind.wgsl +101 -0
- package/wgsl/windowblinds.wgsl +79 -0
- package/wgsl/windowslice.wgsl +80 -0
- package/wgsl/wipeDown.wgsl +77 -0
- package/wgsl/wipeLeft.wgsl +77 -0
- package/wgsl/wipeRight.wgsl +77 -0
- package/wgsl/wipeUp.wgsl +77 -0
- package/wgsl/x_axis_translation.wgsl +82 -0
- package/wgsl/zoomInOut.wgsl +94 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// AdvancedMosaic — GLSL ES 3.00, 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
|
+
// Tags: pixelate, mosaic, blend
|
|
6
|
+
// Ported from https://gist.github.com/corporateshark/21d2fdd24c706952dc8c
|
|
7
|
+
|
|
8
|
+
uniform float pixelSize; // = 50.0
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 uv) {
|
|
11
|
+
float T = progress;
|
|
12
|
+
float half_ = 0.5;
|
|
13
|
+
float size = (T < half_) ? mix(1.0, pixelSize, T / half_) : mix(pixelSize, 1.0, (T - half_) / half_);
|
|
14
|
+
float D = size * 0.005;
|
|
15
|
+
// Remap UV to center the mosaic pattern
|
|
16
|
+
vec2 UV = (uv - 0.5) / D;
|
|
17
|
+
vec2 coord = clamp(D * (ceil(UV - 0.5)) + 0.5, 0.0, 1.0);
|
|
18
|
+
vec4 C0 = getFromColor(coord);
|
|
19
|
+
vec4 C1 = getToColor(coord);
|
|
20
|
+
return mix(C0, C1, T);
|
|
21
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// BlockDissolve — GLSL ES 3.00, 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
|
+
// Tags: dissolve, blocks, noise
|
|
6
|
+
// Ported from https://gist.github.com/nwoeanhinnogaehr/b93818de23d4511fde10
|
|
7
|
+
|
|
8
|
+
uniform float blocksize; // = 0.02
|
|
9
|
+
|
|
10
|
+
float rand(vec2 co) {
|
|
11
|
+
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
vec4 transition(vec2 uv) {
|
|
15
|
+
return mix(getFromColor(uv), getToColor(uv), step(rand(floor(uv / blocksize)), progress));
|
|
16
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// BookFlip — GLSL ES 3.00, 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
|
+
// Tags: page, flip, 3d
|
|
6
|
+
|
|
7
|
+
// Avoids dividing by zero when the page is edge-on (progress = 0.5).
|
|
8
|
+
float nonZero(float x) {
|
|
9
|
+
return abs(x) < 1e-4 ? (x < 0.0 ? -1e-4 : 1e-4) : x;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
vec2 skewRight(vec2 p) {
|
|
13
|
+
float skewX = (p.x - progress)/nonZero(0.5 - progress) * 0.5;
|
|
14
|
+
float skewY = (p.y - 0.5)/(0.5 + progress * (p.x - 0.5) / 0.5)* 0.5 + 0.5;
|
|
15
|
+
return vec2(skewX, skewY);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
vec2 skewLeft(vec2 p) {
|
|
19
|
+
float skewX = (p.x - 0.5)/nonZero(progress - 0.5) * 0.5 + 0.5;
|
|
20
|
+
float skewY = (p.y - 0.5) / (0.5 + (1.0 - progress ) * (0.5 - p.x) / 0.5) * 0.5 + 0.5;
|
|
21
|
+
return vec2(skewX, skewY);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
vec4 addShade() {
|
|
25
|
+
float shadeVal = max(0.7, abs(progress - 0.5) * 2.0);
|
|
26
|
+
return vec4(vec3(shadeVal ), 1.0);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
vec4 transition (vec2 p) {
|
|
30
|
+
float pr = step(1.0 - progress, p.x);
|
|
31
|
+
|
|
32
|
+
if (p.x < 0.5) {
|
|
33
|
+
return mix(getFromColor(p), getToColor(skewLeft(p)) * addShade(), pr);
|
|
34
|
+
} else {
|
|
35
|
+
return mix(getFromColor(skewRight(p)) * addShade(), getToColor(p), pr);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Bounce — GLSL ES 3.00, 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
|
+
// Tags: bounce, slide, vertical, shadow
|
|
6
|
+
|
|
7
|
+
// @color Color of the shadow cast on the incoming image
|
|
8
|
+
uniform vec4 shadow_colour; // = vec4(0.,0.,0.,.6)
|
|
9
|
+
// @range(0.01, 0.5) Height of the shadow, relative to the image height
|
|
10
|
+
uniform float shadow_height; // = 0.075
|
|
11
|
+
// @range(1, 10, 1) Number of bounces before settling
|
|
12
|
+
uniform float bounces; // = 3.0
|
|
13
|
+
|
|
14
|
+
const float PI = 3.14159265358;
|
|
15
|
+
|
|
16
|
+
vec4 transition (vec2 uv) {
|
|
17
|
+
float time = progress;
|
|
18
|
+
float stime = sin(time * PI / 2.);
|
|
19
|
+
float phase = time * PI * bounces;
|
|
20
|
+
float y = (abs(cos(phase))) * (1.0 - stime);
|
|
21
|
+
float d = uv.y - y;
|
|
22
|
+
return mix(
|
|
23
|
+
mix(
|
|
24
|
+
getToColor(uv),
|
|
25
|
+
shadow_colour,
|
|
26
|
+
step(d, shadow_height) * (1. - mix(
|
|
27
|
+
((d / shadow_height) * shadow_colour.a) + (1.0 - shadow_colour.a),
|
|
28
|
+
1.0,
|
|
29
|
+
smoothstep(0.95, 1., progress) // fade-out the shadow at the end
|
|
30
|
+
))
|
|
31
|
+
),
|
|
32
|
+
getFromColor(vec2(uv.x, uv.y + (1.0 - y))),
|
|
33
|
+
step(d, 0.0)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// BowTieHorizontal — GLSL ES 3.00, 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
|
+
// Tags: wipe, shape, horizontal
|
|
6
|
+
|
|
7
|
+
const vec2 bottom_left = vec2(0.0, 1.0);
|
|
8
|
+
const vec2 bottom_right = vec2(1.0, 1.0);
|
|
9
|
+
const vec2 top_left = vec2(0.0, 0.0);
|
|
10
|
+
const vec2 top_right = vec2(1.0, 0.0);
|
|
11
|
+
const vec2 center = vec2(0.5, 0.5);
|
|
12
|
+
|
|
13
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
14
|
+
{
|
|
15
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
bool PointInTriangle (vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
19
|
+
{
|
|
20
|
+
bool b1, b2, b3;
|
|
21
|
+
b1 = check(pt, p1, p2) < 0.0;
|
|
22
|
+
b2 = check(pt, p2, p3) < 0.0;
|
|
23
|
+
b3 = check(pt, p3, p1) < 0.0;
|
|
24
|
+
return ((b1 == b2) && (b2 == b3));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
bool in_left_triangle(vec2 p){
|
|
28
|
+
vec2 vertex1, vertex2, vertex3;
|
|
29
|
+
vertex1 = vec2(progress, 0.5);
|
|
30
|
+
vertex2 = vec2(0.0, 0.5-progress);
|
|
31
|
+
vertex3 = vec2(0.0, 0.5+progress);
|
|
32
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
33
|
+
{
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
bool in_right_triangle(vec2 p){
|
|
40
|
+
vec2 vertex1, vertex2, vertex3;
|
|
41
|
+
vertex1 = vec2(1.0-progress, 0.5);
|
|
42
|
+
vertex2 = vec2(1.0, 0.5-progress);
|
|
43
|
+
vertex3 = vec2(1.0, 0.5+progress);
|
|
44
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
45
|
+
{
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
float blur_edge(vec2 bot1, vec2 bot2, vec2 top, vec2 testPt)
|
|
52
|
+
{
|
|
53
|
+
vec2 lineDir = bot1 - top;
|
|
54
|
+
vec2 perpDir = vec2(lineDir.y, -lineDir.x);
|
|
55
|
+
vec2 dirToPt1 = bot1 - testPt;
|
|
56
|
+
float dist1 = abs(dot(normalize(perpDir), dirToPt1));
|
|
57
|
+
|
|
58
|
+
lineDir = bot2 - top;
|
|
59
|
+
perpDir = vec2(lineDir.y, -lineDir.x);
|
|
60
|
+
dirToPt1 = bot2 - testPt;
|
|
61
|
+
float min_dist = min(abs(dot(normalize(perpDir), dirToPt1)), dist1);
|
|
62
|
+
|
|
63
|
+
if (min_dist < 0.005) {
|
|
64
|
+
return min_dist / 0.005;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return 1.0;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
vec4 transition (vec2 uv) {
|
|
73
|
+
if (in_left_triangle(uv))
|
|
74
|
+
{
|
|
75
|
+
if (progress < 0.1)
|
|
76
|
+
{
|
|
77
|
+
return getFromColor(uv);
|
|
78
|
+
}
|
|
79
|
+
if (uv.x < 0.5)
|
|
80
|
+
{
|
|
81
|
+
vec2 vertex1 = vec2(progress, 0.5);
|
|
82
|
+
vec2 vertex2 = vec2(0.0, 0.5-progress);
|
|
83
|
+
vec2 vertex3 = vec2(0.0, 0.5+progress);
|
|
84
|
+
return mix(
|
|
85
|
+
getFromColor(uv),
|
|
86
|
+
getToColor(uv),
|
|
87
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
{
|
|
92
|
+
if (progress > 0.0)
|
|
93
|
+
{
|
|
94
|
+
return getToColor(uv);
|
|
95
|
+
}
|
|
96
|
+
else
|
|
97
|
+
{
|
|
98
|
+
return getFromColor(uv);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (in_right_triangle(uv))
|
|
103
|
+
{
|
|
104
|
+
if (uv.x >= 0.5)
|
|
105
|
+
{
|
|
106
|
+
vec2 vertex1 = vec2(1.0-progress, 0.5);
|
|
107
|
+
vec2 vertex2 = vec2(1.0, 0.5-progress);
|
|
108
|
+
vec2 vertex3 = vec2(1.0, 0.5+progress);
|
|
109
|
+
return mix(
|
|
110
|
+
getFromColor(uv),
|
|
111
|
+
getToColor(uv),
|
|
112
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
else
|
|
116
|
+
{
|
|
117
|
+
return getFromColor(uv);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return getFromColor(uv);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// BowTieVertical — GLSL ES 3.00, 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
|
+
// Tags: wipe, shape, vertical
|
|
6
|
+
|
|
7
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
8
|
+
{
|
|
9
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
bool PointInTriangle (vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
13
|
+
{
|
|
14
|
+
bool b1, b2, b3;
|
|
15
|
+
b1 = check(pt, p1, p2) < 0.0;
|
|
16
|
+
b2 = check(pt, p2, p3) < 0.0;
|
|
17
|
+
b3 = check(pt, p3, p1) < 0.0;
|
|
18
|
+
return ((b1 == b2) && (b2 == b3));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
bool in_top_triangle(vec2 p){
|
|
22
|
+
vec2 vertex1, vertex2, vertex3;
|
|
23
|
+
vertex1 = vec2(0.5, progress);
|
|
24
|
+
vertex2 = vec2(0.5-progress, 0.0);
|
|
25
|
+
vertex3 = vec2(0.5+progress, 0.0);
|
|
26
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
27
|
+
{
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
bool in_bottom_triangle(vec2 p){
|
|
34
|
+
vec2 vertex1, vertex2, vertex3;
|
|
35
|
+
vertex1 = vec2(0.5, 1.0 - progress);
|
|
36
|
+
vertex2 = vec2(0.5-progress, 1.0);
|
|
37
|
+
vertex3 = vec2(0.5+progress, 1.0);
|
|
38
|
+
if (PointInTriangle(p, vertex1, vertex2, vertex3))
|
|
39
|
+
{
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
float blur_edge(vec2 bot1, vec2 bot2, vec2 top, vec2 testPt)
|
|
46
|
+
{
|
|
47
|
+
vec2 lineDir = bot1 - top;
|
|
48
|
+
vec2 perpDir = vec2(lineDir.y, -lineDir.x);
|
|
49
|
+
vec2 dirToPt1 = bot1 - testPt;
|
|
50
|
+
float dist1 = abs(dot(normalize(perpDir), dirToPt1));
|
|
51
|
+
|
|
52
|
+
lineDir = bot2 - top;
|
|
53
|
+
perpDir = vec2(lineDir.y, -lineDir.x);
|
|
54
|
+
dirToPt1 = bot2 - testPt;
|
|
55
|
+
float min_dist = min(abs(dot(normalize(perpDir), dirToPt1)), dist1);
|
|
56
|
+
|
|
57
|
+
if (min_dist < 0.005) {
|
|
58
|
+
return min_dist / 0.005;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return 1.0;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
vec4 transition (vec2 uv) {
|
|
67
|
+
if (in_top_triangle(uv))
|
|
68
|
+
{
|
|
69
|
+
if (progress < 0.1)
|
|
70
|
+
{
|
|
71
|
+
return getFromColor(uv);
|
|
72
|
+
}
|
|
73
|
+
if (uv.y < 0.5)
|
|
74
|
+
{
|
|
75
|
+
vec2 vertex1 = vec2(0.5, progress);
|
|
76
|
+
vec2 vertex2 = vec2(0.5-progress, 0.0);
|
|
77
|
+
vec2 vertex3 = vec2(0.5+progress, 0.0);
|
|
78
|
+
return mix(
|
|
79
|
+
getFromColor(uv),
|
|
80
|
+
getToColor(uv),
|
|
81
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
else
|
|
85
|
+
{
|
|
86
|
+
if (progress > 0.0)
|
|
87
|
+
{
|
|
88
|
+
return getToColor(uv);
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
{
|
|
92
|
+
return getFromColor(uv);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (in_bottom_triangle(uv))
|
|
97
|
+
{
|
|
98
|
+
if (uv.y >= 0.5)
|
|
99
|
+
{
|
|
100
|
+
vec2 vertex1 = vec2(0.5, 1.0-progress);
|
|
101
|
+
vec2 vertex2 = vec2(0.5-progress, 1.0);
|
|
102
|
+
vec2 vertex3 = vec2(0.5+progress, 1.0);
|
|
103
|
+
return mix(
|
|
104
|
+
getFromColor(uv),
|
|
105
|
+
getToColor(uv),
|
|
106
|
+
blur_edge(vertex2, vertex3, vertex1, uv)
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
else
|
|
110
|
+
{
|
|
111
|
+
return getFromColor(uv);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return getFromColor(uv);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// BowTieWithParameter — GLSL ES 3.00, 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
|
+
// Tags: wipe, shape
|
|
6
|
+
|
|
7
|
+
uniform float adjust; // = 0.5
|
|
8
|
+
// @param Run the wipe in reverse
|
|
9
|
+
uniform bool reverse; // = false
|
|
10
|
+
|
|
11
|
+
float check(vec2 p1, vec2 p2, vec2 p3)
|
|
12
|
+
{
|
|
13
|
+
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
bool pointInTriangle(vec2 pt, vec2 p1, vec2 p2, vec2 p3)
|
|
17
|
+
{
|
|
18
|
+
|
|
19
|
+
bool b1 = check(pt, p1, p2) < 0.0;
|
|
20
|
+
bool b2 = check(pt, p2, p3) < 0.0;
|
|
21
|
+
bool b3 = check(pt, p3, p1) < 0.0;
|
|
22
|
+
return b1 == b2 && b2 == b3;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const float height = 0.5;
|
|
26
|
+
|
|
27
|
+
vec4 transition_firstHalf( vec2 uv, float prog )
|
|
28
|
+
{
|
|
29
|
+
if ( uv.y < 0.5 )
|
|
30
|
+
{
|
|
31
|
+
vec2 botLeft = vec2( -0., prog-height );
|
|
32
|
+
vec2 botRight = vec2( 1., prog-height );
|
|
33
|
+
vec2 tip = vec2( adjust, prog );
|
|
34
|
+
if ( pointInTriangle( uv, botLeft, botRight, tip ) )
|
|
35
|
+
return getToColor(uv);
|
|
36
|
+
}
|
|
37
|
+
else
|
|
38
|
+
{
|
|
39
|
+
vec2 topLeft = vec2( -0., 1.-prog+height );
|
|
40
|
+
vec2 topRight = vec2( 1., 1.-prog+height );
|
|
41
|
+
vec2 tip = vec2( adjust, 1.-prog );
|
|
42
|
+
if ( pointInTriangle( uv, topLeft, topRight, tip ) )
|
|
43
|
+
return getToColor( uv );
|
|
44
|
+
}
|
|
45
|
+
return getFromColor( uv );
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
vec4 transition_secondHalf( vec2 uv, float prog )
|
|
49
|
+
{
|
|
50
|
+
if ( uv.x > adjust )
|
|
51
|
+
{
|
|
52
|
+
vec2 top = vec2( prog + height, 1. );
|
|
53
|
+
vec2 bot = vec2( prog + height, -0. );
|
|
54
|
+
vec2 tip = vec2( mix( adjust, 1.0, 2.0 * (prog - 0.5) ), 0.5 );
|
|
55
|
+
if ( pointInTriangle( uv, top, bot, tip) )
|
|
56
|
+
return getFromColor( uv );
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
{
|
|
60
|
+
vec2 top = vec2( 1.0-prog - height, 1. );
|
|
61
|
+
vec2 bot = vec2( 1.0-prog - height, -0. );
|
|
62
|
+
vec2 tip = vec2( mix( adjust, 0.0, 2.0 * (prog - 0.5) ), 0.5 );
|
|
63
|
+
if ( pointInTriangle( uv, top, bot, tip) )
|
|
64
|
+
return getFromColor( uv );
|
|
65
|
+
}
|
|
66
|
+
return getToColor( uv );
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
vec4 transition (vec2 uv) {
|
|
70
|
+
if ( reverse )
|
|
71
|
+
return ( progress < 0.5 ) ? transition_secondHalf( uv, 1.-progress ) : transition_firstHalf( uv, 1.-progress );
|
|
72
|
+
else
|
|
73
|
+
return ( progress < 0.5 ) ? transition_firstHalf( uv, progress ) : transition_secondHalf( uv, progress );
|
|
74
|
+
}
|
package/glsl3/Box.glsl
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Box — GLSL ES 3.00, 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
|
+
// Tags: box, zoom, shape
|
|
6
|
+
uniform int rectIn; // =1
|
|
7
|
+
// center:0, left_top:1, left_bottom:2, right_top:3, right_bottom:4
|
|
8
|
+
// @range(0, 4, 1) Where the box goes: 0 center, 1 left top, 2 left bottom, 3 right top, 4 right bottom
|
|
9
|
+
uniform int location; // =0
|
|
10
|
+
|
|
11
|
+
vec4 transition(vec2 uv) {
|
|
12
|
+
float p = rectIn == 1 ? 1.0 - progress : progress;
|
|
13
|
+
float x1, y1, x2, y2;
|
|
14
|
+
|
|
15
|
+
// Determine rectangle coordinates based on location
|
|
16
|
+
if (location == 0) {
|
|
17
|
+
x1 = y1 = 0.5 * (1.0 - p);
|
|
18
|
+
x2 = y2 = 1.0 - x1;
|
|
19
|
+
} else {
|
|
20
|
+
// Calculate the x and y coordinates based on the location
|
|
21
|
+
x1 = (location == 1 || location == 2) ? 0.0 : 1.0 - p;
|
|
22
|
+
y1 = (location == 1 || location == 3) ? 1.0 - p : 0.0;
|
|
23
|
+
x2 = (location == 1 || location == 2) ? p : 1.0;
|
|
24
|
+
y2 = (location == 1 || location == 3) ? 1.0 : p;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Determine if the point is inside the rectangle
|
|
28
|
+
float in_rect = step(x1, uv.x) * step(uv.x, x2) * step(y1, uv.y) * step(uv.y, y2);
|
|
29
|
+
in_rect = rectIn == 1 ? 1.0 - in_rect : in_rect;
|
|
30
|
+
|
|
31
|
+
// Mix colors based on the in_rect value
|
|
32
|
+
return mix(getFromColor(uv), getToColor(uv), in_rect);
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// ButterflyWaveScrawler — GLSL ES 3.00, 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
|
+
// Tags: wave, distort, chromatic
|
|
6
|
+
uniform float amplitude; // = 1.0
|
|
7
|
+
uniform float waves; // = 30.0
|
|
8
|
+
uniform float colorSeparation; // = 0.3
|
|
9
|
+
const float PI = 3.14159265358979323846264;
|
|
10
|
+
float compute(vec2 p, float progress, vec2 center) {
|
|
11
|
+
vec2 o = p*sin(progress * amplitude)-center;
|
|
12
|
+
// horizontal vector
|
|
13
|
+
vec2 h = vec2(1., 0.);
|
|
14
|
+
// butterfly polar function (don't ask me why this one :))
|
|
15
|
+
float theta = acos(dot(o, h)) * waves;
|
|
16
|
+
float s = sin((2.*theta - PI) / 24.);
|
|
17
|
+
float s2 = s * s;
|
|
18
|
+
return (exp(cos(theta)) - 2.*cos(4.*theta) + s2 * s2 * s) / 10.;
|
|
19
|
+
}
|
|
20
|
+
vec4 transition(vec2 uv) {
|
|
21
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
22
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
23
|
+
vec2 p = uv;
|
|
24
|
+
float inv = 1. - progress;
|
|
25
|
+
float disp = compute(p, progress, vec2(0.5, 0.5));
|
|
26
|
+
vec4 texTo = getToColor(p + inv*disp);
|
|
27
|
+
vec4 texFrom = vec4(
|
|
28
|
+
getFromColor(p + progress*disp*(1.0 - colorSeparation)).r,
|
|
29
|
+
getFromColor(p + progress*disp).g,
|
|
30
|
+
getFromColor(p + progress*disp*(1.0 + colorSeparation)).b,
|
|
31
|
+
1.0);
|
|
32
|
+
return texTo*progress + texFrom*inv;
|
|
33
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// CircleCrop — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CircleCrop.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: fkuteken
|
|
4
|
+
// Description: The outgoing image closes into a circle over a background color, then the incoming one opens from it
|
|
5
|
+
// Tags: circle, iris, shape
|
|
6
|
+
// ported by gre from https://gist.github.com/fkuteken/f63e3009c1143950dee9063c3b83fb88
|
|
7
|
+
|
|
8
|
+
// @color Background color
|
|
9
|
+
uniform vec4 bgcolor; // = vec4(0.0, 0.0, 0.0, 1.0)
|
|
10
|
+
|
|
11
|
+
vec4 transition(vec2 p) {
|
|
12
|
+
vec2 ratio2 = vec2(1.0, 1.0 / ratio);
|
|
13
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
14
|
+
float dist = length((vec2(p) - 0.5) * ratio2);
|
|
15
|
+
return mix(
|
|
16
|
+
progress < 0.5 ? getFromColor(p) : getToColor(p), // branching is ok here as we statically depend on progress uniform (branching won't change over pixels)
|
|
17
|
+
bgcolor,
|
|
18
|
+
step(s, dist)
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// ColourDistance — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/ColourDistance.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: P-Seebauer
|
|
4
|
+
// Description: Pixels switch to the incoming image in order of how close their colors are
|
|
5
|
+
// Tags: blend, color
|
|
6
|
+
// ported by gre from https://gist.github.com/P-Seebauer/2a5fa2f77c883dd661f9
|
|
7
|
+
|
|
8
|
+
uniform float power; // = 5.0
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 p) {
|
|
11
|
+
vec4 fTex = getFromColor(p);
|
|
12
|
+
vec4 tTex = getToColor(p);
|
|
13
|
+
float m = step(distance(fTex, tTex), progress);
|
|
14
|
+
return mix(
|
|
15
|
+
mix(fTex, tTex, m),
|
|
16
|
+
tTex,
|
|
17
|
+
pow(progress, power)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// CrazyParametricFun — GLSL ES 3.00, 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
|
+
// Tags: distort, psychedelic
|
|
6
|
+
|
|
7
|
+
uniform float a; // = 4
|
|
8
|
+
uniform float b; // = 1
|
|
9
|
+
uniform float amplitude; // = 120
|
|
10
|
+
uniform float smoothness; // = 0.1
|
|
11
|
+
|
|
12
|
+
vec4 transition(vec2 uv) {
|
|
13
|
+
vec2 p = uv.xy / vec2(1.0).xy;
|
|
14
|
+
vec2 dir = p - vec2(.5);
|
|
15
|
+
float dist = length(dir);
|
|
16
|
+
float x = (a - b) * cos(progress) + b * cos(progress * ((a / b) - 1.) );
|
|
17
|
+
float y = (a - b) * sin(progress) - b * sin(progress * ((a / b) - 1.));
|
|
18
|
+
vec2 offset = dir * vec2(sin(progress * dist * amplitude * x), sin(progress * dist * amplitude * y)) / smoothness;
|
|
19
|
+
return mix(getFromColor(p + offset), getToColor(p), smoothstep(0.2, 1.0, progress));
|
|
20
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// CrossZoom — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: rectalogic
|
|
4
|
+
// Description: A crossfade through a strong zoom blur
|
|
5
|
+
// Tags: zoom, blur, blend
|
|
6
|
+
// ported by gre from https://gist.github.com/rectalogic/b86b90161503a0023231
|
|
7
|
+
|
|
8
|
+
// Converted from https://github.com/rectalogic/rendermix-basic-effects/blob/master/assets/com/rendermix/CrossZoom/CrossZoom.frag
|
|
9
|
+
// Which is based on https://github.com/evanw/glfx.js/blob/master/src/filters/blur/zoomblur.js
|
|
10
|
+
// With additional easing functions from https://github.com/rectalogic/rendermix-basic-effects/blob/master/assets/com/rendermix/Easing/Easing.glsllib
|
|
11
|
+
|
|
12
|
+
// @range(0, 1) Blur strength
|
|
13
|
+
uniform float strength; // = 0.4
|
|
14
|
+
|
|
15
|
+
const float PI = 3.141592653589793;
|
|
16
|
+
|
|
17
|
+
float Linear_ease(in float begin, in float change, in float duration, in float time) {
|
|
18
|
+
return change * time / duration + begin;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
float Exponential_easeInOut(in float begin, in float change, in float duration, in float time) {
|
|
22
|
+
if (time == 0.0)
|
|
23
|
+
return begin;
|
|
24
|
+
else if (time == duration)
|
|
25
|
+
return begin + change;
|
|
26
|
+
time = time / (duration / 2.0);
|
|
27
|
+
if (time < 1.0)
|
|
28
|
+
return change / 2.0 * pow(2.0, 10.0 * (time - 1.0)) + begin;
|
|
29
|
+
return change / 2.0 * (-pow(2.0, -10.0 * (time - 1.0)) + 2.0) + begin;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
float Sinusoidal_easeInOut(in float begin, in float change, in float duration, in float time) {
|
|
33
|
+
return -change / 2.0 * (cos(PI * time / duration) - 1.0) + begin;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
float rand (vec2 co) {
|
|
37
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
vec4 crossFade(in vec2 uv, in float dissolve) {
|
|
41
|
+
return mix(getFromColor(uv), getToColor(uv), dissolve);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
vec4 transition(vec2 uv) {
|
|
45
|
+
vec2 texCoord = uv.xy / vec2(1.0).xy;
|
|
46
|
+
|
|
47
|
+
// Linear interpolate center across center half of the image
|
|
48
|
+
vec2 center = vec2(Linear_ease(0.25, 0.5, 1.0, progress), 0.5);
|
|
49
|
+
float dissolve = Exponential_easeInOut(0.0, 1.0, 1.0, progress);
|
|
50
|
+
|
|
51
|
+
// Mirrored sinusoidal loop. 0->strength then strength->0
|
|
52
|
+
float strength = Sinusoidal_easeInOut(0.0, strength, 0.5, progress);
|
|
53
|
+
|
|
54
|
+
vec4 color = vec4(0.0);
|
|
55
|
+
float total = 0.0;
|
|
56
|
+
vec2 toCenter = center - texCoord;
|
|
57
|
+
|
|
58
|
+
/* randomize the lookup values to hide the fixed number of samples */
|
|
59
|
+
float offset = rand(uv);
|
|
60
|
+
|
|
61
|
+
for (float t = 0.0; t <= 40.0; t++) {
|
|
62
|
+
float percent = (t + offset) / 40.0;
|
|
63
|
+
float weight = 4.0 * (percent - percent * percent);
|
|
64
|
+
color += crossFade(texCoord + toCenter * percent * strength, dissolve) * weight;
|
|
65
|
+
total += weight;
|
|
66
|
+
}
|
|
67
|
+
return color / total;
|
|
68
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// DefocusBlur — GLSL ES 3.00, 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
|
+
// Tags: blur, blend
|
|
6
|
+
// Ported from https://gist.github.com/corporateshark/b9f8e5675c647e615419
|
|
7
|
+
|
|
8
|
+
// @param Amount of blur
|
|
9
|
+
uniform float blurSize; // = 0.02
|
|
10
|
+
|
|
11
|
+
// 12-tap Poisson disk
|
|
12
|
+
// https://github.com/spite/Wagner/blob/master/fragment-shaders/poisson-disc-blur-fs.glsl
|
|
13
|
+
|
|
14
|
+
vec4 transition(vec2 uv) {
|
|
15
|
+
float T = progress;
|
|
16
|
+
float half_ = 0.5;
|
|
17
|
+
float D = (T < half_) ? mix(0.0, blurSize, T / half_) : mix(blurSize, 0.0, (T - half_) / half_);
|
|
18
|
+
vec4 C0 = getFromColor(uv);
|
|
19
|
+
vec4 C1 = getToColor(uv);
|
|
20
|
+
C0 += getFromColor(vec2(-0.326, -0.406) * D + uv);
|
|
21
|
+
C1 += getToColor(vec2(-0.326, -0.406) * D + uv);
|
|
22
|
+
C0 += getFromColor(vec2(-0.840, -0.074) * D + uv);
|
|
23
|
+
C1 += getToColor(vec2(-0.840, -0.074) * D + uv);
|
|
24
|
+
C0 += getFromColor(vec2(-0.696, 0.457) * D + uv);
|
|
25
|
+
C1 += getToColor(vec2(-0.696, 0.457) * D + uv);
|
|
26
|
+
C0 += getFromColor(vec2(-0.203, 0.621) * D + uv);
|
|
27
|
+
C1 += getToColor(vec2(-0.203, 0.621) * D + uv);
|
|
28
|
+
C0 += getFromColor(vec2( 0.962, -0.195) * D + uv);
|
|
29
|
+
C1 += getToColor(vec2( 0.962, -0.195) * D + uv);
|
|
30
|
+
C0 += getFromColor(vec2( 0.473, -0.480) * D + uv);
|
|
31
|
+
C1 += getToColor(vec2( 0.473, -0.480) * D + uv);
|
|
32
|
+
C0 += getFromColor(vec2( 0.519, 0.767) * D + uv);
|
|
33
|
+
C1 += getToColor(vec2( 0.519, 0.767) * D + uv);
|
|
34
|
+
C0 += getFromColor(vec2( 0.185, -0.893) * D + uv);
|
|
35
|
+
C1 += getToColor(vec2( 0.185, -0.893) * D + uv);
|
|
36
|
+
C0 += getFromColor(vec2( 0.507, 0.064) * D + uv);
|
|
37
|
+
C1 += getToColor(vec2( 0.507, 0.064) * D + uv);
|
|
38
|
+
C0 += getFromColor(vec2( 0.896, 0.412) * D + uv);
|
|
39
|
+
C1 += getToColor(vec2( 0.896, 0.412) * D + uv);
|
|
40
|
+
C0 += getFromColor(vec2(-0.322, -0.933) * D + uv);
|
|
41
|
+
C1 += getToColor(vec2(-0.322, -0.933) * D + uv);
|
|
42
|
+
C0 += getFromColor(vec2(-0.792, -0.598) * D + uv);
|
|
43
|
+
C1 += getToColor(vec2(-0.792, -0.598) * D + uv);
|
|
44
|
+
C0 /= 13.0;
|
|
45
|
+
C1 /= 13.0;
|
|
46
|
+
return mix(C0, C1, T);
|
|
47
|
+
}
|