framefields 2.0.11 → 2.1.1
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.
- package/README.md +22 -5
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +13 -12
- package/dist/{audio-BHanw8Jb.d.mts → audio-CfBpzxn9.d.mts} +3 -3
- package/dist/{audio-BHanw8Jb.d.mts.map → audio-CfBpzxn9.d.mts.map} +1 -1
- package/dist/{audio-TAvPwzLR.mjs → audio-DJeVoE8b.mjs} +1 -1
- package/dist/{audio-TAvPwzLR.mjs.map → audio-DJeVoE8b.mjs.map} +1 -1
- package/dist/{audio-COOMNwL5.mjs → audio-GGuQ_JI0.mjs} +4 -4
- package/dist/{audio-COOMNwL5.mjs.map → audio-GGuQ_JI0.mjs.map} +1 -1
- package/dist/{chunk-GMkBE123.mjs → chunk-GBe2k3y8.mjs} +1 -4
- package/dist/{dist-C_hjvkdN.mjs → dist-0QGroRYZ.mjs} +1 -1
- package/dist/{dist-C_hjvkdN.mjs.map → dist-0QGroRYZ.mjs.map} +1 -1
- package/dist/{dist-BYqNNwsl.mjs → dist-BY0bIWgr.mjs} +10 -2
- package/dist/dist-BY0bIWgr.mjs.map +1 -0
- package/dist/{dist-BAVZdFEJ.mjs → dist-Bb8BoMiw.mjs} +76 -626
- package/dist/dist-Bb8BoMiw.mjs.map +1 -0
- package/dist/{dist-Cxi68OuY.mjs → dist-DkuDAIrG.mjs} +26862 -25638
- package/dist/dist-DkuDAIrG.mjs.map +1 -0
- package/dist/{dist-CbG3QxDw.mjs → dist-fjKpBYkc.mjs} +12 -27
- package/dist/dist-fjKpBYkc.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +36 -34
- package/dist/{effects-DzbjFhyA.mjs → effects-D6wFg2FR.mjs} +3 -3
- package/dist/{effects-DzbjFhyA.mjs.map → effects-D6wFg2FR.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -1
- package/dist/{fonts-C0W6TgJk.mjs → fonts-CZMYtbP7.mjs} +24 -11
- package/dist/fonts-CZMYtbP7.mjs.map +1 -0
- package/dist/gpu-DG3gI88-.mjs +215 -0
- package/dist/gpu-DG3gI88-.mjs.map +1 -0
- package/dist/{index-DRZu3ezy.d.mts → index--0vVZDPM.d.mts} +3 -3
- package/dist/{index-DRZu3ezy.d.mts.map → index--0vVZDPM.d.mts.map} +1 -1
- package/dist/{index-DnWsbbuZ.d.mts → index-BcA8rep0.d.mts} +7 -2
- package/dist/index-BcA8rep0.d.mts.map +1 -0
- package/dist/{index-DGJp1d30.d.mts → index-BzQc812z.d.mts} +3 -3
- package/dist/{index-DGJp1d30.d.mts.map → index-BzQc812z.d.mts.map} +1 -1
- package/dist/{index-DDEPvMww.d.mts → index-Cpkzy5XR.d.mts} +3452 -1675
- package/dist/index-Cpkzy5XR.d.mts.map +1 -0
- package/dist/{index-CDoTrMs1.d.mts → index-D__HdInU.d.mts} +8 -8
- package/dist/{index-CDoTrMs1.d.mts.map → index-D__HdInU.d.mts.map} +1 -1
- package/dist/{index-CYGpSVsf.d.mts → index-DpWia6iH.d.mts} +4 -11
- package/dist/index-DpWia6iH.d.mts.map +1 -0
- package/dist/{index-9B8CJowc.d.mts → index-Fciq8bcC.d.mts} +10 -2
- package/dist/index-Fciq8bcC.d.mts.map +1 -0
- package/dist/index.d.mts +29 -1842
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +79 -66
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +12 -13
- package/dist/{preview-BV2C4Fk6.mjs → preview--rOXbBxl.mjs} +3 -4
- package/dist/preview--rOXbBxl.mjs.map +1 -0
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/chunk-2MZXSWVT.mjs +118 -0
- package/dist/preview-engine/{chunk-Y6HWYPKX.mjs → chunk-3GNP7TJH.mjs} +3 -3
- package/dist/preview-engine/chunk-3UPI4EPV.mjs +69 -0
- package/dist/preview-engine/{chunk-6JW37VJA.mjs → chunk-5AUB4Y3L.mjs} +3 -23
- package/dist/preview-engine/chunk-5DOD2NVY.mjs +26 -0
- package/dist/preview-engine/chunk-5FC7GOWW.mjs +474 -0
- package/dist/preview-engine/chunk-5W4AFQP7.mjs +97 -0
- package/dist/preview-engine/chunk-63SFBHEH.mjs +1 -0
- package/dist/preview-engine/{chunk-25IW7NYO.mjs → chunk-7EPDVSCL.mjs} +1 -1
- package/dist/preview-engine/chunk-7EPIRODI.mjs +91 -0
- package/dist/preview-engine/chunk-7J2FWGVD.mjs +1 -0
- package/dist/preview-engine/chunk-AXHB4J37.mjs +147 -0
- package/dist/preview-engine/chunk-AXQZX3TC.mjs +450 -0
- package/dist/preview-engine/chunk-B43Z3J7J.mjs +5 -0
- package/dist/preview-engine/chunk-BWJS6G7R.mjs +314 -0
- package/dist/preview-engine/{chunk-ECPP3UG6.mjs → chunk-E3HC4GRQ.mjs} +3 -23
- package/dist/preview-engine/{chunk-AEK5BO3J.mjs → chunk-E4RAFHZM.mjs} +1 -1
- package/dist/preview-engine/chunk-ENKKLU7B.mjs +22 -0
- package/dist/preview-engine/{chunk-IYVN2QEL.mjs → chunk-FLPSWDX4.mjs} +1 -1
- package/dist/preview-engine/{chunk-24DXIKXL.mjs → chunk-FPRXK2WD.mjs} +2 -2
- package/dist/preview-engine/chunk-FU7AIAMM.mjs +88 -0
- package/dist/preview-engine/{chunk-CBM7B7EW.mjs → chunk-GMGGDADT.mjs} +1 -1
- package/dist/preview-engine/chunk-GSFN4WCH.mjs +62 -0
- package/dist/preview-engine/chunk-IQC2I5A5.mjs +1 -0
- package/dist/preview-engine/chunk-IUPDOATX.mjs +114 -0
- package/dist/preview-engine/{chunk-GHMCGTJ2.mjs → chunk-J2R5R7YY.mjs} +3 -23
- package/dist/preview-engine/chunk-JAJOZG5P.mjs +1 -0
- package/dist/preview-engine/{chunk-XLFYM7KH.mjs → chunk-K773AOF3.mjs} +2 -2
- package/dist/preview-engine/{chunk-RJUAM52F.mjs → chunk-L3CHEZMZ.mjs} +3 -23
- package/dist/preview-engine/chunk-LBRVQ4GE.mjs +84 -0
- package/dist/preview-engine/chunk-LGVEFPOG.mjs +3 -0
- package/dist/preview-engine/{chunk-AMBSW6OA.mjs → chunk-NEE3KQTX.mjs} +2 -2
- package/dist/preview-engine/chunk-NPD6W3RP.mjs +1 -0
- package/dist/preview-engine/{chunk-V6VU46ZG.mjs → chunk-O2RNIQXT.mjs} +1 -1
- package/dist/preview-engine/{server-utils-2FAIV45N.mjs → chunk-OCX5AD23.mjs} +1 -1
- package/dist/preview-engine/chunk-OJ2PKBXE.mjs +40 -0
- package/dist/preview-engine/chunk-OKH2VU2U.mjs +97 -0
- package/dist/preview-engine/chunk-PAQNDZQB.mjs +83 -0
- package/dist/preview-engine/chunk-PEWYB6WP.mjs +43 -0
- package/dist/preview-engine/{chunk-MDDF2GCF.mjs → chunk-PFA427ZC.mjs} +3 -23
- package/dist/preview-engine/chunk-PL4IH5V4.mjs +89 -0
- package/dist/preview-engine/chunk-PNB3ERR3.mjs +1 -0
- package/dist/preview-engine/{chunk-PQD5UPHG.mjs → chunk-PR2BUYCL.mjs} +1 -1
- package/dist/preview-engine/{chunk-QYRDQMNB.mjs → chunk-PXT52LEH.mjs} +3 -23
- package/dist/preview-engine/{chunk-ZSIJB76A.mjs → chunk-Q2DPNVIA.mjs} +2 -2
- package/dist/preview-engine/chunk-Q4Z54DQ7.mjs +1 -0
- package/dist/preview-engine/{chunk-6256GQFP.mjs → chunk-QY7MHWZW.mjs} +1 -1
- package/dist/preview-engine/chunk-RQLMW6MA.mjs +4 -0
- package/dist/preview-engine/chunk-RSMO7NPN.mjs +1 -0
- package/dist/preview-engine/chunk-RW2F3XLQ.mjs +90 -0
- package/dist/preview-engine/chunk-SGPRLTNF.mjs +52 -0
- package/dist/preview-engine/{chunk-Y6FEU4TV.mjs → chunk-SZW5J72T.mjs} +3 -23
- package/dist/preview-engine/{chunk-LIHUEYI5.mjs → chunk-VO2R3DWV.mjs} +2 -2
- package/dist/preview-engine/{chunk-BJKH76OM.mjs → chunk-VXS5SIEC.mjs} +3 -23
- package/dist/preview-engine/chunk-WFGJXCZT.mjs +53 -0
- package/dist/preview-engine/chunk-WH5Q2NFN.mjs +32 -0
- package/dist/preview-engine/chunk-WSIURGP2.mjs +121 -0
- package/dist/preview-engine/{chunk-AWTH2WZO.mjs → chunk-WUKH7BD7.mjs} +1 -1
- package/dist/preview-engine/chunk-XC5WZNOY.mjs +1448 -0
- package/dist/preview-engine/chunk-YQZOGEPZ.mjs +186 -0
- package/dist/preview-engine/{chunk-D3TETPLI.mjs → chunk-ZH5MZQTZ.mjs} +1 -1
- package/dist/preview-engine/chunk-ZIIFTWDH.mjs +58 -0
- package/dist/preview-engine/{chunk-EQ4QZRXB.mjs → chunk-ZNL4W4DK.mjs} +2 -2
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +127 -130
- package/dist/preview-engine/player.mjs +6 -6
- package/dist/preview-engine/renderers-2H7YEUTD.mjs +1 -0
- package/dist/preview-engine/renderers-2P6KXWEZ.mjs +1 -0
- package/dist/preview-engine/renderers-2SVWAB42.mjs +1 -0
- package/dist/preview-engine/renderers-3RC5FDWX.mjs +1 -0
- package/dist/preview-engine/renderers-3T7Q4SPP.mjs +1 -0
- package/dist/preview-engine/renderers-4DV4REGM.mjs +1 -0
- package/dist/preview-engine/renderers-57WDL6XN.mjs +1 -0
- package/dist/preview-engine/renderers-6WH7NZCC.mjs +1 -0
- package/dist/preview-engine/renderers-7JTNJE7M.mjs +1 -0
- package/dist/preview-engine/renderers-7VJN5L3Z.mjs +1 -0
- package/dist/preview-engine/{renderers-WLH4HRUE.mjs → renderers-A7VH3ON5.mjs} +1 -1
- package/dist/preview-engine/renderers-CQXQHOW2.mjs +1 -0
- package/dist/preview-engine/{renderers-2US2NIUG.mjs → renderers-D2EJULOJ.mjs} +3 -23
- package/dist/preview-engine/renderers-DXHJAMZR.mjs +1 -0
- package/dist/preview-engine/{renderers-W5CVDJVH.mjs → renderers-F55XFVMP.mjs} +1 -1
- package/dist/preview-engine/renderers-FWGMNPYB.mjs +1 -0
- package/dist/preview-engine/renderers-HXFRTIJD.mjs +1 -0
- package/dist/preview-engine/renderers-IWQ3V6AJ.mjs +1 -0
- package/dist/preview-engine/renderers-IXGM55XK.mjs +1 -0
- package/dist/preview-engine/renderers-KVHUVWSN.mjs +1 -0
- package/dist/preview-engine/renderers-KZWGSKRF.mjs +1 -0
- package/dist/preview-engine/renderers-LVDUZZ75.mjs +1 -0
- package/dist/preview-engine/renderers-M7R2ZJUP.mjs +1 -0
- package/dist/preview-engine/renderers-NWHS7N2L.mjs +1 -0
- package/dist/preview-engine/{renderers-CAUWP4XH.mjs → renderers-O2DZPBOJ.mjs} +3 -23
- package/dist/preview-engine/renderers-OT7D3BUA.mjs +1 -0
- package/dist/preview-engine/renderers-P4S7GL64.mjs +104 -0
- package/dist/preview-engine/renderers-PMOO7DLX.mjs +1 -0
- package/dist/preview-engine/renderers-Q4OFCMXI.mjs +1 -0
- package/dist/preview-engine/renderers-QCCPCH73.mjs +1 -0
- package/dist/preview-engine/renderers-RJO6H4FC.mjs +1 -0
- package/dist/preview-engine/renderers-RRXFJRGI.mjs +1 -0
- package/dist/preview-engine/renderers-SCJ6OKTB.mjs +1 -0
- package/dist/preview-engine/renderers-T4JMJXWL.mjs +1 -0
- package/dist/preview-engine/renderers-TAWT3ZSS.mjs +1 -0
- package/dist/preview-engine/{renderers-JQHUBWLL.mjs → renderers-TFZST6WW.mjs} +3 -23
- package/dist/preview-engine/renderers-UHTO6BQA.mjs +1 -0
- package/dist/preview-engine/renderers-UPKB5OLS.mjs +100 -0
- package/dist/preview-engine/renderers-UPTJJE5F.mjs +1 -0
- package/dist/preview-engine/renderers-VLMQR3DW.mjs +1 -0
- package/dist/preview-engine/renderers-WVTTRCVI.mjs +1 -0
- package/dist/preview-engine/renderers-X5PUIPU5.mjs +1 -0
- package/dist/preview-engine/renderers-XCMVZ2XG.mjs +35 -0
- package/dist/preview-engine/renderers-XHTMRXC5.mjs +1 -0
- package/dist/preview-engine/renderers-YDCDY3BR.mjs +1 -0
- package/dist/preview-engine/renderers-YECY2YFT.mjs +1 -0
- package/dist/preview-engine/renderers-YJNQ4B7B.mjs +1 -0
- package/dist/preview-engine/renderers-YMN6QXK7.mjs +1 -0
- package/dist/preview-engine/renderers-YZEVPHPQ.mjs +228 -0
- package/dist/preview-engine/renderers-Z7YQUFAY.mjs +1 -0
- package/dist/preview-engine/renderers-ZANPE3OK.mjs +1 -0
- package/dist/preview-engine/renderers-ZJTRANIX.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/skia-canvas-QBXAOGPB.mjs +1 -0
- package/dist/{program-BmNKgzja.mjs → program-Cc5AsBHz.mjs} +93 -2335
- package/dist/program-Cc5AsBHz.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -4
- package/dist/renderer-1VSi7Vum.mjs +5 -0
- package/dist/renderer-4BlpUHQT.mjs +5 -0
- package/dist/{renderer-Bv21DbWy.mjs → renderer-9L0p8IT3.mjs} +3 -1
- package/dist/renderer-AzSX2-mZ.mjs +5 -0
- package/dist/renderer-B-cxK24t.mjs +5 -0
- package/dist/{renderer-DxTs4Iyi.mjs → renderer-B1Zn91xt.mjs} +40 -142
- package/dist/renderer-B1Zn91xt.mjs.map +1 -0
- package/dist/renderer-B5d5oM_D.mjs +5 -0
- package/dist/renderer-B8BdNjaN.mjs +5 -0
- package/dist/{renderer-Bhdf90Zq.mjs → renderer-BI5rvAyo.mjs} +51 -163
- package/dist/renderer-BI5rvAyo.mjs.map +1 -0
- package/dist/renderer-BKEfeg-4.mjs +5 -0
- package/dist/{renderer-CI7sG_cv.mjs → renderer-BKf1qDwL.mjs} +83 -266
- package/dist/renderer-BKf1qDwL.mjs.map +1 -0
- package/dist/renderer-BLLOkeFB.mjs +5 -0
- package/dist/renderer-BSitV56h.mjs +268 -0
- package/dist/renderer-BSitV56h.mjs.map +1 -0
- package/dist/renderer-BTvov1NH.mjs +5 -0
- package/dist/renderer-BVun05IK.mjs +5 -0
- package/dist/{renderer-B2ieylQ3.mjs → renderer-BWVsBB3t.mjs} +56 -167
- package/dist/renderer-BWVsBB3t.mjs.map +1 -0
- package/dist/{renderer-ChdLYS-G.mjs → renderer-BXQQxeNC.mjs} +20 -87
- package/dist/renderer-BXQQxeNC.mjs.map +1 -0
- package/dist/renderer-B_3h5nhy.mjs +5 -0
- package/dist/renderer-BaZjoFYK.mjs +5 -0
- package/dist/{renderer-CfC_aiew.mjs → renderer-BaaOR3Ao.mjs} +57 -192
- package/dist/renderer-BaaOR3Ao.mjs.map +1 -0
- package/dist/{renderer-bZU_ndxf.mjs → renderer-BajIOuZH.mjs} +2 -2
- package/dist/{renderer-bZU_ndxf.mjs.map → renderer-BajIOuZH.mjs.map} +1 -1
- package/dist/{renderer-CWTpc4ff.mjs → renderer-Bb8T5eRX.mjs} +76 -210
- package/dist/renderer-Bb8T5eRX.mjs.map +1 -0
- package/dist/{renderer-D2nCGcjv.mjs → renderer-Bc6J0iVG.mjs} +3 -3
- package/dist/{renderer-D2nCGcjv.mjs.map → renderer-Bc6J0iVG.mjs.map} +1 -1
- package/dist/renderer-BcApaCVe.mjs +5 -0
- package/dist/{renderer-D_1oDOCP.mjs → renderer-Bg7647VN.mjs} +14 -69
- package/dist/renderer-Bg7647VN.mjs.map +1 -0
- package/dist/{renderer-ho_jXJ0H.mjs → renderer-BhKIZDsm.mjs} +23 -117
- package/dist/renderer-BhKIZDsm.mjs.map +1 -0
- package/dist/{renderer-dncoIVdd.mjs → renderer-BhhSyHKF.mjs} +3 -1
- package/dist/{renderer-CXn5HAnK.mjs → renderer-Br9BOkQs.mjs} +10 -16
- package/dist/renderer-Br9BOkQs.mjs.map +1 -0
- package/dist/{renderer-BTdOMMEx.d.mts → renderer-Bs_f_App.d.mts} +2 -2
- package/dist/{renderer-BTdOMMEx.d.mts.map → renderer-Bs_f_App.d.mts.map} +1 -1
- package/dist/{renderer-DZGtBUCx.mjs → renderer-BygIYH8s.mjs} +35 -185
- package/dist/renderer-BygIYH8s.mjs.map +1 -0
- package/dist/{renderer-Bv6q84TU.mjs → renderer-C--Dqe-3.mjs} +61 -208
- package/dist/renderer-C--Dqe-3.mjs.map +1 -0
- package/dist/renderer-C14mKYCw.mjs +5 -0
- package/dist/{renderer-CnXW28b9.mjs → renderer-C27RfwXN.mjs} +85 -279
- package/dist/renderer-C27RfwXN.mjs.map +1 -0
- package/dist/{renderer-Dy0utCl7.mjs → renderer-C5caYAA3.mjs} +10 -17
- package/dist/renderer-C5caYAA3.mjs.map +1 -0
- package/dist/{renderer-Bfgd4N0O.mjs → renderer-C5zpaQed.mjs} +9 -16
- package/dist/renderer-C5zpaQed.mjs.map +1 -0
- package/dist/{renderer-cgxO2xN6.mjs → renderer-C7UZLOYk.mjs} +10 -17
- package/dist/renderer-C7UZLOYk.mjs.map +1 -0
- package/dist/{renderer-BJ1aTkZf.mjs → renderer-C92mwhZz.mjs} +99 -282
- package/dist/renderer-C92mwhZz.mjs.map +1 -0
- package/dist/{renderer-CepMDQ06.mjs → renderer-CAJe9eLS.mjs} +19 -106
- package/dist/renderer-CAJe9eLS.mjs.map +1 -0
- package/dist/renderer-CFqhAXkH.mjs +5 -0
- package/dist/renderer-CK-spD4j.mjs +5 -0
- package/dist/renderer-CLLzQTIk.mjs +5 -0
- package/dist/{renderer-CtyD_Xju.mjs → renderer-CMsjnZ0G.mjs} +59 -194
- package/dist/renderer-CMsjnZ0G.mjs.map +1 -0
- package/dist/renderer-COwa6xlF.mjs +5 -0
- package/dist/renderer-CQPuuoVf.mjs +6 -0
- package/dist/renderer-CRd-cDqZ.mjs +5 -0
- package/dist/renderer-CTVnQAUm.mjs +5 -0
- package/dist/renderer-CbiEBSGx.mjs +5 -0
- package/dist/renderer-Cl7PruQ1.mjs +5 -0
- package/dist/renderer-CmuGGUDR.mjs +5 -0
- package/dist/renderer-CoGP4Mvf.mjs +148 -0
- package/dist/renderer-CoGP4Mvf.mjs.map +1 -0
- package/dist/renderer-CoNRrfqx.mjs +5 -0
- package/dist/{renderer-BREIjsUU.mjs → renderer-CrAqu3Rg.mjs} +14 -40
- package/dist/renderer-CrAqu3Rg.mjs.map +1 -0
- package/dist/renderer-CvIGa0mE.mjs +5 -0
- package/dist/renderer-CwMDPv0p.mjs +5 -0
- package/dist/{renderer-BIIWCg_J.mjs → renderer-CydWqyf0.mjs} +11 -18
- package/dist/renderer-CydWqyf0.mjs.map +1 -0
- package/dist/{renderer-bsWnRNpJ.mjs → renderer-CzBQgGD2.mjs} +29 -98
- package/dist/renderer-CzBQgGD2.mjs.map +1 -0
- package/dist/{renderer-CdciwwMI.mjs → renderer-D0aZNkQE.mjs} +161 -457
- package/dist/renderer-D0aZNkQE.mjs.map +1 -0
- package/dist/{renderer-B8UaFNqb.mjs → renderer-D2BRlqof.mjs} +62 -209
- package/dist/renderer-D2BRlqof.mjs.map +1 -0
- package/dist/{renderer-B8-kzZdP.mjs → renderer-D2FFvxsq.mjs} +41 -140
- package/dist/renderer-D2FFvxsq.mjs.map +1 -0
- package/dist/{renderer-Ctk2zzfy.mjs → renderer-D8-zNjyz.mjs} +57 -197
- package/dist/renderer-D8-zNjyz.mjs.map +1 -0
- package/dist/{renderer-DML9qpmS.mjs → renderer-DDqwds9R.mjs} +52 -202
- package/dist/renderer-DDqwds9R.mjs.map +1 -0
- package/dist/{renderer-BSaYG8aw.mjs → renderer-DGtBOdst.mjs} +3 -1
- package/dist/{renderer-CzPWB0Ss.mjs → renderer-DKqG9Lek.mjs} +13 -45
- package/dist/renderer-DKqG9Lek.mjs.map +1 -0
- package/dist/renderer-DOHbhGPu.mjs +5 -0
- package/dist/renderer-DOmA6IKc.mjs +5 -0
- package/dist/{renderer-DirxsOjq.mjs → renderer-DUhXH5Tz.mjs} +80 -258
- package/dist/renderer-DUhXH5Tz.mjs.map +1 -0
- package/dist/{renderer-kwmlLQOO.mjs → renderer-DVnVnS3c.mjs} +4 -4
- package/dist/{renderer-kwmlLQOO.mjs.map → renderer-DVnVnS3c.mjs.map} +1 -1
- package/dist/{renderer-CaaOKMSd.mjs → renderer-DWEvQ-hQ.mjs} +63 -190
- package/dist/renderer-DWEvQ-hQ.mjs.map +1 -0
- package/dist/renderer-DX2qEJTL.mjs +2173 -0
- package/dist/renderer-DX2qEJTL.mjs.map +1 -0
- package/dist/{renderer-1VuQTY1Z.mjs → renderer-DX8aBDqR.mjs} +236 -96
- package/dist/renderer-DX8aBDqR.mjs.map +1 -0
- package/dist/{renderer-DEJwPRkR.mjs → renderer-DYIPWN_B.mjs} +15 -51
- package/dist/renderer-DYIPWN_B.mjs.map +1 -0
- package/dist/{renderer-Djlb4TLO.mjs → renderer-DZD2G76E.mjs} +8 -15
- package/dist/renderer-DZD2G76E.mjs.map +1 -0
- package/dist/{renderer-WSGuj_V6.mjs → renderer-Da06_9FZ.mjs} +4 -3
- package/dist/{renderer-WSGuj_V6.mjs.map → renderer-Da06_9FZ.mjs.map} +1 -1
- package/dist/{renderer-BM05sB8m.mjs → renderer-DkyXqrQ6.mjs} +11 -74
- package/dist/renderer-DkyXqrQ6.mjs.map +1 -0
- package/dist/renderer-DmCWc4JL.mjs +5 -0
- package/dist/{renderer-BDbTWSpP.mjs → renderer-Dno-fujw.mjs} +58 -234
- package/dist/renderer-Dno-fujw.mjs.map +1 -0
- package/dist/{renderer-D2XD4QYk.mjs → renderer-DoYdfDEA.mjs} +34 -147
- package/dist/renderer-DoYdfDEA.mjs.map +1 -0
- package/dist/{renderer-_uvdg48N.mjs → renderer-DqjITuT-.mjs} +24 -93
- package/dist/renderer-DqjITuT-.mjs.map +1 -0
- package/dist/renderer-DuuOlYIG.mjs +3 -0
- package/dist/{renderer-DIgsilTw.mjs → renderer-Dy-DBU0X.mjs} +5 -4
- package/dist/{renderer-DIgsilTw.mjs.map → renderer-Dy-DBU0X.mjs.map} +1 -1
- package/dist/{renderer-CpkiHRhh.mjs → renderer-DyzNM721.mjs} +17 -99
- package/dist/renderer-DyzNM721.mjs.map +1 -0
- package/dist/{renderer-C_TPMHiH.mjs → renderer-DzrM1KMN.mjs} +81 -221
- package/dist/renderer-DzrM1KMN.mjs.map +1 -0
- package/dist/{renderer-Bc04fivZ.mjs → renderer-FHyZn0em.mjs} +99 -287
- package/dist/renderer-FHyZn0em.mjs.map +1 -0
- package/dist/renderer-GSFP7v2z.mjs +3 -0
- package/dist/{renderer-DpGc-N3G.mjs → renderer-NXdm6HLb.mjs} +24 -104
- package/dist/renderer-NXdm6HLb.mjs.map +1 -0
- package/dist/renderer-OLaYikwi.mjs +5 -0
- package/dist/renderer-Q75RC5Uz.mjs +5 -0
- package/dist/renderer-T0LJ4Po3.mjs +5 -0
- package/dist/renderer-VuXt1hfq.mjs +5 -0
- package/dist/{renderer-BfAWZziM.mjs → renderer-_1xGBbxn.mjs} +58 -225
- package/dist/renderer-_1xGBbxn.mjs.map +1 -0
- package/dist/{renderer-B1YMwl2B.mjs → renderer-c4AorKyw.mjs} +3 -1
- package/dist/renderer-hY_2WLt3.mjs +5 -0
- package/dist/{renderer-BhZZEyFX.mjs → renderer-mp1NN5zk.mjs} +4 -4
- package/dist/{renderer-BhZZEyFX.mjs.map → renderer-mp1NN5zk.mjs.map} +1 -1
- package/dist/{renderer-D7zvPHKn.mjs → renderer-qsg-JMuN.mjs} +18 -28
- package/dist/renderer-qsg-JMuN.mjs.map +1 -0
- package/dist/{renderer-vqkKWqa5.mjs → renderer-timEC0Gl.mjs} +23 -107
- package/dist/renderer-timEC0Gl.mjs.map +1 -0
- package/dist/renderer-y4EqE06a.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-DwQTx8S7.mjs → renderers-CP8CFWDs-CMYe4kvZ.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DwQTx8S7.mjs.map → renderers-CP8CFWDs-CMYe4kvZ.mjs.map} +1 -1
- package/dist/signals/index.d.mts +6 -6
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-Bv1OweKd.mjs → signals-DGRs6ddH.mjs} +4 -4
- package/dist/{signals-Bv1OweKd.mjs.map → signals-DGRs6ddH.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/client-CwRhflHE.mjs +0 -66
- package/dist/client-CwRhflHE.mjs.map +0 -1
- package/dist/dist-BAVZdFEJ.mjs.map +0 -1
- package/dist/dist-BYqNNwsl.mjs.map +0 -1
- package/dist/dist-CbG3QxDw.mjs.map +0 -1
- package/dist/dist-Cxi68OuY.mjs.map +0 -1
- package/dist/dist-cjs--lfMLs3U.mjs +0 -66
- package/dist/dist-cjs--lfMLs3U.mjs.map +0 -1
- package/dist/dist-cjs--pxyGFw2.mjs +0 -43
- package/dist/dist-cjs--pxyGFw2.mjs.map +0 -1
- package/dist/dist-cjs-3pon9kTt.mjs +0 -6
- package/dist/dist-cjs-BDpO-TH_.mjs +0 -51
- package/dist/dist-cjs-BDpO-TH_.mjs.map +0 -1
- package/dist/dist-cjs-BiKQozdJ.mjs +0 -64
- package/dist/dist-cjs-BiKQozdJ.mjs.map +0 -1
- package/dist/dist-cjs-BmyyWYWv.mjs +0 -153
- package/dist/dist-cjs-BmyyWYWv.mjs.map +0 -1
- package/dist/dist-cjs-CND_ghfH.mjs +0 -98
- package/dist/dist-cjs-CND_ghfH.mjs.map +0 -1
- package/dist/dist-cjs-CQwmMllY.mjs +0 -137
- package/dist/dist-cjs-CQwmMllY.mjs.map +0 -1
- package/dist/dist-cjs-CgFzrgj8.mjs +0 -85
- package/dist/dist-cjs-CgFzrgj8.mjs.map +0 -1
- package/dist/dist-cjs-CsU2sZoX.mjs +0 -323
- package/dist/dist-cjs-CsU2sZoX.mjs.map +0 -1
- package/dist/dist-cjs-DJ8fcQEe.mjs +0 -9069
- package/dist/dist-cjs-DJ8fcQEe.mjs.map +0 -1
- package/dist/dist-cjs-DT2jJlcK.mjs +0 -181
- package/dist/dist-cjs-DT2jJlcK.mjs.map +0 -1
- package/dist/dist-cjs-DjzmP0-x.mjs +0 -1091
- package/dist/dist-cjs-DjzmP0-x.mjs.map +0 -1
- package/dist/dist-cjs-DzjrlfbE.mjs +0 -437
- package/dist/dist-cjs-DzjrlfbE.mjs.map +0 -1
- package/dist/dist-cjs-M-8QOgS_.mjs +0 -209
- package/dist/dist-cjs-M-8QOgS_.mjs.map +0 -1
- package/dist/dist-cjs-TsA8LFXC.mjs +0 -48
- package/dist/dist-cjs-TsA8LFXC.mjs.map +0 -1
- package/dist/dist-cjs-agQl9T8M.mjs +0 -5015
- package/dist/dist-cjs-agQl9T8M.mjs.map +0 -1
- package/dist/event-streams-BaNGaLxh.mjs +0 -204
- package/dist/event-streams-BaNGaLxh.mjs.map +0 -1
- package/dist/fonts-C0W6TgJk.mjs.map +0 -1
- package/dist/index-9B8CJowc.d.mts.map +0 -1
- package/dist/index-CYGpSVsf.d.mts.map +0 -1
- package/dist/index-DDEPvMww.d.mts.map +0 -1
- package/dist/index-DnWsbbuZ.d.mts.map +0 -1
- package/dist/package-XpCRbTOA.mjs +0 -6
- package/dist/package-XpCRbTOA.mjs.map +0 -1
- package/dist/preview-BV2C4Fk6.mjs.map +0 -1
- package/dist/preview-engine/chunk-36YGYLKD.mjs +0 -58
- package/dist/preview-engine/chunk-7O24H4YT.mjs +0 -117
- package/dist/preview-engine/chunk-AUFSM5KI.mjs +0 -141
- package/dist/preview-engine/chunk-BHFI3Y4T.mjs +0 -1
- package/dist/preview-engine/chunk-BQ65MU6H.mjs +0 -138
- package/dist/preview-engine/chunk-BWDARDO6.mjs +0 -117
- package/dist/preview-engine/chunk-DLXQDDIN.mjs +0 -46
- package/dist/preview-engine/chunk-EJGLUZMW.mjs +0 -1
- package/dist/preview-engine/chunk-FE6RSVKZ.mjs +0 -73
- package/dist/preview-engine/chunk-FGHOHCFG.mjs +0 -110
- package/dist/preview-engine/chunk-HPIULG7P.mjs +0 -111
- package/dist/preview-engine/chunk-HRIKNYPF.mjs +0 -60
- package/dist/preview-engine/chunk-IMV5SBQV.mjs +0 -1
- package/dist/preview-engine/chunk-JPXQPP6J.mjs +0 -1
- package/dist/preview-engine/chunk-K52S5DJX.mjs +0 -109
- package/dist/preview-engine/chunk-L3IEJZ5S.mjs +0 -474
- package/dist/preview-engine/chunk-M7NMFDJ3.mjs +0 -3
- package/dist/preview-engine/chunk-MJM3NFEC.mjs +0 -315
- package/dist/preview-engine/chunk-NFAGEP43.mjs +0 -1448
- package/dist/preview-engine/chunk-NRHSNPZV.mjs +0 -182
- package/dist/preview-engine/chunk-OWOSYNMF.mjs +0 -104
- package/dist/preview-engine/chunk-Q66QQI6N.mjs +0 -8
- package/dist/preview-engine/chunk-QGBSLNFI.mjs +0 -52
- package/dist/preview-engine/chunk-QM3XFEJN.mjs +0 -63
- package/dist/preview-engine/chunk-R3ZH7YF3.mjs +0 -89
- package/dist/preview-engine/chunk-R6YNSBKL.mjs +0 -108
- package/dist/preview-engine/chunk-S4CSX6K5.mjs +0 -610
- package/dist/preview-engine/chunk-SNYAHQ25.mjs +0 -186
- package/dist/preview-engine/chunk-SRT2OCQW.mjs +0 -1
- package/dist/preview-engine/chunk-SUUUYXXT.mjs +0 -1
- package/dist/preview-engine/chunk-T6COGNOW.mjs +0 -134
- package/dist/preview-engine/chunk-XFYXT76H.mjs +0 -52
- package/dist/preview-engine/chunk-XUM42I4R.mjs +0 -1
- package/dist/preview-engine/chunk-YITWSOG4.mjs +0 -103
- package/dist/preview-engine/chunk-ZDCA6NVT.mjs +0 -82
- package/dist/preview-engine/chunk-ZNGOAGAI.mjs +0 -1
- package/dist/preview-engine/renderers-27Q5X3U6.mjs +0 -1
- package/dist/preview-engine/renderers-4AHH6BHF.mjs +0 -1
- package/dist/preview-engine/renderers-5BV6JGTU.mjs +0 -248
- package/dist/preview-engine/renderers-6PRVCTYV.mjs +0 -1
- package/dist/preview-engine/renderers-76PQY2SO.mjs +0 -1
- package/dist/preview-engine/renderers-7X2W6QWX.mjs +0 -1
- package/dist/preview-engine/renderers-B52QT6MT.mjs +0 -55
- package/dist/preview-engine/renderers-BE6RVJSE.mjs +0 -1
- package/dist/preview-engine/renderers-BMM2BH56.mjs +0 -1
- package/dist/preview-engine/renderers-CHOGQHVQ.mjs +0 -1
- package/dist/preview-engine/renderers-CRKRWR2Y.mjs +0 -1
- package/dist/preview-engine/renderers-DEYDSGJX.mjs +0 -1
- package/dist/preview-engine/renderers-DZTNRCR7.mjs +0 -1
- package/dist/preview-engine/renderers-ELO3KWTK.mjs +0 -1
- package/dist/preview-engine/renderers-EOJMPPAQ.mjs +0 -1
- package/dist/preview-engine/renderers-F2KJNDWA.mjs +0 -124
- package/dist/preview-engine/renderers-FCV4COVB.mjs +0 -1
- package/dist/preview-engine/renderers-G5KQISVL.mjs +0 -1
- package/dist/preview-engine/renderers-GJSUN5HU.mjs +0 -1
- package/dist/preview-engine/renderers-GMX2ZQDG.mjs +0 -1
- package/dist/preview-engine/renderers-GXCRINGC.mjs +0 -1
- package/dist/preview-engine/renderers-IHKORHMT.mjs +0 -1
- package/dist/preview-engine/renderers-JA4SLMG3.mjs +0 -1
- package/dist/preview-engine/renderers-JLN77CFZ.mjs +0 -1
- package/dist/preview-engine/renderers-KBFW7B5F.mjs +0 -1
- package/dist/preview-engine/renderers-LJRJMFCR.mjs +0 -1
- package/dist/preview-engine/renderers-LPAPZ5QS.mjs +0 -1
- package/dist/preview-engine/renderers-NQUDQEHY.mjs +0 -1
- package/dist/preview-engine/renderers-NS3AIJVG.mjs +0 -1
- package/dist/preview-engine/renderers-NSY2SDIE.mjs +0 -1
- package/dist/preview-engine/renderers-PW4OJWHF.mjs +0 -120
- package/dist/preview-engine/renderers-PWLWOZY4.mjs +0 -1
- package/dist/preview-engine/renderers-Q3MD34JN.mjs +0 -1
- package/dist/preview-engine/renderers-RXGNA2Q7.mjs +0 -1
- package/dist/preview-engine/renderers-TVTQ2R74.mjs +0 -1
- package/dist/preview-engine/renderers-VTTGFO55.mjs +0 -1
- package/dist/preview-engine/renderers-W3VVM5HB.mjs +0 -1
- package/dist/preview-engine/renderers-WG7QBD4D.mjs +0 -1
- package/dist/preview-engine/renderers-WLLJFZTF.mjs +0 -1
- package/dist/preview-engine/renderers-WN4SYFCU.mjs +0 -1
- package/dist/preview-engine/renderers-WSMLLSWX.mjs +0 -1
- package/dist/preview-engine/renderers-XFBSGTHU.mjs +0 -1
- package/dist/preview-engine/renderers-XFC6ZPO5.mjs +0 -1
- package/dist/preview-engine/renderers-XUHRY3XH.mjs +0 -1
- package/dist/preview-engine/renderers-YAOB5XU6.mjs +0 -1
- package/dist/preview-engine/renderers-YTB4FOHT.mjs +0 -1
- package/dist/preview-engine/renderers-ZIMBODX6.mjs +0 -1
- package/dist/program-BmNKgzja.mjs.map +0 -1
- package/dist/renderer-1VuQTY1Z.mjs.map +0 -1
- package/dist/renderer-6oMSare3.mjs +0 -3
- package/dist/renderer-B1ComPb2.mjs +0 -3
- package/dist/renderer-B2XzjK0z.mjs +0 -3
- package/dist/renderer-B2ieylQ3.mjs.map +0 -1
- package/dist/renderer-B8-kzZdP.mjs.map +0 -1
- package/dist/renderer-B8UaFNqb.mjs.map +0 -1
- package/dist/renderer-BDbTWSpP.mjs.map +0 -1
- package/dist/renderer-BIIWCg_J.mjs.map +0 -1
- package/dist/renderer-BJ1aTkZf.mjs.map +0 -1
- package/dist/renderer-BM05sB8m.mjs.map +0 -1
- package/dist/renderer-BQ5Bz5D0.mjs +0 -3
- package/dist/renderer-BREIjsUU.mjs.map +0 -1
- package/dist/renderer-BTu2EVhF.mjs +0 -3
- package/dist/renderer-BZcn_iBl.mjs +0 -3
- package/dist/renderer-Bc04fivZ.mjs.map +0 -1
- package/dist/renderer-BfAWZziM.mjs.map +0 -1
- package/dist/renderer-BfJSUjPN.mjs +0 -3
- package/dist/renderer-Bfgd4N0O.mjs.map +0 -1
- package/dist/renderer-Bhdf90Zq.mjs.map +0 -1
- package/dist/renderer-Bp6sDMa6.mjs +0 -3
- package/dist/renderer-Bt7_sb_Y.mjs +0 -3
- package/dist/renderer-Bv6q84TU.mjs.map +0 -1
- package/dist/renderer-C-H680_l.mjs +0 -3
- package/dist/renderer-C606ZPUn.mjs +0 -3
- package/dist/renderer-C9jyKn1i.mjs +0 -3
- package/dist/renderer-CDLrNgfo.mjs +0 -3
- package/dist/renderer-CERfcxgv.mjs +0 -3
- package/dist/renderer-CG5PzNkv.mjs +0 -3
- package/dist/renderer-CI7sG_cv.mjs.map +0 -1
- package/dist/renderer-CPoIMVdk.mjs +0 -3
- package/dist/renderer-CQdVj2JS.mjs +0 -3
- package/dist/renderer-CQiTodg9.mjs +0 -337
- package/dist/renderer-CQiTodg9.mjs.map +0 -1
- package/dist/renderer-CWTpc4ff.mjs.map +0 -1
- package/dist/renderer-CXn5HAnK.mjs.map +0 -1
- package/dist/renderer-CZgB5st8.mjs +0 -3
- package/dist/renderer-C_TPMHiH.mjs.map +0 -1
- package/dist/renderer-Ca7L1EOp.mjs +0 -3
- package/dist/renderer-CaaOKMSd.mjs.map +0 -1
- package/dist/renderer-CdciwwMI.mjs.map +0 -1
- package/dist/renderer-CepMDQ06.mjs.map +0 -1
- package/dist/renderer-CfC_aiew.mjs.map +0 -1
- package/dist/renderer-ChdLYS-G.mjs.map +0 -1
- package/dist/renderer-CkykdR_D.mjs +0 -3
- package/dist/renderer-Cl6GkeHx.mjs +0 -3
- package/dist/renderer-ClcjrFyo.mjs +0 -3
- package/dist/renderer-CnXW28b9.mjs.map +0 -1
- package/dist/renderer-CpkiHRhh.mjs.map +0 -1
- package/dist/renderer-CtVkU_GA.mjs +0 -44
- package/dist/renderer-CtVkU_GA.mjs.map +0 -1
- package/dist/renderer-Ctk2zzfy.mjs.map +0 -1
- package/dist/renderer-CtyD_Xju.mjs.map +0 -1
- package/dist/renderer-CySUP_wk.mjs +0 -3
- package/dist/renderer-CzPWB0Ss.mjs.map +0 -1
- package/dist/renderer-D2XD4QYk.mjs.map +0 -1
- package/dist/renderer-D2l_Odyg.mjs +0 -3
- package/dist/renderer-D7zvPHKn.mjs.map +0 -1
- package/dist/renderer-D9NnIx7o.mjs +0 -3
- package/dist/renderer-DCPCYySt.mjs +0 -3
- package/dist/renderer-DEJwPRkR.mjs.map +0 -1
- package/dist/renderer-DIkpJEOZ.mjs +0 -3
- package/dist/renderer-DML9qpmS.mjs.map +0 -1
- package/dist/renderer-DNSXPkf_.mjs +0 -3
- package/dist/renderer-DP-CvZ_Z.mjs +0 -3
- package/dist/renderer-DZGtBUCx.mjs.map +0 -1
- package/dist/renderer-D_1oDOCP.mjs.map +0 -1
- package/dist/renderer-DeXb8R6h.mjs +0 -3
- package/dist/renderer-DezO-ZaP.mjs +0 -4
- package/dist/renderer-DhXe04fC.mjs +0 -3
- package/dist/renderer-DirxsOjq.mjs.map +0 -1
- package/dist/renderer-Djlb4TLO.mjs.map +0 -1
- package/dist/renderer-DnH3SI7w.mjs +0 -3
- package/dist/renderer-DpGc-N3G.mjs.map +0 -1
- package/dist/renderer-Dpw4oi33.mjs +0 -3
- package/dist/renderer-DxTs4Iyi.mjs.map +0 -1
- package/dist/renderer-Dy0utCl7.mjs.map +0 -1
- package/dist/renderer-Md-ytU0v.mjs +0 -3
- package/dist/renderer-RKsXlF_0.mjs +0 -23900
- package/dist/renderer-RKsXlF_0.mjs.map +0 -1
- package/dist/renderer-U-bhWO9Q.mjs +0 -3
- package/dist/renderer-_uvdg48N.mjs.map +0 -1
- package/dist/renderer-bsWnRNpJ.mjs.map +0 -1
- package/dist/renderer-cgxO2xN6.mjs.map +0 -1
- package/dist/renderer-d5-F_48R.mjs +0 -3
- package/dist/renderer-ho_jXJ0H.mjs.map +0 -1
- package/dist/renderer-vqkKWqa5.mjs.map +0 -1
- package/dist/renderer-zA5okHds.mjs +0 -3
- package/dist/signin-Db08vl-g.mjs +0 -865
- package/dist/signin-Db08vl-g.mjs.map +0 -1
- package/dist/sso-oidc-CpLz_lIu.mjs +0 -1051
- package/dist/sso-oidc-CpLz_lIu.mjs.map +0 -1
- package/dist/sts-BQefGuml.mjs +0 -6
- package/dist/sts-Dgl0kH-t.mjs +0 -1395
- package/dist/sts-Dgl0kH-t.mjs.map +0 -1
- /package/dist/{renderer-C2n-EHxg.mjs → renderer-B-BcgA6d.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-C5zpaQed.mjs","names":[],"sources":["../../../nodes/node-audio-delay/dist/renderers-DXaKpV2A.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { isHandleConnected, resolveBoolean, resolveNumber } from \"@framefields/node-sdk\";\nimport { WebGPUAudioProcessor } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst PARAM_ORDER = [\n\t\"delayTime\",\n\t\"feedback\",\n\t\"wet\",\n\t\"dry\"\n];\nconst DELAY_SHADER_TEMPLATE = () => `\nstruct Uniforms {\n sampleRate : f32,\n delaySec : f32,\n feedback : f32,\n wet : f32,\n dry : f32,\n pingPong : f32,\n bufferLength : f32,\n hasDelayTimeSig : f32,\n hasFeedbackSig : f32,\n hasWetSig : f32,\n hasDrySig : f32,\n baseTime : f32,\n frame : f32,\n numSamples : f32,\n numChannels : f32,\n pad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : Uniforms;\n@group(0) @binding(1) var<storage, read> inputChannels : array<f32>;\n@group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;\n@group(0) @binding(3) var<storage, read_write> state : array<f32>;\n@group(0) @binding(4) var<storage, read> delayTimeSignal : array<f32>;\n@group(0) @binding(5) var<storage, read> feedbackSignal : array<f32>;\n@group(0) @binding(6) var<storage, read> wetSignal : array<f32>;\n@group(0) @binding(7) var<storage, read> drySignal : array<f32>;\n\nfn tanh(x: f32) -> f32 {\n let exp2x = exp(2.0f * x);\n return (exp2x - 1.0f) / (exp2x + 1.0f);\n}\n\nfn is_nan_or_inf(v: f32) -> bool {\n return (v != v) || (abs(v) > 3.402823466e+38f);\n}\n\n@compute @workgroup_size(1)\nfn main(@builtin(global_invocation_id) gid : vec3<u32>) {\n if (gid.x != 0u) { return; }\n\n let numSamples = u32(u.numSamples);\n let numChannels = u32(u.numChannels);\n let bufferLength = u32(u.bufferLength);\n\n var writeIndex = u32(state[0]);\n if (is_nan_or_inf(state[0])) {\n writeIndex = 0u;\n }\n\n for (var index = 0u; index < numSamples; index = index + 1u) {\n // 1. Dynamic Parameter Modulation & Anti-Explosion Clamping\n var effDelaySec = u.delaySec;\n if (u.hasDelayTimeSig > 0.5f) {\n effDelaySec = delayTimeSignal[index];\n }\n effDelaySec = clamp(effDelaySec, 0.001f, 5.0f);\n\n var effFeedback = u.feedback;\n if (u.hasFeedbackSig > 0.5f) {\n effFeedback = feedbackSignal[index];\n }\n effFeedback = clamp(effFeedback, 0.0f, 0.95f);\n\n var effWet = u.wet;\n if (u.hasWetSig > 0.5f) {\n effWet = wetSignal[index];\n }\n effWet = clamp(effWet, 0.0f, 2.0f);\n\n var effDry = u.dry;\n if (u.hasDrySig > 0.5f) {\n effDry = drySignal[index];\n }\n effDry = clamp(effDry, 0.0f, 2.0f);\n\n // 2. Safe Dynamic Read Index\n let readOffset = u32(clamp(effDelaySec * u.sampleRate, 1.0f, f32(bufferLength - 1u)));\n let readIndex = (writeIndex + bufferLength - readOffset) % bufferLength;\n\n if (numChannels == 1u || u.pingPong == 0.0f) {\n // Standard Delay\n for (var c = 0u; c < numChannels; c = c + 1u) {\n let sampleIndex = c * numSamples + index;\n var inputVal = inputChannels[sampleIndex];\n if (is_nan_or_inf(inputVal)) {\n inputVal = 0.0f;\n }\n\n let stateOffset = c * bufferLength + 1u;\n var delayedSample = state[stateOffset + readIndex];\n if (is_nan_or_inf(delayedSample)) {\n delayedSample = 0.0f;\n }\n\n var nextStateVal = inputVal + delayedSample * effFeedback;\n if (is_nan_or_inf(nextStateVal)) {\n nextStateVal = 0.0f;\n }\n state[stateOffset + writeIndex] = clamp(nextStateVal, -4.0f, 4.0f);\n\n var outVal = effDry * inputVal + effWet * delayedSample;\n if (is_nan_or_inf(outVal)) {\n outVal = 0.0f;\n }\n if (outVal > 1.0f) {\n outVal = 1.0f;\n } else if (outVal < -1.0f) {\n outVal = -1.0f;\n } else if (outVal > 0.9f) {\n outVal = 0.9f + 0.1f * tanh((outVal - 0.9f) / 0.1f);\n } else if (outVal < -0.9f) {\n outVal = -0.9f + 0.1f * tanh((outVal + 0.9f) / 0.1f);\n }\n\n outputChannels[sampleIndex] = outVal;\n }\n } else {\n // Stereo Ping-Pong Delay\n var sampleL = inputChannels[index];\n if (is_nan_or_inf(sampleL)) { sampleL = 0.0f; }\n\n var sampleR = inputChannels[numSamples + index];\n if (is_nan_or_inf(sampleR)) { sampleR = 0.0f; }\n\n var delayedL = state[1u + readIndex];\n if (is_nan_or_inf(delayedL)) { delayedL = 0.0f; }\n\n var delayedR = state[bufferLength + 1u + readIndex];\n if (is_nan_or_inf(delayedR)) { delayedR = 0.0f; }\n\n // Ping-pong cross-feedback\n var nextL = sampleL + delayedR * effFeedback;\n var nextR = sampleR + delayedL * effFeedback;\n if (is_nan_or_inf(nextL)) { nextL = 0.0f; }\n if (is_nan_or_inf(nextR)) { nextR = 0.0f; }\n\n state[1u + writeIndex] = clamp(nextL, -4.0f, 4.0f);\n state[bufferLength + 1u + writeIndex] = clamp(nextR, -4.0f, 4.0f);\n\n var outL = effDry * sampleL + effWet * delayedL;\n var outR = effDry * sampleR + effWet * delayedR;\n if (is_nan_or_inf(outL)) { outL = 0.0f; }\n if (is_nan_or_inf(outR)) { outR = 0.0f; }\n\n if (outL > 1.0f) { outL = 1.0f; } else if (outL < -1.0f) { outL = -1.0f; }\n else if (outL > 0.9f) { outL = 0.9f + 0.1f * tanh((outL - 0.9f) / 0.1f); }\n else if (outL < -0.9f) { outL = -0.9f + 0.1f * tanh((outL + 0.9f) / 0.1f); }\n\n if (outR > 1.0f) { outR = 1.0f; } else if (outR < -1.0f) { outR = -1.0f; }\n else if (outR > 0.9f) { outR = 0.9f + 0.1f * tanh((outR - 0.9f) / 0.1f); }\n else if (outR < -0.9f) { outR = -0.9f + 0.1f * tanh((outR + 0.9f) / 0.1f); }\n\n outputChannels[index] = outL;\n outputChannels[numSamples + index] = outR;\n }\n\n writeIndex = (writeIndex + 1u) % bufferLength;\n }\n\n state[0] = f32(writeIndex);\n}\n`;\nconst delayAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) throw new Error(\"GPUDevice is required for WebGPU Audio Delay.\");\n\tconst op = virtualMedia.operation || {};\n\tconst numChannels = channels.length;\n\tif (numChannels === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tconst delaySec = Math.max(.001, Math.min(resolveNumber(op.delayTime, .25), 5));\n\tconst feedbackInternal = Math.max(0, Math.min(resolveNumber(op.feedback, .4), .95));\n\tconst wetInternal = Math.max(0, Math.min(resolveNumber(op.wet, .3), 1));\n\tconst dryInternal = Math.max(0, Math.min(resolveNumber(op.dry, 1), 1));\n\tconst pingPongInternal = resolveBoolean(op.pingPong, false);\n\tconst hasDelayTimeSig = isHandleConnected(op, \"delayTimeHandleId\") ? 1 : 0;\n\tconst hasFeedbackSig = isHandleConnected(op, \"feedbackHandleId\") ? 1 : 0;\n\tconst hasWetSig = isHandleConnected(op, \"wetHandleId\") ? 1 : 0;\n\tconst hasDrySig = isHandleConnected(op, \"dryHandleId\") ? 1 : 0;\n\tconst bufferLength = Math.ceil(5 * sampleRate);\n\tconst nodeId = op.id || \"audio-delay\";\n\tconst frame = ctx.frame ?? 0;\n\tconst fps = ctx.fps ?? 24;\n\tconst stateFloatCount = numChannels * bufferLength + 1;\n\tawait WebGPUAudioProcessor.process(ctx.device, nodeId, channels, sampleRate, virtualMedia, frame, fps, DELAY_SHADER_TEMPLATE, () => [\n\t\tsampleRate,\n\t\tdelaySec,\n\t\tfeedbackInternal,\n\t\twetInternal,\n\t\tdryInternal,\n\t\tpingPongInternal ? 1 : 0,\n\t\tbufferLength,\n\t\thasDelayTimeSig,\n\t\thasFeedbackSig,\n\t\thasWetSig,\n\t\thasDrySig,\n\t\t0,\n\t\tframe,\n\t\tnumSamples,\n\t\tnumChannels,\n\t\t0\n\t], 16, stateFloatCount, ctx?.renderId, true, ctx?.elapsedMs, ctx?.durationMs, void 0, void 0, PARAM_ORDER);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: delayAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-DXaKpV2A.mjs.map"],"mappings":";;;;;AAKA,MAAM,cAAc;CACnB;CACA;CACA;CACA;CACA;AACD,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoKpC,MAAM,sBAAsB,OAAO,UAAU,YAAY,cAAc,QAAQ;AAC9E,KAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,gDAAgD;CAClF,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,cAAc,SAAS;AAC7B,KAAI,gBAAgB,EAAG;CACvB,MAAM,aAAa,SAAS,GAAG;AAC/B,KAAI,eAAe,EAAG;CACtB,MAAM,WAAW,KAAK,IAAI,MAAM,KAAK,IAAI,cAAc,GAAG,WAAW,IAAI,EAAE,EAAE,CAAC;CAC9E,MAAM,mBAAmB,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,GAAG,UAAU,GAAG,EAAE,IAAI,CAAC;CACnF,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC;CACvE,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;CACtE,MAAM,mBAAmB,eAAe,GAAG,UAAU,MAAM;CAC3D,MAAM,kBAAkB,kBAAkB,IAAI,oBAAoB,GAAG,IAAI;CACzE,MAAM,iBAAiB,kBAAkB,IAAI,mBAAmB,GAAG,IAAI;CACvE,MAAM,YAAY,kBAAkB,IAAI,cAAc,GAAG,IAAI;CAC7D,MAAM,YAAY,kBAAkB,IAAI,cAAc,GAAG,IAAI;CAC7D,MAAM,eAAe,KAAK,KAAK,IAAI,WAAW;CAC9C,MAAM,SAAS,GAAG,MAAM;CACxB,MAAM,QAAQ,IAAI,SAAS;CAC3B,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,kBAAkB,cAAc,eAAe;AACrD,OAAM,qBAAqB,QAAQ,IAAI,QAAQ,QAAQ,UAAU,YAAY,cAAc,OAAO,KAAK,6BAA6B;EACnI;EACA;EACA;EACA;EACA;EACA,mBAAmB,IAAI;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,iBAAiB,KAAK,UAAU,MAAM,KAAK,WAAW,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,YAAY;;AAK3G,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,qBAAqB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Jt as resolveNumber } from "./dist-
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
3
|
-
import {
|
|
1
|
+
import { Jt as resolveNumber } from "./dist-fjKpBYkc.mjs";
|
|
2
|
+
import { n as defineRenderer, r as isHandleConnected } from "./renderer-BSitV56h.mjs";
|
|
3
|
+
import { g as WebGPUAudioProcessor } from "./dist-DkuDAIrG.mjs";
|
|
4
4
|
|
|
5
|
-
//#region ../../nodes/node-audio-noise-gate/dist/renderers-
|
|
5
|
+
//#region ../../nodes/node-audio-noise-gate/dist/renderers-AuTJmGew.mjs
|
|
6
6
|
const PARAM_ORDER = [
|
|
7
7
|
"threshold",
|
|
8
8
|
"attack",
|
|
@@ -236,24 +236,17 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
236
236
|
const noiseGateAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {
|
|
237
237
|
if (!ctx?.device) throw new Error("GPUDevice is required for WebGPU Noise Gate.");
|
|
238
238
|
const op = virtualMedia.operation || {};
|
|
239
|
-
const inputs = op.inputs || {};
|
|
240
239
|
const threshold = resolveNumber(op.threshold, -40);
|
|
241
240
|
const attack = resolveNumber(op.attack, .005);
|
|
242
241
|
const hold = resolveNumber(op.hold, .05);
|
|
243
242
|
const release = resolveNumber(op.release, .1);
|
|
244
243
|
const range = resolveNumber(op.range, -80);
|
|
245
244
|
const closedGain = range <= -96 ? 0 : 10 ** (range / 20);
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
};
|
|
252
|
-
const hasThresholdSig = isHandleConnected("thresholdHandleId") ? 1 : 0;
|
|
253
|
-
const hasAttackSig = isHandleConnected("attackHandleId") ? 1 : 0;
|
|
254
|
-
const hasHoldSig = isHandleConnected("holdHandleId") ? 1 : 0;
|
|
255
|
-
const hasReleaseSig = isHandleConnected("releaseHandleId") ? 1 : 0;
|
|
256
|
-
const hasRangeSig = isHandleConnected("rangeHandleId") ? 1 : 0;
|
|
245
|
+
const hasThresholdSig = isHandleConnected(op, "thresholdHandleId") ? 1 : 0;
|
|
246
|
+
const hasAttackSig = isHandleConnected(op, "attackHandleId") ? 1 : 0;
|
|
247
|
+
const hasHoldSig = isHandleConnected(op, "holdHandleId") ? 1 : 0;
|
|
248
|
+
const hasReleaseSig = isHandleConnected(op, "releaseHandleId") ? 1 : 0;
|
|
249
|
+
const hasRangeSig = isHandleConnected(op, "rangeHandleId") ? 1 : 0;
|
|
257
250
|
const numChannels = channels.length;
|
|
258
251
|
if (numChannels === 0) return;
|
|
259
252
|
const numSamples = channels[0].length;
|
|
@@ -286,4 +279,4 @@ var renderers_default = defineRenderer({ audioProcessor: noiseGateAudioProcessor
|
|
|
286
279
|
|
|
287
280
|
//#endregion
|
|
288
281
|
export { renderers_default as t };
|
|
289
|
-
//# sourceMappingURL=renderer-
|
|
282
|
+
//# sourceMappingURL=renderer-C7UZLOYk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-C7UZLOYk.mjs","names":[],"sources":["../../../nodes/node-audio-noise-gate/dist/renderers-AuTJmGew.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { isHandleConnected, resolveNumber } from \"@framefields/node-sdk\";\nimport { WebGPUAudioProcessor } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst PARAM_ORDER = [\n\t\"threshold\",\n\t\"attack\",\n\t\"hold\",\n\t\"release\",\n\t\"range\"\n];\nconst NOISE_GATE_SHADER_TEMPLATE = () => `\nstruct Uniforms {\n sampleRate : f32,\n threshold : f32,\n attack : f32,\n hold : f32,\n release : f32,\n closedGain : f32,\n windowLength : f32,\n hasThresholdSig : f32,\n hasAttackSig : f32,\n hasHoldSig : f32,\n hasReleaseSig : f32,\n hasRangeSig : f32,\n baseTime : f32,\n frame : f32,\n numSamples : f32,\n numChannels : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : Uniforms;\n@group(0) @binding(1) var<storage, read> inputChannels : array<f32>;\n@group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;\n@group(0) @binding(3) var<storage, read_write> state : array<f32>;\n@group(0) @binding(4) var<storage, read> thresholdSignal : array<f32>;\n@group(0) @binding(5) var<storage, read> attackSignal : array<f32>;\n@group(0) @binding(6) var<storage, read> holdSignal : array<f32>;\n@group(0) @binding(7) var<storage, read> releaseSignal : array<f32>;\n@group(0) @binding(8) var<storage, read> rangeSignal : array<f32>;\n\nfn log10(x: f32) -> f32 {\n return log(x) * 0.4342944819032518f;\n}\n\nfn tanh(x: f32) -> f32 {\n let exp2x = exp(2.0f * x);\n return (exp2x - 1.0f) / (exp2x + 1.0f);\n}\n\nfn is_nan_or_inf(v: f32) -> bool {\n return (v != v) || (abs(v) > 3.402823466e+38f);\n}\n\n@compute @workgroup_size(1)\nfn main(@builtin(global_invocation_id) gid : vec3<u32>) {\n if (gid.x != 0u) { return; }\n\n let numSamples = u32(u.numSamples);\n let numChannels = u32(u.numChannels);\n let windowLength = u32(u.windowLength);\n\n var gateState = u32(state[0]); // 0=CLOSED, 1=ATTACK, 2=OPEN, 3=HOLD, 4=RELEASE\n if (is_nan_or_inf(state[0])) { gateState = 0u; }\n\n var currentGain = state[1];\n if (is_nan_or_inf(currentGain)) { currentGain = 0.0f; }\n\n var gainAtTransition = state[2];\n if (is_nan_or_inf(gainAtTransition)) { gainAtTransition = 0.0f; }\n\n var attackSamplesLeft = i32(state[3]);\n var holdSamplesLeft = i32(state[4]);\n var releaseSamplesLeft = i32(state[5]);\n var writeIndex = u32(state[6]);\n var sumSquares = state[7];\n if (is_nan_or_inf(sumSquares)) { sumSquares = 0.0f; }\n\n let sampleRate = u.sampleRate;\n\n for (var index = 0u; index < numSamples; index = index + 1u) {\n // 1. Dynamic Parameter Modulation & Anti-Explosion Clamping\n var effThreshold = u.threshold;\n if (u.hasThresholdSig > 0.5f) {\n effThreshold = thresholdSignal[index];\n }\n effThreshold = clamp(effThreshold, -120.0f, 0.0f);\n\n var effAttack = u.attack;\n if (u.hasAttackSig > 0.5f) {\n effAttack = attackSignal[index];\n }\n effAttack = clamp(effAttack, 0.0001f, 5.0f);\n\n var effHold = u.hold;\n if (u.hasHoldSig > 0.5f) {\n effHold = holdSignal[index];\n }\n effHold = clamp(effHold, 0.001f, 10.0f);\n\n var effRelease = u.release;\n if (u.hasReleaseSig > 0.5f) {\n effRelease = releaseSignal[index];\n }\n effRelease = clamp(effRelease, 0.01f, 10.0f);\n\n var effRange = u.closedGain;\n if (u.hasRangeSig > 0.5f) {\n let rDb = clamp(rangeSignal[index], -120.0f, 0.0f);\n effRange = select(0.0f, pow(10.0f, rDb / 20.0f), rDb > -96.0f);\n }\n effRange = clamp(effRange, 0.0f, 1.0f);\n\n // 2. Peak & RMS Window Calculation\n var peak = 0.0f;\n for (var c = 0u; c < numChannels; c = c + 1u) {\n var val = abs(inputChannels[c * numSamples + index]);\n if (is_nan_or_inf(val)) { val = 0.0f; }\n if (val > peak) {\n peak = val;\n }\n }\n\n let inputPowerSq = peak * peak;\n let oldestSq = state[8u + writeIndex];\n state[8u + writeIndex] = inputPowerSq;\n sumSquares = max(0.0f, sumSquares - oldestSq + inputPowerSq);\n writeIndex = (writeIndex + 1u) % windowLength;\n\n if (writeIndex == 0u) {\n var sum = 0.0f;\n for (var j = 0u; j < windowLength; j = j + 1u) {\n sum = sum + state[8u + j];\n }\n sumSquares = sum;\n }\n\n let rms = sqrt(sumSquares / f32(windowLength));\n let db = 20.0f * log10(max(rms, 1e-9f));\n\n let signalAboveThreshold = db >= effThreshold;\n\n if (signalAboveThreshold) {\n if (gateState == 0u || gateState == 4u) {\n gateState = 1u; // ATTACK\n gainAtTransition = currentGain;\n var samples = i32(round(effAttack * sampleRate));\n if (samples <= 0) { samples = 1; }\n attackSamplesLeft = samples;\n } else if (gateState == 3u) {\n gateState = 2u; // OPEN\n currentGain = 1.0f;\n }\n } else {\n if (gateState == 2u || gateState == 1u) {\n gateState = 3u; // HOLD\n var samples = i32(round(effHold * sampleRate));\n if (samples <= 0) { samples = 1; }\n holdSamplesLeft = samples;\n }\n }\n\n if (gateState == 0u) {\n currentGain = effRange;\n } else if (gateState == 2u) {\n currentGain = 1.0f;\n } else if (gateState == 1u) {\n var totalAttackSamples = i32(round(effAttack * sampleRate));\n if (totalAttackSamples <= 0) { totalAttackSamples = 1; }\n let progress = 1.0f - f32(attackSamplesLeft) / f32(totalAttackSamples);\n currentGain = gainAtTransition + progress * (1.0f - gainAtTransition);\n\n attackSamplesLeft = attackSamplesLeft - 1;\n if (attackSamplesLeft <= 0) {\n gateState = 2u;\n currentGain = 1.0f;\n }\n } else if (gateState == 3u) {\n currentGain = 1.0f;\n holdSamplesLeft = holdSamplesLeft - 1;\n if (holdSamplesLeft <= 0) {\n gateState = 4u; // RELEASE\n gainAtTransition = 1.0f;\n var samples = i32(round(effRelease * sampleRate));\n if (samples <= 0) { samples = 1; }\n releaseSamplesLeft = samples;\n }\n } else if (gateState == 4u) {\n var totalReleaseSamples = i32(round(effRelease * sampleRate));\n if (totalReleaseSamples <= 0) { totalReleaseSamples = 1; }\n let progress = 1.0f - f32(releaseSamplesLeft) / f32(totalReleaseSamples);\n currentGain = gainAtTransition + progress * (effRange - gainAtTransition);\n\n releaseSamplesLeft = releaseSamplesLeft - 1;\n if (releaseSamplesLeft <= 0) {\n gateState = 0u;\n currentGain = effRange;\n }\n }\n\n currentGain = clamp(currentGain, 0.0f, 1.0f);\n\n for (var c = 0u; c < numChannels; c = c + 1u) {\n let sampleIndex = c * numSamples + index;\n var inVal = inputChannels[sampleIndex];\n if (is_nan_or_inf(inVal)) { inVal = 0.0f; }\n\n var outVal = inVal * currentGain;\n if (is_nan_or_inf(outVal)) { outVal = 0.0f; }\n\n if (outVal > 1.0f) {\n outVal = 1.0f;\n } else if (outVal < -1.0f) {\n outVal = -1.0f;\n } else if (outVal > 0.9f) {\n outVal = 0.9f + 0.1f * tanh((outVal - 0.9f) / 0.1f);\n } else if (outVal < -0.9f) {\n outVal = -0.9f + 0.1f * tanh((outVal + 0.9f) / 0.1f);\n }\n\n outputChannels[sampleIndex] = outVal;\n }\n }\n\n state[0] = f32(gateState);\n state[1] = currentGain;\n state[2] = gainAtTransition;\n state[3] = f32(attackSamplesLeft);\n state[4] = f32(holdSamplesLeft);\n state[5] = f32(releaseSamplesLeft);\n state[6] = f32(writeIndex);\n state[7] = sumSquares;\n}\n`;\nconst noiseGateAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) throw new Error(\"GPUDevice is required for WebGPU Noise Gate.\");\n\tconst op = virtualMedia.operation || {};\n\tconst threshold = resolveNumber(op.threshold, -40);\n\tconst attack = resolveNumber(op.attack, .005);\n\tconst hold = resolveNumber(op.hold, .05);\n\tconst release = resolveNumber(op.release, .1);\n\tconst range = resolveNumber(op.range, -80);\n\tconst closedGain = range <= -96 ? 0 : 10 ** (range / 20);\n\tconst hasThresholdSig = isHandleConnected(op, \"thresholdHandleId\") ? 1 : 0;\n\tconst hasAttackSig = isHandleConnected(op, \"attackHandleId\") ? 1 : 0;\n\tconst hasHoldSig = isHandleConnected(op, \"holdHandleId\") ? 1 : 0;\n\tconst hasReleaseSig = isHandleConnected(op, \"releaseHandleId\") ? 1 : 0;\n\tconst hasRangeSig = isHandleConnected(op, \"rangeHandleId\") ? 1 : 0;\n\tconst numChannels = channels.length;\n\tif (numChannels === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tconst windowLength = Math.max(1, Math.round(.01 * sampleRate));\n\tconst nodeId = op.id || \"audio-noise-gate\";\n\tconst frame = ctx.frame ?? 0;\n\tconst fps = ctx.fps ?? 24;\n\tconst stateFloatCount = 8 + windowLength;\n\tawait WebGPUAudioProcessor.process(ctx.device, nodeId, channels, sampleRate, virtualMedia, frame, fps, NOISE_GATE_SHADER_TEMPLATE, () => [\n\t\tsampleRate,\n\t\tthreshold,\n\t\tattack,\n\t\thold,\n\t\trelease,\n\t\tclosedGain,\n\t\twindowLength,\n\t\thasThresholdSig,\n\t\thasAttackSig,\n\t\thasHoldSig,\n\t\thasReleaseSig,\n\t\thasRangeSig,\n\t\t0,\n\t\tframe,\n\t\tnumSamples,\n\t\tnumChannels\n\t], 16, stateFloatCount, ctx?.renderId, true, ctx?.elapsedMs, ctx?.durationMs, void 0, void 0, PARAM_ORDER);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: noiseGateAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-AuTJmGew.mjs.map"],"mappings":";;;;;AAKA,MAAM,cAAc;CACnB;CACA;CACA;CACA;CACA;CACA;AACD,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+NzC,MAAM,0BAA0B,OAAO,UAAU,YAAY,cAAc,QAAQ;AAClF,KAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,+CAA+C;CACjF,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,YAAY,cAAc,GAAG,WAAW,IAAI;CAClD,MAAM,SAAS,cAAc,GAAG,QAAQ,KAAK;CAC7C,MAAM,OAAO,cAAc,GAAG,MAAM,IAAI;CACxC,MAAM,UAAU,cAAc,GAAG,SAAS,GAAG;CAC7C,MAAM,QAAQ,cAAc,GAAG,OAAO,IAAI;CAC1C,MAAM,aAAa,SAAS,MAAM,IAAI,OAAO,QAAQ;CACrD,MAAM,kBAAkB,kBAAkB,IAAI,oBAAoB,GAAG,IAAI;CACzE,MAAM,eAAe,kBAAkB,IAAI,iBAAiB,GAAG,IAAI;CACnE,MAAM,aAAa,kBAAkB,IAAI,eAAe,GAAG,IAAI;CAC/D,MAAM,gBAAgB,kBAAkB,IAAI,kBAAkB,GAAG,IAAI;CACrE,MAAM,cAAc,kBAAkB,IAAI,gBAAgB,GAAG,IAAI;CACjE,MAAM,cAAc,SAAS;AAC7B,KAAI,gBAAgB,EAAG;CACvB,MAAM,aAAa,SAAS,GAAG;AAC/B,KAAI,eAAe,EAAG;CACtB,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,WAAW,CAAC;CAC9D,MAAM,SAAS,GAAG,MAAM;CACxB,MAAM,QAAQ,IAAI,SAAS;CAC3B,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,kBAAkB,IAAI;AAC5B,OAAM,qBAAqB,QAAQ,IAAI,QAAQ,QAAQ,UAAU,YAAY,cAAc,OAAO,KAAK,kCAAkC;EACxI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,iBAAiB,KAAK,UAAU,MAAM,KAAK,WAAW,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,YAAY;;AAK3G,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,yBAAyB,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { n as defineRenderer } from "./renderer-
|
|
2
|
-
import { a as configBuilder, i as VideoResultSchema, n as ImageResultSchema } from "./dist-
|
|
3
|
-
import {
|
|
1
|
+
import { n as defineRenderer, o as resolveHandleParam } from "./renderer-BSitV56h.mjs";
|
|
2
|
+
import { a as configBuilder, i as VideoResultSchema, n as ImageResultSchema } from "./dist-BY0bIWgr.mjs";
|
|
3
|
+
import { a as createFullscreenPipeline, c as drawTextureToTarget, d as signalTextureView, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL } from "./gpu-DG3gI88-.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
|
|
6
|
-
//#region ../../nodes/node-mask-math/dist/renderers-
|
|
6
|
+
//#region ../../nodes/node-mask-math/dist/renderers-YQJYtdXA.mjs
|
|
7
7
|
const MAX_RADIUS = 200;
|
|
8
8
|
const MaskOperationEnum = z.enum([
|
|
9
9
|
"Union",
|
|
@@ -134,27 +134,7 @@ struct MaskMathUniforms {
|
|
|
134
134
|
@group(2) @binding(2) var clampMinSigTex : texture_2d<f32>;
|
|
135
135
|
@group(2) @binding(3) var clampMaxSigTex : texture_2d<f32>;
|
|
136
136
|
@group(2) @binding(4) var signalSamp : sampler;
|
|
137
|
-
|
|
138
|
-
struct VSOut {
|
|
139
|
-
@builtin(position) pos : vec4<f32>,
|
|
140
|
-
@location(0) uv : vec2<f32>,
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
|
|
144
|
-
var pos = array<vec2<f32>, 4>(
|
|
145
|
-
vec2<f32>(-1.0, 1.0),
|
|
146
|
-
vec2<f32>(1.0, 1.0),
|
|
147
|
-
vec2<f32>(-1.0, -1.0),
|
|
148
|
-
vec2<f32>(1.0, -1.0)
|
|
149
|
-
);
|
|
150
|
-
var uv = array<vec2<f32>, 4>(
|
|
151
|
-
vec2<f32>(0.0, 0.0),
|
|
152
|
-
vec2<f32>(1.0, 0.0),
|
|
153
|
-
vec2<f32>(0.0, 1.0),
|
|
154
|
-
vec2<f32>(1.0, 1.0)
|
|
155
|
-
);
|
|
156
|
-
return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
|
|
157
|
-
}
|
|
137
|
+
${FULLSCREEN_QUAD_WGSL}
|
|
158
138
|
|
|
159
139
|
fn extractChannel(color : vec4<f32>, chCode : f32) -> f32 {
|
|
160
140
|
if (chCode < 0.5) {
|
|
@@ -392,89 +372,28 @@ const deviceResourceCache = /* @__PURE__ */ new WeakMap();
|
|
|
392
372
|
function getMaskMathResources(device, targetFormat) {
|
|
393
373
|
const cached = deviceResourceCache.get(device);
|
|
394
374
|
if (cached) return cached;
|
|
395
|
-
const uniformLayout = device
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
buffer: { type: "uniform" }
|
|
399
|
-
}] });
|
|
400
|
-
const textureLayout = device.createBindGroupLayout({ entries: [
|
|
401
|
-
{
|
|
402
|
-
binding: 0,
|
|
403
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
404
|
-
texture: { sampleType: "float" }
|
|
405
|
-
},
|
|
406
|
-
{
|
|
407
|
-
binding: 1,
|
|
408
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
409
|
-
texture: { sampleType: "float" }
|
|
410
|
-
},
|
|
411
|
-
{
|
|
412
|
-
binding: 2,
|
|
413
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
414
|
-
texture: { sampleType: "float" }
|
|
415
|
-
},
|
|
416
|
-
{
|
|
417
|
-
binding: 3,
|
|
418
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
419
|
-
sampler: { type: "filtering" }
|
|
420
|
-
}
|
|
421
|
-
] });
|
|
422
|
-
const signalTextureLayout = device.createBindGroupLayout({ entries: [
|
|
423
|
-
{
|
|
424
|
-
binding: 0,
|
|
425
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
426
|
-
texture: { sampleType: "float" }
|
|
427
|
-
},
|
|
428
|
-
{
|
|
429
|
-
binding: 1,
|
|
430
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
431
|
-
texture: { sampleType: "float" }
|
|
432
|
-
},
|
|
433
|
-
{
|
|
434
|
-
binding: 2,
|
|
435
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
436
|
-
texture: { sampleType: "float" }
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
binding: 3,
|
|
440
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
441
|
-
texture: { sampleType: "float" }
|
|
442
|
-
},
|
|
443
|
-
{
|
|
444
|
-
binding: 4,
|
|
445
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
446
|
-
sampler: { type: "filtering" }
|
|
447
|
-
}
|
|
448
|
-
] });
|
|
449
|
-
const shaderModule = device.createShaderModule({ code: WGSL_MASKMATH });
|
|
450
|
-
const pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [
|
|
451
|
-
uniformLayout,
|
|
452
|
-
textureLayout,
|
|
453
|
-
signalTextureLayout
|
|
454
|
-
] });
|
|
375
|
+
const uniformLayout = fragmentBindGroupLayout(device, ["uniform"]);
|
|
376
|
+
const textureLayout = texturesLayout(device, 3);
|
|
377
|
+
const signalTextureLayout = texturesLayout(device, 4);
|
|
455
378
|
const res = {
|
|
456
379
|
uniformLayout,
|
|
457
380
|
textureLayout,
|
|
458
381
|
signalTextureLayout,
|
|
459
|
-
pipeline: device
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
entryPoint: "fs",
|
|
468
|
-
targets: [{ format: targetFormat }]
|
|
469
|
-
},
|
|
470
|
-
primitive: { topology: "triangle-strip" }
|
|
382
|
+
pipeline: createFullscreenPipeline(device, {
|
|
383
|
+
module: device.createShaderModule({ code: WGSL_MASKMATH }),
|
|
384
|
+
layouts: device.createPipelineLayout({ bindGroupLayouts: [
|
|
385
|
+
uniformLayout,
|
|
386
|
+
textureLayout,
|
|
387
|
+
signalTextureLayout
|
|
388
|
+
] }),
|
|
389
|
+
format: targetFormat
|
|
471
390
|
})
|
|
472
391
|
};
|
|
473
392
|
deviceResourceCache.set(device, res);
|
|
474
393
|
return res;
|
|
475
394
|
}
|
|
476
395
|
const WebGPURenderer = async (args) => {
|
|
477
|
-
const { ctx, encoder, pass,
|
|
396
|
+
const { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;
|
|
478
397
|
const op = props.virtualMedia?.operation;
|
|
479
398
|
if (op?.op !== "MaskMath" || !op) return;
|
|
480
399
|
const childMedia = props.virtualMedia?.children?.[0];
|
|
@@ -484,104 +403,39 @@ const WebGPURenderer = async (args) => {
|
|
|
484
403
|
const fps = props.fps || 30;
|
|
485
404
|
const width = targetWidth;
|
|
486
405
|
const height = targetHeight;
|
|
487
|
-
const resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) =>
|
|
488
|
-
if (handleId && op.inputs?.[handleId]?.connectionValid) {
|
|
489
|
-
const outputItem = op.inputs[handleId].outputItem;
|
|
490
|
-
if (outputItem?.type === "Number") {
|
|
491
|
-
const numVal = typeof outputItem.data === "number" ? outputItem.data : outputItem.data?.value ?? fallbackVal;
|
|
492
|
-
return {
|
|
493
|
-
val: Math.max(clampMin, Math.min(clampMax, numVal)),
|
|
494
|
-
hasStaticSig: false,
|
|
495
|
-
sd: null,
|
|
496
|
-
handleId
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
if (outputItem?.type === "Signal" && outputItem.data) return {
|
|
500
|
-
val: fallbackVal,
|
|
501
|
-
hasStaticSig: true,
|
|
502
|
-
sd: outputItem.data,
|
|
503
|
-
handleId
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
return {
|
|
507
|
-
val: Math.max(clampMin, Math.min(clampMax, fallbackVal)),
|
|
508
|
-
hasStaticSig: false,
|
|
509
|
-
sd: null,
|
|
510
|
-
handleId
|
|
511
|
-
};
|
|
512
|
-
};
|
|
406
|
+
const resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);
|
|
513
407
|
const radiusRes = resolveField(op.radiusHandleId, Number(op.radius ?? 0), 0, MAX_RADIUS);
|
|
514
408
|
const thresholdRes = resolveField(op.thresholdHandleId, Number(op.threshold ?? .5), 0, 1);
|
|
515
409
|
const clampMinRes = resolveField(op.clampMinHandleId, Number(op.clampMin ?? 0), 0, 1);
|
|
516
410
|
const clampMaxRes = resolveField(op.clampMaxHandleId, Number(op.clampMax ?? 1), 0, 1);
|
|
517
|
-
const tmpATex =
|
|
518
|
-
const tmpAView = tmpATex.createView();
|
|
519
|
-
ctx.renderer.beginFrame(encoder, tmpAView, {
|
|
520
|
-
r: 0,
|
|
521
|
-
g: 0,
|
|
522
|
-
b: 0,
|
|
523
|
-
a: 0
|
|
524
|
-
}, width, height, "clear").end();
|
|
525
|
-
ctx.renderer.pushScissor({
|
|
526
|
-
x: 0,
|
|
527
|
-
y: 0,
|
|
528
|
-
width,
|
|
529
|
-
height
|
|
530
|
-
});
|
|
531
|
-
ctx.renderer.pushIdentity();
|
|
532
|
-
await drawChild(childMedia, {
|
|
411
|
+
const { texture: tmpATex, view: tmpAView } = await drawChildToTexture(args, childMedia, { props: {
|
|
533
412
|
...props,
|
|
534
413
|
virtualMedia: childMedia,
|
|
535
|
-
renderId: `${props.renderId}-maskA
|
|
536
|
-
|
|
537
|
-
}, tmpAView, tmpATex, width, height);
|
|
538
|
-
ctx.renderer.popTransform();
|
|
539
|
-
ctx.renderer.popScissor();
|
|
414
|
+
renderId: `${props.renderId}-maskA`
|
|
415
|
+
} });
|
|
540
416
|
let tmpBTex = null;
|
|
541
|
-
if (op.maskBMedia) {
|
|
542
|
-
|
|
543
|
-
...props.excludeTextures || [],
|
|
544
|
-
targetTexture,
|
|
545
|
-
tmpATex
|
|
546
|
-
]);
|
|
547
|
-
const tmpBView = tmpBTex.createView();
|
|
548
|
-
ctx.renderer.beginFrame(encoder, tmpBView, {
|
|
549
|
-
r: 0,
|
|
550
|
-
g: 0,
|
|
551
|
-
b: 0,
|
|
552
|
-
a: 0
|
|
553
|
-
}, width, height, "clear").end();
|
|
554
|
-
ctx.renderer.pushScissor({
|
|
555
|
-
x: 0,
|
|
556
|
-
y: 0,
|
|
557
|
-
width,
|
|
558
|
-
height
|
|
559
|
-
});
|
|
560
|
-
ctx.renderer.pushIdentity();
|
|
561
|
-
await drawChild(op.maskBMedia, {
|
|
417
|
+
if (op.maskBMedia) ({texture: tmpBTex} = await drawChildToTexture(args, op.maskBMedia, {
|
|
418
|
+
props: {
|
|
562
419
|
...props,
|
|
563
420
|
virtualMedia: op.maskBMedia,
|
|
564
421
|
renderId: `${props.renderId}-maskB`,
|
|
565
|
-
excludeTextures: [
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
]
|
|
570
|
-
}, tmpBView, tmpBTex, width, height);
|
|
571
|
-
ctx.renderer.popTransform();
|
|
572
|
-
ctx.renderer.popScissor();
|
|
573
|
-
}
|
|
422
|
+
excludeTextures: [...props.excludeTextures || [], tmpATex]
|
|
423
|
+
},
|
|
424
|
+
exclude: [tmpATex]
|
|
425
|
+
}));
|
|
574
426
|
const { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getMaskMathResources(ctx.device, ctx.renderer.format);
|
|
575
427
|
const sampler = ctx.renderer.samplerCache.getSampler(ctx.device);
|
|
576
|
-
const elapsedSeconds
|
|
577
|
-
const
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
428
|
+
const { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);
|
|
429
|
+
const signalContext = {
|
|
430
|
+
args,
|
|
431
|
+
width,
|
|
432
|
+
height,
|
|
433
|
+
frame,
|
|
434
|
+
fps,
|
|
435
|
+
elapsedSeconds,
|
|
436
|
+
durationSeconds
|
|
584
437
|
};
|
|
438
|
+
const getSignalView = (res, suffix) => signalTextureView(signalContext, res, res.handleId ?? `${props.renderId ?? "maskmath"}_${suffix}`);
|
|
585
439
|
const radiusView = getSignalView(radiusRes, "radius_sig");
|
|
586
440
|
const threshView = getSignalView(thresholdRes, "threshold_sig");
|
|
587
441
|
const clampMinView = getSignalView(clampMinRes, "clampMin_sig");
|
|
@@ -662,110 +516,73 @@ const WebGPURenderer = async (args) => {
|
|
|
662
516
|
...props.excludeTextures || []
|
|
663
517
|
]);
|
|
664
518
|
const hBuffer = ctx.renderer.getTemporaryBuffer(hUniformData);
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
clearValue: {
|
|
670
|
-
r: 0,
|
|
671
|
-
g: 0,
|
|
672
|
-
b: 0,
|
|
673
|
-
a: 0
|
|
674
|
-
}
|
|
675
|
-
}] });
|
|
676
|
-
hPass.setPipeline(pipeline);
|
|
677
|
-
hPass.setBindGroup(0, ctx.device.createBindGroup({
|
|
678
|
-
layout: uniformLayout,
|
|
679
|
-
entries: [{
|
|
680
|
-
binding: 0,
|
|
681
|
-
resource: { buffer: hBuffer }
|
|
682
|
-
}]
|
|
683
|
-
}));
|
|
684
|
-
hPass.setBindGroup(1, ctx.device.createBindGroup({
|
|
685
|
-
layout: textureLayout,
|
|
686
|
-
entries: [
|
|
687
|
-
{
|
|
519
|
+
drawFullscreenPass(encoder, outTex1.createView(), pipeline, [
|
|
520
|
+
ctx.device.createBindGroup({
|
|
521
|
+
layout: uniformLayout,
|
|
522
|
+
entries: [{
|
|
688
523
|
binding: 0,
|
|
689
|
-
resource:
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
524
|
+
resource: { buffer: hBuffer }
|
|
525
|
+
}]
|
|
526
|
+
}),
|
|
527
|
+
ctx.device.createBindGroup({
|
|
528
|
+
layout: textureLayout,
|
|
529
|
+
entries: [
|
|
530
|
+
{
|
|
531
|
+
binding: 0,
|
|
532
|
+
resource: tmpAView
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
binding: 1,
|
|
536
|
+
resource: dummyBView
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
binding: 2,
|
|
540
|
+
resource: tmpAView
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
binding: 3,
|
|
544
|
+
resource: sampler
|
|
545
|
+
}
|
|
546
|
+
]
|
|
547
|
+
}),
|
|
548
|
+
sigBindGroup
|
|
549
|
+
]);
|
|
708
550
|
const vBuffer = ctx.renderer.getTemporaryBuffer(vUniformData);
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
clearValue: {
|
|
714
|
-
r: 0,
|
|
715
|
-
g: 0,
|
|
716
|
-
b: 0,
|
|
717
|
-
a: 0
|
|
718
|
-
}
|
|
719
|
-
}] });
|
|
720
|
-
vPass.setPipeline(pipeline);
|
|
721
|
-
vPass.setBindGroup(0, ctx.device.createBindGroup({
|
|
722
|
-
layout: uniformLayout,
|
|
723
|
-
entries: [{
|
|
724
|
-
binding: 0,
|
|
725
|
-
resource: { buffer: vBuffer }
|
|
726
|
-
}]
|
|
727
|
-
}));
|
|
728
|
-
vPass.setBindGroup(1, ctx.device.createBindGroup({
|
|
729
|
-
layout: textureLayout,
|
|
730
|
-
entries: [
|
|
731
|
-
{
|
|
551
|
+
drawFullscreenPass(encoder, outTex2.createView(), pipeline, [
|
|
552
|
+
ctx.device.createBindGroup({
|
|
553
|
+
layout: uniformLayout,
|
|
554
|
+
entries: [{
|
|
732
555
|
binding: 0,
|
|
733
|
-
resource:
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
x: 0,
|
|
761
|
-
y: 0,
|
|
762
|
-
width: targetWidth,
|
|
763
|
-
height: targetHeight
|
|
764
|
-
}, { opacity: finalOpacity });
|
|
765
|
-
args.pass = finalPass;
|
|
556
|
+
resource: { buffer: vBuffer }
|
|
557
|
+
}]
|
|
558
|
+
}),
|
|
559
|
+
ctx.device.createBindGroup({
|
|
560
|
+
layout: textureLayout,
|
|
561
|
+
entries: [
|
|
562
|
+
{
|
|
563
|
+
binding: 0,
|
|
564
|
+
resource: outTex1.createView()
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
binding: 1,
|
|
568
|
+
resource: dummyBView
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
binding: 2,
|
|
572
|
+
resource: tmpAView
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
binding: 3,
|
|
576
|
+
resource: sampler
|
|
577
|
+
}
|
|
578
|
+
]
|
|
579
|
+
}),
|
|
580
|
+
sigBindGroup
|
|
581
|
+
]);
|
|
582
|
+
drawTextureToTarget(args, outTex2, props.opacity ?? op.opacity ?? 1);
|
|
766
583
|
};
|
|
767
584
|
var renderers_default = defineRenderer({ WebGPURenderer });
|
|
768
585
|
|
|
769
586
|
//#endregion
|
|
770
587
|
export { renderers_default as n, WebGPURenderer as t };
|
|
771
|
-
//# sourceMappingURL=renderer-
|
|
588
|
+
//# sourceMappingURL=renderer-C92mwhZz.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-C92mwhZz.mjs","names":[],"sources":["../../../nodes/node-mask-math/dist/renderers-YQJYtdXA.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { ImageResultSchema, VideoResultSchema, configBuilder, resolveHandleParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, signalTextureView, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst MAX_RADIUS = 200;\nconst MaskOperationEnum = z.enum([\n\t\"Union\",\n\t\"Intersect\",\n\t\"Subtract\",\n\t\"Difference\",\n\t\"Invert\",\n\t\"Dilate\",\n\t\"Erode\",\n\t\"Choke\",\n\t\"Feather\"\n]);\nconst MaskChannelEnum = z.enum([\n\t\"Alpha\",\n\t\"Luminance\",\n\t\"Red\",\n\t\"Green\",\n\t\"Blue\"\n]);\nconst MaskOutputFormatEnum = z.enum([\n\t\"WhiteWithAlpha\",\n\t\"GrayscaleRGB\",\n\t\"AlphaOnly\",\n\t\"PassthroughRGB\"\n]);\nconst maskMathConfig = configBuilder().field(\"operation\", MaskOperationEnum.default(\"Union\"), {\n\tlabel: \"Operation\",\n\tdescription: \"Morphological or Boolean set operation applied to input alpha masks.\"\n}).field(\"radius\", z.number().min(0).max(MAX_RADIUS).default(0), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Radius / Width (px)\",\n\tdescription: \"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations.\"\n}).field(\"threshold\", z.number().multipleOf(.01).min(0).max(1).default(.5), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Threshold\",\n\tdescription: \"Cutoff threshold level (0.0–1.0) for binarization step or non-linear choke.\"\n}).field(\"clampMin\", z.number().multipleOf(.01).min(0).max(1).default(0), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Clamp Min\",\n\tdescription: \"Minimum alpha matte cutoff limit (0.0–1.0).\"\n}).field(\"clampMax\", z.number().multipleOf(.01).min(0).max(1).default(1), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Clamp Max\",\n\tdescription: \"Maximum alpha matte cutoff limit (0.0–1.0).\"\n}).field(\"channelA\", MaskChannelEnum.default(\"Alpha\"), {\n\tlabel: \"Mask A Channel\",\n\tdescription: \"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue).\"\n}).field(\"channelB\", MaskChannelEnum.default(\"Alpha\"), {\n\tlabel: \"Mask B Channel\",\n\tdescription: \"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue).\"\n}).field(\"binarize\", z.boolean().default(false), {\n\tlabel: \"Binarize\",\n\tdescription: \"When enabled, outputs crisp 1-bit binary matte based on threshold.\"\n}).field(\"invertResult\", z.boolean().default(false), {\n\tlabel: \"Invert Result\",\n\tdescription: \"Inverts final matte output.\"\n}).field(\"outputFormat\", MaskOutputFormatEnum.default(\"WhiteWithAlpha\"), {\n\tlabel: \"Output Format\",\n\tdescription: \"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha).\"\n}).build();\nconst MaskMathNodeConfigSchema = maskMathConfig.schema;\nconst MaskMathResultSchema = z.union([ImageResultSchema, VideoResultSchema]);\nconst MASK_MATH_OUTPUT_TYPE_MAP = {\n\tVideo: \"Video\",\n\tLottie: \"Video\",\n\tGIF: \"GIF\",\n\tImage: \"Image\",\n\tSVG: \"Image\"\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst OPERATION_MAP = {\n\tUnion: 0,\n\tIntersect: 1,\n\tSubtract: 2,\n\tDifference: 3,\n\tInvert: 4,\n\tDilate: 5,\n\tErode: 6,\n\tChoke: 7,\n\tFeather: 8\n};\nconst CHANNEL_MAP = {\n\tAlpha: 0,\n\tLuminance: 1,\n\tRed: 2,\n\tGreen: 3,\n\tBlue: 4\n};\nconst OUTPUT_FORMAT_MAP = {\n\tWhiteWithAlpha: 0,\n\tGrayscaleRGB: 1,\n\tAlphaOnly: 2,\n\tPassthroughRGB: 3\n};\nconst WGSL_MASKMATH = `\nstruct MaskMathUniforms {\n\tdirX : f32,\n\tdirY : f32,\n\tradius : f32,\n\tthreshold : f32,\n\n\tclampMin : f32,\n\tclampMax : f32,\n\toperation : f32,\n\tchannelA : f32,\n\n\tchannelB : f32,\n\tbinarize : f32,\n\tinvertResult : f32,\n\toutputFormat : f32,\n\n\thasMaskB : f32,\n\thasRadiusSig : f32,\n\thasThreshSig : f32,\n\thasClampMinSig : f32,\n\n\thasClampMaxSig : f32,\n\tisSecondPass : f32,\n\tpad0 : f32,\n\tpad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : MaskMathUniforms;\n\n@group(1) @binding(0) var texA : texture_2d<f32>;\n@group(1) @binding(1) var texB : texture_2d<f32>;\n@group(1) @binding(2) var origTexA : texture_2d<f32>;\n@group(1) @binding(3) var samp : sampler;\n\n@group(2) @binding(0) var radiusSigTex : texture_2d<f32>;\n@group(2) @binding(1) var threshSigTex : texture_2d<f32>;\n@group(2) @binding(2) var clampMinSigTex : texture_2d<f32>;\n@group(2) @binding(3) var clampMaxSigTex : texture_2d<f32>;\n@group(2) @binding(4) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn extractChannel(color : vec4<f32>, chCode : f32) -> f32 {\n\tif (chCode < 0.5) {\n\t\t// Alpha\n\t\treturn color.a;\n\t} else if (chCode < 1.5) {\n\t\t// Luminance\n\t\tlet luma = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, luma / color.a);\n\t\t}\n\t\treturn luma;\n\t} else if (chCode < 2.5) {\n\t\t// Red\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.r / color.a);\n\t\t}\n\t\treturn color.r;\n\t} else if (chCode < 3.5) {\n\t\t// Green\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.g / color.a);\n\t\t}\n\t\treturn color.g;\n\t} else {\n\t\t// Blue\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.b / color.a);\n\t\t}\n\t\treturn color.b;\n\t}\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet dimensions = vec2<f32>(textureDimensions(texA));\n\tlet texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));\n\n\tvar radius = u.radius;\n\tif (u.hasRadiusSig > 0.5) {\n\t\tradius = clamp(textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 200.0);\n\t}\n\tvar threshold = u.threshold;\n\tif (u.hasThreshSig > 0.5) {\n\t\tthreshold = clamp(textureSampleLevel(threshSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);\n\t}\n\tvar clampMin = u.clampMin;\n\tif (u.hasClampMinSig > 0.5) {\n\t\tclampMin = clamp(textureSampleLevel(clampMinSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);\n\t}\n\tvar clampMax = u.clampMax;\n\tif (u.hasClampMaxSig > 0.5) {\n\t\tclampMax = clamp(textureSampleLevel(clampMaxSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);\n\t}\n\n\tlet op = u.operation;\n\tlet direction = vec2<f32>(u.dirX, u.dirY);\n\n\tvar val = 0.0;\n\n\tif (u.isSecondPass <= 0.5) {\n\t\t// -------------------------------------------------------------\n\t\t// PASS 1: Horizontal pass / Boolean operation\n\t\t// -------------------------------------------------------------\n\t\tlet sampleA = textureSampleLevel(texA, samp, in.uv, 0.0);\n\t\tlet sampleB = textureSampleLevel(texB, samp, in.uv, 0.0);\n\n\t\tlet a = extractChannel(sampleA, u.channelA);\n\t\tlet b = select(0.0, extractChannel(sampleB, u.channelB), u.hasMaskB > 0.5);\n\n\t\tif (op < 0.5) {\n\t\t\t// Union (A + B)\n\t\t\tval = select(a, clamp(a + b, 0.0, 1.0), u.hasMaskB > 0.5);\n\t\t} else if (op < 1.5) {\n\t\t\t// Intersect (min(A, B))\n\t\t\tval = select(a, min(a, b), u.hasMaskB > 0.5);\n\t\t} else if (op < 2.5) {\n\t\t\t// Subtract (clamp(A - B, 0, 1))\n\t\t\tval = select(a, clamp(a - b, 0.0, 1.0), u.hasMaskB > 0.5);\n\t\t} else if (op < 3.5) {\n\t\t\t// Difference (|A - B|)\n\t\t\tval = select(a, abs(a - b), u.hasMaskB > 0.5);\n\t\t} else if (op < 4.5) {\n\t\t\t// Invert (1 - A)\n\t\t\tval = 1.0 - a;\n\t\t} else if (op < 5.5) {\n\t\t\t// Dilate (Horizontal Max)\n\t\t\tif (radius <= 0.0) {\n\t\t\t\tval = a;\n\t\t\t} else {\n\t\t\t\tlet stepScale = max(1.0, radius / 20.0);\n\t\t\t\tlet sampleRadius = min(i32(ceil(radius / stepScale)), 48);\n\t\t\t\tvar maxVal = a;\n\t\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\t\tmaxVal = max(maxVal, extractChannel(s, u.channelA));\n\t\t\t\t}\n\t\t\t\tval = maxVal;\n\t\t\t}\n\t\t} else if (op < 7.5) {\n\t\t\t// Erode & Choke (Horizontal Min)\n\t\t\tif (radius <= 0.0) {\n\t\t\t\tval = a;\n\t\t\t} else {\n\t\t\t\tlet stepScale = max(1.0, radius / 20.0);\n\t\t\t\tlet sampleRadius = min(i32(ceil(radius / stepScale)), 48);\n\t\t\t\tvar minVal = a;\n\t\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\t\tminVal = min(minVal, extractChannel(s, u.channelA));\n\t\t\t\t}\n\t\t\t\tval = minVal;\n\t\t\t}\n\t\t} else {\n\t\t\t// Feather (Horizontal Gaussian Blur)\n\t\t\tif (radius <= 0.0) {\n\t\t\t\tval = a;\n\t\t\t} else {\n\t\t\t\tlet spatial_sigma = max(0.1, radius / 2.0);\n\t\t\t\tlet stepScale = max(1.0, spatial_sigma / 20.0);\n\t\t\t\tlet effectiveSigma = spatial_sigma / stepScale;\n\t\t\t\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 48);\n\t\t\t\tvar accum = 0.0;\n\t\t\t\tvar totalWeight = 0.0;\n\t\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\t\tlet x = f32(i) * stepScale;\n\t\t\t\t\tlet weight = exp(-0.5 * (x / spatial_sigma) * (x / spatial_sigma));\n\t\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\t\taccum += extractChannel(s, u.channelA) * weight;\n\t\t\t\t\ttotalWeight += weight;\n\t\t\t\t}\n\t\t\t\tval = accum / max(totalWeight, 1e-5);\n\t\t\t}\n\t\t}\n\n\t\treturn vec4<f32>(val, val, val, val);\n\t}\n\n\t// -------------------------------------------------------------\n\t// PASS 2: Vertical pass & Post-processing (clamp, binarize, format)\n\t// -------------------------------------------------------------\n\tlet samplePass1 = textureSampleLevel(texA, samp, in.uv, 0.0);\n\tvar matte = samplePass1.r;\n\n\t// 1. Spatial kernel processing (Dilate, Erode, Choke, Feather) when radius > 0\n\tif (radius > 0.0) {\n\t\tif (op >= 4.5 && op < 5.5) {\n\t\t\t// Dilate (Vertical Max)\n\t\t\tlet stepScale = max(1.0, radius / 20.0);\n\t\t\tlet sampleRadius = min(i32(ceil(radius / stepScale)), 48);\n\t\t\tvar maxVal = matte;\n\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\tmaxVal = max(maxVal, s.r);\n\t\t\t}\n\t\t\tmatte = maxVal;\n\t\t} else if (op >= 5.5 && op < 7.5) {\n\t\t\t// Erode & Choke (Vertical Min)\n\t\t\tlet stepScale = max(1.0, radius / 20.0);\n\t\t\tlet sampleRadius = min(i32(ceil(radius / stepScale)), 48);\n\t\t\tvar minVal = matte;\n\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\tminVal = min(minVal, s.r);\n\t\t\t}\n\t\t\tmatte = minVal;\n\t\t} else if (op >= 7.5) {\n\t\t\t// Feather (Vertical Gaussian Blur)\n\t\t\tlet spatial_sigma = max(0.1, radius / 2.0);\n\t\t\tlet stepScale = max(1.0, spatial_sigma / 20.0);\n\t\t\tlet effectiveSigma = spatial_sigma / stepScale;\n\t\t\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 48);\n\t\t\tvar accum = 0.0;\n\t\t\tvar totalWeight = 0.0;\n\t\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\t\tlet x = f32(i) * stepScale;\n\t\t\t\tlet weight = exp(-0.5 * (x / spatial_sigma) * (x / spatial_sigma));\n\t\t\t\tlet s = textureSampleLevel(texA, samp, in.uv + offset, 0.0);\n\t\t\t\taccum += s.r * weight;\n\t\t\t\ttotalWeight += weight;\n\t\t\t}\n\t\t\tmatte = accum / max(totalWeight, 1e-5);\n\t\t}\n\t}\n\n\t// 2. Choke non-linear threshold contraction curve (applies even if radius == 0)\n\tif (op >= 6.5 && op < 7.5) {\n\t\tlet threshRange = max(0.01, 1.0 - threshold);\n\t\tmatte = clamp((matte - threshold) / threshRange, 0.0, 1.0);\n\t}\n\n\t// Range clamping\n\tlet lowerLimit = min(clampMin, clampMax);\n\tlet upperLimit = max(clampMin, clampMax);\n\tmatte = clamp(matte, lowerLimit, upperLimit);\n\n\t// Optional Binarization\n\tif (u.binarize > 0.5) {\n\t\tmatte = select(0.0, 1.0, matte >= threshold);\n\t}\n\n\t// Optional Inversion\n\tif (u.invertResult > 0.5) {\n\t\tmatte = 1.0 - matte;\n\t}\n\n\t// Output format conversion\n\tlet fmt = u.outputFormat;\n\tif (fmt < 0.5) {\n\t\t// WhiteWithAlpha: vec4(matte, matte, matte, matte) (premultiplied standard mask)\n\t\treturn vec4<f32>(matte, matte, matte, matte);\n\t} else if (fmt < 1.5) {\n\t\t// GrayscaleRGB: vec4(matte, matte, matte, 1.0)\n\t\treturn vec4<f32>(matte, matte, matte, 1.0);\n\t} else if (fmt < 2.5) {\n\t\t// AlphaOnly: vec4(0.0, 0.0, 0.0, matte)\n\t\treturn vec4<f32>(0.0, 0.0, 0.0, matte);\n\t} else {\n\t\t// PassthroughRGB: Mask A color with new alpha\n\t\tlet origCol = textureSampleLevel(origTexA, samp, in.uv, 0.0);\n\t\tif (origCol.a < 1e-4) {\n\t\t\treturn vec4<f32>(0.0, 0.0, 0.0, 0.0);\n\t\t}\n\t\tlet unpremult = origCol.rgb / origCol.a;\n\t\treturn vec4<f32>(unpremult * matte, matte);\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getMaskMathResources(device, targetFormat) {\n\tconst cached = deviceResourceCache.get(device);\n\tif (cached) return cached;\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\tconst textureLayout = texturesLayout(device, 3);\n\tconst signalTextureLayout = texturesLayout(device, 4);\n\tconst res = {\n\t\tuniformLayout,\n\t\ttextureLayout,\n\t\tsignalTextureLayout,\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tmodule: device.createShaderModule({ code: WGSL_MASKMATH }),\n\t\t\tlayouts: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tuniformLayout,\n\t\t\t\ttextureLayout,\n\t\t\t\tsignalTextureLayout\n\t\t\t] }),\n\t\t\tformat: targetFormat\n\t\t})\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nconst WebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"MaskMath\" || !op) return;\n\tconst childMedia = props.virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);\n\tconst radiusRes = resolveField(op.radiusHandleId, Number(op.radius ?? 0), 0, MAX_RADIUS);\n\tconst thresholdRes = resolveField(op.thresholdHandleId, Number(op.threshold ?? .5), 0, 1);\n\tconst clampMinRes = resolveField(op.clampMinHandleId, Number(op.clampMin ?? 0), 0, 1);\n\tconst clampMaxRes = resolveField(op.clampMaxHandleId, Number(op.clampMax ?? 1), 0, 1);\n\tconst { texture: tmpATex, view: tmpAView } = await drawChildToTexture(args, childMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\trenderId: `${props.renderId}-maskA`\n\t} });\n\tlet tmpBTex = null;\n\tif (op.maskBMedia) ({texture: tmpBTex} = await drawChildToTexture(args, op.maskBMedia, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: op.maskBMedia,\n\t\t\trenderId: `${props.renderId}-maskB`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tmpATex]\n\t\t},\n\t\texclude: [tmpATex]\n\t}));\n\tconst { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getMaskMathResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, res.handleId ?? `${props.renderId ?? \"maskmath\"}_${suffix}`);\n\tconst radiusView = getSignalView(radiusRes, \"radius_sig\");\n\tconst threshView = getSignalView(thresholdRes, \"threshold_sig\");\n\tconst clampMinView = getSignalView(clampMinRes, \"clampMin_sig\");\n\tconst clampMaxView = getSignalView(clampMaxRes, \"clampMax_sig\");\n\tconst sigBindGroup = ctx.device.createBindGroup({\n\t\tlayout: signalTextureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: radiusView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: threshView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: clampMinView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: clampMaxView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst operationCode = OPERATION_MAP[op.operation ?? \"Union\"] ?? 0;\n\tconst channelACode = CHANNEL_MAP[op.channelA ?? \"Alpha\"] ?? 0;\n\tconst channelBCode = CHANNEL_MAP[op.channelB ?? \"Alpha\"] ?? 0;\n\tconst outputFormatCode = OUTPUT_FORMAT_MAP[op.outputFormat ?? \"WhiteWithAlpha\"] ?? 0;\n\tconst dummyBView = tmpBTex ? tmpBTex.createView() : tmpAView;\n\tconst hUniformData = new Float32Array(20);\n\tconst vUniformData = new Float32Array(20);\n\tconst baseUniforms = [\n\t\t0,\n\t\t0,\n\t\tradiusRes.val,\n\t\tthresholdRes.val,\n\t\tclampMinRes.val,\n\t\tclampMaxRes.val,\n\t\toperationCode,\n\t\tchannelACode,\n\t\tchannelBCode,\n\t\top.binarize ? 1 : 0,\n\t\top.invertResult ? 1 : 0,\n\t\toutputFormatCode,\n\t\ttmpBTex ? 1 : 0,\n\t\tradiusRes.hasStaticSig ? 1 : 0,\n\t\tthresholdRes.hasStaticSig ? 1 : 0,\n\t\tclampMinRes.hasStaticSig ? 1 : 0,\n\t\tclampMaxRes.hasStaticSig ? 1 : 0,\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\thUniformData.set(baseUniforms);\n\thUniformData[0] = 1;\n\thUniformData[1] = 0;\n\thUniformData[17] = 0;\n\tvUniformData.set(baseUniforms);\n\tvUniformData[0] = 0;\n\tvUniformData[1] = 1;\n\tvUniformData[17] = 1;\n\tconst outTex1 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpATex,\n\t\t...tmpBTex ? [tmpBTex] : [],\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst outTex2 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpATex,\n\t\t...tmpBTex ? [tmpBTex] : [],\n\t\toutTex1,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst hBuffer = ctx.renderer.getTemporaryBuffer(hUniformData);\n\tdrawFullscreenPass(encoder, outTex1.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: hBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: tmpAView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyBView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpAView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tconst vBuffer = ctx.renderer.getTemporaryBuffer(vUniformData);\n\tdrawFullscreenPass(encoder, outTex2.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: vBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: outTex1.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyBView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpAView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tdrawTextureToTarget(args, outTex2, props.opacity ?? op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { MaskChannelEnum as a, MaskOperationEnum as c, MAX_RADIUS as i, MaskOutputFormatEnum as l, WebGPURenderer as n, MaskMathNodeConfigSchema as o, MASK_MATH_OUTPUT_TYPE_MAP as r, MaskMathResultSchema as s, renderers_default as t, maskMathConfig as u };\n//# sourceMappingURL=renderers-YQJYtdXA.mjs.map"],"mappings":"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"}
|