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,139 @@
1
+ // tangentMotionBlur — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/tangentMotionBlur.glsl
2
+
3
+ // License: MIT
4
+ // Author: chenkai
5
+ // Description: The outgoing image is flung away along a curve with motion blur
6
+ // Tags: motion-blur, rotate, slide
7
+ // ported from https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/671116/
8
+
9
+ float rand (vec2 co) {
10
+ return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
11
+ }
12
+
13
+ // motion blur for texture from
14
+ vec4 motionBlurFrom(vec2 _st, vec2 speed) {
15
+ vec2 texCoord = _st.xy / vec2(1.0).xy;
16
+ vec3 color = vec3(0.0);
17
+ float total = 0.0;
18
+ float offset = rand(_st);
19
+ for (float t = 0.0; t <= 20.0; t++) {
20
+ float percent = (t + offset) / 20.0;
21
+ float weight = 4.0 * (percent - percent * percent);
22
+ vec2 newuv = texCoord + speed * percent;
23
+ newuv = fract(newuv);
24
+ color += getFromColor(newuv).rgb * weight;
25
+ total += weight;
26
+ }
27
+ return vec4(color / total, 1.0);
28
+ }
29
+
30
+ // motion blur for texture to
31
+ vec4 motionBlurTo(vec2 _st, vec2 speed) {
32
+ vec2 texCoord = _st.xy / vec2(1.0).xy;
33
+ vec3 color = vec3(0.0);
34
+ float total = 0.0;
35
+ float offset = rand(_st);
36
+ for (float t = 0.0; t <= 20.0; t++) {
37
+ float percent = (t + offset) / 20.0;
38
+ float weight = 4.0 * (percent - percent * percent);
39
+ vec2 newuv = texCoord + speed * percent;
40
+ newuv = fract(newuv);
41
+ color += getToColor(newuv).rgb * weight;
42
+ total += weight;
43
+ }
44
+ return vec4(color / total, 1.0);
45
+ }
46
+
47
+
48
+ // bezier in gpu
49
+ float A(float aA1, float aA2) {
50
+ return 1.0 - 3.0 * aA2 + 3.0 * aA1;
51
+ }
52
+ float B(float aA1, float aA2) {
53
+ return 3.0 * aA2 - 6.0 * aA1;
54
+ }
55
+ float C(float aA1) {
56
+ return 3.0 * aA1;
57
+ }
58
+ float GetSlope(float aT, float aA1, float aA2) {
59
+ return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
60
+ }
61
+ float CalcBezier(float aT, float aA1, float aA2) {
62
+ return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;
63
+ }
64
+ float GetTForX(float aX, float mX1, float mX2) {
65
+ // iteration to solve
66
+ float aGuessT = aX;
67
+ for (int i = 0; i < 4; ++i) {
68
+ float currentSlope = GetSlope(aGuessT, mX1, mX2);
69
+ if (currentSlope == 0.0) return aGuessT;
70
+ float currentX = CalcBezier(aGuessT, mX1, mX2) - aX;
71
+ aGuessT -= currentX / currentSlope;
72
+ }
73
+ return aGuessT;
74
+ }
75
+ float KeySpline(float aX, float mX1, float mY1, float mX2, float mY2) {
76
+ if (mX1 == mY1 && mX2 == mY2) return aX; // linear
77
+ return CalcBezier(GetTForX(aX, mX1, mX2), mY1, mY2); // x to t, t to y
78
+ }
79
+
80
+ // norm distribution
81
+ float normpdf(float x) {
82
+ float d = x - .5;
83
+ return exp(-20.*d*d);
84
+ }
85
+
86
+ vec2 rotateUv(vec2 uv, float angle, vec2 anchor, float zDirection) {
87
+ uv = uv - anchor; // anchor to origin
88
+ float s = sin(angle);
89
+ float c = cos(angle);
90
+ mat2 m = mat2(c, -s, s, c);
91
+ uv = m * uv;
92
+ uv += anchor; // anchor back
93
+ return uv;
94
+ }
95
+
96
+
97
+
98
+ vec4 transition (vec2 uv) {
99
+
100
+ vec2 myst = uv;
101
+ float animationTime = progress; //getAnimationTime();
102
+ float easingTime = KeySpline(animationTime, .68,.01,.17,.98);
103
+ float blur = normpdf(easingTime);
104
+ float r = 0.;
105
+ float rotation = 180./180.*3.14159;
106
+ if (easingTime <= .5) {
107
+ r = rotation * easingTime;
108
+ } else {
109
+ r = -rotation + rotation * easingTime;
110
+ }
111
+
112
+ // rotation for current frame
113
+ vec2 mystCurrent = myst;
114
+ mystCurrent.y *= 1./ratio;
115
+ mystCurrent = rotateUv(mystCurrent, r, vec2(1., 0.), -1.);
116
+ mystCurrent.y *= ratio;
117
+
118
+ // frame timeInterval by fps=30
119
+ float timeInterval = 0.0167*2.0;
120
+ if (easingTime <= .5) {
121
+ r = rotation * (easingTime+timeInterval);
122
+ } else {
123
+ r = -rotation + rotation * (easingTime+timeInterval);
124
+ }
125
+
126
+ // rotation for next frame
127
+ vec2 mystNext = myst;
128
+ mystNext.y *= 1./ratio;
129
+ mystNext = rotateUv(mystNext, r, vec2(1., 0.), -1.);
130
+ mystNext.y *= ratio;
131
+
132
+ // get speed at tagent direction
133
+ vec2 speed = (mystNext - mystCurrent) / timeInterval * blur * 0.5;
134
+ if (easingTime <= .5) {
135
+ return motionBlurFrom(mystCurrent, speed);
136
+ } else {
137
+ return motionBlurTo(mystCurrent, speed);
138
+ }
139
+ }
@@ -0,0 +1,56 @@
1
+ // undulatingBurnOut — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/undulatingBurnOut.glsl
2
+ // License: MIT
3
+ // Author: pthrasher
4
+ // Description: A circle with a wavy edge burns out from the center to reveal the incoming image
5
+ // Tags: circle, burn, wipe
6
+ // adapted by gre from https://gist.github.com/pthrasher/8e6226b215548ba12734
7
+
8
+ // @param Softness of the edge
9
+ uniform float smoothness; // = 0.03
10
+ // @param Center of the circle
11
+ uniform vec2 center; // = vec2(0.5)
12
+ // @color Color of the burning edge
13
+ uniform vec3 color; // = vec3(0.0)
14
+
15
+ const float M_PI = 3.14159265358979323846;
16
+
17
+ float quadraticInOut(float t) {
18
+ float p = 2.0 * t * t;
19
+ return t < 0.5 ? p : -p + (4.0 * t) - 1.0;
20
+ }
21
+
22
+ float getGradient(float r, float dist) {
23
+ float d = r - dist;
24
+ return mix(
25
+ smoothstep(-smoothness, 0.0, r - dist * (1.0 + smoothness)),
26
+ -1.0 - step(0.005, d),
27
+ step(-0.005, d) * step(d, 0.01)
28
+ );
29
+ }
30
+
31
+ float getWave(vec2 p){
32
+ vec2 _p = p - center; // offset from center
33
+ float rads = atan(_p.y, _p.x);
34
+ float degs = degrees(rads) + 180.0;
35
+ vec2 range = vec2(0.0, M_PI * 30.0);
36
+ vec2 domain = vec2(0.0, 360.0);
37
+ float ratio = (M_PI * 30.0) / 360.0;
38
+ degs = degs * ratio;
39
+ float x = progress;
40
+ float magnitude = mix(0.02, 0.09, smoothstep(0.0, 1.0, x));
41
+ float offset = mix(40.0, 30.0, smoothstep(0.0, 1.0, x));
42
+ float ease_degs = quadraticInOut(sin(degs));
43
+ float deg_wave_pos = (ease_degs * magnitude) * sin(x * offset);
44
+ // The soft edge reaches `smoothness` beyond the radius and the burn band 0.005 inside it:
45
+ // start the radius below both so nothing but the outgoing image shows at progress 0
46
+ // (unchanged from progress 0.1 on).
47
+ return x - max(smoothness, 0.01) * (1.0 - smoothstep(0.0, 0.1, x)) + deg_wave_pos;
48
+ }
49
+
50
+ vec4 transition(vec2 p) {
51
+ float dist = distance(center, p);
52
+ float m = getGradient(getWave(p), dist);
53
+ vec4 cfrom = getFromColor(p);
54
+ vec4 cto = getToColor(p);
55
+ return mix(mix(cfrom, cto, m), mix(cfrom, vec4(color, 1.0), 0.75), step(m, -2.0));
56
+ }
@@ -0,0 +1,25 @@
1
+ // wind — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/wind.glsl
2
+ // Author: gre
3
+ // License: MIT
4
+ // Description: A ragged left-to-right wipe, as if the image was blown away by the wind
5
+ // Tags: wipe, horizontal, noise
6
+
7
+ // @range(0, 1) Width of the ragged edge
8
+ uniform float size; // = 0.2
9
+ // @param Wipe from right to left instead
10
+ uniform bool reversed; // = false
11
+
12
+ float rand (vec2 co) {
13
+ return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
14
+ }
15
+
16
+ vec4 transition (vec2 uv) {
17
+ float x = reversed ? 1. - uv.x : uv.x;
18
+ float r = rand(vec2(0, uv.y));
19
+ float m = smoothstep(0.0, -size, x*(1.0-size) + size*r - (progress * (1.0 + size)));
20
+ return mix(
21
+ getFromColor(uv),
22
+ getToColor(uv),
23
+ m
24
+ );
25
+ }
@@ -0,0 +1,18 @@
1
+ // windowblinds — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/windowblinds.glsl
2
+ // Author: Fabien Benetou
3
+ // License: MIT
4
+ // Description: A crossfade through horizontal window blinds
5
+ // Tags: blinds, stripes, blend
6
+
7
+ vec4 transition (vec2 uv) {
8
+ float t = progress;
9
+
10
+ if (mod(floor(uv.y*100.*progress),2.)==0.)
11
+ t*=2.-.5;
12
+
13
+ return mix(
14
+ getFromColor(uv),
15
+ getToColor(uv),
16
+ mix(t, progress, smoothstep(0.8, 1.0, progress))
17
+ );
18
+ }
@@ -0,0 +1,16 @@
1
+ // windowslice — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/windowslice.glsl
2
+ // Author: gre
3
+ // License: MIT
4
+ // Description: The incoming image appears through vertical slices that widen
5
+ // Tags: slices, stripes, wipe
6
+
7
+ // @param Number of slices
8
+ uniform float count; // = 10.0
9
+ // @param Softness of the slices' edges
10
+ uniform float smoothness; // = 0.5
11
+
12
+ vec4 transition (vec2 p) {
13
+ float pr = smoothstep(-smoothness, 0.0, p.x - progress * (1.0 + smoothness));
14
+ float s = step(pr, fract(count * p.x));
15
+ return mix(getFromColor(p), getToColor(p), s);
16
+ }
@@ -0,0 +1,12 @@
1
+ // wipeDown — GLSL ES 3.00, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/wipeDown.glsl
2
+ // Author: Jake Nelson
3
+ // License: MIT
4
+ // Description: A hard-edged wipe from top to bottom
5
+ // Tags: wipe, vertical
6
+
7
+ vec4 transition(vec2 uv) {
8
+ vec2 p=uv.xy/vec2(1.0).xy;
9
+ vec4 a=getFromColor(p);
10
+ vec4 b=getToColor(p);
11
+ return mix(a, b, step(1.0-p.y,progress));
12
+ }
@@ -0,0 +1,12 @@
1
+ // wipeLeft — GLSL ES 3.00, 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
+ // Tags: wipe, horizontal
6
+
7
+ vec4 transition(vec2 uv) {
8
+ vec2 p=uv.xy/vec2(1.0).xy;
9
+ vec4 a=getFromColor(p);
10
+ vec4 b=getToColor(p);
11
+ return mix(a, b, step(1.0-p.x,progress));
12
+ }
@@ -0,0 +1,12 @@
1
+ // wipeRight — GLSL ES 3.00, 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
+ // Tags: wipe, horizontal
6
+
7
+ vec4 transition(vec2 uv) {
8
+ vec2 p=uv.xy/vec2(1.0).xy;
9
+ vec4 a=getFromColor(p);
10
+ vec4 b=getToColor(p);
11
+ return mix(a, b, step(0.0+p.x,progress));
12
+ }
@@ -0,0 +1,12 @@
1
+ // wipeUp — GLSL ES 3.00, 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
+ // Tags: wipe, vertical
6
+
7
+ vec4 transition(vec2 uv) {
8
+ vec2 p=uv.xy/vec2(1.0).xy;
9
+ vec4 a=getFromColor(p);
10
+ vec4 b=getToColor(p);
11
+ return mix(a, b, step(0.0+p.y,progress));
12
+ }
@@ -0,0 +1,21 @@
1
+ // x_axis_translation — GLSL ES 3.00, 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
+ // Tags: slide, horizontal, blend
6
+
7
+ vec4 transition (vec2 uv) {
8
+ vec2 newUV = uv;
9
+ newUV.x -= progress;
10
+ if(uv.x >= progress)
11
+ {
12
+ return getFromColor(newUV);
13
+ }
14
+
15
+
16
+ return mix(
17
+ getFromColor(uv),
18
+ getToColor(uv),
19
+ progress
20
+ );
21
+ }
@@ -0,0 +1,20 @@
1
+ // zoomInOut — GLSL ES 3.00, 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
+ // Tags: zoom, blur
6
+
7
+ vec2 zoom(vec2 uv, float amount) {
8
+ return 0.5 + ((uv - 0.5) * (1.0 - amount));
9
+ }
10
+
11
+ vec4 transition (vec2 uv) {
12
+ float zoomFrom = smoothstep(0.0, 1.0, progress * 2.0);
13
+ float zoomTo = smoothstep(0.0, 1.0, (1.0 - progress) * 2.0);
14
+ float crossfade = smoothstep(0.4, 0.6, progress);
15
+ return mix(
16
+ getFromColor(zoom(uv, zoomFrom)),
17
+ getToColor(zoom(uv, zoomTo)),
18
+ crossfade
19
+ );
20
+ }
package/index.d.ts CHANGED
@@ -41,5 +41,66 @@ export interface Transition {
41
41
  updatedAt?: string;
42
42
  }
43
43
 
44
+ /** Uniform buffer and textures of `wgsl/<name>.wgsl` and `msl/<name>.metal`, from `layouts.json`. */
45
+ export interface ShaderLayout {
46
+ /** `progress`, `ratio`, then the parameters; offsets in bytes (std140 / WGSL uniform layout). `bool` is stored as a 32-bit int. */
47
+ uniforms: { name: string; type: ParamType; offset: number }[];
48
+ /** Uniform buffer size in bytes, a multiple of 16. */
49
+ size: number;
50
+ /** Extra textures, bound after `from` and `to`. */
51
+ textures: string[];
52
+ }
53
+
54
+ /** Content of `layouts.json`, by transition name. */
55
+ export type ShaderLayouts = { [name: string]: ShaderLayout };
56
+
57
+ export type TargetId = "sksl" | "glsl3" | "wgsl" | "msl";
58
+
59
+ /**
60
+ * Per transition and target, from `compatibility.json`. The target file is shipped
61
+ * for every status except `compile-error` and `unsupported`.
62
+ * - `match`: renders like the GLSL reference; `close`: up to 5% of pixels differ;
63
+ * `noise-only`: same picture, different random noise grain
64
+ * - `differs`: renders differently (usually random patterns that legitimately differ)
65
+ * - `compiled`: accepted by the target's compiler, not rendered
66
+ * - `translated`: generated, but no compiler for the target was available in the build
67
+ * - `no-reference`: rendered, but no reference to compare with
68
+ * - `compile-error`, `unsupported`: not shipped for this target
69
+ */
70
+ export type CompatibilityStatus =
71
+ | "match"
72
+ | "noise-only"
73
+ | "close"
74
+ | "differs"
75
+ | "compiled"
76
+ | "translated"
77
+ | "no-reference"
78
+ | "compile-error"
79
+ | "unsupported";
80
+
81
+ export interface TargetCompatibility {
82
+ status: CompatibilityStatus;
83
+ /** Share of pixels that differ from the GLSL reference in the worst frame, 0 to 1. */
84
+ differingPixels?: number;
85
+ /** Uses hash noise (`fract(sin(x) * 43758.5453)`), which differs between implementations. */
86
+ hashNoise?: boolean;
87
+ /** First line of the compiler or converter error. */
88
+ error?: string;
89
+ }
90
+
91
+ /** Content of `compatibility.json`. */
92
+ export interface Compatibility {
93
+ targets: {
94
+ [target in TargetId]?: {
95
+ language: string;
96
+ /** File of a transition in the package, `{name}` being its name. */
97
+ path: string;
98
+ /** Statuses come from rendering and comparing with the GLSL reference, not only compiling. */
99
+ rendered: boolean;
100
+ };
101
+ };
102
+ transitions: { [name: string]: { [target in TargetId]?: TargetCompatibility } };
103
+ }
104
+
44
105
  declare const transitions: Transition[];
45
106
  export default transitions;