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,147 @@
1
+ // DirectionalScaled — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalScaled.glsl
2
+ // Author: Thibaut Foussard
3
+ // License: MIT
4
+ // Description: Like Directional, with both images scaled down while they slide
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
+ float scale;
18
+ char _pad4[4];
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 _e19 = uv[0u];
27
+ float _e21 = uv[1u];
28
+ metal::float4 _e24 = _from.sample(_sampler, metal::float2(_e19, 1.0 - _e21), metal::level(0.0));
29
+ return _e24;
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 _e19 = uv_1[0u];
38
+ float _e21 = uv_1[1u];
39
+ metal::float4 _e24 = _to.sample(_sampler, metal::float2(_e19, 1.0 - _e21), metal::level(0.0));
40
+ return _e24;
41
+ }
42
+
43
+ float parabola(
44
+ thread float& x
45
+ ) {
46
+ float y = {};
47
+ float _e19 = x;
48
+ y = metal::pow(metal::sin(_e19 * 3.1415927), 1.0);
49
+ float _e23 = y;
50
+ return _e23;
51
+ }
52
+
53
+ metal::float4 transition(
54
+ thread metal::float2& uv_2,
55
+ metal::texture2d<float, metal::access::sample> _from,
56
+ metal::sampler _sampler,
57
+ metal::texture2d<float, metal::access::sample> _to,
58
+ constant Uniforms& uniforms
59
+ ) {
60
+ float easedProgress = {};
61
+ metal::float2 p = {};
62
+ metal::float2 f = {};
63
+ float s = {};
64
+ float param = {};
65
+ float mixer = {};
66
+ metal::float4 col = {};
67
+ metal::float2 param_1 = {};
68
+ metal::float2 param_2 = {};
69
+ float border = {};
70
+ float _e29 = uniforms.progress;
71
+ easedProgress = metal::pow(metal::sin((_e29 * 3.1415927) / 2.0), 3.0);
72
+ metal::float2 _e34 = uv_2;
73
+ float _e35 = easedProgress;
74
+ metal::float2 _e37 = uniforms.direction;
75
+ p = _e34 + (metal::sign(_e37) * _e35);
76
+ metal::float2 _e41 = p;
77
+ f = metal::fract(_e41);
78
+ float _e44 = uniforms.scale;
79
+ float _e48 = uniforms.progress;
80
+ param = _e48;
81
+ float _e49 = parabola(param);
82
+ s = 1.0 - ((1.0 - (1.0 / _e44)) * _e49);
83
+ metal::float2 _e52 = f;
84
+ float _e55 = s;
85
+ f = ((_e52 - metal::float2(0.5)) * _e55) + metal::float2(0.5);
86
+ float _e60 = p[1u];
87
+ float _e63 = p[1u];
88
+ float _e67 = p[0u];
89
+ float _e71 = p[0u];
90
+ mixer = ((metal::step(0.0, _e60) * metal::step(_e63, 1.0)) * metal::step(0.0, _e67)) * metal::step(_e71, 1.0);
91
+ metal::float2 _e74 = f;
92
+ param_1 = _e74;
93
+ metal::float4 _e75 = getToColor(param_1, _sampler, _to);
94
+ metal::float2 _e76 = f;
95
+ param_2 = _e76;
96
+ metal::float4 _e77 = getFromColor(param_2, _from, _sampler);
97
+ float _e78 = mixer;
98
+ col = metal::mix(_e75, _e77, metal::float4(_e78));
99
+ float _e82 = f[0u];
100
+ float _e85 = f[0u];
101
+ float _e90 = f[1u];
102
+ float _e94 = f[1u];
103
+ border = ((metal::step(0.0, _e82) * metal::step(0.0, 1.0 - _e85)) * metal::step(0.0, _e90)) * metal::step(0.0, 1.0 - _e94);
104
+ float _e98 = border;
105
+ metal::float4 _e99 = col;
106
+ col = _e99 * _e98;
107
+ metal::float4 _e101 = col;
108
+ return _e101;
109
+ }
110
+
111
+ void main_1(
112
+ metal::texture2d<float, metal::access::sample> _from,
113
+ metal::sampler _sampler,
114
+ metal::texture2d<float, metal::access::sample> _to,
115
+ constant Uniforms& uniforms,
116
+ thread metal::float4& _fragColor,
117
+ thread metal::float2& _uv_1
118
+ ) {
119
+ metal::float2 param_3 = {};
120
+ metal::float2 _e18 = _uv_1;
121
+ param_3 = _e18;
122
+ metal::float4 _e19 = transition(param_3, _from, _sampler, _to, uniforms);
123
+ _fragColor = _e19;
124
+ return;
125
+ }
126
+
127
+ struct main_Input {
128
+ metal::float2 _uv [[user(loc0), center_perspective]];
129
+ };
130
+ struct main_Output {
131
+ metal::float4 member [[color(0)]];
132
+ };
133
+ fragment main_Output main_(
134
+ main_Input varyings [[stage_in]]
135
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
136
+ , metal::sampler _sampler [[sampler(0)]]
137
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
138
+ , constant Uniforms& uniforms [[buffer(0)]]
139
+ ) {
140
+ metal::float4 _fragColor = {};
141
+ metal::float2 _uv_1 = {};
142
+ const auto _uv = varyings._uv;
143
+ _uv_1 = _uv;
144
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
145
+ metal::float4 _e3 = _fragColor;
146
+ return main_Output { _e3 };
147
+ }
@@ -0,0 +1,212 @@
1
+ // DoomScreenTransition — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DoomScreenTransition.glsl
2
+ // Author: Zeh Fernando
3
+ // License: MIT
4
+ // Description: The outgoing image melts down in uneven columns, like the Doom screen wipe
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
+ int bars;
17
+ float amplitude;
18
+ float noise;
19
+ float frequency;
20
+ float dripScale;
21
+ };
22
+
23
+ metal::float4 getToColor(
24
+ thread metal::float2& uv,
25
+ metal::sampler _sampler,
26
+ metal::texture2d<float, metal::access::sample> _to
27
+ ) {
28
+ float _e30 = uv[0u];
29
+ float _e32 = uv[1u];
30
+ metal::float4 _e35 = _to.sample(_sampler, metal::float2(_e30, 1.0 - _e32), metal::level(0.0));
31
+ return _e35;
32
+ }
33
+
34
+ metal::float4 getFromColor(
35
+ thread metal::float2& uv_1,
36
+ metal::texture2d<float, metal::access::sample> _from,
37
+ metal::sampler _sampler
38
+ ) {
39
+ float _e30 = uv_1[0u];
40
+ float _e32 = uv_1[1u];
41
+ metal::float4 _e35 = _from.sample(_sampler, metal::float2(_e30, 1.0 - _e32), metal::level(0.0));
42
+ return _e35;
43
+ }
44
+
45
+ float drip(
46
+ thread int& num,
47
+ constant Uniforms& uniforms
48
+ ) {
49
+ int _e29 = num;
50
+ int _e32 = uniforms.bars;
51
+ float _e39 = uniforms.dripScale;
52
+ return metal::sin((static_cast<float>(_e29) / static_cast<float>(as_type<int>(as_type<uint>(_e32) - as_type<uint>(1)))) * 3.141592) * _e39;
53
+ }
54
+
55
+ float rand(
56
+ thread int& num_1
57
+ ) {
58
+ int _e29 = num_1;
59
+ float _e31 = static_cast<float>(_e29) * 67123.31;
60
+ int _e36 = num_1;
61
+ int _e41 = num_1;
62
+ return metal::fract(((_e31 - (metal::floor(_e31 / 12.0) * 12.0)) * metal::sin(static_cast<float>(_e36) * 10.3)) * metal::cos(static_cast<float>(_e41)));
63
+ }
64
+
65
+ float wave(
66
+ thread int& num_2,
67
+ constant Uniforms& uniforms
68
+ ) {
69
+ float fn = {};
70
+ int _e30 = num_2;
71
+ float _e33 = uniforms.frequency;
72
+ int _e37 = uniforms.bars;
73
+ fn = ((static_cast<float>(_e30) * _e33) * 0.1) * static_cast<float>(_e37);
74
+ float _e40 = fn;
75
+ float _e43 = fn;
76
+ float _e47 = fn;
77
+ return (((metal::cos(_e40 * 0.5) * metal::cos(_e43 * 0.13)) * metal::sin((_e47 + 10.0) * 0.3)) / 2.0) + 0.5;
78
+ }
79
+
80
+ float pos(
81
+ thread int& num_3,
82
+ constant Uniforms& uniforms
83
+ ) {
84
+ float local = {};
85
+ int param = {};
86
+ int param_1 = {};
87
+ int param_2 = {};
88
+ float local_1 = {};
89
+ int param_3 = {};
90
+ float _e36 = uniforms.noise;
91
+ if (_e36 == 0.0) {
92
+ int _e38 = num_3;
93
+ param = _e38;
94
+ float _e39 = wave(param, uniforms);
95
+ local = _e39;
96
+ } else {
97
+ int _e40 = num_3;
98
+ param_1 = _e40;
99
+ float _e41 = wave(param_1, uniforms);
100
+ int _e42 = num_3;
101
+ param_2 = _e42;
102
+ float _e43 = rand(param_2);
103
+ float _e45 = uniforms.noise;
104
+ local = metal::mix(_e41, _e43, _e45);
105
+ }
106
+ float _e47 = local;
107
+ float _e49 = uniforms.dripScale;
108
+ if (_e49 == 0.0) {
109
+ local_1 = 0.0;
110
+ } else {
111
+ int _e51 = num_3;
112
+ param_3 = _e51;
113
+ float _e52 = drip(param_3, uniforms);
114
+ local_1 = _e52;
115
+ }
116
+ float _e53 = local_1;
117
+ return _e47 + _e53;
118
+ }
119
+
120
+ int naga_f2i32(float value) {
121
+ return static_cast<int>(metal::clamp(value, -2147483600.0, 2147483500.0));
122
+ }
123
+
124
+ metal::float4 transition(
125
+ thread metal::float2& uv_2,
126
+ metal::texture2d<float, metal::access::sample> _from,
127
+ metal::sampler _sampler,
128
+ metal::texture2d<float, metal::access::sample> _to,
129
+ constant Uniforms& uniforms
130
+ ) {
131
+ int bar = {};
132
+ float scale = {};
133
+ int param_4 = {};
134
+ float phase = {};
135
+ float posY = {};
136
+ metal::float2 p = {};
137
+ metal::float4 c = {};
138
+ metal::float2 param_5 = {};
139
+ metal::float2 param_6 = {};
140
+ float _e39 = uv_2[0u];
141
+ int _e41 = uniforms.bars;
142
+ bar = naga_f2i32(_e39 * static_cast<float>(_e41));
143
+ int _e45 = bar;
144
+ param_4 = _e45;
145
+ float _e46 = pos(param_4, uniforms);
146
+ float _e48 = uniforms.amplitude;
147
+ scale = 1.0 + (_e46 * _e48);
148
+ float _e52 = uniforms.progress;
149
+ float _e53 = scale;
150
+ phase = _e52 * _e53;
151
+ float _e56 = uv_2[1u];
152
+ posY = _e56 / 1.0;
153
+ float _e58 = phase;
154
+ float _e59 = posY;
155
+ if ((_e58 + _e59) < 1.0) {
156
+ float _e63 = uv_2[0u];
157
+ float _e65 = uv_2[1u];
158
+ float _e66 = phase;
159
+ p = metal::float2(_e63, _e65 + metal::mix(0.0, 1.0, _e66)) / metal::float2(1.0, 1.0);
160
+ metal::float2 _e71 = p;
161
+ param_5 = _e71;
162
+ metal::float4 _e72 = getFromColor(param_5, _from, _sampler);
163
+ c = _e72;
164
+ } else {
165
+ metal::float2 _e73 = uv_2;
166
+ p = _e73 / metal::float2(1.0, 1.0);
167
+ metal::float2 _e75 = p;
168
+ param_6 = _e75;
169
+ metal::float4 _e76 = getToColor(param_6, _sampler, _to);
170
+ c = _e76;
171
+ }
172
+ metal::float4 _e77 = c;
173
+ return _e77;
174
+ }
175
+
176
+ void main_1(
177
+ metal::texture2d<float, metal::access::sample> _from,
178
+ metal::sampler _sampler,
179
+ metal::texture2d<float, metal::access::sample> _to,
180
+ constant Uniforms& uniforms,
181
+ thread metal::float4& _fragColor,
182
+ thread metal::float2& _uv_1
183
+ ) {
184
+ metal::float2 param_7 = {};
185
+ metal::float2 _e29 = _uv_1;
186
+ param_7 = _e29;
187
+ metal::float4 _e30 = transition(param_7, _from, _sampler, _to, uniforms);
188
+ _fragColor = _e30;
189
+ return;
190
+ }
191
+
192
+ struct main_Input {
193
+ metal::float2 _uv [[user(loc0), center_perspective]];
194
+ };
195
+ struct main_Output {
196
+ metal::float4 member [[color(0)]];
197
+ };
198
+ fragment main_Output main_(
199
+ main_Input varyings [[stage_in]]
200
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
201
+ , metal::sampler _sampler [[sampler(0)]]
202
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
203
+ , constant Uniforms& uniforms [[buffer(0)]]
204
+ ) {
205
+ metal::float4 _fragColor = {};
206
+ metal::float2 _uv_1 = {};
207
+ const auto _uv = varyings._uv;
208
+ _uv_1 = _uv;
209
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
210
+ metal::float4 _e3 = _fragColor;
211
+ return main_Output { _e3 };
212
+ }
@@ -0,0 +1,133 @@
1
+ // Dreamy — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Dreamy.glsl
2
+ // Author: mikolalysenko
3
+ // License: MIT
4
+ // Description: A crossfade with a gentle wavy distortion
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 _e16 = uv[0u];
24
+ float _e18 = uv[1u];
25
+ metal::float4 _e21 = _to.sample(_sampler, metal::float2(_e16, 1.0 - _e18), metal::level(0.0));
26
+ return _e21;
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 _e16 = uv_1[0u];
35
+ float _e18 = uv_1[1u];
36
+ metal::float4 _e21 = _from.sample(_sampler, metal::float2(_e16, 1.0 - _e18), metal::level(0.0));
37
+ return _e21;
38
+ }
39
+
40
+ metal::float2 offset(
41
+ thread float& progress,
42
+ thread float& x,
43
+ thread float& theta
44
+ ) {
45
+ float phase = {};
46
+ float shifty = {};
47
+ float _e19 = progress;
48
+ float _e20 = progress;
49
+ float _e22 = progress;
50
+ float _e24 = theta;
51
+ phase = ((_e19 * _e20) + _e22) + _e24;
52
+ float _e26 = progress;
53
+ float _e28 = progress;
54
+ float _e29 = x;
55
+ shifty = (0.03 * _e26) * metal::cos(10.0 * (_e28 + _e29));
56
+ float _e34 = shifty;
57
+ return metal::float2(0.0, _e34);
58
+ }
59
+
60
+ metal::float4 transition(
61
+ thread metal::float2& p,
62
+ metal::texture2d<float, metal::access::sample> _from,
63
+ metal::sampler _sampler,
64
+ metal::texture2d<float, metal::access::sample> _to,
65
+ constant Uniforms& uniforms
66
+ ) {
67
+ float param = {};
68
+ float param_1 = {};
69
+ float param_2 = {};
70
+ metal::float2 param_3 = {};
71
+ float param_4 = {};
72
+ float param_5 = {};
73
+ float param_6 = {};
74
+ metal::float2 param_7 = {};
75
+ metal::float2 _e23 = p;
76
+ float _e25 = uniforms.progress;
77
+ param = _e25;
78
+ float _e27 = p[0u];
79
+ param_1 = _e27;
80
+ param_2 = 0.0;
81
+ metal::float2 _e28 = offset(param, param_1, param_2);
82
+ param_3 = _e23 + _e28;
83
+ metal::float4 _e30 = getFromColor(param_3, _from, _sampler);
84
+ metal::float2 _e31 = p;
85
+ float _e33 = uniforms.progress;
86
+ param_4 = 1.0 - _e33;
87
+ float _e36 = p[0u];
88
+ param_5 = _e36;
89
+ param_6 = 3.14;
90
+ metal::float2 _e37 = offset(param_4, param_5, param_6);
91
+ param_7 = _e31 + _e37;
92
+ metal::float4 _e39 = getToColor(param_7, _sampler, _to);
93
+ float _e41 = uniforms.progress;
94
+ return metal::mix(_e30, _e39, metal::float4(_e41));
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_8 = {};
106
+ metal::float2 _e15 = _uv_1;
107
+ param_8 = _e15;
108
+ metal::float4 _e16 = transition(param_8, _from, _sampler, _to, uniforms);
109
+ _fragColor = _e16;
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
+ }
@@ -0,0 +1,182 @@
1
+ // DreamyZoom — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DreamyZoom.glsl
2
+ // Author: Zeh Fernando
3
+ // License: MIT
4
+ // Description: Zooms and rotates into a bright flash, then out to 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
+ float rotation;
17
+ float scale;
18
+ };
19
+
20
+ metal::float4 getToColor(
21
+ thread metal::float2& uv,
22
+ metal::sampler _sampler,
23
+ metal::texture2d<float, metal::access::sample> _to
24
+ ) {
25
+ float _e21 = uv[0u];
26
+ float _e23 = uv[1u];
27
+ metal::float4 _e26 = _to.sample(_sampler, metal::float2(_e21, 1.0 - _e23), metal::level(0.0));
28
+ return _e26;
29
+ }
30
+
31
+ metal::float4 getFromColor(
32
+ thread metal::float2& uv_1,
33
+ metal::texture2d<float, metal::access::sample> _from,
34
+ metal::sampler _sampler
35
+ ) {
36
+ float _e21 = uv_1[0u];
37
+ float _e23 = uv_1[1u];
38
+ metal::float4 _e26 = _from.sample(_sampler, metal::float2(_e21, 1.0 - _e23), metal::level(0.0));
39
+ return _e26;
40
+ }
41
+
42
+ metal::float4 transition(
43
+ thread metal::float2& uv_2,
44
+ metal::texture2d<float, metal::access::sample> _from,
45
+ metal::sampler _sampler,
46
+ metal::texture2d<float, metal::access::sample> _to,
47
+ constant Uniforms& uniforms
48
+ ) {
49
+ float phase = {};
50
+ float local = {};
51
+ float angleOffset = {};
52
+ float local_1 = {};
53
+ float newScale = {};
54
+ float local_2 = {};
55
+ metal::float2 center = {};
56
+ metal::float2 assumedCenter = {};
57
+ metal::float2 p = {};
58
+ float angle = {};
59
+ float dist = {};
60
+ metal::float4 c = {};
61
+ metal::float4 local_3 = {};
62
+ metal::float2 param = {};
63
+ metal::float2 param_1 = {};
64
+ float local_4 = {};
65
+ float _e37 = uniforms.progress;
66
+ if (_e37 < 0.5) {
67
+ float _e40 = uniforms.progress;
68
+ local = _e40 * 2.0;
69
+ } else {
70
+ float _e43 = uniforms.progress;
71
+ local = (_e43 - 0.5) * 2.0;
72
+ }
73
+ float _e46 = local;
74
+ phase = _e46;
75
+ float _e48 = uniforms.progress;
76
+ if (_e48 < 0.5) {
77
+ float _e51 = uniforms.rotation;
78
+ float _e53 = phase;
79
+ local_1 = metal::mix(0.0, _e51 * 0.03926991, _e53);
80
+ } else {
81
+ float _e56 = uniforms.rotation;
82
+ float _e59 = phase;
83
+ local_1 = metal::mix(-(_e56) * 0.03926991, 0.0, _e59);
84
+ }
85
+ float _e61 = local_1;
86
+ angleOffset = _e61;
87
+ float _e63 = uniforms.progress;
88
+ if (_e63 < 0.5) {
89
+ float _e66 = uniforms.scale;
90
+ float _e67 = phase;
91
+ local_2 = metal::mix(1.0, _e66, _e67);
92
+ } else {
93
+ float _e70 = uniforms.scale;
94
+ float _e71 = phase;
95
+ local_2 = metal::mix(_e70, 1.0, _e71);
96
+ }
97
+ float _e73 = local_2;
98
+ newScale = _e73;
99
+ center = metal::float2(0.0, 0.0);
100
+ assumedCenter = metal::float2(0.5, 0.5);
101
+ metal::float2 _e74 = uv_2;
102
+ float _e76 = newScale;
103
+ float _e80 = uniforms.ratio;
104
+ p = ((_e74 - metal::float2(0.5, 0.5)) / metal::float2(_e76)) * metal::float2(_e80, 1.0);
105
+ float _e84 = p[1u];
106
+ float _e86 = p[0u];
107
+ float _e88 = angleOffset;
108
+ angle = metal::atan2(_e84, _e86) + _e88;
109
+ metal::float2 _e90 = center;
110
+ metal::float2 _e91 = p;
111
+ dist = metal::distance(_e90, _e91);
112
+ float _e93 = angle;
113
+ float _e95 = dist;
114
+ float _e98 = uniforms.ratio;
115
+ p[0u] = ((metal::cos(_e93) * _e95) / _e98) + 0.5;
116
+ float _e102 = angle;
117
+ float _e104 = dist;
118
+ p[1u] = (metal::sin(_e102) * _e104) + 0.5;
119
+ float _e109 = uniforms.progress;
120
+ if (_e109 < 0.5) {
121
+ metal::float2 _e111 = p;
122
+ param = _e111;
123
+ metal::float4 _e112 = getFromColor(param, _from, _sampler);
124
+ local_3 = _e112;
125
+ } else {
126
+ metal::float2 _e113 = p;
127
+ param_1 = _e113;
128
+ metal::float4 _e114 = getToColor(param_1, _sampler, _to);
129
+ local_3 = _e114;
130
+ }
131
+ metal::float4 _e115 = local_3;
132
+ c = _e115;
133
+ metal::float4 _e116 = c;
134
+ float _e118 = uniforms.progress;
135
+ if (_e118 < 0.5) {
136
+ float _e120 = phase;
137
+ local_4 = metal::mix(0.0, 1.0, _e120);
138
+ } else {
139
+ float _e122 = phase;
140
+ local_4 = metal::mix(1.0, 0.0, _e122);
141
+ }
142
+ float _e124 = local_4;
143
+ return _e116 + metal::float4(_e124);
144
+ }
145
+
146
+ void main_1(
147
+ metal::texture2d<float, metal::access::sample> _from,
148
+ metal::sampler _sampler,
149
+ metal::texture2d<float, metal::access::sample> _to,
150
+ constant Uniforms& uniforms,
151
+ thread metal::float4& _fragColor,
152
+ thread metal::float2& _uv_1
153
+ ) {
154
+ metal::float2 param_2 = {};
155
+ metal::float2 _e20 = _uv_1;
156
+ param_2 = _e20;
157
+ metal::float4 _e21 = transition(param_2, _from, _sampler, _to, uniforms);
158
+ _fragColor = _e21;
159
+ return;
160
+ }
161
+
162
+ struct main_Input {
163
+ metal::float2 _uv [[user(loc0), center_perspective]];
164
+ };
165
+ struct main_Output {
166
+ metal::float4 member [[color(0)]];
167
+ };
168
+ fragment main_Output main_(
169
+ main_Input varyings [[stage_in]]
170
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
171
+ , metal::sampler _sampler [[sampler(0)]]
172
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
173
+ , constant Uniforms& uniforms [[buffer(0)]]
174
+ ) {
175
+ metal::float4 _fragColor = {};
176
+ metal::float2 _uv_1 = {};
177
+ const auto _uv = varyings._uv;
178
+ _uv_1 = _uv;
179
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
180
+ metal::float4 _e3 = _fragColor;
181
+ return main_Output { _e3 };
182
+ }