framefields 2.0.2

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 (408) hide show
  1. package/LICENCE +202 -0
  2. package/README.md +740 -0
  3. package/dist/audio/index.d.mts +5 -0
  4. package/dist/audio/index.mjs +14 -0
  5. package/dist/audio-Dvwwz8xU.d.mts +37 -0
  6. package/dist/audio-Dvwwz8xU.d.mts.map +1 -0
  7. package/dist/audio-TAvPwzLR.mjs +214 -0
  8. package/dist/audio-TAvPwzLR.mjs.map +1 -0
  9. package/dist/audio-x28ZgQBP.mjs +85 -0
  10. package/dist/audio-x28ZgQBP.mjs.map +1 -0
  11. package/dist/chunk-GMkBE123.mjs +47 -0
  12. package/dist/client-C74hb7fy.mjs +66 -0
  13. package/dist/client-C74hb7fy.mjs.map +1 -0
  14. package/dist/dist-1iUYuPct.mjs +1859 -0
  15. package/dist/dist-1iUYuPct.mjs.map +1 -0
  16. package/dist/dist-Bx6J0VcM.mjs +1859 -0
  17. package/dist/dist-Bx6J0VcM.mjs.map +1 -0
  18. package/dist/dist-C_hjvkdN.mjs +2220 -0
  19. package/dist/dist-C_hjvkdN.mjs.map +1 -0
  20. package/dist/dist-DKm2IyEJ.mjs +94 -0
  21. package/dist/dist-DKm2IyEJ.mjs.map +1 -0
  22. package/dist/dist-cjs-B5EVqDFp.mjs +85 -0
  23. package/dist/dist-cjs-B5EVqDFp.mjs.map +1 -0
  24. package/dist/dist-cjs-BGJkdexX.mjs +437 -0
  25. package/dist/dist-cjs-BGJkdexX.mjs.map +1 -0
  26. package/dist/dist-cjs-BKmGCgtm.mjs +9069 -0
  27. package/dist/dist-cjs-BKmGCgtm.mjs.map +1 -0
  28. package/dist/dist-cjs-BUc0_kg-.mjs +1091 -0
  29. package/dist/dist-cjs-BUc0_kg-.mjs.map +1 -0
  30. package/dist/dist-cjs-BUwe2XhR.mjs +153 -0
  31. package/dist/dist-cjs-BUwe2XhR.mjs.map +1 -0
  32. package/dist/dist-cjs-BWgoUCXJ.mjs +137 -0
  33. package/dist/dist-cjs-BWgoUCXJ.mjs.map +1 -0
  34. package/dist/dist-cjs-CmZEMtO6.mjs +6 -0
  35. package/dist/dist-cjs-D7kEM-Mj.mjs +181 -0
  36. package/dist/dist-cjs-D7kEM-Mj.mjs.map +1 -0
  37. package/dist/dist-cjs-DFUmy89O.mjs +48 -0
  38. package/dist/dist-cjs-DFUmy89O.mjs.map +1 -0
  39. package/dist/dist-cjs-Df7144zM.mjs +209 -0
  40. package/dist/dist-cjs-Df7144zM.mjs.map +1 -0
  41. package/dist/dist-cjs-DgxjcvBN.mjs +98 -0
  42. package/dist/dist-cjs-DgxjcvBN.mjs.map +1 -0
  43. package/dist/dist-cjs-DsMdld8l.mjs +5015 -0
  44. package/dist/dist-cjs-DsMdld8l.mjs.map +1 -0
  45. package/dist/dist-cjs-Dzs5P3K0.mjs +51 -0
  46. package/dist/dist-cjs-Dzs5P3K0.mjs.map +1 -0
  47. package/dist/dist-cjs-ECMuIF57.mjs +323 -0
  48. package/dist/dist-cjs-ECMuIF57.mjs.map +1 -0
  49. package/dist/dist-cjs-lYvO8aDo.mjs +64 -0
  50. package/dist/dist-cjs-lYvO8aDo.mjs.map +1 -0
  51. package/dist/dist-cjs-qEJrwjGk.mjs +66 -0
  52. package/dist/dist-cjs-qEJrwjGk.mjs.map +1 -0
  53. package/dist/dist-cjs-x5cwlqA5.mjs +43 -0
  54. package/dist/dist-cjs-x5cwlqA5.mjs.map +1 -0
  55. package/dist/dist-gjHmorxL.mjs +27479 -0
  56. package/dist/dist-gjHmorxL.mjs.map +1 -0
  57. package/dist/effects/index.d.mts +5 -0
  58. package/dist/effects/index.mjs +35 -0
  59. package/dist/effects-CHWORCYd.mjs +811 -0
  60. package/dist/effects-CHWORCYd.mjs.map +1 -0
  61. package/dist/event-streams-D-APZ7Ke.mjs +204 -0
  62. package/dist/event-streams-D-APZ7Ke.mjs.map +1 -0
  63. package/dist/fonts/index.d.mts +2 -0
  64. package/dist/fonts/index.mjs +3 -0
  65. package/dist/fonts-DrGTBJJk.mjs +188 -0
  66. package/dist/fonts-DrGTBJJk.mjs.map +1 -0
  67. package/dist/index-B0BNPEoH.d.mts +2117 -0
  68. package/dist/index-B0BNPEoH.d.mts.map +1 -0
  69. package/dist/index-BMVVmc4G.d.mts +72 -0
  70. package/dist/index-BMVVmc4G.d.mts.map +1 -0
  71. package/dist/index-D1ZsMpke.d.mts +264 -0
  72. package/dist/index-D1ZsMpke.d.mts.map +1 -0
  73. package/dist/index-D2jDC7O5.d.mts +3643 -0
  74. package/dist/index-D2jDC7O5.d.mts.map +1 -0
  75. package/dist/index-D2wJqSl5.d.mts +114 -0
  76. package/dist/index-D2wJqSl5.d.mts.map +1 -0
  77. package/dist/index-DKFGNyMB.d.mts +309 -0
  78. package/dist/index-DKFGNyMB.d.mts.map +1 -0
  79. package/dist/index-DiSKzDGR.d.mts +65 -0
  80. package/dist/index-DiSKzDGR.d.mts.map +1 -0
  81. package/dist/index.d.mts +4425 -0
  82. package/dist/index.d.mts.map +1 -0
  83. package/dist/index.mjs +2623 -0
  84. package/dist/index.mjs.map +1 -0
  85. package/dist/package-C58KmGKw.mjs +6 -0
  86. package/dist/package-C58KmGKw.mjs.map +1 -0
  87. package/dist/preview/index.d.mts +90 -0
  88. package/dist/preview/index.d.mts.map +1 -0
  89. package/dist/preview/index.mjs +15 -0
  90. package/dist/preview-engine/audio.mjs +1 -0
  91. package/dist/preview-engine/child_process-AIL2NBWS.mjs +1 -0
  92. package/dist/preview-engine/chunk-24P6DAB3.mjs +1 -0
  93. package/dist/preview-engine/chunk-37EFVZWT.mjs +1 -0
  94. package/dist/preview-engine/chunk-3O5OKR6D.mjs +223 -0
  95. package/dist/preview-engine/chunk-47VT677S.mjs +8 -0
  96. package/dist/preview-engine/chunk-4BEJJKEU.mjs +315 -0
  97. package/dist/preview-engine/chunk-4GEWSUX5.mjs +1 -0
  98. package/dist/preview-engine/chunk-55CCFPUX.mjs +237 -0
  99. package/dist/preview-engine/chunk-5JD65JSJ.mjs +110 -0
  100. package/dist/preview-engine/chunk-5UP7FSGT.mjs +294 -0
  101. package/dist/preview-engine/chunk-5XDHHOF2.mjs +367 -0
  102. package/dist/preview-engine/chunk-6YJP57MZ.mjs +729 -0
  103. package/dist/preview-engine/chunk-6ZOXGAYA.mjs +112 -0
  104. package/dist/preview-engine/chunk-AOLAHYVV.mjs +529 -0
  105. package/dist/preview-engine/chunk-B6PLCMBM.mjs +1 -0
  106. package/dist/preview-engine/chunk-BJKH76OM.mjs +264 -0
  107. package/dist/preview-engine/chunk-BUIQ5TUH.mjs +104 -0
  108. package/dist/preview-engine/chunk-BVF64D6H.mjs +1 -0
  109. package/dist/preview-engine/chunk-CA5N7JRZ.mjs +138 -0
  110. package/dist/preview-engine/chunk-CNSHAFEA.mjs +1 -0
  111. package/dist/preview-engine/chunk-CURR5X7D.mjs +1 -0
  112. package/dist/preview-engine/chunk-CVGM2U4J.mjs +47 -0
  113. package/dist/preview-engine/chunk-CYY366IE.mjs +1 -0
  114. package/dist/preview-engine/chunk-D5PHI6ET.mjs +109 -0
  115. package/dist/preview-engine/chunk-D7MZHP2Y.mjs +275 -0
  116. package/dist/preview-engine/chunk-DPPH3NK2.mjs +182 -0
  117. package/dist/preview-engine/chunk-DPST2XLC.mjs +418 -0
  118. package/dist/preview-engine/chunk-DRLEOHN5.mjs +1 -0
  119. package/dist/preview-engine/chunk-EDIZNO3P.mjs +1 -0
  120. package/dist/preview-engine/chunk-EHIIT4ZR.mjs +52 -0
  121. package/dist/preview-engine/chunk-FKZ4XXPE.mjs +1 -0
  122. package/dist/preview-engine/chunk-G3HW4VER.mjs +60 -0
  123. package/dist/preview-engine/chunk-G76HSKOS.mjs +184 -0
  124. package/dist/preview-engine/chunk-GYG2IIBR.mjs +1 -0
  125. package/dist/preview-engine/chunk-H2F5NVQ6.mjs +63 -0
  126. package/dist/preview-engine/chunk-H5BPCY7N.mjs +188 -0
  127. package/dist/preview-engine/chunk-HAXK42HG.mjs +997 -0
  128. package/dist/preview-engine/chunk-HXMDPMLB.mjs +1 -0
  129. package/dist/preview-engine/chunk-HYBAPT6I.mjs +1 -0
  130. package/dist/preview-engine/chunk-I4FH6HYU.mjs +73 -0
  131. package/dist/preview-engine/chunk-IYVN2QEL.mjs +1 -0
  132. package/dist/preview-engine/chunk-JPXQPP6J.mjs +1 -0
  133. package/dist/preview-engine/chunk-JWNHTRED.mjs +164 -0
  134. package/dist/preview-engine/chunk-KZOLCZIV.mjs +103 -0
  135. package/dist/preview-engine/chunk-L62MRHGZ.mjs +89 -0
  136. package/dist/preview-engine/chunk-LEEZXHQO.mjs +117 -0
  137. package/dist/preview-engine/chunk-LKYN3BM2.mjs +1 -0
  138. package/dist/preview-engine/chunk-LP3EP33S.mjs +610 -0
  139. package/dist/preview-engine/chunk-M2GRYRLM.mjs +111 -0
  140. package/dist/preview-engine/chunk-MC7TZZLD.mjs +134 -0
  141. package/dist/preview-engine/chunk-MT2DZQHO.mjs +1 -0
  142. package/dist/preview-engine/chunk-MTJHQATU.mjs +1 -0
  143. package/dist/preview-engine/chunk-N4LHIPHZ.mjs +340 -0
  144. package/dist/preview-engine/chunk-N4PWLBZ7.mjs +5 -0
  145. package/dist/preview-engine/chunk-NQZKBFC6.mjs +40 -0
  146. package/dist/preview-engine/chunk-NWRSVVTF.mjs +186 -0
  147. package/dist/preview-engine/chunk-P3HBP725.mjs +1 -0
  148. package/dist/preview-engine/chunk-PIAJWALT.mjs +1 -0
  149. package/dist/preview-engine/chunk-PJ3DVG45.mjs +1 -0
  150. package/dist/preview-engine/chunk-QP2NI4XD.mjs +82 -0
  151. package/dist/preview-engine/chunk-SA3JUR6D.mjs +52 -0
  152. package/dist/preview-engine/chunk-SRT2OCQW.mjs +1 -0
  153. package/dist/preview-engine/chunk-SWD76532.mjs +98 -0
  154. package/dist/preview-engine/chunk-SXX7HX34.mjs +191 -0
  155. package/dist/preview-engine/chunk-SZ7YRPKO.mjs +3 -0
  156. package/dist/preview-engine/chunk-TMRLZV5X.mjs +1 -0
  157. package/dist/preview-engine/chunk-U446SQP3.mjs +292 -0
  158. package/dist/preview-engine/chunk-UDNCEHUI.mjs +141 -0
  159. package/dist/preview-engine/chunk-V3H7WWOT.mjs +271 -0
  160. package/dist/preview-engine/chunk-V7ZVVUQU.mjs +108 -0
  161. package/dist/preview-engine/chunk-VJGK7MLJ.mjs +3 -0
  162. package/dist/preview-engine/chunk-VSSB73UU.mjs +58 -0
  163. package/dist/preview-engine/chunk-VXUJWPIK.mjs +1 -0
  164. package/dist/preview-engine/chunk-XD4GKD6H.mjs +5 -0
  165. package/dist/preview-engine/chunk-XKO4RYKN.mjs +3 -0
  166. package/dist/preview-engine/chunk-XOEEGC4Z.mjs +1 -0
  167. package/dist/preview-engine/chunk-YAQFFQPG.mjs +1 -0
  168. package/dist/preview-engine/chunk-YKMBRUAE.mjs +1 -0
  169. package/dist/preview-engine/chunk-YSTLMWCG.mjs +1 -0
  170. package/dist/preview-engine/chunk-Z4ERCLNF.mjs +1 -0
  171. package/dist/preview-engine/chunk-ZEYUXJIV.mjs +1 -0
  172. package/dist/preview-engine/chunk-ZX6APG6E.mjs +117 -0
  173. package/dist/preview-engine/effects.mjs +1 -0
  174. package/dist/preview-engine/esbuild-GWV7CM7D.mjs +1 -0
  175. package/dist/preview-engine/fonts.mjs +1 -0
  176. package/dist/preview-engine/framefields.mjs +1959 -0
  177. package/dist/preview-engine/onnxruntime-node-56GSZEH3.mjs +1 -0
  178. package/dist/preview-engine/player.mjs +155 -0
  179. package/dist/preview-engine/renderers-2AUSIYZN.mjs +1 -0
  180. package/dist/preview-engine/renderers-2QN6KZJP.mjs +1 -0
  181. package/dist/preview-engine/renderers-32SKW7ML.mjs +1 -0
  182. package/dist/preview-engine/renderers-5QYK6766.mjs +1 -0
  183. package/dist/preview-engine/renderers-6BJA6MSU.mjs +251 -0
  184. package/dist/preview-engine/renderers-6QAF3LQ2.mjs +1 -0
  185. package/dist/preview-engine/renderers-7AO5746S.mjs +296 -0
  186. package/dist/preview-engine/renderers-AFYKNM6N.mjs +1 -0
  187. package/dist/preview-engine/renderers-AGMH5CRH.mjs +1 -0
  188. package/dist/preview-engine/renderers-AHSGP6LY.mjs +126 -0
  189. package/dist/preview-engine/renderers-ASTBICLA.mjs +1 -0
  190. package/dist/preview-engine/renderers-BHVPLYNN.mjs +1 -0
  191. package/dist/preview-engine/renderers-D7PVQFVU.mjs +1 -0
  192. package/dist/preview-engine/renderers-DB4ABTNA.mjs +1 -0
  193. package/dist/preview-engine/renderers-F2NFJI5L.mjs +1 -0
  194. package/dist/preview-engine/renderers-FI7YHNLY.mjs +1 -0
  195. package/dist/preview-engine/renderers-GBHULMPH.mjs +1 -0
  196. package/dist/preview-engine/renderers-GUKQUMGG.mjs +55 -0
  197. package/dist/preview-engine/renderers-HGT7QDY3.mjs +1 -0
  198. package/dist/preview-engine/renderers-HOYLA7ZK.mjs +1 -0
  199. package/dist/preview-engine/renderers-KKI2D3MZ.mjs +1 -0
  200. package/dist/preview-engine/renderers-KRAJNV4E.mjs +1 -0
  201. package/dist/preview-engine/renderers-KUGZKSVE.mjs +1 -0
  202. package/dist/preview-engine/renderers-L2EQQIOC.mjs +1 -0
  203. package/dist/preview-engine/renderers-LK3NRMGR.mjs +1 -0
  204. package/dist/preview-engine/renderers-LX654SZ3.mjs +1 -0
  205. package/dist/preview-engine/renderers-MCFQFYEL.mjs +1 -0
  206. package/dist/preview-engine/renderers-O6HOYIPS.mjs +1 -0
  207. package/dist/preview-engine/renderers-OEVXCGE2.mjs +1 -0
  208. package/dist/preview-engine/renderers-QVD6C4CS.mjs +1 -0
  209. package/dist/preview-engine/renderers-R3XEYD5V.mjs +248 -0
  210. package/dist/preview-engine/renderers-RBFWJWVM.mjs +1 -0
  211. package/dist/preview-engine/renderers-RX3VLVLO.mjs +1 -0
  212. package/dist/preview-engine/renderers-SM6JP64K.mjs +1 -0
  213. package/dist/preview-engine/renderers-TKMAATVS.mjs +1 -0
  214. package/dist/preview-engine/renderers-UGZUPONY.mjs +1 -0
  215. package/dist/preview-engine/renderers-UTFXZE3G.mjs +1 -0
  216. package/dist/preview-engine/renderers-UWPH7HBH.mjs +1 -0
  217. package/dist/preview-engine/renderers-UZGECFVO.mjs +1 -0
  218. package/dist/preview-engine/renderers-VGU3LNLT.mjs +1 -0
  219. package/dist/preview-engine/renderers-W3VVM5HB.mjs +1 -0
  220. package/dist/preview-engine/renderers-WJUTT5BB.mjs +1 -0
  221. package/dist/preview-engine/renderers-XA2M4YXK.mjs +1 -0
  222. package/dist/preview-engine/renderers-XIHRFEFQ.mjs +1 -0
  223. package/dist/preview-engine/renderers-XJTA5MFG.mjs +1 -0
  224. package/dist/preview-engine/renderers-XLTY5APF.mjs +1 -0
  225. package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +1 -0
  226. package/dist/preview-engine/renderers-YKUQUCTO.mjs +124 -0
  227. package/dist/preview-engine/renderers-YVN3EIOP.mjs +1 -0
  228. package/dist/preview-engine/renderers-YWRP23SZ.mjs +125 -0
  229. package/dist/preview-engine/renderers-ZPWOUWZJ.mjs +120 -0
  230. package/dist/preview-engine/resvg-js-VMU4A77S.mjs +1 -0
  231. package/dist/preview-engine/server-utils-2FAIV45N.mjs +1 -0
  232. package/dist/preview-engine/sharp-V6ZTBNDW.mjs +1 -0
  233. package/dist/preview-engine/shims/fs-promises.mjs +1 -0
  234. package/dist/preview-engine/shims/fs.mjs +1 -0
  235. package/dist/preview-engine/shims/module.mjs +1 -0
  236. package/dist/preview-engine/shims/os.mjs +1 -0
  237. package/dist/preview-engine/shims/path.mjs +1 -0
  238. package/dist/preview-engine/shims/url.mjs +1 -0
  239. package/dist/preview-engine/signals.mjs +1 -0
  240. package/dist/preview-engine/webgpu-NSSANM4F.mjs +1 -0
  241. package/dist/preview-uQM210iy.mjs +2149 -0
  242. package/dist/preview-uQM210iy.mjs.map +1 -0
  243. package/dist/program-Dl510wmI.mjs +5183 -0
  244. package/dist/program-Dl510wmI.mjs.map +1 -0
  245. package/dist/renderer/index.d.mts +3 -0
  246. package/dist/renderer/index.mjs +6 -0
  247. package/dist/renderer-3BNskNuJ.mjs +3 -0
  248. package/dist/renderer-7DOcIxFG.mjs +288 -0
  249. package/dist/renderer-7DOcIxFG.mjs.map +1 -0
  250. package/dist/renderer-9dHlMQGX.mjs +3 -0
  251. package/dist/renderer-B1CvhW4p.mjs +677 -0
  252. package/dist/renderer-B1CvhW4p.mjs.map +1 -0
  253. package/dist/renderer-B2XzjK0z.mjs +3 -0
  254. package/dist/renderer-B80s47yo.mjs +166 -0
  255. package/dist/renderer-B80s47yo.mjs.map +1 -0
  256. package/dist/renderer-B9-QSJcG.mjs +479 -0
  257. package/dist/renderer-B9-QSJcG.mjs.map +1 -0
  258. package/dist/renderer-BAQmR0Zo.mjs +3 -0
  259. package/dist/renderer-BDLnExoP.mjs +127 -0
  260. package/dist/renderer-BDLnExoP.mjs.map +1 -0
  261. package/dist/renderer-BGXU6vcW.mjs +270 -0
  262. package/dist/renderer-BGXU6vcW.mjs.map +1 -0
  263. package/dist/renderer-BGvORwkQ.mjs +3 -0
  264. package/dist/renderer-BLikd6BK.mjs +3 -0
  265. package/dist/renderer-BMovYRoR.mjs +3 -0
  266. package/dist/renderer-BQHbp-Sp.mjs +243 -0
  267. package/dist/renderer-BQHbp-Sp.mjs.map +1 -0
  268. package/dist/renderer-BREIjsUU.mjs +252 -0
  269. package/dist/renderer-BREIjsUU.mjs.map +1 -0
  270. package/dist/renderer-BSbTJBWc.mjs +3 -0
  271. package/dist/renderer-BTu2EVhF.mjs +3 -0
  272. package/dist/renderer-BU1rwNRT.mjs +3 -0
  273. package/dist/renderer-BXMmISWG.mjs +499 -0
  274. package/dist/renderer-BXMmISWG.mjs.map +1 -0
  275. package/dist/renderer-BZJm3m4f.mjs +3 -0
  276. package/dist/renderer-B_NuVaIP.mjs +744 -0
  277. package/dist/renderer-B_NuVaIP.mjs.map +1 -0
  278. package/dist/renderer-BfJSUjPN.mjs +3 -0
  279. package/dist/renderer-BqyAgNt3.mjs +3 -0
  280. package/dist/renderer-BryTM2g7.mjs +3 -0
  281. package/dist/renderer-BsgIcBKH.mjs +391 -0
  282. package/dist/renderer-BsgIcBKH.mjs.map +1 -0
  283. package/dist/renderer-ByDhfrPE.mjs +422 -0
  284. package/dist/renderer-ByDhfrPE.mjs.map +1 -0
  285. package/dist/renderer-C-H680_l.mjs +3 -0
  286. package/dist/renderer-C17wL9QX.mjs +181 -0
  287. package/dist/renderer-C17wL9QX.mjs.map +1 -0
  288. package/dist/renderer-C2n-EHxg.mjs +1 -0
  289. package/dist/renderer-CB5aWAaf.mjs +343 -0
  290. package/dist/renderer-CB5aWAaf.mjs.map +1 -0
  291. package/dist/renderer-CB7lH5K8.mjs +3 -0
  292. package/dist/renderer-CDLrNgfo.mjs +3 -0
  293. package/dist/renderer-CDOUAN7X.mjs +454 -0
  294. package/dist/renderer-CDOUAN7X.mjs.map +1 -0
  295. package/dist/renderer-CH8sdfYX.mjs +387 -0
  296. package/dist/renderer-CH8sdfYX.mjs.map +1 -0
  297. package/dist/renderer-CIvaRnP_.mjs +261 -0
  298. package/dist/renderer-CIvaRnP_.mjs.map +1 -0
  299. package/dist/renderer-CMzEjdzi.mjs +369 -0
  300. package/dist/renderer-CMzEjdzi.mjs.map +1 -0
  301. package/dist/renderer-COkcU3db.mjs +3302 -0
  302. package/dist/renderer-COkcU3db.mjs.map +1 -0
  303. package/dist/renderer-CQCoggIa.mjs +3 -0
  304. package/dist/renderer-CQdVj2JS.mjs +3 -0
  305. package/dist/renderer-CQiTodg9.mjs +337 -0
  306. package/dist/renderer-CQiTodg9.mjs.map +1 -0
  307. package/dist/renderer-CV2m6k1V.mjs +3 -0
  308. package/dist/renderer-CYY-poLe.mjs +3 -0
  309. package/dist/renderer-CZgB5st8.mjs +3 -0
  310. package/dist/renderer-C_Ki91kc.mjs +3 -0
  311. package/dist/renderer-CclIvsLO.mjs +3 -0
  312. package/dist/renderer-Cj-whdVr.mjs +655 -0
  313. package/dist/renderer-Cj-whdVr.mjs.map +1 -0
  314. package/dist/renderer-CkykdR_D.mjs +3 -0
  315. package/dist/renderer-Cl1oUXMi.mjs +1143 -0
  316. package/dist/renderer-Cl1oUXMi.mjs.map +1 -0
  317. package/dist/renderer-CmApuKjS.mjs +3 -0
  318. package/dist/renderer-CpkiHRhh.mjs +269 -0
  319. package/dist/renderer-CpkiHRhh.mjs.map +1 -0
  320. package/dist/renderer-CszOjcRW.mjs +3 -0
  321. package/dist/renderer-CtVkU_GA.mjs +44 -0
  322. package/dist/renderer-CtVkU_GA.mjs.map +1 -0
  323. package/dist/renderer-Cu074POw.mjs +3 -0
  324. package/dist/renderer-CwQhzcUn.mjs +644 -0
  325. package/dist/renderer-CwQhzcUn.mjs.map +1 -0
  326. package/dist/renderer-CzPWB0Ss.mjs +273 -0
  327. package/dist/renderer-CzPWB0Ss.mjs.map +1 -0
  328. package/dist/renderer-D4qLmox-.mjs +3 -0
  329. package/dist/renderer-D6bWQtr-.mjs +3 -0
  330. package/dist/renderer-D6cJ6MSq.mjs +3 -0
  331. package/dist/renderer-D7EX8IjU.mjs +240 -0
  332. package/dist/renderer-D7EX8IjU.mjs.map +1 -0
  333. package/dist/renderer-DDp7_TUi.d.mts +10 -0
  334. package/dist/renderer-DDp7_TUi.d.mts.map +1 -0
  335. package/dist/renderer-DFKsLrUs.mjs +256 -0
  336. package/dist/renderer-DFKsLrUs.mjs.map +1 -0
  337. package/dist/renderer-DPSsf8-t.mjs +3 -0
  338. package/dist/renderer-DQLGnEFc.mjs +3 -0
  339. package/dist/renderer-DY2SVYUW.mjs +3 -0
  340. package/dist/renderer-DZGtBUCx.mjs +792 -0
  341. package/dist/renderer-DZGtBUCx.mjs.map +1 -0
  342. package/dist/renderer-DabG62XS.mjs +406 -0
  343. package/dist/renderer-DabG62XS.mjs.map +1 -0
  344. package/dist/renderer-DbaQLI4z.mjs +771 -0
  345. package/dist/renderer-DbaQLI4z.mjs.map +1 -0
  346. package/dist/renderer-DjI45OYC.mjs +71 -0
  347. package/dist/renderer-DjI45OYC.mjs.map +1 -0
  348. package/dist/renderer-Dm08-hAU.mjs +323 -0
  349. package/dist/renderer-Dm08-hAU.mjs.map +1 -0
  350. package/dist/renderer-DoAY5JbB.mjs +4 -0
  351. package/dist/renderer-Dp_FfvF-.mjs +401 -0
  352. package/dist/renderer-Dp_FfvF-.mjs.map +1 -0
  353. package/dist/renderer-Dt6fzgX5.mjs +756 -0
  354. package/dist/renderer-Dt6fzgX5.mjs.map +1 -0
  355. package/dist/renderer-DuplLRbp.mjs +3 -0
  356. package/dist/renderer-DvfUbZ31.mjs +3 -0
  357. package/dist/renderer-DxjVQV6f.mjs +311 -0
  358. package/dist/renderer-DxjVQV6f.mjs.map +1 -0
  359. package/dist/renderer-Fco4EmAu.mjs +23868 -0
  360. package/dist/renderer-Fco4EmAu.mjs.map +1 -0
  361. package/dist/renderer-HFfcJlmR.mjs +981 -0
  362. package/dist/renderer-HFfcJlmR.mjs.map +1 -0
  363. package/dist/renderer-I-Sw3JBB.mjs +145 -0
  364. package/dist/renderer-I-Sw3JBB.mjs.map +1 -0
  365. package/dist/renderer-OWQmmg4Z.mjs +697 -0
  366. package/dist/renderer-OWQmmg4Z.mjs.map +1 -0
  367. package/dist/renderer-Q_uUQipO.mjs +3 -0
  368. package/dist/renderer-Ryo2CEFD.mjs +586 -0
  369. package/dist/renderer-Ryo2CEFD.mjs.map +1 -0
  370. package/dist/renderer-Tp6OXWNZ.mjs +257 -0
  371. package/dist/renderer-Tp6OXWNZ.mjs.map +1 -0
  372. package/dist/renderer-UQFCgeNx.mjs +3 -0
  373. package/dist/renderer-WkVrkCVA.mjs +83 -0
  374. package/dist/renderer-WkVrkCVA.mjs.map +1 -0
  375. package/dist/renderer-XcmYTd6P.mjs +3818 -0
  376. package/dist/renderer-XcmYTd6P.mjs.map +1 -0
  377. package/dist/renderer-_uvdg48N.mjs +333 -0
  378. package/dist/renderer-_uvdg48N.mjs.map +1 -0
  379. package/dist/renderer-bZU_ndxf.mjs +8 -0
  380. package/dist/renderer-bZU_ndxf.mjs.map +1 -0
  381. package/dist/renderer-eMsnzJg9.mjs +3 -0
  382. package/dist/renderer-ho_jXJ0H.mjs +254 -0
  383. package/dist/renderer-ho_jXJ0H.mjs.map +1 -0
  384. package/dist/renderer-k2JL79kM.mjs +306 -0
  385. package/dist/renderer-k2JL79kM.mjs.map +1 -0
  386. package/dist/renderer-pHiz78e0.mjs +3 -0
  387. package/dist/renderer-pxXf9dvk.mjs +394 -0
  388. package/dist/renderer-pxXf9dvk.mjs.map +1 -0
  389. package/dist/renderer-vCFTm0oe.mjs +226 -0
  390. package/dist/renderer-vCFTm0oe.mjs.map +1 -0
  391. package/dist/renderer-vvpdx1vk.mjs +379 -0
  392. package/dist/renderer-vvpdx1vk.mjs.map +1 -0
  393. package/dist/renderer-x2s9LmVL.mjs +1121 -0
  394. package/dist/renderer-x2s9LmVL.mjs.map +1 -0
  395. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs +49 -0
  396. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs.map +1 -0
  397. package/dist/signals/index.d.mts +7 -0
  398. package/dist/signals/index.mjs +10 -0
  399. package/dist/signals-BwbdO3AN.mjs +224 -0
  400. package/dist/signals-BwbdO3AN.mjs.map +1 -0
  401. package/dist/signin-CZj4Oc5s.mjs +865 -0
  402. package/dist/signin-CZj4Oc5s.mjs.map +1 -0
  403. package/dist/sso-oidc-C0_31ThY.mjs +1051 -0
  404. package/dist/sso-oidc-C0_31ThY.mjs.map +1 -0
  405. package/dist/sts-DD4ggEXC.mjs +6 -0
  406. package/dist/sts-nXw8RDJI.mjs +1395 -0
  407. package/dist/sts-nXw8RDJI.mjs.map +1 -0
  408. package/package.json +173 -0
@@ -0,0 +1,756 @@
1
+ import { n as defineRenderer } from "./renderer-CtVkU_GA.mjs";
2
+ import { tt as signalRegistry } from "./dist-gjHmorxL.mjs";
3
+ import { a as configBuilder, i as VideoResultSchema, n as ImageResultSchema } from "./dist-DKm2IyEJ.mjs";
4
+ import { z } from "zod";
5
+
6
+ //#region ../../nodes/node-refine-edge/dist/renderers-C6ZkOCIx.mjs
7
+ const MIN_DECONTAMINATE = 0;
8
+ const MAX_DECONTAMINATE = 1;
9
+ const MIN_RADIUS = .5;
10
+ const MAX_RADIUS = 50;
11
+ const MIN_SMOOTH = 0;
12
+ const MAX_SMOOTH = 100;
13
+ const MIN_FEATHER = 0;
14
+ const MAX_FEATHER = 50;
15
+ const MIN_SHIFT_EDGE = -100;
16
+ const MAX_SHIFT_EDGE = 100;
17
+ const MatteChannelEnum = z.enum([
18
+ "Alpha",
19
+ "Luminance",
20
+ "Red",
21
+ "Green",
22
+ "Blue"
23
+ ]);
24
+ const RefineEdgeOutputModeEnum = z.enum([
25
+ "Composite",
26
+ "MatteOnly",
27
+ "DecontaminatedRGB"
28
+ ]);
29
+ const refineEdgeConfig = configBuilder().field("decontaminateAmount", z.number().multipleOf(.01).min(MIN_DECONTAMINATE).max(MAX_DECONTAMINATE).default(.7), {
30
+ bindable: true,
31
+ dataTypes: ["Number", "Signal"],
32
+ label: "Decontaminate Colors",
33
+ description: "Amount of edge color spill decontamination/defringing (0.0–1.0)."
34
+ }).field("radius", z.number().multipleOf(.1).min(MIN_RADIUS).max(MAX_RADIUS).default(2), {
35
+ bindable: true,
36
+ dataTypes: ["Number", "Signal"],
37
+ label: "Edge Detection Radius (px)",
38
+ description: "Radius in pixels around alpha transitions to refine and decontaminate."
39
+ }).field("smooth", z.number().min(MIN_SMOOTH).max(MAX_SMOOTH).default(5), {
40
+ bindable: true,
41
+ dataTypes: ["Number", "Signal"],
42
+ label: "Smoothness",
43
+ description: "Matte edge smoothing curve intensity (0–100)."
44
+ }).field("feather", z.number().multipleOf(.1).min(MIN_FEATHER).max(MAX_FEATHER).default(.5), {
45
+ bindable: true,
46
+ dataTypes: ["Number", "Signal"],
47
+ label: "Feather (px)",
48
+ description: "Sub-pixel gaussian softness along the matte boundary."
49
+ }).field("shiftEdge", z.number().min(MIN_SHIFT_EDGE).max(MAX_SHIFT_EDGE).default(0), {
50
+ bindable: true,
51
+ dataTypes: ["Number", "Signal"],
52
+ label: "Shift Edge (%)",
53
+ description: "Contract (<0) or expand (>0) the edge boundary (-100% to +100%)."
54
+ }).field("matteChannel", MatteChannelEnum.default("Alpha"), {
55
+ label: "Matte Channel",
56
+ description: "Channel to extract matte from (Alpha, Luminance, Red, Green, Blue)."
57
+ }).field("outputMode", RefineEdgeOutputModeEnum.default("Composite"), {
58
+ label: "Output Mode",
59
+ description: "Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha)."
60
+ }).build();
61
+ const RefineEdgeNodeConfigSchema = refineEdgeConfig.schema;
62
+ const RefineEdgeResultSchema = z.union([ImageResultSchema, VideoResultSchema]);
63
+ const CHANNEL_MAP = {
64
+ Alpha: 0,
65
+ Luminance: 1,
66
+ Red: 2,
67
+ Green: 3,
68
+ Blue: 4
69
+ };
70
+ const OUTPUT_MODE_MAP = {
71
+ Composite: 0,
72
+ MatteOnly: 1,
73
+ DecontaminatedRGB: 2
74
+ };
75
+ const WGSL_REFINE_EDGE = `
76
+ struct RefineEdgeUniforms {
77
+ dirX : f32,
78
+ dirY : f32,
79
+ decontaminateAmount : f32,
80
+ radius : f32,
81
+
82
+ smoothness : f32,
83
+ feather : f32,
84
+ shiftEdge : f32,
85
+ matteChannel : f32,
86
+
87
+ outputMode : f32,
88
+ hasMatte : f32,
89
+ hasDecontamSig : f32,
90
+ hasRadiusSig : f32,
91
+
92
+ hasSmoothSig : f32,
93
+ hasFeatherSig : f32,
94
+ hasShiftEdgeSig : f32,
95
+ isSecondPass : f32,
96
+
97
+ pad0 : f32,
98
+ pad1 : f32,
99
+ pad2 : f32,
100
+ pad3 : f32,
101
+ };
102
+
103
+ @group(0) @binding(0) var<uniform> u : RefineEdgeUniforms;
104
+
105
+ @group(1) @binding(0) var texInput : texture_2d<f32>;
106
+ @group(1) @binding(1) var texMatte : texture_2d<f32>;
107
+ @group(1) @binding(2) var origTex : texture_2d<f32>;
108
+ @group(1) @binding(3) var samp : sampler;
109
+
110
+ @group(2) @binding(0) var decontamSigTex : texture_2d<f32>;
111
+ @group(2) @binding(1) var radiusSigTex : texture_2d<f32>;
112
+ @group(2) @binding(2) var smoothSigTex : texture_2d<f32>;
113
+ @group(2) @binding(3) var featherSigTex : texture_2d<f32>;
114
+ @group(2) @binding(4) var shiftEdgeSigTex : texture_2d<f32>;
115
+ @group(2) @binding(5) var signalSamp : sampler;
116
+
117
+ struct VSOut {
118
+ @builtin(position) pos : vec4<f32>,
119
+ @location(0) uv : vec2<f32>,
120
+ };
121
+
122
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
123
+ var pos = array<vec2<f32>, 4>(
124
+ vec2<f32>(-1.0, 1.0),
125
+ vec2<f32>(1.0, 1.0),
126
+ vec2<f32>(-1.0, -1.0),
127
+ vec2<f32>(1.0, -1.0)
128
+ );
129
+ var uv = array<vec2<f32>, 4>(
130
+ vec2<f32>(0.0, 0.0),
131
+ vec2<f32>(1.0, 0.0),
132
+ vec2<f32>(0.0, 1.0),
133
+ vec2<f32>(1.0, 1.0)
134
+ );
135
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
136
+ }
137
+
138
+ fn extractChannel(color : vec4<f32>, chCode : f32) -> f32 {
139
+ if (chCode < 0.5) {
140
+ // Alpha
141
+ return color.a;
142
+ } else if (chCode < 1.5) {
143
+ // Luminance
144
+ let luma = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));
145
+ if (color.a > 1e-4) {
146
+ return min(1.0, luma / color.a);
147
+ }
148
+ return luma;
149
+ } else if (chCode < 2.5) {
150
+ // Red
151
+ if (color.a > 1e-4) {
152
+ return min(1.0, color.r / color.a);
153
+ }
154
+ return color.r;
155
+ } else if (chCode < 3.5) {
156
+ // Green
157
+ if (color.a > 1e-4) {
158
+ return min(1.0, color.g / color.a);
159
+ }
160
+ return color.g;
161
+ } else {
162
+ // Blue
163
+ if (color.a > 1e-4) {
164
+ return min(1.0, color.b / color.a);
165
+ }
166
+ return color.b;
167
+ }
168
+ }
169
+
170
+ @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
171
+ let dimensions = vec2<f32>(textureDimensions(texInput));
172
+ let texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));
173
+
174
+ var decontam = u.decontaminateAmount;
175
+ if (u.hasDecontamSig > 0.5) {
176
+ decontam = clamp(textureSampleLevel(decontamSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);
177
+ }
178
+ var radius = u.radius;
179
+ if (u.hasRadiusSig > 0.5) {
180
+ radius = clamp(textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.5, 50.0);
181
+ }
182
+ var smoothVal = u.smoothness;
183
+ if (u.hasSmoothSig > 0.5) {
184
+ smoothVal = clamp(textureSampleLevel(smoothSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 100.0);
185
+ }
186
+ var featherVal = u.feather;
187
+ if (u.hasFeatherSig > 0.5) {
188
+ featherVal = clamp(textureSampleLevel(featherSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 50.0);
189
+ }
190
+ var shiftEdgeVal = u.shiftEdge;
191
+ if (u.hasShiftEdgeSig > 0.5) {
192
+ shiftEdgeVal = clamp(textureSampleLevel(shiftEdgeSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0);
193
+ }
194
+
195
+ let direction = vec2<f32>(u.dirX, u.dirY);
196
+
197
+ // Combined sigma for smoothing & feathering
198
+ let smoothSigma = max(0.0, smoothVal * 0.15);
199
+ let featherSigma = max(0.0, featherVal);
200
+ let totalSigma = max(0.1, sqrt(smoothSigma * smoothSigma + featherSigma * featherSigma));
201
+
202
+ if (u.isSecondPass <= 0.5) {
203
+ // =============================================================
204
+ // PASS 1: Horizontal Pass (Alpha filter + FG color sampling)
205
+ // =============================================================
206
+ let centerInput = textureSampleLevel(texInput, samp, in.uv, 0.0);
207
+ let centerMatte = textureSampleLevel(texMatte, samp, in.uv, 0.0);
208
+
209
+ var centerRawAlpha = centerInput.a;
210
+ if (u.hasMatte > 0.5) {
211
+ centerRawAlpha = extractChannel(centerMatte, u.matteChannel);
212
+ }
213
+
214
+ // 1. Horizontal Alpha Blur / Filter
215
+ var alphaAccum = 0.0;
216
+ var alphaWeightSum = 0.0;
217
+
218
+ let stepScale = max(1.0, totalSigma / 15.0);
219
+ let effectiveSigma = totalSigma / stepScale;
220
+ let sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);
221
+
222
+ for (var i = -sampleRadius; i <= sampleRadius; i++) {
223
+ let offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;
224
+ let sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
225
+ let sampleInput = textureSampleLevel(texInput, samp, sampleUv, 0.0);
226
+ var sAlpha = sampleInput.a;
227
+ if (u.hasMatte > 0.5) {
228
+ let sMatte = textureSampleLevel(texMatte, samp, sampleUv, 0.0);
229
+ sAlpha = extractChannel(sMatte, u.matteChannel);
230
+ }
231
+
232
+ let dist = f32(i) * stepScale;
233
+ let weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));
234
+ alphaAccum += sAlpha * weight;
235
+ alphaWeightSum += weight;
236
+ }
237
+
238
+ let smoothedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);
239
+
240
+ // 2. Horizontal Foreground Color Sampling for Defringing
241
+ var fgColorAccum = vec3<f32>(0.0);
242
+ var fgWeightSum = 0.0;
243
+
244
+ let rStepScale = max(1.0, radius / 15.0);
245
+ let rSampleCount = min(i32(ceil(radius / rStepScale)), 32);
246
+
247
+ for (var i = -rSampleCount; i <= rSampleCount; i++) {
248
+ let offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;
249
+ let sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
250
+ let sampleCol = textureSampleLevel(texInput, samp, sampleUv, 0.0);
251
+ var sampleA = sampleCol.a;
252
+ if (u.hasMatte > 0.5) {
253
+ let sm = textureSampleLevel(texMatte, samp, sampleUv, 0.0);
254
+ sampleA = extractChannel(sm, u.matteChannel);
255
+ }
256
+
257
+ let sampleRgb = select(sampleCol.rgb, sampleCol.rgb / max(sampleCol.a, 1e-4), sampleCol.a > 1e-4);
258
+ let spatialDist = f32(i) * rStepScale;
259
+ let spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));
260
+ // Weight foreground pixels by alpha confidence
261
+ let fgConfidence = clamp((sampleA - 0.2) / 0.8, 0.0, 1.0);
262
+ let weight = fgConfidence * spatialWeight;
263
+
264
+ fgColorAccum += sampleRgb * weight;
265
+ fgWeightSum += weight;
266
+ }
267
+
268
+ let centerUnpremult = select(centerInput.rgb, centerInput.rgb / max(centerInput.a, 1e-4), centerInput.a > 1e-4);
269
+ let fgColor = select(centerUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);
270
+
271
+ return vec4<f32>(fgColor, smoothedAlpha);
272
+ }
273
+
274
+ // =============================================================
275
+ // PASS 2: Vertical Pass & Final Defringe/Composite
276
+ // =============================================================
277
+ let pass1Sample = textureSampleLevel(texInput, samp, in.uv, 0.0);
278
+ let origSample = textureSampleLevel(origTex, samp, in.uv, 0.0);
279
+
280
+ var rawMatteAlpha = origSample.a;
281
+ if (u.hasMatte > 0.5) {
282
+ let rawMatteSample = textureSampleLevel(texMatte, samp, in.uv, 0.0);
283
+ rawMatteAlpha = extractChannel(rawMatteSample, u.matteChannel);
284
+ }
285
+
286
+ // 1. Vertical Alpha Blur / Filter
287
+ var alphaAccum = 0.0;
288
+ var alphaWeightSum = 0.0;
289
+
290
+ let stepScale = max(1.0, totalSigma / 15.0);
291
+ let effectiveSigma = totalSigma / stepScale;
292
+ let sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);
293
+
294
+ for (var i = -sampleRadius; i <= sampleRadius; i++) {
295
+ let offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;
296
+ let sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
297
+ let sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);
298
+ let sAlpha = sPass1.a;
299
+
300
+ let dist = f32(i) * stepScale;
301
+ let weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));
302
+ alphaAccum += sAlpha * weight;
303
+ alphaWeightSum += weight;
304
+ }
305
+
306
+ var refinedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);
307
+
308
+ // 2. Shift Edge (Choke < 0 or Expand > 0)
309
+ if (abs(shiftEdgeVal) > 0.01) {
310
+ let shiftNorm = shiftEdgeVal / 100.0;
311
+ if (shiftNorm < 0.0) {
312
+ // Contract / Choke
313
+ let chokeLimit = abs(shiftNorm);
314
+ refinedAlpha = clamp((refinedAlpha - chokeLimit) / max(1.0 - chokeLimit, 1e-4), 0.0, 1.0);
315
+ } else {
316
+ // Expand / Dilate
317
+ refinedAlpha = clamp(refinedAlpha / max(1.0 - shiftNorm, 1e-4), 0.0, 1.0);
318
+ }
319
+ }
320
+
321
+ // 3. Vertical Foreground Color Sampling for Defringing
322
+ var fgColorAccum = vec3<f32>(0.0);
323
+ var fgWeightSum = 0.0;
324
+
325
+ let rStepScale = max(1.0, radius / 15.0);
326
+ let rSampleCount = min(i32(ceil(radius / rStepScale)), 32);
327
+
328
+ for (var i = -rSampleCount; i <= rSampleCount; i++) {
329
+ let offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;
330
+ let sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
331
+ let sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);
332
+ let sRgb = sPass1.rgb;
333
+ let sA = sPass1.a;
334
+
335
+ let spatialDist = f32(i) * rStepScale;
336
+ let spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));
337
+ let fgConfidence = clamp((sA - 0.2) / 0.8, 0.0, 1.0);
338
+ let weight = fgConfidence * spatialWeight;
339
+
340
+ fgColorAccum += sRgb * weight;
341
+ fgWeightSum += weight;
342
+ }
343
+
344
+ let origUnpremult = select(origSample.rgb, origSample.rgb / max(origSample.a, 1e-4), origSample.a > 1e-4);
345
+ let fgColor = select(origUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);
346
+
347
+ // Edge zone detection: transitions between foreground and background
348
+ let edgeWeight = clamp(4.0 * rawMatteAlpha * (1.0 - rawMatteAlpha), 0.0, 1.0);
349
+ let decontamFactor = clamp(decontam * max(edgeWeight, (1.0 - refinedAlpha) * 0.8), 0.0, 1.0);
350
+
351
+ let decontaminatedColor = mix(origUnpremult, fgColor, decontamFactor);
352
+
353
+ // Format Output
354
+ let mode = u.outputMode;
355
+ if (mode < 0.5) {
356
+ // Composite: Decontaminated RGB with refined alpha (premultiplied)
357
+ return vec4<f32>(decontaminatedColor * refinedAlpha, refinedAlpha);
358
+ } else if (mode < 1.5) {
359
+ // MatteOnly: Grayscale refined alpha mask
360
+ return vec4<f32>(refinedAlpha, refinedAlpha, refinedAlpha, 1.0);
361
+ } else {
362
+ // DecontaminatedRGB: Clean defringed RGB with full alpha
363
+ return vec4<f32>(decontaminatedColor, 1.0);
364
+ }
365
+ }
366
+ `;
367
+ const deviceResourceCache = /* @__PURE__ */ new WeakMap();
368
+ function getRefineEdgeResources(device, targetFormat) {
369
+ const cached = deviceResourceCache.get(device);
370
+ if (cached) return cached;
371
+ const uniformLayout = device.createBindGroupLayout({ entries: [{
372
+ binding: 0,
373
+ visibility: GPUShaderStage.FRAGMENT,
374
+ buffer: { type: "uniform" }
375
+ }] });
376
+ const textureLayout = device.createBindGroupLayout({ entries: [
377
+ {
378
+ binding: 0,
379
+ visibility: GPUShaderStage.FRAGMENT,
380
+ texture: { sampleType: "float" }
381
+ },
382
+ {
383
+ binding: 1,
384
+ visibility: GPUShaderStage.FRAGMENT,
385
+ texture: { sampleType: "float" }
386
+ },
387
+ {
388
+ binding: 2,
389
+ visibility: GPUShaderStage.FRAGMENT,
390
+ texture: { sampleType: "float" }
391
+ },
392
+ {
393
+ binding: 3,
394
+ visibility: GPUShaderStage.FRAGMENT,
395
+ sampler: { type: "filtering" }
396
+ }
397
+ ] });
398
+ const signalTextureLayout = device.createBindGroupLayout({ entries: [
399
+ {
400
+ binding: 0,
401
+ visibility: GPUShaderStage.FRAGMENT,
402
+ texture: { sampleType: "float" }
403
+ },
404
+ {
405
+ binding: 1,
406
+ visibility: GPUShaderStage.FRAGMENT,
407
+ texture: { sampleType: "float" }
408
+ },
409
+ {
410
+ binding: 2,
411
+ visibility: GPUShaderStage.FRAGMENT,
412
+ texture: { sampleType: "float" }
413
+ },
414
+ {
415
+ binding: 3,
416
+ visibility: GPUShaderStage.FRAGMENT,
417
+ texture: { sampleType: "float" }
418
+ },
419
+ {
420
+ binding: 4,
421
+ visibility: GPUShaderStage.FRAGMENT,
422
+ texture: { sampleType: "float" }
423
+ },
424
+ {
425
+ binding: 5,
426
+ visibility: GPUShaderStage.FRAGMENT,
427
+ sampler: { type: "filtering" }
428
+ }
429
+ ] });
430
+ const shaderModule = device.createShaderModule({ code: WGSL_REFINE_EDGE });
431
+ const pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [
432
+ uniformLayout,
433
+ textureLayout,
434
+ signalTextureLayout
435
+ ] });
436
+ const res = {
437
+ uniformLayout,
438
+ textureLayout,
439
+ signalTextureLayout,
440
+ pipeline: device.createRenderPipeline({
441
+ layout: pipelineLayout,
442
+ vertex: {
443
+ module: shaderModule,
444
+ entryPoint: "vs"
445
+ },
446
+ fragment: {
447
+ module: shaderModule,
448
+ entryPoint: "fs",
449
+ targets: [{ format: targetFormat }]
450
+ },
451
+ primitive: { topology: "triangle-strip" }
452
+ })
453
+ };
454
+ deviceResourceCache.set(device, res);
455
+ return res;
456
+ }
457
+ const WebGPURenderer = async (args) => {
458
+ const { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;
459
+ const op = props.virtualMedia?.operation;
460
+ if (op?.op !== "RefineEdge" || !op) return;
461
+ const childMedia = props.virtualMedia?.children?.[0];
462
+ if (!childMedia) return;
463
+ pass.end();
464
+ const frame = props.frame ?? 0;
465
+ const fps = props.fps || 30;
466
+ const width = targetWidth;
467
+ const height = targetHeight;
468
+ const resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => {
469
+ if (handleId && op.inputs?.[handleId]?.connectionValid) {
470
+ const outputItem = op.inputs[handleId].outputItem;
471
+ if (outputItem?.type === "Number") {
472
+ const numVal = typeof outputItem.data === "number" ? outputItem.data : outputItem.data?.value ?? fallbackVal;
473
+ return {
474
+ val: Math.max(clampMin, Math.min(clampMax, numVal)),
475
+ hasStaticSig: false,
476
+ sd: null,
477
+ handleId
478
+ };
479
+ }
480
+ if (outputItem?.type === "Signal" && outputItem.data) return {
481
+ val: fallbackVal,
482
+ hasStaticSig: true,
483
+ sd: outputItem.data,
484
+ handleId
485
+ };
486
+ }
487
+ return {
488
+ val: Math.max(clampMin, Math.min(clampMax, fallbackVal)),
489
+ hasStaticSig: false,
490
+ sd: null,
491
+ handleId
492
+ };
493
+ };
494
+ const decontamRes = resolveField(op.decontaminateAmountHandleId, Number(op.decontaminateAmount ?? .7), MIN_DECONTAMINATE, MAX_DECONTAMINATE);
495
+ const radiusRes = resolveField(op.radiusHandleId, Number(op.radius ?? 2), MIN_RADIUS, MAX_RADIUS);
496
+ const smoothRes = resolveField(op.smoothHandleId, Number(op.smooth ?? 5), MIN_SMOOTH, MAX_SMOOTH);
497
+ const featherRes = resolveField(op.featherHandleId, Number(op.feather ?? .5), MIN_FEATHER, MAX_FEATHER);
498
+ const shiftEdgeRes = resolveField(op.shiftEdgeHandleId, Number(op.shiftEdge ?? 0), MIN_SHIFT_EDGE, MAX_SHIFT_EDGE);
499
+ const tmpInputTex = ctx.renderer.getTemporaryTexture(width, height, [...props.excludeTextures || [], targetTexture]);
500
+ const tmpInputView = tmpInputTex.createView();
501
+ ctx.renderer.beginFrame(encoder, tmpInputView, {
502
+ r: 0,
503
+ g: 0,
504
+ b: 0,
505
+ a: 0
506
+ }, width, height, "clear").end();
507
+ ctx.renderer.pushScissor({
508
+ x: 0,
509
+ y: 0,
510
+ width,
511
+ height
512
+ });
513
+ ctx.renderer.pushIdentity();
514
+ await drawChild(childMedia, {
515
+ ...props,
516
+ virtualMedia: childMedia,
517
+ renderId: `${props.renderId}-input`,
518
+ excludeTextures: [...props.excludeTextures || [], tmpInputTex]
519
+ }, tmpInputView, tmpInputTex, width, height);
520
+ ctx.renderer.popTransform();
521
+ ctx.renderer.popScissor();
522
+ let tmpMatteTex = null;
523
+ if (op.matteMedia) {
524
+ tmpMatteTex = ctx.renderer.getTemporaryTexture(width, height, [
525
+ ...props.excludeTextures || [],
526
+ targetTexture,
527
+ tmpInputTex
528
+ ]);
529
+ const tmpMatteView = tmpMatteTex.createView();
530
+ ctx.renderer.beginFrame(encoder, tmpMatteView, {
531
+ r: 0,
532
+ g: 0,
533
+ b: 0,
534
+ a: 0
535
+ }, width, height, "clear").end();
536
+ ctx.renderer.pushScissor({
537
+ x: 0,
538
+ y: 0,
539
+ width,
540
+ height
541
+ });
542
+ ctx.renderer.pushIdentity();
543
+ await drawChild(op.matteMedia, {
544
+ ...props,
545
+ virtualMedia: op.matteMedia,
546
+ renderId: `${props.renderId}-matte`,
547
+ excludeTextures: [
548
+ ...props.excludeTextures || [],
549
+ tmpInputTex,
550
+ tmpMatteTex
551
+ ]
552
+ }, tmpMatteView, tmpMatteTex, width, height);
553
+ ctx.renderer.popTransform();
554
+ ctx.renderer.popScissor();
555
+ }
556
+ const { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getRefineEdgeResources(ctx.device, ctx.renderer.format);
557
+ const sampler = ctx.renderer.samplerCache.getSampler(ctx.device);
558
+ const elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps;
559
+ const durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 0;
560
+ const getSignalView = (res, suffix) => {
561
+ if (res.hasStaticSig && res.sd) {
562
+ const cacheNodeId = res.sd.nodeId ?? res.handleId ?? `${props.renderId ?? "refineedge"}_${suffix}`;
563
+ return signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, cacheNodeId, elapsedSeconds, durationSeconds, res.sd, width, height, props.renderId, frame, fps);
564
+ }
565
+ return signalRegistry.getDummy1x1TextureView(ctx.device);
566
+ };
567
+ const decontamView = getSignalView(decontamRes, "decontam_sig");
568
+ const radiusView = getSignalView(radiusRes, "radius_sig");
569
+ const smoothView = getSignalView(smoothRes, "smooth_sig");
570
+ const featherView = getSignalView(featherRes, "feather_sig");
571
+ const shiftEdgeView = getSignalView(shiftEdgeRes, "shiftEdge_sig");
572
+ const sigBindGroup = ctx.device.createBindGroup({
573
+ layout: signalTextureLayout,
574
+ entries: [
575
+ {
576
+ binding: 0,
577
+ resource: decontamView
578
+ },
579
+ {
580
+ binding: 1,
581
+ resource: radiusView
582
+ },
583
+ {
584
+ binding: 2,
585
+ resource: smoothView
586
+ },
587
+ {
588
+ binding: 3,
589
+ resource: featherView
590
+ },
591
+ {
592
+ binding: 4,
593
+ resource: shiftEdgeView
594
+ },
595
+ {
596
+ binding: 5,
597
+ resource: sampler
598
+ }
599
+ ]
600
+ });
601
+ const matteChannelCode = CHANNEL_MAP[op.matteChannel ?? "Alpha"] ?? 0;
602
+ const outputModeCode = OUTPUT_MODE_MAP[op.outputMode ?? "Composite"] ?? 0;
603
+ const dummyMatteView = tmpMatteTex ? tmpMatteTex.createView() : tmpInputView;
604
+ const hUniformData = new Float32Array(20);
605
+ const vUniformData = new Float32Array(20);
606
+ const baseUniforms = [
607
+ 0,
608
+ 0,
609
+ decontamRes.val,
610
+ radiusRes.val,
611
+ smoothRes.val,
612
+ featherRes.val,
613
+ shiftEdgeRes.val,
614
+ matteChannelCode,
615
+ outputModeCode,
616
+ tmpMatteTex ? 1 : 0,
617
+ decontamRes.hasStaticSig ? 1 : 0,
618
+ radiusRes.hasStaticSig ? 1 : 0,
619
+ smoothRes.hasStaticSig ? 1 : 0,
620
+ featherRes.hasStaticSig ? 1 : 0,
621
+ shiftEdgeRes.hasStaticSig ? 1 : 0,
622
+ 0,
623
+ 0,
624
+ 0,
625
+ 0,
626
+ 0
627
+ ];
628
+ hUniformData.set(baseUniforms);
629
+ hUniformData[0] = 1;
630
+ hUniformData[1] = 0;
631
+ hUniformData[15] = 0;
632
+ vUniformData.set(baseUniforms);
633
+ vUniformData[0] = 0;
634
+ vUniformData[1] = 1;
635
+ vUniformData[15] = 1;
636
+ const outTex1 = ctx.renderer.getTemporaryTexture(width, height, [
637
+ tmpInputTex,
638
+ ...tmpMatteTex ? [tmpMatteTex] : [],
639
+ targetTexture,
640
+ ...props.excludeTextures || []
641
+ ]);
642
+ const outTex2 = ctx.renderer.getTemporaryTexture(width, height, [
643
+ tmpInputTex,
644
+ ...tmpMatteTex ? [tmpMatteTex] : [],
645
+ outTex1,
646
+ targetTexture,
647
+ ...props.excludeTextures || []
648
+ ]);
649
+ const hBuffer = ctx.renderer.getTemporaryBuffer(hUniformData);
650
+ const hPass = encoder.beginRenderPass({ colorAttachments: [{
651
+ view: outTex1.createView(),
652
+ loadOp: "clear",
653
+ storeOp: "store",
654
+ clearValue: {
655
+ r: 0,
656
+ g: 0,
657
+ b: 0,
658
+ a: 0
659
+ }
660
+ }] });
661
+ hPass.setPipeline(pipeline);
662
+ hPass.setBindGroup(0, ctx.device.createBindGroup({
663
+ layout: uniformLayout,
664
+ entries: [{
665
+ binding: 0,
666
+ resource: { buffer: hBuffer }
667
+ }]
668
+ }));
669
+ hPass.setBindGroup(1, ctx.device.createBindGroup({
670
+ layout: textureLayout,
671
+ entries: [
672
+ {
673
+ binding: 0,
674
+ resource: tmpInputView
675
+ },
676
+ {
677
+ binding: 1,
678
+ resource: dummyMatteView
679
+ },
680
+ {
681
+ binding: 2,
682
+ resource: tmpInputView
683
+ },
684
+ {
685
+ binding: 3,
686
+ resource: sampler
687
+ }
688
+ ]
689
+ }));
690
+ hPass.setBindGroup(2, sigBindGroup);
691
+ hPass.draw(4);
692
+ hPass.end();
693
+ const vBuffer = ctx.renderer.getTemporaryBuffer(vUniformData);
694
+ const vPass = encoder.beginRenderPass({ colorAttachments: [{
695
+ view: outTex2.createView(),
696
+ loadOp: "clear",
697
+ storeOp: "store",
698
+ clearValue: {
699
+ r: 0,
700
+ g: 0,
701
+ b: 0,
702
+ a: 0
703
+ }
704
+ }] });
705
+ vPass.setPipeline(pipeline);
706
+ vPass.setBindGroup(0, ctx.device.createBindGroup({
707
+ layout: uniformLayout,
708
+ entries: [{
709
+ binding: 0,
710
+ resource: { buffer: vBuffer }
711
+ }]
712
+ }));
713
+ vPass.setBindGroup(1, ctx.device.createBindGroup({
714
+ layout: textureLayout,
715
+ entries: [
716
+ {
717
+ binding: 0,
718
+ resource: outTex1.createView()
719
+ },
720
+ {
721
+ binding: 1,
722
+ resource: dummyMatteView
723
+ },
724
+ {
725
+ binding: 2,
726
+ resource: tmpInputView
727
+ },
728
+ {
729
+ binding: 3,
730
+ resource: sampler
731
+ }
732
+ ]
733
+ }));
734
+ vPass.setBindGroup(2, sigBindGroup);
735
+ vPass.draw(4);
736
+ vPass.end();
737
+ const finalPass = ctx.renderer.beginFrame(encoder, targetView, {
738
+ r: 0,
739
+ g: 0,
740
+ b: 0,
741
+ a: 0
742
+ }, targetWidth, targetHeight, "load");
743
+ const finalOpacity = props.opacity ?? op.opacity ?? 1;
744
+ ctx.renderer.drawTexture(finalPass, outTex2, {
745
+ x: 0,
746
+ y: 0,
747
+ width: targetWidth,
748
+ height: targetHeight
749
+ }, { opacity: finalOpacity });
750
+ args.pass = finalPass;
751
+ };
752
+ var renderers_default = defineRenderer({ WebGPURenderer });
753
+
754
+ //#endregion
755
+ export { renderers_default as n, WebGPURenderer as t };
756
+ //# sourceMappingURL=renderer-Dt6fzgX5.mjs.map