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,18 @@
|
|
|
1
|
+
// HorizontalOpen — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/HorizontalOpen.glsl
|
|
2
|
+
// Author: martiniti
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image opens from a line in the middle toward the top and bottom edges
|
|
5
|
+
// Tags: wipe, split
|
|
6
|
+
|
|
7
|
+
vec4 transition (vec2 uv) {
|
|
8
|
+
|
|
9
|
+
float regress = 1.0 - progress;
|
|
10
|
+
|
|
11
|
+
float s = 2.0 - abs((uv.y - 0.5) / (regress - 1.0)) - 2.0 * regress;
|
|
12
|
+
|
|
13
|
+
return mix(
|
|
14
|
+
getFromColor(uv),
|
|
15
|
+
getToColor(uv),
|
|
16
|
+
smoothstep(0.0, 0.5, s)
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// InvertedPageCurl — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/InvertedPageCurl.glsl
|
|
2
|
+
// Author: Hewlett-Packard
|
|
3
|
+
// License: BSD 3 Clause
|
|
4
|
+
// Description: The outgoing image curls away like a page, revealing the incoming one
|
|
5
|
+
// Tags: page, curl, 3d
|
|
6
|
+
// Adapted by Sergey Kosarevsky from:
|
|
7
|
+
// http://rectalogic.github.io/webvfx/examples_2transition-shader-pagecurl_8html-example.html
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
Copyright (c) 2010 Hewlett-Packard Development Company, L.P. All rights reserved.
|
|
11
|
+
|
|
12
|
+
Redistribution and use in source and binary forms, with or without
|
|
13
|
+
modification, are permitted provided that the following conditions are
|
|
14
|
+
met:
|
|
15
|
+
|
|
16
|
+
* Redistributions of source code must retain the above copyright
|
|
17
|
+
notice, this list of conditions and the following disclaimer.
|
|
18
|
+
* Redistributions in binary form must reproduce the above
|
|
19
|
+
copyright notice, this list of conditions and the following disclaimer
|
|
20
|
+
in the documentation and/or other materials provided with the
|
|
21
|
+
distribution.
|
|
22
|
+
* Neither the name of Hewlett-Packard nor the names of its
|
|
23
|
+
contributors may be used to endorse or promote products derived from
|
|
24
|
+
this software without specific prior written permission.
|
|
25
|
+
|
|
26
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
27
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
28
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
29
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
30
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
31
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
32
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
33
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
34
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
35
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
37
|
+
in vec2 texCoord;
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
const float MIN_AMOUNT = -0.16;
|
|
41
|
+
const float MAX_AMOUNT = 1.5;
|
|
42
|
+
|
|
43
|
+
const float PI = 3.141592653589793;
|
|
44
|
+
|
|
45
|
+
const float scale = 512.0;
|
|
46
|
+
const float sharpness = 3.0;
|
|
47
|
+
|
|
48
|
+
const float cylinderRadius = 1.0 / PI / 2.0;
|
|
49
|
+
|
|
50
|
+
// These depend on the progress uniform and must be computed per-fragment.
|
|
51
|
+
// Global initializers with uniforms are invalid in GLSL ES and fail on Mesa.
|
|
52
|
+
float amount;
|
|
53
|
+
float cylinderCenter;
|
|
54
|
+
float cylinderAngle;
|
|
55
|
+
|
|
56
|
+
vec3 hitPoint(float hitAngle, float yc, vec3 point, mat3 rrotation)
|
|
57
|
+
{
|
|
58
|
+
float hitPoint = hitAngle / (2.0 * PI);
|
|
59
|
+
point.y = hitPoint;
|
|
60
|
+
return rrotation * point;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
vec4 antiAlias(vec4 color1, vec4 color2, float distanc)
|
|
64
|
+
{
|
|
65
|
+
distanc *= scale;
|
|
66
|
+
if (distanc < 0.0) return color2;
|
|
67
|
+
if (distanc > 2.0) return color1;
|
|
68
|
+
float dd = pow(1.0 - distanc / 2.0, sharpness);
|
|
69
|
+
return ((color2 - color1) * dd) + color1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
float distanceToEdge(vec3 point)
|
|
73
|
+
{
|
|
74
|
+
float dx = abs(point.x > 0.5 ? 1.0 - point.x : point.x);
|
|
75
|
+
float dy = abs(point.y > 0.5 ? 1.0 - point.y : point.y);
|
|
76
|
+
if (point.x < 0.0) dx = -point.x;
|
|
77
|
+
if (point.x > 1.0) dx = point.x - 1.0;
|
|
78
|
+
if (point.y < 0.0) dy = -point.y;
|
|
79
|
+
if (point.y > 1.0) dy = point.y - 1.0;
|
|
80
|
+
if ((point.x < 0.0 || point.x > 1.0) && (point.y < 0.0 || point.y > 1.0)) return sqrt(dx * dx + dy * dy);
|
|
81
|
+
return min(dx, dy);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
vec4 seeThrough(float yc, vec2 p, mat3 rotation, mat3 rrotation)
|
|
85
|
+
{
|
|
86
|
+
float hitAngle = PI - (acos(clamp(yc / cylinderRadius, -1.0, 1.0)) - cylinderAngle);
|
|
87
|
+
vec3 point = hitPoint(hitAngle, yc, rotation * vec3(p, 1.0), rrotation);
|
|
88
|
+
if (yc <= 0.0 && (point.x < 0.0 || point.y < 0.0 || point.x > 1.0 || point.y > 1.0))
|
|
89
|
+
{
|
|
90
|
+
return getToColor(p);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (yc > 0.0) return getFromColor(p);
|
|
94
|
+
|
|
95
|
+
vec4 color = getFromColor(point.xy);
|
|
96
|
+
vec4 tcolor = vec4(0.0);
|
|
97
|
+
|
|
98
|
+
return antiAlias(color, tcolor, distanceToEdge(point));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
vec4 seeThroughWithShadow(float yc, vec2 p, vec3 point, mat3 rotation, mat3 rrotation)
|
|
102
|
+
{
|
|
103
|
+
float shadow = distanceToEdge(point) * 30.0;
|
|
104
|
+
shadow = (1.0 - shadow) / 3.0;
|
|
105
|
+
|
|
106
|
+
if (shadow < 0.0) shadow = 0.0; else shadow *= amount;
|
|
107
|
+
|
|
108
|
+
vec4 shadowColor = seeThrough(yc, p, rotation, rrotation);
|
|
109
|
+
shadowColor.r -= shadow;
|
|
110
|
+
shadowColor.g -= shadow;
|
|
111
|
+
shadowColor.b -= shadow;
|
|
112
|
+
|
|
113
|
+
return shadowColor;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
vec4 backside(float yc, vec3 point)
|
|
117
|
+
{
|
|
118
|
+
vec4 color = getFromColor(point.xy);
|
|
119
|
+
float gray = (color.r + color.b + color.g) / 15.0;
|
|
120
|
+
gray += (8.0 / 10.0) * (pow(max(0.0, 1.0 - abs(yc / cylinderRadius)), 2.0 / 10.0) / 2.0 + (5.0 / 10.0));
|
|
121
|
+
color.rgb = vec3(gray);
|
|
122
|
+
return color;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
vec4 behindSurface(vec2 p, float yc, vec3 point, mat3 rrotation)
|
|
126
|
+
{
|
|
127
|
+
float safeAmount = amount >= 0.0 ? max(amount, 1e-4) : min(amount, -1e-4);
|
|
128
|
+
float shado = (1.0 - ((-cylinderRadius - yc) / safeAmount * 7.0)) / 6.0;
|
|
129
|
+
shado *= 1.0 - abs(point.x - 0.5);
|
|
130
|
+
|
|
131
|
+
yc = (-cylinderRadius - cylinderRadius - yc);
|
|
132
|
+
|
|
133
|
+
float hitAngle = (acos(clamp(yc / cylinderRadius, -1.0, 1.0)) + cylinderAngle) - PI;
|
|
134
|
+
point = hitPoint(hitAngle, yc, point, rrotation);
|
|
135
|
+
|
|
136
|
+
if (yc < 0.0 && point.x >= 0.0 && point.y >= 0.0 && point.x <= 1.0 && point.y <= 1.0 && (hitAngle < PI || amount > 0.5))
|
|
137
|
+
{
|
|
138
|
+
float dx = point.x - 0.5;
|
|
139
|
+
float dy = point.y - 0.5;
|
|
140
|
+
shado = 1.0 - (sqrt(dx * dx + dy * dy) / (71.0 / 100.0));
|
|
141
|
+
float nyc = -yc / cylinderRadius;
|
|
142
|
+
shado *= nyc * nyc * nyc;
|
|
143
|
+
shado *= 0.5;
|
|
144
|
+
}
|
|
145
|
+
else
|
|
146
|
+
{
|
|
147
|
+
shado = 0.0;
|
|
148
|
+
}
|
|
149
|
+
return vec4(getToColor(p).rgb - shado, 1.0);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
vec4 transition(vec2 p) {
|
|
153
|
+
amount = progress * (MAX_AMOUNT - MIN_AMOUNT) + MIN_AMOUNT;
|
|
154
|
+
cylinderCenter = amount;
|
|
155
|
+
cylinderAngle = 2.0 * PI * amount;
|
|
156
|
+
|
|
157
|
+
const float angle = 100.0 * PI / 180.0;
|
|
158
|
+
float c = cos(-angle);
|
|
159
|
+
float s = sin(-angle);
|
|
160
|
+
|
|
161
|
+
mat3 rotation = mat3( c, s, 0,
|
|
162
|
+
-s, c, 0,
|
|
163
|
+
-0.801, 0.8900, 1
|
|
164
|
+
);
|
|
165
|
+
c = cos(angle);
|
|
166
|
+
s = sin(angle);
|
|
167
|
+
|
|
168
|
+
mat3 rrotation = mat3( c, s, 0,
|
|
169
|
+
-s, c, 0,
|
|
170
|
+
0.98500, 0.985, 1
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
vec3 point = rotation * vec3(p, 1.0);
|
|
174
|
+
|
|
175
|
+
float yc = point.y - cylinderCenter;
|
|
176
|
+
|
|
177
|
+
if (yc < -cylinderRadius)
|
|
178
|
+
{
|
|
179
|
+
// Behind surface
|
|
180
|
+
return behindSurface(p,yc, point, rrotation);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (yc > cylinderRadius)
|
|
184
|
+
{
|
|
185
|
+
// Flat surface
|
|
186
|
+
return getFromColor(p);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
float hitAngle = (acos(clamp(yc / cylinderRadius, -1.0, 1.0)) + cylinderAngle) - PI;
|
|
190
|
+
|
|
191
|
+
float hitAngleMod = mod(hitAngle, 2.0 * PI);
|
|
192
|
+
if ((hitAngleMod > PI && amount < 0.5) || (hitAngleMod > PI/2.0 && amount < 0.0))
|
|
193
|
+
{
|
|
194
|
+
return seeThrough(yc, p, rotation, rrotation);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
point = hitPoint(hitAngle, yc, point, rrotation);
|
|
198
|
+
|
|
199
|
+
if (point.x < 0.0 || point.y < 0.0 || point.x > 1.0 || point.y > 1.0)
|
|
200
|
+
{
|
|
201
|
+
return seeThroughWithShadow(yc, p, point, rotation, rrotation);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
vec4 color = backside(yc, point);
|
|
205
|
+
|
|
206
|
+
vec4 otherColor;
|
|
207
|
+
if (yc < 0.0)
|
|
208
|
+
{
|
|
209
|
+
float dx2 = point.x - 0.5;
|
|
210
|
+
float dy2 = point.y - 0.5;
|
|
211
|
+
float shado = 1.0 - (sqrt(dx2 * dx2 + dy2 * dy2) / 0.71);
|
|
212
|
+
float nyc2 = -yc / cylinderRadius;
|
|
213
|
+
shado *= nyc2 * nyc2 * nyc2;
|
|
214
|
+
shado *= 0.5;
|
|
215
|
+
otherColor = vec4(0.0, 0.0, 0.0, shado);
|
|
216
|
+
}
|
|
217
|
+
else
|
|
218
|
+
{
|
|
219
|
+
otherColor = getFromColor(p);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
color = antiAlias(color, otherColor, cylinderRadius - abs(yc));
|
|
223
|
+
|
|
224
|
+
vec4 cl = seeThroughWithShadow(yc, p, point, rotation, rrotation);
|
|
225
|
+
float dist = distanceToEdge(point);
|
|
226
|
+
|
|
227
|
+
return antiAlias(color, cl, dist);
|
|
228
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// LeftRight — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LeftRight.glsl
|
|
2
|
+
// Author: zhmy
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image shrinks away to the left while the incoming one slides in from the right
|
|
5
|
+
// Tags: slide, zoom, horizontal
|
|
6
|
+
|
|
7
|
+
const vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
|
8
|
+
const vec2 boundMin = vec2(0.0, 0.0);
|
|
9
|
+
const vec2 boundMax = vec2(1.0, 1.0);
|
|
10
|
+
|
|
11
|
+
bool inBounds (vec2 p) {
|
|
12
|
+
return all(lessThan(boundMin, p)) && all(lessThan(p, boundMax));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
vec4 transition (vec2 uv) {
|
|
16
|
+
vec2 spfr,spto = vec2(-1.);
|
|
17
|
+
|
|
18
|
+
float size = mix(1.0, 3.0, progress*0.2);
|
|
19
|
+
spto = (uv + vec2(-0.5,-0.5))*vec2(size,size)+vec2(0.5,0.5);
|
|
20
|
+
spfr = (uv - vec2(1.-progress, 0.0));
|
|
21
|
+
if(inBounds(spfr)){
|
|
22
|
+
return getToColor(spfr);
|
|
23
|
+
}else if(inBounds(spto)){
|
|
24
|
+
return getFromColor(spto) * (1.0 - progress);
|
|
25
|
+
} else{
|
|
26
|
+
return black;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// LinearBlur — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LinearBlur.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through a blur
|
|
5
|
+
// Tags: blur, blend
|
|
6
|
+
// @param Amount of blur
|
|
7
|
+
uniform float intensity; // = 0.1
|
|
8
|
+
const int passes = 6;
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 uv) {
|
|
11
|
+
vec4 c1 = vec4(0.0);
|
|
12
|
+
vec4 c2 = vec4(0.0);
|
|
13
|
+
|
|
14
|
+
float disp = intensity*(0.5-distance(0.5, progress));
|
|
15
|
+
for (int xi=0; xi<passes; xi++)
|
|
16
|
+
{
|
|
17
|
+
float x = float(xi) / float(passes) - 0.5;
|
|
18
|
+
for (int yi=0; yi<passes; yi++)
|
|
19
|
+
{
|
|
20
|
+
float y = float(yi) / float(passes) - 0.5;
|
|
21
|
+
vec2 v = vec2(x,y);
|
|
22
|
+
float d = disp;
|
|
23
|
+
c1 += getFromColor( uv + d*v);
|
|
24
|
+
c2 += getToColor( uv + d*v);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
c1 /= float(passes*passes);
|
|
28
|
+
c2 /= float(passes*passes);
|
|
29
|
+
return mix(c1, c2, progress);
|
|
30
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Mosaic — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Mosaic.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: Xaychru
|
|
4
|
+
// Description: The view pans across a mosaic of rotated tiles from both images and settles on the incoming one
|
|
5
|
+
// Tags: mosaic, tiles, zoom
|
|
6
|
+
// ported by gre from https://gist.github.com/Xaychru/130bb7b7affedbda9df5
|
|
7
|
+
|
|
8
|
+
#define PI 3.14159265358979323
|
|
9
|
+
#define POW2(X) X*X
|
|
10
|
+
#define POW3(X) X*X*X
|
|
11
|
+
uniform int endx; // = 2
|
|
12
|
+
uniform int endy; // = -1
|
|
13
|
+
|
|
14
|
+
float Rand(vec2 v) {
|
|
15
|
+
return fract(sin(dot(v.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
16
|
+
}
|
|
17
|
+
vec2 Rotate(vec2 v, float a) {
|
|
18
|
+
mat2 rm = mat2(cos(a), -sin(a),
|
|
19
|
+
sin(a), cos(a));
|
|
20
|
+
return rm*v;
|
|
21
|
+
}
|
|
22
|
+
float CosInterpolation(float x) {
|
|
23
|
+
return -cos(x*PI)/2.+.5;
|
|
24
|
+
}
|
|
25
|
+
vec4 transition(vec2 uv) {
|
|
26
|
+
vec2 p = uv.xy / vec2(1.0).xy - .5;
|
|
27
|
+
vec2 rp = p;
|
|
28
|
+
float rpr = (progress*2.-1.);
|
|
29
|
+
float z = -(rpr*rpr*2.) + 3.;
|
|
30
|
+
float az = abs(z);
|
|
31
|
+
rp *= az;
|
|
32
|
+
rp += mix(vec2(.5, .5), vec2(float(endx) + .5, float(endy) + .5), POW2(CosInterpolation(progress)));
|
|
33
|
+
vec2 mrp = mod(rp, 1.);
|
|
34
|
+
vec2 crp = rp;
|
|
35
|
+
bool onEnd = int(floor(crp.x))==endx&&int(floor(crp.y))==endy;
|
|
36
|
+
if(!onEnd) {
|
|
37
|
+
float ang = float(int(Rand(floor(crp))*4.))*.5*PI;
|
|
38
|
+
mrp = vec2(.5) + Rotate(mrp-vec2(.5), ang);
|
|
39
|
+
}
|
|
40
|
+
if(onEnd || Rand(floor(crp))>.5) {
|
|
41
|
+
return getToColor(mrp);
|
|
42
|
+
} else {
|
|
43
|
+
return getFromColor(mrp);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Overexposure — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Overexposure.glsl
|
|
2
|
+
// Author: Ben Zhang
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through a washed-out, overexposed white
|
|
5
|
+
// Tags: flash, light, fade
|
|
6
|
+
|
|
7
|
+
// @param Amount of overexposure
|
|
8
|
+
uniform float strength; // = 0.6
|
|
9
|
+
const float PI = 3.141592653589793;
|
|
10
|
+
|
|
11
|
+
vec4 transition (vec2 uv) {
|
|
12
|
+
vec4 from = getFromColor(uv);
|
|
13
|
+
vec4 to = getToColor(uv);
|
|
14
|
+
|
|
15
|
+
// Multipliers
|
|
16
|
+
float from_m = 1.0 - progress + sin(PI * progress) * strength;
|
|
17
|
+
float to_m = progress + sin(PI * progress) * strength;
|
|
18
|
+
|
|
19
|
+
return vec4(
|
|
20
|
+
from.r * from.a * from_m + to.r * to.a * to_m,
|
|
21
|
+
from.g * from.a * from_m + to.g * to.a * to_m,
|
|
22
|
+
from.b * from.a * from_m + to.b * to.a * to_m,
|
|
23
|
+
mix(from.a, to.a, progress)
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// PolkaDotsCurtain — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PolkaDotsCurtain.glsl
|
|
2
|
+
// Author: bobylito
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image appears through growing polka dots
|
|
5
|
+
// Tags: dots, pattern
|
|
6
|
+
const float SQRT_2 = 1.414213562373;
|
|
7
|
+
// @param Number of dots across the image
|
|
8
|
+
uniform float dots; // = 20.0
|
|
9
|
+
uniform vec2 center; // = vec2(0, 0)
|
|
10
|
+
|
|
11
|
+
vec4 transition(vec2 uv) {
|
|
12
|
+
bool nextImage = distance(fract(uv * dots), vec2(0.5, 0.5)) < ( progress / distance(uv, center));
|
|
13
|
+
return nextImage ? getToColor(uv) : getFromColor(uv);
|
|
14
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// PuzzleRight — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PuzzleRight.glsl
|
|
2
|
+
// Author: JustKirillS
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The image splits into a grid of tiles that flip one by one to the incoming image
|
|
5
|
+
// Tags: grid, tiles, flip
|
|
6
|
+
// Ported from https://gist.github.com/JustKirillS/714f095318834f4d2375de872c53af1e
|
|
7
|
+
|
|
8
|
+
uniform ivec2 size; // = ivec2(4, 4)
|
|
9
|
+
uniform float pause; // = 0.1
|
|
10
|
+
uniform float dividerWidth; // = 0.005
|
|
11
|
+
|
|
12
|
+
float rand(vec2 co) {
|
|
13
|
+
return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
float getDelta(vec2 p) {
|
|
17
|
+
vec2 rectangleSize = 1.0 / vec2(size);
|
|
18
|
+
vec2 rectanglePos = floor(vec2(size) * p);
|
|
19
|
+
float top = rectangleSize.y * (rectanglePos.y + 1.0);
|
|
20
|
+
float bottom = rectangleSize.y * rectanglePos.y;
|
|
21
|
+
float left = rectangleSize.x * rectanglePos.x;
|
|
22
|
+
float right = rectangleSize.x * (rectanglePos.x + 1.0);
|
|
23
|
+
float minX = min(abs(p.x - left), abs(p.x - right));
|
|
24
|
+
float minY = min(abs(p.y - top), abs(p.y - bottom));
|
|
25
|
+
return min(minX, minY);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
vec4 transition(vec2 uv) {
|
|
29
|
+
if (progress < pause) {
|
|
30
|
+
float currentProg = progress / pause;
|
|
31
|
+
float a = 1.0;
|
|
32
|
+
if (getDelta(uv) < dividerWidth) { a = 1.0 - currentProg; }
|
|
33
|
+
return mix(vec4(0.0, 0.0, 0.0, 1.0), getFromColor(uv), a);
|
|
34
|
+
} else if (progress < 1.0 - pause) {
|
|
35
|
+
if (getDelta(uv) < dividerWidth) {
|
|
36
|
+
return vec4(0.0, 0.0, 0.0, 1.0);
|
|
37
|
+
}
|
|
38
|
+
float currentProg = (progress - pause) / (1.0 - pause * 2.0);
|
|
39
|
+
vec2 rectanglePos = floor(vec2(size) * uv);
|
|
40
|
+
float r = rand(rectanglePos) - 0.1;
|
|
41
|
+
float cp = smoothstep(0.0, 1.0 - r, currentProg);
|
|
42
|
+
float rectangleSize = 1.0 / float(size.x);
|
|
43
|
+
float delta = rectanglePos.x * rectangleSize;
|
|
44
|
+
float offset = rectangleSize / 2.0 + delta;
|
|
45
|
+
vec2 p = uv;
|
|
46
|
+
p.x = (p.x - offset) / abs(cp - 0.5) * 0.5 + offset;
|
|
47
|
+
vec4 a = getFromColor(p);
|
|
48
|
+
vec4 b = getToColor(p);
|
|
49
|
+
float s = step(abs(float(size.x) * (uv.x - delta) - 0.5), abs(cp - 0.5));
|
|
50
|
+
return vec4(mix(b, a, step(cp, 0.5)).rgb * s, 1.0);
|
|
51
|
+
} else {
|
|
52
|
+
float currentProg = (progress - 1.0 + pause) / pause;
|
|
53
|
+
float a = 1.0;
|
|
54
|
+
if (getDelta(uv) < dividerWidth) { a = currentProg; }
|
|
55
|
+
return mix(vec4(0.0, 0.0, 0.0, 1.0), getToColor(uv), a);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Radial — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Radial.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: Xaychru
|
|
4
|
+
// Description: A radial wipe that sweeps around the center like a clock hand
|
|
5
|
+
// Tags: wipe, radial, clock
|
|
6
|
+
// ported by gre from https://gist.github.com/Xaychru/ce1d48f0ce00bb379750
|
|
7
|
+
|
|
8
|
+
uniform float smoothness; // = 1.0
|
|
9
|
+
|
|
10
|
+
const float PI = 3.141592653589;
|
|
11
|
+
|
|
12
|
+
vec4 transition(vec2 p) {
|
|
13
|
+
vec2 rp = p*2.-1.;
|
|
14
|
+
return mix(
|
|
15
|
+
getToColor(p),
|
|
16
|
+
getFromColor(p),
|
|
17
|
+
smoothstep(0., smoothness, atan(rp.y,rp.x) - (progress-.5) * PI * 2.5)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Rectangle — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Rectangle.glsl
|
|
2
|
+
// Author: martiniti
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A rectangle grows from the center to cover the outgoing image, then shrinks to reveal the incoming one
|
|
5
|
+
// Tags: box, shape, iris
|
|
6
|
+
|
|
7
|
+
// @color Color of the rectangle
|
|
8
|
+
uniform vec4 bgcolor; // = vec4(0.0, 0.0, 0.0, 1.0)
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 p) {
|
|
11
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
12
|
+
|
|
13
|
+
vec2 sq = p.xy / vec2(1.0).xy;
|
|
14
|
+
|
|
15
|
+
// bottom-left
|
|
16
|
+
vec2 bl = step(vec2(abs(1. - 2.*progress)), sq + .25);
|
|
17
|
+
float dist = bl.x * bl.y;
|
|
18
|
+
|
|
19
|
+
// top-right
|
|
20
|
+
vec2 tr = step(vec2(abs(1. - 2.*progress)), 1.25-sq);
|
|
21
|
+
dist *= 1. * tr.x * tr.y;
|
|
22
|
+
|
|
23
|
+
return mix(
|
|
24
|
+
progress < 0.5 ? getFromColor(p) : getToColor(p),
|
|
25
|
+
bgcolor,
|
|
26
|
+
step(s, dist)
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// RectangleCrop — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/RectangleCrop.glsl
|
|
2
|
+
// License: MIT
|
|
3
|
+
// Author: martiniti
|
|
4
|
+
// Description: The outgoing image shrinks into a small rectangle over a background color, then the incoming one grows from it
|
|
5
|
+
// Tags: box, iris, zoom
|
|
6
|
+
|
|
7
|
+
// @color Background color
|
|
8
|
+
uniform vec4 bgcolor; // = vec4(0.0, 0.0, 0.0, 1.0)
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 uv) {
|
|
11
|
+
|
|
12
|
+
float s = pow(2.0 * abs(progress - 0.5), 3.0);
|
|
13
|
+
|
|
14
|
+
vec2 q = uv.xy / vec2(1.0).xy;
|
|
15
|
+
|
|
16
|
+
// bottom-left
|
|
17
|
+
vec2 bl = step(vec2(1.0 - 2.0*abs(progress - 0.5)), q + 0.25);
|
|
18
|
+
|
|
19
|
+
// top-right
|
|
20
|
+
vec2 tr = step(vec2(1.0 - 2.0*abs(progress - 0.5)), 1.25 - q);
|
|
21
|
+
|
|
22
|
+
float dist = length(1.0 - bl.x * bl.y * tr.x * tr.y);
|
|
23
|
+
|
|
24
|
+
return mix(
|
|
25
|
+
progress < 0.5 ? getFromColor(uv) : getToColor(uv),
|
|
26
|
+
bgcolor,
|
|
27
|
+
step(s, dist)
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Revolve_Left — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve_Left.glsl
|
|
2
|
+
// Author: bread
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image swirls and zooms with motion blur into the incoming one
|
|
5
|
+
// Tags: swirl, zoom, rotate, blur
|
|
6
|
+
// gl-transitions v1 compatible
|
|
7
|
+
|
|
8
|
+
// @param Center of the swirl
|
|
9
|
+
uniform vec2 center; // = vec2(0.46, 0.52)
|
|
10
|
+
uniform float direction; // = -1.0
|
|
11
|
+
uniform float maxRotation; // = 1.95
|
|
12
|
+
uniform float peakZoom; // = 2.22
|
|
13
|
+
uniform float swirl; // = 2.85
|
|
14
|
+
uniform float barrel; // = 0.38
|
|
15
|
+
uniform float motionBlur; // = 1.0
|
|
16
|
+
uniform float switchStart; // = 0.30
|
|
17
|
+
uniform float switchEnd; // = 0.50
|
|
18
|
+
uniform float shadow; // = 0.16
|
|
19
|
+
|
|
20
|
+
float sat(float x) {
|
|
21
|
+
return clamp(x, 0.0, 1.0);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
float ease(float x) {
|
|
25
|
+
x = sat(x);
|
|
26
|
+
return x * x * (3.0 - 2.0 * x);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
float revolveEnvelope(float t) {
|
|
30
|
+
float rise = ease((t - 0.10) / 0.33);
|
|
31
|
+
float fall = 1.0 - ease((t - 0.43) / 0.29);
|
|
32
|
+
return rise * fall;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
vec2 rotate2(vec2 p, float a) {
|
|
36
|
+
float s = sin(a);
|
|
37
|
+
float c = cos(a);
|
|
38
|
+
return vec2(c * p.x - s * p.y, s * p.x + c * p.y);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
vec2 warpUv(vec2 uv, float t) {
|
|
42
|
+
float e = revolveEnvelope(t);
|
|
43
|
+
|
|
44
|
+
vec2 p = uv - center;
|
|
45
|
+
p.x *= ratio;
|
|
46
|
+
|
|
47
|
+
float r = length(p);
|
|
48
|
+
float edgeSpin = maxRotation * e;
|
|
49
|
+
float coreSpin = swirl * e * pow(1.0 - sat(r / 0.96), 1.55);
|
|
50
|
+
float visibleAngle = direction * (edgeSpin + coreSpin);
|
|
51
|
+
|
|
52
|
+
p = rotate2(p, -visibleAngle);
|
|
53
|
+
|
|
54
|
+
float sc = 1.0 + (peakZoom - 1.0) * pow(e, 0.85);
|
|
55
|
+
p /= sc;
|
|
56
|
+
|
|
57
|
+
float rr = length(p);
|
|
58
|
+
p *= 1.0 + barrel * e * rr * rr * 2.8;
|
|
59
|
+
|
|
60
|
+
p.x /= ratio;
|
|
61
|
+
return clamp(p + center, vec2(0.001), vec2(0.999));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
vec4 sampleRevolve(vec2 uv, float t) {
|
|
65
|
+
vec2 p = warpUv(uv, t);
|
|
66
|
+
float reveal = smoothstep(switchStart, switchEnd, t);
|
|
67
|
+
return mix(getFromColor(p), getToColor(p), reveal);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
vec4 transition(vec2 uv) {
|
|
71
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
72
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
73
|
+
|
|
74
|
+
float e = revolveEnvelope(progress);
|
|
75
|
+
float span = 0.060 * motionBlur * e;
|
|
76
|
+
|
|
77
|
+
vec4 color = vec4(0.0);
|
|
78
|
+
float total = 0.0;
|
|
79
|
+
|
|
80
|
+
for (int i = -8; i <= 8; i++) {
|
|
81
|
+
float x = float(i) / 8.0;
|
|
82
|
+
float w = 1.0 - abs(x);
|
|
83
|
+
w = w * w + 0.01;
|
|
84
|
+
|
|
85
|
+
float t = sat(progress + x * span);
|
|
86
|
+
color += sampleRevolve(uv, t) * w;
|
|
87
|
+
total += w;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
color /= total;
|
|
91
|
+
|
|
92
|
+
vec2 q = uv - vec2(0.5);
|
|
93
|
+
q.x *= ratio;
|
|
94
|
+
float vignette = 1.0 - shadow * e * smoothstep(0.35, 0.95, length(q));
|
|
95
|
+
color.rgb *= vignette;
|
|
96
|
+
|
|
97
|
+
return color;
|
|
98
|
+
}
|
package/glsl3/Rolls.glsl
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Rolls — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Rolls.glsl
|
|
2
|
+
// Author: Mark Craig
|
|
3
|
+
// mrmcsoftware on github and youtube ( http://www.youtube.com/MrMcSoftware )
|
|
4
|
+
// License: MIT
|
|
5
|
+
// Description: The outgoing image rolls away around a corner, revealing the incoming one
|
|
6
|
+
// Tags: rotate, roll
|
|
7
|
+
|
|
8
|
+
// Rolls Transition by Mark Craig (Copyright © 2022)
|
|
9
|
+
|
|
10
|
+
// @range(0, 3, 1) Corner to roll around
|
|
11
|
+
uniform int type; // = 0
|
|
12
|
+
// @param Roll the outgoing image down instead of up
|
|
13
|
+
uniform bool RotDown; // = false
|
|
14
|
+
// type (0-3): Rotate/Roll from which corner
|
|
15
|
+
// RotDown: if true rotate old image down, otherwise rotate old image up
|
|
16
|
+
|
|
17
|
+
#define M_PI 3.14159265358979323846
|
|
18
|
+
|
|
19
|
+
vec4 transition(vec2 uv)
|
|
20
|
+
{
|
|
21
|
+
float theta, c1, s1;
|
|
22
|
+
vec2 iResolution = vec2(ratio, 1.0);
|
|
23
|
+
vec2 uvi;
|
|
24
|
+
// I used if/else instead of switch in case it's an old GPU
|
|
25
|
+
if (type == 0) { theta = (RotDown ? M_PI : -M_PI) / 2.0 * progress; uvi.x = 1.0 - uv.x; uvi.y = uv.y; }
|
|
26
|
+
else if (type == 1) { theta = (RotDown ? M_PI : -M_PI) / 2.0 * progress; uvi = uv; }
|
|
27
|
+
else if (type == 2) { theta = (RotDown ? -M_PI : M_PI) / 2.0 * progress; uvi.x = uv.x; uvi.y = 1.0 - uv.y; }
|
|
28
|
+
else if (type == 3) { theta = (RotDown ? -M_PI : M_PI) / 2.0 * progress; uvi = 1.0 - uv; }
|
|
29
|
+
c1 = cos(theta); s1 = sin(theta);
|
|
30
|
+
vec2 uv2;
|
|
31
|
+
uv2.x = (uvi.x * iResolution.x * c1 - uvi.y * iResolution.y * s1);
|
|
32
|
+
uv2.y = (uvi.x * iResolution.x * s1 + uvi.y * iResolution.y * c1);
|
|
33
|
+
if ((uv2.x >= 0.0) && (uv2.x <= iResolution.x) && (uv2.y >= 0.0) && (uv2.y <= iResolution.y))
|
|
34
|
+
{
|
|
35
|
+
uv2 /= iResolution;
|
|
36
|
+
if (type == 0) { uv2.x = 1.0 - uv2.x; }
|
|
37
|
+
else if (type == 2) { uv2.y = 1.0 - uv2.y; }
|
|
38
|
+
else if (type == 3) { uv2 = 1.0 - uv2; }
|
|
39
|
+
return(getFromColor(uv2));
|
|
40
|
+
}
|
|
41
|
+
return(getToColor(uv));
|
|
42
|
+
}
|