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,22 @@
|
|
|
1
|
+
// directionalwipe — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/directionalwipe.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A soft-edged diagonal wipe
|
|
5
|
+
// Tags: wipe, directional
|
|
6
|
+
|
|
7
|
+
// @param Direction of the wipe
|
|
8
|
+
uniform vec2 direction; // = vec2(1.0, -1.0)
|
|
9
|
+
// @param Softness of the edge
|
|
10
|
+
uniform float smoothness; // = 0.5
|
|
11
|
+
|
|
12
|
+
const vec2 center = vec2(0.5, 0.5);
|
|
13
|
+
|
|
14
|
+
vec4 transition (vec2 uv) {
|
|
15
|
+
vec2 v = normalize(direction);
|
|
16
|
+
v /= abs(v.x)+abs(v.y);
|
|
17
|
+
float d = v.x * center.x + v.y * center.y;
|
|
18
|
+
float m =
|
|
19
|
+
(1.0-step(progress, 0.0)) * // there is something wrong with our formula that makes m not equals 0.0 with progress is 0.0
|
|
20
|
+
(1.0 - smoothstep(-smoothness, 0.0, v.x * uv.x + v.y * uv.y - (d-0.5+progress*(1.+smoothness))));
|
|
21
|
+
return mix(getFromColor(uv), getToColor(uv), m);
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// displacement — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/displacement.glsl
|
|
2
|
+
// Author: Travis Fischer
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade in which a displacement map (an extra grayscale texture) warps both images
|
|
5
|
+
// Tags: displace, distort, blend
|
|
6
|
+
//
|
|
7
|
+
// Adapted from a Codrops article by Robin Delaporte
|
|
8
|
+
// https://tympanus.net/Development/DistortionHoverEffect
|
|
9
|
+
|
|
10
|
+
uniform sampler2D displacementMap;
|
|
11
|
+
|
|
12
|
+
// @param Strength of the displacement
|
|
13
|
+
uniform float strength; // = 0.5
|
|
14
|
+
|
|
15
|
+
vec4 transition (vec2 uv) {
|
|
16
|
+
float displacement = texture(displacementMap, uv).r * strength;
|
|
17
|
+
|
|
18
|
+
vec2 uvFrom = vec2(uv.x + progress * displacement, uv.y);
|
|
19
|
+
vec2 uvTo = vec2(uv.x - (1.0 - progress) * displacement, uv.y);
|
|
20
|
+
|
|
21
|
+
return mix(
|
|
22
|
+
getFromColor(uvFrom),
|
|
23
|
+
getToColor(uvTo),
|
|
24
|
+
progress
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// dissolve — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/dissolve.glsl
|
|
2
|
+
// Author: hjm1fb
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image spreads over the outgoing one with a hot, glowing edge
|
|
5
|
+
// Tags: dissolve, burn, glow
|
|
6
|
+
|
|
7
|
+
uniform float uLineWidth; // = 0.1
|
|
8
|
+
// @color Color of the spreading edge
|
|
9
|
+
uniform vec3 uSpreadClr; // = vec3(1.0, 0.0, 0.0)
|
|
10
|
+
// @color Color of the hottest part of the edge
|
|
11
|
+
uniform vec3 uHotClr; // = vec3(0.9, 0.9, 0.2)
|
|
12
|
+
uniform float uPow; // = 5.0
|
|
13
|
+
uniform float uIntensity; // = 1.0
|
|
14
|
+
|
|
15
|
+
vec2 hash(vec2 p) // replace this by something better
|
|
16
|
+
{
|
|
17
|
+
p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));
|
|
18
|
+
return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
float noise(in vec2 p) {
|
|
22
|
+
const float K1 = 0.366025404; // (sqrt(3)-1)/2;
|
|
23
|
+
const float K2 = 0.211324865; // (3-sqrt(3))/6;
|
|
24
|
+
|
|
25
|
+
vec2 i = floor(p + (p.x + p.y) * K1);
|
|
26
|
+
vec2 a = p - i + (i.x + i.y) * K2;
|
|
27
|
+
float m = step(a.y, a.x);
|
|
28
|
+
vec2 o = vec2(m, 1.0 - m);
|
|
29
|
+
vec2 b = a - o + K2;
|
|
30
|
+
vec2 c = a - 1.0 + 2.0 * K2;
|
|
31
|
+
vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0);
|
|
32
|
+
vec3 n = h * h * h * h * vec3(dot(a, hash(i + 0.0)), dot(b, hash(i + o)), dot(c, hash(i + 1.0)));
|
|
33
|
+
return dot(n, vec3(70.0));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
vec4 transition(vec2 uv) {
|
|
37
|
+
vec4 from = getFromColor(uv);
|
|
38
|
+
vec4 to = getToColor(uv);
|
|
39
|
+
vec4 outColor;
|
|
40
|
+
float burn;
|
|
41
|
+
burn = 0.5 + 0.5 * (0.299 * from.r + 0.587 * from.g + 0.114 * from.b);
|
|
42
|
+
|
|
43
|
+
float show = burn - progress;
|
|
44
|
+
if (show < 0.001) {
|
|
45
|
+
outColor = to;
|
|
46
|
+
} else {
|
|
47
|
+
float factor = 1.0 - smoothstep(0.0, uLineWidth, show);
|
|
48
|
+
vec3 burnColor = mix(uSpreadClr, uHotClr, factor);
|
|
49
|
+
burnColor = pow(burnColor, vec3(uPow)) * uIntensity;
|
|
50
|
+
vec3 finalRGB = mix(from.rgb, burnColor, factor * step(0.0001, progress));
|
|
51
|
+
outColor = vec4(finalRGB * from.a, from.a);
|
|
52
|
+
}
|
|
53
|
+
return outColor;
|
|
54
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// doorway — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/doorway.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image opens like double doors as the incoming one comes forward, with a floor reflection
|
|
5
|
+
// Tags: doors, 3d, reflection
|
|
6
|
+
// @param Strength of the reflection
|
|
7
|
+
uniform float reflection; // = 0.4
|
|
8
|
+
// @param Amount of perspective
|
|
9
|
+
uniform float perspective; // = 0.4
|
|
10
|
+
uniform float depth; // = 3
|
|
11
|
+
|
|
12
|
+
const vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
|
13
|
+
const vec2 boundMin = vec2(0.0, 0.0);
|
|
14
|
+
const vec2 boundMax = vec2(1.0, 1.0);
|
|
15
|
+
|
|
16
|
+
bool inBounds (vec2 p) {
|
|
17
|
+
return all(lessThan(boundMin, p)) && all(lessThan(p, boundMax));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
vec2 project (vec2 p) {
|
|
21
|
+
return p * vec2(1.0, -1.2) + vec2(0.0, -0.02);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
vec4 bgColor (vec2 p, vec2 pto) {
|
|
25
|
+
vec4 c = black;
|
|
26
|
+
pto = project(pto);
|
|
27
|
+
if (inBounds(pto)) {
|
|
28
|
+
c += mix(black, getToColor(pto), reflection * mix(1.0, 0.0, pto.y));
|
|
29
|
+
}
|
|
30
|
+
return c;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
vec4 transition (vec2 p) {
|
|
35
|
+
vec2 pfr = vec2(-1.), pto = vec2(-1.);
|
|
36
|
+
float middleSlit = 2.0 * abs(p.x-0.5) - progress;
|
|
37
|
+
if (middleSlit > 0.0) {
|
|
38
|
+
pfr = p + (p.x > 0.5 ? -1.0 : 1.0) * vec2(0.5*progress, 0.0);
|
|
39
|
+
float d = 1.0/(1.0+perspective*progress*(1.0-middleSlit));
|
|
40
|
+
pfr.y -= d/2.;
|
|
41
|
+
pfr.y *= d;
|
|
42
|
+
pfr.y += d/2.;
|
|
43
|
+
}
|
|
44
|
+
float size = mix(1.0, depth, 1.-progress);
|
|
45
|
+
pto = (p + vec2(-0.5, -0.5)) * vec2(size, size) + vec2(0.5, 0.5);
|
|
46
|
+
if (inBounds(pfr)) {
|
|
47
|
+
return getFromColor(pfr);
|
|
48
|
+
}
|
|
49
|
+
else if (inBounds(pto)) {
|
|
50
|
+
return getToColor(pto);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return bgColor(p, pto);
|
|
54
|
+
}
|
|
55
|
+
}
|
package/glsl3/fade.glsl
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// fade — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/fade.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A linear crossfade between the two images
|
|
5
|
+
// Tags: fade, blend
|
|
6
|
+
|
|
7
|
+
vec4 transition (vec2 uv) {
|
|
8
|
+
return mix(
|
|
9
|
+
getFromColor(uv),
|
|
10
|
+
getToColor(uv),
|
|
11
|
+
progress
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// fadecolor — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/fadecolor.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A fade through a solid color, black by default
|
|
5
|
+
// Tags: fade, color
|
|
6
|
+
// @color Color to fade through
|
|
7
|
+
uniform vec3 color;// = vec3(0.0)
|
|
8
|
+
// @range(0, 1) How long the color shows in the middle
|
|
9
|
+
uniform float colorPhase; // = 0.4 ; // if 0.0, there is no black phase, if 0.9, the black phase is very important
|
|
10
|
+
vec4 transition (vec2 uv) {
|
|
11
|
+
return mix(
|
|
12
|
+
mix(vec4(color, 1.0), getFromColor(uv), smoothstep(1.0-colorPhase, 0.0, progress)),
|
|
13
|
+
mix(vec4(color, 1.0), getToColor(uv), smoothstep( colorPhase, 1.0, progress)),
|
|
14
|
+
progress);
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// fadegrayscale — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/fadegrayscale.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through grayscale
|
|
5
|
+
// Tags: fade, grayscale, color
|
|
6
|
+
|
|
7
|
+
// @range(0, 1) How long the grayscale phase lasts
|
|
8
|
+
uniform float intensity; // = 0.3; // if 0.0, the image directly turn grayscale, if 0.9, the grayscale transition phase is very important
|
|
9
|
+
|
|
10
|
+
vec3 grayscale (vec3 color) {
|
|
11
|
+
return vec3(0.2126*color.r + 0.7152*color.g + 0.0722*color.b);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
vec4 transition (vec2 uv) {
|
|
15
|
+
vec4 fc = getFromColor(uv);
|
|
16
|
+
vec4 tc = getToColor(uv);
|
|
17
|
+
return mix(
|
|
18
|
+
mix(vec4(grayscale(fc.rgb), 1.0), fc, smoothstep(1.0-intensity, 0.0, progress)),
|
|
19
|
+
mix(vec4(grayscale(tc.rgb), 1.0), tc, smoothstep( intensity, 1.0, progress)),
|
|
20
|
+
progress);
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// flyeye — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/flyeye.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The image breaks into a fly's-eye grid of lenses with color separation
|
|
5
|
+
// Tags: lens, distort, chromatic
|
|
6
|
+
uniform float size; // = 0.04
|
|
7
|
+
uniform float zoom; // = 50.0
|
|
8
|
+
uniform float colorSeparation; // = 0.3
|
|
9
|
+
|
|
10
|
+
vec4 transition(vec2 p) {
|
|
11
|
+
float inv = 1. - progress;
|
|
12
|
+
vec2 disp = size*vec2(cos(zoom*p.x), sin(zoom*p.y));
|
|
13
|
+
vec4 texTo = getToColor(p + inv*disp);
|
|
14
|
+
vec4 texFrom = vec4(
|
|
15
|
+
getFromColor(p + progress*disp*(1.0 - colorSeparation)).r,
|
|
16
|
+
getFromColor(p + progress*disp).g,
|
|
17
|
+
getFromColor(p + progress*disp*(1.0 + colorSeparation)).b,
|
|
18
|
+
1.0);
|
|
19
|
+
return texTo*progress + texFrom*inv;
|
|
20
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// fragment — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/fragment.glsl
|
|
2
|
+
// Author: lbl
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image shatters into fragments that fly away
|
|
5
|
+
// Tags: shatter, fragments
|
|
6
|
+
|
|
7
|
+
#define POINTS 10
|
|
8
|
+
|
|
9
|
+
float random(vec2 par) {
|
|
10
|
+
return fract(sin(dot(par.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
vec2 random2(vec2 par) {
|
|
14
|
+
float rand = random(par);
|
|
15
|
+
return vec2(rand, random(par + rand));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
vec4 transition (vec2 uv) {
|
|
19
|
+
if (progress <= 0.0) return getFromColor(uv);
|
|
20
|
+
if (progress >= 1.0) return getToColor(uv);
|
|
21
|
+
|
|
22
|
+
const float duration = 8.0;
|
|
23
|
+
float time = progress * duration;
|
|
24
|
+
vec2 point[POINTS];
|
|
25
|
+
for (int i = 0; i < POINTS; i++) {
|
|
26
|
+
point[i] = random2(vec2(float(i)));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
vec4 col = getToColor(uv);
|
|
30
|
+
|
|
31
|
+
for (int i = 0; i < POINTS; i++) {
|
|
32
|
+
vec2 dir = normalize(random2(vec2(float(i), float(i) + 11.)));
|
|
33
|
+
float v = (1.0 + random(dir) * 0.5) * 0.2;
|
|
34
|
+
vec2 ofst = dir * clamp(time - 0.5, 0.0, duration) * v;
|
|
35
|
+
vec2 U = uv - ofst;
|
|
36
|
+
|
|
37
|
+
if (U.x < 0.0 || U.x > 1.0 || U.y < 0.0 || U.y > 1.0) continue;
|
|
38
|
+
|
|
39
|
+
float dist_i = distance(U, point[i]);
|
|
40
|
+
bool closest = true;
|
|
41
|
+
for (int j = 0; j < POINTS; j++) {
|
|
42
|
+
if (distance(U, point[j]) < dist_i) {
|
|
43
|
+
closest = false;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (closest) {
|
|
49
|
+
col = getFromColor(U);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return col;
|
|
54
|
+
}
|
package/glsl3/heart.glsl
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// heart — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/heart.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A heart shape grows from the center to reveal the incoming image
|
|
5
|
+
// Tags: shape, wipe, heart
|
|
6
|
+
|
|
7
|
+
float inHeart (vec2 p, vec2 center, float size) {
|
|
8
|
+
if (size==0.0) return 0.0;
|
|
9
|
+
vec2 o = (p-center)/(1.6*size);
|
|
10
|
+
float a = o.x*o.x+o.y*o.y-0.3;
|
|
11
|
+
return step(a*a*a, o.x*o.x*o.y*o.y*o.y);
|
|
12
|
+
}
|
|
13
|
+
vec4 transition (vec2 uv) {
|
|
14
|
+
return mix(
|
|
15
|
+
getFromColor(uv),
|
|
16
|
+
getToColor(uv),
|
|
17
|
+
inHeart(uv, vec2(0.5, 0.4), progress)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// hexagonalize — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/hexagonalize.glsl
|
|
2
|
+
// Author: Fernando Kuteken
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Both images turn into hexagons, crossfade, then sharpen again
|
|
5
|
+
// Tags: pixelate, hexagon, blend
|
|
6
|
+
// Hexagonal math from: http://www.redblobgames.com/grids/hexagons/
|
|
7
|
+
|
|
8
|
+
uniform int steps; // = 50
|
|
9
|
+
// @param Number of hexagons across
|
|
10
|
+
uniform float horizontalHexagons; // = 20
|
|
11
|
+
|
|
12
|
+
struct Hexagon {
|
|
13
|
+
float q;
|
|
14
|
+
float r;
|
|
15
|
+
float s;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
Hexagon createHexagon(float q, float r){
|
|
19
|
+
Hexagon hex;
|
|
20
|
+
hex.q = q;
|
|
21
|
+
hex.r = r;
|
|
22
|
+
hex.s = -q - r;
|
|
23
|
+
return hex;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Hexagon roundHexagon(Hexagon hex){
|
|
27
|
+
|
|
28
|
+
float q = floor(hex.q + 0.5);
|
|
29
|
+
float r = floor(hex.r + 0.5);
|
|
30
|
+
float s = floor(hex.s + 0.5);
|
|
31
|
+
|
|
32
|
+
float deltaQ = abs(q - hex.q);
|
|
33
|
+
float deltaR = abs(r - hex.r);
|
|
34
|
+
float deltaS = abs(s - hex.s);
|
|
35
|
+
|
|
36
|
+
if (deltaQ > deltaR && deltaQ > deltaS)
|
|
37
|
+
q = -r - s;
|
|
38
|
+
else if (deltaR > deltaS)
|
|
39
|
+
r = -q - s;
|
|
40
|
+
else
|
|
41
|
+
s = -q - r;
|
|
42
|
+
|
|
43
|
+
return createHexagon(q, r);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
Hexagon hexagonFromPoint(vec2 point, float size) {
|
|
47
|
+
|
|
48
|
+
point.y /= ratio;
|
|
49
|
+
point = (point - 0.5) / size;
|
|
50
|
+
|
|
51
|
+
float q = (sqrt(3.0) / 3.0) * point.x + (-1.0 / 3.0) * point.y;
|
|
52
|
+
float r = 0.0 * point.x + 2.0 / 3.0 * point.y;
|
|
53
|
+
|
|
54
|
+
Hexagon hex = createHexagon(q, r);
|
|
55
|
+
return roundHexagon(hex);
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
vec2 pointFromHexagon(Hexagon hex, float size) {
|
|
60
|
+
|
|
61
|
+
float x = (sqrt(3.0) * hex.q + (sqrt(3.0) / 2.0) * hex.r) * size + 0.5;
|
|
62
|
+
float y = (0.0 * hex.q + (3.0 / 2.0) * hex.r) * size + 0.5;
|
|
63
|
+
|
|
64
|
+
return vec2(x, y * ratio);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
vec4 transition (vec2 uv) {
|
|
68
|
+
|
|
69
|
+
float dist = 2.0 * min(progress, 1.0 - progress);
|
|
70
|
+
dist = steps > 0 ? ceil(dist * float(steps)) / float(steps) : dist;
|
|
71
|
+
|
|
72
|
+
float size = (sqrt(3.0) / 3.0) * dist / horizontalHexagons;
|
|
73
|
+
|
|
74
|
+
vec2 point = dist > 0.0 ? pointFromHexagon(hexagonFromPoint(uv, size), size) : uv;
|
|
75
|
+
|
|
76
|
+
return mix(getFromColor(point), getToColor(point), progress);
|
|
77
|
+
|
|
78
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// kaleidoscope — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/kaleidoscope.glsl
|
|
2
|
+
// Author: nwoeanhinnogaehr
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through a spinning kaleidoscope
|
|
5
|
+
// Tags: kaleidoscope, distort, blend
|
|
6
|
+
|
|
7
|
+
uniform float speed; // = 1.0
|
|
8
|
+
uniform float angle; // = 1.0
|
|
9
|
+
uniform float power; // = 1.5
|
|
10
|
+
|
|
11
|
+
vec4 transition(vec2 uv) {
|
|
12
|
+
vec2 p = uv.xy / vec2(1.0).xy;
|
|
13
|
+
vec2 q = p;
|
|
14
|
+
float t = pow(progress, power)*speed;
|
|
15
|
+
p = p -0.5;
|
|
16
|
+
for (int i = 0; i < 7; i++) {
|
|
17
|
+
p = vec2(sin(t)*p.x + cos(t)*p.y, sin(t)*p.y - cos(t)*p.x);
|
|
18
|
+
t += angle;
|
|
19
|
+
p = abs(mod(p, 2.0) - 1.0);
|
|
20
|
+
}
|
|
21
|
+
abs(mod(p, 1.0));
|
|
22
|
+
return mix(
|
|
23
|
+
mix(getFromColor(q), getToColor(q), progress),
|
|
24
|
+
mix(getFromColor(p), getToColor(p), progress), 1.0 - 2.0*abs(progress - 0.5));
|
|
25
|
+
}
|
package/glsl3/luma.glsl
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// luma — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/luma.glsl
|
|
2
|
+
// Author: gre
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A wipe that follows the brightness of a grayscale mask (the luma texture)
|
|
5
|
+
// Tags: wipe, luma, mask
|
|
6
|
+
|
|
7
|
+
uniform sampler2D luma;
|
|
8
|
+
|
|
9
|
+
vec4 transition(vec2 uv) {
|
|
10
|
+
return mix(
|
|
11
|
+
getToColor(uv),
|
|
12
|
+
getFromColor(uv),
|
|
13
|
+
step(progress, texture(luma, uv).r)
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// luminance_melt — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/luminance_melt.glsl
|
|
2
|
+
// Author: 0gust1
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The outgoing image melts away in noisy vertical streaks, depending on its brightness
|
|
5
|
+
// Tags: melt, noise, luma
|
|
6
|
+
//My own first transition — based on crosshatch code (from pthrasher), using simplex noise formula (copied and pasted)
|
|
7
|
+
//-> cooler with high contrasted images (isolated dark subject on light background f.e.)
|
|
8
|
+
//TODO : try to rebase it on DoomTransition (from zeh)?
|
|
9
|
+
//optimizations :
|
|
10
|
+
//luminance (see http://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color#answer-596241)
|
|
11
|
+
// Y = (R+R+B+G+G+G)/6
|
|
12
|
+
//or Y = (R+R+R+B+G+G+G+G)>>3
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
//direction of movement : 0 : up, 1, down
|
|
16
|
+
// @param Direction of the melt (false: up, true: down)
|
|
17
|
+
uniform bool direction; // = true
|
|
18
|
+
//luminance threshold
|
|
19
|
+
// @range(0, 1) Luminance threshold
|
|
20
|
+
uniform float l_threshold; // = 0.8
|
|
21
|
+
//does the movement takes effect above or below luminance threshold ?
|
|
22
|
+
// @param Melt the parts above the threshold instead of below
|
|
23
|
+
uniform bool above; // = false
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
//Random function borrowed from everywhere
|
|
27
|
+
float rand(vec2 co){
|
|
28
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
// Simplex noise :
|
|
33
|
+
// Description : Array and textureless GLSL 2D simplex noise function.
|
|
34
|
+
// Author : Ian McEwan, Ashima Arts.
|
|
35
|
+
// Maintainer : ijm
|
|
36
|
+
// Lastmod : 20110822 (ijm)
|
|
37
|
+
// License : MIT
|
|
38
|
+
// 2011 Ashima Arts. All rights reserved.
|
|
39
|
+
// Distributed under the MIT License. See LICENSE file.
|
|
40
|
+
// https://github.com/ashima/webgl-noise
|
|
41
|
+
//
|
|
42
|
+
|
|
43
|
+
vec3 mod289(vec3 x) {
|
|
44
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
vec2 mod289(vec2 x) {
|
|
48
|
+
return x - floor(x * (1.0 / 289.0)) * 289.0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
vec3 permute(vec3 x) {
|
|
52
|
+
return mod289(((x*34.0)+1.0)*x);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
float snoise(vec2 v)
|
|
56
|
+
{
|
|
57
|
+
const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0
|
|
58
|
+
0.366025403784439, // 0.5*(sqrt(3.0)-1.0)
|
|
59
|
+
-0.577350269189626, // -1.0 + 2.0 * C.x
|
|
60
|
+
0.024390243902439); // 1.0 / 41.0
|
|
61
|
+
// First corner
|
|
62
|
+
vec2 i = floor(v + dot(v, C.yy) );
|
|
63
|
+
vec2 x0 = v - i + dot(i, C.xx);
|
|
64
|
+
|
|
65
|
+
// Other corners
|
|
66
|
+
vec2 i1;
|
|
67
|
+
//i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0
|
|
68
|
+
//i1.y = 1.0 - i1.x;
|
|
69
|
+
i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
70
|
+
// x0 = x0 - 0.0 + 0.0 * C.xx ;
|
|
71
|
+
// x1 = x0 - i1 + 1.0 * C.xx ;
|
|
72
|
+
// x2 = x0 - 1.0 + 2.0 * C.xx ;
|
|
73
|
+
vec4 x12 = x0.xyxy + C.xxzz;
|
|
74
|
+
x12.xy -= i1;
|
|
75
|
+
|
|
76
|
+
// Permutations
|
|
77
|
+
i = mod289(i); // Avoid truncation effects in permutation
|
|
78
|
+
vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))
|
|
79
|
+
+ i.x + vec3(0.0, i1.x, 1.0 ));
|
|
80
|
+
|
|
81
|
+
vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);
|
|
82
|
+
m = m*m ;
|
|
83
|
+
m = m*m ;
|
|
84
|
+
|
|
85
|
+
// Gradients: 41 points uniformly over a line, mapped onto a diamond.
|
|
86
|
+
// The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)
|
|
87
|
+
|
|
88
|
+
vec3 x = 2.0 * fract(p * C.www) - 1.0;
|
|
89
|
+
vec3 h = abs(x) - 0.5;
|
|
90
|
+
vec3 ox = floor(x + 0.5);
|
|
91
|
+
vec3 a0 = x - ox;
|
|
92
|
+
|
|
93
|
+
// Normalise gradients implicitly by scaling m
|
|
94
|
+
// Approximation of: m *= inversesqrt( a0*a0 + h*h );
|
|
95
|
+
m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );
|
|
96
|
+
|
|
97
|
+
// Compute final noise value at P
|
|
98
|
+
vec3 g;
|
|
99
|
+
g.x = a0.x * x0.x + h.x * x0.y;
|
|
100
|
+
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
|
|
101
|
+
return 130.0 * dot(m, g);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Simplex noise -- end
|
|
105
|
+
|
|
106
|
+
float luminance(vec4 color){
|
|
107
|
+
//(0.299*R + 0.587*G + 0.114*B)
|
|
108
|
+
return color.r*0.299+color.g*0.587+color.b*0.114;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
vec4 transition(vec2 uv) {
|
|
112
|
+
vec2 center = vec2(1.0, direction);
|
|
113
|
+
vec2 p = uv.xy / vec2(1.0).xy;
|
|
114
|
+
if (progress == 0.0) {
|
|
115
|
+
return getFromColor(p);
|
|
116
|
+
} else if (progress == 1.0) {
|
|
117
|
+
return getToColor(p);
|
|
118
|
+
} else {
|
|
119
|
+
float x = progress;
|
|
120
|
+
float dist = distance(center, p)- progress*exp(snoise(vec2(p.x, 0.0)));
|
|
121
|
+
float r = x - rand(vec2(p.x, 0.1));
|
|
122
|
+
float m;
|
|
123
|
+
if(above){
|
|
124
|
+
m = dist <= r && luminance(getFromColor(p))>l_threshold ? 1.0 : (progress*progress*progress);
|
|
125
|
+
}
|
|
126
|
+
else{
|
|
127
|
+
m = dist <= r && luminance(getFromColor(p))<l_threshold ? 1.0 : (progress*progress*progress);
|
|
128
|
+
}
|
|
129
|
+
return mix(getFromColor(p), getToColor(p), m);
|
|
130
|
+
}
|
|
131
|
+
}
|
package/glsl3/morph.glsl
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// morph — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/morph.glsl
|
|
2
|
+
// Author: paniq
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade in which each image is displaced by the other's colors, like a morph
|
|
5
|
+
// Tags: morph, distort, blend
|
|
6
|
+
// @param Strength of the displacement
|
|
7
|
+
uniform float strength; // = 0.1
|
|
8
|
+
|
|
9
|
+
vec4 transition(vec2 p) {
|
|
10
|
+
vec4 ca = getFromColor(p);
|
|
11
|
+
vec4 cb = getToColor(p);
|
|
12
|
+
|
|
13
|
+
vec2 oa = (((ca.rg+ca.b)*0.5)*2.0-1.0);
|
|
14
|
+
vec2 ob = (((cb.rg+cb.b)*0.5)*2.0-1.0);
|
|
15
|
+
vec2 oc = mix(oa,ob,0.5)*strength;
|
|
16
|
+
|
|
17
|
+
float w0 = progress;
|
|
18
|
+
float w1 = 1.0-w0;
|
|
19
|
+
return mix(getFromColor(p+oc*w0), getToColor(p-oc*w1), progress);
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// mosaic_transition — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/mosaic_transition.glsl
|
|
2
|
+
// Author: YueDev
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Both images break into mosaic blocks that blend, then sharpen into the incoming image
|
|
5
|
+
// Tags: mosaic, pixelate, blend
|
|
6
|
+
|
|
7
|
+
// @param Number of mosaic blocks
|
|
8
|
+
uniform float mosaicNum;// = 10.0
|
|
9
|
+
|
|
10
|
+
vec2 getMosaicUV(vec2 uv) {
|
|
11
|
+
float mosaicWidth = 2.0 / mosaicNum * min(progress, 1.0 - progress);
|
|
12
|
+
float mX = floor(uv.x / mosaicWidth) + 0.5;
|
|
13
|
+
float mY = floor(uv.y / mosaicWidth) + 0.5;
|
|
14
|
+
return vec2(mX * mosaicWidth, mY * mosaicWidth);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
vec4 transition (vec2 uv) {
|
|
18
|
+
vec2 mosaicUV = min(progress, 1.0 - progress) == 0.0 ? uv : getMosaicUV(uv);
|
|
19
|
+
return mix(getFromColor(mosaicUV), getToColor(mosaicUV), progress * progress);
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// multiply_blend — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/multiply_blend.glsl
|
|
2
|
+
// Author: Fernando Kuteken
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade through the multiplied blend of both images
|
|
5
|
+
// Tags: blend, fade
|
|
6
|
+
|
|
7
|
+
vec4 blend(vec4 a, vec4 b) {
|
|
8
|
+
return a * b;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
vec4 transition (vec2 uv) {
|
|
12
|
+
|
|
13
|
+
vec4 blended = blend(getFromColor(uv), getToColor(uv));
|
|
14
|
+
|
|
15
|
+
if (progress < 0.5)
|
|
16
|
+
return mix(getFromColor(uv), blended, 2.0 * progress);
|
|
17
|
+
else
|
|
18
|
+
return mix(blended, getToColor(uv), 2.0 * progress - 1.0);
|
|
19
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// old_tv_lost_signal — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/old_tv_lost_signal.glsl
|
|
2
|
+
// Author: mernking (gitlab.com/Godswork)
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade with drifting tracking lines and tearing, like a TV losing its signal
|
|
5
|
+
// Tags: retro, glitch, scanlines
|
|
6
|
+
|
|
7
|
+
float hash(vec2 p) {
|
|
8
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
vec4 transition(vec2 uv) {
|
|
12
|
+
|
|
13
|
+
float p = progress;
|
|
14
|
+
float strength = sin(p * 3.14159265);
|
|
15
|
+
|
|
16
|
+
vec2 tv = uv;
|
|
17
|
+
|
|
18
|
+
vec4 fromColor = getFromColor(tv);
|
|
19
|
+
vec4 toColor = getToColor(tv);
|
|
20
|
+
|
|
21
|
+
vec4 color = mix(fromColor, toColor, p);
|
|
22
|
+
|
|
23
|
+
// horizontal tracking lines (key effect)
|
|
24
|
+
float lineY = floor(tv.y * 120.0);
|
|
25
|
+
|
|
26
|
+
float noise = hash(vec2(lineY, p * 20.0));
|
|
27
|
+
|
|
28
|
+
float line = step(0.92, noise);
|
|
29
|
+
|
|
30
|
+
// make lines drift during transition
|
|
31
|
+
float drift =
|
|
32
|
+
sin(tv.y * 30.0 + p * 10.0)
|
|
33
|
+
* 0.02
|
|
34
|
+
* strength;
|
|
35
|
+
|
|
36
|
+
vec4 shiftedFrom = getFromColor(tv + vec2(drift, 0.0));
|
|
37
|
+
vec4 shiftedTo = getToColor(tv + vec2(drift, 0.0));
|
|
38
|
+
|
|
39
|
+
vec4 lineColor = mix(shiftedFrom, shiftedTo, p);
|
|
40
|
+
|
|
41
|
+
// apply tearing only on selected scanlines
|
|
42
|
+
color = mix(color, lineColor, line * strength);
|
|
43
|
+
|
|
44
|
+
// mild scanline darkening (CRT feel)
|
|
45
|
+
float scan =
|
|
46
|
+
sin(tv.y * 900.0) * 0.03;
|
|
47
|
+
|
|
48
|
+
color.rgb -= scan * strength;
|
|
49
|
+
|
|
50
|
+
return color;
|
|
51
|
+
}
|