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,264 @@
1
+ import{a as $}from"./chunk-XOEEGC4Z.mjs";import{b as Z,c as J}from"./chunk-IYVN2QEL.mjs";import{a as r}from"./chunk-NQZKBFC6.mjs";import{d as _}from"./chunk-6YJP57MZ.mjs";import{e as w}from"./chunk-BVF64D6H.mjs";w();w();w();var I=250,M=1,U=100,be=$().field("shadowAmount",r.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Boost (%)",description:"Percentage to lift and recover crushed shadow details (0\u2013100%)."}).field("shadowTonalWidth",r.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Range (%)",description:"Range of dark tones affected by shadow adjustments (0\u2013100%)."}).field("shadowRadius",r.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Radius (px)",description:"Local neighborhood radius in pixels to determine shadow illumination (1\u2013250px)."}).field("highlightAmount",r.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Suppression (%)",description:"Percentage to suppress and recover blown highlight details (0\u2013100%)."}).field("highlightTonalWidth",r.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Range (%)",description:"Range of bright tones affected by highlight adjustments (0\u2013100%)."}).field("highlightRadius",r.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Radius (px)",description:"Local neighborhood radius in pixels to determine highlight exposure (1\u2013250px)."}).field("colorCorrection",r.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Color Correction (%)",description:"Fine-tunes color saturation in recovered shadow/highlight zones (-100 to +100%)."}).field("midtoneContrast",r.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Midtone Contrast (%)",description:"Adjusts contrast centered on the midtones (-100 to +100%)."}).build(),ee=be.schema,Ce=r.union([Z,J]),He=ee.extend({op:r.literal("ShadowsHighlights"),metadata:r.unknown().optional()}),We=ee.parse({});var we=`
2
+ struct ShadowsHighlightsUniforms {
3
+ dirX : f32,
4
+ dirY : f32,
5
+ shadowRadius : f32,
6
+ highlightRadius : f32,
7
+
8
+ shadowAmount : f32,
9
+ shadowTonalWidth : f32,
10
+ highlightAmount : f32,
11
+ highlightTonalWidth : f32,
12
+
13
+ colorCorrection : f32,
14
+ midtoneContrast : f32,
15
+ isSecondPass : f32,
16
+ _pad0 : f32,
17
+
18
+ hasShadowAmountSig : f32,
19
+ hasShadowTonalWidthSig : f32,
20
+ hasShadowRadiusSig : f32,
21
+ hasHighlightAmountSig : f32,
22
+
23
+ hasHighlightTonalWidthSig : f32,
24
+ hasHighlightRadiusSig : f32,
25
+ hasColorCorrectionSig : f32,
26
+ hasMidtoneContrastSig : f32,
27
+ };
28
+
29
+ @group(0) @binding(0) var<uniform> u : ShadowsHighlightsUniforms;
30
+ @group(1) @binding(0) var tex : texture_2d<f32>;
31
+ @group(1) @binding(1) var samp : sampler;
32
+ @group(1) @binding(2) var origTex : texture_2d<f32>;
33
+
34
+ @group(2) @binding(0) var shadowAmountSigTex : texture_2d<f32>;
35
+ @group(2) @binding(1) var shadowTonalWidthSigTex : texture_2d<f32>;
36
+ @group(2) @binding(2) var shadowRadiusSigTex : texture_2d<f32>;
37
+ @group(2) @binding(3) var highlightAmountSigTex : texture_2d<f32>;
38
+ @group(2) @binding(4) var highlightTonalWidthSigTex : texture_2d<f32>;
39
+ @group(2) @binding(5) var highlightRadiusSigTex : texture_2d<f32>;
40
+ @group(2) @binding(6) var colorCorrectionSigTex : texture_2d<f32>;
41
+ @group(2) @binding(7) var midtoneContrastSigTex : texture_2d<f32>;
42
+ @group(2) @binding(8) var signalSamp : sampler;
43
+
44
+ struct VSOut {
45
+ @builtin(position) pos : vec4<f32>,
46
+ @location(0) uv : vec2<f32>,
47
+ };
48
+
49
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
50
+ var pos = array<vec2<f32>, 4>(
51
+ vec2<f32>(-1.0, 1.0),
52
+ vec2<f32>(1.0, 1.0),
53
+ vec2<f32>(-1.0, -1.0),
54
+ vec2<f32>(1.0, -1.0)
55
+ );
56
+ var uv = array<vec2<f32>, 4>(
57
+ vec2<f32>(0.0, 0.0),
58
+ vec2<f32>(1.0, 0.0),
59
+ vec2<f32>(0.0, 1.0),
60
+ vec2<f32>(1.0, 1.0)
61
+ );
62
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
63
+ }
64
+
65
+ fn get_luminance(c: vec3<f32>) -> f32 {
66
+ return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722));
67
+ }
68
+
69
+ @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
70
+ let origCol = textureSampleLevel(origTex, samp, in.uv, 0.0);
71
+
72
+ var sAmount = u.shadowAmount;
73
+ if (u.hasShadowAmountSig > 0.5) {
74
+ sAmount = textureSampleLevel(shadowAmountSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
75
+ }
76
+ sAmount = clamp(sAmount, 0.0, 100.0);
77
+
78
+ var sTonalWidthVal = u.shadowTonalWidth;
79
+ if (u.hasShadowTonalWidthSig > 0.5) {
80
+ sTonalWidthVal = textureSampleLevel(shadowTonalWidthSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
81
+ }
82
+ sTonalWidthVal = clamp(sTonalWidthVal, 0.0, 100.0);
83
+
84
+ var sRadius = u.shadowRadius;
85
+ if (u.hasShadowRadiusSig > 0.5) {
86
+ sRadius = textureSampleLevel(shadowRadiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
87
+ }
88
+ sRadius = clamp(sRadius, 1.0, 250.0);
89
+
90
+ var hAmount = u.highlightAmount;
91
+ if (u.hasHighlightAmountSig > 0.5) {
92
+ hAmount = textureSampleLevel(highlightAmountSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
93
+ }
94
+ hAmount = clamp(hAmount, 0.0, 100.0);
95
+
96
+ var hTonalWidthVal = u.highlightTonalWidth;
97
+ if (u.hasHighlightTonalWidthSig > 0.5) {
98
+ hTonalWidthVal = textureSampleLevel(highlightTonalWidthSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
99
+ }
100
+ hTonalWidthVal = clamp(hTonalWidthVal, 0.0, 100.0);
101
+
102
+ var hRadius = u.highlightRadius;
103
+ if (u.hasHighlightRadiusSig > 0.5) {
104
+ hRadius = textureSampleLevel(highlightRadiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
105
+ }
106
+ hRadius = clamp(hRadius, 1.0, 250.0);
107
+
108
+ var colCorrVal = u.colorCorrection;
109
+ if (u.hasColorCorrectionSig > 0.5) {
110
+ colCorrVal = textureSampleLevel(colorCorrectionSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
111
+ }
112
+ colCorrVal = clamp(colCorrVal, -100.0, 100.0);
113
+
114
+ var midContrastVal = u.midtoneContrast;
115
+ if (u.hasMidtoneContrastSig > 0.5) {
116
+ midContrastVal = textureSampleLevel(midtoneContrastSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
117
+ }
118
+ midContrastVal = clamp(midContrastVal, -100.0, 100.0);
119
+
120
+ if (sAmount <= 0.0 && hAmount <= 0.0 && abs(midContrastVal) <= 0.0) {
121
+ if (u.isSecondPass > 0.5) {
122
+ return origCol;
123
+ }
124
+ return origCol;
125
+ }
126
+
127
+ let dimensions = vec2<f32>(textureDimensions(tex));
128
+ let texelSize = 1.0 / dimensions;
129
+ let direction = vec2<f32>(u.dirX, u.dirY);
130
+
131
+ let lumaOrig = get_luminance(origCol.rgb / max(origCol.a, 1e-5));
132
+
133
+ // Shadow blur parameters
134
+ let sSpatialSigma = sRadius;
135
+ let stepScaleS = max(1.0, sSpatialSigma / 20.0);
136
+ let effectiveSigmaS = sSpatialSigma / stepScaleS;
137
+ let sampleRadiusS = min(i32(ceil(3.0 * effectiveSigmaS)), 64);
138
+
139
+ // Highlight blur parameters
140
+ let hSpatialSigma = hRadius;
141
+ let stepScaleH = max(1.0, hSpatialSigma / 20.0);
142
+ let effectiveSigmaH = hSpatialSigma / stepScaleH;
143
+ let sampleRadiusH = min(i32(ceil(3.0 * effectiveSigmaH)), 64);
144
+
145
+ if (u.isSecondPass <= 0.5) {
146
+ // PASS 1: Horizontal blur of luminance from origTex
147
+ // Output packed channels: R = sLumaPass1, G = hLumaPass1, B = sAlphaPass1, A = hAlphaPass1
148
+ var sSum = 0.0;
149
+ var sWeightSum = 0.0;
150
+ var sAlphaSum = 0.0;
151
+ var sKernelSum = 0.0;
152
+
153
+ for (var i = -sampleRadiusS; i <= sampleRadiusS; i++) {
154
+ let offset = vec2<f32>(f32(i) * stepScaleS) * direction * texelSize;
155
+ let x = f32(i) * stepScaleS;
156
+ let weight = exp(-0.5 * (x / sSpatialSigma) * (x / sSpatialSigma));
157
+ let sampleCol = textureSampleLevel(tex, samp, in.uv + offset, 0.0);
158
+ let sampleAlpha = sampleCol.a;
159
+ let sampleLuma = get_luminance(sampleCol.rgb / max(sampleAlpha, 1e-5));
160
+ sSum += sampleLuma * weight * sampleAlpha;
161
+ sWeightSum += weight * sampleAlpha;
162
+ sAlphaSum += sampleAlpha * weight;
163
+ sKernelSum += weight;
164
+ }
165
+
166
+ var hSum = 0.0;
167
+ var hWeightSum = 0.0;
168
+ var hAlphaSum = 0.0;
169
+ var hKernelSum = 0.0;
170
+
171
+ for (var i = -sampleRadiusH; i <= sampleRadiusH; i++) {
172
+ let offset = vec2<f32>(f32(i) * stepScaleH) * direction * texelSize;
173
+ let x = f32(i) * stepScaleH;
174
+ let weight = exp(-0.5 * (x / hSpatialSigma) * (x / hSpatialSigma));
175
+ let sampleCol = textureSampleLevel(tex, samp, in.uv + offset, 0.0);
176
+ let sampleAlpha = sampleCol.a;
177
+ let sampleLuma = get_luminance(sampleCol.rgb / max(sampleAlpha, 1e-5));
178
+ hSum += sampleLuma * weight * sampleAlpha;
179
+ hWeightSum += weight * sampleAlpha;
180
+ hAlphaSum += sampleAlpha * weight;
181
+ hKernelSum += weight;
182
+ }
183
+
184
+ let sLumaPass1 = select(lumaOrig, sSum / sWeightSum, sWeightSum > 1e-5);
185
+ let sAlphaPass1 = sAlphaSum / max(sKernelSum, 1e-5);
186
+ let hLumaPass1 = select(lumaOrig, hSum / hWeightSum, hWeightSum > 1e-5);
187
+ let hAlphaPass1 = hAlphaSum / max(hKernelSum, 1e-5);
188
+
189
+ return vec4<f32>(sLumaPass1, hLumaPass1, sAlphaPass1, hAlphaPass1);
190
+ }
191
+
192
+ // PASS 2: Vertical blur of Pass 1 + Dynamic Range Recovery
193
+ if (origCol.a < 1e-5) {
194
+ return vec4<f32>(0.0, 0.0, 0.0, 0.0);
195
+ }
196
+
197
+ var sSum = 0.0;
198
+ var sWeightSum = 0.0;
199
+
200
+ for (var i = -sampleRadiusS; i <= sampleRadiusS; i++) {
201
+ let offset = vec2<f32>(f32(i) * stepScaleS) * direction * texelSize;
202
+ let x = f32(i) * stepScaleS;
203
+ let weight = exp(-0.5 * (x / sSpatialSigma) * (x / sSpatialSigma));
204
+ let samplePass1 = textureSampleLevel(tex, samp, in.uv + offset, 0.0);
205
+ let sampleAlpha = samplePass1.b;
206
+ let sampleLuma = samplePass1.r;
207
+ sSum += sampleLuma * weight * sampleAlpha;
208
+ sWeightSum += weight * sampleAlpha;
209
+ }
210
+
211
+ var hSum = 0.0;
212
+ var hWeightSum = 0.0;
213
+
214
+ for (var i = -sampleRadiusH; i <= sampleRadiusH; i++) {
215
+ let offset = vec2<f32>(f32(i) * stepScaleH) * direction * texelSize;
216
+ let x = f32(i) * stepScaleH;
217
+ let weight = exp(-0.5 * (x / hSpatialSigma) * (x / hSpatialSigma));
218
+ let samplePass1 = textureSampleLevel(tex, samp, in.uv + offset, 0.0);
219
+ let sampleAlpha = samplePass1.a;
220
+ let sampleLuma = samplePass1.g;
221
+ hSum += sampleLuma * weight * sampleAlpha;
222
+ hWeightSum += weight * sampleAlpha;
223
+ }
224
+
225
+ let sLumaBlur = select(lumaOrig, sSum / sWeightSum, sWeightSum > 1e-5);
226
+ let hLumaBlur = select(lumaOrig, hSum / hWeightSum, hWeightSum > 1e-5);
227
+
228
+ let alpha = origCol.a;
229
+ let rgb = origCol.rgb / alpha;
230
+
231
+ let sAmountNorm = sAmount / 100.0;
232
+ let hAmountNorm = hAmount / 100.0;
233
+ let sTonalWidth = clamp(sTonalWidthVal / 100.0, 0.01, 1.0);
234
+ let hTonalWidth = clamp(hTonalWidthVal / 100.0, 0.01, 1.0);
235
+ let colCorrNorm = colCorrVal / 100.0;
236
+ let midContrastNorm = midContrastVal / 100.0;
237
+
238
+ let sEvalLuma = 0.65 * sLumaBlur + 0.35 * lumaOrig;
239
+ let hEvalLuma = 0.65 * hLumaBlur + 0.35 * lumaOrig;
240
+
241
+ let wShadow = 1.0 - smoothstep(0.0, sTonalWidth, sEvalLuma);
242
+ let wHighlight = smoothstep(1.0 - hTonalWidth, 1.0, hEvalLuma);
243
+
244
+ let shadowBoost = sAmountNorm * wShadow * (1.0 - lumaOrig) * (1.0 - sqrt(clamp(sLumaBlur, 0.0, 1.0)));
245
+ let highlightSuppression = hAmountNorm * wHighlight * lumaOrig * sqrt(clamp(hLumaBlur, 0.0, 1.0));
246
+
247
+ var targetLuma = clamp(lumaOrig + shadowBoost - highlightSuppression, 0.0, 1.0);
248
+
249
+ if (abs(midContrastNorm) > 0.001) {
250
+ let midDiff = targetLuma - 0.5;
251
+ let sCurve = midDiff * (1.0 - 4.0 * midDiff * midDiff);
252
+ targetLuma = clamp(targetLuma + midContrastNorm * sCurve * 0.4, 0.0, 1.0);
253
+ }
254
+
255
+ var adjustedRgb = rgb * ((targetLuma + 1e-4) / (lumaOrig + 1e-4));
256
+
257
+ let effectIntensity = sAmountNorm * wShadow + hAmountNorm * wHighlight;
258
+ let satFactor = clamp(1.0 + colCorrNorm * effectIntensity * 1.5, 0.0, 3.0);
259
+ adjustedRgb = mix(vec3<f32>(targetLuma), adjustedRgb, satFactor);
260
+
261
+ let finalRgb = clamp(adjustedRgb, vec3<f32>(0.0), vec3<f32>(1.0));
262
+ return vec4<f32>(finalRgb * alpha, alpha);
263
+ }
264
+ `,ie=new WeakMap,i=new Float32Array(20);function xe(s,e){let n=ie.get(s);if(n)return n;let y=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),x=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),f=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:6,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:7,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:8,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),l=s.createShaderModule({code:we}),g=s.createPipelineLayout({bindGroupLayouts:[y,x,f]}),a=s.createRenderPipeline({layout:g,vertex:{module:l,entryPoint:"vs"},fragment:{module:l,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),C={uniformLayout:y,textureLayout:x,signalTextureLayout:f,pipeline:a};return ie.set(s,C),C}var te=async s=>{let{ctx:e,encoder:n,pass:y,targetView:x,targetTexture:f,targetWidth:l,targetHeight:g,props:a,drawChild:C}=s,t=a.virtualMedia?.operation;if(t?.op!=="ShadowsHighlights"||!t)return;let H=a.virtualMedia.children?.[0];if(!H)return;y.end();let B=a.frame??0,D=a.fps||30,m=l,c=g,ae=a.virtualMedia?.metadata?.id||(t.inputs?Object.keys(t.inputs)[0]:null)||a.renderId||"shadowshighlights_node",h=(o,p,Y=0,q=1e3)=>{if(o&&t.inputs?.[o]?.connectionValid){let S=t.inputs[o].outputItem;if(S?.type==="Number"){let ve=typeof S.data=="number"?S.data:S.data?.value??p;return{val:Math.max(Y,Math.min(q,ve)),hasStaticSig:!1,sd:null}}if(S?.type==="Signal"&&S.data)return{val:p,hasStaticSig:!0,sd:S.data}}return{val:Math.max(Y,Math.min(q,p)),hasStaticSig:!1,sd:null}},T=h(t.shadowAmountHandleId,Number(t.shadowAmount??0),0,U),W=h(t.shadowTonalWidthHandleId,Number(t.shadowTonalWidth??50),0,100),P=h(t.shadowRadiusHandleId,Number(t.shadowRadius??30),M,I),R=h(t.highlightAmountHandleId,Number(t.highlightAmount??0),0,U),L=h(t.highlightTonalWidthHandleId,Number(t.highlightTonalWidth??50),0,100),G=h(t.highlightRadiusHandleId,Number(t.highlightRadius??30),M,I),N=h(t.colorCorrectionHandleId,Number(t.colorCorrection??0),-100,100),A=h(t.midtoneContrastHandleId,Number(t.midtoneContrast??0),-100,100),d=e.renderer.getTemporaryTexture(m,c,[...a.excludeTextures||[],f]),O=d.createView();if(e.renderer.beginFrame(n,O,{r:0,g:0,b:0,a:0},m,c,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:m,height:c}),e.renderer.pushIdentity(),await C(H,{...a,virtualMedia:H},O,d,m,c),e.renderer.popTransform(),e.renderer.popScissor(),T.val<=0&&!T.hasStaticSig&&R.val<=0&&!R.hasStaticSig&&A.val===0&&!A.hasStaticSig){let o=e.renderer.beginFrame(n,x,{r:0,g:0,b:0,a:0},l,g,"load");e.renderer.drawTexture(o,d,{x:0,y:0,width:l,height:g},{opacity:t.opacity??1}),s.pass=o;return}let{pipeline:F,uniformLayout:E,textureLayout:oe,signalTextureLayout:se}=xe(e.device,e.renderer.format),z=e.renderer.samplerCache.getSampler(e.device),re=a.elapsedMs!==void 0?a.elapsedMs/1e3:B/D,ne=a.virtualMedia?.metadata?.durationMs?a.virtualMedia.metadata.durationMs/1e3:a.durationMs!==void 0?a.durationMs/1e3:0,u=(o,p)=>o.hasStaticSig&&o.sd?_.getOrCreate2DTextureView(e.device,n,o.sd.nodeId??`${ae}_${p}`,re,ne,o.sd,m,c,a.renderId,B,D):_.getDummy1x1TextureView(e.device),le=u(T,"shadow_amount_sig"),he=u(W,"shadow_tonal_width_sig"),de=u(P,"shadow_radius_sig"),ue=u(R,"highlight_amount_sig"),ge=u(L,"highlight_tonal_width_sig"),me=u(G,"highlight_radius_sig"),ce=u(N,"color_correction_sig"),pe=u(A,"midtone_contrast_sig"),j=(o,p)=>e.device.createBindGroup({layout:oe,entries:[{binding:0,resource:o.createView()},{binding:1,resource:z},{binding:2,resource:p.createView()}]});i[2]=P.val,i[3]=G.val,i[4]=T.val,i[5]=W.val,i[6]=R.val,i[7]=L.val,i[8]=N.val,i[9]=A.val,i[10]=0,i[11]=0,i[12]=T.hasStaticSig?1:0,i[13]=W.hasStaticSig?1:0,i[14]=P.hasStaticSig?1:0,i[15]=R.hasStaticSig?1:0,i[16]=L.hasStaticSig?1:0,i[17]=G.hasStaticSig?1:0,i[18]=N.hasStaticSig?1:0,i[19]=A.hasStaticSig?1:0;let V=e.renderer.getTemporaryTexture(m,c,[d,f,...a.excludeTextures||[]]),k=e.renderer.getTemporaryTexture(m,c,[d,V,f,...a.excludeTextures||[]]),K=e.device.createBindGroup({layout:se,entries:[{binding:0,resource:le},{binding:1,resource:he},{binding:2,resource:de},{binding:3,resource:ue},{binding:4,resource:ge},{binding:5,resource:me},{binding:6,resource:ce},{binding:7,resource:pe},{binding:8,resource:z}]});i[0]=1,i[1]=0,i[10]=0;let Se=e.renderer.getTemporaryBuffer(i),v=n.beginRenderPass({colorAttachments:[{view:V.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});v.setPipeline(F),v.setBindGroup(0,e.device.createBindGroup({layout:E,entries:[{binding:0,resource:{buffer:Se}}]})),v.setBindGroup(1,j(d,d)),v.setBindGroup(2,K),v.draw(4),v.end(),i[0]=0,i[1]=1,i[10]=1;let fe=e.renderer.getTemporaryBuffer(i),b=n.beginRenderPass({colorAttachments:[{view:k.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});b.setPipeline(F),b.setBindGroup(0,e.device.createBindGroup({layout:E,entries:[{binding:0,resource:{buffer:fe}}]})),b.setBindGroup(1,j(V,d)),b.setBindGroup(2,K),b.draw(4),b.end();let X=e.renderer.beginFrame(n,x,{r:0,g:0,b:0,a:0},l,g,"load");e.renderer.drawTexture(X,k,{x:0,y:0,width:l,height:g},{opacity:t.opacity??1}),s.pass=X};var Me={WebGPURenderer:te};export{te as a,Me as b};
@@ -0,0 +1,104 @@
1
+ import{a as V}from"./chunk-YSTLMWCG.mjs";import{d as x}from"./chunk-6YJP57MZ.mjs";import{e as v}from"./chunk-BVF64D6H.mjs";v();v();var $=0,K=500;function j(r,e,t){return Math.min(t,Math.max(e,r))}var q=`
2
+ struct DisplacementUniforms {
3
+ strengthX : f32,
4
+ strengthY : f32,
5
+ xChannel : f32, // 0=R, 1=G, 2=B, 3=A, 4=Luma
6
+ yChannel : f32, // 0=R, 1=G, 2=B, 3=A, 4=Luma
7
+
8
+ wrapMode : f32, // 0=Clamp, 1=Repeat, 2=Mirror
9
+ hasSignalX : f32,
10
+ hasSignalY : f32,
11
+ _pad : f32,
12
+ };
13
+
14
+ @group(0) @binding(0) var<uniform> u : DisplacementUniforms;
15
+ @group(1) @binding(0) var srcTex : texture_2d<f32>;
16
+ @group(1) @binding(1) var srcSamp : sampler;
17
+ @group(2) @binding(0) var mapTex : texture_2d<f32>;
18
+ @group(2) @binding(1) var mapSamp : sampler;
19
+ @group(3) @binding(0) var sigXTex : texture_2d<f32>;
20
+ @group(3) @binding(1) var sigYTex : texture_2d<f32>;
21
+ @group(3) @binding(2) var sigSamp : sampler;
22
+
23
+ struct VSOut {
24
+ @builtin(position) pos : vec4<f32>,
25
+ @location(0) uv : vec2<f32>,
26
+ };
27
+
28
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
29
+ var pos = array<vec2<f32>, 4>(
30
+ vec2<f32>(-1.0, 1.0),
31
+ vec2<f32>(1.0, 1.0),
32
+ vec2<f32>(-1.0, -1.0),
33
+ vec2<f32>(1.0, -1.0)
34
+ );
35
+ var uv = array<vec2<f32>, 4>(
36
+ vec2<f32>(0.0, 0.0),
37
+ vec2<f32>(1.0, 0.0),
38
+ vec2<f32>(0.0, 1.0),
39
+ vec2<f32>(1.0, 1.0)
40
+ );
41
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
42
+ }
43
+
44
+ fn extractChannel(color: vec4<f32>, channel: f32) -> f32 {
45
+ if (channel < 0.5) { return color.r; }
46
+ if (channel < 1.5) { return color.g; }
47
+ if (channel < 2.5) { return color.b; }
48
+ if (channel < 3.5) { return color.a; }
49
+ // Luminance
50
+ return dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114));
51
+ }
52
+
53
+ fn applyWrap(coord: f32, mode: f32) -> f32 {
54
+ if (mode < 0.5) {
55
+ // Clamp
56
+ return clamp(coord, 0.0, 1.0);
57
+ }
58
+ if (mode < 1.5) {
59
+ // Repeat
60
+ return fract(coord);
61
+ }
62
+ // Mirror
63
+ let t = fract(coord * 0.5) * 2.0;
64
+ if (t > 1.0) {
65
+ return 2.0 - t;
66
+ }
67
+ return t;
68
+ }
69
+
70
+ @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
71
+ let mapColor = textureSampleLevel(mapTex, mapSamp, in.uv, 0.0);
72
+
73
+ // Extract displacement values from chosen channels, centered around 0.5 and gated by alpha
74
+ // NOTE (P3, not changed here): this yields a max offset of strength/2 px at
75
+ // either extreme (peak-to-peak swing == strength). Confirm with design whether
76
+ // "strength in pixels" should mean peak amplitude instead \u2014 see review doc.
77
+ let dispX = (extractChannel(mapColor, u.xChannel) - 0.5) * mapColor.a;
78
+ let dispY = (extractChannel(mapColor, u.yChannel) - 0.5) * mapColor.a;
79
+
80
+ // Get strength, potentially from signal textures
81
+ var sX = u.strengthX;
82
+ var sY = u.strengthY;
83
+ if (u.hasSignalX > 0.5) {
84
+ sX = textureSampleLevel(sigXTex, sigSamp, in.uv, 0.0).r;
85
+ }
86
+ if (u.hasSignalY > 0.5) {
87
+ sY = textureSampleLevel(sigYTex, sigSamp, in.uv, 0.0).r;
88
+ }
89
+
90
+ // Compute displacement in UV space (strength is in pixels, convert to UV)
91
+ let srcDims = vec2<f32>(textureDimensions(srcTex));
92
+ let offset = vec2<f32>(
93
+ dispX * sX / srcDims.x,
94
+ dispY * sY / srcDims.y,
95
+ );
96
+
97
+ let displaced = vec2<f32>(
98
+ applyWrap(in.uv.x + offset.x, u.wrapMode),
99
+ applyWrap(in.uv.y + offset.y, u.wrapMode),
100
+ );
101
+
102
+ return textureSampleLevel(srcTex, srcSamp, displaced, 0.0);
103
+ }
104
+ `,A=new WeakMap,p=new Float32Array(8);function z(r){let e=A.get(r);if(e)return e;let t=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),d=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),i=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),a=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});return e={uniformLayout:t,srcTextureLayout:d,mapTextureLayout:i,signalTextureLayout:a,pipelineCache:new Map},A.set(r,e),e}function J(r,e){let t=z(r),d=`displacement_${e}`,i=t.pipelineCache.get(d);if(!i){let a=r.createShaderModule({label:`displacement_${e}.wgsl`,code:q});i=r.createRenderPipeline({label:`DisplacementMapPipeline_${e}`,layout:r.createPipelineLayout({bindGroupLayouts:[t.uniformLayout,t.srcTextureLayout,t.mapTextureLayout,t.signalTextureLayout]}),vertex:{module:a,entryPoint:"vs"},fragment:{module:a,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),t.pipelineCache.set(d,i)}return{pipeline:i,uniformLayout:t.uniformLayout,srcTextureLayout:t.srcTextureLayout,mapTextureLayout:t.mapTextureLayout,signalTextureLayout:t.signalTextureLayout}}function N(r){switch(r){case"Green":return 1;case"Blue":return 2;case"Alpha":return 3;case"Luminance":return 4;default:return 0}}function Q(r){switch(r){case"Repeat":return 1;case"Mirror":return 2;default:return 0}}function X(r,e,t){let d=`${e}HandleId`,i=r[d],a=i?r.inputs?.[i]:null,c=!!(a?.connectionValid&&a.outputItem?.type==="Signal"),u=c?a?.outputItem?.data:null,n=t;return c?u&&typeof u=="object"&&"offset"in u&&(n=Number(u.offset??t)):a?.connectionValid&&a.outputItem?.type==="Number"?n=j(Number(a.outputItem.data??t),$,K):n=Number(r[e]??t),{hasSignal:c,sd:u,value:n}}var Y=async r=>{let{ctx:e,encoder:t,pass:d,targetView:i,targetTexture:a,targetWidth:c,targetHeight:u,props:n,drawChild:P}=r,l=n.virtualMedia?.operation;if(l?.op!=="DisplacementMap"||!l)return;let T=n.virtualMedia.children?.[0],b=l.mapMedia;if(!T||!b)return;d.end();let s=c,o=u,G=n.frame??0,S=n.fps||30,f=X(l,"strengthX",50),y=X(l,"strengthY",50),m=e.renderer.getTemporaryTexture(s,o,[...n.excludeTextures||[],a]),w=m.createView();e.renderer.beginFrame(t,w,{r:0,g:0,b:0,a:0},s,o,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:s,height:o}),e.renderer.pushIdentity(),await P(T,{...n,virtualMedia:T,renderId:`${n.renderId}-c0`,excludeTextures:[...n.excludeTextures||[],m]},w,m,s,o),e.renderer.popTransform(),e.renderer.popScissor(),r.pass.end();let h=e.renderer.getTemporaryTexture(s,o,[...n.excludeTextures||[],a,m]),C=h.createView();e.renderer.beginFrame(t,C,{r:0,g:0,b:0,a:0},s,o,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:s,height:o}),e.renderer.pushIdentity(),await P(b,{...n,virtualMedia:b,renderId:`${n.renderId}-c1`,excludeTextures:[...n.excludeTextures||[],m,h]},C,h,s,o),e.renderer.popTransform(),e.renderer.popScissor(),r.pass.end();let{pipeline:_,uniformLayout:F,srcTextureLayout:E,mapTextureLayout:O,signalTextureLayout:W}=J(e.device,e.renderer.format),M=e.renderer.samplerCache.getSampler(e.device),L,D,R=n.elapsedMs!==void 0?n.elapsedMs/1e3:G/S,U=n.virtualMedia?.metadata?.durationMs?n.virtualMedia.metadata.durationMs/1e3:n.durationMs!==void 0?n.durationMs/1e3:0;f.hasSignal&&f.sd?L=x.getOrCreate2DTextureView(e.device,t,f.sd.nodeId??"displace_sx_sig",R,U,f.sd,s,o,n.renderId,G,S):L=x.getDummy1x1TextureView(e.device),y.hasSignal&&y.sd?D=x.getOrCreate2DTextureView(e.device,t,y.sd.nodeId??"displace_sy_sig",R,U,y.sd,s,o,n.renderId,G,S):D=x.getDummy1x1TextureView(e.device),p[0]=f.value,p[1]=y.value,p[2]=N(l.xChannel),p[3]=N(l.yChannel),p[4]=Q(l.wrapMode),p[5]=f.hasSignal?1:0,p[6]=y.hasSignal?1:0,p[7]=0;let k=e.renderer.getTemporaryBuffer(p),I=e.renderer.getTemporaryTexture(s,o,[m,h,a,...n.excludeTextures||[]]),g=t.beginRenderPass({colorAttachments:[{view:I.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});g.setPipeline(_),g.setBindGroup(0,e.device.createBindGroup({layout:F,entries:[{binding:0,resource:{buffer:k}}]})),g.setBindGroup(1,e.renderer.bindGroupCache.getBindGroup(e.device,E,m,M)),g.setBindGroup(2,e.renderer.bindGroupCache.getBindGroup(e.device,O,h,M)),g.setBindGroup(3,e.device.createBindGroup({layout:W,entries:[{binding:0,resource:L},{binding:1,resource:D},{binding:2,resource:M}]})),g.draw(4),g.end();let B=e.renderer.beginFrame(t,i,{r:0,g:0,b:0,a:0},c,u,"load");e.renderer.drawTexture(B,I,{x:0,y:0,width:c,height:u},{opacity:l.opacity??1}),r.pass=B};var se=V({WebGPURenderer:Y});export{se as a};
@@ -0,0 +1 @@
1
+ var i=Object.create;var c=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(n,e,s)=>()=>{if(s)throw s[0];try{return n&&(e=n(n=0)),e}catch(o){throw s=[o],o}};var b=(n,e)=>()=>{try{return e||n((e={exports:{}}).exports,e),e.exports}catch(s){throw e=0,s}},l=(n,e)=>{for(var s in e)c(n,s,{get:e[s],enumerable:!0})},w=(n,e,s,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of a(e))!d.call(n,r)&&r!==s&&c(n,r,{get:()=>e[r],enumerable:!(o=u(e,r))||o.enumerable});return n};var v=(n,e,s)=>(s=n!=null?i(p(n)):{},w(e||!n||!n.__esModule?c(s,"default",{value:n,enumerable:!0}):s,n));function k(){let n={env:{NODE_ENV:"production"},argv:[],platform:"browser",browser:!0,cwd:()=>"/",nextTick:(e,...s)=>queueMicrotask(()=>e(...s)),on:()=>n,emitWarning:()=>{}};return n}var t,f,P=g(()=>{"use strict";t=globalThis,f=t.process??k();t.process??=f});export{b as a,l as b,v as c,f as d,P as e};
@@ -0,0 +1,138 @@
1
+ import{a as W}from"./chunk-YSTLMWCG.mjs";import{d as y}from"./chunk-6YJP57MZ.mjs";import{e as G}from"./chunk-BVF64D6H.mjs";G();G();var se=`
2
+ struct ColorKeyUniforms {
3
+ similarity : f32,
4
+ smoothness : f32,
5
+ spillSuppression : f32,
6
+ colorSpace : f32, // 0 for YUV, 1 for RGB
7
+ spillSuppressionType : f32, // 0 for Desaturate, 1 for Neutralize, 2 for None
8
+ keyR : f32,
9
+ keyG : f32,
10
+ keyB : f32,
11
+ hasSimilaritySig : f32,
12
+ hasSmoothnessSig : f32,
13
+ hasSpillSig : f32,
14
+ };
15
+
16
+ @group(0) @binding(0) var<uniform> u : ColorKeyUniforms;
17
+ @group(1) @binding(0) var tex : texture_2d<f32>;
18
+ @group(1) @binding(1) var samp : sampler;
19
+
20
+ @group(2) @binding(0) var similaritySigTex : texture_2d<f32>;
21
+ @group(2) @binding(1) var smoothnessSigTex : texture_2d<f32>;
22
+ @group(2) @binding(2) var spillSigTex : texture_2d<f32>;
23
+ @group(2) @binding(3) var signalSamp : sampler;
24
+
25
+ struct VSOut {
26
+ @builtin(position) pos : vec4<f32>,
27
+ @location(0) uv : vec2<f32>,
28
+ };
29
+
30
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
31
+ var pos = array<vec2<f32>, 4>(
32
+ vec2<f32>(-1.0, 1.0),
33
+ vec2<f32>(1.0, 1.0),
34
+ vec2<f32>(-1.0, -1.0),
35
+ vec2<f32>(1.0, -1.0)
36
+ );
37
+ var uv = array<vec2<f32>, 4>(
38
+ vec2<f32>(0.0, 0.0),
39
+ vec2<f32>(1.0, 0.0),
40
+ vec2<f32>(0.0, 1.0),
41
+ vec2<f32>(1.0, 1.0)
42
+ );
43
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
44
+ }
45
+
46
+ fn rgb2yuv(rgb: vec3<f32>) -> vec3<f32> {
47
+ let y = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;
48
+ let u = -0.169 * rgb.r - 0.331 * rgb.g + 0.500 * rgb.b;
49
+ let v = 0.500 * rgb.r - 0.419 * rgb.g - 0.081 * rgb.b;
50
+ return vec3<f32>(y, u, v);
51
+ }
52
+
53
+ fn yuv2rgb(yuv: vec3<f32>) -> vec3<f32> {
54
+ let r = yuv.x + 1.402 * yuv.z;
55
+ let g = yuv.x - 0.344 * yuv.y - 0.714 * yuv.z;
56
+ let b = yuv.x + 1.772 * yuv.y;
57
+ return vec3<f32>(r, g, b);
58
+ }
59
+
60
+ @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
61
+ let src_color = textureSampleLevel(tex, samp, in.uv, 0.0);
62
+ if (src_color.a < 1e-5) {
63
+ return src_color;
64
+ }
65
+
66
+ // Unpremultiply alpha for keying and grading
67
+ let unpremult_rgb = src_color.rgb / src_color.a;
68
+
69
+ // Resolve dynamic signals if connected, otherwise use static uniform values
70
+ var similarity = u.similarity;
71
+ if (u.hasSimilaritySig > 0.5) {
72
+ similarity = textureSampleLevel(similaritySigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
73
+ }
74
+
75
+ var smoothness = u.smoothness;
76
+ if (u.hasSmoothnessSig > 0.5) {
77
+ smoothness = textureSampleLevel(smoothnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
78
+ }
79
+
80
+ var spillSuppression = u.spillSuppression;
81
+ if (u.hasSpillSig > 0.5) {
82
+ spillSuppression = textureSampleLevel(spillSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
83
+ }
84
+
85
+ let keyColor = vec3<f32>(u.keyR, u.keyG, u.keyB);
86
+
87
+ // 1. Calculate similarity distance
88
+ var dist = 0.0;
89
+ if (u.colorSpace < 0.5) {
90
+ // YUV (Chroma Distance)
91
+ let C_yuv = rgb2yuv(unpremult_rgb);
92
+ let K_yuv = rgb2yuv(keyColor);
93
+ dist = distance(C_yuv.yz, K_yuv.yz);
94
+ } else {
95
+ // RGB (Exact Distance)
96
+ dist = distance(unpremult_rgb, keyColor);
97
+ }
98
+
99
+ // 2. Calculate transparency mask
100
+ var mask = 0.0;
101
+ if (smoothness < 0.0001) {
102
+ mask = select(0.0, 1.0, dist >= similarity);
103
+ } else {
104
+ mask = smoothstep(similarity, similarity + smoothness, dist);
105
+ }
106
+
107
+ // 3. Apply spill suppression
108
+ var final_rgb = unpremult_rgb;
109
+ if (u.spillSuppressionType < 2.5) { // 0 for Desaturate, 1 for Neutralize, 2 for None
110
+ let C_yuv = rgb2yuv(unpremult_rgb);
111
+ let K_yuv = rgb2yuv(keyColor);
112
+ let K_chroma = K_yuv.yz;
113
+ let K_len_sq = dot(K_chroma, K_chroma);
114
+
115
+ if (K_len_sq > 1e-6) {
116
+ let C_chroma = C_yuv.yz;
117
+ let proj = dot(C_chroma, K_chroma) / K_len_sq;
118
+ if (proj > 0.0) {
119
+ let C_para = proj * K_chroma;
120
+ var C_chroma_suppressed = C_chroma;
121
+
122
+ if (u.spillSuppressionType < 0.5) {
123
+ // Desaturate
124
+ C_chroma_suppressed = C_chroma - spillSuppression * C_para;
125
+ } else {
126
+ // Neutralize (completely shift to neutral gray chroma)
127
+ C_chroma_suppressed = C_chroma - C_para;
128
+ }
129
+
130
+ final_rgb = yuv2rgb(vec3<f32>(C_yuv.x, C_chroma_suppressed.x, C_chroma_suppressed.y));
131
+ }
132
+ }
133
+ }
134
+
135
+ let final_alpha = src_color.a * mask;
136
+ return vec4<f32>(clamp(final_rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * final_alpha, final_alpha);
137
+ }
138
+ `,$=new WeakMap,a=new Float32Array(12);function ae(s){let e=$.get(s);if(e)return e;let r=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),n=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),o=s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});return e={uniformLayout:r,singleTextureLayout:n,signalTextureLayout:o,pipelineCache:new Map},$.set(s,e),e}function oe(s,e){let r=ae(s),n=`colorkey_${e}`,o=r.pipelineCache.get(n);if(!o){let l=s.createShaderModule({label:`colorkey_${e}.wgsl`,code:se});o=s.createRenderPipeline({label:`ColorKeyPipeline_${e}`,layout:s.createPipelineLayout({bindGroupLayouts:[r.uniformLayout,r.singleTextureLayout,r.signalTextureLayout]}),vertex:{module:l,entryPoint:"vs"},fragment:{module:l,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),r.pipelineCache.set(n,o)}return{colorKeyPipeline:o,uniformLayout:r.uniformLayout,singleTextureLayout:r.singleTextureLayout,signalTextureLayout:r.signalTextureLayout}}function ne(s){let e=s.replace("#","");e.length===3&&(e=e.split("").map(l=>l+l).join(""));let r=parseInt(e.substring(0,2),16)/255,n=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255;return[r,n,o]}var j=async s=>{let{ctx:e,encoder:r,pass:n,targetView:o,targetTexture:l,targetWidth:I,targetHeight:M,props:i,drawChild:Y}=s,b=i.frame??0,S=i.fps||30,t=i.virtualMedia?.operation;if(t?.op!=="ColorKey"||!t)return;let P=i.virtualMedia.children?.[0];if(!P)return;n.end();let u=I,p=M,K=t.inputs?Object.keys(t.inputs)[0]:"colorkey_node",c=t.similarityHandleId?t.inputs?.[t.similarityHandleId]:null,B=!!(c?.connectionValid&&(c.outputItem?.type==="Signal"||c.outputItem?.type==="Numeric")),f=B&&c?.outputItem?.data?c.outputItem.data:null,x=.4,L=!1;B?f&&(x=Math.max(0,Math.min(1,Number(f.offset??0))),L=!0):c?.connectionValid&&c.outputItem?.type==="Number"?x=Math.max(0,Math.min(1,Number(c.outputItem.data??.4))):x=Math.max(0,Math.min(1,Number(t.similarity??.4)));let d=t.smoothnessHandleId?t.inputs?.[t.smoothnessHandleId]:null,O=!!(d?.connectionValid&&(d.outputItem?.type==="Signal"||d.outputItem?.type==="Numeric")),v=O&&d?.outputItem?.data?d.outputItem.data:null,_=.1,R=!1;O?v&&(_=Math.max(0,Math.min(1,Number(v.offset??0))),R=!0):d?.connectionValid&&d.outputItem?.type==="Number"?_=Math.max(0,Math.min(1,Number(d.outputItem.data??.1))):_=Math.max(0,Math.min(1,Number(t.smoothness??.1)));let m=t.spillSuppressionHandleId?t.inputs?.[t.spillSuppressionHandleId]:null,z=!!(m?.connectionValid&&(m.outputItem?.type==="Signal"||m.outputItem?.type==="Numeric")),h=z&&m?.outputItem?.data?m.outputItem.data:null,T=.2,N=!1;z?h&&(T=Math.max(0,Math.min(1,Number(h.offset??0))),N=!0):m?.connectionValid&&m.outputItem?.type==="Number"?T=Math.max(0,Math.min(1,Number(m.outputItem.data??.2))):T=Math.max(0,Math.min(1,Number(t.spillSuppression??.2)));let C=e.renderer.getTemporaryTexture(u,p,[...i.excludeTextures||[],l]),A=C.createView();e.renderer.beginFrame(r,A,{r:0,g:0,b:0,a:0},u,p,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:u,height:p}),e.renderer.pushIdentity(),await Y(P,{...i,virtualMedia:P},A,C,u,p),e.renderer.popTransform(),e.renderer.popScissor();let{colorKeyPipeline:q,uniformLayout:J,singleTextureLayout:Q,signalTextureLayout:X}=oe(e.device,e.renderer.format),F=e.renderer.samplerCache.getSampler(e.device),V=i.elapsedMs!==void 0?i.elapsedMs/1e3:b/S,w=i.virtualMedia?.metadata?.durationMs?i.virtualMedia.metadata.durationMs/1e3:i.durationMs!==void 0?i.durationMs/1e3:0,U;L&&f?U=y.getOrCreate2DTextureView(e.device,r,f.nodeId??`${K}_similarity_sig`,V,w,f,u,p,i.renderId,b,S):U=y.getDummy1x1TextureView(e.device);let k;R&&v?k=y.getOrCreate2DTextureView(e.device,r,v.nodeId??`${K}_smoothness_sig`,V,w,v,u,p,i.renderId,b,S):k=y.getDummy1x1TextureView(e.device);let D;N&&h?D=y.getOrCreate2DTextureView(e.device,r,h.nodeId??`${K}_spill_sig`,V,w,h,u,p,i.renderId,b,S):D=y.getDummy1x1TextureView(e.device);let[Z,ee,te]=ne(t.keyColor??"#00ff00");a[0]=x,a[1]=_,a[2]=T,a[3]=t.colorSpace==="RGB"?1:0,a[4]=t.spillSuppressionType==="None"?2:t.spillSuppressionType==="Neutralize"?1:0,a[5]=Z,a[6]=ee,a[7]=te,a[8]=L?1:0,a[9]=R?1:0,a[10]=N?1:0,a[11]=0;let H=e.renderer.getTemporaryTexture(u,p,[C,l,...i.excludeTextures||[]]),re=e.renderer.getTemporaryBuffer(a),g=r.beginRenderPass({colorAttachments:[{view:H.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});g.setPipeline(q),g.setBindGroup(0,e.device.createBindGroup({layout:J,entries:[{binding:0,resource:{buffer:re}}]})),g.setBindGroup(1,e.renderer.bindGroupCache.getBindGroup(e.device,Q,C,F)),g.setBindGroup(2,e.device.createBindGroup({layout:X,entries:[{binding:0,resource:U},{binding:1,resource:k},{binding:2,resource:D},{binding:3,resource:F}]})),g.draw(4),g.end();let E=e.renderer.beginFrame(r,o,{r:0,g:0,b:0,a:0},I,M,"load");e.renderer.drawTexture(E,H,{x:0,y:0,width:I,height:M},{opacity:t.opacity??1}),s.pass=E};var ye=W({WebGPURenderer:j});export{ye as a};
@@ -0,0 +1 @@
1
+ import{e as s}from"./chunk-BVF64D6H.mjs";s();var g={transparent:{r:0,g:0,b:0,a:0},black:{r:0,g:0,b:0,a:1},white:{r:1,g:1,b:1,a:1},red:{r:1,g:0,b:0,a:1},green:{r:0,g:.502,b:0,a:1},lime:{r:0,g:1,b:0,a:1},blue:{r:0,g:0,b:1,a:1},yellow:{r:1,g:1,b:0,a:1},cyan:{r:0,g:1,b:1,a:1},aqua:{r:0,g:1,b:1,a:1},magenta:{r:1,g:0,b:1,a:1},fuchsia:{r:1,g:0,b:1,a:1},orange:{r:1,g:.647,b:0,a:1},purple:{r:.502,g:0,b:.502,a:1},pink:{r:1,g:.753,b:.796,a:1},gray:{r:.502,g:.502,b:.502,a:1},grey:{r:.502,g:.502,b:.502,a:1}},i=/^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*([\d.]+)\s*)?\)$/;function p(a){let r=a.startsWith("#")?a.slice(1):a,e=r.length;return e===3?{r:parseInt(r[0]+r[0],16)/255,g:parseInt(r[1]+r[1],16)/255,b:parseInt(r[2]+r[2],16)/255,a:1}:e===4?{r:parseInt(r[0]+r[0],16)/255,g:parseInt(r[1]+r[1],16)/255,b:parseInt(r[2]+r[2],16)/255,a:parseInt(r[3]+r[3],16)/255}:e===6?{r:parseInt(r.slice(0,2),16)/255,g:parseInt(r.slice(2,4),16)/255,b:parseInt(r.slice(4,6),16)/255,a:1}:e===8?{r:parseInt(r.slice(0,2),16)/255,g:parseInt(r.slice(2,4),16)/255,b:parseInt(r.slice(4,6),16)/255,a:parseInt(r.slice(6,8),16)/255}:null}function l(a){if(a==null)return{r:0,g:0,b:0,a:0};if(typeof a!="string")return a;let r=a.trim();if(r.length===0)return{r:0,g:0,b:0,a:0};if(r.startsWith("#")){let t=p(r);if(t)return t}let e=i.exec(r);if(e)return{r:parseInt(e[1],10)/255,g:parseInt(e[2],10)/255,b:parseInt(e[3],10)/255,a:e[4]!==void 0?parseFloat(e[4]):1};let n=g[r.toLowerCase()];return n?{...n}:{r:0,g:0,b:0,a:0}}export{l as a};
@@ -0,0 +1 @@
1
+ import{e as b}from"./chunk-BVF64D6H.mjs";b();b();var I={whoosh:.7,riser:2,impact:1.8,downshifter:1.2,glitch:.35};function E(t){let r=(t^2654435769)>>>0;return()=>{r=r+1831565813>>>0;let e=r;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296*2-1}}var x=class{low=0;band=0;process(r,e,a,n){let s=2*Math.sin(Math.PI*Math.min(e,n*.45)/n);this.low+=s*this.band;let i=r-this.low-a*this.band;return this.band+=s*i,this.band}},M=(t,r,e)=>t*(r/t)**e,A=(t,r)=>t<r?Math.sin(t/r*(Math.PI/2))**2:Math.cos((t-r)/(1-r)*(Math.PI/2))**2;function F(t,r,e,a){let n=new Float32Array(t),s=new Float32Array(t),i=new x;for(let o=0;o<t;o++){let c=o/t,f=a?1-c:c,u=A(c,a?.35:.6),m=i.process(e(),M(250,7e3,f),.35,r)*u*.9,l=(a?1-c:c)*2-1;n[o]=m*Math.sqrt((1-l)/2)*1.4,s[o]=m*Math.sqrt((1+l)/2)*1.4}return[n,s]}function w(t,r,e,a){let n=new Float32Array(t),s=new Float32Array(t),i=new x,o=0;for(let c=0;c<t;c++){let f=c/t,u=a?1-f:f,m=a?(1-f)**1.5:f**2.2,l=M(110,880,u);o+=2*Math.PI*l/r;let h=(Math.sin(o)+.5*Math.sin(o*2)+.25*Math.sin(o*3))*.3,d=i.process(e(),M(300,9e3,u),.5,r)*1.2,p=(h+d)*m*.6;n[c]=p,s[c]=p}return[n,s]}function L(t,r,e){let a=new Float32Array(t),n=new Float32Array(t),s=new x,i=0;for(let o=0;o<t;o++){let c=o/r,f=38+62*Math.exp(-c*14);i+=2*Math.PI*f/r;let u=Math.sin(i)*Math.exp(-c*2.6),m=s.process(e(),900*Math.exp(-c*6)+120,.6,r)*Math.exp(-c*9)*1.6,l=o<96?e()*(1-o/96)*.5:0,h=(u*1.1+m+l)*.85,d=e()*Math.exp(-c*5)*.08;a[o]=h+d,n[o]=h-d}return[a,n]}function B(t,r,e){let a=new Float32Array(t),n=new Float32Array(t),s=Math.max(1,Math.round(r*.022)),i=0,o=1,c=1;for(let f=0;f<t;f++){f%s===0&&(o=e()>-.2?1:0,c=2+Math.floor((e()+1)*6)),f%c===0&&(i=e()>0?1:-1);let u=1-f/t,m=i*o*u*.45;a[f]=m,n[f]=o?-m*.6:0}return[a,n]}function v(t,r){let e=t.durationSec??I[t.type],a=r.sampleRate,n=Math.max(1,Math.round(e*a)),s=E(r.seed+n),i;switch(t.type){case"whoosh":i=F(n,a,s,!1);break;case"riser":i=w(n,a,s,!1);break;case"downshifter":i=w(n,a,s,!0);break;case"impact":i=L(n,a,s);break;case"glitch":i=B(n,a,s);break}let o=t.volume??.8;for(let c of i)for(let f=0;f<n;f++)c[f]=Math.tanh((c[f]??0)*o);return{startSample:Math.max(0,Math.round(t.atBar*r.secondsPerBar*a)),channels:i}}function U(t,r){for(let e of r)for(let a=0;a<2;a++){let n=t[a],s=e.channels[a];if(!n||!s)continue;let i=Math.min(s.length,n.length-e.startSample);for(let o=0;o<i;o++){let c=n[e.startSample+o],f=s[o];c!==void 0&&f!==void 0&&(n[e.startSample+o]=c+f)}}}function P(t,r=.7,e=.97){let a=e-r;for(let n of t)for(let s=0;s<n.length;s++){let i=n[s]??0,o=Math.abs(i);o>r&&(n[s]=Math.sign(i)*(r+a*Math.tanh((o-r)/a)))}}b();function T(t,r={}){let e=r.sampleRate??48e3,a=2,n=t[0],s=t[1],i=Math.min(n.length,s.length),c=a*2,f=e*c,u=i*c,m=44+u,l=Buffer.alloc(m);l.write("RIFF",0,"ascii"),l.writeUInt32LE(36+u,4),l.write("WAVE",8,"ascii"),l.write("fmt ",12,"ascii"),l.writeUInt32LE(16,16),l.writeUInt16LE(1,20),l.writeUInt16LE(a,22),l.writeUInt32LE(e,24),l.writeUInt32LE(f,28),l.writeUInt16LE(c,32),l.writeUInt16LE(16,34),l.write("data",36,"ascii"),l.writeUInt32LE(u,40);let h=44;for(let d=0;d<i;d++){let p=Math.max(-1,Math.min(1,n[d]??0)),R=p<0?p*32768:p*32767;l.writeInt16LE(Math.round(R),h),h+=2;let S=Math.max(-1,Math.min(1,s[d]??0)),g=S<0?S*32768:S*32767;l.writeInt16LE(Math.round(g),h),h+=2}return l}export{v as a,U as b,P as c,T as d};
@@ -0,0 +1,47 @@
1
+ import{a as f}from"./chunk-N4PWLBZ7.mjs";import{a as u}from"./chunk-YSTLMWCG.mjs";import{e as a}from"./chunk-BVF64D6H.mjs";a();a();var P=()=>`
2
+ struct Uniforms {
3
+ sampleRate : f32,
4
+ pan : f32,
5
+ baseTime : f32,
6
+ frame : f32,
7
+ numSamples : f32,
8
+ numChannels : f32,
9
+ pad1 : f32,
10
+ pad2 : f32,
11
+ };
12
+
13
+ @group(0) @binding(0) var<uniform> u : Uniforms;
14
+ @group(0) @binding(1) var<storage, read> inputChannels : array<f32>;
15
+ @group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;
16
+ @group(0) @binding(3) var<storage, read_write> state : array<f32>;
17
+
18
+ @compute @workgroup_size(1)
19
+ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
20
+ if (gid.x != 0u) { return; }
21
+
22
+ let numSamples = u32(u.numSamples);
23
+ let numChannels = u32(u.numChannels);
24
+
25
+ let clampedPan = max(-1.0f, min(1.0f, u.pan));
26
+ var leftGain = 1.0f;
27
+ var rightGain = 1.0f;
28
+
29
+ if (clampedPan < 0.0f) {
30
+ rightGain = 1.0f + clampedPan;
31
+ } else if (clampedPan > 0.0f) {
32
+ leftGain = 1.0f - clampedPan;
33
+ }
34
+
35
+ for (var index = 0u; index < numSamples; index = index + 1u) {
36
+ if (numChannels > 1u) {
37
+ outputChannels[index] = inputChannels[index] * leftGain;
38
+ outputChannels[numSamples + index] = inputChannels[numSamples + index] * rightGain;
39
+ } else {
40
+ outputChannels[index] = inputChannels[index] * leftGain;
41
+ }
42
+ }
43
+
44
+ // Dummy reference to prevent state binding from being optimized out
45
+ state[0] = state[0];
46
+ }
47
+ `,m=async(e,t,r,n)=>{if(!n?.device)throw new Error("GPUDevice is required for WebGPU Stereo Panning.");let d=r.operation?.pan??0,p=Math.max(-1,Math.min(1,d));if(e.length===0)return;let i=e[0].length;if(i===0)return;if(e.length===1){let s=new Float32Array(i);s.set(e[0]),e.push(s)}let l=e.length,g=r.operation?.id||"stereo-panning",o=n.frame??0,c=n.fps??24;await f.process(n.device,g,e,t,r,o,c,P,()=>[t,p,0,o,i,l,0,0],8,1,n?.renderId,!0,n?.elapsedMs,n?.durationMs)};var y=u({audioProcessor:m});export{y as a};
@@ -0,0 +1 @@
1
+ import{d as s,e as u}from"./chunk-BVF64D6H.mjs";u();var a=null,r=null;async function c(n){if(typeof s<"u"&&s.versions?.node&&!globalThis.navigator?.gpu){let{create:o,globals:f}=await import("./webgpu-NSSANM4F.mjs");Object.assign(globalThis,f);let l=[];typeof globalThis.navigator>"u"?globalThis.navigator={gpu:o(l)}:Object.defineProperty(globalThis.navigator,"gpu",{value:o(l),configurable:!0,writable:!0})}let e=await globalThis.navigator.gpu.requestAdapter({powerPreference:"high-performance",...n});if(!e)throw new Error("WebGPU not available");let i=[];e.features.has("float32-filterable")&&i.push("float32-filterable");let t={};return e.limits&&Number.isInteger(e.limits.maxTextureDimension2D)&&(t.maxTextureDimension2D=Math.min(8192,e.limits.maxTextureDimension2D)),e.limits&&Number.isInteger(e.limits.maxStorageBuffersPerShaderStage)&&(t.maxStorageBuffersPerShaderStage=Math.min(16,e.limits.maxStorageBuffersPerShaderStage)),e.limits&&Number.isInteger(e.limits.maxStorageBuffersPerPipelineLayout)&&(t.maxStorageBuffersPerPipelineLayout=Math.min(16,e.limits.maxStorageBuffersPerPipelineLayout)),e.requestDevice({requiredFeatures:i,requiredLimits:t})}function g(){a=null,r=null}var m=async n=>a||r||(r=(async()=>{let e=await c(n);return a=e,e.lost.then(i=>{i.reason!=="destroyed"&&g()}),e})(),r);export{c as a,m as b};