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,277 @@
1
+ // EdgeTransition — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/EdgeTransition.glsl
2
+ // Author: Woohyun Kim
3
+ // License: MIT
4
+ // Description: Both images fade through black with their edges glowing
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 type_6 {
14
+ metal::float3 inner[9];
15
+ };
16
+ struct Uniforms {
17
+ float progress;
18
+ float ratio;
19
+ float edge_thickness;
20
+ float edge_brightness;
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 _e25 = uv[0u];
29
+ float _e27 = uv[1u];
30
+ metal::float4 _e30 = _to.sample(_sampler, metal::float2(_e25, 1.0 - _e27), metal::level(0.0));
31
+ return _e30;
32
+ }
33
+
34
+ metal::float4 detectEdgeColor(
35
+ thread type_6& c,
36
+ constant Uniforms& uniforms
37
+ ) {
38
+ metal::float3 dx = {};
39
+ metal::float3 dy = {};
40
+ float delta = {};
41
+ metal::float3 _e28 = c.inner[7];
42
+ metal::float3 _e30 = c.inner[1];
43
+ metal::float3 _e35 = c.inner[2];
44
+ metal::float3 _e37 = c.inner[6];
45
+ metal::float3 _e42 = c.inner[8];
46
+ metal::float3 _e44 = c.inner[0];
47
+ dx = ((metal::abs(_e28 - _e30) * 2.0) + metal::abs(_e35 - _e37)) + metal::abs(_e42 - _e44);
48
+ metal::float3 _e49 = c.inner[3];
49
+ metal::float3 _e51 = c.inner[5];
50
+ metal::float3 _e56 = c.inner[6];
51
+ metal::float3 _e58 = c.inner[8];
52
+ metal::float3 _e63 = c.inner[0];
53
+ metal::float3 _e65 = c.inner[2];
54
+ dy = ((metal::abs(_e49 - _e51) * 2.0) + metal::abs(_e56 - _e58)) + metal::abs(_e63 - _e65);
55
+ metal::float3 _e69 = dx;
56
+ metal::float3 _e70 = dy;
57
+ delta = metal::length(((_e69 + _e70) * 0.25) * 0.5);
58
+ float _e76 = uniforms.edge_brightness;
59
+ float _e77 = delta;
60
+ metal::float3 _e81 = c.inner[4];
61
+ metal::float3 _e82 = _e81 * metal::clamp(_e76 * _e77, 0.0, 1.0);
62
+ return metal::float4(_e82.x, _e82.y, _e82.z, 1.0);
63
+ }
64
+
65
+ metal::float4 getToEdgeColor(
66
+ thread metal::float2& uv_1,
67
+ metal::sampler _sampler,
68
+ metal::texture2d<float, metal::access::sample> _to,
69
+ constant Uniforms& uniforms
70
+ ) {
71
+ int i = {};
72
+ int j = {};
73
+ metal::float4 color = {};
74
+ metal::float2 param = {};
75
+ type_6 c_1 = {};
76
+ type_6 param_1 = {};
77
+ i = 0;
78
+ uint2 loop_bound = uint2(4294967295u);
79
+ bool loop_init = true;
80
+ while(true) {
81
+ if (metal::all(loop_bound == uint2(0u))) { break; }
82
+ loop_bound -= uint2(loop_bound.y == 0u, 1u);
83
+ if (!loop_init) {
84
+ int _e56 = i;
85
+ i = as_type<int>(as_type<uint>(_e56) + as_type<uint>(1));
86
+ }
87
+ loop_init = false;
88
+ int _e30 = i;
89
+ if (_e30 < 3) {
90
+ j = 0;
91
+ uint2 loop_bound_1 = uint2(4294967295u);
92
+ bool loop_init_1 = true;
93
+ while(true) {
94
+ if (metal::all(loop_bound_1 == uint2(0u))) { break; }
95
+ loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u);
96
+ if (!loop_init_1) {
97
+ int _e54 = j;
98
+ j = as_type<int>(as_type<uint>(_e54) + as_type<uint>(1));
99
+ }
100
+ loop_init_1 = false;
101
+ int _e32 = j;
102
+ if (_e32 < 3) {
103
+ metal::float2 _e34 = uv_1;
104
+ float _e36 = uniforms.edge_thickness;
105
+ int _e37 = i;
106
+ int _e40 = j;
107
+ param = _e34 + (metal::float2(static_cast<float>(as_type<int>(as_type<uint>(_e37) - as_type<uint>(1))), static_cast<float>(as_type<int>(as_type<uint>(_e40) - as_type<uint>(1)))) * _e36);
108
+ metal::float4 _e46 = getToColor(param, _sampler, _to);
109
+ color = _e46;
110
+ int _e47 = i;
111
+ int _e49 = j;
112
+ metal::float4 _e51 = color;
113
+ c_1.inner[as_type<int>(as_type<uint>(as_type<int>(as_type<uint>(3) * as_type<uint>(_e47))) + as_type<uint>(_e49))] = _e51.xyz;
114
+ continue;
115
+ } else {
116
+ break;
117
+ }
118
+ }
119
+ continue;
120
+ } else {
121
+ break;
122
+ }
123
+ }
124
+ type_6 _e58 = c_1;
125
+ param_1 = _e58;
126
+ metal::float4 _e59 = detectEdgeColor(param_1, uniforms);
127
+ return _e59;
128
+ }
129
+
130
+ metal::float4 getFromColor(
131
+ thread metal::float2& uv_2,
132
+ metal::texture2d<float, metal::access::sample> _from,
133
+ metal::sampler _sampler
134
+ ) {
135
+ float _e25 = uv_2[0u];
136
+ float _e27 = uv_2[1u];
137
+ metal::float4 _e30 = _from.sample(_sampler, metal::float2(_e25, 1.0 - _e27), metal::level(0.0));
138
+ return _e30;
139
+ }
140
+
141
+ metal::float4 getFromEdgeColor(
142
+ thread metal::float2& uv_3,
143
+ metal::texture2d<float, metal::access::sample> _from,
144
+ metal::sampler _sampler,
145
+ constant Uniforms& uniforms
146
+ ) {
147
+ int i_1 = {};
148
+ int j_1 = {};
149
+ metal::float4 color_1 = {};
150
+ metal::float2 param_2 = {};
151
+ type_6 c_2 = {};
152
+ type_6 param_3 = {};
153
+ i_1 = 0;
154
+ uint2 loop_bound_2 = uint2(4294967295u);
155
+ bool loop_init_2 = true;
156
+ while(true) {
157
+ if (metal::all(loop_bound_2 == uint2(0u))) { break; }
158
+ loop_bound_2 -= uint2(loop_bound_2.y == 0u, 1u);
159
+ if (!loop_init_2) {
160
+ int _e56 = i_1;
161
+ i_1 = as_type<int>(as_type<uint>(_e56) + as_type<uint>(1));
162
+ }
163
+ loop_init_2 = false;
164
+ int _e30 = i_1;
165
+ if (_e30 < 3) {
166
+ j_1 = 0;
167
+ uint2 loop_bound_3 = uint2(4294967295u);
168
+ bool loop_init_3 = true;
169
+ while(true) {
170
+ if (metal::all(loop_bound_3 == uint2(0u))) { break; }
171
+ loop_bound_3 -= uint2(loop_bound_3.y == 0u, 1u);
172
+ if (!loop_init_3) {
173
+ int _e54 = j_1;
174
+ j_1 = as_type<int>(as_type<uint>(_e54) + as_type<uint>(1));
175
+ }
176
+ loop_init_3 = false;
177
+ int _e32 = j_1;
178
+ if (_e32 < 3) {
179
+ metal::float2 _e34 = uv_3;
180
+ float _e36 = uniforms.edge_thickness;
181
+ int _e37 = i_1;
182
+ int _e40 = j_1;
183
+ param_2 = _e34 + (metal::float2(static_cast<float>(as_type<int>(as_type<uint>(_e37) - as_type<uint>(1))), static_cast<float>(as_type<int>(as_type<uint>(_e40) - as_type<uint>(1)))) * _e36);
184
+ metal::float4 _e46 = getFromColor(param_2, _from, _sampler);
185
+ color_1 = _e46;
186
+ int _e47 = i_1;
187
+ int _e49 = j_1;
188
+ metal::float4 _e51 = color_1;
189
+ c_2.inner[as_type<int>(as_type<uint>(as_type<int>(as_type<uint>(3) * as_type<uint>(_e47))) + as_type<uint>(_e49))] = _e51.xyz;
190
+ continue;
191
+ } else {
192
+ break;
193
+ }
194
+ }
195
+ continue;
196
+ } else {
197
+ break;
198
+ }
199
+ }
200
+ type_6 _e58 = c_2;
201
+ param_3 = _e58;
202
+ metal::float4 _e59 = detectEdgeColor(param_3, uniforms);
203
+ return _e59;
204
+ }
205
+
206
+ metal::float4 transition(
207
+ thread metal::float2& uv_4,
208
+ metal::texture2d<float, metal::access::sample> _from,
209
+ metal::sampler _sampler,
210
+ metal::texture2d<float, metal::access::sample> _to,
211
+ constant Uniforms& uniforms
212
+ ) {
213
+ metal::float4 start = {};
214
+ metal::float2 param_4 = {};
215
+ metal::float2 param_5 = {};
216
+ metal::float4 end = {};
217
+ metal::float2 param_6 = {};
218
+ metal::float2 param_7 = {};
219
+ metal::float2 _e30 = uv_4;
220
+ param_4 = _e30;
221
+ metal::float4 _e31 = getFromColor(param_4, _from, _sampler);
222
+ metal::float2 _e32 = uv_4;
223
+ param_5 = _e32;
224
+ metal::float4 _e33 = getFromEdgeColor(param_5, _from, _sampler, uniforms);
225
+ float _e35 = uniforms.progress;
226
+ start = metal::mix(_e31, _e33, metal::float4(metal::clamp(2.0 * _e35, 0.0, 1.0)));
227
+ metal::float2 _e40 = uv_4;
228
+ param_6 = _e40;
229
+ metal::float4 _e41 = getToEdgeColor(param_6, _sampler, _to, uniforms);
230
+ metal::float2 _e42 = uv_4;
231
+ param_7 = _e42;
232
+ metal::float4 _e43 = getToColor(param_7, _sampler, _to);
233
+ float _e45 = uniforms.progress;
234
+ end = metal::mix(_e41, _e43, metal::float4(metal::clamp(2.0 * (_e45 - 0.5), 0.0, 1.0)));
235
+ metal::float4 _e51 = start;
236
+ metal::float4 _e52 = end;
237
+ float _e54 = uniforms.progress;
238
+ return metal::mix(_e51, _e52, metal::float4(_e54));
239
+ }
240
+
241
+ void main_1(
242
+ metal::texture2d<float, metal::access::sample> _from,
243
+ metal::sampler _sampler,
244
+ metal::texture2d<float, metal::access::sample> _to,
245
+ constant Uniforms& uniforms,
246
+ thread metal::float4& _fragColor,
247
+ thread metal::float2& _uv_1
248
+ ) {
249
+ metal::float2 param_8 = {};
250
+ metal::float2 _e24 = _uv_1;
251
+ param_8 = _e24;
252
+ metal::float4 _e25 = transition(param_8, _from, _sampler, _to, uniforms);
253
+ _fragColor = _e25;
254
+ return;
255
+ }
256
+
257
+ struct main_Input {
258
+ metal::float2 _uv [[user(loc0), center_perspective]];
259
+ };
260
+ struct main_Output {
261
+ metal::float4 member [[color(0)]];
262
+ };
263
+ fragment main_Output main_(
264
+ main_Input varyings [[stage_in]]
265
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
266
+ , metal::sampler _sampler [[sampler(0)]]
267
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
268
+ , constant Uniforms& uniforms [[buffer(0)]]
269
+ ) {
270
+ metal::float4 _fragColor = {};
271
+ metal::float2 _uv_1 = {};
272
+ const auto _uv = varyings._uv;
273
+ _uv_1 = _uv;
274
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
275
+ metal::float4 _e3 = _fragColor;
276
+ return main_Output { _e3 };
277
+ }
@@ -0,0 +1,425 @@
1
+ // FilmBurn — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl
2
+ // Author: Anastasia Dunbar
3
+ // License: MIT
4
+ // Description: Glowing film-burn light leaks wash over the image and reveal 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
+ float Seed;
17
+ };
18
+
19
+ float sigmoid(
20
+ thread float& x,
21
+ thread float& a
22
+ ) {
23
+ float b = {};
24
+ float _e51 = x;
25
+ float _e53 = a;
26
+ b = metal::pow(_e51 * 2.0, _e53) / 2.0;
27
+ float _e56 = x;
28
+ if (_e56 > 0.5) {
29
+ float _e58 = x;
30
+ float _e61 = a;
31
+ b = 1.0 - (metal::pow(2.0 - (_e58 * 2.0), _e61) / 2.0);
32
+ }
33
+ float _e65 = b;
34
+ return _e65;
35
+ }
36
+
37
+ metal::float4 getToColor(
38
+ thread metal::float2& uv,
39
+ metal::sampler _sampler,
40
+ metal::texture2d<float, metal::access::sample> _to
41
+ ) {
42
+ float _e50 = uv[0u];
43
+ float _e52 = uv[1u];
44
+ metal::float4 _e55 = _to.sample(_sampler, metal::float2(_e50, 1.0 - _e52), metal::level(0.0));
45
+ return _e55;
46
+ }
47
+
48
+ metal::float4 getFromColor(
49
+ thread metal::float2& uv_1,
50
+ metal::texture2d<float, metal::access::sample> _from,
51
+ metal::sampler _sampler
52
+ ) {
53
+ float _e50 = uv_1[0u];
54
+ float _e52 = uv_1[1u];
55
+ metal::float4 _e55 = _from.sample(_sampler, metal::float2(_e50, 1.0 - _e52), metal::level(0.0));
56
+ return _e55;
57
+ }
58
+
59
+ metal::float4 blendedColor(
60
+ thread metal::float2& p,
61
+ metal::texture2d<float, metal::access::sample> _from,
62
+ metal::sampler _sampler,
63
+ metal::texture2d<float, metal::access::sample> _to,
64
+ constant Uniforms& uniforms
65
+ ) {
66
+ metal::float2 param = {};
67
+ metal::float2 param_1 = {};
68
+ float param_2 = {};
69
+ float param_3 = {};
70
+ metal::float2 _e53 = p;
71
+ param = _e53;
72
+ metal::float4 _e54 = getFromColor(param, _from, _sampler);
73
+ metal::float2 _e55 = p;
74
+ param_1 = _e55;
75
+ metal::float4 _e56 = getToColor(param_1, _sampler, _to);
76
+ float _e58 = uniforms.progress;
77
+ param_2 = _e58;
78
+ param_3 = 10.0;
79
+ float _e59 = sigmoid(param_2, param_3);
80
+ return metal::mix(_e54, _e56, metal::float4(_e59));
81
+ }
82
+
83
+ float rand_u0028_vf2_u003b(
84
+ thread metal::float2& co
85
+ ) {
86
+ metal::float2 _e49 = co;
87
+ return metal::fract(metal::sin(metal::dot(_e49, metal::float2(12.9898, 78.233))) * 43758.547);
88
+ }
89
+
90
+ float apow(
91
+ thread float& a_1,
92
+ thread float& b_1
93
+ ) {
94
+ float _e50 = a_1;
95
+ float _e52 = b_1;
96
+ float _e54 = b_1;
97
+ return metal::pow(metal::abs(_e50), _e52) * metal::sign(_e54);
98
+ }
99
+
100
+ metal::float3 pow3(
101
+ thread metal::float3& a_2,
102
+ thread metal::float3& b_2
103
+ ) {
104
+ float param_4 = {};
105
+ float param_5 = {};
106
+ float param_6 = {};
107
+ float param_7 = {};
108
+ float param_8 = {};
109
+ float param_9 = {};
110
+ float _e57 = a_2[0u];
111
+ param_4 = _e57;
112
+ float _e59 = b_2[0u];
113
+ param_5 = _e59;
114
+ float _e60 = apow(param_4, param_5);
115
+ float _e62 = a_2[1u];
116
+ param_6 = _e62;
117
+ float _e64 = b_2[1u];
118
+ param_7 = _e64;
119
+ float _e65 = apow(param_6, param_7);
120
+ float _e67 = a_2[2u];
121
+ param_8 = _e67;
122
+ float _e69 = b_2[2u];
123
+ param_9 = _e69;
124
+ float _e70 = apow(param_8, param_9);
125
+ return metal::float3(_e60, _e65, _e70);
126
+ }
127
+
128
+ float smooth_mix(
129
+ thread float& a_3,
130
+ thread float& b_3,
131
+ thread float& c
132
+ ) {
133
+ float param_10 = {};
134
+ float param_11 = {};
135
+ float _e53 = a_3;
136
+ float _e54 = b_3;
137
+ float _e55 = c;
138
+ param_10 = _e55;
139
+ param_11 = 2.0;
140
+ float _e56 = sigmoid(param_10, param_11);
141
+ return metal::mix(_e53, _e54, _e56);
142
+ }
143
+
144
+ float random(
145
+ thread metal::float2& co_1,
146
+ thread float& shft,
147
+ constant Uniforms& uniforms
148
+ ) {
149
+ float param_12 = {};
150
+ float param_13 = {};
151
+ float param_14 = {};
152
+ metal::float2 _e53 = co_1;
153
+ co_1 = _e53 + metal::float2(10.0);
154
+ metal::float2 _e56 = co_1;
155
+ float _e57 = shft;
156
+ float _e62 = uniforms.Seed;
157
+ metal::float2 _e69 = co_1;
158
+ float _e70 = shft;
159
+ float _e76 = uniforms.Seed;
160
+ float _e83 = shft;
161
+ param_12 = metal::fract(metal::sin(metal::dot(_e56, metal::float2(12.9898 + (metal::floor(_e57) * 0.5), 78.233 + _e62))) * 43758.547);
162
+ param_13 = metal::fract(metal::sin(metal::dot(_e69, metal::float2(12.9898 + (metal::floor(_e70 + 1.0) * 0.5), 78.233 + _e76))) * 43758.547);
163
+ param_14 = metal::fract(_e83);
164
+ float _e85 = smooth_mix(param_12, param_13, param_14);
165
+ return _e85;
166
+ }
167
+
168
+ float smooth_random(
169
+ thread metal::float2& co_2,
170
+ thread float& shft_1,
171
+ constant Uniforms& uniforms
172
+ ) {
173
+ metal::float2 param_15 = {};
174
+ float param_16 = {};
175
+ metal::float2 param_17 = {};
176
+ float param_18 = {};
177
+ float param_19 = {};
178
+ float param_20 = {};
179
+ float param_21 = {};
180
+ metal::float2 param_22 = {};
181
+ float param_23 = {};
182
+ metal::float2 param_24 = {};
183
+ float param_25 = {};
184
+ float param_26 = {};
185
+ float param_27 = {};
186
+ float param_28 = {};
187
+ float param_29 = {};
188
+ float param_30 = {};
189
+ float param_31 = {};
190
+ metal::float2 _e67 = co_2;
191
+ param_15 = metal::floor(_e67);
192
+ float _e69 = shft_1;
193
+ param_16 = _e69;
194
+ float _e70 = random(param_15, param_16, uniforms);
195
+ metal::float2 _e71 = co_2;
196
+ param_17 = metal::floor(_e71 + metal::float2(1.0, 0.0));
197
+ float _e74 = shft_1;
198
+ param_18 = _e74;
199
+ float _e75 = random(param_17, param_18, uniforms);
200
+ float _e77 = co_2[0u];
201
+ param_19 = _e70;
202
+ param_20 = _e75;
203
+ param_21 = metal::fract(_e77);
204
+ float _e79 = smooth_mix(param_19, param_20, param_21);
205
+ metal::float2 _e80 = co_2;
206
+ param_22 = metal::floor(_e80 + metal::float2(0.0, 1.0));
207
+ float _e83 = shft_1;
208
+ param_23 = _e83;
209
+ float _e84 = random(param_22, param_23, uniforms);
210
+ metal::float2 _e85 = co_2;
211
+ param_24 = metal::floor(_e85 + metal::float2(1.0, 1.0));
212
+ float _e88 = shft_1;
213
+ param_25 = _e88;
214
+ float _e89 = random(param_24, param_25, uniforms);
215
+ float _e91 = co_2[0u];
216
+ param_26 = _e84;
217
+ param_27 = _e89;
218
+ param_28 = metal::fract(_e91);
219
+ float _e93 = smooth_mix(param_26, param_27, param_28);
220
+ float _e95 = co_2[1u];
221
+ param_29 = _e79;
222
+ param_30 = _e93;
223
+ param_31 = metal::fract(_e95);
224
+ float _e97 = smooth_mix(param_29, param_30, param_31);
225
+ return _e97;
226
+ }
227
+
228
+ float rand_u0028_f1_u003b(
229
+ thread float& co_3,
230
+ constant Uniforms& uniforms
231
+ ) {
232
+ float _e49 = co_3;
233
+ float _e52 = uniforms.Seed;
234
+ return metal::fract(metal::sin((_e49 * 24.9898) + _e52) * 43758.547);
235
+ }
236
+
237
+ metal::float4 transition(
238
+ thread metal::float2& p_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
+ ) {
244
+ metal::float3 f = {};
245
+ float i = {};
246
+ float param_32 = {};
247
+ float param_33 = {};
248
+ float param_34 = {};
249
+ float param_35 = {};
250
+ metal::float2 param_36 = {};
251
+ float param_37 = {};
252
+ metal::float2 param_38 = {};
253
+ float param_39 = {};
254
+ float param_40 = {};
255
+ metal::float3 param_41 = {};
256
+ metal::float3 param_42 = {};
257
+ metal::float2 param_43 = {};
258
+ float param_44 = {};
259
+ metal::float4 blurred_image = {};
260
+ float bluramount = {};
261
+ float i_1 = {};
262
+ metal::float2 q = {};
263
+ metal::float2 param_45 = {};
264
+ metal::float2 uv2_ = {};
265
+ metal::float2 param_46 = {};
266
+ f = metal::float3(0.0, 0.0, 0.0);
267
+ i = 0.0;
268
+ uint2 loop_bound = uint2(4294967295u);
269
+ bool loop_init = true;
270
+ while(true) {
271
+ if (metal::all(loop_bound == uint2(0u))) { break; }
272
+ loop_bound -= uint2(loop_bound.y == 0u, 1u);
273
+ if (!loop_init) {
274
+ float _e135 = i;
275
+ i = _e135 + 1.0;
276
+ }
277
+ loop_init = false;
278
+ float _e71 = i;
279
+ if (_e71 < 13.0) {
280
+ float _e74 = p_1[0u];
281
+ float _e75 = i;
282
+ param_32 = _e75;
283
+ float _e76 = rand_u0028_f1_u003b(param_32, uniforms);
284
+ float _e80 = uniforms.progress;
285
+ float _e83 = i;
286
+ param_33 = _e83 + 1.43;
287
+ float _e85 = rand_u0028_f1_u003b(param_33, uniforms);
288
+ float _e89 = p_1[1u];
289
+ float _e90 = i;
290
+ param_34 = _e90 + 4.4;
291
+ float _e92 = rand_u0028_f1_u003b(param_34, uniforms);
292
+ float _e96 = uniforms.progress;
293
+ float _e99 = i;
294
+ param_35 = _e99 + 2.4;
295
+ float _e101 = rand_u0028_f1_u003b(param_35, uniforms);
296
+ metal::float3 _e105 = f;
297
+ f = _e105 + metal::float3(metal::sin((((_e74 * _e76) * 6.0) + (_e80 * 8.0)) + _e85) * metal::sin((((_e89 * _e92) * 6.0) + (_e96 * 6.0)) + _e101));
298
+ metal::float2 _e108 = p_1;
299
+ float _e110 = uniforms.progress;
300
+ float _e113 = i;
301
+ param_36 = metal::float2(_e110 * 1.3);
302
+ param_37 = _e113 + 1.0;
303
+ float _e115 = smooth_random(param_36, param_37, uniforms);
304
+ float _e117 = uniforms.progress;
305
+ float _e120 = i;
306
+ param_38 = metal::float2(_e117 * 0.5);
307
+ param_39 = _e120 + 6.25;
308
+ float _e122 = smooth_random(param_38, param_39, uniforms);
309
+ float _e126 = i;
310
+ param_40 = _e126;
311
+ float _e127 = rand_u0028_f1_u003b(param_40, uniforms);
312
+ metal::float3 _e132 = f;
313
+ f = _e132 + metal::float3(1.0 - metal::clamp(metal::length(_e108 - metal::float2(_e115, _e122)) * metal::mix(20.0, 70.0, _e127), 0.0, 1.0));
314
+ continue;
315
+ } else {
316
+ break;
317
+ }
318
+ }
319
+ metal::float3 _e137 = f;
320
+ f = _e137 + metal::float3(4.0);
321
+ metal::float3 _e140 = f;
322
+ f = _e140 / metal::float3(11.0);
323
+ metal::float3 _e143 = f;
324
+ float _e146 = uniforms.progress;
325
+ param_41 = _e143 * metal::float3(1.0, 0.7, 0.6);
326
+ param_42 = metal::float3(1.0, 2.0 - metal::sin(_e146 * 3.1415927), 1.3);
327
+ metal::float3 _e151 = pow3(param_41, param_42);
328
+ f = _e151;
329
+ float _e153 = uniforms.progress;
330
+ metal::float3 _e156 = f;
331
+ f = _e156 * metal::sin(_e153 * 3.1415927);
332
+ metal::float2 _e158 = p_1;
333
+ p_1 = _e158 - metal::float2(0.5);
334
+ float _e162 = uniforms.progress;
335
+ param_43 = metal::float2(_e162 * 5.0);
336
+ param_44 = 6.3;
337
+ float _e165 = smooth_random(param_43, param_44, uniforms);
338
+ float _e167 = uniforms.progress;
339
+ metal::float2 _e173 = p_1;
340
+ p_1 = _e173 * (1.0 + ((_e165 * metal::sin(_e167 * 3.1415927)) * 0.05));
341
+ metal::float2 _e175 = p_1;
342
+ p_1 = _e175 + metal::float2(0.5);
343
+ blurred_image = metal::float4(0.0, 0.0, 0.0, 0.0);
344
+ float _e179 = uniforms.progress;
345
+ bluramount = metal::sin(_e179 * 3.1415927) * 0.03;
346
+ i_1 = 0.0;
347
+ uint2 loop_bound_1 = uint2(4294967295u);
348
+ bool loop_init_1 = true;
349
+ while(true) {
350
+ if (metal::all(loop_bound_1 == uint2(0u))) { break; }
351
+ loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u);
352
+ if (!loop_init_1) {
353
+ float _e216 = i_1;
354
+ i_1 = _e216 + 1.0;
355
+ }
356
+ loop_init_1 = false;
357
+ float _e183 = i_1;
358
+ if (_e183 < 50.0) {
359
+ float _e185 = i_1;
360
+ float _e190 = i_1;
361
+ float _e196 = i_1;
362
+ float _e198 = p_1[0u];
363
+ float _e200 = p_1[1u];
364
+ param_45 = metal::float2(_e196, _e198 + _e200);
365
+ float _e203 = rand_u0028_vf2_u003b(param_45);
366
+ float _e204 = bluramount;
367
+ q = metal::float2(metal::cos(((((_e185 / 50.0) * 360.0)) * 57.295779513082322865)), metal::sin(((((_e190 / 50.0) * 360.0)) * 57.295779513082322865))) * (_e203 + _e204);
368
+ metal::float2 _e207 = p_1;
369
+ metal::float2 _e208 = q;
370
+ float _e209 = bluramount;
371
+ uv2_ = _e207 + (_e208 * _e209);
372
+ metal::float2 _e212 = uv2_;
373
+ param_46 = _e212;
374
+ metal::float4 _e213 = blendedColor(param_46, _from, _sampler, _to, uniforms);
375
+ metal::float4 _e214 = blurred_image;
376
+ blurred_image = _e214 + _e213;
377
+ continue;
378
+ } else {
379
+ break;
380
+ }
381
+ }
382
+ metal::float4 _e218 = blurred_image;
383
+ blurred_image = _e218 / metal::float4(50.0);
384
+ metal::float4 _e221 = blurred_image;
385
+ metal::float3 _e222 = f;
386
+ return _e221 + metal::float4(_e222.x, _e222.y, _e222.z, 0.0);
387
+ }
388
+
389
+ void main_1(
390
+ metal::texture2d<float, metal::access::sample> _from,
391
+ metal::sampler _sampler,
392
+ metal::texture2d<float, metal::access::sample> _to,
393
+ constant Uniforms& uniforms,
394
+ thread metal::float4& _fragColor,
395
+ thread metal::float2& _uv_1
396
+ ) {
397
+ metal::float2 param_47 = {};
398
+ metal::float2 _e49 = _uv_1;
399
+ param_47 = _e49;
400
+ metal::float4 _e50 = transition(param_47, _from, _sampler, _to, uniforms);
401
+ _fragColor = _e50;
402
+ return;
403
+ }
404
+
405
+ struct main_Input {
406
+ metal::float2 _uv [[user(loc0), center_perspective]];
407
+ };
408
+ struct main_Output {
409
+ metal::float4 member [[color(0)]];
410
+ };
411
+ fragment main_Output main_(
412
+ main_Input varyings [[stage_in]]
413
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
414
+ , metal::sampler _sampler [[sampler(0)]]
415
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
416
+ , constant Uniforms& uniforms [[buffer(0)]]
417
+ ) {
418
+ metal::float4 _fragColor = {};
419
+ metal::float2 _uv_1 = {};
420
+ const auto _uv = varyings._uv;
421
+ _uv_1 = _uv;
422
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
423
+ metal::float4 _e3 = _fragColor;
424
+ return main_Output { _e3 };
425
+ }