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.
Files changed (389) hide show
  1. package/README.md +78 -0
  2. package/compatibility.json +2070 -0
  3. package/glsl3/AdvancedMosaic.glsl +21 -0
  4. package/glsl3/BlockDissolve.glsl +16 -0
  5. package/glsl3/BookFlip.glsl +37 -0
  6. package/glsl3/Bounce.glsl +35 -0
  7. package/glsl3/BowTieHorizontal.glsl +123 -0
  8. package/glsl3/BowTieVertical.glsl +117 -0
  9. package/glsl3/BowTieWithParameter.glsl +74 -0
  10. package/glsl3/Box.glsl +33 -0
  11. package/glsl3/ButterflyWaveScrawler.glsl +33 -0
  12. package/glsl3/CircleCrop.glsl +20 -0
  13. package/glsl3/ColourDistance.glsl +19 -0
  14. package/glsl3/CrazyParametricFun.glsl +20 -0
  15. package/glsl3/CrossZoom.glsl +68 -0
  16. package/glsl3/DefocusBlur.glsl +47 -0
  17. package/glsl3/Directional.glsl +18 -0
  18. package/glsl3/DirectionalScaled.glsl +35 -0
  19. package/glsl3/DoomScreenTransition.glsl +62 -0
  20. package/glsl3/Dreamy.glsl +14 -0
  21. package/glsl3/DreamyZoom.glsl +43 -0
  22. package/glsl3/Drop_Zone_Flicker.glsl +159 -0
  23. package/glsl3/EdgeTransition.glsl +50 -0
  24. package/glsl3/FilmBurn.glsl +63 -0
  25. package/glsl3/Fold.glsl +12 -0
  26. package/glsl3/GlitchDisplace.glsl +78 -0
  27. package/glsl3/GlitchMemories.glsl +17 -0
  28. package/glsl3/GridFlip.glsl +77 -0
  29. package/glsl3/HSVfade.glsl +29 -0
  30. package/glsl3/HorizontalClose.glsl +16 -0
  31. package/glsl3/HorizontalOpen.glsl +18 -0
  32. package/glsl3/InvertedPageCurl.glsl +228 -0
  33. package/glsl3/LeftRight.glsl +28 -0
  34. package/glsl3/LinearBlur.glsl +30 -0
  35. package/glsl3/Mosaic.glsl +45 -0
  36. package/glsl3/Overexposure.glsl +25 -0
  37. package/glsl3/PolkaDotsCurtain.glsl +14 -0
  38. package/glsl3/PuzzleRight.glsl +57 -0
  39. package/glsl3/Radial.glsl +19 -0
  40. package/glsl3/Rectangle.glsl +29 -0
  41. package/glsl3/RectangleCrop.glsl +30 -0
  42. package/glsl3/Revolve_Left.glsl +98 -0
  43. package/glsl3/Rolls.glsl +42 -0
  44. package/glsl3/RotateScaleVanish.glsl +42 -0
  45. package/glsl3/SimpleFlip.glsl +14 -0
  46. package/glsl3/SimpleZoom.glsl +20 -0
  47. package/glsl3/SimpleZoomOut.glsl +23 -0
  48. package/glsl3/Slides.glsl +41 -0
  49. package/glsl3/StarWipe.glsl +51 -0
  50. package/glsl3/StaticFade.glsl +47 -0
  51. package/glsl3/StereoViewer.glsl +214 -0
  52. package/glsl3/StripDatamoshGlitch.glsl +187 -0
  53. package/glsl3/Swirl.glsl +34 -0
  54. package/glsl3/TVStatic.glsl +29 -0
  55. package/glsl3/TilesWave.glsl +63 -0
  56. package/glsl3/TopBottom.glsl +27 -0
  57. package/glsl3/VerticalClose.glsl +16 -0
  58. package/glsl3/VerticalOpen.glsl +17 -0
  59. package/glsl3/WaterDrop.glsl +21 -0
  60. package/glsl3/ZoomInCircles.glsl +40 -0
  61. package/glsl3/ZoomLeftWipe.glsl +36 -0
  62. package/glsl3/ZoomRigthWipe.glsl +36 -0
  63. package/glsl3/angular.glsl +25 -0
  64. package/glsl3/burn.glsl +14 -0
  65. package/glsl3/burn0.glsl +55 -0
  66. package/glsl3/cannabisleaf.glsl +18 -0
  67. package/glsl3/chessboard.glsl +28 -0
  68. package/glsl3/circle.glsl +24 -0
  69. package/glsl3/circleopen.glsl +18 -0
  70. package/glsl3/colorphase.glsl +19 -0
  71. package/glsl3/coord-from-in.glsl +18 -0
  72. package/glsl3/crosshatch.glsl +20 -0
  73. package/glsl3/crosswarp.glsl +10 -0
  74. package/glsl3/cube.glsl +71 -0
  75. package/glsl3/directional-easing.glsl +19 -0
  76. package/glsl3/directionalwarp.glsl +20 -0
  77. package/glsl3/directionalwipe.glsl +22 -0
  78. package/glsl3/displacement.glsl +26 -0
  79. package/glsl3/dissolve.glsl +54 -0
  80. package/glsl3/doorway.glsl +55 -0
  81. package/glsl3/fade.glsl +13 -0
  82. package/glsl3/fadecolor.glsl +15 -0
  83. package/glsl3/fadegrayscale.glsl +21 -0
  84. package/glsl3/flyeye.glsl +20 -0
  85. package/glsl3/fragment.glsl +54 -0
  86. package/glsl3/heart.glsl +19 -0
  87. package/glsl3/hexagonalize.glsl +78 -0
  88. package/glsl3/kaleidoscope.glsl +25 -0
  89. package/glsl3/luma.glsl +15 -0
  90. package/glsl3/luminance_melt.glsl +131 -0
  91. package/glsl3/morph.glsl +20 -0
  92. package/glsl3/mosaic_transition.glsl +20 -0
  93. package/glsl3/multiply_blend.glsl +19 -0
  94. package/glsl3/old_tv_lost_signal.glsl +51 -0
  95. package/glsl3/parametric_glitch.glsl +29 -0
  96. package/glsl3/perlin.glsl +66 -0
  97. package/glsl3/pinwheel.glsl +20 -0
  98. package/glsl3/pixelize.glsl +21 -0
  99. package/glsl3/polar_function.glsl +24 -0
  100. package/glsl3/powerKaleido.glsl +57 -0
  101. package/glsl3/randomNoisex.glsl +15 -0
  102. package/glsl3/randomsquares.glsl +20 -0
  103. package/glsl3/ripple.glsl +20 -0
  104. package/glsl3/rotateTransition.glsl +22 -0
  105. package/glsl3/rotate_scale_fade.glsl +39 -0
  106. package/glsl3/scale-in.glsl +18 -0
  107. package/glsl3/splitSlideInHorizontal.glsl +26 -0
  108. package/glsl3/splitSlideInOutHorizontal.glsl +23 -0
  109. package/glsl3/splitSlideInOutVertical.glsl +23 -0
  110. package/glsl3/splitSlideInVertical.glsl +24 -0
  111. package/glsl3/splitSlideOutHorizontal.glsl +22 -0
  112. package/glsl3/splitSlideOutVertical.glsl +22 -0
  113. package/glsl3/squareswire.glsl +26 -0
  114. package/glsl3/squeeze.glsl +23 -0
  115. package/glsl3/static_wipe.glsl +39 -0
  116. package/glsl3/swap.glsl +64 -0
  117. package/glsl3/tangentMotionBlur.glsl +139 -0
  118. package/glsl3/undulatingBurnOut.glsl +56 -0
  119. package/glsl3/wind.glsl +25 -0
  120. package/glsl3/windowblinds.glsl +18 -0
  121. package/glsl3/windowslice.glsl +16 -0
  122. package/glsl3/wipeDown.glsl +12 -0
  123. package/glsl3/wipeLeft.glsl +12 -0
  124. package/glsl3/wipeRight.glsl +12 -0
  125. package/glsl3/wipeUp.glsl +12 -0
  126. package/glsl3/x_axis_translation.glsl +21 -0
  127. package/glsl3/zoomInOut.glsl +20 -0
  128. package/index.d.ts +61 -0
  129. package/layouts.json +2956 -0
  130. package/llms-full.txt +1707 -0
  131. package/llms.txt +153 -0
  132. package/msl/AdvancedMosaic.metal +136 -0
  133. package/msl/BlockDissolve.metal +108 -0
  134. package/msl/BookFlip.metal +191 -0
  135. package/msl/Bounce.metal +128 -0
  136. package/msl/BowTieHorizontal.metal +375 -0
  137. package/msl/BowTieVertical.metal +375 -0
  138. package/msl/BowTieWithParameter.metal +361 -0
  139. package/msl/Box.metal +204 -0
  140. package/msl/ButterflyWaveScrawler.metal +190 -0
  141. package/msl/CircleCrop.metal +117 -0
  142. package/msl/ColourDistance.metal +110 -0
  143. package/msl/CrazyParametricFun.metal +139 -0
  144. package/msl/CrossZoom.metal +274 -0
  145. package/msl/DefocusBlur.metal +297 -0
  146. package/msl/Directional.metal +107 -0
  147. package/msl/DirectionalScaled.metal +147 -0
  148. package/msl/DoomScreenTransition.metal +212 -0
  149. package/msl/Dreamy.metal +133 -0
  150. package/msl/DreamyZoom.metal +182 -0
  151. package/msl/Drop_Zone_Flicker.metal +561 -0
  152. package/msl/EdgeTransition.metal +277 -0
  153. package/msl/FilmBurn.metal +425 -0
  154. package/msl/Fold.metal +110 -0
  155. package/msl/GlitchDisplace.metal +374 -0
  156. package/msl/GlitchMemories.metal +146 -0
  157. package/msl/GridFlip.metal +285 -0
  158. package/msl/HSVfade.metal +161 -0
  159. package/msl/HorizontalClose.metal +100 -0
  160. package/msl/HorizontalOpen.metal +103 -0
  161. package/msl/InvertedPageCurl.metal +762 -0
  162. package/msl/LeftRight.metal +138 -0
  163. package/msl/LinearBlur.metal +169 -0
  164. package/msl/Mosaic.metal +212 -0
  165. package/msl/Overexposure.metal +130 -0
  166. package/msl/PolkaDotsCurtain.metal +112 -0
  167. package/msl/PuzzleRight.metal +262 -0
  168. package/msl/Radial.metal +102 -0
  169. package/msl/Rectangle.metal +129 -0
  170. package/msl/RectangleCrop.metal +127 -0
  171. package/msl/Revolve_Left.metal +363 -0
  172. package/msl/Rolls.metal +209 -0
  173. package/msl/RotateScaleVanish.metal +227 -0
  174. package/msl/SimpleFlip.metal +110 -0
  175. package/msl/SimpleZoom.metal +116 -0
  176. package/msl/SimpleZoomOut.metal +127 -0
  177. package/msl/Slides.metal +244 -0
  178. package/msl/StarWipe.metal +204 -0
  179. package/msl/StaticFade.metal +193 -0
  180. package/msl/StereoViewer.metal +707 -0
  181. package/msl/StripDatamoshGlitch.metal +828 -0
  182. package/msl/Swirl.metal +152 -0
  183. package/msl/TVStatic.metal +136 -0
  184. package/msl/TilesWave.metal +290 -0
  185. package/msl/TopBottom.metal +138 -0
  186. package/msl/VerticalClose.metal +100 -0
  187. package/msl/VerticalOpen.metal +103 -0
  188. package/msl/WaterDrop.metal +126 -0
  189. package/msl/ZoomInCircles.metal +169 -0
  190. package/msl/ZoomLeftWipe.metal +152 -0
  191. package/msl/ZoomRigthWipe.metal +152 -0
  192. package/msl/angular.metal +111 -0
  193. package/msl/burn.metal +103 -0
  194. package/msl/burn0.metal +236 -0
  195. package/msl/cannabisleaf.metal +120 -0
  196. package/msl/chessboard.metal +144 -0
  197. package/msl/circle.metal +115 -0
  198. package/msl/circleopen.metal +124 -0
  199. package/msl/colorphase.metal +106 -0
  200. package/msl/coord-from-in.metal +111 -0
  201. package/msl/crosshatch.metal +126 -0
  202. package/msl/crosswarp.metal +103 -0
  203. package/msl/cube.metal +259 -0
  204. package/msl/directional-easing.metal +111 -0
  205. package/msl/directionalwarp.metal +121 -0
  206. package/msl/directionalwipe.metal +120 -0
  207. package/msl/displacement.metal +129 -0
  208. package/msl/dissolve.metal +146 -0
  209. package/msl/doorway.metal +210 -0
  210. package/msl/fade.metal +95 -0
  211. package/msl/fadecolor.metal +104 -0
  212. package/msl/fadegrayscale.metal +123 -0
  213. package/msl/flyeye.metal +133 -0
  214. package/msl/fragment.metal +276 -0
  215. package/msl/heart.metal +134 -0
  216. package/msl/hexagonalize.metal +274 -0
  217. package/msl/kaleidoscope.metal +157 -0
  218. package/msl/luma.metal +113 -0
  219. package/msl/luminance_melt.metal +337 -0
  220. package/msl/morph.metal +131 -0
  221. package/msl/mosaic_transition.metal +137 -0
  222. package/msl/multiply_blend.metal +127 -0
  223. package/msl/old_tv_lost_signal.metal +172 -0
  224. package/msl/parametric_glitch.metal +152 -0
  225. package/msl/perlin.metal +206 -0
  226. package/msl/pinwheel.metal +112 -0
  227. package/msl/pixelize.metal +134 -0
  228. package/msl/polar_function.metal +116 -0
  229. package/msl/powerKaleido.metal +304 -0
  230. package/msl/randomNoisex.metal +115 -0
  231. package/msl/randomsquares.metal +118 -0
  232. package/msl/ripple.metal +113 -0
  233. package/msl/rotateTransition.metal +116 -0
  234. package/msl/rotate_scale_fade.metal +167 -0
  235. package/msl/scale-in.metal +111 -0
  236. package/msl/splitSlideInHorizontal.metal +147 -0
  237. package/msl/splitSlideInOutHorizontal.metal +138 -0
  238. package/msl/splitSlideInOutVertical.metal +138 -0
  239. package/msl/splitSlideInVertical.metal +144 -0
  240. package/msl/splitSlideOutHorizontal.metal +131 -0
  241. package/msl/splitSlideOutVertical.metal +131 -0
  242. package/msl/squareswire.metal +144 -0
  243. package/msl/squeeze.metal +133 -0
  244. package/msl/static_wipe.metal +147 -0
  245. package/msl/swap.metal +256 -0
  246. package/msl/tangentMotionBlur.metal +583 -0
  247. package/msl/undulatingBurnOut.metal +217 -0
  248. package/msl/wind.metal +131 -0
  249. package/msl/windowblinds.metal +107 -0
  250. package/msl/windowslice.metal +108 -0
  251. package/msl/wipeDown.metal +105 -0
  252. package/msl/wipeLeft.metal +105 -0
  253. package/msl/wipeRight.metal +105 -0
  254. package/msl/wipeUp.metal +105 -0
  255. package/msl/x_axis_translation.metal +110 -0
  256. package/msl/zoomInOut.metal +125 -0
  257. package/package.json +1 -1
  258. package/skills/gl-transitions/SKILL.md +46 -0
  259. package/skills/gl-transitions/references/catalog.md +224 -0
  260. package/skills/gl-transitions/references/skia.md +118 -0
  261. package/skills/gl-transitions/references/video.md +71 -0
  262. package/skills/gl-transitions/references/webgl.md +122 -0
  263. package/sksl/index.d.ts +4 -0
  264. package/sksl/index.js +1 -0
  265. package/wgsl/AdvancedMosaic.wgsl +108 -0
  266. package/wgsl/BlockDissolve.wgsl +78 -0
  267. package/wgsl/BookFlip.wgsl +157 -0
  268. package/wgsl/Bounce.wgsl +98 -0
  269. package/wgsl/BowTieHorizontal.wgsl +331 -0
  270. package/wgsl/BowTieVertical.wgsl +331 -0
  271. package/wgsl/BowTieWithParameter.wgsl +313 -0
  272. package/wgsl/Box.wgsl +176 -0
  273. package/wgsl/ButterflyWaveScrawler.wgsl +158 -0
  274. package/wgsl/CircleCrop.wgsl +88 -0
  275. package/wgsl/ColourDistance.wgsl +82 -0
  276. package/wgsl/CrazyParametricFun.wgsl +111 -0
  277. package/wgsl/CrossZoom.wgsl +219 -0
  278. package/wgsl/DefocusBlur.wgsl +269 -0
  279. package/wgsl/Directional.wgsl +79 -0
  280. package/wgsl/DirectionalScaled.wgsl +117 -0
  281. package/wgsl/DoomScreenTransition.wgsl +171 -0
  282. package/wgsl/Dreamy.wgsl +102 -0
  283. package/wgsl/DreamyZoom.wgsl +154 -0
  284. package/wgsl/Drop_Zone_Flicker.wgsl +513 -0
  285. package/wgsl/EdgeTransition.wgsl +216 -0
  286. package/wgsl/FilmBurn.wgsl +361 -0
  287. package/wgsl/Fold.wgsl +82 -0
  288. package/wgsl/GlitchDisplace.wgsl +327 -0
  289. package/wgsl/GlitchMemories.wgsl +118 -0
  290. package/wgsl/GridFlip.wgsl +250 -0
  291. package/wgsl/HSVfade.wgsl +131 -0
  292. package/wgsl/HorizontalClose.wgsl +72 -0
  293. package/wgsl/HorizontalOpen.wgsl +75 -0
  294. package/wgsl/InvertedPageCurl.wgsl +690 -0
  295. package/wgsl/LeftRight.wgsl +109 -0
  296. package/wgsl/LinearBlur.wgsl +131 -0
  297. package/wgsl/Mosaic.wgsl +174 -0
  298. package/wgsl/Overexposure.wgsl +102 -0
  299. package/wgsl/PolkaDotsCurtain.wgsl +83 -0
  300. package/wgsl/PuzzleRight.wgsl +230 -0
  301. package/wgsl/Radial.wgsl +74 -0
  302. package/wgsl/Rectangle.wgsl +100 -0
  303. package/wgsl/RectangleCrop.wgsl +98 -0
  304. package/wgsl/Revolve_Left.wgsl +314 -0
  305. package/wgsl/Rolls.wgsl +181 -0
  306. package/wgsl/RotateScaleVanish.wgsl +199 -0
  307. package/wgsl/SimpleFlip.wgsl +82 -0
  308. package/wgsl/SimpleZoom.wgsl +85 -0
  309. package/wgsl/SimpleZoomOut.wgsl +96 -0
  310. package/wgsl/Slides.wgsl +216 -0
  311. package/wgsl/StarWipe.wgsl +169 -0
  312. package/wgsl/StaticFade.wgsl +159 -0
  313. package/wgsl/StereoViewer.wgsl +625 -0
  314. package/wgsl/StripDatamoshGlitch.wgsl +755 -0
  315. package/wgsl/Swirl.wgsl +124 -0
  316. package/wgsl/TVStatic.wgsl +106 -0
  317. package/wgsl/TilesWave.wgsl +262 -0
  318. package/wgsl/TopBottom.wgsl +109 -0
  319. package/wgsl/VerticalClose.wgsl +72 -0
  320. package/wgsl/VerticalOpen.wgsl +75 -0
  321. package/wgsl/WaterDrop.wgsl +98 -0
  322. package/wgsl/ZoomInCircles.wgsl +138 -0
  323. package/wgsl/ZoomLeftWipe.wgsl +121 -0
  324. package/wgsl/ZoomRigthWipe.wgsl +121 -0
  325. package/wgsl/angular.wgsl +83 -0
  326. package/wgsl/burn.wgsl +74 -0
  327. package/wgsl/burn0.wgsl +198 -0
  328. package/wgsl/cannabisleaf.wgsl +92 -0
  329. package/wgsl/chessboard.wgsl +116 -0
  330. package/wgsl/circle.wgsl +87 -0
  331. package/wgsl/circleopen.wgsl +96 -0
  332. package/wgsl/colorphase.wgsl +77 -0
  333. package/wgsl/coord-from-in.wgsl +83 -0
  334. package/wgsl/crosshatch.wgsl +96 -0
  335. package/wgsl/crosswarp.wgsl +75 -0
  336. package/wgsl/cube.wgsl +217 -0
  337. package/wgsl/directional-easing.wgsl +83 -0
  338. package/wgsl/directionalwarp.wgsl +92 -0
  339. package/wgsl/directionalwipe.wgsl +91 -0
  340. package/wgsl/displacement.wgsl +96 -0
  341. package/wgsl/dissolve.wgsl +116 -0
  342. package/wgsl/doorway.wgsl +174 -0
  343. package/wgsl/fade.wgsl +67 -0
  344. package/wgsl/fadecolor.wgsl +75 -0
  345. package/wgsl/fadegrayscale.wgsl +93 -0
  346. package/wgsl/flyeye.wgsl +105 -0
  347. package/wgsl/fragment.wgsl +227 -0
  348. package/wgsl/heart.wgsl +103 -0
  349. package/wgsl/hexagonalize.wgsl +238 -0
  350. package/wgsl/kaleidoscope.wgsl +124 -0
  351. package/wgsl/luma.wgsl +80 -0
  352. package/wgsl/luminance_melt.wgsl +299 -0
  353. package/wgsl/morph.wgsl +103 -0
  354. package/wgsl/mosaic_transition.wgsl +107 -0
  355. package/wgsl/multiply_blend.wgsl +96 -0
  356. package/wgsl/old_tv_lost_signal.wgsl +142 -0
  357. package/wgsl/parametric_glitch.wgsl +124 -0
  358. package/wgsl/perlin.wgsl +174 -0
  359. package/wgsl/pinwheel.wgsl +84 -0
  360. package/wgsl/pixelize.wgsl +105 -0
  361. package/wgsl/polar_function.wgsl +88 -0
  362. package/wgsl/powerKaleido.wgsl +254 -0
  363. package/wgsl/randomNoisex.wgsl +85 -0
  364. package/wgsl/randomsquares.wgsl +87 -0
  365. package/wgsl/ripple.wgsl +85 -0
  366. package/wgsl/rotateTransition.wgsl +85 -0
  367. package/wgsl/rotate_scale_fade.wgsl +138 -0
  368. package/wgsl/scale-in.wgsl +79 -0
  369. package/wgsl/splitSlideInHorizontal.wgsl +118 -0
  370. package/wgsl/splitSlideInOutHorizontal.wgsl +109 -0
  371. package/wgsl/splitSlideInOutVertical.wgsl +109 -0
  372. package/wgsl/splitSlideInVertical.wgsl +115 -0
  373. package/wgsl/splitSlideOutHorizontal.wgsl +102 -0
  374. package/wgsl/splitSlideOutVertical.wgsl +102 -0
  375. package/wgsl/squareswire.wgsl +115 -0
  376. package/wgsl/squeeze.wgsl +105 -0
  377. package/wgsl/static_wipe.wgsl +117 -0
  378. package/wgsl/swap.wgsl +218 -0
  379. package/wgsl/tangentMotionBlur.wgsl +503 -0
  380. package/wgsl/undulatingBurnOut.wgsl +181 -0
  381. package/wgsl/wind.wgsl +101 -0
  382. package/wgsl/windowblinds.wgsl +79 -0
  383. package/wgsl/windowslice.wgsl +80 -0
  384. package/wgsl/wipeDown.wgsl +77 -0
  385. package/wgsl/wipeLeft.wgsl +77 -0
  386. package/wgsl/wipeRight.wgsl +77 -0
  387. package/wgsl/wipeUp.wgsl +77 -0
  388. package/wgsl/x_axis_translation.wgsl +82 -0
  389. package/wgsl/zoomInOut.wgsl +94 -0
@@ -0,0 +1,274 @@
1
+ // CrossZoom — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl
2
+ // Author: rectalogic
3
+ // License: MIT
4
+ // Description: A crossfade through a strong zoom blur
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 strength;
17
+ };
18
+
19
+ metal::float4 getToColor(
20
+ thread metal::float2& uv,
21
+ metal::sampler _sampler,
22
+ metal::texture2d<float, metal::access::sample> _to
23
+ ) {
24
+ float _e28 = uv[0u];
25
+ float _e30 = uv[1u];
26
+ metal::float4 _e33 = _to.sample(_sampler, metal::float2(_e28, 1.0 - _e30), metal::level(0.0));
27
+ return _e33;
28
+ }
29
+
30
+ metal::float4 getFromColor(
31
+ thread metal::float2& uv_1,
32
+ metal::texture2d<float, metal::access::sample> _from,
33
+ metal::sampler _sampler
34
+ ) {
35
+ float _e28 = uv_1[0u];
36
+ float _e30 = uv_1[1u];
37
+ metal::float4 _e33 = _from.sample(_sampler, metal::float2(_e28, 1.0 - _e30), metal::level(0.0));
38
+ return _e33;
39
+ }
40
+
41
+ metal::float4 crossFade(
42
+ thread metal::float2& uv_2,
43
+ thread float& dissolve,
44
+ metal::texture2d<float, metal::access::sample> _from,
45
+ metal::sampler _sampler,
46
+ metal::texture2d<float, metal::access::sample> _to
47
+ ) {
48
+ metal::float2 param = {};
49
+ metal::float2 param_1 = {};
50
+ metal::float2 _e30 = uv_2;
51
+ param = _e30;
52
+ metal::float4 _e31 = getFromColor(param, _from, _sampler);
53
+ metal::float2 _e32 = uv_2;
54
+ param_1 = _e32;
55
+ metal::float4 _e33 = getToColor(param_1, _sampler, _to);
56
+ float _e34 = dissolve;
57
+ return metal::mix(_e31, _e33, metal::float4(_e34));
58
+ }
59
+
60
+ float rand(
61
+ thread metal::float2& co
62
+ ) {
63
+ metal::float2 _e27 = co;
64
+ return metal::fract(metal::sin(metal::dot(_e27, metal::float2(12.9898, 78.233))) * 43758.547);
65
+ }
66
+
67
+ float Sinusoidal_easeInOut(
68
+ thread float& begin,
69
+ thread float& change,
70
+ thread float& duration,
71
+ thread float& time
72
+ ) {
73
+ float _e30 = change;
74
+ float _e33 = time;
75
+ float _e35 = duration;
76
+ float _e40 = begin;
77
+ return ((-(_e30) / 2.0) * (metal::cos((3.1415927 * _e33) / _e35) - 1.0)) + _e40;
78
+ }
79
+
80
+ float Exponential_easeInOut(
81
+ thread float& begin_1,
82
+ thread float& change_1,
83
+ thread float& duration_1,
84
+ thread float& time_1
85
+ ) {
86
+ float _e30 = time_1;
87
+ if (_e30 == 0.0) {
88
+ float _e32 = begin_1;
89
+ return _e32;
90
+ } else {
91
+ float _e33 = time_1;
92
+ float _e34 = duration_1;
93
+ if (_e33 == _e34) {
94
+ float _e36 = begin_1;
95
+ float _e37 = change_1;
96
+ return _e36 + _e37;
97
+ }
98
+ }
99
+ float _e39 = time_1;
100
+ float _e40 = duration_1;
101
+ time_1 = _e39 / (_e40 / 2.0);
102
+ float _e43 = time_1;
103
+ if (_e43 < 1.0) {
104
+ float _e45 = change_1;
105
+ float _e47 = time_1;
106
+ float _e52 = begin_1;
107
+ return ((_e45 / 2.0) * metal::pow(2.0, 10.0 * (_e47 - 1.0))) + _e52;
108
+ }
109
+ float _e54 = change_1;
110
+ float _e56 = time_1;
111
+ float _e63 = begin_1;
112
+ return ((_e54 / 2.0) * (-(metal::pow(2.0, -10.0 * (_e56 - 1.0))) + 2.0)) + _e63;
113
+ }
114
+
115
+ float Linear_ease(
116
+ thread float& begin_2,
117
+ thread float& change_2,
118
+ thread float& duration_2,
119
+ thread float& time_2
120
+ ) {
121
+ float _e30 = change_2;
122
+ float _e31 = time_2;
123
+ float _e33 = duration_2;
124
+ float _e35 = begin_2;
125
+ return ((_e30 * _e31) / _e33) + _e35;
126
+ }
127
+
128
+ metal::float4 transition(
129
+ thread metal::float2& uv_3,
130
+ metal::texture2d<float, metal::access::sample> _from,
131
+ metal::sampler _sampler,
132
+ metal::texture2d<float, metal::access::sample> _to,
133
+ constant Uniforms& uniforms
134
+ ) {
135
+ metal::float2 texCoord = {};
136
+ metal::float2 center = {};
137
+ float param_2 = {};
138
+ float param_3 = {};
139
+ float param_4 = {};
140
+ float param_5 = {};
141
+ float dissolve_1 = {};
142
+ float param_6 = {};
143
+ float param_7 = {};
144
+ float param_8 = {};
145
+ float param_9 = {};
146
+ float strength = {};
147
+ float param_10 = {};
148
+ float param_11 = {};
149
+ float param_12 = {};
150
+ float param_13 = {};
151
+ metal::float4 color = {};
152
+ float total = {};
153
+ metal::float2 toCenter = {};
154
+ float offset = {};
155
+ metal::float2 param_14 = {};
156
+ float t = {};
157
+ float percent = {};
158
+ float weight = {};
159
+ metal::float2 param_15 = {};
160
+ float param_16 = {};
161
+ metal::float2 _e53 = uv_3;
162
+ texCoord = _e53 / metal::float2(1.0, 1.0);
163
+ param_2 = 0.25;
164
+ param_3 = 0.5;
165
+ param_4 = 1.0;
166
+ float _e56 = uniforms.progress;
167
+ param_5 = _e56;
168
+ float _e57 = Linear_ease(param_2, param_3, param_4, param_5);
169
+ center = metal::float2(_e57, 0.5);
170
+ param_6 = 0.0;
171
+ param_7 = 1.0;
172
+ param_8 = 1.0;
173
+ float _e60 = uniforms.progress;
174
+ param_9 = _e60;
175
+ float _e61 = Exponential_easeInOut(param_6, param_7, param_8, param_9);
176
+ dissolve_1 = _e61;
177
+ param_10 = 0.0;
178
+ float _e63 = uniforms.strength;
179
+ param_11 = _e63;
180
+ param_12 = 0.5;
181
+ float _e65 = uniforms.progress;
182
+ param_13 = _e65;
183
+ float _e66 = Sinusoidal_easeInOut(param_10, param_11, param_12, param_13);
184
+ strength = _e66;
185
+ color = metal::float4(0.0, 0.0, 0.0, 0.0);
186
+ total = 0.0;
187
+ metal::float2 _e67 = center;
188
+ metal::float2 _e68 = texCoord;
189
+ toCenter = _e67 - _e68;
190
+ metal::float2 _e70 = uv_3;
191
+ param_14 = _e70;
192
+ float _e71 = rand(param_14);
193
+ offset = _e71;
194
+ t = 0.0;
195
+ uint2 loop_bound = uint2(4294967295u);
196
+ bool loop_init = true;
197
+ while(true) {
198
+ if (metal::all(loop_bound == uint2(0u))) { break; }
199
+ loop_bound -= uint2(loop_bound.y == 0u, 1u);
200
+ if (!loop_init) {
201
+ float _e100 = t;
202
+ t = _e100 + 1.0;
203
+ }
204
+ loop_init = false;
205
+ float _e72 = t;
206
+ if (_e72 <= 40.0) {
207
+ float _e74 = t;
208
+ float _e75 = offset;
209
+ percent = (_e74 + _e75) / 40.0;
210
+ float _e78 = percent;
211
+ float _e79 = percent;
212
+ float _e80 = percent;
213
+ weight = 4.0 * (_e78 - (_e79 * _e80));
214
+ metal::float2 _e84 = texCoord;
215
+ metal::float2 _e85 = toCenter;
216
+ float _e86 = percent;
217
+ float _e88 = strength;
218
+ param_15 = _e84 + ((_e85 * _e86) * _e88);
219
+ float _e91 = dissolve_1;
220
+ param_16 = _e91;
221
+ metal::float4 _e92 = crossFade(param_15, param_16, _from, _sampler, _to);
222
+ float _e93 = weight;
223
+ metal::float4 _e95 = color;
224
+ color = _e95 + (_e92 * _e93);
225
+ float _e97 = weight;
226
+ float _e98 = total;
227
+ total = _e98 + _e97;
228
+ continue;
229
+ } else {
230
+ break;
231
+ }
232
+ }
233
+ metal::float4 _e102 = color;
234
+ float _e103 = total;
235
+ return _e102 / metal::float4(_e103);
236
+ }
237
+
238
+ void main_1(
239
+ metal::texture2d<float, metal::access::sample> _from,
240
+ metal::sampler _sampler,
241
+ metal::texture2d<float, metal::access::sample> _to,
242
+ constant Uniforms& uniforms,
243
+ thread metal::float4& _fragColor,
244
+ thread metal::float2& _uv_1
245
+ ) {
246
+ metal::float2 param_17 = {};
247
+ metal::float2 _e27 = _uv_1;
248
+ param_17 = _e27;
249
+ metal::float4 _e28 = transition(param_17, _from, _sampler, _to, uniforms);
250
+ _fragColor = _e28;
251
+ return;
252
+ }
253
+
254
+ struct main_Input {
255
+ metal::float2 _uv [[user(loc0), center_perspective]];
256
+ };
257
+ struct main_Output {
258
+ metal::float4 member [[color(0)]];
259
+ };
260
+ fragment main_Output main_(
261
+ main_Input varyings [[stage_in]]
262
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
263
+ , metal::sampler _sampler [[sampler(0)]]
264
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
265
+ , constant Uniforms& uniforms [[buffer(0)]]
266
+ ) {
267
+ metal::float4 _fragColor = {};
268
+ metal::float2 _uv_1 = {};
269
+ const auto _uv = varyings._uv;
270
+ _uv_1 = _uv;
271
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
272
+ metal::float4 _e3 = _fragColor;
273
+ return main_Output { _e3 };
274
+ }
@@ -0,0 +1,297 @@
1
+ // DefocusBlur — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DefocusBlur.glsl
2
+ // Author: Sergey Kosarevsky
3
+ // License: MIT
4
+ // Description: A crossfade through an out-of-focus blur
5
+ // 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 blurSize;
17
+ };
18
+
19
+ metal::float4 getToColor(
20
+ thread metal::float2& uv,
21
+ metal::sampler _sampler,
22
+ metal::texture2d<float, metal::access::sample> _to
23
+ ) {
24
+ float _e52 = uv[0u];
25
+ float _e54 = uv[1u];
26
+ metal::float4 _e57 = _to.sample(_sampler, metal::float2(_e52, 1.0 - _e54), metal::level(0.0));
27
+ return _e57;
28
+ }
29
+
30
+ metal::float4 getFromColor(
31
+ thread metal::float2& uv_1,
32
+ metal::texture2d<float, metal::access::sample> _from,
33
+ metal::sampler _sampler
34
+ ) {
35
+ float _e52 = uv_1[0u];
36
+ float _e54 = uv_1[1u];
37
+ metal::float4 _e57 = _from.sample(_sampler, metal::float2(_e52, 1.0 - _e54), metal::level(0.0));
38
+ return _e57;
39
+ }
40
+
41
+ metal::float4 transition(
42
+ thread metal::float2& uv_2,
43
+ metal::texture2d<float, metal::access::sample> _from,
44
+ metal::sampler _sampler,
45
+ metal::texture2d<float, metal::access::sample> _to,
46
+ constant Uniforms& uniforms
47
+ ) {
48
+ float T = {};
49
+ float half_ = {};
50
+ float D = {};
51
+ float local = {};
52
+ metal::float4 C0_ = {};
53
+ metal::float2 param = {};
54
+ metal::float4 C1_ = {};
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 param_6 = {};
61
+ metal::float2 param_7 = {};
62
+ metal::float2 param_8 = {};
63
+ metal::float2 param_9 = {};
64
+ metal::float2 param_10 = {};
65
+ metal::float2 param_11 = {};
66
+ metal::float2 param_12 = {};
67
+ metal::float2 param_13 = {};
68
+ metal::float2 param_14 = {};
69
+ metal::float2 param_15 = {};
70
+ metal::float2 param_16 = {};
71
+ metal::float2 param_17 = {};
72
+ metal::float2 param_18 = {};
73
+ metal::float2 param_19 = {};
74
+ metal::float2 param_20 = {};
75
+ metal::float2 param_21 = {};
76
+ metal::float2 param_22 = {};
77
+ metal::float2 param_23 = {};
78
+ metal::float2 param_24 = {};
79
+ metal::float2 param_25 = {};
80
+ float _e84 = uniforms.progress;
81
+ T = _e84;
82
+ half_ = 0.5;
83
+ float _e85 = T;
84
+ float _e86 = half_;
85
+ if (_e85 < _e86) {
86
+ float _e89 = uniforms.blurSize;
87
+ float _e90 = T;
88
+ float _e91 = half_;
89
+ local = metal::mix(0.0, _e89, _e90 / _e91);
90
+ } else {
91
+ float _e95 = uniforms.blurSize;
92
+ float _e96 = T;
93
+ float _e97 = half_;
94
+ float _e99 = half_;
95
+ local = metal::mix(_e95, 0.0, (_e96 - _e97) / _e99);
96
+ }
97
+ float _e102 = local;
98
+ D = _e102;
99
+ metal::float2 _e103 = uv_2;
100
+ param = _e103;
101
+ metal::float4 _e104 = getFromColor(param, _from, _sampler);
102
+ C0_ = _e104;
103
+ metal::float2 _e105 = uv_2;
104
+ param_1 = _e105;
105
+ metal::float4 _e106 = getToColor(param_1, _sampler, _to);
106
+ C1_ = _e106;
107
+ float _e107 = D;
108
+ metal::float2 _e109 = uv_2;
109
+ param_2 = (metal::float2(-0.326, -0.406) * _e107) + _e109;
110
+ metal::float4 _e111 = getFromColor(param_2, _from, _sampler);
111
+ metal::float4 _e112 = C0_;
112
+ C0_ = _e112 + _e111;
113
+ float _e114 = D;
114
+ metal::float2 _e116 = uv_2;
115
+ param_3 = (metal::float2(-0.326, -0.406) * _e114) + _e116;
116
+ metal::float4 _e118 = getToColor(param_3, _sampler, _to);
117
+ metal::float4 _e119 = C1_;
118
+ C1_ = _e119 + _e118;
119
+ float _e121 = D;
120
+ metal::float2 _e123 = uv_2;
121
+ param_4 = (metal::float2(-0.84, -0.074) * _e121) + _e123;
122
+ metal::float4 _e125 = getFromColor(param_4, _from, _sampler);
123
+ metal::float4 _e126 = C0_;
124
+ C0_ = _e126 + _e125;
125
+ float _e128 = D;
126
+ metal::float2 _e130 = uv_2;
127
+ param_5 = (metal::float2(-0.84, -0.074) * _e128) + _e130;
128
+ metal::float4 _e132 = getToColor(param_5, _sampler, _to);
129
+ metal::float4 _e133 = C1_;
130
+ C1_ = _e133 + _e132;
131
+ float _e135 = D;
132
+ metal::float2 _e137 = uv_2;
133
+ param_6 = (metal::float2(-0.696, 0.457) * _e135) + _e137;
134
+ metal::float4 _e139 = getFromColor(param_6, _from, _sampler);
135
+ metal::float4 _e140 = C0_;
136
+ C0_ = _e140 + _e139;
137
+ float _e142 = D;
138
+ metal::float2 _e144 = uv_2;
139
+ param_7 = (metal::float2(-0.696, 0.457) * _e142) + _e144;
140
+ metal::float4 _e146 = getToColor(param_7, _sampler, _to);
141
+ metal::float4 _e147 = C1_;
142
+ C1_ = _e147 + _e146;
143
+ float _e149 = D;
144
+ metal::float2 _e151 = uv_2;
145
+ param_8 = (metal::float2(-0.203, 0.621) * _e149) + _e151;
146
+ metal::float4 _e153 = getFromColor(param_8, _from, _sampler);
147
+ metal::float4 _e154 = C0_;
148
+ C0_ = _e154 + _e153;
149
+ float _e156 = D;
150
+ metal::float2 _e158 = uv_2;
151
+ param_9 = (metal::float2(-0.203, 0.621) * _e156) + _e158;
152
+ metal::float4 _e160 = getToColor(param_9, _sampler, _to);
153
+ metal::float4 _e161 = C1_;
154
+ C1_ = _e161 + _e160;
155
+ float _e163 = D;
156
+ metal::float2 _e165 = uv_2;
157
+ param_10 = (metal::float2(0.962, -0.195) * _e163) + _e165;
158
+ metal::float4 _e167 = getFromColor(param_10, _from, _sampler);
159
+ metal::float4 _e168 = C0_;
160
+ C0_ = _e168 + _e167;
161
+ float _e170 = D;
162
+ metal::float2 _e172 = uv_2;
163
+ param_11 = (metal::float2(0.962, -0.195) * _e170) + _e172;
164
+ metal::float4 _e174 = getToColor(param_11, _sampler, _to);
165
+ metal::float4 _e175 = C1_;
166
+ C1_ = _e175 + _e174;
167
+ float _e177 = D;
168
+ metal::float2 _e179 = uv_2;
169
+ param_12 = (metal::float2(0.473, -0.48) * _e177) + _e179;
170
+ metal::float4 _e181 = getFromColor(param_12, _from, _sampler);
171
+ metal::float4 _e182 = C0_;
172
+ C0_ = _e182 + _e181;
173
+ float _e184 = D;
174
+ metal::float2 _e186 = uv_2;
175
+ param_13 = (metal::float2(0.473, -0.48) * _e184) + _e186;
176
+ metal::float4 _e188 = getToColor(param_13, _sampler, _to);
177
+ metal::float4 _e189 = C1_;
178
+ C1_ = _e189 + _e188;
179
+ float _e191 = D;
180
+ metal::float2 _e193 = uv_2;
181
+ param_14 = (metal::float2(0.519, 0.767) * _e191) + _e193;
182
+ metal::float4 _e195 = getFromColor(param_14, _from, _sampler);
183
+ metal::float4 _e196 = C0_;
184
+ C0_ = _e196 + _e195;
185
+ float _e198 = D;
186
+ metal::float2 _e200 = uv_2;
187
+ param_15 = (metal::float2(0.519, 0.767) * _e198) + _e200;
188
+ metal::float4 _e202 = getToColor(param_15, _sampler, _to);
189
+ metal::float4 _e203 = C1_;
190
+ C1_ = _e203 + _e202;
191
+ float _e205 = D;
192
+ metal::float2 _e207 = uv_2;
193
+ param_16 = (metal::float2(0.185, -0.893) * _e205) + _e207;
194
+ metal::float4 _e209 = getFromColor(param_16, _from, _sampler);
195
+ metal::float4 _e210 = C0_;
196
+ C0_ = _e210 + _e209;
197
+ float _e212 = D;
198
+ metal::float2 _e214 = uv_2;
199
+ param_17 = (metal::float2(0.185, -0.893) * _e212) + _e214;
200
+ metal::float4 _e216 = getToColor(param_17, _sampler, _to);
201
+ metal::float4 _e217 = C1_;
202
+ C1_ = _e217 + _e216;
203
+ float _e219 = D;
204
+ metal::float2 _e221 = uv_2;
205
+ param_18 = (metal::float2(0.507, 0.064) * _e219) + _e221;
206
+ metal::float4 _e223 = getFromColor(param_18, _from, _sampler);
207
+ metal::float4 _e224 = C0_;
208
+ C0_ = _e224 + _e223;
209
+ float _e226 = D;
210
+ metal::float2 _e228 = uv_2;
211
+ param_19 = (metal::float2(0.507, 0.064) * _e226) + _e228;
212
+ metal::float4 _e230 = getToColor(param_19, _sampler, _to);
213
+ metal::float4 _e231 = C1_;
214
+ C1_ = _e231 + _e230;
215
+ float _e233 = D;
216
+ metal::float2 _e235 = uv_2;
217
+ param_20 = (metal::float2(0.896, 0.412) * _e233) + _e235;
218
+ metal::float4 _e237 = getFromColor(param_20, _from, _sampler);
219
+ metal::float4 _e238 = C0_;
220
+ C0_ = _e238 + _e237;
221
+ float _e240 = D;
222
+ metal::float2 _e242 = uv_2;
223
+ param_21 = (metal::float2(0.896, 0.412) * _e240) + _e242;
224
+ metal::float4 _e244 = getToColor(param_21, _sampler, _to);
225
+ metal::float4 _e245 = C1_;
226
+ C1_ = _e245 + _e244;
227
+ float _e247 = D;
228
+ metal::float2 _e249 = uv_2;
229
+ param_22 = (metal::float2(-0.322, -0.933) * _e247) + _e249;
230
+ metal::float4 _e251 = getFromColor(param_22, _from, _sampler);
231
+ metal::float4 _e252 = C0_;
232
+ C0_ = _e252 + _e251;
233
+ float _e254 = D;
234
+ metal::float2 _e256 = uv_2;
235
+ param_23 = (metal::float2(-0.322, -0.933) * _e254) + _e256;
236
+ metal::float4 _e258 = getToColor(param_23, _sampler, _to);
237
+ metal::float4 _e259 = C1_;
238
+ C1_ = _e259 + _e258;
239
+ float _e261 = D;
240
+ metal::float2 _e263 = uv_2;
241
+ param_24 = (metal::float2(-0.792, -0.598) * _e261) + _e263;
242
+ metal::float4 _e265 = getFromColor(param_24, _from, _sampler);
243
+ metal::float4 _e266 = C0_;
244
+ C0_ = _e266 + _e265;
245
+ float _e268 = D;
246
+ metal::float2 _e270 = uv_2;
247
+ param_25 = (metal::float2(-0.792, -0.598) * _e268) + _e270;
248
+ metal::float4 _e272 = getToColor(param_25, _sampler, _to);
249
+ metal::float4 _e273 = C1_;
250
+ C1_ = _e273 + _e272;
251
+ metal::float4 _e275 = C0_;
252
+ C0_ = _e275 / metal::float4(13.0);
253
+ metal::float4 _e278 = C1_;
254
+ C1_ = _e278 / metal::float4(13.0);
255
+ metal::float4 _e281 = C0_;
256
+ metal::float4 _e282 = C1_;
257
+ float _e283 = T;
258
+ return metal::mix(_e281, _e282, metal::float4(_e283));
259
+ }
260
+
261
+ void main_1(
262
+ metal::texture2d<float, metal::access::sample> _from,
263
+ metal::sampler _sampler,
264
+ metal::texture2d<float, metal::access::sample> _to,
265
+ constant Uniforms& uniforms,
266
+ thread metal::float4& _fragColor,
267
+ thread metal::float2& _uv_1
268
+ ) {
269
+ metal::float2 param_26 = {};
270
+ metal::float2 _e51 = _uv_1;
271
+ param_26 = _e51;
272
+ metal::float4 _e52 = transition(param_26, _from, _sampler, _to, uniforms);
273
+ _fragColor = _e52;
274
+ return;
275
+ }
276
+
277
+ struct main_Input {
278
+ metal::float2 _uv [[user(loc0), center_perspective]];
279
+ };
280
+ struct main_Output {
281
+ metal::float4 member [[color(0)]];
282
+ };
283
+ fragment main_Output main_(
284
+ main_Input varyings [[stage_in]]
285
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
286
+ , metal::sampler _sampler [[sampler(0)]]
287
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
288
+ , constant Uniforms& uniforms [[buffer(0)]]
289
+ ) {
290
+ metal::float4 _fragColor = {};
291
+ metal::float2 _uv_1 = {};
292
+ const auto _uv = varyings._uv;
293
+ _uv_1 = _uv;
294
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
295
+ metal::float4 _e3 = _fragColor;
296
+ return main_Output { _e3 };
297
+ }
@@ -0,0 +1,107 @@
1
+ // Directional — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Directional.glsl
2
+ // Author: Gaëtan Renaudeau
3
+ // License: MIT
4
+ // Description: The incoming image pushes the outgoing one out in a given direction
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
+ metal::float2 direction;
17
+ };
18
+
19
+ metal::float4 getFromColor(
20
+ thread metal::float2& uv,
21
+ metal::texture2d<float, metal::access::sample> _from,
22
+ metal::sampler _sampler
23
+ ) {
24
+ float _e14 = uv[0u];
25
+ float _e16 = uv[1u];
26
+ metal::float4 _e19 = _from.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
27
+ return _e19;
28
+ }
29
+
30
+ metal::float4 getToColor(
31
+ thread metal::float2& uv_1,
32
+ metal::sampler _sampler,
33
+ metal::texture2d<float, metal::access::sample> _to
34
+ ) {
35
+ float _e14 = uv_1[0u];
36
+ float _e16 = uv_1[1u];
37
+ metal::float4 _e19 = _to.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
38
+ return _e19;
39
+ }
40
+
41
+ metal::float4 transition(
42
+ thread metal::float2& uv_2,
43
+ metal::texture2d<float, metal::access::sample> _from,
44
+ metal::sampler _sampler,
45
+ metal::texture2d<float, metal::access::sample> _to,
46
+ constant Uniforms& uniforms
47
+ ) {
48
+ metal::float2 p = {};
49
+ metal::float2 f = {};
50
+ metal::float2 param = {};
51
+ metal::float2 param_1 = {};
52
+ metal::float2 _e17 = uv_2;
53
+ float _e19 = uniforms.progress;
54
+ metal::float2 _e21 = uniforms.direction;
55
+ p = _e17 + (metal::sign(_e21) * _e19);
56
+ metal::float2 _e25 = p;
57
+ f = metal::fract(_e25);
58
+ metal::float2 _e27 = f;
59
+ param = _e27;
60
+ metal::float4 _e28 = getToColor(param, _sampler, _to);
61
+ metal::float2 _e29 = f;
62
+ param_1 = _e29;
63
+ metal::float4 _e30 = getFromColor(param_1, _from, _sampler);
64
+ float _e32 = p[1u];
65
+ float _e35 = p[1u];
66
+ float _e39 = p[0u];
67
+ float _e43 = p[0u];
68
+ return metal::mix(_e28, _e30, metal::float4(((metal::step(0.0, _e32) * metal::step(_e35, 1.0)) * metal::step(0.0, _e39)) * metal::step(_e43, 1.0)));
69
+ }
70
+
71
+ void main_1(
72
+ metal::texture2d<float, metal::access::sample> _from,
73
+ metal::sampler _sampler,
74
+ metal::texture2d<float, metal::access::sample> _to,
75
+ constant Uniforms& uniforms,
76
+ thread metal::float4& _fragColor,
77
+ thread metal::float2& _uv_1
78
+ ) {
79
+ metal::float2 param_2 = {};
80
+ metal::float2 _e13 = _uv_1;
81
+ param_2 = _e13;
82
+ metal::float4 _e14 = transition(param_2, _from, _sampler, _to, uniforms);
83
+ _fragColor = _e14;
84
+ return;
85
+ }
86
+
87
+ struct main_Input {
88
+ metal::float2 _uv [[user(loc0), center_perspective]];
89
+ };
90
+ struct main_Output {
91
+ metal::float4 member [[color(0)]];
92
+ };
93
+ fragment main_Output main_(
94
+ main_Input varyings [[stage_in]]
95
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
96
+ , metal::sampler _sampler [[sampler(0)]]
97
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
98
+ , constant Uniforms& uniforms [[buffer(0)]]
99
+ ) {
100
+ metal::float4 _fragColor = {};
101
+ metal::float2 _uv_1 = {};
102
+ const auto _uv = varyings._uv;
103
+ _uv_1 = _uv;
104
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
105
+ metal::float4 _e3 = _fragColor;
106
+ return main_Output { _e3 };
107
+ }