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
package/llms.txt ADDED
@@ -0,0 +1,153 @@
1
+ # gl-transitions
2
+
3
+ > The open collection of GL Transitions: 125 GLSL shaders that turn one image into another as `progress` goes from 0 to 1. Each one is also published as an SkSL runtime effect for Skia. This document describes gl-transitions@1.76.0 (npm).
4
+
5
+ Every transition is GLSL (WebGL 1 / GLSL ES 1.00) that implements `vec4 transition(vec2 uv)`. The host provides:
6
+
7
+ - `float progress`: 0.0 shows only the outgoing image, 1.0 only the incoming one
8
+ - `float ratio`: output width / height
9
+ - `vec4 getFromColor(vec2 uv)` and `vec4 getToColor(vec2 uv)`: sample the outgoing and incoming images (uv in [0, 1], origin at the bottom left)
10
+ - one uniform per parameter, set to its default unless the user picks another value
11
+ - one `sampler2D` per extra texture, for the few transitions that list `textures`
12
+
13
+ ## Docs
14
+
15
+ - [Full catalog](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/llms-full.txt): every transition with its description, tags, parameters and source links
16
+ - [Agent Skill](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/skills/gl-transitions/SKILL.md): how to pick a transition and wire it into WebGL, Skia, FFmpeg or editly
17
+ - [Catalog JSON](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/gl-transitions.json): the same data as an array of objects (name, glsl, params, tags, ...), typed in index.d.ts
18
+ - [Package README](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/README.md): files of the npm package and the SkSL contract
19
+ - [Specification](https://github.com/gl-transitions/gl-transitions#gl-transition-specification-v1): GL Transition Specification v1
20
+
21
+ ## Transitions
22
+
23
+ - [AdvancedMosaic](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/AdvancedMosaic.glsl): Both images break into large blocks that blend, then sharpen into the incoming image (pixelate, mosaic, blend)
24
+ - [BlockDissolve](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/BlockDissolve.glsl): The incoming image appears in small random blocks (dissolve, blocks, noise)
25
+ - [BookFlip](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/BookFlip.glsl): The outgoing image turns like a book page from right to left, revealing the incoming one (page, flip, 3d)
26
+ - [Bounce](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Bounce.glsl): The outgoing image drops out of the frame with a few bounces, revealing the incoming one (bounce, slide, vertical, shadow)
27
+ - [BowTieHorizontal](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/BowTieHorizontal.glsl): Two triangles grow from the left and right edges into a bow tie that reveals the incoming image (wipe, shape, horizontal)
28
+ - [BowTieVertical](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/BowTieVertical.glsl): Two triangles grow from the top and bottom edges into a bow tie that reveals the incoming image (wipe, shape, vertical)
29
+ - [BowTieWithParameter](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/BowTieWithParameter.glsl): A bow-tie wipe with an adjustable shape that can run in reverse (wipe, shape)
30
+ - [Box](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Box.glsl): The outgoing image shrinks into a box, toward the center or a corner, revealing the incoming one (box, zoom, shape)
31
+ - [ButterflyWaveScrawler](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ButterflyWaveScrawler.glsl): Wavy, color-separated ripples scramble the outgoing image into the incoming one (wave, distort, chromatic)
32
+ - [CircleCrop](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/CircleCrop.glsl): The outgoing image closes into a circle over a background color, then the incoming one opens from it (circle, iris, shape)
33
+ - [ColourDistance](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ColourDistance.glsl): Pixels switch to the incoming image in order of how close their colors are (blend, color)
34
+ - [CrazyParametricFun](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/CrazyParametricFun.glsl): The outgoing image is pulled along a parametric curve into a psychedelic swirl (distort, psychedelic)
35
+ - [CrossZoom](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/CrossZoom.glsl): A crossfade through a strong zoom blur (zoom, blur, blend)
36
+ - [DefocusBlur](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/DefocusBlur.glsl): A crossfade through an out-of-focus blur (blur, blend)
37
+ - [Directional](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Directional.glsl): The incoming image pushes the outgoing one out in a given direction (slide, push, directional)
38
+ - [DirectionalScaled](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/DirectionalScaled.glsl): Like Directional, with both images scaled down while they slide (slide, push, zoom, directional)
39
+ - [DoomScreenTransition](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/DoomScreenTransition.glsl): The outgoing image melts down in uneven columns, like the Doom screen wipe (melt, columns, retro)
40
+ - [Dreamy](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Dreamy.glsl): A crossfade with a gentle wavy distortion (wave, blend)
41
+ - [DreamyZoom](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/DreamyZoom.glsl): Zooms and rotates into a bright flash, then out to the incoming image (zoom, rotate, flash)
42
+ - [Drop_Zone_Flicker](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Drop_Zone_Flicker.glsl): A flickering glitch with RGB offset, ghosting and scanlines that flashes back to the outgoing image (glitch, flicker, chromatic, scanlines)
43
+ - [EdgeTransition](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/EdgeTransition.glsl): Both images fade through black with their edges glowing (edges, fade)
44
+ - [FilmBurn](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/FilmBurn.glsl): Glowing film-burn light leaks wash over the image and reveal the incoming one (burn, film, light-leak)
45
+ - [Fold](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Fold.glsl): The incoming image unfolds from the left while the outgoing one folds away to the right (fold, slide, horizontal)
46
+ - [GlitchDisplace](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/GlitchDisplace.glsl): Blocks of the image are displaced in a glitch that flashes into the incoming image (glitch, displace)
47
+ - [GlitchMemories](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/GlitchMemories.glsl): A crossfade with glitchy, color-shifted blocks (glitch, chromatic, blend)
48
+ - [GridFlip](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/GridFlip.glsl): The image splits into a grid of tiles that flip one by one to the incoming image (grid, tiles, flip)
49
+ - [HSVfade](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/HSVfade.glsl): A crossfade through the HSV color space that cycles through hues (fade, color, hue)
50
+ - [HorizontalClose](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/HorizontalClose.glsl): The incoming image closes in from the top and bottom edges toward the middle (wipe, split)
51
+ - [HorizontalOpen](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/HorizontalOpen.glsl): The incoming image opens from a line in the middle toward the top and bottom edges (wipe, split)
52
+ - [InvertedPageCurl](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/InvertedPageCurl.glsl): The outgoing image curls away like a page, revealing the incoming one (page, curl, 3d)
53
+ - [LeftRight](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/LeftRight.glsl): The outgoing image shrinks away to the left while the incoming one slides in from the right (slide, zoom, horizontal)
54
+ - [LinearBlur](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/LinearBlur.glsl): A crossfade through a blur (blur, blend)
55
+ - [Mosaic](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Mosaic.glsl): The view pans across a mosaic of rotated tiles from both images and settles on the incoming one (mosaic, tiles, zoom)
56
+ - [Overexposure](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Overexposure.glsl): A crossfade through a washed-out, overexposed white (flash, light, fade)
57
+ - [PolkaDotsCurtain](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/PolkaDotsCurtain.glsl): The incoming image appears through growing polka dots (dots, pattern)
58
+ - [PuzzleRight](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/PuzzleRight.glsl): The image splits into a grid of tiles that flip one by one to the incoming image (grid, tiles, flip)
59
+ - [Radial](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Radial.glsl): A radial wipe that sweeps around the center like a clock hand (wipe, radial, clock)
60
+ - [Rectangle](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Rectangle.glsl): A rectangle grows from the center to cover the outgoing image, then shrinks to reveal the incoming one (box, shape, iris)
61
+ - [RectangleCrop](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/RectangleCrop.glsl): The outgoing image shrinks into a small rectangle over a background color, then the incoming one grows from it (box, iris, zoom)
62
+ - [Revolve_Left](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Revolve_Left.glsl): The outgoing image swirls and zooms with motion blur into the incoming one (swirl, zoom, rotate, blur)
63
+ - [Rolls](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Rolls.glsl): The outgoing image rolls away around a corner, revealing the incoming one (rotate, roll)
64
+ - [RotateScaleVanish](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/RotateScaleVanish.glsl): The outgoing image spins and shrinks away over the incoming one (rotate, zoom, spin)
65
+ - [SimpleFlip](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/SimpleFlip.glsl): The outgoing image flips around the vertical axis into the incoming one (flip, horizontal)
66
+ - [SimpleZoom](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/SimpleZoom.glsl): Zooms into the outgoing image, then fades to the incoming one (zoom, fade)
67
+ - [SimpleZoomOut](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/SimpleZoomOut.glsl): The incoming image zooms out into place while fading in (zoom, fade)
68
+ - [Slides](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Slides.glsl): The outgoing image slides out, or the incoming one slides in, toward an edge, a corner or the center (slide, directional)
69
+ - [StarWipe](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/StarWipe.glsl): A growing star reveals the incoming image (wipe, shape, star)
70
+ - [StaticFade](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/StaticFade.glsl): Cuts to the incoming image halfway, hidden behind a burst of TV static (static, noise, retro)
71
+ - [StereoViewer](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/StereoViewer.glsl): Both images shrink into rounded cards that swap, like a stereo viewer toy (cards, zoom, retro)
72
+ - [StripDatamoshGlitch](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/StripDatamoshGlitch.glsl): A datamosh glitch: torn strips, chroma shifts and scan noise drag the outgoing image into the incoming one (glitch, datamosh, chromatic)
73
+ - [Swirl](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/Swirl.glsl): Both images swirl around the center while crossfading (swirl, rotate, blend)
74
+ - [TVStatic](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/TVStatic.glsl): Cuts to full-screen TV static, then to the incoming image (static, noise, retro)
75
+ - [TilesWave](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/TilesWave.glsl): The incoming image is revealed tile by tile in a diagonal wave (tiles, wave, wipe)
76
+ - [TopBottom](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/TopBottom.glsl): The outgoing image shrinks away upward while the incoming one slides in from the bottom (slide, zoom, vertical)
77
+ - [VerticalClose](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/VerticalClose.glsl): The incoming image closes in from the left and right edges toward the middle (wipe, split)
78
+ - [VerticalOpen](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/VerticalOpen.glsl): The incoming image opens from a line in the middle toward the left and right edges (wipe, split)
79
+ - [WaterDrop](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/WaterDrop.glsl): Ripples spread from the center like a drop falling into water, crossfading to the incoming image (ripple, water, blend)
80
+ - [ZoomInCircles](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ZoomInCircles.glsl): Concentric rings of the outgoing image zoom at different speeds before revealing the incoming one (zoom, circle)
81
+ - [ZoomLeftWipe](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ZoomLeftWipe.glsl): Zooms into the outgoing image, then the incoming one wipes in from right to left (zoom, wipe, horizontal)
82
+ - [ZoomRigthWipe](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ZoomRigthWipe.glsl): Zooms into the outgoing image, then the incoming one wipes in from left to right (zoom, wipe, horizontal)
83
+ - [angular](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/angular.glsl): A wipe that sweeps around the center from a starting angle (wipe, radial, clock)
84
+ - [burn](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/burn.glsl): A crossfade that brightens toward a color in the middle (fade, color, flash)
85
+ - [burn0](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/burn0.glsl): The outgoing image burns away in noisy, glowing patches (burn, fire, noise)
86
+ - [cannabisleaf](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/cannabisleaf.glsl): A cannabis-leaf shape grows from the center to reveal the incoming image (shape, wipe)
87
+ - [chessboard](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/chessboard.glsl): A chessboard pattern of squares reveals the incoming image (grid, squares, pattern)
88
+ - [circle](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/circle.glsl): The outgoing image closes into a circle over a background color, then the incoming one opens from it (circle, iris, shape)
89
+ - [circleopen](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/circleopen.glsl): A soft-edged circle opens from the center to reveal the incoming image (circle, iris, wipe)
90
+ - [colorphase](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/colorphase.glsl): A crossfade in which each color channel changes at a different time (fade, color)
91
+ - [coord-from-in](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/coord-from-in.glsl): A crossfade in which the colors of one image displace the other (displace, distort, blend)
92
+ - [crosshatch](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/crosshatch.glsl): The incoming image appears through a crosshatch of lines spreading from the center (pattern, lines, noise)
93
+ - [crosswarp](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/crosswarp.glsl): The outgoing image zooms in while the incoming one zooms out into place, sweeping from right to left (warp, zoom, horizontal)
94
+ - [cube](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/cube.glsl): The two images are faces of a rotating 3D cube, with a floor reflection (3d, cube, rotate, reflection)
95
+ - [directional-easing](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/directional-easing.glsl): Like Directional, with an eased movement (slide, push, directional)
96
+ - [directionalwarp](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/directionalwarp.glsl): A diagonal wipe with a warped, smeared edge (wipe, warp, directional)
97
+ - [directionalwipe](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/directionalwipe.glsl): A soft-edged diagonal wipe (wipe, directional)
98
+ - [displacement](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/displacement.glsl): A crossfade in which a displacement map (an extra grayscale texture) warps both images (displace, distort, blend)
99
+ - [dissolve](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/dissolve.glsl): The incoming image spreads over the outgoing one with a hot, glowing edge (dissolve, burn, glow)
100
+ - [doorway](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/doorway.glsl): The outgoing image opens like double doors as the incoming one comes forward, with a floor reflection (doors, 3d, reflection)
101
+ - [fade](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/fade.glsl): A linear crossfade between the two images (fade, blend)
102
+ - [fadecolor](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/fadecolor.glsl): A fade through a solid color, black by default (fade, color)
103
+ - [fadegrayscale](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/fadegrayscale.glsl): A crossfade through grayscale (fade, grayscale, color)
104
+ - [flyeye](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/flyeye.glsl): The image breaks into a fly's-eye grid of lenses with color separation (lens, distort, chromatic)
105
+ - [fragment](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/fragment.glsl): The outgoing image shatters into fragments that fly away (shatter, fragments)
106
+ - [heart](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/heart.glsl): A heart shape grows from the center to reveal the incoming image (shape, wipe, heart)
107
+ - [hexagonalize](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/hexagonalize.glsl): Both images turn into hexagons, crossfade, then sharpen again (pixelate, hexagon, blend)
108
+ - [kaleidoscope](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/kaleidoscope.glsl): A crossfade through a spinning kaleidoscope (kaleidoscope, distort, blend)
109
+ - [luma](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/luma.glsl): A wipe that follows the brightness of a grayscale mask (the luma texture) (wipe, luma, mask)
110
+ - [luminance_melt](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/luminance_melt.glsl): The outgoing image melts away in noisy vertical streaks, depending on its brightness (melt, noise, luma)
111
+ - [morph](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/morph.glsl): A crossfade in which each image is displaced by the other's colors, like a morph (morph, distort, blend)
112
+ - [mosaic_transition](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/mosaic_transition.glsl): Both images break into mosaic blocks that blend, then sharpen into the incoming image (mosaic, pixelate, blend)
113
+ - [multiply_blend](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/multiply_blend.glsl): A crossfade through the multiplied blend of both images (blend, fade)
114
+ - [old_tv_lost_signal](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/old_tv_lost_signal.glsl): A crossfade with drifting tracking lines and tearing, like a TV losing its signal (retro, glitch, scanlines)
115
+ - [parametric_glitch](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/parametric_glitch.glsl): A crossfade with glitchy horizontal bands and color shifts (glitch, blend)
116
+ - [perlin](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/perlin.glsl): The incoming image appears through blobs of Perlin noise (noise, dissolve)
117
+ - [pinwheel](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/pinwheel.glsl): A spinning pinwheel reveals the incoming image (pinwheel, radial, rotate)
118
+ - [pixelize](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/pixelize.glsl): Both images pixelate, crossfade, then sharpen again (pixelate, blend)
119
+ - [polar_function](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/polar_function.glsl): A flower shape with several petals grows to reveal the incoming image (shape, wipe, polar)
120
+ - [powerKaleido](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/powerKaleido.glsl): The image folds into an animated kaleidoscope before revealing the incoming one (kaleidoscope, distort)
121
+ - [randomNoisex](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/randomNoisex.glsl): The incoming image appears pixel by pixel in random noise (dissolve, noise)
122
+ - [randomsquares](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/randomsquares.glsl): The incoming image appears in random squares (squares, grid, dissolve)
123
+ - [ripple](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/ripple.glsl): Ripples spread from the center while crossfading (ripple, wave, blend)
124
+ - [rotateTransition](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/rotateTransition.glsl): The images spin around the center while crossfading (rotate, spin, blend)
125
+ - [rotate_scale_fade](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/rotate_scale_fade.glsl): The outgoing image spins and zooms while fading to the incoming one, over a background color (rotate, zoom, fade)
126
+ - [scale-in](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/scale-in.glsl): The incoming image scales in from the center while fading in (zoom, fade)
127
+ - [splitSlideInHorizontal](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideInHorizontal.glsl): The incoming image slides in as two halves moving horizontally in opposite directions (slide, split, horizontal)
128
+ - [splitSlideInOutHorizontal](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideInOutHorizontal.glsl): The halves of both images slide horizontally in opposite directions, out and in at once (slide, split, horizontal)
129
+ - [splitSlideInOutVertical](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideInOutVertical.glsl): The halves of both images slide vertically in opposite directions, out and in at once (slide, split, vertical)
130
+ - [splitSlideInVertical](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideInVertical.glsl): The incoming image slides in as two halves moving vertically in opposite directions (slide, split, vertical)
131
+ - [splitSlideOutHorizontal](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideOutHorizontal.glsl): The outgoing image slides out as two halves moving horizontally in opposite directions (slide, split, horizontal)
132
+ - [splitSlideOutVertical](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/splitSlideOutVertical.glsl): The outgoing image slides out as two halves moving vertically in opposite directions (slide, split, vertical)
133
+ - [squareswire](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/squareswire.glsl): Squares grow along a diagonal sweep to reveal the incoming image (squares, grid, wipe, directional)
134
+ - [squeeze](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/squeeze.glsl): The outgoing image is squeezed into a line with color separation, revealing the incoming one (squeeze, chromatic, vertical)
135
+ - [static_wipe](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/static_wipe.glsl): A wipe from top to bottom with a band of TV static at its edge (wipe, static, noise, vertical)
136
+ - [swap](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/swap.glsl): The two images swap places in 3D, with a floor reflection (3d, swap, reflection)
137
+ - [tangentMotionBlur](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/tangentMotionBlur.glsl): The outgoing image is flung away along a curve with motion blur (motion-blur, rotate, slide)
138
+ - [undulatingBurnOut](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/undulatingBurnOut.glsl): A circle with a wavy edge burns out from the center to reveal the incoming image (circle, burn, wipe)
139
+ - [wind](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/wind.glsl): A ragged left-to-right wipe, as if the image was blown away by the wind (wipe, horizontal, noise)
140
+ - [windowblinds](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/windowblinds.glsl): A crossfade through horizontal window blinds (blinds, stripes, blend)
141
+ - [windowslice](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/windowslice.glsl): The incoming image appears through vertical slices that widen (slices, stripes, wipe)
142
+ - [wipeDown](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/wipeDown.glsl): A hard-edged wipe from top to bottom (wipe, vertical)
143
+ - [wipeLeft](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/wipeLeft.glsl): A hard-edged wipe from right to left (wipe, horizontal)
144
+ - [wipeRight](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/wipeRight.glsl): A hard-edged wipe from left to right (wipe, horizontal)
145
+ - [wipeUp](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/wipeUp.glsl): A hard-edged wipe from bottom to top (wipe, vertical)
146
+ - [x_axis_translation](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/x_axis_translation.glsl): The outgoing image slides to the right, uncovering a crossfade to the incoming one (slide, horizontal, blend)
147
+ - [zoomInOut](https://cdn.jsdelivr.net/npm/gl-transitions@1.76.0/transitions/zoomInOut.glsl): Zooms into the outgoing image until it blurs into a flat color, then out to the incoming one (zoom, blur)
148
+
149
+ ## Optional
150
+
151
+ - [Gallery](https://gl-transitions.com/gallery): animated previews of every transition
152
+ - [Editor](https://gl-transitions.com/editor): write and test a transition in the browser
153
+ - [Contributing](https://github.com/gl-transitions/gl-transitions/blob/master/CONTRIBUTING.md): how to add a transition
@@ -0,0 +1,136 @@
1
+ // AdvancedMosaic — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/AdvancedMosaic.glsl
2
+ // Author: Sergey Kosarevsky
3
+ // License: MIT
4
+ // Description: Both images break into large blocks that blend, then sharpen into 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 pixelSize;
17
+ };
18
+
19
+ metal::float4 getToColor(
20
+ thread metal::float2& uv,
21
+ metal::sampler _sampler,
22
+ metal::texture2d<float, metal::access::sample> _to
23
+ ) {
24
+ float _e16 = uv[0u];
25
+ float _e18 = uv[1u];
26
+ metal::float4 _e21 = _to.sample(_sampler, metal::float2(_e16, 1.0 - _e18), metal::level(0.0));
27
+ return _e21;
28
+ }
29
+
30
+ metal::float4 getFromColor(
31
+ thread metal::float2& uv_1,
32
+ metal::texture2d<float, metal::access::sample> _from,
33
+ metal::sampler _sampler
34
+ ) {
35
+ float _e16 = uv_1[0u];
36
+ float _e18 = uv_1[1u];
37
+ metal::float4 _e21 = _from.sample(_sampler, metal::float2(_e16, 1.0 - _e18), metal::level(0.0));
38
+ return _e21;
39
+ }
40
+
41
+ metal::float4 transition(
42
+ thread metal::float2& uv_2,
43
+ metal::texture2d<float, metal::access::sample> _from,
44
+ metal::sampler _sampler,
45
+ metal::texture2d<float, metal::access::sample> _to,
46
+ constant Uniforms& uniforms
47
+ ) {
48
+ float T = {};
49
+ float half_ = {};
50
+ float size = {};
51
+ float local = {};
52
+ float D = {};
53
+ metal::float2 UV = {};
54
+ metal::float2 coord = {};
55
+ metal::float4 C0_ = {};
56
+ metal::float2 param = {};
57
+ metal::float4 C1_ = {};
58
+ metal::float2 param_1 = {};
59
+ float _e27 = uniforms.progress;
60
+ T = _e27;
61
+ half_ = 0.5;
62
+ float _e28 = T;
63
+ float _e29 = half_;
64
+ if (_e28 < _e29) {
65
+ float _e32 = uniforms.pixelSize;
66
+ float _e33 = T;
67
+ float _e34 = half_;
68
+ local = metal::mix(1.0, _e32, _e33 / _e34);
69
+ } else {
70
+ float _e38 = uniforms.pixelSize;
71
+ float _e39 = T;
72
+ float _e40 = half_;
73
+ float _e42 = half_;
74
+ local = metal::mix(_e38, 1.0, (_e39 - _e40) / _e42);
75
+ }
76
+ float _e45 = local;
77
+ size = _e45;
78
+ float _e46 = size;
79
+ D = _e46 * 0.005;
80
+ metal::float2 _e48 = uv_2;
81
+ float _e51 = D;
82
+ UV = (_e48 - metal::float2(0.5)) / metal::float2(_e51);
83
+ float _e54 = D;
84
+ metal::float2 _e55 = UV;
85
+ coord = metal::clamp((metal::ceil(_e55 - metal::float2(0.5)) * _e54) + metal::float2(0.5), metal::float2(0.0), metal::float2(1.0));
86
+ metal::float2 _e65 = coord;
87
+ param = _e65;
88
+ metal::float4 _e66 = getFromColor(param, _from, _sampler);
89
+ C0_ = _e66;
90
+ metal::float2 _e67 = coord;
91
+ param_1 = _e67;
92
+ metal::float4 _e68 = getToColor(param_1, _sampler, _to);
93
+ C1_ = _e68;
94
+ metal::float4 _e69 = C0_;
95
+ metal::float4 _e70 = C1_;
96
+ float _e71 = T;
97
+ return metal::mix(_e69, _e70, metal::float4(_e71));
98
+ }
99
+
100
+ void main_1(
101
+ metal::texture2d<float, metal::access::sample> _from,
102
+ metal::sampler _sampler,
103
+ metal::texture2d<float, metal::access::sample> _to,
104
+ constant Uniforms& uniforms,
105
+ thread metal::float4& _fragColor,
106
+ thread metal::float2& _uv_1
107
+ ) {
108
+ metal::float2 param_2 = {};
109
+ metal::float2 _e15 = _uv_1;
110
+ param_2 = _e15;
111
+ metal::float4 _e16 = transition(param_2, _from, _sampler, _to, uniforms);
112
+ _fragColor = _e16;
113
+ return;
114
+ }
115
+
116
+ struct main_Input {
117
+ metal::float2 _uv [[user(loc0), center_perspective]];
118
+ };
119
+ struct main_Output {
120
+ metal::float4 member [[color(0)]];
121
+ };
122
+ fragment main_Output main_(
123
+ main_Input varyings [[stage_in]]
124
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
125
+ , metal::sampler _sampler [[sampler(0)]]
126
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
127
+ , constant Uniforms& uniforms [[buffer(0)]]
128
+ ) {
129
+ metal::float4 _fragColor = {};
130
+ metal::float2 _uv_1 = {};
131
+ const auto _uv = varyings._uv;
132
+ _uv_1 = _uv;
133
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
134
+ metal::float4 _e3 = _fragColor;
135
+ return main_Output { _e3 };
136
+ }
@@ -0,0 +1,108 @@
1
+ // BlockDissolve — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BlockDissolve.glsl
2
+ // Author: nwoeanhinnogaehr
3
+ // License: MIT
4
+ // Description: The incoming image appears in small random blocks
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 blocksize;
17
+ };
18
+
19
+ float rand(
20
+ thread metal::float2& co
21
+ ) {
22
+ metal::float2 _e17 = co;
23
+ return metal::fract(metal::sin(metal::dot(_e17, metal::float2(12.9898, 78.233))) * 43758.547);
24
+ }
25
+
26
+ metal::float4 getToColor(
27
+ thread metal::float2& uv,
28
+ metal::sampler _sampler,
29
+ metal::texture2d<float, metal::access::sample> _to
30
+ ) {
31
+ float _e18 = uv[0u];
32
+ float _e20 = uv[1u];
33
+ metal::float4 _e23 = _to.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
34
+ return _e23;
35
+ }
36
+
37
+ metal::float4 getFromColor(
38
+ thread metal::float2& uv_1,
39
+ metal::texture2d<float, metal::access::sample> _from,
40
+ metal::sampler _sampler
41
+ ) {
42
+ float _e18 = uv_1[0u];
43
+ float _e20 = uv_1[1u];
44
+ metal::float4 _e23 = _from.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
45
+ return _e23;
46
+ }
47
+
48
+ metal::float4 transition(
49
+ thread metal::float2& uv_2,
50
+ metal::texture2d<float, metal::access::sample> _from,
51
+ metal::sampler _sampler,
52
+ metal::texture2d<float, metal::access::sample> _to,
53
+ constant Uniforms& uniforms
54
+ ) {
55
+ metal::float2 param = {};
56
+ metal::float2 param_1 = {};
57
+ metal::float2 param_2 = {};
58
+ metal::float2 _e20 = uv_2;
59
+ param = _e20;
60
+ metal::float4 _e21 = getFromColor(param, _from, _sampler);
61
+ metal::float2 _e22 = uv_2;
62
+ param_1 = _e22;
63
+ metal::float4 _e23 = getToColor(param_1, _sampler, _to);
64
+ metal::float2 _e24 = uv_2;
65
+ float _e26 = uniforms.blocksize;
66
+ param_2 = metal::floor(_e24 / metal::float2(_e26));
67
+ float _e30 = rand(param_2);
68
+ float _e32 = uniforms.progress;
69
+ return metal::mix(_e21, _e23, metal::float4(metal::step(_e30, _e32)));
70
+ }
71
+
72
+ void main_1(
73
+ metal::texture2d<float, metal::access::sample> _from,
74
+ metal::sampler _sampler,
75
+ metal::texture2d<float, metal::access::sample> _to,
76
+ constant Uniforms& uniforms,
77
+ thread metal::float4& _fragColor,
78
+ thread metal::float2& _uv_1
79
+ ) {
80
+ metal::float2 param_3 = {};
81
+ metal::float2 _e17 = _uv_1;
82
+ param_3 = _e17;
83
+ metal::float4 _e18 = transition(param_3, _from, _sampler, _to, uniforms);
84
+ _fragColor = _e18;
85
+ return;
86
+ }
87
+
88
+ struct main_Input {
89
+ metal::float2 _uv [[user(loc0), center_perspective]];
90
+ };
91
+ struct main_Output {
92
+ metal::float4 member [[color(0)]];
93
+ };
94
+ fragment main_Output main_(
95
+ main_Input varyings [[stage_in]]
96
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
97
+ , metal::sampler _sampler [[sampler(0)]]
98
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
99
+ , constant Uniforms& uniforms [[buffer(0)]]
100
+ ) {
101
+ metal::float4 _fragColor = {};
102
+ metal::float2 _uv_1 = {};
103
+ const auto _uv = varyings._uv;
104
+ _uv_1 = _uv;
105
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
106
+ metal::float4 _e3 = _fragColor;
107
+ return main_Output { _e3 };
108
+ }
@@ -0,0 +1,191 @@
1
+ // BookFlip — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BookFlip.glsl
2
+ // Author: hong
3
+ // License: MIT
4
+ // Description: The outgoing image turns like a book page from right to left, 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
+ };
17
+
18
+ float nonZero(
19
+ thread float& x
20
+ ) {
21
+ float local = {};
22
+ float _e18 = x;
23
+ if (metal::abs(_e18) < 0.0001) {
24
+ float _e21 = x;
25
+ local = (_e21 < 0.0) ? -0.0001 : 0.0001;
26
+ } else {
27
+ float _e24 = x;
28
+ local = _e24;
29
+ }
30
+ float _e25 = local;
31
+ return _e25;
32
+ }
33
+
34
+ metal::float2 skewRight(
35
+ thread metal::float2& p,
36
+ constant Uniforms& uniforms
37
+ ) {
38
+ float skewX = {};
39
+ float param = {};
40
+ float skewY = {};
41
+ float _e21 = p[0u];
42
+ float _e23 = uniforms.progress;
43
+ float _e26 = uniforms.progress;
44
+ param = 0.5 - _e26;
45
+ float _e28 = nonZero(param);
46
+ skewX = ((_e21 - _e23) / _e28) * 0.5;
47
+ float _e32 = p[1u];
48
+ float _e35 = uniforms.progress;
49
+ float _e37 = p[0u];
50
+ skewY = (((_e32 - 0.5) / (0.5 + ((_e35 * (_e37 - 0.5)) / 0.5))) * 0.5) + 0.5;
51
+ float _e45 = skewX;
52
+ float _e46 = skewY;
53
+ return metal::float2(_e45, _e46);
54
+ }
55
+
56
+ metal::float4 addShade_u0028_(
57
+ constant Uniforms& uniforms
58
+ ) {
59
+ float shadeVal = {};
60
+ float _e18 = uniforms.progress;
61
+ shadeVal = metal::max(0.7, metal::abs(_e18 - 0.5) * 2.0);
62
+ float _e23 = shadeVal;
63
+ metal::float3 _e24 = metal::float3(_e23);
64
+ return metal::float4(_e24.x, _e24.y, _e24.z, 1.0);
65
+ }
66
+
67
+ metal::float4 getToColor(
68
+ thread metal::float2& uv,
69
+ metal::sampler _sampler,
70
+ metal::texture2d<float, metal::access::sample> _to
71
+ ) {
72
+ float _e18 = uv[0u];
73
+ float _e20 = uv[1u];
74
+ metal::float4 _e23 = _to.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
75
+ return _e23;
76
+ }
77
+
78
+ metal::float2 skewLeft(
79
+ thread metal::float2& p_1,
80
+ constant Uniforms& uniforms
81
+ ) {
82
+ float skewX_1 = {};
83
+ float param_1 = {};
84
+ float skewY_1 = {};
85
+ float _e21 = p_1[0u];
86
+ float _e24 = uniforms.progress;
87
+ param_1 = _e24 - 0.5;
88
+ float _e26 = nonZero(param_1);
89
+ skewX_1 = (((_e21 - 0.5) / _e26) * 0.5) + 0.5;
90
+ float _e31 = p_1[1u];
91
+ float _e34 = uniforms.progress;
92
+ float _e37 = p_1[0u];
93
+ skewY_1 = (((_e31 - 0.5) / (0.5 + (((1.0 - _e34) * (0.5 - _e37)) / 0.5))) * 0.5) + 0.5;
94
+ float _e45 = skewX_1;
95
+ float _e46 = skewY_1;
96
+ return metal::float2(_e45, _e46);
97
+ }
98
+
99
+ metal::float4 getFromColor(
100
+ thread metal::float2& uv_1,
101
+ metal::texture2d<float, metal::access::sample> _from,
102
+ metal::sampler _sampler
103
+ ) {
104
+ float _e18 = uv_1[0u];
105
+ float _e20 = uv_1[1u];
106
+ metal::float4 _e23 = _from.sample(_sampler, metal::float2(_e18, 1.0 - _e20), metal::level(0.0));
107
+ return _e23;
108
+ }
109
+
110
+ metal::float4 transition(
111
+ thread metal::float2& p_2,
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
+ ) {
117
+ float pr = {};
118
+ metal::float2 param_2 = {};
119
+ metal::float2 param_3 = {};
120
+ metal::float2 param_4 = {};
121
+ metal::float2 param_5 = {};
122
+ metal::float2 param_6 = {};
123
+ metal::float2 param_7 = {};
124
+ float _e25 = uniforms.progress;
125
+ float _e28 = p_2[0u];
126
+ pr = metal::step(1.0 - _e25, _e28);
127
+ float _e31 = p_2[0u];
128
+ if (_e31 < 0.5) {
129
+ metal::float2 _e33 = p_2;
130
+ param_2 = _e33;
131
+ metal::float4 _e34 = getFromColor(param_2, _from, _sampler);
132
+ metal::float2 _e35 = p_2;
133
+ param_3 = _e35;
134
+ metal::float2 _e36 = skewLeft(param_3, uniforms);
135
+ param_4 = _e36;
136
+ metal::float4 _e37 = getToColor(param_4, _sampler, _to);
137
+ metal::float4 _e38 = addShade_u0028_(uniforms);
138
+ float _e40 = pr;
139
+ return metal::mix(_e34, _e37 * _e38, metal::float4(_e40));
140
+ } else {
141
+ metal::float2 _e43 = p_2;
142
+ param_5 = _e43;
143
+ metal::float2 _e44 = skewRight(param_5, uniforms);
144
+ param_6 = _e44;
145
+ metal::float4 _e45 = getFromColor(param_6, _from, _sampler);
146
+ metal::float4 _e46 = addShade_u0028_(uniforms);
147
+ metal::float2 _e48 = p_2;
148
+ param_7 = _e48;
149
+ metal::float4 _e49 = getToColor(param_7, _sampler, _to);
150
+ float _e50 = pr;
151
+ return metal::mix(_e45 * _e46, _e49, metal::float4(_e50));
152
+ }
153
+ }
154
+
155
+ void main_1(
156
+ metal::texture2d<float, metal::access::sample> _from,
157
+ metal::sampler _sampler,
158
+ metal::texture2d<float, metal::access::sample> _to,
159
+ constant Uniforms& uniforms,
160
+ thread metal::float4& _fragColor,
161
+ thread metal::float2& _uv_1
162
+ ) {
163
+ metal::float2 param_8 = {};
164
+ metal::float2 _e17 = _uv_1;
165
+ param_8 = _e17;
166
+ metal::float4 _e18 = transition(param_8, _from, _sampler, _to, uniforms);
167
+ _fragColor = _e18;
168
+ return;
169
+ }
170
+
171
+ struct main_Input {
172
+ metal::float2 _uv [[user(loc0), center_perspective]];
173
+ };
174
+ struct main_Output {
175
+ metal::float4 member [[color(0)]];
176
+ };
177
+ fragment main_Output main_(
178
+ main_Input varyings [[stage_in]]
179
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
180
+ , metal::sampler _sampler [[sampler(0)]]
181
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
182
+ , constant Uniforms& uniforms [[buffer(0)]]
183
+ ) {
184
+ metal::float4 _fragColor = {};
185
+ metal::float2 _uv_1 = {};
186
+ const auto _uv = varyings._uv;
187
+ _uv_1 = _uv;
188
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
189
+ metal::float4 _e3 = _fragColor;
190
+ return main_Output { _e3 };
191
+ }