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,127 @@
1
+ // RectangleCrop — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/RectangleCrop.glsl
2
+ // Author: martiniti
3
+ // License: MIT
4
+ // Description: The outgoing image shrinks into a small rectangle over a background color, then the incoming one grows from it
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::float4 bgcolor;
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 _e20 = uv[0u];
26
+ float _e22 = uv[1u];
27
+ metal::float4 _e25 = _to.sample(_sampler, metal::float2(_e20, 1.0 - _e22), metal::level(0.0));
28
+ return _e25;
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 _e20 = uv_1[0u];
37
+ float _e22 = uv_1[1u];
38
+ metal::float4 _e25 = _from.sample(_sampler, metal::float2(_e20, 1.0 - _e22), metal::level(0.0));
39
+ return _e25;
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 s = {};
50
+ metal::float2 q = {};
51
+ metal::float2 bl = {};
52
+ metal::float2 tr = {};
53
+ float dist = {};
54
+ metal::float4 local = {};
55
+ metal::float2 param = {};
56
+ metal::float2 param_1 = {};
57
+ float _e28 = uniforms.progress;
58
+ s = metal::pow(2.0 * metal::abs(_e28 - 0.5), 3.0);
59
+ metal::float2 _e33 = uv_2;
60
+ q = _e33 / metal::float2(1.0, 1.0);
61
+ float _e36 = uniforms.progress;
62
+ metal::float2 _e42 = q;
63
+ bl = metal::step(metal::float2(1.0 - (2.0 * metal::abs(_e36 - 0.5))), _e42 + metal::float2(0.25));
64
+ float _e47 = uniforms.progress;
65
+ metal::float2 _e53 = q;
66
+ tr = metal::step(metal::float2(1.0 - (2.0 * metal::abs(_e47 - 0.5))), metal::float2(1.25) - _e53);
67
+ float _e58 = bl[0u];
68
+ float _e60 = bl[1u];
69
+ float _e63 = tr[0u];
70
+ float _e66 = tr[1u];
71
+ dist = metal::abs(1.0 - (((_e58 * _e60) * _e63) * _e66));
72
+ float _e71 = uniforms.progress;
73
+ if (_e71 < 0.5) {
74
+ metal::float2 _e73 = uv_2;
75
+ param = _e73;
76
+ metal::float4 _e74 = getFromColor(param, _from, _sampler);
77
+ local = _e74;
78
+ } else {
79
+ metal::float2 _e75 = uv_2;
80
+ param_1 = _e75;
81
+ metal::float4 _e76 = getToColor(param_1, _sampler, _to);
82
+ local = _e76;
83
+ }
84
+ metal::float4 _e77 = local;
85
+ metal::float4 _e79 = uniforms.bgcolor;
86
+ float _e80 = s;
87
+ float _e81 = dist;
88
+ return metal::mix(_e77, _e79, metal::float4(metal::step(_e80, _e81)));
89
+ }
90
+
91
+ void main_1(
92
+ metal::texture2d<float, metal::access::sample> _from,
93
+ metal::sampler _sampler,
94
+ metal::texture2d<float, metal::access::sample> _to,
95
+ constant Uniforms& uniforms,
96
+ thread metal::float4& _fragColor,
97
+ thread metal::float2& _uv_1
98
+ ) {
99
+ metal::float2 param_2 = {};
100
+ metal::float2 _e19 = _uv_1;
101
+ param_2 = _e19;
102
+ metal::float4 _e20 = transition(param_2, _from, _sampler, _to, uniforms);
103
+ _fragColor = _e20;
104
+ return;
105
+ }
106
+
107
+ struct main_Input {
108
+ metal::float2 _uv [[user(loc0), center_perspective]];
109
+ };
110
+ struct main_Output {
111
+ metal::float4 member [[color(0)]];
112
+ };
113
+ fragment main_Output main_(
114
+ main_Input varyings [[stage_in]]
115
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
116
+ , metal::sampler _sampler [[sampler(0)]]
117
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
118
+ , constant Uniforms& uniforms [[buffer(0)]]
119
+ ) {
120
+ metal::float4 _fragColor = {};
121
+ metal::float2 _uv_1 = {};
122
+ const auto _uv = varyings._uv;
123
+ _uv_1 = _uv;
124
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
125
+ metal::float4 _e3 = _fragColor;
126
+ return main_Output { _e3 };
127
+ }
@@ -0,0 +1,363 @@
1
+ // Revolve_Left — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve_Left.glsl
2
+ // Author: bread
3
+ // License: MIT
4
+ // Description: The outgoing image swirls and zooms with motion blur into the incoming one
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 center;
17
+ float direction;
18
+ float maxRotation;
19
+ float peakZoom;
20
+ float swirl;
21
+ float barrel;
22
+ float motionBlur;
23
+ float switchStart;
24
+ float switchEnd;
25
+ float shadow;
26
+ char _pad12[4];
27
+ };
28
+
29
+ metal::float4 getToColor(
30
+ thread metal::float2& uv,
31
+ metal::sampler _sampler,
32
+ metal::texture2d<float, metal::access::sample> _to
33
+ ) {
34
+ float _e48 = uv[0u];
35
+ float _e50 = uv[1u];
36
+ metal::float4 _e53 = _to.sample(_sampler, metal::float2(_e48, 1.0 - _e50), metal::level(0.0));
37
+ return _e53;
38
+ }
39
+
40
+ metal::float4 getFromColor(
41
+ thread metal::float2& uv_1,
42
+ metal::texture2d<float, metal::access::sample> _from,
43
+ metal::sampler _sampler
44
+ ) {
45
+ float _e48 = uv_1[0u];
46
+ float _e50 = uv_1[1u];
47
+ metal::float4 _e53 = _from.sample(_sampler, metal::float2(_e48, 1.0 - _e50), metal::level(0.0));
48
+ return _e53;
49
+ }
50
+
51
+ metal::float2 rotate2(
52
+ thread metal::float2& p,
53
+ thread float& a
54
+ ) {
55
+ float s = {};
56
+ float c = {};
57
+ float _e50 = a;
58
+ s = metal::sin(_e50);
59
+ float _e52 = a;
60
+ c = metal::cos(_e52);
61
+ float _e54 = c;
62
+ float _e56 = p[0u];
63
+ float _e58 = s;
64
+ float _e60 = p[1u];
65
+ float _e63 = s;
66
+ float _e65 = p[0u];
67
+ float _e67 = c;
68
+ float _e69 = p[1u];
69
+ return metal::float2((_e54 * _e56) - (_e58 * _e60), (_e63 * _e65) + (_e67 * _e69));
70
+ }
71
+
72
+ float sat(
73
+ thread float& x
74
+ ) {
75
+ float _e47 = x;
76
+ return metal::clamp(_e47, 0.0, 1.0);
77
+ }
78
+
79
+ float ease(
80
+ thread float& x_1
81
+ ) {
82
+ float param = {};
83
+ float _e48 = x_1;
84
+ param = _e48;
85
+ float _e49 = sat(param);
86
+ x_1 = _e49;
87
+ float _e50 = x_1;
88
+ float _e51 = x_1;
89
+ float _e53 = x_1;
90
+ return (_e50 * _e51) * (3.0 - (2.0 * _e53));
91
+ }
92
+
93
+ float revolveEnvelope(
94
+ thread float& t
95
+ ) {
96
+ float rise = {};
97
+ float param_1 = {};
98
+ float fall = {};
99
+ float param_2 = {};
100
+ float _e51 = t;
101
+ param_1 = (_e51 - 0.1) / 0.33;
102
+ float _e54 = ease(param_1);
103
+ rise = _e54;
104
+ float _e55 = t;
105
+ param_2 = (_e55 - 0.43) / 0.29;
106
+ float _e58 = ease(param_2);
107
+ fall = 1.0 - _e58;
108
+ float _e60 = rise;
109
+ float _e61 = fall;
110
+ return _e60 * _e61;
111
+ }
112
+
113
+ metal::float2 warpUv(
114
+ thread metal::float2& uv_2,
115
+ thread float& t_1,
116
+ constant Uniforms& uniforms
117
+ ) {
118
+ float e = {};
119
+ float param_3 = {};
120
+ metal::float2 p_1 = {};
121
+ float r = {};
122
+ float edgeSpin = {};
123
+ float coreSpin = {};
124
+ float param_4 = {};
125
+ float visibleAngle = {};
126
+ metal::float2 param_5 = {};
127
+ float param_6 = {};
128
+ float sc = {};
129
+ float rr = {};
130
+ float _e60 = t_1;
131
+ param_3 = _e60;
132
+ float _e61 = revolveEnvelope(param_3);
133
+ e = _e61;
134
+ metal::float2 _e62 = uv_2;
135
+ metal::float2 _e64 = uniforms.center;
136
+ p_1 = _e62 - _e64;
137
+ float _e67 = uniforms.ratio;
138
+ float _e69 = p_1[0u];
139
+ p_1[0u] = _e69 * _e67;
140
+ metal::float2 _e72 = p_1;
141
+ r = metal::length(_e72);
142
+ float _e75 = uniforms.maxRotation;
143
+ float _e76 = e;
144
+ edgeSpin = _e75 * _e76;
145
+ float _e79 = uniforms.swirl;
146
+ float _e80 = e;
147
+ float _e82 = r;
148
+ param_4 = _e82 / 0.96;
149
+ float _e84 = sat(param_4);
150
+ coreSpin = (_e79 * _e80) * metal::pow(1.0 - _e84, 1.55);
151
+ float _e89 = uniforms.direction;
152
+ float _e90 = edgeSpin;
153
+ float _e91 = coreSpin;
154
+ visibleAngle = _e89 * (_e90 + _e91);
155
+ float _e94 = visibleAngle;
156
+ metal::float2 _e96 = p_1;
157
+ param_5 = _e96;
158
+ param_6 = -(_e94);
159
+ metal::float2 _e97 = rotate2(param_5, param_6);
160
+ p_1 = _e97;
161
+ float _e99 = uniforms.peakZoom;
162
+ float _e101 = e;
163
+ sc = 1.0 + ((_e99 - 1.0) * metal::pow(_e101, 0.85));
164
+ float _e105 = sc;
165
+ metal::float2 _e106 = p_1;
166
+ p_1 = _e106 / metal::float2(_e105);
167
+ metal::float2 _e109 = p_1;
168
+ rr = metal::length(_e109);
169
+ float _e112 = uniforms.barrel;
170
+ float _e113 = e;
171
+ float _e115 = rr;
172
+ float _e117 = rr;
173
+ metal::float2 _e121 = p_1;
174
+ p_1 = _e121 * (1.0 + ((((_e112 * _e113) * _e115) * _e117) * 2.8));
175
+ float _e124 = uniforms.ratio;
176
+ float _e126 = p_1[0u];
177
+ p_1[0u] = _e126 / _e124;
178
+ metal::float2 _e129 = p_1;
179
+ metal::float2 _e131 = uniforms.center;
180
+ return metal::clamp(_e129 + _e131, metal::float2(0.001, 0.001), metal::float2(0.999, 0.999));
181
+ }
182
+
183
+ metal::float4 sampleRevolve(
184
+ thread metal::float2& uv_3,
185
+ thread float& t_2,
186
+ metal::texture2d<float, metal::access::sample> _from,
187
+ metal::sampler _sampler,
188
+ metal::texture2d<float, metal::access::sample> _to,
189
+ constant Uniforms& uniforms
190
+ ) {
191
+ metal::float2 p_2 = {};
192
+ metal::float2 param_7 = {};
193
+ float param_8 = {};
194
+ float reveal = {};
195
+ metal::float2 param_9 = {};
196
+ metal::float2 param_10 = {};
197
+ metal::float2 _e54 = uv_3;
198
+ param_7 = _e54;
199
+ float _e55 = t_2;
200
+ param_8 = _e55;
201
+ metal::float2 _e56 = warpUv(param_7, param_8, uniforms);
202
+ p_2 = _e56;
203
+ float _e58 = uniforms.switchStart;
204
+ float _e60 = uniforms.switchEnd;
205
+ float _e61 = t_2;
206
+ reveal = metal::smoothstep(_e58, _e60, _e61);
207
+ metal::float2 _e63 = p_2;
208
+ param_9 = _e63;
209
+ metal::float4 _e64 = getFromColor(param_9, _from, _sampler);
210
+ metal::float2 _e65 = p_2;
211
+ param_10 = _e65;
212
+ metal::float4 _e66 = getToColor(param_10, _sampler, _to);
213
+ float _e67 = reveal;
214
+ return metal::mix(_e64, _e66, metal::float4(_e67));
215
+ }
216
+
217
+ metal::float4 transition(
218
+ thread metal::float2& uv_4,
219
+ metal::texture2d<float, metal::access::sample> _from,
220
+ metal::sampler _sampler,
221
+ metal::texture2d<float, metal::access::sample> _to,
222
+ constant Uniforms& uniforms
223
+ ) {
224
+ metal::float2 param_11 = {};
225
+ metal::float2 param_12 = {};
226
+ float e_1 = {};
227
+ float param_13 = {};
228
+ float span = {};
229
+ metal::float4 color = {};
230
+ float total = {};
231
+ int i = {};
232
+ float x_2 = {};
233
+ float w = {};
234
+ float t_3 = {};
235
+ float param_14 = {};
236
+ metal::float2 param_15 = {};
237
+ float param_16 = {};
238
+ metal::float2 q = {};
239
+ float vignette = {};
240
+ float _e64 = uniforms.progress;
241
+ if (_e64 <= 0.0) {
242
+ metal::float2 _e66 = uv_4;
243
+ param_11 = _e66;
244
+ metal::float4 _e67 = getFromColor(param_11, _from, _sampler);
245
+ return _e67;
246
+ }
247
+ float _e69 = uniforms.progress;
248
+ if (_e69 >= 1.0) {
249
+ metal::float2 _e71 = uv_4;
250
+ param_12 = _e71;
251
+ metal::float4 _e72 = getToColor(param_12, _sampler, _to);
252
+ return _e72;
253
+ }
254
+ float _e74 = uniforms.progress;
255
+ param_13 = _e74;
256
+ float _e75 = revolveEnvelope(param_13);
257
+ e_1 = _e75;
258
+ float _e77 = uniforms.motionBlur;
259
+ float _e79 = e_1;
260
+ span = (0.06 * _e77) * _e79;
261
+ color = metal::float4(0.0, 0.0, 0.0, 0.0);
262
+ total = 0.0;
263
+ i = -8;
264
+ uint2 loop_bound = uint2(4294967295u);
265
+ bool loop_init = true;
266
+ while(true) {
267
+ if (metal::all(loop_bound == uint2(0u))) { break; }
268
+ loop_bound -= uint2(loop_bound.y == 0u, 1u);
269
+ if (!loop_init) {
270
+ int _e110 = i;
271
+ i = as_type<int>(as_type<uint>(_e110) + as_type<uint>(1));
272
+ }
273
+ loop_init = false;
274
+ int _e81 = i;
275
+ if (_e81 <= 8) {
276
+ int _e83 = i;
277
+ x_2 = static_cast<float>(_e83) / 8.0;
278
+ float _e86 = x_2;
279
+ w = 1.0 - metal::abs(_e86);
280
+ float _e89 = w;
281
+ float _e90 = w;
282
+ w = (_e89 * _e90) + 0.01;
283
+ float _e94 = uniforms.progress;
284
+ float _e95 = x_2;
285
+ float _e96 = span;
286
+ param_14 = _e94 + (_e95 * _e96);
287
+ float _e99 = sat(param_14);
288
+ t_3 = _e99;
289
+ metal::float2 _e100 = uv_4;
290
+ param_15 = _e100;
291
+ float _e101 = t_3;
292
+ param_16 = _e101;
293
+ metal::float4 _e102 = sampleRevolve(param_15, param_16, _from, _sampler, _to, uniforms);
294
+ float _e103 = w;
295
+ metal::float4 _e105 = color;
296
+ color = _e105 + (_e102 * _e103);
297
+ float _e107 = w;
298
+ float _e108 = total;
299
+ total = _e108 + _e107;
300
+ continue;
301
+ } else {
302
+ break;
303
+ }
304
+ }
305
+ float _e112 = total;
306
+ metal::float4 _e113 = color;
307
+ color = _e113 / metal::float4(_e112);
308
+ metal::float2 _e116 = uv_4;
309
+ q = _e116 - metal::float2(0.5, 0.5);
310
+ float _e119 = uniforms.ratio;
311
+ float _e121 = q[0u];
312
+ q[0u] = _e121 * _e119;
313
+ float _e125 = uniforms.shadow;
314
+ float _e126 = e_1;
315
+ metal::float2 _e128 = q;
316
+ vignette = 1.0 - ((_e125 * _e126) * metal::smoothstep(0.35, 0.95, metal::length(_e128)));
317
+ float _e133 = vignette;
318
+ metal::float4 _e134 = color;
319
+ metal::float3 _e136 = _e134.xyz * _e133;
320
+ color[0u] = _e136.x;
321
+ color[1u] = _e136.y;
322
+ color[2u] = _e136.z;
323
+ metal::float4 _e143 = color;
324
+ return _e143;
325
+ }
326
+
327
+ void main_1(
328
+ metal::texture2d<float, metal::access::sample> _from,
329
+ metal::sampler _sampler,
330
+ metal::texture2d<float, metal::access::sample> _to,
331
+ constant Uniforms& uniforms,
332
+ thread metal::float4& _fragColor,
333
+ thread metal::float2& _uv_1
334
+ ) {
335
+ metal::float2 param_17 = {};
336
+ metal::float2 _e47 = _uv_1;
337
+ param_17 = _e47;
338
+ metal::float4 _e48 = transition(param_17, _from, _sampler, _to, uniforms);
339
+ _fragColor = _e48;
340
+ return;
341
+ }
342
+
343
+ struct main_Input {
344
+ metal::float2 _uv [[user(loc0), center_perspective]];
345
+ };
346
+ struct main_Output {
347
+ metal::float4 member [[color(0)]];
348
+ };
349
+ fragment main_Output main_(
350
+ main_Input varyings [[stage_in]]
351
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
352
+ , metal::sampler _sampler [[sampler(0)]]
353
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
354
+ , constant Uniforms& uniforms [[buffer(0)]]
355
+ ) {
356
+ metal::float4 _fragColor = {};
357
+ metal::float2 _uv_1 = {};
358
+ const auto _uv = varyings._uv;
359
+ _uv_1 = _uv;
360
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
361
+ metal::float4 _e3 = _fragColor;
362
+ return main_Output { _e3 };
363
+ }
@@ -0,0 +1,209 @@
1
+ // Rolls — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Rolls.glsl
2
+ // Author: Mark Craig
3
+ // License: MIT
4
+ // Description: The outgoing image rolls away around a corner, revealing the incoming one
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 type;
17
+ int RotDown;
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 _e19 = uv[0u];
26
+ float _e21 = uv[1u];
27
+ metal::float4 _e24 = _to.sample(_sampler, metal::float2(_e19, 1.0 - _e21), metal::level(0.0));
28
+ return _e24;
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 _e19 = uv_1[0u];
37
+ float _e21 = uv_1[1u];
38
+ metal::float4 _e24 = _from.sample(_sampler, metal::float2(_e19, 1.0 - _e21), metal::level(0.0));
39
+ return _e24;
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
+ metal::float2 iResolution = {};
50
+ float theta = {};
51
+ metal::float2 uvi = {};
52
+ float c1_ = {};
53
+ float s1_ = {};
54
+ metal::float2 uv2_ = {};
55
+ metal::float2 param = {};
56
+ metal::float2 param_1 = {};
57
+ bool phi_200_ = {};
58
+ bool phi_206_ = {};
59
+ bool phi_214_ = {};
60
+ float _e27 = uniforms.ratio;
61
+ iResolution = metal::float2(_e27, 1.0);
62
+ int _e30 = uniforms.type;
63
+ if (_e30 == 0) {
64
+ int _e33 = uniforms.RotDown;
65
+ float _e38 = uniforms.progress;
66
+ theta = (((_e33 != 0) ? 3.1415927 : -3.1415927) / 2.0) * _e38;
67
+ float _e41 = uv_2[0u];
68
+ uvi[0u] = 1.0 - _e41;
69
+ float _e45 = uv_2[1u];
70
+ uvi[1u] = _e45;
71
+ } else {
72
+ int _e48 = uniforms.type;
73
+ if (_e48 == 1) {
74
+ int _e51 = uniforms.RotDown;
75
+ float _e56 = uniforms.progress;
76
+ theta = (((_e51 != 0) ? 3.1415927 : -3.1415927) / 2.0) * _e56;
77
+ metal::float2 _e58 = uv_2;
78
+ uvi = _e58;
79
+ } else {
80
+ int _e60 = uniforms.type;
81
+ if (_e60 == 2) {
82
+ int _e63 = uniforms.RotDown;
83
+ float _e68 = uniforms.progress;
84
+ theta = (((_e63 != 0) ? -3.1415927 : 3.1415927) / 2.0) * _e68;
85
+ float _e71 = uv_2[0u];
86
+ uvi[0u] = _e71;
87
+ float _e74 = uv_2[1u];
88
+ uvi[1u] = 1.0 - _e74;
89
+ } else {
90
+ int _e78 = uniforms.type;
91
+ if (_e78 == 3) {
92
+ int _e81 = uniforms.RotDown;
93
+ float _e86 = uniforms.progress;
94
+ theta = (((_e81 != 0) ? -3.1415927 : 3.1415927) / 2.0) * _e86;
95
+ metal::float2 _e88 = uv_2;
96
+ uvi = metal::float2(1.0) - _e88;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ float _e91 = theta;
102
+ c1_ = metal::cos(_e91);
103
+ float _e93 = theta;
104
+ s1_ = metal::sin(_e93);
105
+ float _e96 = uvi[0u];
106
+ float _e98 = iResolution[0u];
107
+ float _e100 = c1_;
108
+ float _e103 = uvi[1u];
109
+ float _e105 = iResolution[1u];
110
+ float _e107 = s1_;
111
+ uv2_[0u] = ((_e96 * _e98) * _e100) - ((_e103 * _e105) * _e107);
112
+ float _e112 = uvi[0u];
113
+ float _e114 = iResolution[0u];
114
+ float _e116 = s1_;
115
+ float _e119 = uvi[1u];
116
+ float _e121 = iResolution[1u];
117
+ float _e123 = c1_;
118
+ uv2_[1u] = ((_e112 * _e114) * _e116) + ((_e119 * _e121) * _e123);
119
+ float _e128 = uv2_[0u];
120
+ bool _e129 = _e128 >= 0.0;
121
+ phi_200_ = _e129;
122
+ if (_e129) {
123
+ float _e131 = uv2_[0u];
124
+ float _e133 = iResolution[0u];
125
+ phi_200_ = _e131 <= _e133;
126
+ }
127
+ bool _e136 = phi_200_;
128
+ phi_206_ = _e136;
129
+ if (_e136) {
130
+ float _e138 = uv2_[1u];
131
+ phi_206_ = _e138 >= 0.0;
132
+ }
133
+ bool _e141 = phi_206_;
134
+ phi_214_ = _e141;
135
+ if (_e141) {
136
+ float _e143 = uv2_[1u];
137
+ float _e145 = iResolution[1u];
138
+ phi_214_ = _e143 <= _e145;
139
+ }
140
+ bool _e148 = phi_214_;
141
+ if (_e148) {
142
+ metal::float2 _e149 = iResolution;
143
+ metal::float2 _e150 = uv2_;
144
+ uv2_ = _e150 / _e149;
145
+ int _e153 = uniforms.type;
146
+ if (_e153 == 0) {
147
+ float _e156 = uv2_[0u];
148
+ uv2_[0u] = 1.0 - _e156;
149
+ } else {
150
+ int _e160 = uniforms.type;
151
+ if (_e160 == 2) {
152
+ float _e163 = uv2_[1u];
153
+ uv2_[1u] = 1.0 - _e163;
154
+ } else {
155
+ int _e167 = uniforms.type;
156
+ if (_e167 == 3) {
157
+ metal::float2 _e169 = uv2_;
158
+ uv2_ = metal::float2(1.0) - _e169;
159
+ }
160
+ }
161
+ }
162
+ metal::float2 _e172 = uv2_;
163
+ param = _e172;
164
+ metal::float4 _e173 = getFromColor(param, _from, _sampler);
165
+ return _e173;
166
+ }
167
+ metal::float2 _e174 = uv_2;
168
+ param_1 = _e174;
169
+ metal::float4 _e175 = getToColor(param_1, _sampler, _to);
170
+ return _e175;
171
+ }
172
+
173
+ void main_1(
174
+ metal::texture2d<float, metal::access::sample> _from,
175
+ metal::sampler _sampler,
176
+ metal::texture2d<float, metal::access::sample> _to,
177
+ constant Uniforms& uniforms,
178
+ thread metal::float4& _fragColor,
179
+ thread metal::float2& _uv_1
180
+ ) {
181
+ metal::float2 param_2 = {};
182
+ metal::float2 _e18 = _uv_1;
183
+ param_2 = _e18;
184
+ metal::float4 _e19 = transition(param_2, _from, _sampler, _to, uniforms);
185
+ _fragColor = _e19;
186
+ return;
187
+ }
188
+
189
+ struct main_Input {
190
+ metal::float2 _uv [[user(loc0), center_perspective]];
191
+ };
192
+ struct main_Output {
193
+ metal::float4 member [[color(0)]];
194
+ };
195
+ fragment main_Output main_(
196
+ main_Input varyings [[stage_in]]
197
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
198
+ , metal::sampler _sampler [[sampler(0)]]
199
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
200
+ , constant Uniforms& uniforms [[buffer(0)]]
201
+ ) {
202
+ metal::float4 _fragColor = {};
203
+ metal::float2 _uv_1 = {};
204
+ const auto _uv = varyings._uv;
205
+ _uv_1 = _uv;
206
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
207
+ metal::float4 _e3 = _fragColor;
208
+ return main_Output { _e3 };
209
+ }