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
package/msl/Fold.metal
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Fold — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Fold.glsl
|
|
2
|
+
// Author: nwoeanhinnogaehr
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: The incoming image unfolds from the left while the outgoing one folds away to the right
|
|
5
|
+
// Bindings and uniform layout: see the gl-transitions package README
|
|
6
|
+
|
|
7
|
+
// language: metal1.0
|
|
8
|
+
#include <metal_stdlib>
|
|
9
|
+
#include <simd/simd.h>
|
|
10
|
+
|
|
11
|
+
using metal::uint;
|
|
12
|
+
|
|
13
|
+
struct Uniforms {
|
|
14
|
+
float progress;
|
|
15
|
+
float ratio;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
metal::float4 getToColor(
|
|
19
|
+
thread metal::float2& uv,
|
|
20
|
+
metal::sampler _sampler,
|
|
21
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
22
|
+
) {
|
|
23
|
+
float _e13 = uv[0u];
|
|
24
|
+
float _e15 = uv[1u];
|
|
25
|
+
metal::float4 _e18 = _to.sample(_sampler, metal::float2(_e13, 1.0 - _e15), metal::level(0.0));
|
|
26
|
+
return _e18;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
metal::float4 getFromColor(
|
|
30
|
+
thread metal::float2& uv_1,
|
|
31
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
32
|
+
metal::sampler _sampler
|
|
33
|
+
) {
|
|
34
|
+
float _e13 = uv_1[0u];
|
|
35
|
+
float _e15 = uv_1[1u];
|
|
36
|
+
metal::float4 _e18 = _from.sample(_sampler, metal::float2(_e13, 1.0 - _e15), metal::level(0.0));
|
|
37
|
+
return _e18;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
metal::float4 transition(
|
|
41
|
+
thread metal::float2& uv_2,
|
|
42
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
43
|
+
metal::sampler _sampler,
|
|
44
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
45
|
+
constant Uniforms& uniforms
|
|
46
|
+
) {
|
|
47
|
+
metal::float2 param = {};
|
|
48
|
+
metal::float2 param_1 = {};
|
|
49
|
+
bool phi_76_ = {};
|
|
50
|
+
float _e15 = uniforms.progress;
|
|
51
|
+
bool _e16 = _e15 == 0.0;
|
|
52
|
+
phi_76_ = _e16;
|
|
53
|
+
if (!(_e16)) {
|
|
54
|
+
float _e19 = uv_2[0u];
|
|
55
|
+
float _e21 = uniforms.progress;
|
|
56
|
+
phi_76_ = _e19 > _e21;
|
|
57
|
+
}
|
|
58
|
+
bool _e24 = phi_76_;
|
|
59
|
+
if (_e24) {
|
|
60
|
+
metal::float2 _e25 = uv_2;
|
|
61
|
+
float _e27 = uniforms.progress;
|
|
62
|
+
float _e31 = uniforms.progress;
|
|
63
|
+
param = (_e25 - metal::float2(_e27, 0.0)) / metal::float2(1.0 - _e31, 1.0);
|
|
64
|
+
metal::float4 _e35 = getFromColor(param, _from, _sampler);
|
|
65
|
+
return _e35;
|
|
66
|
+
}
|
|
67
|
+
metal::float2 _e36 = uv_2;
|
|
68
|
+
float _e38 = uniforms.progress;
|
|
69
|
+
param_1 = _e36 / metal::float2(_e38, 1.0);
|
|
70
|
+
metal::float4 _e41 = getToColor(param_1, _sampler, _to);
|
|
71
|
+
return _e41;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
void main_1(
|
|
75
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
76
|
+
metal::sampler _sampler,
|
|
77
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
78
|
+
constant Uniforms& uniforms,
|
|
79
|
+
thread metal::float4& _fragColor,
|
|
80
|
+
thread metal::float2& _uv_1
|
|
81
|
+
) {
|
|
82
|
+
metal::float2 param_2 = {};
|
|
83
|
+
metal::float2 _e12 = _uv_1;
|
|
84
|
+
param_2 = _e12;
|
|
85
|
+
metal::float4 _e13 = transition(param_2, _from, _sampler, _to, uniforms);
|
|
86
|
+
_fragColor = _e13;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
struct main_Input {
|
|
91
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
92
|
+
};
|
|
93
|
+
struct main_Output {
|
|
94
|
+
metal::float4 member [[color(0)]];
|
|
95
|
+
};
|
|
96
|
+
fragment main_Output main_(
|
|
97
|
+
main_Input varyings [[stage_in]]
|
|
98
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
99
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
100
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
101
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
102
|
+
) {
|
|
103
|
+
metal::float4 _fragColor = {};
|
|
104
|
+
metal::float2 _uv_1 = {};
|
|
105
|
+
const auto _uv = varyings._uv;
|
|
106
|
+
_uv_1 = _uv;
|
|
107
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
108
|
+
metal::float4 _e3 = _fragColor;
|
|
109
|
+
return main_Output { _e3 };
|
|
110
|
+
}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
// GlitchDisplace — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchDisplace.glsl
|
|
2
|
+
// Author: Matt DesLauriers
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: Blocks of the image are displaced in a glitch that flashes into the incoming image
|
|
5
|
+
// Bindings and uniform layout: see the gl-transitions package README
|
|
6
|
+
|
|
7
|
+
// language: metal1.0
|
|
8
|
+
#include <metal_stdlib>
|
|
9
|
+
#include <simd/simd.h>
|
|
10
|
+
|
|
11
|
+
using metal::uint;
|
|
12
|
+
|
|
13
|
+
struct Uniforms {
|
|
14
|
+
float progress;
|
|
15
|
+
float ratio;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
float ease2(
|
|
19
|
+
thread float& t
|
|
20
|
+
) {
|
|
21
|
+
float local = {};
|
|
22
|
+
float _e34 = t;
|
|
23
|
+
if (_e34 == 1.0) {
|
|
24
|
+
float _e36 = t;
|
|
25
|
+
local = _e36;
|
|
26
|
+
} else {
|
|
27
|
+
float _e37 = t;
|
|
28
|
+
local = 1.0 - metal::pow(2.0, -10.0 * _e37);
|
|
29
|
+
}
|
|
30
|
+
float _e41 = local;
|
|
31
|
+
return _e41;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
float random(
|
|
35
|
+
thread metal::float2& co
|
|
36
|
+
) {
|
|
37
|
+
float a = {};
|
|
38
|
+
float b = {};
|
|
39
|
+
float c = {};
|
|
40
|
+
float dt = {};
|
|
41
|
+
float sn = {};
|
|
42
|
+
a = 12.9898;
|
|
43
|
+
b = 78.233;
|
|
44
|
+
c = 43758.547;
|
|
45
|
+
metal::float2 _e38 = co;
|
|
46
|
+
float _e39 = a;
|
|
47
|
+
float _e40 = b;
|
|
48
|
+
dt = metal::dot(_e38, metal::float2(_e39, _e40));
|
|
49
|
+
float _e43 = dt;
|
|
50
|
+
sn = _e43 - (metal::floor(_e43 / 3.14) * 3.14);
|
|
51
|
+
float _e48 = sn;
|
|
52
|
+
float _e50 = c;
|
|
53
|
+
return metal::fract(metal::sin(_e48) * _e50);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
float voronoi(
|
|
57
|
+
thread metal::float2& x
|
|
58
|
+
) {
|
|
59
|
+
metal::float2 p = {};
|
|
60
|
+
metal::float2 f = {};
|
|
61
|
+
float res = {};
|
|
62
|
+
float j = {};
|
|
63
|
+
float i = {};
|
|
64
|
+
metal::float2 b_1 = {};
|
|
65
|
+
metal::float2 r = {};
|
|
66
|
+
metal::float2 param = {};
|
|
67
|
+
float d = {};
|
|
68
|
+
metal::float2 _e42 = x;
|
|
69
|
+
p = metal::floor(_e42);
|
|
70
|
+
metal::float2 _e44 = x;
|
|
71
|
+
f = metal::fract(_e44);
|
|
72
|
+
res = 8.0;
|
|
73
|
+
j = -1.0;
|
|
74
|
+
uint2 loop_bound = uint2(4294967295u);
|
|
75
|
+
bool loop_init = true;
|
|
76
|
+
while(true) {
|
|
77
|
+
if (metal::all(loop_bound == uint2(0u))) { break; }
|
|
78
|
+
loop_bound -= uint2(loop_bound.y == 0u, 1u);
|
|
79
|
+
if (!loop_init) {
|
|
80
|
+
float _e70 = j;
|
|
81
|
+
j = _e70 + 1.0;
|
|
82
|
+
}
|
|
83
|
+
loop_init = false;
|
|
84
|
+
float _e46 = j;
|
|
85
|
+
if (_e46 <= 1.0) {
|
|
86
|
+
i = -1.0;
|
|
87
|
+
uint2 loop_bound_1 = uint2(4294967295u);
|
|
88
|
+
bool loop_init_1 = true;
|
|
89
|
+
while(true) {
|
|
90
|
+
if (metal::all(loop_bound_1 == uint2(0u))) { break; }
|
|
91
|
+
loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u);
|
|
92
|
+
if (!loop_init_1) {
|
|
93
|
+
float _e68 = i;
|
|
94
|
+
i = _e68 + 1.0;
|
|
95
|
+
}
|
|
96
|
+
loop_init_1 = false;
|
|
97
|
+
float _e48 = i;
|
|
98
|
+
if (_e48 <= 1.0) {
|
|
99
|
+
float _e50 = i;
|
|
100
|
+
float _e51 = j;
|
|
101
|
+
b_1 = metal::float2(_e50, _e51);
|
|
102
|
+
metal::float2 _e53 = b_1;
|
|
103
|
+
metal::float2 _e54 = f;
|
|
104
|
+
metal::float2 _e56 = p;
|
|
105
|
+
metal::float2 _e57 = b_1;
|
|
106
|
+
param = _e56 + _e57;
|
|
107
|
+
float _e59 = random(param);
|
|
108
|
+
r = (_e53 - _e54) + metal::float2(_e59);
|
|
109
|
+
metal::float2 _e62 = r;
|
|
110
|
+
metal::float2 _e63 = r;
|
|
111
|
+
d = metal::dot(_e62, _e63);
|
|
112
|
+
float _e65 = res;
|
|
113
|
+
float _e66 = d;
|
|
114
|
+
res = metal::min(_e65, _e66);
|
|
115
|
+
continue;
|
|
116
|
+
} else {
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
continue;
|
|
121
|
+
} else {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
float _e72 = res;
|
|
126
|
+
return metal::sqrt(_e72);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
metal::float2 displace(
|
|
130
|
+
thread metal::float4& tex,
|
|
131
|
+
thread metal::float2& texCoord,
|
|
132
|
+
thread float& dotDepth,
|
|
133
|
+
thread float& textureDepth,
|
|
134
|
+
thread float& strength
|
|
135
|
+
) {
|
|
136
|
+
float b_2 = {};
|
|
137
|
+
metal::float2 param_1 = {};
|
|
138
|
+
float g = {};
|
|
139
|
+
metal::float2 param_2 = {};
|
|
140
|
+
float r_1 = {};
|
|
141
|
+
metal::float2 param_3 = {};
|
|
142
|
+
metal::float4 dt_1 = {};
|
|
143
|
+
metal::float4 dis = {};
|
|
144
|
+
metal::float2 res_uv = {};
|
|
145
|
+
metal::float2 _e46 = texCoord;
|
|
146
|
+
param_1 = (_e46 * 0.003) + metal::float2(2.0);
|
|
147
|
+
float _e50 = voronoi(param_1);
|
|
148
|
+
b_2 = _e50;
|
|
149
|
+
metal::float2 _e51 = texCoord;
|
|
150
|
+
param_2 = _e51 * 0.2;
|
|
151
|
+
float _e53 = voronoi(param_2);
|
|
152
|
+
g = _e53;
|
|
153
|
+
metal::float2 _e54 = texCoord;
|
|
154
|
+
param_3 = _e54 - metal::float2(1.0);
|
|
155
|
+
float _e57 = voronoi(param_3);
|
|
156
|
+
r_1 = _e57;
|
|
157
|
+
metal::float4 _e58 = tex;
|
|
158
|
+
dt_1 = _e58 * 1.0;
|
|
159
|
+
metal::float4 _e60 = dt_1;
|
|
160
|
+
float _e61 = dotDepth;
|
|
161
|
+
metal::float4 _e65 = tex;
|
|
162
|
+
float _e66 = textureDepth;
|
|
163
|
+
dis = ((_e60 * _e61) + metal::float4(1.0)) - (_e65 * _e66);
|
|
164
|
+
float _e70 = dis[0u];
|
|
165
|
+
float _e72 = textureDepth;
|
|
166
|
+
float _e73 = dotDepth;
|
|
167
|
+
dis[0u] = (_e70 - 1.0) + (_e72 * _e73);
|
|
168
|
+
float _e78 = dis[1u];
|
|
169
|
+
float _e80 = textureDepth;
|
|
170
|
+
float _e81 = dotDepth;
|
|
171
|
+
dis[1u] = (_e78 - 1.0) + (_e80 * _e81);
|
|
172
|
+
float _e85 = strength;
|
|
173
|
+
float _e87 = dis[0u];
|
|
174
|
+
dis[0u] = _e87 * _e85;
|
|
175
|
+
float _e90 = strength;
|
|
176
|
+
float _e92 = dis[1u];
|
|
177
|
+
dis[1u] = _e92 * _e90;
|
|
178
|
+
metal::float2 _e95 = texCoord;
|
|
179
|
+
res_uv = _e95;
|
|
180
|
+
float _e97 = res_uv[0u];
|
|
181
|
+
float _e99 = dis[0u];
|
|
182
|
+
res_uv[0u] = (_e97 + _e99) - 0.0;
|
|
183
|
+
float _e104 = res_uv[1u];
|
|
184
|
+
float _e106 = dis[1u];
|
|
185
|
+
res_uv[1u] = _e104 + _e106;
|
|
186
|
+
metal::float2 _e109 = res_uv;
|
|
187
|
+
return _e109;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
float ease1(
|
|
191
|
+
thread float& t_1
|
|
192
|
+
) {
|
|
193
|
+
float local_1 = {};
|
|
194
|
+
float local_2 = {};
|
|
195
|
+
float _e35 = t_1;
|
|
196
|
+
float _e37 = t_1;
|
|
197
|
+
if ((_e35 == 0.0) || (_e37 == 1.0)) {
|
|
198
|
+
float _e40 = t_1;
|
|
199
|
+
local_1 = _e40;
|
|
200
|
+
} else {
|
|
201
|
+
float _e41 = t_1;
|
|
202
|
+
if (_e41 < 0.5) {
|
|
203
|
+
float _e43 = t_1;
|
|
204
|
+
local_2 = 0.5 * metal::pow(2.0, (20.0 * _e43) - 10.0);
|
|
205
|
+
} else {
|
|
206
|
+
float _e48 = t_1;
|
|
207
|
+
local_2 = (-0.5 * metal::pow(2.0, 10.0 - (_e48 * 20.0))) + 1.0;
|
|
208
|
+
}
|
|
209
|
+
float _e54 = local_2;
|
|
210
|
+
local_1 = _e54;
|
|
211
|
+
}
|
|
212
|
+
float _e55 = local_1;
|
|
213
|
+
return _e55;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
metal::float4 getToColor(
|
|
217
|
+
thread metal::float2& uv,
|
|
218
|
+
metal::sampler _sampler,
|
|
219
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
220
|
+
) {
|
|
221
|
+
float _e34 = uv[0u];
|
|
222
|
+
float _e36 = uv[1u];
|
|
223
|
+
metal::float4 _e39 = _to.sample(_sampler, metal::float2(_e34, 1.0 - _e36), metal::level(0.0));
|
|
224
|
+
return _e39;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
metal::float4 getFromColor(
|
|
228
|
+
thread metal::float2& uv_1,
|
|
229
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
230
|
+
metal::sampler _sampler
|
|
231
|
+
) {
|
|
232
|
+
float _e34 = uv_1[0u];
|
|
233
|
+
float _e36 = uv_1[1u];
|
|
234
|
+
metal::float4 _e39 = _from.sample(_sampler, metal::float2(_e34, 1.0 - _e36), metal::level(0.0));
|
|
235
|
+
return _e39;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
metal::float4 transition(
|
|
239
|
+
thread metal::float2& uv_2,
|
|
240
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
241
|
+
metal::sampler _sampler,
|
|
242
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
243
|
+
constant Uniforms& uniforms
|
|
244
|
+
) {
|
|
245
|
+
metal::float2 p_1 = {};
|
|
246
|
+
metal::float4 color1_ = {};
|
|
247
|
+
metal::float2 param_4 = {};
|
|
248
|
+
metal::float4 color2_ = {};
|
|
249
|
+
metal::float2 param_5 = {};
|
|
250
|
+
metal::float2 disp = {};
|
|
251
|
+
float param_6 = {};
|
|
252
|
+
metal::float4 param_7 = {};
|
|
253
|
+
metal::float2 param_8 = {};
|
|
254
|
+
float param_9 = {};
|
|
255
|
+
float param_10 = {};
|
|
256
|
+
float param_11 = {};
|
|
257
|
+
metal::float2 disp2_ = {};
|
|
258
|
+
float param_12 = {};
|
|
259
|
+
metal::float4 param_13 = {};
|
|
260
|
+
metal::float2 param_14 = {};
|
|
261
|
+
float param_15 = {};
|
|
262
|
+
float param_16 = {};
|
|
263
|
+
float param_17 = {};
|
|
264
|
+
metal::float4 dColor1_ = {};
|
|
265
|
+
metal::float2 param_18 = {};
|
|
266
|
+
metal::float4 dColor2_ = {};
|
|
267
|
+
metal::float2 param_19 = {};
|
|
268
|
+
float val = {};
|
|
269
|
+
float param_20 = {};
|
|
270
|
+
metal::float3 gray = {};
|
|
271
|
+
metal::float2 _e59 = uv_2;
|
|
272
|
+
p_1 = _e59 / metal::float2(1.0, 1.0);
|
|
273
|
+
metal::float2 _e61 = p_1;
|
|
274
|
+
param_4 = _e61;
|
|
275
|
+
metal::float4 _e62 = getFromColor(param_4, _from, _sampler);
|
|
276
|
+
color1_ = _e62;
|
|
277
|
+
metal::float2 _e63 = p_1;
|
|
278
|
+
param_5 = _e63;
|
|
279
|
+
metal::float4 _e64 = getToColor(param_5, _sampler, _to);
|
|
280
|
+
color2_ = _e64;
|
|
281
|
+
float _e66 = uniforms.progress;
|
|
282
|
+
param_6 = _e66;
|
|
283
|
+
float _e67 = ease1(param_6);
|
|
284
|
+
metal::float4 _e69 = color1_;
|
|
285
|
+
param_7 = _e69;
|
|
286
|
+
metal::float2 _e70 = p_1;
|
|
287
|
+
param_8 = _e70;
|
|
288
|
+
param_9 = 0.33;
|
|
289
|
+
param_10 = 0.7;
|
|
290
|
+
param_11 = 1.0 - _e67;
|
|
291
|
+
metal::float2 _e71 = displace(param_7, param_8, param_9, param_10, param_11);
|
|
292
|
+
disp = _e71;
|
|
293
|
+
float _e73 = uniforms.progress;
|
|
294
|
+
param_12 = _e73;
|
|
295
|
+
float _e74 = ease2(param_12);
|
|
296
|
+
metal::float4 _e75 = color2_;
|
|
297
|
+
param_13 = _e75;
|
|
298
|
+
metal::float2 _e76 = p_1;
|
|
299
|
+
param_14 = _e76;
|
|
300
|
+
param_15 = 0.33;
|
|
301
|
+
param_16 = 0.5;
|
|
302
|
+
param_17 = _e74;
|
|
303
|
+
metal::float2 _e77 = displace(param_13, param_14, param_15, param_16, param_17);
|
|
304
|
+
disp2_ = _e77;
|
|
305
|
+
metal::float2 _e78 = disp;
|
|
306
|
+
param_18 = _e78;
|
|
307
|
+
metal::float4 _e79 = getToColor(param_18, _sampler, _to);
|
|
308
|
+
dColor1_ = _e79;
|
|
309
|
+
metal::float2 _e80 = disp2_;
|
|
310
|
+
param_19 = _e80;
|
|
311
|
+
metal::float4 _e81 = getFromColor(param_19, _from, _sampler);
|
|
312
|
+
dColor2_ = _e81;
|
|
313
|
+
float _e83 = uniforms.progress;
|
|
314
|
+
param_20 = _e83;
|
|
315
|
+
float _e84 = ease1(param_20);
|
|
316
|
+
val = _e84;
|
|
317
|
+
metal::float4 _e85 = dColor2_;
|
|
318
|
+
metal::float4 _e86 = dColor1_;
|
|
319
|
+
gray = metal::float3(metal::dot(metal::min(_e85, _e86).xyz, metal::float3(0.299, 0.587, 0.114)));
|
|
320
|
+
metal::float3 _e91 = gray;
|
|
321
|
+
dColor2_ = metal::float4(_e91.x, _e91.y, _e91.z, 1.0);
|
|
322
|
+
metal::float4 _e96 = dColor2_;
|
|
323
|
+
dColor2_ = _e96 * 2.0;
|
|
324
|
+
metal::float4 _e98 = color1_;
|
|
325
|
+
metal::float4 _e99 = dColor2_;
|
|
326
|
+
float _e101 = uniforms.progress;
|
|
327
|
+
color1_ = metal::mix(_e98, _e99, metal::float4(metal::smoothstep(0.0, 0.5, _e101)));
|
|
328
|
+
metal::float4 _e105 = color2_;
|
|
329
|
+
metal::float4 _e106 = dColor1_;
|
|
330
|
+
float _e108 = uniforms.progress;
|
|
331
|
+
color2_ = metal::mix(_e105, _e106, metal::float4(metal::smoothstep(1.0, 0.5, _e108)));
|
|
332
|
+
metal::float4 _e112 = color1_;
|
|
333
|
+
metal::float4 _e113 = color2_;
|
|
334
|
+
float _e114 = val;
|
|
335
|
+
return metal::mix(_e112, _e113, metal::float4(_e114));
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
void main_1(
|
|
339
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
340
|
+
metal::sampler _sampler,
|
|
341
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
342
|
+
constant Uniforms& uniforms,
|
|
343
|
+
thread metal::float4& _fragColor,
|
|
344
|
+
thread metal::float2& _uv_1
|
|
345
|
+
) {
|
|
346
|
+
metal::float2 param_21 = {};
|
|
347
|
+
metal::float2 _e33 = _uv_1;
|
|
348
|
+
param_21 = _e33;
|
|
349
|
+
metal::float4 _e34 = transition(param_21, _from, _sampler, _to, uniforms);
|
|
350
|
+
_fragColor = _e34;
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
struct main_Input {
|
|
355
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
356
|
+
};
|
|
357
|
+
struct main_Output {
|
|
358
|
+
metal::float4 member [[color(0)]];
|
|
359
|
+
};
|
|
360
|
+
fragment main_Output main_(
|
|
361
|
+
main_Input varyings [[stage_in]]
|
|
362
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
363
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
364
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
365
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
366
|
+
) {
|
|
367
|
+
metal::float4 _fragColor = {};
|
|
368
|
+
metal::float2 _uv_1 = {};
|
|
369
|
+
const auto _uv = varyings._uv;
|
|
370
|
+
_uv_1 = _uv;
|
|
371
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
372
|
+
metal::float4 _e3 = _fragColor;
|
|
373
|
+
return main_Output { _e3 };
|
|
374
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// GlitchMemories — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchMemories.glsl
|
|
2
|
+
// Author: Gunnar Roth
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Description: A crossfade with glitchy, color-shifted blocks
|
|
5
|
+
// Bindings and uniform layout: see the gl-transitions package README
|
|
6
|
+
|
|
7
|
+
// language: metal1.0
|
|
8
|
+
#include <metal_stdlib>
|
|
9
|
+
#include <simd/simd.h>
|
|
10
|
+
|
|
11
|
+
using metal::uint;
|
|
12
|
+
|
|
13
|
+
struct Uniforms {
|
|
14
|
+
float progress;
|
|
15
|
+
float ratio;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
metal::float4 getToColor(
|
|
19
|
+
thread metal::float2& uv,
|
|
20
|
+
metal::sampler _sampler,
|
|
21
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
22
|
+
) {
|
|
23
|
+
float _e25 = uv[0u];
|
|
24
|
+
float _e27 = uv[1u];
|
|
25
|
+
metal::float4 _e30 = _to.sample(_sampler, metal::float2(_e25, 1.0 - _e27), metal::level(0.0));
|
|
26
|
+
return _e30;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
metal::float4 getFromColor(
|
|
30
|
+
thread metal::float2& uv_1,
|
|
31
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
32
|
+
metal::sampler _sampler
|
|
33
|
+
) {
|
|
34
|
+
float _e25 = uv_1[0u];
|
|
35
|
+
float _e27 = uv_1[1u];
|
|
36
|
+
metal::float4 _e30 = _from.sample(_sampler, metal::float2(_e25, 1.0 - _e27), metal::level(0.0));
|
|
37
|
+
return _e30;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
metal::float4 transition(
|
|
41
|
+
thread metal::float2& p,
|
|
42
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
43
|
+
metal::sampler _sampler,
|
|
44
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
45
|
+
constant Uniforms& uniforms
|
|
46
|
+
) {
|
|
47
|
+
metal::float2 block = {};
|
|
48
|
+
metal::float2 uv_noise = {};
|
|
49
|
+
metal::float2 dist = {};
|
|
50
|
+
metal::float2 local = {};
|
|
51
|
+
metal::float2 red = {};
|
|
52
|
+
metal::float2 green = {};
|
|
53
|
+
metal::float2 blue = {};
|
|
54
|
+
metal::float2 param = {};
|
|
55
|
+
metal::float2 param_1 = {};
|
|
56
|
+
metal::float2 param_2 = {};
|
|
57
|
+
metal::float2 param_3 = {};
|
|
58
|
+
metal::float2 param_4 = {};
|
|
59
|
+
metal::float2 param_5 = {};
|
|
60
|
+
metal::float2 _e37 = p;
|
|
61
|
+
block = metal::floor(_e37 / metal::float2(16.0, 16.0));
|
|
62
|
+
metal::float2 _e40 = block;
|
|
63
|
+
uv_noise = _e40 / metal::float2(64.0, 64.0);
|
|
64
|
+
float _e43 = uniforms.progress;
|
|
65
|
+
metal::float2 _e48 = uv_noise;
|
|
66
|
+
uv_noise = _e48 + (metal::floor(metal::float2(_e43) * metal::float2(1200.0, 3500.0)) / metal::float2(64.0, 64.0));
|
|
67
|
+
float _e51 = uniforms.progress;
|
|
68
|
+
if (_e51 > 0.0) {
|
|
69
|
+
metal::float2 _e53 = uv_noise;
|
|
70
|
+
float _e59 = uniforms.progress;
|
|
71
|
+
local = ((metal::fract(_e53) - metal::float2(0.5)) * 0.3) * (1.0 - _e59);
|
|
72
|
+
} else {
|
|
73
|
+
local = metal::float2(0.0, 0.0);
|
|
74
|
+
}
|
|
75
|
+
metal::float2 _e62 = local;
|
|
76
|
+
dist = _e62;
|
|
77
|
+
metal::float2 _e63 = p;
|
|
78
|
+
metal::float2 _e64 = dist;
|
|
79
|
+
red = _e63 + (_e64 * 0.2);
|
|
80
|
+
metal::float2 _e67 = p;
|
|
81
|
+
metal::float2 _e68 = dist;
|
|
82
|
+
green = _e67 + (_e68 * 0.3);
|
|
83
|
+
metal::float2 _e71 = p;
|
|
84
|
+
metal::float2 _e72 = dist;
|
|
85
|
+
blue = _e71 + (_e72 * 0.5);
|
|
86
|
+
metal::float2 _e75 = red;
|
|
87
|
+
param = _e75;
|
|
88
|
+
metal::float4 _e76 = getFromColor(param, _from, _sampler);
|
|
89
|
+
metal::float2 _e77 = red;
|
|
90
|
+
param_1 = _e77;
|
|
91
|
+
metal::float4 _e78 = getToColor(param_1, _sampler, _to);
|
|
92
|
+
float _e80 = uniforms.progress;
|
|
93
|
+
metal::float2 _e84 = green;
|
|
94
|
+
param_2 = _e84;
|
|
95
|
+
metal::float4 _e85 = getFromColor(param_2, _from, _sampler);
|
|
96
|
+
metal::float2 _e86 = green;
|
|
97
|
+
param_3 = _e86;
|
|
98
|
+
metal::float4 _e87 = getToColor(param_3, _sampler, _to);
|
|
99
|
+
float _e89 = uniforms.progress;
|
|
100
|
+
metal::float2 _e93 = blue;
|
|
101
|
+
param_4 = _e93;
|
|
102
|
+
metal::float4 _e94 = getFromColor(param_4, _from, _sampler);
|
|
103
|
+
metal::float2 _e95 = blue;
|
|
104
|
+
param_5 = _e95;
|
|
105
|
+
metal::float4 _e96 = getToColor(param_5, _sampler, _to);
|
|
106
|
+
float _e98 = uniforms.progress;
|
|
107
|
+
return metal::float4(metal::mix(_e76, _e78, metal::float4(_e80)).x, metal::mix(_e85, _e87, metal::float4(_e89)).y, metal::mix(_e94, _e96, metal::float4(_e98)).z, 1.0);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
void main_1(
|
|
111
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
112
|
+
metal::sampler _sampler,
|
|
113
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
114
|
+
constant Uniforms& uniforms,
|
|
115
|
+
thread metal::float4& _fragColor,
|
|
116
|
+
thread metal::float2& _uv_1
|
|
117
|
+
) {
|
|
118
|
+
metal::float2 param_6 = {};
|
|
119
|
+
metal::float2 _e24 = _uv_1;
|
|
120
|
+
param_6 = _e24;
|
|
121
|
+
metal::float4 _e25 = transition(param_6, _from, _sampler, _to, uniforms);
|
|
122
|
+
_fragColor = _e25;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
struct main_Input {
|
|
127
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
128
|
+
};
|
|
129
|
+
struct main_Output {
|
|
130
|
+
metal::float4 member [[color(0)]];
|
|
131
|
+
};
|
|
132
|
+
fragment main_Output main_(
|
|
133
|
+
main_Input varyings [[stage_in]]
|
|
134
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
135
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
136
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
137
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
138
|
+
) {
|
|
139
|
+
metal::float4 _fragColor = {};
|
|
140
|
+
metal::float2 _uv_1 = {};
|
|
141
|
+
const auto _uv = varyings._uv;
|
|
142
|
+
_uv_1 = _uv;
|
|
143
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
144
|
+
metal::float4 _e3 = _fragColor;
|
|
145
|
+
return main_Output { _e3 };
|
|
146
|
+
}
|