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,210 @@
|
|
|
1
|
+
// doorway — MSL, 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
|
+
// 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
|
+
float reflection;
|
|
17
|
+
float perspective;
|
|
18
|
+
float depth;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
metal::float4 getToColor(
|
|
22
|
+
thread metal::float2& uv,
|
|
23
|
+
metal::sampler _sampler,
|
|
24
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
25
|
+
) {
|
|
26
|
+
float _e30 = uv[0u];
|
|
27
|
+
float _e32 = uv[1u];
|
|
28
|
+
metal::float4 _e35 = _to.sample(_sampler, metal::float2(_e30, 1.0 - _e32), metal::level(0.0));
|
|
29
|
+
return _e35;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
bool inBounds(
|
|
33
|
+
thread metal::float2& p
|
|
34
|
+
) {
|
|
35
|
+
bool phi_83_ = {};
|
|
36
|
+
metal::float2 _e29 = p;
|
|
37
|
+
bool _e31 = metal::all(metal::float2(0.0, 0.0) < _e29);
|
|
38
|
+
phi_83_ = _e31;
|
|
39
|
+
if (_e31) {
|
|
40
|
+
metal::float2 _e32 = p;
|
|
41
|
+
phi_83_ = metal::all(_e32 < metal::float2(1.0, 1.0));
|
|
42
|
+
}
|
|
43
|
+
bool _e36 = phi_83_;
|
|
44
|
+
return _e36;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
metal::float2 project(
|
|
48
|
+
thread metal::float2& p_1
|
|
49
|
+
) {
|
|
50
|
+
metal::float2 _e29 = p_1;
|
|
51
|
+
return (_e29 * metal::float2(1.0, -1.2)) + metal::float2(0.0, -0.02);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
metal::float4 bgColor(
|
|
55
|
+
thread metal::float2& p_2,
|
|
56
|
+
thread metal::float2& pto,
|
|
57
|
+
metal::sampler _sampler,
|
|
58
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
59
|
+
constant Uniforms& uniforms
|
|
60
|
+
) {
|
|
61
|
+
metal::float4 c = {};
|
|
62
|
+
metal::float2 param = {};
|
|
63
|
+
metal::float2 param_1 = {};
|
|
64
|
+
metal::float2 param_2 = {};
|
|
65
|
+
c = metal::float4(0.0, 0.0, 0.0, 1.0);
|
|
66
|
+
metal::float2 _e34 = pto;
|
|
67
|
+
param = _e34;
|
|
68
|
+
metal::float2 _e35 = project(param);
|
|
69
|
+
pto = _e35;
|
|
70
|
+
metal::float2 _e36 = pto;
|
|
71
|
+
param_1 = _e36;
|
|
72
|
+
bool _e37 = inBounds(param_1);
|
|
73
|
+
if (_e37) {
|
|
74
|
+
metal::float2 _e38 = pto;
|
|
75
|
+
param_2 = _e38;
|
|
76
|
+
metal::float4 _e39 = getToColor(param_2, _sampler, _to);
|
|
77
|
+
float _e41 = uniforms.reflection;
|
|
78
|
+
float _e43 = pto[1u];
|
|
79
|
+
metal::float4 _e48 = c;
|
|
80
|
+
c = _e48 + metal::mix(metal::float4(0.0, 0.0, 0.0, 1.0), _e39, metal::float4(_e41 * metal::mix(1.0, 0.0, _e43)));
|
|
81
|
+
}
|
|
82
|
+
metal::float4 _e50 = c;
|
|
83
|
+
return _e50;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
metal::float4 getFromColor(
|
|
87
|
+
thread metal::float2& uv_1,
|
|
88
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
89
|
+
metal::sampler _sampler
|
|
90
|
+
) {
|
|
91
|
+
float _e30 = uv_1[0u];
|
|
92
|
+
float _e32 = uv_1[1u];
|
|
93
|
+
metal::float4 _e35 = _from.sample(_sampler, metal::float2(_e30, 1.0 - _e32), metal::level(0.0));
|
|
94
|
+
return _e35;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
metal::float4 transition(
|
|
98
|
+
thread metal::float2& p_3,
|
|
99
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
100
|
+
metal::sampler _sampler,
|
|
101
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
102
|
+
constant Uniforms& uniforms
|
|
103
|
+
) {
|
|
104
|
+
metal::float2 pfr = {};
|
|
105
|
+
metal::float2 pto_1 = {};
|
|
106
|
+
float middleSlit = {};
|
|
107
|
+
float d = {};
|
|
108
|
+
float size = {};
|
|
109
|
+
metal::float2 param_3 = {};
|
|
110
|
+
metal::float2 param_4 = {};
|
|
111
|
+
metal::float2 param_5 = {};
|
|
112
|
+
metal::float2 param_6 = {};
|
|
113
|
+
metal::float2 param_7 = {};
|
|
114
|
+
metal::float2 param_8 = {};
|
|
115
|
+
pfr = metal::float2(-1.0, -1.0);
|
|
116
|
+
pto_1 = metal::float2(-1.0, -1.0);
|
|
117
|
+
float _e41 = p_3[0u];
|
|
118
|
+
float _e46 = uniforms.progress;
|
|
119
|
+
middleSlit = (2.0 * metal::abs(_e41 - 0.5)) - _e46;
|
|
120
|
+
float _e48 = middleSlit;
|
|
121
|
+
if (_e48 > 0.0) {
|
|
122
|
+
metal::float2 _e50 = p_3;
|
|
123
|
+
float _e52 = p_3[0u];
|
|
124
|
+
float _e56 = uniforms.progress;
|
|
125
|
+
pfr = _e50 + (metal::float2(0.5 * _e56, 0.0) * ((_e52 > 0.5) ? -1.0 : 1.0));
|
|
126
|
+
float _e62 = uniforms.perspective;
|
|
127
|
+
float _e64 = uniforms.progress;
|
|
128
|
+
float _e66 = middleSlit;
|
|
129
|
+
d = 1.0 / (1.0 + ((_e62 * _e64) * (1.0 - _e66)));
|
|
130
|
+
float _e71 = d;
|
|
131
|
+
float _e74 = pfr[1u];
|
|
132
|
+
pfr[1u] = _e74 - (_e71 / 2.0);
|
|
133
|
+
float _e77 = d;
|
|
134
|
+
float _e79 = pfr[1u];
|
|
135
|
+
pfr[1u] = _e79 * _e77;
|
|
136
|
+
float _e82 = d;
|
|
137
|
+
float _e85 = pfr[1u];
|
|
138
|
+
pfr[1u] = _e85 + (_e82 / 2.0);
|
|
139
|
+
}
|
|
140
|
+
float _e89 = uniforms.depth;
|
|
141
|
+
float _e91 = uniforms.progress;
|
|
142
|
+
size = metal::mix(1.0, _e89, 1.0 - _e91);
|
|
143
|
+
metal::float2 _e94 = p_3;
|
|
144
|
+
float _e96 = size;
|
|
145
|
+
pto_1 = ((_e94 + metal::float2(-0.5, -0.5)) * metal::float2(_e96)) + metal::float2(0.5, 0.5);
|
|
146
|
+
metal::float2 _e100 = pfr;
|
|
147
|
+
param_3 = _e100;
|
|
148
|
+
bool _e101 = inBounds(param_3);
|
|
149
|
+
if (_e101) {
|
|
150
|
+
metal::float2 _e102 = pfr;
|
|
151
|
+
param_4 = _e102;
|
|
152
|
+
metal::float4 _e103 = getFromColor(param_4, _from, _sampler);
|
|
153
|
+
return _e103;
|
|
154
|
+
} else {
|
|
155
|
+
metal::float2 _e104 = pto_1;
|
|
156
|
+
param_5 = _e104;
|
|
157
|
+
bool _e105 = inBounds(param_5);
|
|
158
|
+
if (_e105) {
|
|
159
|
+
metal::float2 _e106 = pto_1;
|
|
160
|
+
param_6 = _e106;
|
|
161
|
+
metal::float4 _e107 = getToColor(param_6, _sampler, _to);
|
|
162
|
+
return _e107;
|
|
163
|
+
} else {
|
|
164
|
+
metal::float2 _e108 = p_3;
|
|
165
|
+
param_7 = _e108;
|
|
166
|
+
metal::float2 _e109 = pto_1;
|
|
167
|
+
param_8 = _e109;
|
|
168
|
+
metal::float4 _e110 = bgColor(param_7, param_8, _sampler, _to, uniforms);
|
|
169
|
+
return _e110;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void main_1(
|
|
175
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
176
|
+
metal::sampler _sampler,
|
|
177
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
178
|
+
constant Uniforms& uniforms,
|
|
179
|
+
thread metal::float4& _fragColor,
|
|
180
|
+
thread metal::float2& _uv_1
|
|
181
|
+
) {
|
|
182
|
+
metal::float2 param_9 = {};
|
|
183
|
+
metal::float2 _e29 = _uv_1;
|
|
184
|
+
param_9 = _e29;
|
|
185
|
+
metal::float4 _e30 = transition(param_9, _from, _sampler, _to, uniforms);
|
|
186
|
+
_fragColor = _e30;
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
struct main_Input {
|
|
191
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
192
|
+
};
|
|
193
|
+
struct main_Output {
|
|
194
|
+
metal::float4 member [[color(0)]];
|
|
195
|
+
};
|
|
196
|
+
fragment main_Output main_(
|
|
197
|
+
main_Input varyings [[stage_in]]
|
|
198
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
199
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
200
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
201
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
202
|
+
) {
|
|
203
|
+
metal::float4 _fragColor = {};
|
|
204
|
+
metal::float2 _uv_1 = {};
|
|
205
|
+
const auto _uv = varyings._uv;
|
|
206
|
+
_uv_1 = _uv;
|
|
207
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
208
|
+
metal::float4 _e3 = _fragColor;
|
|
209
|
+
return main_Output { _e3 };
|
|
210
|
+
}
|
package/msl/fade.metal
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// fade — MSL, 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
|
+
// 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
|
+
metal::float2 _e14 = uv_2;
|
|
50
|
+
param = _e14;
|
|
51
|
+
metal::float4 _e15 = getFromColor(param, _from, _sampler);
|
|
52
|
+
metal::float2 _e16 = uv_2;
|
|
53
|
+
param_1 = _e16;
|
|
54
|
+
metal::float4 _e17 = getToColor(param_1, _sampler, _to);
|
|
55
|
+
float _e19 = uniforms.progress;
|
|
56
|
+
return metal::mix(_e15, _e17, metal::float4(_e19));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
void main_1(
|
|
60
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
61
|
+
metal::sampler _sampler,
|
|
62
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
63
|
+
constant Uniforms& uniforms,
|
|
64
|
+
thread metal::float4& _fragColor,
|
|
65
|
+
thread metal::float2& _uv_1
|
|
66
|
+
) {
|
|
67
|
+
metal::float2 param_2 = {};
|
|
68
|
+
metal::float2 _e12 = _uv_1;
|
|
69
|
+
param_2 = _e12;
|
|
70
|
+
metal::float4 _e13 = transition(param_2, _from, _sampler, _to, uniforms);
|
|
71
|
+
_fragColor = _e13;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
struct main_Input {
|
|
76
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
77
|
+
};
|
|
78
|
+
struct main_Output {
|
|
79
|
+
metal::float4 member [[color(0)]];
|
|
80
|
+
};
|
|
81
|
+
fragment main_Output main_(
|
|
82
|
+
main_Input varyings [[stage_in]]
|
|
83
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
84
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
85
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
86
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
87
|
+
) {
|
|
88
|
+
metal::float4 _fragColor = {};
|
|
89
|
+
metal::float2 _uv_1 = {};
|
|
90
|
+
const auto _uv = varyings._uv;
|
|
91
|
+
_uv_1 = _uv;
|
|
92
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
93
|
+
metal::float4 _e3 = _fragColor;
|
|
94
|
+
return main_Output { _e3 };
|
|
95
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// fadecolor — MSL, 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
|
+
// 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
|
+
char _pad2[8];
|
|
17
|
+
metal::packed_float3 color;
|
|
18
|
+
float colorPhase;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
metal::float4 getToColor(
|
|
22
|
+
thread metal::float2& uv,
|
|
23
|
+
metal::sampler _sampler,
|
|
24
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
25
|
+
) {
|
|
26
|
+
float _e15 = uv[0u];
|
|
27
|
+
float _e17 = uv[1u];
|
|
28
|
+
metal::float4 _e20 = _to.sample(_sampler, metal::float2(_e15, 1.0 - _e17), metal::level(0.0));
|
|
29
|
+
return _e20;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
metal::float4 getFromColor(
|
|
33
|
+
thread metal::float2& uv_1,
|
|
34
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
35
|
+
metal::sampler _sampler
|
|
36
|
+
) {
|
|
37
|
+
float _e15 = uv_1[0u];
|
|
38
|
+
float _e17 = uv_1[1u];
|
|
39
|
+
metal::float4 _e20 = _from.sample(_sampler, metal::float2(_e15, 1.0 - _e17), metal::level(0.0));
|
|
40
|
+
return _e20;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
metal::float4 transition(
|
|
44
|
+
thread metal::float2& uv_2,
|
|
45
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
46
|
+
metal::sampler _sampler,
|
|
47
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
48
|
+
constant Uniforms& uniforms
|
|
49
|
+
) {
|
|
50
|
+
metal::float2 param = {};
|
|
51
|
+
metal::float2 param_1 = {};
|
|
52
|
+
metal::float3 _e17 = uniforms.color;
|
|
53
|
+
metal::float2 _e22 = uv_2;
|
|
54
|
+
param = _e22;
|
|
55
|
+
metal::float4 _e23 = getFromColor(param, _from, _sampler);
|
|
56
|
+
float _e25 = uniforms.colorPhase;
|
|
57
|
+
float _e28 = uniforms.progress;
|
|
58
|
+
metal::float3 _e33 = uniforms.color;
|
|
59
|
+
metal::float2 _e38 = uv_2;
|
|
60
|
+
param_1 = _e38;
|
|
61
|
+
metal::float4 _e39 = getToColor(param_1, _sampler, _to);
|
|
62
|
+
float _e41 = uniforms.colorPhase;
|
|
63
|
+
float _e43 = uniforms.progress;
|
|
64
|
+
float _e48 = uniforms.progress;
|
|
65
|
+
return metal::mix(metal::mix(metal::float4(_e17.x, _e17.y, _e17.z, 1.0), _e23, metal::float4(metal::smoothstep(1.0 - _e25, 0.0, _e28))), metal::mix(metal::float4(_e33.x, _e33.y, _e33.z, 1.0), _e39, metal::float4(metal::smoothstep(_e41, 1.0, _e43))), metal::float4(_e48));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void main_1(
|
|
69
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
70
|
+
metal::sampler _sampler,
|
|
71
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
72
|
+
constant Uniforms& uniforms,
|
|
73
|
+
thread metal::float4& _fragColor,
|
|
74
|
+
thread metal::float2& _uv_1
|
|
75
|
+
) {
|
|
76
|
+
metal::float2 param_2 = {};
|
|
77
|
+
metal::float2 _e14 = _uv_1;
|
|
78
|
+
param_2 = _e14;
|
|
79
|
+
metal::float4 _e15 = transition(param_2, _from, _sampler, _to, uniforms);
|
|
80
|
+
_fragColor = _e15;
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
struct main_Input {
|
|
85
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
86
|
+
};
|
|
87
|
+
struct main_Output {
|
|
88
|
+
metal::float4 member [[color(0)]];
|
|
89
|
+
};
|
|
90
|
+
fragment main_Output main_(
|
|
91
|
+
main_Input varyings [[stage_in]]
|
|
92
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
93
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
94
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
95
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
96
|
+
) {
|
|
97
|
+
metal::float4 _fragColor = {};
|
|
98
|
+
metal::float2 _uv_1 = {};
|
|
99
|
+
const auto _uv = varyings._uv;
|
|
100
|
+
_uv_1 = _uv;
|
|
101
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
102
|
+
metal::float4 _e3 = _fragColor;
|
|
103
|
+
return main_Output { _e3 };
|
|
104
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// fadegrayscale — MSL, 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
|
+
// 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
|
+
float intensity;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
metal::float3 grayscale(
|
|
20
|
+
thread metal::float3& color
|
|
21
|
+
) {
|
|
22
|
+
float _e18 = color[0u];
|
|
23
|
+
float _e21 = color[1u];
|
|
24
|
+
float _e25 = color[2u];
|
|
25
|
+
return metal::float3(((0.2126 * _e18) + (0.7152 * _e21)) + (0.0722 * _e25));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
metal::float4 getToColor(
|
|
29
|
+
thread metal::float2& uv,
|
|
30
|
+
metal::sampler _sampler,
|
|
31
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
32
|
+
) {
|
|
33
|
+
float _e18 = uv[0u];
|
|
34
|
+
float _e20 = uv[1u];
|
|
35
|
+
metal::float4 _e23 = _to.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
|
|
36
|
+
return _e23;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
metal::float4 getFromColor(
|
|
40
|
+
thread metal::float2& uv_1,
|
|
41
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
42
|
+
metal::sampler _sampler
|
|
43
|
+
) {
|
|
44
|
+
float _e18 = uv_1[0u];
|
|
45
|
+
float _e20 = uv_1[1u];
|
|
46
|
+
metal::float4 _e23 = _from.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
|
|
47
|
+
return _e23;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
metal::float4 transition(
|
|
51
|
+
thread metal::float2& uv_2,
|
|
52
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
53
|
+
metal::sampler _sampler,
|
|
54
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
55
|
+
constant Uniforms& uniforms
|
|
56
|
+
) {
|
|
57
|
+
metal::float4 fc = {};
|
|
58
|
+
metal::float2 param = {};
|
|
59
|
+
metal::float4 tc = {};
|
|
60
|
+
metal::float2 param_1 = {};
|
|
61
|
+
metal::float3 param_2 = {};
|
|
62
|
+
metal::float3 param_3 = {};
|
|
63
|
+
metal::float2 _e23 = uv_2;
|
|
64
|
+
param = _e23;
|
|
65
|
+
metal::float4 _e24 = getFromColor(param, _from, _sampler);
|
|
66
|
+
fc = _e24;
|
|
67
|
+
metal::float2 _e25 = uv_2;
|
|
68
|
+
param_1 = _e25;
|
|
69
|
+
metal::float4 _e26 = getToColor(param_1, _sampler, _to);
|
|
70
|
+
tc = _e26;
|
|
71
|
+
metal::float4 _e27 = fc;
|
|
72
|
+
param_2 = _e27.xyz;
|
|
73
|
+
metal::float3 _e29 = grayscale(param_2);
|
|
74
|
+
metal::float4 _e34 = fc;
|
|
75
|
+
float _e36 = uniforms.intensity;
|
|
76
|
+
float _e39 = uniforms.progress;
|
|
77
|
+
metal::float4 _e43 = tc;
|
|
78
|
+
param_3 = _e43.xyz;
|
|
79
|
+
metal::float3 _e45 = grayscale(param_3);
|
|
80
|
+
metal::float4 _e50 = tc;
|
|
81
|
+
float _e52 = uniforms.intensity;
|
|
82
|
+
float _e54 = uniforms.progress;
|
|
83
|
+
float _e59 = uniforms.progress;
|
|
84
|
+
return metal::mix(metal::mix(metal::float4(_e29.x, _e29.y, _e29.z, 1.0), _e34, metal::float4(metal::smoothstep(1.0 - _e36, 0.0, _e39))), metal::mix(metal::float4(_e45.x, _e45.y, _e45.z, 1.0), _e50, metal::float4(metal::smoothstep(_e52, 1.0, _e54))), metal::float4(_e59));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
void main_1(
|
|
88
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
89
|
+
metal::sampler _sampler,
|
|
90
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
91
|
+
constant Uniforms& uniforms,
|
|
92
|
+
thread metal::float4& _fragColor,
|
|
93
|
+
thread metal::float2& _uv_1
|
|
94
|
+
) {
|
|
95
|
+
metal::float2 param_4 = {};
|
|
96
|
+
metal::float2 _e17 = _uv_1;
|
|
97
|
+
param_4 = _e17;
|
|
98
|
+
metal::float4 _e18 = transition(param_4, _from, _sampler, _to, uniforms);
|
|
99
|
+
_fragColor = _e18;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
struct main_Input {
|
|
104
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
105
|
+
};
|
|
106
|
+
struct main_Output {
|
|
107
|
+
metal::float4 member [[color(0)]];
|
|
108
|
+
};
|
|
109
|
+
fragment main_Output main_(
|
|
110
|
+
main_Input varyings [[stage_in]]
|
|
111
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
112
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
113
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
114
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
115
|
+
) {
|
|
116
|
+
metal::float4 _fragColor = {};
|
|
117
|
+
metal::float2 _uv_1 = {};
|
|
118
|
+
const auto _uv = varyings._uv;
|
|
119
|
+
_uv_1 = _uv;
|
|
120
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
121
|
+
metal::float4 _e3 = _fragColor;
|
|
122
|
+
return main_Output { _e3 };
|
|
123
|
+
}
|
package/msl/flyeye.metal
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// flyeye — MSL, 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
|
+
// 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
|
+
float size;
|
|
17
|
+
float zoom;
|
|
18
|
+
float colorSeparation;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
metal::float4 getFromColor(
|
|
22
|
+
thread metal::float2& uv,
|
|
23
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
24
|
+
metal::sampler _sampler
|
|
25
|
+
) {
|
|
26
|
+
float _e17 = uv[0u];
|
|
27
|
+
float _e19 = uv[1u];
|
|
28
|
+
metal::float4 _e22 = _from.sample(_sampler, metal::float2(_e17, 1.0 - _e19), metal::level(0.0));
|
|
29
|
+
return _e22;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
metal::float4 getToColor(
|
|
33
|
+
thread metal::float2& uv_1,
|
|
34
|
+
metal::sampler _sampler,
|
|
35
|
+
metal::texture2d<float, metal::access::sample> _to
|
|
36
|
+
) {
|
|
37
|
+
float _e17 = uv_1[0u];
|
|
38
|
+
float _e19 = uv_1[1u];
|
|
39
|
+
metal::float4 _e22 = _to.sample(_sampler, metal::float2(_e17, 1.0 - _e19), metal::level(0.0));
|
|
40
|
+
return _e22;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
metal::float4 transition(
|
|
44
|
+
thread metal::float2& p,
|
|
45
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
46
|
+
metal::sampler _sampler,
|
|
47
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
48
|
+
constant Uniforms& uniforms
|
|
49
|
+
) {
|
|
50
|
+
float inv = {};
|
|
51
|
+
metal::float2 disp = {};
|
|
52
|
+
metal::float4 texTo = {};
|
|
53
|
+
metal::float2 param = {};
|
|
54
|
+
metal::float4 texFrom = {};
|
|
55
|
+
metal::float2 param_1 = {};
|
|
56
|
+
metal::float2 param_2 = {};
|
|
57
|
+
metal::float2 param_3 = {};
|
|
58
|
+
float _e25 = uniforms.progress;
|
|
59
|
+
inv = 1.0 - _e25;
|
|
60
|
+
float _e28 = uniforms.size;
|
|
61
|
+
float _e30 = uniforms.zoom;
|
|
62
|
+
float _e32 = p[0u];
|
|
63
|
+
float _e36 = uniforms.zoom;
|
|
64
|
+
float _e38 = p[1u];
|
|
65
|
+
disp = metal::float2(metal::cos(_e30 * _e32), metal::sin(_e36 * _e38)) * _e28;
|
|
66
|
+
metal::float2 _e43 = p;
|
|
67
|
+
float _e44 = inv;
|
|
68
|
+
metal::float2 _e45 = disp;
|
|
69
|
+
param = _e43 + (_e45 * _e44);
|
|
70
|
+
metal::float4 _e48 = getToColor(param, _sampler, _to);
|
|
71
|
+
texTo = _e48;
|
|
72
|
+
metal::float2 _e49 = p;
|
|
73
|
+
float _e51 = uniforms.progress;
|
|
74
|
+
metal::float2 _e52 = disp;
|
|
75
|
+
float _e55 = uniforms.colorSeparation;
|
|
76
|
+
param_1 = _e49 + ((_e52 * _e51) * (1.0 - _e55));
|
|
77
|
+
metal::float4 _e59 = getFromColor(param_1, _from, _sampler);
|
|
78
|
+
metal::float2 _e61 = p;
|
|
79
|
+
float _e63 = uniforms.progress;
|
|
80
|
+
metal::float2 _e64 = disp;
|
|
81
|
+
param_2 = _e61 + (_e64 * _e63);
|
|
82
|
+
metal::float4 _e67 = getFromColor(param_2, _from, _sampler);
|
|
83
|
+
metal::float2 _e69 = p;
|
|
84
|
+
float _e71 = uniforms.progress;
|
|
85
|
+
metal::float2 _e72 = disp;
|
|
86
|
+
float _e75 = uniforms.colorSeparation;
|
|
87
|
+
param_3 = _e69 + ((_e72 * _e71) * (1.0 + _e75));
|
|
88
|
+
metal::float4 _e79 = getFromColor(param_3, _from, _sampler);
|
|
89
|
+
texFrom = metal::float4(_e59.x, _e67.y, _e79.z, 1.0);
|
|
90
|
+
metal::float4 _e82 = texTo;
|
|
91
|
+
float _e84 = uniforms.progress;
|
|
92
|
+
metal::float4 _e86 = texFrom;
|
|
93
|
+
float _e87 = inv;
|
|
94
|
+
return (_e82 * _e84) + (_e86 * _e87);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
void main_1(
|
|
98
|
+
metal::texture2d<float, metal::access::sample> _from,
|
|
99
|
+
metal::sampler _sampler,
|
|
100
|
+
metal::texture2d<float, metal::access::sample> _to,
|
|
101
|
+
constant Uniforms& uniforms,
|
|
102
|
+
thread metal::float4& _fragColor,
|
|
103
|
+
thread metal::float2& _uv_1
|
|
104
|
+
) {
|
|
105
|
+
metal::float2 param_4 = {};
|
|
106
|
+
metal::float2 _e16 = _uv_1;
|
|
107
|
+
param_4 = _e16;
|
|
108
|
+
metal::float4 _e17 = transition(param_4, _from, _sampler, _to, uniforms);
|
|
109
|
+
_fragColor = _e17;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
struct main_Input {
|
|
114
|
+
metal::float2 _uv [[user(loc0), center_perspective]];
|
|
115
|
+
};
|
|
116
|
+
struct main_Output {
|
|
117
|
+
metal::float4 member [[color(0)]];
|
|
118
|
+
};
|
|
119
|
+
fragment main_Output main_(
|
|
120
|
+
main_Input varyings [[stage_in]]
|
|
121
|
+
, metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
|
|
122
|
+
, metal::sampler _sampler [[sampler(0)]]
|
|
123
|
+
, metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
|
|
124
|
+
, constant Uniforms& uniforms [[buffer(0)]]
|
|
125
|
+
) {
|
|
126
|
+
metal::float4 _fragColor = {};
|
|
127
|
+
metal::float2 _uv_1 = {};
|
|
128
|
+
const auto _uv = varyings._uv;
|
|
129
|
+
_uv_1 = _uv;
|
|
130
|
+
main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
|
|
131
|
+
metal::float4 _e3 = _fragColor;
|
|
132
|
+
return main_Output { _e3 };
|
|
133
|
+
}
|