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,105 @@
1
+ // wipeLeft — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/wipeLeft.glsl
2
+ // Author: Jake Nelson
3
+ // License: MIT
4
+ // Description: A hard-edged wipe from right to left
5
+ // Bindings and uniform layout: see the gl-transitions package README
6
+
7
+ // language: metal1.0
8
+ #include <metal_stdlib>
9
+ #include <simd/simd.h>
10
+
11
+ using metal::uint;
12
+
13
+ struct Uniforms {
14
+ float progress;
15
+ float ratio;
16
+ };
17
+
18
+ metal::float4 getToColor(
19
+ thread metal::float2& uv,
20
+ metal::sampler _sampler,
21
+ metal::texture2d<float, metal::access::sample> _to
22
+ ) {
23
+ float _e14 = uv[0u];
24
+ float _e16 = uv[1u];
25
+ metal::float4 _e19 = _to.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
26
+ return _e19;
27
+ }
28
+
29
+ metal::float4 getFromColor(
30
+ thread metal::float2& uv_1,
31
+ metal::texture2d<float, metal::access::sample> _from,
32
+ metal::sampler _sampler
33
+ ) {
34
+ float _e14 = uv_1[0u];
35
+ float _e16 = uv_1[1u];
36
+ metal::float4 _e19 = _from.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
37
+ return _e19;
38
+ }
39
+
40
+ metal::float4 transition(
41
+ thread metal::float2& uv_2,
42
+ metal::texture2d<float, metal::access::sample> _from,
43
+ metal::sampler _sampler,
44
+ metal::texture2d<float, metal::access::sample> _to,
45
+ constant Uniforms& uniforms
46
+ ) {
47
+ metal::float2 p = {};
48
+ metal::float4 a = {};
49
+ metal::float2 param = {};
50
+ metal::float4 b = {};
51
+ metal::float2 param_1 = {};
52
+ metal::float2 _e18 = uv_2;
53
+ p = _e18 / metal::float2(1.0, 1.0);
54
+ metal::float2 _e20 = p;
55
+ param = _e20;
56
+ metal::float4 _e21 = getFromColor(param, _from, _sampler);
57
+ a = _e21;
58
+ metal::float2 _e22 = p;
59
+ param_1 = _e22;
60
+ metal::float4 _e23 = getToColor(param_1, _sampler, _to);
61
+ b = _e23;
62
+ metal::float4 _e24 = a;
63
+ metal::float4 _e25 = b;
64
+ float _e27 = p[0u];
65
+ float _e30 = uniforms.progress;
66
+ return metal::mix(_e24, _e25, metal::float4(metal::step(1.0 - _e27, _e30)));
67
+ }
68
+
69
+ void main_1(
70
+ metal::texture2d<float, metal::access::sample> _from,
71
+ metal::sampler _sampler,
72
+ metal::texture2d<float, metal::access::sample> _to,
73
+ constant Uniforms& uniforms,
74
+ thread metal::float4& _fragColor,
75
+ thread metal::float2& _uv_1
76
+ ) {
77
+ metal::float2 param_2 = {};
78
+ metal::float2 _e13 = _uv_1;
79
+ param_2 = _e13;
80
+ metal::float4 _e14 = transition(param_2, _from, _sampler, _to, uniforms);
81
+ _fragColor = _e14;
82
+ return;
83
+ }
84
+
85
+ struct main_Input {
86
+ metal::float2 _uv [[user(loc0), center_perspective]];
87
+ };
88
+ struct main_Output {
89
+ metal::float4 member [[color(0)]];
90
+ };
91
+ fragment main_Output main_(
92
+ main_Input varyings [[stage_in]]
93
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
94
+ , metal::sampler _sampler [[sampler(0)]]
95
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
96
+ , constant Uniforms& uniforms [[buffer(0)]]
97
+ ) {
98
+ metal::float4 _fragColor = {};
99
+ metal::float2 _uv_1 = {};
100
+ const auto _uv = varyings._uv;
101
+ _uv_1 = _uv;
102
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
103
+ metal::float4 _e3 = _fragColor;
104
+ return main_Output { _e3 };
105
+ }
@@ -0,0 +1,105 @@
1
+ // wipeRight — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/wipeRight.glsl
2
+ // Author: Jake Nelson
3
+ // License: MIT
4
+ // Description: A hard-edged wipe from left to right
5
+ // Bindings and uniform layout: see the gl-transitions package README
6
+
7
+ // language: metal1.0
8
+ #include <metal_stdlib>
9
+ #include <simd/simd.h>
10
+
11
+ using metal::uint;
12
+
13
+ struct Uniforms {
14
+ float progress;
15
+ float ratio;
16
+ };
17
+
18
+ metal::float4 getToColor(
19
+ thread metal::float2& uv,
20
+ metal::sampler _sampler,
21
+ metal::texture2d<float, metal::access::sample> _to
22
+ ) {
23
+ float _e14 = uv[0u];
24
+ float _e16 = uv[1u];
25
+ metal::float4 _e19 = _to.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
26
+ return _e19;
27
+ }
28
+
29
+ metal::float4 getFromColor(
30
+ thread metal::float2& uv_1,
31
+ metal::texture2d<float, metal::access::sample> _from,
32
+ metal::sampler _sampler
33
+ ) {
34
+ float _e14 = uv_1[0u];
35
+ float _e16 = uv_1[1u];
36
+ metal::float4 _e19 = _from.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
37
+ return _e19;
38
+ }
39
+
40
+ metal::float4 transition(
41
+ thread metal::float2& uv_2,
42
+ metal::texture2d<float, metal::access::sample> _from,
43
+ metal::sampler _sampler,
44
+ metal::texture2d<float, metal::access::sample> _to,
45
+ constant Uniforms& uniforms
46
+ ) {
47
+ metal::float2 p = {};
48
+ metal::float4 a = {};
49
+ metal::float2 param = {};
50
+ metal::float4 b = {};
51
+ metal::float2 param_1 = {};
52
+ metal::float2 _e18 = uv_2;
53
+ p = _e18 / metal::float2(1.0, 1.0);
54
+ metal::float2 _e20 = p;
55
+ param = _e20;
56
+ metal::float4 _e21 = getFromColor(param, _from, _sampler);
57
+ a = _e21;
58
+ metal::float2 _e22 = p;
59
+ param_1 = _e22;
60
+ metal::float4 _e23 = getToColor(param_1, _sampler, _to);
61
+ b = _e23;
62
+ metal::float4 _e24 = a;
63
+ metal::float4 _e25 = b;
64
+ float _e27 = p[0u];
65
+ float _e30 = uniforms.progress;
66
+ return metal::mix(_e24, _e25, metal::float4(metal::step(0.0 + _e27, _e30)));
67
+ }
68
+
69
+ void main_1(
70
+ metal::texture2d<float, metal::access::sample> _from,
71
+ metal::sampler _sampler,
72
+ metal::texture2d<float, metal::access::sample> _to,
73
+ constant Uniforms& uniforms,
74
+ thread metal::float4& _fragColor,
75
+ thread metal::float2& _uv_1
76
+ ) {
77
+ metal::float2 param_2 = {};
78
+ metal::float2 _e13 = _uv_1;
79
+ param_2 = _e13;
80
+ metal::float4 _e14 = transition(param_2, _from, _sampler, _to, uniforms);
81
+ _fragColor = _e14;
82
+ return;
83
+ }
84
+
85
+ struct main_Input {
86
+ metal::float2 _uv [[user(loc0), center_perspective]];
87
+ };
88
+ struct main_Output {
89
+ metal::float4 member [[color(0)]];
90
+ };
91
+ fragment main_Output main_(
92
+ main_Input varyings [[stage_in]]
93
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
94
+ , metal::sampler _sampler [[sampler(0)]]
95
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
96
+ , constant Uniforms& uniforms [[buffer(0)]]
97
+ ) {
98
+ metal::float4 _fragColor = {};
99
+ metal::float2 _uv_1 = {};
100
+ const auto _uv = varyings._uv;
101
+ _uv_1 = _uv;
102
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
103
+ metal::float4 _e3 = _fragColor;
104
+ return main_Output { _e3 };
105
+ }
@@ -0,0 +1,105 @@
1
+ // wipeUp — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/wipeUp.glsl
2
+ // Author: Jake Nelson
3
+ // License: MIT
4
+ // Description: A hard-edged wipe from bottom to top
5
+ // Bindings and uniform layout: see the gl-transitions package README
6
+
7
+ // language: metal1.0
8
+ #include <metal_stdlib>
9
+ #include <simd/simd.h>
10
+
11
+ using metal::uint;
12
+
13
+ struct Uniforms {
14
+ float progress;
15
+ float ratio;
16
+ };
17
+
18
+ metal::float4 getToColor(
19
+ thread metal::float2& uv,
20
+ metal::sampler _sampler,
21
+ metal::texture2d<float, metal::access::sample> _to
22
+ ) {
23
+ float _e14 = uv[0u];
24
+ float _e16 = uv[1u];
25
+ metal::float4 _e19 = _to.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
26
+ return _e19;
27
+ }
28
+
29
+ metal::float4 getFromColor(
30
+ thread metal::float2& uv_1,
31
+ metal::texture2d<float, metal::access::sample> _from,
32
+ metal::sampler _sampler
33
+ ) {
34
+ float _e14 = uv_1[0u];
35
+ float _e16 = uv_1[1u];
36
+ metal::float4 _e19 = _from.sample(_sampler, metal::float2(_e14, 1.0 - _e16), metal::level(0.0));
37
+ return _e19;
38
+ }
39
+
40
+ metal::float4 transition(
41
+ thread metal::float2& uv_2,
42
+ metal::texture2d<float, metal::access::sample> _from,
43
+ metal::sampler _sampler,
44
+ metal::texture2d<float, metal::access::sample> _to,
45
+ constant Uniforms& uniforms
46
+ ) {
47
+ metal::float2 p = {};
48
+ metal::float4 a = {};
49
+ metal::float2 param = {};
50
+ metal::float4 b = {};
51
+ metal::float2 param_1 = {};
52
+ metal::float2 _e18 = uv_2;
53
+ p = _e18 / metal::float2(1.0, 1.0);
54
+ metal::float2 _e20 = p;
55
+ param = _e20;
56
+ metal::float4 _e21 = getFromColor(param, _from, _sampler);
57
+ a = _e21;
58
+ metal::float2 _e22 = p;
59
+ param_1 = _e22;
60
+ metal::float4 _e23 = getToColor(param_1, _sampler, _to);
61
+ b = _e23;
62
+ metal::float4 _e24 = a;
63
+ metal::float4 _e25 = b;
64
+ float _e27 = p[1u];
65
+ float _e30 = uniforms.progress;
66
+ return metal::mix(_e24, _e25, metal::float4(metal::step(0.0 + _e27, _e30)));
67
+ }
68
+
69
+ void main_1(
70
+ metal::texture2d<float, metal::access::sample> _from,
71
+ metal::sampler _sampler,
72
+ metal::texture2d<float, metal::access::sample> _to,
73
+ constant Uniforms& uniforms,
74
+ thread metal::float4& _fragColor,
75
+ thread metal::float2& _uv_1
76
+ ) {
77
+ metal::float2 param_2 = {};
78
+ metal::float2 _e13 = _uv_1;
79
+ param_2 = _e13;
80
+ metal::float4 _e14 = transition(param_2, _from, _sampler, _to, uniforms);
81
+ _fragColor = _e14;
82
+ return;
83
+ }
84
+
85
+ struct main_Input {
86
+ metal::float2 _uv [[user(loc0), center_perspective]];
87
+ };
88
+ struct main_Output {
89
+ metal::float4 member [[color(0)]];
90
+ };
91
+ fragment main_Output main_(
92
+ main_Input varyings [[stage_in]]
93
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
94
+ , metal::sampler _sampler [[sampler(0)]]
95
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
96
+ , constant Uniforms& uniforms [[buffer(0)]]
97
+ ) {
98
+ metal::float4 _fragColor = {};
99
+ metal::float2 _uv_1 = {};
100
+ const auto _uv = varyings._uv;
101
+ _uv_1 = _uv;
102
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
103
+ metal::float4 _e3 = _fragColor;
104
+ return main_Output { _e3 };
105
+ }
@@ -0,0 +1,110 @@
1
+ // x_axis_translation — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/x_axis_translation.glsl
2
+ // Author: lizhongjian
3
+ // License: MIT
4
+ // Description: The outgoing image slides to the right, uncovering a crossfade to 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
+ metal::float4 getToColor(
19
+ thread metal::float2& uv,
20
+ metal::sampler _sampler,
21
+ metal::texture2d<float, metal::access::sample> _to
22
+ ) {
23
+ float _e13 = uv[0u];
24
+ float _e15 = uv[1u];
25
+ metal::float4 _e18 = _to.sample(_sampler, metal::float2(_e13, 1.0 - _e15), metal::level(0.0));
26
+ return _e18;
27
+ }
28
+
29
+ metal::float4 getFromColor(
30
+ thread metal::float2& uv_1,
31
+ metal::texture2d<float, metal::access::sample> _from,
32
+ metal::sampler _sampler
33
+ ) {
34
+ float _e13 = uv_1[0u];
35
+ float _e15 = uv_1[1u];
36
+ metal::float4 _e18 = _from.sample(_sampler, metal::float2(_e13, 1.0 - _e15), metal::level(0.0));
37
+ return _e18;
38
+ }
39
+
40
+ metal::float4 transition(
41
+ thread metal::float2& uv_2,
42
+ metal::texture2d<float, metal::access::sample> _from,
43
+ metal::sampler _sampler,
44
+ metal::texture2d<float, metal::access::sample> _to,
45
+ constant Uniforms& uniforms
46
+ ) {
47
+ metal::float2 newUV = {};
48
+ metal::float2 param = {};
49
+ metal::float2 param_1 = {};
50
+ metal::float2 param_2 = {};
51
+ metal::float2 _e16 = uv_2;
52
+ newUV = _e16;
53
+ float _e18 = uniforms.progress;
54
+ float _e20 = newUV[0u];
55
+ newUV[0u] = _e20 - _e18;
56
+ float _e24 = uv_2[0u];
57
+ float _e26 = uniforms.progress;
58
+ if (_e24 >= _e26) {
59
+ metal::float2 _e28 = newUV;
60
+ param = _e28;
61
+ metal::float4 _e29 = getFromColor(param, _from, _sampler);
62
+ return _e29;
63
+ }
64
+ metal::float2 _e30 = uv_2;
65
+ param_1 = _e30;
66
+ metal::float4 _e31 = getFromColor(param_1, _from, _sampler);
67
+ metal::float2 _e32 = uv_2;
68
+ param_2 = _e32;
69
+ metal::float4 _e33 = getToColor(param_2, _sampler, _to);
70
+ float _e35 = uniforms.progress;
71
+ return metal::mix(_e31, _e33, metal::float4(_e35));
72
+ }
73
+
74
+ void main_1(
75
+ metal::texture2d<float, metal::access::sample> _from,
76
+ metal::sampler _sampler,
77
+ metal::texture2d<float, metal::access::sample> _to,
78
+ constant Uniforms& uniforms,
79
+ thread metal::float4& _fragColor,
80
+ thread metal::float2& _uv_1
81
+ ) {
82
+ metal::float2 param_3 = {};
83
+ metal::float2 _e12 = _uv_1;
84
+ param_3 = _e12;
85
+ metal::float4 _e13 = transition(param_3, _from, _sampler, _to, uniforms);
86
+ _fragColor = _e13;
87
+ return;
88
+ }
89
+
90
+ struct main_Input {
91
+ metal::float2 _uv [[user(loc0), center_perspective]];
92
+ };
93
+ struct main_Output {
94
+ metal::float4 member [[color(0)]];
95
+ };
96
+ fragment main_Output main_(
97
+ main_Input varyings [[stage_in]]
98
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
99
+ , metal::sampler _sampler [[sampler(0)]]
100
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
101
+ , constant Uniforms& uniforms [[buffer(0)]]
102
+ ) {
103
+ metal::float4 _fragColor = {};
104
+ metal::float2 _uv_1 = {};
105
+ const auto _uv = varyings._uv;
106
+ _uv_1 = _uv;
107
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
108
+ metal::float4 _e3 = _fragColor;
109
+ return main_Output { _e3 };
110
+ }
@@ -0,0 +1,125 @@
1
+ // zoomInOut — MSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/zoomInOut.glsl
2
+ // Author: OllyOllyOlly
3
+ // License: MIT
4
+ // Description: Zooms into the outgoing image until it blurs into a flat color, then out to 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
+ metal::float4 getToColor(
19
+ thread metal::float2& uv,
20
+ metal::sampler _sampler,
21
+ metal::texture2d<float, metal::access::sample> _to
22
+ ) {
23
+ float _e17 = uv[0u];
24
+ float _e19 = uv[1u];
25
+ metal::float4 _e22 = _to.sample(_sampler, metal::float2(_e17, 1.0 - _e19), metal::level(0.0));
26
+ return _e22;
27
+ }
28
+
29
+ metal::float4 getFromColor(
30
+ thread metal::float2& uv_1,
31
+ metal::texture2d<float, metal::access::sample> _from,
32
+ metal::sampler _sampler
33
+ ) {
34
+ float _e17 = uv_1[0u];
35
+ float _e19 = uv_1[1u];
36
+ metal::float4 _e22 = _from.sample(_sampler, metal::float2(_e17, 1.0 - _e19), metal::level(0.0));
37
+ return _e22;
38
+ }
39
+
40
+ metal::float2 zoom(
41
+ thread metal::float2& uv_2,
42
+ thread float& amount
43
+ ) {
44
+ metal::float2 _e17 = uv_2;
45
+ float _e20 = amount;
46
+ return metal::float2(0.5) + ((_e17 - metal::float2(0.5)) * (1.0 - _e20));
47
+ }
48
+
49
+ metal::float4 transition(
50
+ thread metal::float2& uv_3,
51
+ metal::texture2d<float, metal::access::sample> _from,
52
+ metal::sampler _sampler,
53
+ metal::texture2d<float, metal::access::sample> _to,
54
+ constant Uniforms& uniforms
55
+ ) {
56
+ float zoomFrom = {};
57
+ float zoomTo = {};
58
+ float crossfade = {};
59
+ metal::float2 param = {};
60
+ float param_1 = {};
61
+ metal::float2 param_2 = {};
62
+ metal::float2 param_3 = {};
63
+ float param_4 = {};
64
+ metal::float2 param_5 = {};
65
+ float _e26 = uniforms.progress;
66
+ zoomFrom = metal::smoothstep(0.0, 1.0, _e26 * 2.0);
67
+ float _e30 = uniforms.progress;
68
+ zoomTo = metal::smoothstep(0.0, 1.0, (1.0 - _e30) * 2.0);
69
+ float _e35 = uniforms.progress;
70
+ crossfade = metal::smoothstep(0.4, 0.6, _e35);
71
+ metal::float2 _e37 = uv_3;
72
+ param = _e37;
73
+ float _e38 = zoomFrom;
74
+ param_1 = _e38;
75
+ metal::float2 _e39 = zoom(param, param_1);
76
+ param_2 = _e39;
77
+ metal::float4 _e40 = getFromColor(param_2, _from, _sampler);
78
+ metal::float2 _e41 = uv_3;
79
+ param_3 = _e41;
80
+ float _e42 = zoomTo;
81
+ param_4 = _e42;
82
+ metal::float2 _e43 = zoom(param_3, param_4);
83
+ param_5 = _e43;
84
+ metal::float4 _e44 = getToColor(param_5, _sampler, _to);
85
+ float _e45 = crossfade;
86
+ return metal::mix(_e40, _e44, metal::float4(_e45));
87
+ }
88
+
89
+ void main_1(
90
+ metal::texture2d<float, metal::access::sample> _from,
91
+ metal::sampler _sampler,
92
+ metal::texture2d<float, metal::access::sample> _to,
93
+ constant Uniforms& uniforms,
94
+ thread metal::float4& _fragColor,
95
+ thread metal::float2& _uv_1
96
+ ) {
97
+ metal::float2 param_6 = {};
98
+ metal::float2 _e16 = _uv_1;
99
+ param_6 = _e16;
100
+ metal::float4 _e17 = transition(param_6, _from, _sampler, _to, uniforms);
101
+ _fragColor = _e17;
102
+ return;
103
+ }
104
+
105
+ struct main_Input {
106
+ metal::float2 _uv [[user(loc0), center_perspective]];
107
+ };
108
+ struct main_Output {
109
+ metal::float4 member [[color(0)]];
110
+ };
111
+ fragment main_Output main_(
112
+ main_Input varyings [[stage_in]]
113
+ , metal::texture2d<float, metal::access::sample> _from [[texture(0)]]
114
+ , metal::sampler _sampler [[sampler(0)]]
115
+ , metal::texture2d<float, metal::access::sample> _to [[texture(1)]]
116
+ , constant Uniforms& uniforms [[buffer(0)]]
117
+ ) {
118
+ metal::float4 _fragColor = {};
119
+ metal::float2 _uv_1 = {};
120
+ const auto _uv = varyings._uv;
121
+ _uv_1 = _uv;
122
+ main_1(_from, _sampler, _to, uniforms, _fragColor, _uv_1);
123
+ metal::float4 _e3 = _fragColor;
124
+ return main_Output { _e3 };
125
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-transitions",
3
- "version": "1.74.0",
3
+ "version": "1.76.0",
4
4
  "description": "The open collection of GL Transitions",
5
5
  "main": "index.js",
6
6
  "license": "MIT",
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: gl-transitions
3
+ description: Adds image and video transitions (fades, wipes, zooms, glitches, page curls...) from gl-transitions, an open collection of 125 GLSL shaders also compiled to SkSL. Use when the user wants a transition between two images, video clips, slides or scenes in WebGL, Skia (CanvasKit, React Native Skia), FFmpeg or editly, or names a gl-transition.
4
+ ---
5
+
6
+ # gl-transitions
7
+
8
+ Each transition is a GLSL function `vec4 transition(vec2 uv)` that blends an outgoing image into an incoming one as `progress` goes from 0 to 1. The npm package `gl-transitions` ships every transition as GLSL, as SkSL, and as a catalog (`gl-transitions.json`) with descriptions, tags and typed parameters.
9
+
10
+ ## 1. Pick a transition
11
+
12
+ Read `references/catalog.md` (by tag, then one line per transition). If it is missing, fetch `https://cdn.jsdelivr.net/npm/gl-transitions@1/skills/gl-transitions/references/catalog.md`.
13
+
14
+ - Match the user's words against descriptions and tags (`wipe`, `zoom`, `glitch`, `3d`...). Offer 2 or 3 candidates when the request is vague, with their preview link `https://gl-transitions.com/editor/<name>`.
15
+ - Prefer transitions without extra textures: `displacement` and `luma` need an additional image from the host.
16
+ - Names are case-sensitive and stable (`crosswarp`, `CrossZoom`, `cube`).
17
+
18
+ ## 2. Get the source
19
+
20
+ | Need | Where |
21
+ |---|---|
22
+ | JS/TS project | `npm install gl-transitions`, then `import transitions from "gl-transitions"` and `transitions.find((t) => t.name === "cube")` (`glsl`, `params`, `textures`; typed in `index.d.ts`) |
23
+ | GLSL file | `node_modules/gl-transitions/transitions/<name>.glsl` or `https://cdn.jsdelivr.net/npm/gl-transitions@1/transitions/<name>.glsl` |
24
+ | SkSL file | `node_modules/gl-transitions/sksl/<name>.sksl` or `https://cdn.jsdelivr.net/npm/gl-transitions@1/sksl/<name>.sksl` |
25
+
26
+ Pin the exact version (`gl-transitions@1.x.y`) in production URLs.
27
+
28
+ ## 3. Wire it into the host
29
+
30
+ The host defines `progress`, `ratio`, `getFromColor(uv)`, `getToColor(uv)` and one uniform per parameter. **Always set every parameter**, to its `default` from the catalog unless the user chose a value: an unset uniform is 0 and breaks most transitions.
31
+
32
+ | Host | Status | Read |
33
+ |---|---|---|
34
+ | WebGL / WebGL 2, regl, raw GLSL | Works today | `references/webgl.md` |
35
+ | CanvasKit (web, Node), React Native Skia, other Skia | Works today with the shipped SkSL | `references/skia.md` |
36
+ | editly (Node video editing) | Works today: built in | `references/video.md` |
37
+ | FFmpeg | Works with the third-party `ffmpeg-gl-transition` filter (custom FFmpeg build) | `references/video.md` |
38
+ | Remotion | No adapter yet (planned: `@gl-transitions/remotion`); possible for images and videos with the WebGL recipe | `references/video.md` |
39
+ | three.js, PixiJS, WGSL/WebGPU, Metal, Android, Flutter, Unity, Godot | Planned, not available yet | Use the WebGL recipe where GLSL is accepted |
40
+
41
+ ## 4. Check the result
42
+
43
+ - At `progress = 0` the output must be the outgoing image, at `progress = 1` the incoming one (the specification; a few transitions are off by a pixel or a slight blur at the ends, e.g. `AdvancedMosaic`, `tangentMotionBlur`). Render both ends and one middle frame.
44
+ - An upside-down result means the image rows are flipped: `uv` has its origin at the bottom left (see each reference).
45
+ - A black or frozen result usually means a parameter was left unset or an extra texture is missing.
46
+ - Credit the author and license from the catalog when the user ships the result (most are MIT).