framefields 2.0.3 → 2.0.6
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 +4 -26
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-DbxiKp5p.mjs → audio-D6enPyAG.mjs} +4 -4
- package/dist/{audio-DbxiKp5p.mjs.map → audio-D6enPyAG.mjs.map} +1 -1
- package/dist/{audio-Dvwwz8xU.d.mts → audio-a6pY05g2.d.mts} +3 -3
- package/dist/{audio-Dvwwz8xU.d.mts.map → audio-a6pY05g2.d.mts.map} +1 -1
- package/dist/{dist-Bx6J0VcM.mjs → dist-B9Afsv83.mjs} +47 -2
- package/dist/dist-B9Afsv83.mjs.map +1 -0
- package/dist/{dist-DKm2IyEJ.mjs → dist-DzUJmIHt.mjs} +2 -2
- package/dist/dist-DzUJmIHt.mjs.map +1 -0
- package/dist/{dist-CGIme1vZ.mjs → dist-JkiL-qy7.mjs} +60 -17
- package/dist/dist-JkiL-qy7.mjs.map +1 -0
- package/dist/{dist-DuIv211_.mjs → dist-sHqWCB9M.mjs} +215 -127
- package/dist/dist-sHqWCB9M.mjs.map +1 -0
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +25 -25
- package/dist/effects-l0T61DPU.mjs +2086 -0
- package/dist/effects-l0T61DPU.mjs.map +1 -0
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-CwwIhe1o.mjs → fonts-CuG-05-_.mjs} +13 -2
- package/dist/fonts-CuG-05-_.mjs.map +1 -0
- package/dist/{index-CnAk1hTw.d.mts → index-BJUS4Nx6.d.mts} +2 -2
- package/dist/index-BJUS4Nx6.d.mts.map +1 -0
- package/dist/{index-D7llSs-m.d.mts → index-BJx_Qxc_.d.mts} +2510 -125
- package/dist/{index-D7llSs-m.d.mts.map → index-BJx_Qxc_.d.mts.map} +1 -1
- package/dist/{index-D1ZsMpke.d.mts → index-BLbUQolI.d.mts} +3 -3
- package/dist/{index-D1ZsMpke.d.mts.map → index-BLbUQolI.d.mts.map} +1 -1
- package/dist/{index-D2wJqSl5.d.mts → index-Bi2nRZ_g.d.mts} +3 -3
- package/dist/{index-D2wJqSl5.d.mts.map → index-Bi2nRZ_g.d.mts.map} +1 -1
- package/dist/{index-BMVVmc4G.d.mts → index-CZChQhXZ.d.mts} +2 -2
- package/dist/index-CZChQhXZ.d.mts.map +1 -0
- package/dist/{index-DiSKzDGR.d.mts → index-CbzEM_o6.d.mts} +8 -1
- package/dist/index-CbzEM_o6.d.mts.map +1 -0
- package/dist/{index-D2jDC7O5.d.mts → index-WIPHLy5m.d.mts} +31 -2
- package/dist/index-WIPHLy5m.d.mts.map +1 -0
- package/dist/index.d.mts +111 -69
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +52 -45
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-D7TqF9i_.mjs → preview-CcooLR2s.mjs} +74 -66
- package/dist/preview-CcooLR2s.mjs.map +1 -0
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-H5BPCY7N.mjs → chunk-24DXIKXL.mjs} +2 -2
- package/dist/preview-engine/{chunk-QP2NI4XD.mjs → chunk-2XXICKQV.mjs} +1 -1
- package/dist/preview-engine/{chunk-EDIZNO3P.mjs → chunk-3ROJ7JVY.mjs} +1 -1
- package/dist/preview-engine/chunk-45JOFIHE.mjs +8 -0
- package/dist/preview-engine/{chunk-HAXK42HG.mjs → chunk-5NYKHIQN.mjs} +10 -10
- package/dist/preview-engine/{chunk-VSSB73UU.mjs → chunk-66NVL4BN.mjs} +2 -2
- package/dist/preview-engine/{chunk-AOLAHYVV.mjs → chunk-6JW37VJA.mjs} +1 -1
- package/dist/preview-engine/chunk-7MJVROKR.mjs +98 -0
- package/dist/preview-engine/{chunk-Z4ERCLNF.mjs → chunk-7NVDTELW.mjs} +1 -1
- package/dist/preview-engine/{chunk-SXX7HX34.mjs → chunk-AMBSW6OA.mjs} +2 -2
- package/dist/preview-engine/{chunk-UDNCEHUI.mjs → chunk-BE3CEVJB.mjs} +1 -1
- package/dist/preview-engine/{chunk-CA5N7JRZ.mjs → chunk-BQ65MU6H.mjs} +1 -1
- package/dist/preview-engine/{chunk-LEEZXHQO.mjs → chunk-BWDARDO6.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZX6APG6E.mjs → chunk-CXFEQ5PM.mjs} +1 -1
- package/dist/preview-engine/chunk-D3TETPLI.mjs +5 -0
- package/dist/preview-engine/{chunk-B6PLCMBM.mjs → chunk-DMWSTYFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-6ZOXGAYA.mjs → chunk-EJTGJVUA.mjs} +2 -2
- package/dist/preview-engine/{chunk-3O5OKR6D.mjs → chunk-EQ4QZRXB.mjs} +2 -2
- package/dist/preview-engine/{chunk-I4FH6HYU.mjs → chunk-FE6RSVKZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-U446SQP3.mjs → chunk-GHMCGTJ2.mjs} +1 -1
- package/dist/preview-engine/{chunk-M2GRYRLM.mjs → chunk-HPIULG7P.mjs} +1 -1
- package/dist/preview-engine/{chunk-G3HW4VER.mjs → chunk-HRIKNYPF.mjs} +1 -1
- package/dist/preview-engine/{chunk-G76HSKOS.mjs → chunk-IGFT3XLN.mjs} +1 -1
- package/dist/preview-engine/{chunk-NWRSVVTF.mjs → chunk-JQ4WY6BZ.mjs} +1 -1
- package/dist/preview-engine/chunk-KNZU3Z2F.mjs +3 -0
- package/dist/preview-engine/{chunk-JWNHTRED.mjs → chunk-LIHUEYI5.mjs} +2 -2
- package/dist/preview-engine/{chunk-DPPH3NK2.mjs → chunk-NRHSNPZV.mjs} +1 -1
- package/dist/preview-engine/{chunk-BUIQ5TUH.mjs → chunk-OWOSYNMF.mjs} +1 -1
- package/dist/preview-engine/chunk-OZVCWK27.mjs +418 -0
- package/dist/preview-engine/{chunk-D5PHI6ET.mjs → chunk-PO4VAAQC.mjs} +1 -1
- package/dist/preview-engine/{chunk-LP3EP33S.mjs → chunk-POPVFC5P.mjs} +1 -1
- package/dist/preview-engine/chunk-PQD5UPHG.mjs +5 -0
- package/dist/preview-engine/{chunk-SA3JUR6D.mjs → chunk-QGBSLNFI.mjs} +1 -1
- package/dist/preview-engine/{chunk-H2F5NVQ6.mjs → chunk-QM3XFEJN.mjs} +1 -1
- package/dist/preview-engine/{chunk-L62MRHGZ.mjs → chunk-R3ZH7YF3.mjs} +1 -1
- package/dist/preview-engine/{chunk-V7ZVVUQU.mjs → chunk-R6YNSBKL.mjs} +1 -1
- package/dist/preview-engine/{chunk-GYG2IIBR.mjs → chunk-RJJRPL42.mjs} +1 -1
- package/dist/preview-engine/chunk-S3P3MJYU.mjs +1 -0
- package/dist/preview-engine/chunk-SUUUYXXT.mjs +1 -0
- package/dist/preview-engine/{chunk-55CCFPUX.mjs → chunk-TNZENER3.mjs} +1 -1
- package/dist/preview-engine/chunk-V6VU46ZG.mjs +52 -0
- package/dist/preview-engine/{chunk-5XDHHOF2.mjs → chunk-XCYFPA34.mjs} +1 -1
- package/dist/preview-engine/{chunk-EHIIT4ZR.mjs → chunk-XFYXT76H.mjs} +1 -1
- package/dist/preview-engine/{chunk-V3H7WWOT.mjs → chunk-XLFYM7KH.mjs} +2 -2
- package/dist/preview-engine/{chunk-D7MZHP2Y.mjs → chunk-XSMK5E2V.mjs} +1 -1
- package/dist/preview-engine/{chunk-5UP7FSGT.mjs → chunk-Y6FEU4TV.mjs} +1 -1
- package/dist/preview-engine/{chunk-HXMDPMLB.mjs → chunk-YG35X5R5.mjs} +1 -1
- package/dist/preview-engine/{chunk-KZOLCZIV.mjs → chunk-YITWSOG4.mjs} +1 -1
- package/dist/preview-engine/{chunk-4BEJJKEU.mjs → chunk-YK4XHUP4.mjs} +7 -7
- package/dist/preview-engine/chunk-ZNGOAGAI.mjs +1 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +95 -87
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +1 -0
- package/dist/preview-engine/renderers-47UITXLZ.mjs +1 -0
- package/dist/preview-engine/renderers-4AHH6BHF.mjs +1 -0
- package/dist/preview-engine/renderers-54AQK6RF.mjs +1 -0
- package/dist/preview-engine/renderers-6PRVCTYV.mjs +1 -0
- package/dist/preview-engine/{renderers-GUKQUMGG.mjs → renderers-B52QT6MT.mjs} +1 -1
- package/dist/preview-engine/{renderers-AGMH5CRH.mjs → renderers-BE6RVJSE.mjs} +1 -1
- package/dist/preview-engine/renderers-BMM2BH56.mjs +1 -0
- package/dist/preview-engine/{renderers-YWRP23SZ.mjs → renderers-CAUWP4XH.mjs} +2 -2
- package/dist/preview-engine/renderers-CHJWUJVI.mjs +1 -0
- package/dist/preview-engine/renderers-CHOGQHVQ.mjs +1 -0
- package/dist/preview-engine/renderers-DEYDSGJX.mjs +1 -0
- package/dist/preview-engine/renderers-DZTNRCR7.mjs +1 -0
- package/dist/preview-engine/{renderers-BHVPLYNN.mjs → renderers-E3JYRLSD.mjs} +1 -1
- package/dist/preview-engine/renderers-ELO3KWTK.mjs +1 -0
- package/dist/preview-engine/{renderers-YKUQUCTO.mjs → renderers-F2KJNDWA.mjs} +1 -1
- package/dist/preview-engine/renderers-FCV4COVB.mjs +1 -0
- package/dist/preview-engine/{renderers-F2NFJI5L.mjs → renderers-GC7EGB5Z.mjs} +1 -1
- package/dist/preview-engine/renderers-GXCRINGC.mjs +1 -0
- package/dist/preview-engine/renderers-GYJTBVV2.mjs +1 -0
- package/dist/preview-engine/renderers-JA4SLMG3.mjs +1 -0
- package/dist/preview-engine/renderers-JLN77CFZ.mjs +1 -0
- package/dist/preview-engine/{renderers-6BJA6MSU.mjs → renderers-JQHUBWLL.mjs} +1 -1
- package/dist/preview-engine/{renderers-LX654SZ3.mjs → renderers-KBFW7B5F.mjs} +1 -1
- package/dist/preview-engine/{renderers-LK3NRMGR.mjs → renderers-KCP4TFHG.mjs} +1 -1
- package/dist/preview-engine/renderers-KS4HPV6Q.mjs +1 -0
- package/dist/preview-engine/renderers-LJRJMFCR.mjs +1 -0
- package/dist/preview-engine/renderers-LPAPZ5QS.mjs +1 -0
- package/dist/preview-engine/renderers-N5UPJY73.mjs +1 -0
- package/dist/preview-engine/renderers-NS3AIJVG.mjs +1 -0
- package/dist/preview-engine/renderers-OBMTU3QY.mjs +1 -0
- package/dist/preview-engine/{renderers-ZPWOUWZJ.mjs → renderers-PW4OJWHF.mjs} +1 -1
- package/dist/preview-engine/renderers-PXGLEFZO.mjs +1 -0
- package/dist/preview-engine/{renderers-7AO5746S.mjs → renderers-Q2ZDD5K2.mjs} +1 -1
- package/dist/preview-engine/renderers-Q3MD34JN.mjs +1 -0
- package/dist/preview-engine/renderers-QECJP22T.mjs +1 -0
- package/dist/preview-engine/{renderers-R3XEYD5V.mjs → renderers-R5WSHETG.mjs} +4 -4
- package/dist/preview-engine/renderers-RXGNA2Q7.mjs +1 -0
- package/dist/preview-engine/renderers-TG62LZTF.mjs +1 -0
- package/dist/preview-engine/{renderers-AHSGP6LY.mjs → renderers-TUYQLKHJ.mjs} +1 -1
- package/dist/preview-engine/renderers-VTTGFO55.mjs +1 -0
- package/dist/preview-engine/{renderers-UTFXZE3G.mjs → renderers-WG7QBD4D.mjs} +1 -1
- package/dist/preview-engine/{renderers-VGU3LNLT.mjs → renderers-WLH4HRUE.mjs} +1 -1
- package/dist/preview-engine/{renderers-5QYK6766.mjs → renderers-WSMLLSWX.mjs} +1 -1
- package/dist/preview-engine/renderers-XFC6ZPO5.mjs +1 -0
- package/dist/preview-engine/{renderers-UWPH7HBH.mjs → renderers-XUHRY3XH.mjs} +1 -1
- package/dist/preview-engine/renderers-YAOB5XU6.mjs +1 -0
- package/dist/preview-engine/renderers-YTB4FOHT.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Cjva0Nw2.mjs → program-DPFDbeL9.mjs} +12 -7
- package/dist/{program-Cjva0Nw2.mjs.map → program-DPFDbeL9.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-DG3VnR50.mjs → renderer--akPySto.mjs} +2 -2
- package/dist/{renderer-DG3VnR50.mjs.map → renderer--akPySto.mjs.map} +1 -1
- package/dist/{renderer-B8ugHLDi.mjs → renderer-0ty5QtXg.mjs} +9 -8
- package/dist/renderer-0ty5QtXg.mjs.map +1 -0
- package/dist/renderer-145WIXyW.mjs +3 -0
- package/dist/{renderer-DjYRCzzV.mjs → renderer-7v-ZNKEJ.mjs} +2 -2
- package/dist/{renderer-DjYRCzzV.mjs.map → renderer-7v-ZNKEJ.mjs.map} +1 -1
- package/dist/renderer-9W8q4Y8D.mjs +3 -0
- package/dist/{renderer-8dDNjgzG.mjs → renderer-B1IXTeF2.mjs} +2 -2
- package/dist/{renderer-8dDNjgzG.mjs.map → renderer-B1IXTeF2.mjs.map} +1 -1
- package/dist/{renderer-CBdqOoTN.mjs → renderer-B52Y2SDC.mjs} +1 -1
- package/dist/renderer-B5HBViEG.mjs +3 -0
- package/dist/renderer-B7naoaVH.mjs +3 -0
- package/dist/{renderer-z6Qb5Z-W.mjs → renderer-BD6Jkc8j.mjs} +2 -2
- package/dist/{renderer-z6Qb5Z-W.mjs.map → renderer-BD6Jkc8j.mjs.map} +1 -1
- package/dist/renderer-BHYmRBem.mjs +3 -0
- package/dist/{renderer-Daa-Af8y.mjs → renderer-BHsEOp1I.mjs} +2 -2
- package/dist/{renderer-Daa-Af8y.mjs.map → renderer-BHsEOp1I.mjs.map} +1 -1
- package/dist/renderer-BL51bhvQ.mjs +3 -0
- package/dist/{renderer-9ZcinEHr.mjs → renderer-BNBh4omF.mjs} +2 -2
- package/dist/{renderer-9ZcinEHr.mjs.map → renderer-BNBh4omF.mjs.map} +1 -1
- package/dist/{renderer-Bmt3fpzg.mjs → renderer-BShK_xMJ.mjs} +1 -1
- package/dist/{renderer-aH8p3zLE.mjs → renderer-BUJ6uaJE.mjs} +3 -3
- package/dist/{renderer-aH8p3zLE.mjs.map → renderer-BUJ6uaJE.mjs.map} +1 -1
- package/dist/{renderer-BXDrwZNT.mjs → renderer-BV_d3D_3.mjs} +3 -3
- package/dist/{renderer-BXDrwZNT.mjs.map → renderer-BV_d3D_3.mjs.map} +1 -1
- package/dist/{renderer-B5Tq5MWB.mjs → renderer-BXWu8aHU.mjs} +3 -3
- package/dist/{renderer-B5Tq5MWB.mjs.map → renderer-BXWu8aHU.mjs.map} +1 -1
- package/dist/{renderer-DDp7_TUi.d.mts → renderer-Bal8734U.d.mts} +2 -2
- package/dist/{renderer-DDp7_TUi.d.mts.map → renderer-Bal8734U.d.mts.map} +1 -1
- package/dist/{renderer-BwE5dnyL.mjs → renderer-BbwOEawB.mjs} +2 -2
- package/dist/{renderer-BwE5dnyL.mjs.map → renderer-BbwOEawB.mjs.map} +1 -1
- package/dist/renderer-BfvBHHNr.mjs +3 -0
- package/dist/{renderer-BcckaXum.mjs → renderer-BgrDGRNW.mjs} +2 -2
- package/dist/{renderer-BcckaXum.mjs.map → renderer-BgrDGRNW.mjs.map} +1 -1
- package/dist/{renderer-CkLD7Lp7.mjs → renderer-BhfFVqCx.mjs} +2 -2
- package/dist/{renderer-CkLD7Lp7.mjs.map → renderer-BhfFVqCx.mjs.map} +1 -1
- package/dist/{renderer-Y7-Us00q.mjs → renderer-Bl9C9lIo.mjs} +1 -1
- package/dist/{renderer-CuppzplW.mjs → renderer-BpTwFaja.mjs} +3 -3
- package/dist/{renderer-CuppzplW.mjs.map → renderer-BpTwFaja.mjs.map} +1 -1
- package/dist/{renderer-BBweieq9.mjs → renderer-Bpf8EGY1.mjs} +2 -2
- package/dist/{renderer-BBweieq9.mjs.map → renderer-Bpf8EGY1.mjs.map} +1 -1
- package/dist/renderer-ByxrzTRg.mjs +3 -0
- package/dist/{renderer-1ccLpvz3.mjs → renderer-C-F91lPu.mjs} +2 -2
- package/dist/{renderer-1ccLpvz3.mjs.map → renderer-C-F91lPu.mjs.map} +1 -1
- package/dist/{renderer-CeF66MG3.mjs → renderer-C5lJvf-h.mjs} +2 -2
- package/dist/{renderer-CeF66MG3.mjs.map → renderer-C5lJvf-h.mjs.map} +1 -1
- package/dist/renderer-CDirzReW.mjs +3 -0
- package/dist/renderer-CGCmbeJ2.mjs +3 -0
- package/dist/renderer-CL3evUmF.mjs +3 -0
- package/dist/{renderer-NYcVjCOi.mjs → renderer-CLUPc9do.mjs} +3 -3
- package/dist/{renderer-NYcVjCOi.mjs.map → renderer-CLUPc9do.mjs.map} +1 -1
- package/dist/{renderer-B6YiOv7l.mjs → renderer-CLWAbaCS.mjs} +9 -8
- package/dist/renderer-CLWAbaCS.mjs.map +1 -0
- package/dist/{renderer-DWvg6ZKK.mjs → renderer-CM5c8a7B.mjs} +8 -7
- package/dist/renderer-CM5c8a7B.mjs.map +1 -0
- package/dist/renderer-CO0KsnEg.mjs +3 -0
- package/dist/renderer-COO44HDO.mjs +3 -0
- package/dist/renderer-C_9SIgZX.mjs +3 -0
- package/dist/{renderer-B0DTz9Fr.mjs → renderer-Cgy1H0Ql.mjs} +2 -2
- package/dist/{renderer-B0DTz9Fr.mjs.map → renderer-Cgy1H0Ql.mjs.map} +1 -1
- package/dist/{renderer-D9lcIxrz.mjs → renderer-CmMNU1-P.mjs} +9 -9
- package/dist/renderer-CmMNU1-P.mjs.map +1 -0
- package/dist/{renderer-VHpQTPbr.mjs → renderer-Cn-p1SyO.mjs} +34 -18
- package/dist/renderer-Cn-p1SyO.mjs.map +1 -0
- package/dist/renderer-CntaTaNq.mjs +3 -0
- package/dist/{renderer-BusX07ZE.mjs → renderer-CsE9ztUa.mjs} +3 -3
- package/dist/{renderer-BusX07ZE.mjs.map → renderer-CsE9ztUa.mjs.map} +1 -1
- package/dist/renderer-CtVkU_GA.mjs.map +1 -1
- package/dist/renderer-Cv9JLpL6.mjs +3 -0
- package/dist/{renderer-x2s9LmVL.mjs → renderer-D-4Yh-RK.mjs} +2 -2
- package/dist/{renderer-x2s9LmVL.mjs.map → renderer-D-4Yh-RK.mjs.map} +1 -1
- package/dist/renderer-D0FWIsWn.mjs +3 -0
- package/dist/{renderer-CxE-8m71.mjs → renderer-D3FsnptO.mjs} +1 -1
- package/dist/renderer-D3jUYUDU.mjs +3 -0
- package/dist/renderer-D5Je-AeQ.mjs +3 -0
- package/dist/{renderer-DQQnEcSA.mjs → renderer-DJPuwTbS.mjs} +10 -8
- package/dist/renderer-DJPuwTbS.mjs.map +1 -0
- package/dist/{renderer-vnHsTpQf.mjs → renderer-DM79djHG.mjs} +58 -88
- package/dist/{renderer-vnHsTpQf.mjs.map → renderer-DM79djHG.mjs.map} +1 -1
- package/dist/renderer-DNPwpmYS.mjs +3 -0
- package/dist/{renderer-Bh1pfpzz.mjs → renderer-DRf4FLSq.mjs} +10 -9
- package/dist/renderer-DRf4FLSq.mjs.map +1 -0
- package/dist/{renderer-CcDfRa1o.mjs → renderer-DVj8jfmO.mjs} +9 -8
- package/dist/renderer-DVj8jfmO.mjs.map +1 -0
- package/dist/renderer-DawVsNLw.mjs +3 -0
- package/dist/renderer-Dl_6Kn87.mjs +3 -0
- package/dist/renderer-DlrJSfaw.mjs +3 -0
- package/dist/{renderer-Dm0r9IBd.mjs → renderer-DnXQXk-8.mjs} +2 -2
- package/dist/{renderer-Dm0r9IBd.mjs.map → renderer-DnXQXk-8.mjs.map} +1 -1
- package/dist/{renderer-s_HENMCc.mjs → renderer-Dntxca07.mjs} +2 -2
- package/dist/{renderer-s_HENMCc.mjs.map → renderer-Dntxca07.mjs.map} +1 -1
- package/dist/renderer-DpScOWGG.mjs +4 -0
- package/dist/{renderer-CXO4wWOT.mjs → renderer-DvHpzsUV.mjs} +2 -2
- package/dist/{renderer-CXO4wWOT.mjs.map → renderer-DvHpzsUV.mjs.map} +1 -1
- package/dist/renderer-DxYOA1MM.mjs +3 -0
- package/dist/{renderer-BgAzIw8w.mjs → renderer-E5D4H5dK.mjs} +3 -3
- package/dist/{renderer-BgAzIw8w.mjs.map → renderer-E5D4H5dK.mjs.map} +1 -1
- package/dist/{renderer-DFA0KBdj.mjs → renderer-L72D1mwv.mjs} +3 -3
- package/dist/{renderer-DFA0KBdj.mjs.map → renderer-L72D1mwv.mjs.map} +1 -1
- package/dist/renderer-S7jOr_jF.mjs +3 -0
- package/dist/{renderer-BQgAn_oc.mjs → renderer-XRGwrdg8.mjs} +5 -5
- package/dist/renderer-XRGwrdg8.mjs.map +1 -0
- package/dist/{renderer-DVSagfD4.mjs → renderer-doPt4zQZ.mjs} +2 -2
- package/dist/{renderer-DVSagfD4.mjs.map → renderer-doPt4zQZ.mjs.map} +1 -1
- package/dist/{renderer-Dm08-hAU.mjs → renderer-h-HOoLwD.mjs} +2 -2
- package/dist/{renderer-Dm08-hAU.mjs.map → renderer-h-HOoLwD.mjs.map} +1 -1
- package/dist/renderer-kN2TeWks.mjs +3 -0
- package/dist/{renderers-BWg16W-V-FofeEqQL.mjs → renderers-CP8CFWDs-CAs5DgWj.mjs} +16 -13
- package/dist/renderers-CP8CFWDs-CAs5DgWj.mjs.map +1 -0
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-BwbdO3AN.mjs → signals-CsxqD2AA.mjs} +3 -3
- package/dist/{signals-BwbdO3AN.mjs.map → signals-CsxqD2AA.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/dist-Bx6J0VcM.mjs.map +0 -1
- package/dist/dist-CGIme1vZ.mjs.map +0 -1
- package/dist/dist-DKm2IyEJ.mjs.map +0 -1
- package/dist/dist-DuIv211_.mjs.map +0 -1
- package/dist/effects-B_APkGJJ.mjs +0 -811
- package/dist/effects-B_APkGJJ.mjs.map +0 -1
- package/dist/fonts-CwwIhe1o.mjs.map +0 -1
- package/dist/index-BMVVmc4G.d.mts.map +0 -1
- package/dist/index-CnAk1hTw.d.mts.map +0 -1
- package/dist/index-D2jDC7O5.d.mts.map +0 -1
- package/dist/index-DiSKzDGR.d.mts.map +0 -1
- package/dist/preview-D7TqF9i_.mjs.map +0 -1
- package/dist/preview-engine/chunk-47VT677S.mjs +0 -8
- package/dist/preview-engine/chunk-4Q7JG6WJ.mjs +0 -1
- package/dist/preview-engine/chunk-CVGM2U4J.mjs +0 -47
- package/dist/preview-engine/chunk-N4PWLBZ7.mjs +0 -5
- package/dist/preview-engine/chunk-P3HBP725.mjs +0 -1
- package/dist/preview-engine/chunk-PCB2VB5K.mjs +0 -98
- package/dist/preview-engine/chunk-QARN3FLA.mjs +0 -418
- package/dist/preview-engine/chunk-SZ7YRPKO.mjs +0 -3
- package/dist/preview-engine/chunk-TMRLZV5X.mjs +0 -1
- package/dist/preview-engine/chunk-XD4GKD6H.mjs +0 -5
- package/dist/preview-engine/chunk-YSTLMWCG.mjs +0 -1
- package/dist/preview-engine/renderers-2AUSIYZN.mjs +0 -1
- package/dist/preview-engine/renderers-2QN6KZJP.mjs +0 -1
- package/dist/preview-engine/renderers-32SKW7ML.mjs +0 -1
- package/dist/preview-engine/renderers-6QAF3LQ2.mjs +0 -1
- package/dist/preview-engine/renderers-76MPTVZK.mjs +0 -1
- package/dist/preview-engine/renderers-AFYKNM6N.mjs +0 -1
- package/dist/preview-engine/renderers-ASTBICLA.mjs +0 -1
- package/dist/preview-engine/renderers-D7PVQFVU.mjs +0 -1
- package/dist/preview-engine/renderers-DB4ABTNA.mjs +0 -1
- package/dist/preview-engine/renderers-FI7YHNLY.mjs +0 -1
- package/dist/preview-engine/renderers-GBHULMPH.mjs +0 -1
- package/dist/preview-engine/renderers-HGT7QDY3.mjs +0 -1
- package/dist/preview-engine/renderers-HOYLA7ZK.mjs +0 -1
- package/dist/preview-engine/renderers-KKI2D3MZ.mjs +0 -1
- package/dist/preview-engine/renderers-KRAJNV4E.mjs +0 -1
- package/dist/preview-engine/renderers-KUGZKSVE.mjs +0 -1
- package/dist/preview-engine/renderers-L2EQQIOC.mjs +0 -1
- package/dist/preview-engine/renderers-MCFQFYEL.mjs +0 -1
- package/dist/preview-engine/renderers-OEVXCGE2.mjs +0 -1
- package/dist/preview-engine/renderers-QVD6C4CS.mjs +0 -1
- package/dist/preview-engine/renderers-RBFWJWVM.mjs +0 -1
- package/dist/preview-engine/renderers-RX3VLVLO.mjs +0 -1
- package/dist/preview-engine/renderers-SM6JP64K.mjs +0 -1
- package/dist/preview-engine/renderers-TKMAATVS.mjs +0 -1
- package/dist/preview-engine/renderers-UZGECFVO.mjs +0 -1
- package/dist/preview-engine/renderers-WJUTT5BB.mjs +0 -1
- package/dist/preview-engine/renderers-XA2M4YXK.mjs +0 -1
- package/dist/preview-engine/renderers-XIHRFEFQ.mjs +0 -1
- package/dist/preview-engine/renderers-XJTA5MFG.mjs +0 -1
- package/dist/preview-engine/renderers-XLTY5APF.mjs +0 -1
- package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +0 -1
- package/dist/renderer-0kXgErRZ.mjs +0 -3
- package/dist/renderer-B6YiOv7l.mjs.map +0 -1
- package/dist/renderer-B8ugHLDi.mjs.map +0 -1
- package/dist/renderer-B9e4XyZy.mjs +0 -3
- package/dist/renderer-BBhCaxS2.mjs +0 -3
- package/dist/renderer-BC0iMueW.mjs +0 -3
- package/dist/renderer-BGd1VV9J.mjs +0 -3
- package/dist/renderer-BJKbasW6.mjs +0 -3
- package/dist/renderer-BQgAn_oc.mjs.map +0 -1
- package/dist/renderer-BV3mlZMX.mjs +0 -3
- package/dist/renderer-BgO4XWZz.mjs +0 -3
- package/dist/renderer-Bh1pfpzz.mjs.map +0 -1
- package/dist/renderer-Bk842iGl.mjs +0 -4
- package/dist/renderer-Bn7jX6n3.mjs +0 -3
- package/dist/renderer-CPKOjnkT.mjs +0 -3
- package/dist/renderer-CSgVUPHu.mjs +0 -3
- package/dist/renderer-CUr66blo.mjs +0 -3
- package/dist/renderer-CYC-j_8W.mjs +0 -3
- package/dist/renderer-CcDfRa1o.mjs.map +0 -1
- package/dist/renderer-Cy7k7eN9.mjs +0 -3
- package/dist/renderer-D3poaM-T.mjs +0 -3
- package/dist/renderer-D69vFGNB.mjs +0 -3
- package/dist/renderer-D9lcIxrz.mjs.map +0 -1
- package/dist/renderer-DPSsf8-t.mjs +0 -3
- package/dist/renderer-DQQnEcSA.mjs.map +0 -1
- package/dist/renderer-DWvg6ZKK.mjs.map +0 -1
- package/dist/renderer-DiXzb5FQ.mjs +0 -3
- package/dist/renderer-DkKjy-Q0.mjs +0 -3
- package/dist/renderer-DlxCfGuA.mjs +0 -3
- package/dist/renderer-DnUe5mD1.mjs +0 -3
- package/dist/renderer-DwtLqidh.mjs +0 -3
- package/dist/renderer-VHpQTPbr.mjs.map +0 -1
- package/dist/renderer-WaLyCr37.mjs +0 -3
- package/dist/renderer-rrz9Fhwo.mjs +0 -3
- package/dist/renderer-ssnm_dWv.mjs +0 -3
- package/dist/renderer-xc9wkiC7.mjs +0 -3
- package/dist/renderers-BWg16W-V-FofeEqQL.mjs.map +0 -1
- /package/dist/preview-engine/{chunk-VJGK7MLJ.mjs → chunk-CBM7B7EW.mjs} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Ot as isSignal } from "./dist-B9Afsv83.mjs";
|
|
1
2
|
import { ALL_FORMATS, AudioBufferSink, CanvasSink, FilePathSource, Input, UrlSource, VideoSampleSink } from "mediabunny";
|
|
2
3
|
import * as fontkit from "fontkit";
|
|
3
4
|
import { decompressFrames, parseGIF } from "gifuct-js";
|
|
@@ -3276,6 +3277,44 @@ var WebGPUAudioProcessor = class WebGPUAudioProcessor$1 {
|
|
|
3276
3277
|
makeupGainModulation
|
|
3277
3278
|
});
|
|
3278
3279
|
const hasBinding = (idx) => (/* @__PURE__ */ new RegExp(`@binding\\s*\\(\\s*${idx}\\s*\\)`)).test(fullShaderCode);
|
|
3280
|
+
const createdBuffers = [];
|
|
3281
|
+
if (isStatic && paramOrder && paramOrder.length > 0) for (const p of paramOrder) {
|
|
3282
|
+
if (signalBufferMap.has(p)) continue;
|
|
3283
|
+
const directVal = op?.[p] ?? (op?.signals)?.[p];
|
|
3284
|
+
if (isSignal(directVal)) {
|
|
3285
|
+
const signalData = new Float32Array(numSamples);
|
|
3286
|
+
const durationSec = durationSeconds > 0 ? durationSeconds : numSamples / _sampleRate;
|
|
3287
|
+
for (let s = 0; s < numSamples; s++) {
|
|
3288
|
+
const t = elapsedSeconds + s / _sampleRate;
|
|
3289
|
+
const f = t * fps;
|
|
3290
|
+
const progress = durationSec > 0 ? t / durationSec : 0;
|
|
3291
|
+
signalData[s] = Number(directVal.get({
|
|
3292
|
+
frame: f,
|
|
3293
|
+
fps,
|
|
3294
|
+
time: t,
|
|
3295
|
+
duration: durationSec * fps,
|
|
3296
|
+
durationMs: durationSec * 1e3,
|
|
3297
|
+
progress,
|
|
3298
|
+
deltaTime: 1 / _sampleRate
|
|
3299
|
+
})) || 0;
|
|
3300
|
+
}
|
|
3301
|
+
const buf = device.createBuffer({
|
|
3302
|
+
size: Math.max(16, Math.ceil(signalData.byteLength / 16) * 16),
|
|
3303
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
3304
|
+
mappedAtCreation: true,
|
|
3305
|
+
label: `audio_direct_signal_${nodeId}_${p}`
|
|
3306
|
+
});
|
|
3307
|
+
new Float32Array(buf.getMappedRange()).set(signalData);
|
|
3308
|
+
buf.unmap();
|
|
3309
|
+
signalBufferMap.set(p, buf);
|
|
3310
|
+
createdBuffers.push(buf);
|
|
3311
|
+
activeBindings.push({
|
|
3312
|
+
parameterName: p,
|
|
3313
|
+
signalNodeId: `direct_${p}`,
|
|
3314
|
+
signalFnName: "direct_sig"
|
|
3315
|
+
});
|
|
3316
|
+
}
|
|
3317
|
+
}
|
|
3279
3318
|
if (isStatic) {
|
|
3280
3319
|
if (paramOrder && paramOrder.length > 0) for (let i = 0; i < paramOrder.length; i++) {
|
|
3281
3320
|
const p = paramOrder[i];
|
|
@@ -3319,122 +3358,126 @@ var WebGPUAudioProcessor = class WebGPUAudioProcessor$1 {
|
|
|
3319
3358
|
deviceCache.set(cacheKey, cached$1);
|
|
3320
3359
|
} else if (stateUpdate) device.queue.writeBuffer(cached$1.stateBuffer, 0, stateUpdate);
|
|
3321
3360
|
const CHUNK_SIZE = 65536;
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
const freshOutput = device.createBuffer({
|
|
3342
|
-
size: allocChannels * allocSamples * 4,
|
|
3343
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
3344
|
-
label: `audio_output_temp_${nodeId}_chunk_${offset}`
|
|
3345
|
-
});
|
|
3346
|
-
const freshUniform = device.createBuffer({
|
|
3347
|
-
size: allocUniforms * 4,
|
|
3348
|
-
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
3349
|
-
label: `audio_uniforms_temp_${nodeId}_chunk_${offset}`
|
|
3350
|
-
});
|
|
3351
|
-
inputBuffer = freshInput;
|
|
3352
|
-
outputBuffer = freshOutput;
|
|
3353
|
-
uniformBuffer = freshUniform;
|
|
3354
|
-
cached$1.inputBuffer?.destroy();
|
|
3355
|
-
cached$1.outputBuffer?.destroy();
|
|
3356
|
-
cached$1.uniformBuffer?.destroy();
|
|
3357
|
-
cached$1.inputBuffer = freshInput;
|
|
3358
|
-
cached$1.outputBuffer = freshOutput;
|
|
3359
|
-
cached$1.uniformBuffer = freshUniform;
|
|
3360
|
-
cached$1.allocatedSamples = allocSamples;
|
|
3361
|
-
cached$1.allocatedChannels = allocChannels;
|
|
3362
|
-
cached$1.allocatedUniformsFloatCount = allocUniforms;
|
|
3363
|
-
}
|
|
3364
|
-
const stagingBuffer = device.createBuffer({
|
|
3365
|
-
size: numChannels * chunkSamples * 4,
|
|
3366
|
-
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
|
|
3367
|
-
label: `audio_staging_temp_${nodeId}_chunk_${offset}`
|
|
3368
|
-
});
|
|
3369
|
-
const entries = [
|
|
3370
|
-
{
|
|
3371
|
-
binding: 0,
|
|
3372
|
-
resource: { buffer: uniformBuffer }
|
|
3373
|
-
},
|
|
3374
|
-
{
|
|
3375
|
-
binding: 1,
|
|
3376
|
-
resource: { buffer: inputBuffer }
|
|
3377
|
-
},
|
|
3378
|
-
{
|
|
3379
|
-
binding: 2,
|
|
3380
|
-
resource: { buffer: outputBuffer }
|
|
3381
|
-
},
|
|
3382
|
-
{
|
|
3383
|
-
binding: 3,
|
|
3384
|
-
resource: { buffer: cached$1.stateBuffer }
|
|
3385
|
-
}
|
|
3386
|
-
];
|
|
3387
|
-
if (isStatic) for (let i = 0; i < signalBuffers.length; i++) {
|
|
3388
|
-
const bindingIndex = 4 + i;
|
|
3389
|
-
if (hasBinding(bindingIndex)) {
|
|
3390
|
-
const sigBuf = signalBuffers[i];
|
|
3391
|
-
if (sigBuf.size >= (offset + chunkSamples) * 4) entries.push({
|
|
3392
|
-
binding: bindingIndex,
|
|
3393
|
-
resource: {
|
|
3394
|
-
buffer: sigBuf,
|
|
3395
|
-
offset: offset * 4,
|
|
3396
|
-
size: chunkSamples * 4
|
|
3397
|
-
}
|
|
3361
|
+
try {
|
|
3362
|
+
for (let offset = 0; offset < numSamples; offset += CHUNK_SIZE) {
|
|
3363
|
+
const chunkSamples = Math.min(CHUNK_SIZE, numSamples - offset);
|
|
3364
|
+
const canReuse = cached$1.inputBuffer && cached$1.outputBuffer && cached$1.uniformBuffer && cached$1.allocatedSamples && cached$1.allocatedSamples >= chunkSamples && cached$1.allocatedChannels && cached$1.allocatedChannels >= numChannels && cached$1.allocatedUniformsFloatCount && cached$1.allocatedUniformsFloatCount >= uniformsFloatCount;
|
|
3365
|
+
let inputBuffer;
|
|
3366
|
+
let outputBuffer;
|
|
3367
|
+
let uniformBuffer;
|
|
3368
|
+
if (canReuse) {
|
|
3369
|
+
inputBuffer = cached$1.inputBuffer;
|
|
3370
|
+
outputBuffer = cached$1.outputBuffer;
|
|
3371
|
+
uniformBuffer = cached$1.uniformBuffer;
|
|
3372
|
+
} else {
|
|
3373
|
+
const allocSamples = Math.max(chunkSamples, CHUNK_SIZE);
|
|
3374
|
+
const allocChannels = numChannels;
|
|
3375
|
+
const allocUniforms = uniformsFloatCount;
|
|
3376
|
+
const freshInput = device.createBuffer({
|
|
3377
|
+
size: allocChannels * allocSamples * 4,
|
|
3378
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
3379
|
+
label: `audio_input_temp_${nodeId}_chunk_${offset}`
|
|
3398
3380
|
});
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3381
|
+
const freshOutput = device.createBuffer({
|
|
3382
|
+
size: allocChannels * allocSamples * 4,
|
|
3383
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
3384
|
+
label: `audio_output_temp_${nodeId}_chunk_${offset}`
|
|
3385
|
+
});
|
|
3386
|
+
const freshUniform = device.createBuffer({
|
|
3387
|
+
size: allocUniforms * 4,
|
|
3388
|
+
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
3389
|
+
label: `audio_uniforms_temp_${nodeId}_chunk_${offset}`
|
|
3406
3390
|
});
|
|
3391
|
+
inputBuffer = freshInput;
|
|
3392
|
+
outputBuffer = freshOutput;
|
|
3393
|
+
uniformBuffer = freshUniform;
|
|
3394
|
+
cached$1.inputBuffer?.destroy();
|
|
3395
|
+
cached$1.outputBuffer?.destroy();
|
|
3396
|
+
cached$1.uniformBuffer?.destroy();
|
|
3397
|
+
cached$1.inputBuffer = freshInput;
|
|
3398
|
+
cached$1.outputBuffer = freshOutput;
|
|
3399
|
+
cached$1.uniformBuffer = freshUniform;
|
|
3400
|
+
cached$1.allocatedSamples = allocSamples;
|
|
3401
|
+
cached$1.allocatedChannels = allocChannels;
|
|
3402
|
+
cached$1.allocatedUniformsFloatCount = allocUniforms;
|
|
3407
3403
|
}
|
|
3404
|
+
const stagingBuffer = device.createBuffer({
|
|
3405
|
+
size: numChannels * chunkSamples * 4,
|
|
3406
|
+
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
|
|
3407
|
+
label: `audio_staging_temp_${nodeId}_chunk_${offset}`
|
|
3408
|
+
});
|
|
3409
|
+
const entries = [
|
|
3410
|
+
{
|
|
3411
|
+
binding: 0,
|
|
3412
|
+
resource: { buffer: uniformBuffer }
|
|
3413
|
+
},
|
|
3414
|
+
{
|
|
3415
|
+
binding: 1,
|
|
3416
|
+
resource: { buffer: inputBuffer }
|
|
3417
|
+
},
|
|
3418
|
+
{
|
|
3419
|
+
binding: 2,
|
|
3420
|
+
resource: { buffer: outputBuffer }
|
|
3421
|
+
},
|
|
3422
|
+
{
|
|
3423
|
+
binding: 3,
|
|
3424
|
+
resource: { buffer: cached$1.stateBuffer }
|
|
3425
|
+
}
|
|
3426
|
+
];
|
|
3427
|
+
if (isStatic) for (let i = 0; i < signalBuffers.length; i++) {
|
|
3428
|
+
const bindingIndex = 4 + i;
|
|
3429
|
+
if (hasBinding(bindingIndex)) {
|
|
3430
|
+
const sigBuf = signalBuffers[i];
|
|
3431
|
+
if (sigBuf.size >= (offset + chunkSamples) * 4) entries.push({
|
|
3432
|
+
binding: bindingIndex,
|
|
3433
|
+
resource: {
|
|
3434
|
+
buffer: sigBuf,
|
|
3435
|
+
offset: offset * 4,
|
|
3436
|
+
size: chunkSamples * 4
|
|
3437
|
+
}
|
|
3438
|
+
});
|
|
3439
|
+
else entries.push({
|
|
3440
|
+
binding: bindingIndex,
|
|
3441
|
+
resource: {
|
|
3442
|
+
buffer: sigBuf,
|
|
3443
|
+
offset: 0,
|
|
3444
|
+
size: sigBuf.size
|
|
3445
|
+
}
|
|
3446
|
+
});
|
|
3447
|
+
}
|
|
3448
|
+
}
|
|
3449
|
+
const bindGroup = device.createBindGroup({
|
|
3450
|
+
layout: cached$1.pipeline.getBindGroupLayout(0),
|
|
3451
|
+
entries
|
|
3452
|
+
});
|
|
3453
|
+
const flatInput = new Float32Array(numChannels * chunkSamples);
|
|
3454
|
+
for (let c = 0; c < numChannels; c++) flatInput.set(channels[c].subarray(offset, offset + chunkSamples), c * chunkSamples);
|
|
3455
|
+
device.queue.writeBuffer(inputBuffer, 0, flatInput);
|
|
3456
|
+
const uniforms = getUniforms(frame / fps + offset / _sampleRate);
|
|
3457
|
+
let numSamplesIndex = -1;
|
|
3458
|
+
for (let i = uniforms.length - 2; i >= 0; i--) if (uniforms[i] === numSamples && uniforms[i + 1] === numChannels) {
|
|
3459
|
+
numSamplesIndex = i;
|
|
3460
|
+
break;
|
|
3461
|
+
}
|
|
3462
|
+
if (numSamplesIndex === -1) numSamplesIndex = uniforms.indexOf(numSamples);
|
|
3463
|
+
if (numSamplesIndex !== -1) uniforms[numSamplesIndex] = chunkSamples;
|
|
3464
|
+
device.queue.writeBuffer(uniformBuffer, 0, new Float32Array(uniforms));
|
|
3465
|
+
const commandEncoder = device.createCommandEncoder({ label: `audio_encoder_${nodeId}_chunk_${offset}` });
|
|
3466
|
+
const passEncoder = commandEncoder.beginComputePass({ label: `audio_pass_${nodeId}_chunk_${offset}` });
|
|
3467
|
+
passEncoder.setPipeline(cached$1.pipeline);
|
|
3468
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
3469
|
+
passEncoder.dispatchWorkgroups(1);
|
|
3470
|
+
passEncoder.end();
|
|
3471
|
+
commandEncoder.copyBufferToBuffer(outputBuffer, 0, stagingBuffer, 0, numChannels * chunkSamples * 4);
|
|
3472
|
+
device.queue.submit([commandEncoder.finish()]);
|
|
3473
|
+
await stagingBuffer.mapAsync(GPUMapMode.READ);
|
|
3474
|
+
const mappedRange = new Float32Array(stagingBuffer.getMappedRange());
|
|
3475
|
+
for (let c = 0; c < numChannels; c++) channels[c].set(mappedRange.subarray(c * chunkSamples, (c + 1) * chunkSamples), offset);
|
|
3476
|
+
stagingBuffer.unmap();
|
|
3477
|
+
await yieldToMain();
|
|
3408
3478
|
}
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
entries
|
|
3412
|
-
});
|
|
3413
|
-
const flatInput = new Float32Array(numChannels * chunkSamples);
|
|
3414
|
-
for (let c = 0; c < numChannels; c++) flatInput.set(channels[c].subarray(offset, offset + chunkSamples), c * chunkSamples);
|
|
3415
|
-
device.queue.writeBuffer(inputBuffer, 0, flatInput);
|
|
3416
|
-
const uniforms = getUniforms(frame / fps + offset / _sampleRate);
|
|
3417
|
-
let numSamplesIndex = -1;
|
|
3418
|
-
for (let i = uniforms.length - 2; i >= 0; i--) if (uniforms[i] === numSamples && uniforms[i + 1] === numChannels) {
|
|
3419
|
-
numSamplesIndex = i;
|
|
3420
|
-
break;
|
|
3421
|
-
}
|
|
3422
|
-
if (numSamplesIndex === -1) numSamplesIndex = uniforms.indexOf(numSamples);
|
|
3423
|
-
if (numSamplesIndex !== -1) uniforms[numSamplesIndex] = chunkSamples;
|
|
3424
|
-
device.queue.writeBuffer(uniformBuffer, 0, new Float32Array(uniforms));
|
|
3425
|
-
const commandEncoder = device.createCommandEncoder({ label: `audio_encoder_${nodeId}_chunk_${offset}` });
|
|
3426
|
-
const passEncoder = commandEncoder.beginComputePass({ label: `audio_pass_${nodeId}_chunk_${offset}` });
|
|
3427
|
-
passEncoder.setPipeline(cached$1.pipeline);
|
|
3428
|
-
passEncoder.setBindGroup(0, bindGroup);
|
|
3429
|
-
passEncoder.dispatchWorkgroups(1);
|
|
3430
|
-
passEncoder.end();
|
|
3431
|
-
commandEncoder.copyBufferToBuffer(outputBuffer, 0, stagingBuffer, 0, numChannels * chunkSamples * 4);
|
|
3432
|
-
device.queue.submit([commandEncoder.finish()]);
|
|
3433
|
-
await stagingBuffer.mapAsync(GPUMapMode.READ);
|
|
3434
|
-
const mappedRange = new Float32Array(stagingBuffer.getMappedRange());
|
|
3435
|
-
for (let c = 0; c < numChannels; c++) channels[c].set(mappedRange.subarray(c * chunkSamples, (c + 1) * chunkSamples), offset);
|
|
3436
|
-
stagingBuffer.unmap();
|
|
3437
|
-
await yieldToMain();
|
|
3479
|
+
} finally {
|
|
3480
|
+
for (const b of createdBuffers) b.destroy();
|
|
3438
3481
|
}
|
|
3439
3482
|
}
|
|
3440
3483
|
};
|
|
@@ -5343,11 +5386,34 @@ var SlugFontCache = class SlugFontCache$1 {
|
|
|
5343
5386
|
static cblcOffset = 0;
|
|
5344
5387
|
static cbdtOffset = 0;
|
|
5345
5388
|
/**
|
|
5389
|
+
* Sets the color emoji font text draws emoji with: a CBDT/CBLC bitmap font
|
|
5390
|
+
* such as Noto Color Emoji. framefields ships none, so without one emoji
|
|
5391
|
+
* draw nothing in exports (the browser preview falls back to the system's).
|
|
5392
|
+
*/
|
|
5393
|
+
static setEmojiFont(bytes, filePath) {
|
|
5394
|
+
SlugFontCache$1.parseTableDirectory(bytes);
|
|
5395
|
+
if (!SlugFontCache$1.cblcOffset || !SlugFontCache$1.cbdtOffset) {
|
|
5396
|
+
SlugFontCache$1.emojiFontBuffer = null;
|
|
5397
|
+
throw new Error(`Emoji font ${filePath ? `"${filePath}" ` : ""}has no CBDT/CBLC color bitmaps. Use a bitmap color emoji font such as Noto Color Emoji.`);
|
|
5398
|
+
}
|
|
5399
|
+
SlugFontCache$1.emojiFontPath = filePath ?? null;
|
|
5400
|
+
SlugFontCache$1.emojiFontLoadPromise = null;
|
|
5401
|
+
for (const tex of SlugFontCache$1.emojiTextureCache.values()) tex.destroy();
|
|
5402
|
+
SlugFontCache$1.emojiTextureCache.clear();
|
|
5403
|
+
}
|
|
5404
|
+
/** True once an emoji font is set or a path / URL to load one from is. */
|
|
5405
|
+
static hasEmojiFont() {
|
|
5406
|
+
return !!(SlugFontCache$1.emojiFontBuffer || SlugFontCache$1.emojiFontPath || SlugFontCache$1.emojiFontUrl);
|
|
5407
|
+
}
|
|
5408
|
+
/**
|
|
5346
5409
|
* Parse the SFNT table directory from a raw font buffer and cache
|
|
5347
5410
|
* the offsets for cmap, CBLC, and CBDT tables.
|
|
5348
5411
|
*/
|
|
5349
5412
|
static parseTableDirectory(uint8) {
|
|
5350
5413
|
SlugFontCache$1.emojiFontBuffer = uint8;
|
|
5414
|
+
SlugFontCache$1.cmapOffset = 0;
|
|
5415
|
+
SlugFontCache$1.cblcOffset = 0;
|
|
5416
|
+
SlugFontCache$1.cbdtOffset = 0;
|
|
5351
5417
|
const view = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);
|
|
5352
5418
|
const numTables = view.getUint16(4);
|
|
5353
5419
|
let offset = 12;
|
|
@@ -5474,16 +5540,18 @@ var SlugFontCache = class SlugFontCache$1 {
|
|
|
5474
5540
|
const key = `${char}-${fontSize}`;
|
|
5475
5541
|
let tex = SlugFontCache$1.emojiTextureCache.get(key);
|
|
5476
5542
|
if (tex) return tex;
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5543
|
+
const isNode = !!globalThis.__IS_HEADLESS_RENDERER__ || typeof window === "undefined" || typeof globalThis.document === "undefined";
|
|
5544
|
+
const codePoint = char.codePointAt(0);
|
|
5545
|
+
if (!codePoint) throw new Error("No codepoint");
|
|
5546
|
+
const resolutionScale = 4;
|
|
5547
|
+
const targetSize = Math.max(16, Math.ceil(fontSize * 1.5 * resolutionScale));
|
|
5548
|
+
const pngInfo = SlugFontCache$1.hasEmojiFont() ? await SlugFontCache$1.getEmojiPngBuffer(codePoint) : null;
|
|
5549
|
+
if (isNode) {
|
|
5550
|
+
if (!pngInfo) throw new Error(SlugFontCache$1.hasEmojiFont() ? `Emoji glyph not found in font for ${char}` : `No emoji font is set for ${char}; register one with FontManager.registerEmojiFont()`);
|
|
5482
5551
|
const sharp = (await import(
|
|
5483
5552
|
/* webpackIgnore: true */
|
|
5484
5553
|
"sharp"
|
|
5485
5554
|
)).default;
|
|
5486
|
-
const targetSize = Math.max(16, Math.ceil(fontSize * 1.5 * 4));
|
|
5487
5555
|
const { data, info } = await sharp(Buffer.from(pngInfo.buffer)).ensureAlpha().resize(targetSize, targetSize, {
|
|
5488
5556
|
fit: "contain",
|
|
5489
5557
|
background: {
|
|
@@ -5512,14 +5580,34 @@ var SlugFontCache = class SlugFontCache$1 {
|
|
|
5512
5580
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
|
|
5513
5581
|
});
|
|
5514
5582
|
device.queue.writeTexture({ texture: tex }, pixels, { bytesPerRow: info.width * 4 }, [info.width, info.height]);
|
|
5583
|
+
} else if (pngInfo) {
|
|
5584
|
+
const bitmap = await createImageBitmap(new Blob([pngInfo.buffer], { type: "image/png" }));
|
|
5585
|
+
const canvas = new OffscreenCanvas(targetSize, targetSize);
|
|
5586
|
+
const c2d = canvas.getContext("2d");
|
|
5587
|
+
if (c2d) {
|
|
5588
|
+
const fit = Math.min(targetSize / bitmap.width, targetSize / bitmap.height);
|
|
5589
|
+
const w = bitmap.width * fit;
|
|
5590
|
+
const h = bitmap.height * fit;
|
|
5591
|
+
c2d.imageSmoothingQuality = "high";
|
|
5592
|
+
c2d.drawImage(bitmap, (targetSize - w) / 2, (targetSize - h) / 2, w, h);
|
|
5593
|
+
}
|
|
5594
|
+
bitmap.close();
|
|
5595
|
+
tex = device.createTexture({
|
|
5596
|
+
label: `Emoji-${char}`,
|
|
5597
|
+
size: [targetSize, targetSize],
|
|
5598
|
+
format: "rgba8unorm",
|
|
5599
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
|
|
5600
|
+
});
|
|
5601
|
+
device.queue.copyExternalImageToTexture({ source: canvas }, {
|
|
5602
|
+
texture: tex,
|
|
5603
|
+
premultipliedAlpha: true
|
|
5604
|
+
}, [targetSize, targetSize]);
|
|
5515
5605
|
} else {
|
|
5516
|
-
const
|
|
5517
|
-
const emojiSize = Math.max(16, Math.ceil(fontSize * 1.5 * resolutionScale));
|
|
5518
|
-
const size = Math.ceil(emojiSize / 4) * 4;
|
|
5606
|
+
const size = Math.ceil(targetSize / 4) * 4;
|
|
5519
5607
|
const canvas = new OffscreenCanvas(size, size);
|
|
5520
5608
|
const c2d = canvas.getContext("2d");
|
|
5521
5609
|
if (c2d) {
|
|
5522
|
-
c2d.font = `${fontSize * resolutionScale}px "
|
|
5610
|
+
c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", sans-serif`;
|
|
5523
5611
|
c2d.textBaseline = "middle";
|
|
5524
5612
|
c2d.textAlign = "center";
|
|
5525
5613
|
c2d.fillText(char, size / 2, size / 2);
|
|
@@ -5766,13 +5854,13 @@ var SlugFontCache = class SlugFontCache$1 {
|
|
|
5766
5854
|
}
|
|
5767
5855
|
const arrayBuffer = await response.arrayBuffer();
|
|
5768
5856
|
SlugFontCache$1.parseTableDirectory(new Uint8Array(arrayBuffer));
|
|
5769
|
-
const loadedFace = await new FontFace("
|
|
5857
|
+
const loadedFace = await new FontFace("FramefieldsEmoji", arrayBuffer).load();
|
|
5770
5858
|
document.fonts.add(loadedFace);
|
|
5771
5859
|
await document.fonts.ready;
|
|
5772
5860
|
debugLog("[SlugFontCache] Emoji font preloaded and registered via Cache API.");
|
|
5773
5861
|
SlugFontCache$1.listeners.forEach((l) => {
|
|
5774
5862
|
try {
|
|
5775
|
-
l("
|
|
5863
|
+
l("FramefieldsEmoji");
|
|
5776
5864
|
} catch (e) {
|
|
5777
5865
|
console.error("[SlugFontCache] Error in listener:", e);
|
|
5778
5866
|
}
|
|
@@ -12307,7 +12395,7 @@ function getOrCreateEmojiTexture(device, char, fontSize) {
|
|
|
12307
12395
|
const canvas = new OffscreenCanvas(size, size);
|
|
12308
12396
|
const c2d = canvas.getContext("2d");
|
|
12309
12397
|
if (c2d) {
|
|
12310
|
-
c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji",
|
|
12398
|
+
c2d.font = `${fontSize * resolutionScale}px "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif`;
|
|
12311
12399
|
c2d.textBaseline = "middle";
|
|
12312
12400
|
c2d.textAlign = "center";
|
|
12313
12401
|
c2d.fillText(char, size / 2, size / 2);
|
|
@@ -27489,5 +27577,5 @@ var ScreenSpaceRelightPipeline = class {
|
|
|
27489
27577
|
};
|
|
27490
27578
|
|
|
27491
27579
|
//#endregion
|
|
27492
|
-
export { registerHeadlessFont as $, drawLottieNode as A, inputStore as B, WebGPUAudioProcessor as C, drawCaptionNode as D, colorMatrixWgsl as E, ensureDevice as F, lutStore as G, loadFBX as H, generateExtrudedTextGeometry as I, parseColor as J, measureMaxCaptionHeight as K, getHeadlessFontPath as L, drawSignalNode as M, drawSvgNode as N, drawGifNode as O, drawVideoNode as P, poseNodes as Q, getRenderer2D as R, Vector3Math as S, clearAllVideoCache as T, loadModel3D as U, jointMatrices as V, loadOBJ as W, parseMTL as X, parseFBX as Y, parseOBJ as Z, ShadowPipeline as _, Camera3D as a,
|
|
27493
|
-
//# sourceMappingURL=dist-
|
|
27580
|
+
export { registerHeadlessFont as $, drawLottieNode as A, inputStore as B, WebGPUAudioProcessor as C, drawCaptionNode as D, colorMatrixWgsl as E, ensureDevice as F, lutStore as G, loadFBX as H, generateExtrudedTextGeometry as I, parseColor as J, measureMaxCaptionHeight as K, getHeadlessFontPath as L, drawSignalNode as M, drawSvgNode as N, drawGifNode as O, drawVideoNode as P, poseNodes as Q, getRenderer2D as R, Vector3Math as S, clearAllVideoCache as T, loadModel3D as U, jointMatrices as V, loadOBJ as W, parseMTL as X, parseFBX as Y, parseOBJ as Z, ShadowPipeline as _, Camera3D as a, getEnv as at, SlugGeometry as b, Light3D as c, NodeSurfaceProvider as d, shaderStore as et, Path3D as f, ScreenSpaceRelightPipeline as g, SSAOPipeline as h, AudioSignalComputePipeline as i, GetFontAssetUrl as it, drawParagraphNode as j, drawImageNode as k, Matrix4Math as l, Renderer3D as m, AudioLatentTrackCache as n, srtLoader as nt, EffectPipeline as o, resolveMediaSourceUrl as ot, Renderer2D as p, mediaDecoderCache as q, AudioMeshDeformPipeline as r, textureCache as rt, GlassPipeline as s, AudioLatentEngine as t, signalRegistry as tt, MotionBlurPipeline as u, SignalRegistry as v, buildWGSLSignalFn as w, SlugPipeline as x, SlugFontCache as y, initHeadlessWebGPU as z };
|
|
27581
|
+
//# sourceMappingURL=dist-sHqWCB9M.mjs.map
|