shaders 2.5.109 → 2.5.111

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 (267) hide show
  1. package/dist/core/{Aurora-BPHeGEZ_.js → Aurora-KcUDr49P.js} +21 -14
  2. package/dist/core/{Blur-Cxx3ZuHi.js → Blur-DG7lJKPo.js} +29 -13
  3. package/dist/core/{Bulge-Chpbxxzj.js → Bulge-6gRUYqZS.js} +1 -1
  4. package/dist/core/{ChannelBlur-Cth0biwG.js → ChannelBlur-BhcCkwcO.js} +7 -3
  5. package/dist/core/{ConcentricSpin-Crfxti93.js → ConcentricSpin-Fegtvhl6.js} +1 -1
  6. package/dist/core/{ContourLines-KTHC32hd.js → ContourLines-tDBvQOvb.js} +8 -7
  7. package/dist/core/{CursorRipples-D-cfjHY5.js → CursorRipples-BqtHgpEq.js} +1 -1
  8. package/dist/core/{CursorTrail-R4IBB4eu.js → CursorTrail-CgRMXbTG.js} +5 -5
  9. package/dist/core/{DiffuseBlur-eyM1v3ad.js → DiffuseBlur-B-Vki4ab.js} +1 -1
  10. package/dist/core/{DropShadow-jMhnYPXZ.js → DropShadow-B7FzTp4H.js} +14 -8
  11. package/dist/core/{Duotone-Bl02WcA2.js → Duotone-CqQ0NMxS.js} +4 -11
  12. package/dist/core/{FloatingParticles-BtwGRl_d.js → FloatingParticles-DpYA0_TE.js} +6 -2
  13. package/dist/core/{FlowField-RyqiRxyI.js → FlowField-CTWyjeXm.js} +1 -1
  14. package/dist/core/FlutedGlass-B4FlyBOn.js +320 -0
  15. package/dist/core/{Form3D-DaPbLGUi.js → Form3D-CqmOXXGj.js} +14 -2
  16. package/dist/core/{Glass-TRSXbuE6.js → Glass-BCOkQbvW.js} +7 -3
  17. package/dist/core/{Glow-8bKkyehK.js → Glow-CsTZA75y.js} +68 -55
  18. package/dist/core/{GridDistortion-CpSiGEGV.js → GridDistortion-CVpebl48.js} +5 -5
  19. package/dist/core/{HueShift-BtGVMu7q.js → HueShift-C1RxETwN.js} +2 -0
  20. package/dist/core/{ImageTexture-CrX_9-f0.js → ImageTexture-DXhgMEOT.js} +30 -17
  21. package/dist/core/{Kaleidoscope-CFWtKisp.js → Kaleidoscope-B0_OCrob.js} +1 -1
  22. package/dist/core/{Liquify-D9YIfbfB.js → Liquify-ZMAyGUIb.js} +6 -6
  23. package/dist/core/{Mirror-B7XmfGdw.js → Mirror-Gb0fugtF.js} +1 -1
  24. package/dist/core/{Perspective-BN_OpTZq.js → Perspective-SBZzprC5.js} +1 -1
  25. package/dist/core/{PolarCoordinates-CMYCFT4S.js → PolarCoordinates-Ckvb1eG0.js} +1 -1
  26. package/dist/core/{ProgressiveBlur-B_z0pZ1V.js → ProgressiveBlur-CNacb2Qx.js} +33 -20
  27. package/dist/core/{RectangularCoordinates-8Sa2GaDy.js → RectangularCoordinates-r0fTwVuL.js} +1 -1
  28. package/dist/core/{Saturation-CB19kOXg.js → Saturation-n-aXJS81.js} +2 -0
  29. package/dist/core/{Sharpness-CQOboeqy.js → Sharpness-7tm7b-Bu.js} +2 -0
  30. package/dist/core/{Shatter-SHNbU2KC.js → Shatter-CC3EFcP9.js} +29 -25
  31. package/dist/core/{SimplexNoise-BcSgytjc.js → SimplexNoise-0-rfeziU.js} +14 -2
  32. package/dist/core/{Stretch--GV6hbru.js → Stretch-CJUUU-I1.js} +1 -1
  33. package/dist/core/Swirl-WqPvBF7u.js +105 -0
  34. package/dist/core/{TiltShift-GqDjHvmk.js → TiltShift-CYb6OQoU.js} +47 -21
  35. package/dist/core/{Tint-DaTx2HII.js → Tint-C-bJpwd0.js} +11 -6
  36. package/dist/core/{Tritone-C9Yx69Tw.js → Tritone-LX-qUAGy.js} +4 -11
  37. package/dist/core/{Twirl-v8pLqUTN.js → Twirl-CgRyZdT1.js} +1 -1
  38. package/dist/core/{VideoTexture-SWLe5c3m.js → VideoTexture-Cr1f0IOE.js} +31 -18
  39. package/dist/core/{WaveDistortion-BGdgj3Iz.js → WaveDistortion-iyTUI1lj.js} +1 -1
  40. package/dist/core/{WebcamTexture-cXPyEumA.js → WebcamTexture-BQJpZvC5.js} +31 -18
  41. package/dist/core/computeBlur-DCRhuYEi.js +209 -0
  42. package/dist/core/{edges-CfGcQniB.js → edges-CX_lJB9R.js} +13 -1
  43. package/dist/core/index.js +88 -121
  44. package/dist/core/registry.js +88 -87
  45. package/dist/core/renderer.d.ts.map +1 -1
  46. package/dist/core/shaderRegistry-SmtG2mTo.js +254 -0
  47. package/dist/core/shaderRegistry.d.ts.map +1 -1
  48. package/dist/core/shaders/Aurora/index.d.ts.map +1 -1
  49. package/dist/core/shaders/Aurora/index.js +1 -1
  50. package/dist/core/shaders/Blur/index.d.ts.map +1 -1
  51. package/dist/core/shaders/Blur/index.js +2 -2
  52. package/dist/core/shaders/Bulge/index.js +2 -2
  53. package/dist/core/shaders/ChannelBlur/index.d.ts.map +1 -1
  54. package/dist/core/shaders/ChannelBlur/index.js +2 -2
  55. package/dist/core/shaders/ConcentricSpin/index.js +2 -2
  56. package/dist/core/shaders/ContourLines/index.d.ts.map +1 -1
  57. package/dist/core/shaders/ContourLines/index.js +1 -1
  58. package/dist/core/shaders/CursorRipples/index.js +2 -2
  59. package/dist/core/shaders/CursorTrail/index.d.ts.map +1 -1
  60. package/dist/core/shaders/CursorTrail/index.js +1 -1
  61. package/dist/core/shaders/DiffuseBlur/index.js +2 -2
  62. package/dist/core/shaders/DropShadow/index.d.ts.map +1 -1
  63. package/dist/core/shaders/DropShadow/index.js +1 -1
  64. package/dist/core/shaders/Duotone/index.d.ts.map +1 -1
  65. package/dist/core/shaders/Duotone/index.js +1 -2
  66. package/dist/core/shaders/FloatingParticles/index.d.ts.map +1 -1
  67. package/dist/core/shaders/FloatingParticles/index.js +1 -1
  68. package/dist/core/shaders/FlowField/index.js +2 -2
  69. package/dist/core/shaders/FlutedGlass/index.d.ts +97 -0
  70. package/dist/core/shaders/FlutedGlass/index.d.ts.map +1 -0
  71. package/dist/core/shaders/FlutedGlass/index.js +6 -0
  72. package/dist/core/shaders/Fog/index.js +1 -1
  73. package/dist/core/shaders/Form3D/index.d.ts.map +1 -1
  74. package/dist/core/shaders/Form3D/index.js +1 -1
  75. package/dist/core/shaders/Glass/index.d.ts.map +1 -1
  76. package/dist/core/shaders/Glass/index.js +2 -2
  77. package/dist/core/shaders/GlassTiles/index.js +1 -1
  78. package/dist/core/shaders/Glitch/index.js +1 -1
  79. package/dist/core/shaders/Glow/index.d.ts +2 -2
  80. package/dist/core/shaders/Glow/index.d.ts.map +1 -1
  81. package/dist/core/shaders/Glow/index.js +2 -2
  82. package/dist/core/shaders/Godrays/index.js +1 -1
  83. package/dist/core/shaders/Grayscale/index.js +1 -1
  84. package/dist/core/shaders/Grid/index.js +1 -1
  85. package/dist/core/shaders/GridDistortion/index.d.ts.map +1 -1
  86. package/dist/core/shaders/GridDistortion/index.js +2 -2
  87. package/dist/core/shaders/Group/index.js +1 -1
  88. package/dist/core/shaders/Halftone/index.js +1 -1
  89. package/dist/core/shaders/HexGrid/index.js +1 -1
  90. package/dist/core/shaders/HueShift/index.d.ts.map +1 -1
  91. package/dist/core/shaders/HueShift/index.js +1 -1
  92. package/dist/core/shaders/ImageTexture/index.d.ts.map +1 -1
  93. package/dist/core/shaders/ImageTexture/index.js +1 -1
  94. package/dist/core/shaders/Invert/index.js +1 -1
  95. package/dist/core/shaders/Kaleidoscope/index.js +2 -2
  96. package/dist/core/shaders/LensFlare/index.js +1 -1
  97. package/dist/core/shaders/LinearBlur/index.js +1 -1
  98. package/dist/core/shaders/LinearGradient/index.js +1 -1
  99. package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
  100. package/dist/core/shaders/Liquify/index.js +2 -2
  101. package/dist/core/shaders/Mirror/index.js +2 -2
  102. package/dist/core/shaders/MultiPointGradient/index.js +1 -1
  103. package/dist/core/shaders/Neon/index.js +1 -1
  104. package/dist/core/shaders/Paper/index.js +1 -1
  105. package/dist/core/shaders/Perspective/index.js +2 -2
  106. package/dist/core/shaders/Pixelate/index.js +1 -1
  107. package/dist/core/shaders/Plasma/index.js +1 -1
  108. package/dist/core/shaders/PolarCoordinates/index.js +2 -2
  109. package/dist/core/shaders/Polygon/index.js +1 -1
  110. package/dist/core/shaders/Posterize/index.js +1 -1
  111. package/dist/core/shaders/ProgressiveBlur/index.d.ts.map +1 -1
  112. package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
  113. package/dist/core/shaders/RadialGradient/index.js +1 -1
  114. package/dist/core/shaders/RectangularCoordinates/index.js +2 -2
  115. package/dist/core/shaders/Ring/index.js +1 -1
  116. package/dist/core/shaders/Ripples/index.js +1 -1
  117. package/dist/core/shaders/RoundedRect/index.js +1 -1
  118. package/dist/core/shaders/Saturation/index.d.ts.map +1 -1
  119. package/dist/core/shaders/Saturation/index.js +1 -1
  120. package/dist/core/shaders/Sharpness/index.d.ts.map +1 -1
  121. package/dist/core/shaders/Sharpness/index.js +1 -1
  122. package/dist/core/shaders/Shatter/index.d.ts.map +1 -1
  123. package/dist/core/shaders/Shatter/index.js +2 -2
  124. package/dist/core/shaders/SimplexNoise/index.d.ts +7 -0
  125. package/dist/core/shaders/SimplexNoise/index.d.ts.map +1 -1
  126. package/dist/core/shaders/SimplexNoise/index.js +1 -1
  127. package/dist/core/shaders/SineWave/index.js +1 -1
  128. package/dist/core/shaders/Smoke/index.js +1 -1
  129. package/dist/core/shaders/SmokeFill/index.js +1 -1
  130. package/dist/core/shaders/Solarize/index.js +1 -1
  131. package/dist/core/shaders/SolidColor/index.js +1 -1
  132. package/dist/core/shaders/Spherize/index.js +1 -1
  133. package/dist/core/shaders/Spiral/index.js +1 -1
  134. package/dist/core/shaders/Star/index.js +1 -1
  135. package/dist/core/shaders/Strands/index.js +1 -1
  136. package/dist/core/shaders/Stretch/index.js +2 -2
  137. package/dist/core/shaders/Stripes/index.js +1 -1
  138. package/dist/core/shaders/StudioBackground/index.js +1 -1
  139. package/dist/core/shaders/Swirl/index.d.ts.map +1 -1
  140. package/dist/core/shaders/Swirl/index.js +1 -1
  141. package/dist/core/shaders/TiltShift/index.d.ts.map +1 -1
  142. package/dist/core/shaders/TiltShift/index.js +2 -2
  143. package/dist/core/shaders/Tint/index.d.ts.map +1 -1
  144. package/dist/core/shaders/Tint/index.js +1 -1
  145. package/dist/core/shaders/Trapezoid/index.js +1 -1
  146. package/dist/core/shaders/Tritone/index.d.ts.map +1 -1
  147. package/dist/core/shaders/Tritone/index.js +1 -2
  148. package/dist/core/shaders/Truchet/index.js +1 -1
  149. package/dist/core/shaders/Twirl/index.js +2 -2
  150. package/dist/core/shaders/VHS/index.js +1 -1
  151. package/dist/core/shaders/Vesica/index.js +1 -1
  152. package/dist/core/shaders/Vibrance/index.js +1 -1
  153. package/dist/core/shaders/VideoTexture/index.d.ts.map +1 -1
  154. package/dist/core/shaders/VideoTexture/index.js +2 -2
  155. package/dist/core/shaders/Vignette/index.js +1 -1
  156. package/dist/core/shaders/Voronoi/index.js +1 -1
  157. package/dist/core/shaders/WaveDistortion/index.js +2 -2
  158. package/dist/core/shaders/Weave/index.js +1 -1
  159. package/dist/core/shaders/WebcamTexture/index.d.ts.map +1 -1
  160. package/dist/core/shaders/WebcamTexture/index.js +2 -2
  161. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  162. package/dist/core/utilities/computeBlur.d.ts +29 -31
  163. package/dist/core/utilities/computeBlur.d.ts.map +1 -1
  164. package/dist/js/createShader.d.ts.map +1 -1
  165. package/dist/js/createShader.js +3 -2
  166. package/dist/js/createSharedDevice.d.ts +36 -0
  167. package/dist/js/createSharedDevice.d.ts.map +1 -0
  168. package/dist/js/createSharedDevice.js +15 -0
  169. package/dist/js/index.d.ts +1 -0
  170. package/dist/js/index.d.ts.map +1 -1
  171. package/dist/js/index.js +2 -1
  172. package/dist/js/types.d.ts +10 -0
  173. package/dist/js/types.d.ts.map +1 -1
  174. package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
  175. package/dist/js/utils/generatePresetCode.js +21 -1
  176. package/dist/react/FlutedGlass.js +223 -0
  177. package/dist/react/Preview.js +1 -0
  178. package/dist/react/Shader.js +1 -1
  179. package/dist/react/components/FlutedGlass.d.ts +41 -0
  180. package/dist/react/components/FlutedGlass.d.ts.map +1 -0
  181. package/dist/react/engine/Preview.d.ts.map +1 -1
  182. package/dist/react/index.d.ts +1 -0
  183. package/dist/react/index.d.ts.map +1 -1
  184. package/dist/react/index.js +2 -1
  185. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  186. package/dist/react/utils/generatePresetCode.js +21 -1
  187. package/dist/registry.js +628 -83
  188. package/dist/solid/components/FlutedGlass.d.ts +38 -0
  189. package/dist/solid/components/FlutedGlass.d.ts.map +1 -0
  190. package/dist/solid/components/FlutedGlass.js +228 -0
  191. package/dist/solid/engine/Preview.d.ts.map +1 -1
  192. package/dist/solid/engine/Preview.js +76 -74
  193. package/dist/solid/engine/Shader.js +1 -1
  194. package/dist/solid/index.d.ts +1 -0
  195. package/dist/solid/index.d.ts.map +1 -1
  196. package/dist/solid/index.js +146 -144
  197. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  198. package/dist/solid/utils/generatePresetCode.js +21 -1
  199. package/dist/svelte/components/FlutedGlass.svelte.d.ts +28 -0
  200. package/dist/svelte/{generatePresetCode-DR_OAIL7.js → generatePresetCode-DAEzZxbM.js} +21 -1
  201. package/dist/svelte/index.d.ts +1 -0
  202. package/dist/svelte/index.js +769 -569
  203. package/dist/svelte/source/components/FlutedGlass.svelte +334 -0
  204. package/dist/svelte/source/engine/Preview.svelte +2 -0
  205. package/dist/svelte/source/index.js +1 -0
  206. package/dist/svelte/utils/generatePresetCode.js +1 -1
  207. package/dist/vue/FlutedGlass.js +3 -0
  208. package/dist/vue/FlutedGlass.vue_vue_type_script_setup_true_lang.js +226 -0
  209. package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
  210. package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
  211. package/dist/vue/SimplexNoise.vue_vue_type_script_setup_true_lang.js +1 -0
  212. package/dist/vue/components/FlutedGlass.vue.d.ts +63 -0
  213. package/dist/vue/components/FlutedGlass.vue.d.ts.map +1 -0
  214. package/dist/vue/index.d.ts +1 -0
  215. package/dist/vue/index.d.ts.map +1 -1
  216. package/dist/vue/index.js +2 -1
  217. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  218. package/dist/vue/utils/generatePresetCode.js +21 -1
  219. package/package.json +9 -1
  220. package/dist/core/Swirl-By5FadQK.js +0 -103
  221. package/dist/core/computeBlur-DeXZ99YL.js +0 -150
  222. package/dist/core/shaderRegistry-fwljIrjT.js +0 -252
  223. /package/dist/core/{Fog-BeKcPcTq.js → Fog-CIdU2Wn-.js} +0 -0
  224. /package/dist/core/{GlassTiles-Dgh6nOaE.js → GlassTiles-CMx4NyO-.js} +0 -0
  225. /package/dist/core/{Glitch-BsbzLahF.js → Glitch-BdygvJKe.js} +0 -0
  226. /package/dist/core/{Godrays-D1LINbut.js → Godrays-w3ruw4NO.js} +0 -0
  227. /package/dist/core/{Grayscale-Ri-695Uh.js → Grayscale-ChaVI3AW.js} +0 -0
  228. /package/dist/core/{Grid-BYSsAIEv.js → Grid-CKbLS5tU.js} +0 -0
  229. /package/dist/core/{Group-CkhjTW59.js → Group-BqVJ4S7i.js} +0 -0
  230. /package/dist/core/{Halftone-BUCDTTAU.js → Halftone-BGQeBAgG.js} +0 -0
  231. /package/dist/core/{HexGrid-BUiDrehv.js → HexGrid-BFrnZEZT.js} +0 -0
  232. /package/dist/core/{Invert-azYrcDMi.js → Invert-D3tc2UGp.js} +0 -0
  233. /package/dist/core/{LensFlare-ttrXgfea.js → LensFlare-B8x1fOKu.js} +0 -0
  234. /package/dist/core/{LinearBlur-By2aD8OO.js → LinearBlur-CshzmjfO.js} +0 -0
  235. /package/dist/core/{LinearGradient-CM02z32l.js → LinearGradient-Bzwquw_Q.js} +0 -0
  236. /package/dist/core/{MultiPointGradient-8zGSIM4U.js → MultiPointGradient-D0QQwizn.js} +0 -0
  237. /package/dist/core/{Neon-CMmGJzPy.js → Neon-eN4HlILk.js} +0 -0
  238. /package/dist/core/{Paper-B08rxNys.js → Paper-BmeUPAFe.js} +0 -0
  239. /package/dist/core/{Pixelate-dxPAFCRu.js → Pixelate-DqZcUKFK.js} +0 -0
  240. /package/dist/core/{Plasma-DGCw0cd7.js → Plasma-COq8mAw2.js} +0 -0
  241. /package/dist/core/{Polygon-CsCOt5YE.js → Polygon-BP5eKEiz.js} +0 -0
  242. /package/dist/core/{Posterize-Blv9pzPT.js → Posterize-CxYemXTn.js} +0 -0
  243. /package/dist/core/{RadialGradient-De0gtdh3.js → RadialGradient-SASVv2vb.js} +0 -0
  244. /package/dist/core/{Ring-kHH-DIDQ.js → Ring-CdJlzjRV.js} +0 -0
  245. /package/dist/core/{Ripples-Bf6Zwg6X.js → Ripples-BRZPZszq.js} +0 -0
  246. /package/dist/core/{RoundedRect-B0sWh2BN.js → RoundedRect-lzzi_1J7.js} +0 -0
  247. /package/dist/core/{SineWave-VTNDSK_g.js → SineWave--i6bSrad.js} +0 -0
  248. /package/dist/core/{Smoke-9MJIAKq7.js → Smoke-BgPHDWDR.js} +0 -0
  249. /package/dist/core/{SmokeFill-qV2iRIts.js → SmokeFill-Dtctgt2S.js} +0 -0
  250. /package/dist/core/{Solarize-CWDgSBiv.js → Solarize-gNMmd47z.js} +0 -0
  251. /package/dist/core/{SolidColor-DhMdM3bE.js → SolidColor-D9ikFFu3.js} +0 -0
  252. /package/dist/core/{Spherize-BZxwopX8.js → Spherize-ZBorEEOU.js} +0 -0
  253. /package/dist/core/{Spiral-gpkw37l1.js → Spiral-sg-i02xw.js} +0 -0
  254. /package/dist/core/{Star-WJAOZ5P5.js → Star-BcqCHzHG.js} +0 -0
  255. /package/dist/core/{Strands-DOthZNHt.js → Strands-XLpth60o.js} +0 -0
  256. /package/dist/core/{Stripes-CFCXw1_N.js → Stripes-DEOXYnmy.js} +0 -0
  257. /package/dist/core/{StudioBackground-DJr-cxOL.js → StudioBackground-B5dpTR_X.js} +0 -0
  258. /package/dist/core/{Trapezoid-Co0sIA73.js → Trapezoid-BvTEGdW_.js} +0 -0
  259. /package/dist/core/{Truchet-CkFSkniR.js → Truchet-DE4lgYRb.js} +0 -0
  260. /package/dist/core/{VHS-mKd1QBBj.js → VHS-DbNjgUEX.js} +0 -0
  261. /package/dist/core/{Vesica-CxP7UD0a.js → Vesica-DqJMyqmy.js} +0 -0
  262. /package/dist/core/{Vibrance-WR5yQv_9.js → Vibrance-IDvmP1Xw.js} +0 -0
  263. /package/dist/core/{Vignette-hAIKTi35.js → Vignette-CA12P9VO.js} +0 -0
  264. /package/dist/core/{Voronoi-DOGmwUSK.js → Voronoi-DXeJ3xOf.js} +0 -0
  265. /package/dist/core/{Weave-CIP_EUPa.js → Weave-Bn2CfeE4.js} +0 -0
  266. /package/dist/core/{ZoomBlur-BuIVpHGG.js → ZoomBlur-DOzP_sOK.js} +0 -0
  267. /package/dist/core/{browser-D8zonASQ.js → browser-CsOpQ0L_.js} +0 -0
@@ -1,12 +1,10 @@
1
1
  import { a as transformColor, o as transformColorSpace, t as colorSpaceOptions } from "./transformations-B5lM6fYX.js";
2
- import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
3
2
  import { t as mixColors } from "./colorMixing-BPpDnR5I.js";
4
- import { convertToTexture, dot, screenUV, smoothstep, vec3, vec4 } from "three/tsl";
3
+ import { dot, smoothstep, vec3, vec4 } from "three/tsl";
5
4
  const componentDefinition = {
6
5
  name: "Tritone",
7
6
  category: "Adjustments",
8
7
  description: "Map colors to three tones: shadows, midtones, highlights",
9
- requiresRTT: true,
10
8
  requiresChild: true,
11
9
  props: {
12
10
  colorA: {
@@ -64,19 +62,14 @@ const componentDefinition = {
64
62
  }
65
63
  }
66
64
  },
67
- fragmentNode: ({ uniforms, childNode, onCleanup }) => {
65
+ fragmentNode: ({ uniforms, childNode }) => {
68
66
  if (!childNode) return vec4(0, 0, 0, 0);
69
- const childTexture = convertToTexture(childNode);
70
- onCleanup(() => {
71
- if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
72
- });
73
- const inputColor = unpremultiplyAlpha(childTexture.sample(screenUV));
74
- const luminance = dot(inputColor.rgb, vec3(.299, .587, .114));
67
+ const luminance = dot(vec3(childNode.r, childNode.g, childNode.b), vec3(.299, .587, .114));
75
68
  const shadowToMid = smoothstep(uniforms.blendMid.uniform.sub(.25), uniforms.blendMid.uniform, luminance);
76
69
  const csMode = uniforms.colorSpace.uniform.value;
77
70
  const lowerBlend = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, shadowToMid, csMode);
78
71
  const midToHighlight = smoothstep(uniforms.blendMid.uniform, uniforms.blendMid.uniform.add(.25), luminance);
79
- return vec4(mixColors(lowerBlend, mixColors(uniforms.colorB.uniform, uniforms.colorC.uniform, midToHighlight, csMode), smoothstep(uniforms.blendMid.uniform.sub(.1), uniforms.blendMid.uniform.add(.1), luminance), csMode).rgb, inputColor.a);
72
+ return vec4(mixColors(lowerBlend, mixColors(uniforms.colorB.uniform, uniforms.colorC.uniform, midToHighlight, csMode), smoothstep(uniforms.blendMid.uniform.sub(.1), uniforms.blendMid.uniform.add(.1), luminance), csMode).rgb, childNode.a);
80
73
  }
81
74
  };
82
75
  var Tritone_default = componentDefinition;
@@ -1,4 +1,4 @@
1
- import { t as applyEdgeHandling } from "./edges-CfGcQniB.js";
1
+ import { t as applyEdgeHandling } from "./edges-CX_lJB9R.js";
2
2
  import { c as transformEdges, l as transformPosition } from "./transformations-B5lM6fYX.js";
3
3
  import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
4
4
  import { convertToTexture, cos, length, screenUV, sin, vec2, vec4, viewportSize } from "three/tsl";
@@ -1,6 +1,6 @@
1
- import { t as needsVideoCanvasWorkaround } from "./browser-D8zonASQ.js";
1
+ import { t as needsVideoCanvasWorkaround } from "./browser-CsOpQ0L_.js";
2
2
  import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
3
- import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
3
+ import { float, max, min, or, screenUV, select, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
4
4
  const componentDefinition = {
5
5
  name: "VideoTexture",
6
6
  category: "Textures",
@@ -27,6 +27,7 @@ const componentDefinition = {
27
27
  "none": 4
28
28
  }[value] ?? 0;
29
29
  },
30
+ compileTime: true,
30
31
  ui: {
31
32
  type: "select",
32
33
  options: [
@@ -175,22 +176,34 @@ const componentDefinition = {
175
176
  });
176
177
  const uv$1 = baseUV;
177
178
  const viewportAspect = viewportSize.x.div(viewportSize.y);
178
- const objectFitMode = uniforms.objectFit.uniform;
179
- const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
180
- const coverUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
181
- const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
182
- const containUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
183
- const fillUVScale = vec2(1, 1);
184
- const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
185
- const scaleDownUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
186
- const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
187
- const noneUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
188
- const isCover = step(objectFitMode, float(.5));
189
- const isContain = step(float(.5), objectFitMode).mul(step(objectFitMode, float(1.5)));
190
- const isFill = step(float(1.5), objectFitMode).mul(step(objectFitMode, float(2.5)));
191
- const isScaleDown = step(float(2.5), objectFitMode).mul(step(objectFitMode, float(3.5)));
192
- const isNone = step(float(3.5), objectFitMode);
193
- const uvScale = vec2(0).add(coverUVScale.mul(isCover)).add(containUVScale.mul(isContain)).add(fillUVScale.mul(isFill)).add(scaleDownUVScale.mul(isScaleDown)).add(noneUVScale.mul(isNone));
179
+ const objectFitMode = uniforms.objectFit.uniform.value;
180
+ let uvScale;
181
+ switch (objectFitMode) {
182
+ case 1: {
183
+ const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
184
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
185
+ break;
186
+ }
187
+ case 2:
188
+ uvScale = vec2(1, 1);
189
+ break;
190
+ case 3: {
191
+ const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
192
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
193
+ break;
194
+ }
195
+ case 4: {
196
+ const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
197
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
198
+ break;
199
+ }
200
+ case 0:
201
+ default: {
202
+ const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
203
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
204
+ break;
205
+ }
206
+ }
194
207
  const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
195
208
  const finalUV = vec2(adjustedUV.x, float(1).sub(adjustedUV.y));
196
209
  const sampledColor = textureNode.sample(finalUV);
@@ -1,4 +1,4 @@
1
- import { t as applyEdgeHandling } from "./edges-CfGcQniB.js";
1
+ import { t as applyEdgeHandling } from "./edges-CX_lJB9R.js";
2
2
  import { c as transformEdges } from "./transformations-B5lM6fYX.js";
3
3
  import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
4
4
  import { t as createAnimatedTime } from "./time-DUqSFWvT.js";
@@ -1,6 +1,6 @@
1
- import { t as needsVideoCanvasWorkaround } from "./browser-D8zonASQ.js";
1
+ import { t as needsVideoCanvasWorkaround } from "./browser-CsOpQ0L_.js";
2
2
  import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
3
- import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
3
+ import { float, max, min, or, screenUV, select, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
4
4
  const componentDefinition = {
5
5
  name: "WebcamTexture",
6
6
  category: "Textures",
@@ -18,6 +18,7 @@ const componentDefinition = {
18
18
  "none": 4
19
19
  }[value] ?? 0;
20
20
  },
21
+ compileTime: true,
21
22
  ui: {
22
23
  type: "select",
23
24
  options: [
@@ -159,22 +160,34 @@ const componentDefinition = {
159
160
  });
160
161
  const uv$1 = baseUV;
161
162
  const viewportAspect = viewportSize.x.div(viewportSize.y);
162
- const objectFitMode = uniforms.objectFit.uniform;
163
- const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
164
- const coverUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
165
- const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
166
- const containUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
167
- const fillUVScale = vec2(1, 1);
168
- const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
169
- const scaleDownUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
170
- const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
171
- const noneUVScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
172
- const isCover = step(objectFitMode, float(.5));
173
- const isContain = step(float(.5), objectFitMode).mul(step(objectFitMode, float(1.5)));
174
- const isFill = step(float(1.5), objectFitMode).mul(step(objectFitMode, float(2.5)));
175
- const isScaleDown = step(float(2.5), objectFitMode).mul(step(objectFitMode, float(3.5)));
176
- const isNone = step(float(3.5), objectFitMode);
177
- const uvScale = vec2(0).add(coverUVScale.mul(isCover)).add(containUVScale.mul(isContain)).add(fillUVScale.mul(isFill)).add(scaleDownUVScale.mul(isScaleDown)).add(noneUVScale.mul(isNone));
163
+ const objectFitMode = uniforms.objectFit.uniform.value;
164
+ let uvScale;
165
+ switch (objectFitMode) {
166
+ case 1: {
167
+ const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
168
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
169
+ break;
170
+ }
171
+ case 2:
172
+ uvScale = vec2(1, 1);
173
+ break;
174
+ case 3: {
175
+ const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
176
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
177
+ break;
178
+ }
179
+ case 4: {
180
+ const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
181
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
182
+ break;
183
+ }
184
+ case 0:
185
+ default: {
186
+ const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
187
+ uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
188
+ break;
189
+ }
190
+ }
178
191
  const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
179
192
  const mirrorMode = uniforms.mirror.uniform;
180
193
  const finalUV = vec2(select(mirrorMode, float(1).sub(adjustedUV.x), adjustedUV.x), float(1).sub(adjustedUV.y));
@@ -0,0 +1,209 @@
1
+ import { StorageTexture } from "three/webgpu";
2
+ import { FloatType } from "three";
3
+ import { Fn, If, float, instanceIndex, int, storageTexture, textureLoad, textureStore, uint, uniform, uniformArray, uvec2, vec4 } from "three/tsl";
4
+ var DEFAULT_HALF_KERNEL = 24;
5
+ const DEFAULT_COMPUTE_WIDTH = 1024;
6
+ const DEFAULT_COMPUTE_HEIGHT = 640;
7
+ function buildFixedWeights(halfKernel) {
8
+ const sigma = halfKernel / 3;
9
+ const size = halfKernel * 2 + 1;
10
+ const weights = [];
11
+ let sum = 0;
12
+ for (let i = -halfKernel; i <= halfKernel; i++) {
13
+ const w = Math.exp(-(i * i) / (2 * sigma * sigma));
14
+ weights.push(w);
15
+ sum += w;
16
+ }
17
+ for (let i = 0; i < size; i++) weights[i] /= sum;
18
+ return weights;
19
+ }
20
+ var PASSTHROUGH_THRESHOLD = .5;
21
+ function createGaussianBlurCompute(inputTexture, inputWidth, inputHeight, onCleanup, halfKernel = DEFAULT_HALF_KERNEL, computeWidth = DEFAULT_COMPUTE_WIDTH, computeHeight = 640) {
22
+ const KERNEL_SIZE = halfKernel * 2 + 1;
23
+ const HALF_KERNEL = halfKernel;
24
+ const intermediateTex = new StorageTexture(computeWidth, computeHeight);
25
+ intermediateTex.type = FloatType;
26
+ const outputTex = new StorageTexture(computeWidth, computeHeight);
27
+ outputTex.type = FloatType;
28
+ onCleanup(() => {
29
+ intermediateTex.dispose();
30
+ outputTex.dispose();
31
+ });
32
+ const intermediateWriteNode = storageTexture(intermediateTex);
33
+ const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
34
+ const outputNode = storageTexture(outputTex);
35
+ const weightsH = uniformArray(new Array(KERNEL_SIZE).fill(0), "float");
36
+ const weightsV = uniformArray(new Array(KERNEL_SIZE).fill(0), "float");
37
+ let lastRadius = -1;
38
+ const inputWidthU = uniform(inputWidth);
39
+ const inputHeightU = uniform(inputHeight);
40
+ let scaleY = inputHeight / computeHeight;
41
+ const cw = uint(computeWidth);
42
+ const ch = uint(computeHeight);
43
+ const computeHm1 = int(computeHeight - 1);
44
+ const inputWm1 = int(inputWidthU.sub(1));
45
+ const inputHm1 = int(inputHeightU.sub(1));
46
+ const horizontalPass = Fn(() => {
47
+ const idx = instanceIndex;
48
+ const cx = idx.mod(cw);
49
+ const cy = idx.div(cw);
50
+ If(cy.lessThan(ch), () => {
51
+ const sum = vec4(0).toVar();
52
+ const inputCx = cx.toFloat().add(float(.5)).mul(inputWidthU).div(float(computeWidth)).sub(float(.5));
53
+ const inputCy = cy.toFloat().add(float(.5)).mul(inputHeightU).div(float(computeHeight)).sub(float(.5));
54
+ const inputCxI = inputCx.round().toInt();
55
+ const inputCyI = inputCy.round().toInt().clamp(int(0), inputHm1);
56
+ for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
57
+ const texel = textureLoad(inputTexture, uvec2(inputCxI.add(int(i)).clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
58
+ sum.assign(sum.add(texel.mul(weightsH.element(int(i + HALF_KERNEL)))));
59
+ }
60
+ textureStore(intermediateWriteNode, uvec2(cx, cy), sum).toWriteOnly();
61
+ });
62
+ })().compute(computeWidth * computeHeight, [256]);
63
+ const verticalPass = Fn(() => {
64
+ const idx = instanceIndex;
65
+ const cx = idx.mod(cw);
66
+ const cy = idx.div(cw);
67
+ If(cy.lessThan(ch), () => {
68
+ const sum = vec4(0).toVar();
69
+ for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
70
+ const texel = textureLoad(intermediateReadNode, uvec2(cx, cy.toInt().add(int(i)).clamp(int(0), computeHm1).toUint()), int(0));
71
+ sum.assign(sum.add(texel.mul(weightsV.element(int(i + HALF_KERNEL)))));
72
+ }
73
+ textureStore(outputNode, uvec2(cx, cy), sum).toWriteOnly();
74
+ });
75
+ })().compute(computeWidth * computeHeight, [256]);
76
+ function updateWeights() {
77
+ const pixelRadius = lastRadius < 0 ? 4 : lastRadius;
78
+ const sigmaH = Math.max(pixelRadius * .5, .001);
79
+ const sigmaV = Math.max(sigmaH / scaleY, .001);
80
+ const newH = new Array(KERNEL_SIZE);
81
+ const newV = new Array(KERNEL_SIZE);
82
+ let totalH = 0, totalV = 0;
83
+ for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
84
+ const h = Math.exp(-(i * i) / (2 * sigmaH * sigmaH));
85
+ const v = Math.exp(-(i * i) / (2 * sigmaV * sigmaV));
86
+ newH[i + HALF_KERNEL] = h;
87
+ newV[i + HALF_KERNEL] = v;
88
+ totalH += h;
89
+ totalV += v;
90
+ }
91
+ for (let i = 0; i < KERNEL_SIZE; i++) {
92
+ newH[i] /= totalH;
93
+ newV[i] /= totalV;
94
+ }
95
+ weightsH.array = newH;
96
+ weightsV.array = newV;
97
+ }
98
+ function updateRadius(pixelRadius) {
99
+ if (Math.abs(pixelRadius - lastRadius) < .01) return;
100
+ lastRadius = pixelRadius;
101
+ updateWeights();
102
+ }
103
+ updateRadius(4);
104
+ return {
105
+ computeNodes: [horizontalPass, verticalPass],
106
+ outputTexture: outputTex,
107
+ updateRadius,
108
+ computeWidth,
109
+ computeHeight,
110
+ setInputDimensions: (newW, newH) => {
111
+ inputWidthU.value = newW;
112
+ inputHeightU.value = newH;
113
+ const newScaleY = newH / computeHeight;
114
+ if (Math.abs(newScaleY - scaleY) > .001) {
115
+ scaleY = newScaleY;
116
+ updateWeights();
117
+ }
118
+ }
119
+ };
120
+ }
121
+ function createVariableGaussianBlurCompute(inputTexture, inputWidth, inputHeight, onCleanup, halfKernel = DEFAULT_HALF_KERNEL, computeWidth = DEFAULT_COMPUTE_WIDTH, computeHeight = 640) {
122
+ const HALF_KERNEL = halfKernel;
123
+ const FIXED_WEIGHTS = buildFixedWeights(HALF_KERNEL);
124
+ const blurMapTex = new StorageTexture(computeWidth, computeHeight);
125
+ blurMapTex.type = FloatType;
126
+ const blurMapWriteNode = storageTexture(blurMapTex);
127
+ const blurMapReadNode = storageTexture(blurMapTex).toReadOnly();
128
+ const intermediateTex = new StorageTexture(computeWidth, computeHeight);
129
+ intermediateTex.type = FloatType;
130
+ const outputTex = new StorageTexture(computeWidth, computeHeight);
131
+ outputTex.type = FloatType;
132
+ onCleanup(() => {
133
+ blurMapTex.dispose();
134
+ intermediateTex.dispose();
135
+ outputTex.dispose();
136
+ });
137
+ const intermediateWriteNode = storageTexture(intermediateTex);
138
+ const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
139
+ const outputNode = storageTexture(outputTex);
140
+ const weights = uniformArray(FIXED_WEIGHTS, "float");
141
+ const inputWidthU = uniform(inputWidth);
142
+ const inputHeightU = uniform(inputHeight);
143
+ const scaleYU = uniform(inputHeight / computeHeight);
144
+ const cw = uint(computeWidth);
145
+ const ch = uint(computeHeight);
146
+ const computeHm1 = int(computeHeight - 1);
147
+ const inputWm1 = int(inputWidthU.sub(1));
148
+ const inputHm1 = int(inputHeightU.sub(1));
149
+ const invHalf = float(1 / HALF_KERNEL);
150
+ const passthroughThreshold = float(PASSTHROUGH_THRESHOLD);
151
+ return {
152
+ computeNodes: [Fn(() => {
153
+ const idx = instanceIndex;
154
+ const cx = idx.mod(cw);
155
+ const cy = idx.div(cw);
156
+ If(cy.lessThan(ch), () => {
157
+ const blurRadius = textureLoad(blurMapReadNode, uvec2(cx, cy), int(0)).r;
158
+ const inputCx = cx.toFloat().add(float(.5)).mul(inputWidthU).div(float(computeWidth)).sub(float(.5));
159
+ const inputCy = cy.toFloat().add(float(.5)).mul(inputHeightU).div(float(computeHeight)).sub(float(.5));
160
+ const inputCxF = inputCx;
161
+ const inputCyI = inputCy.round().toInt().clamp(int(0), inputHm1);
162
+ If(blurRadius.lessThan(passthroughThreshold), () => {
163
+ const texel = textureLoad(inputTexture, uvec2(inputCxF.round().toInt().clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
164
+ textureStore(intermediateWriteNode, uvec2(cx, cy), texel).toWriteOnly();
165
+ }).Else(() => {
166
+ const sum = vec4(0).toVar();
167
+ for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
168
+ const offset = float(i).mul(invHalf).mul(blurRadius);
169
+ const texel = textureLoad(inputTexture, uvec2(inputCxF.add(offset).round().toInt().clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
170
+ sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
171
+ }
172
+ textureStore(intermediateWriteNode, uvec2(cx, cy), sum).toWriteOnly();
173
+ });
174
+ });
175
+ })().compute(computeWidth * computeHeight, [256]), Fn(() => {
176
+ const idx = instanceIndex;
177
+ const cx = idx.mod(cw);
178
+ const cy = idx.div(cw);
179
+ If(cy.lessThan(ch), () => {
180
+ const blurRadius = textureLoad(blurMapReadNode, uvec2(cx, cy), int(0)).r;
181
+ If(blurRadius.lessThan(passthroughThreshold), () => {
182
+ const texel = textureLoad(intermediateReadNode, uvec2(cx, cy), int(0));
183
+ textureStore(outputNode, uvec2(cx, cy), texel).toWriteOnly();
184
+ }).Else(() => {
185
+ const sum = vec4(0).toVar();
186
+ const yi = cy.toInt();
187
+ const radiusComputeY = blurRadius.div(scaleYU);
188
+ for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
189
+ const offset = float(i).mul(invHalf).mul(radiusComputeY);
190
+ const texel = textureLoad(intermediateReadNode, uvec2(cx, yi.add(offset.round().toInt()).clamp(int(0), computeHm1).toUint()), int(0));
191
+ sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
192
+ }
193
+ textureStore(outputNode, uvec2(cx, cy), sum).toWriteOnly();
194
+ });
195
+ });
196
+ })().compute(computeWidth * computeHeight, [256])],
197
+ outputTexture: outputTex,
198
+ blurMapTexture: blurMapTex,
199
+ blurMapWriteNode,
200
+ computeWidth,
201
+ computeHeight,
202
+ setInputDimensions: (newW, newH) => {
203
+ inputWidthU.value = newW;
204
+ inputHeightU.value = newH;
205
+ scaleYU.value = newH / computeHeight;
206
+ }
207
+ };
208
+ }
209
+ export { createVariableGaussianBlurCompute as i, DEFAULT_COMPUTE_WIDTH as n, createGaussianBlurCompute as r, DEFAULT_COMPUTE_HEIGHT as t };
@@ -1,4 +1,16 @@
1
1
  import { abs, float, fract, mod, select, step, vec2, vec4 } from "three/tsl";
2
+ const applyEdgeToUV = (uv$1, edgeMode) => {
3
+ switch (edgeMode) {
4
+ case 1: return uv$1;
5
+ case 2: {
6
+ const mirrorX = mod(abs(uv$1.x), float(2));
7
+ const mirrorY = mod(abs(uv$1.y), float(2));
8
+ return vec2(select(step(float(1), mirrorX), float(2).sub(mirrorX), mirrorX), select(step(float(1), mirrorY), float(2).sub(mirrorY), mirrorY));
9
+ }
10
+ case 3: return fract(uv$1);
11
+ default: return uv$1.clamp(vec2(0, 0), vec2(1, 1));
12
+ }
13
+ };
2
14
  const applyEdgeHandling = (distortedUV, sampledColor, childTexture, edgeMode) => {
3
15
  switch (edgeMode) {
4
16
  case 1: {
@@ -22,4 +34,4 @@ const applyEdgeHandling = (distortedUV, sampledColor, childTexture, edgeMode) =>
22
34
  default: return sampledColor;
23
35
  }
24
36
  };
25
- export { applyEdgeHandling as t };
37
+ export { applyEdgeToUV as n, applyEdgeHandling as t };