framefields 2.0.8 → 2.0.10
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/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio--hi7MiZt.mjs → audio-B7Al-W_0.mjs} +3 -3
- package/dist/{audio--hi7MiZt.mjs.map → audio-B7Al-W_0.mjs.map} +1 -1
- package/dist/{audio-a6pY05g2.d.mts → audio-BxA0sL9z.d.mts} +3 -3
- package/dist/{audio-a6pY05g2.d.mts.map → audio-BxA0sL9z.d.mts.map} +1 -1
- package/dist/{client-C74hb7fy.mjs → client-CwRhflHE.mjs} +1 -1
- package/dist/{client-C74hb7fy.mjs.map → client-CwRhflHE.mjs.map} +1 -1
- package/dist/{dist-BQFap0wr.mjs → dist-B9PkqWnN.mjs} +78 -17
- package/dist/dist-B9PkqWnN.mjs.map +1 -0
- package/dist/{dist-ZVlYkuR4.mjs → dist-BFjSQP7i.mjs} +17 -8
- package/dist/dist-BFjSQP7i.mjs.map +1 -0
- package/dist/{dist-cjs-qEJrwjGk.mjs → dist-cjs--lfMLs3U.mjs} +4 -4
- package/dist/{dist-cjs-qEJrwjGk.mjs.map → dist-cjs--lfMLs3U.mjs.map} +1 -1
- package/dist/{dist-cjs-x5cwlqA5.mjs → dist-cjs--pxyGFw2.mjs} +1 -1
- package/dist/{dist-cjs-x5cwlqA5.mjs.map → dist-cjs--pxyGFw2.mjs.map} +1 -1
- package/dist/dist-cjs-3pon9kTt.mjs +6 -0
- package/dist/{dist-cjs-Dzs5P3K0.mjs → dist-cjs-BDpO-TH_.mjs} +1 -1
- package/dist/{dist-cjs-Dzs5P3K0.mjs.map → dist-cjs-BDpO-TH_.mjs.map} +1 -1
- package/dist/{dist-cjs-lYvO8aDo.mjs → dist-cjs-BiKQozdJ.mjs} +3 -3
- package/dist/{dist-cjs-lYvO8aDo.mjs.map → dist-cjs-BiKQozdJ.mjs.map} +1 -1
- package/dist/{dist-cjs-BUwe2XhR.mjs → dist-cjs-BmyyWYWv.mjs} +2 -2
- package/dist/{dist-cjs-BUwe2XhR.mjs.map → dist-cjs-BmyyWYWv.mjs.map} +1 -1
- package/dist/{dist-cjs-DgxjcvBN.mjs → dist-cjs-CND_ghfH.mjs} +1 -1
- package/dist/{dist-cjs-DgxjcvBN.mjs.map → dist-cjs-CND_ghfH.mjs.map} +1 -1
- package/dist/{dist-cjs-BWgoUCXJ.mjs → dist-cjs-CQwmMllY.mjs} +6 -6
- package/dist/{dist-cjs-BWgoUCXJ.mjs.map → dist-cjs-CQwmMllY.mjs.map} +1 -1
- package/dist/{dist-cjs-B5EVqDFp.mjs → dist-cjs-CgFzrgj8.mjs} +1 -1
- package/dist/{dist-cjs-B5EVqDFp.mjs.map → dist-cjs-CgFzrgj8.mjs.map} +1 -1
- package/dist/{dist-cjs-ECMuIF57.mjs → dist-cjs-CsU2sZoX.mjs} +4 -4
- package/dist/{dist-cjs-ECMuIF57.mjs.map → dist-cjs-CsU2sZoX.mjs.map} +1 -1
- package/dist/{dist-cjs-BKmGCgtm.mjs → dist-cjs-DJ8fcQEe.mjs} +11 -11
- package/dist/{dist-cjs-BKmGCgtm.mjs.map → dist-cjs-DJ8fcQEe.mjs.map} +1 -1
- package/dist/{dist-cjs-D7kEM-Mj.mjs → dist-cjs-DT2jJlcK.mjs} +5 -5
- package/dist/{dist-cjs-D7kEM-Mj.mjs.map → dist-cjs-DT2jJlcK.mjs.map} +1 -1
- package/dist/{dist-cjs-BUc0_kg-.mjs → dist-cjs-DjzmP0-x.mjs} +13 -13
- package/dist/{dist-cjs-BUc0_kg-.mjs.map → dist-cjs-DjzmP0-x.mjs.map} +1 -1
- package/dist/{dist-cjs-BGJkdexX.mjs → dist-cjs-DzjrlfbE.mjs} +14 -14
- package/dist/{dist-cjs-BGJkdexX.mjs.map → dist-cjs-DzjrlfbE.mjs.map} +1 -1
- package/dist/{dist-cjs-Df7144zM.mjs → dist-cjs-M-8QOgS_.mjs} +2 -2
- package/dist/{dist-cjs-Df7144zM.mjs.map → dist-cjs-M-8QOgS_.mjs.map} +1 -1
- package/dist/{dist-cjs-DFUmy89O.mjs → dist-cjs-TsA8LFXC.mjs} +3 -3
- package/dist/{dist-cjs-DFUmy89O.mjs.map → dist-cjs-TsA8LFXC.mjs.map} +1 -1
- package/dist/{dist-cjs-DsMdld8l.mjs → dist-cjs-agQl9T8M.mjs} +6 -6
- package/dist/{dist-cjs-DsMdld8l.mjs.map → dist-cjs-agQl9T8M.mjs.map} +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +27 -26
- package/dist/{effects-axfL_C3a.mjs → effects-CREopCyP.mjs} +27 -3
- package/dist/effects-CREopCyP.mjs.map +1 -0
- package/dist/{event-streams-D-APZ7Ke.mjs → event-streams-BaNGaLxh.mjs} +2 -2
- package/dist/{event-streams-D-APZ7Ke.mjs.map → event-streams-BaNGaLxh.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-Cy26mbrO.mjs → fonts-DhEQ5h6E.mjs} +2 -2
- package/dist/{fonts-Cy26mbrO.mjs.map → fonts-DhEQ5h6E.mjs.map} +1 -1
- package/dist/{index-BJUS4Nx6.d.mts → index-BXNNJVs8.d.mts} +2 -2
- package/dist/{index-BJUS4Nx6.d.mts.map → index-BXNNJVs8.d.mts.map} +1 -1
- package/dist/{index-CbzEM_o6.d.mts → index-CQcdKyxF.d.mts} +1 -1
- package/dist/{index-CbzEM_o6.d.mts.map → index-CQcdKyxF.d.mts.map} +1 -1
- package/dist/{index-BJx_Qxc_.d.mts → index-CvDVpaKn.d.mts} +69 -27
- package/dist/index-CvDVpaKn.d.mts.map +1 -0
- package/dist/{index-WIPHLy5m.d.mts → index-D1zaOwEU.d.mts} +1 -1
- package/dist/index-D1zaOwEU.d.mts.map +1 -0
- package/dist/{index-CZChQhXZ.d.mts → index-J9CIK_nu.d.mts} +4 -2
- package/dist/index-J9CIK_nu.d.mts.map +1 -0
- package/dist/{index-Bi2nRZ_g.d.mts → index-fo4E7A6C.d.mts} +3 -3
- package/dist/{index-Bi2nRZ_g.d.mts.map → index-fo4E7A6C.d.mts.map} +1 -1
- package/dist/{index-BLbUQolI.d.mts → index-oodg5k9K.d.mts} +3 -3
- package/dist/{index-BLbUQolI.d.mts.map → index-oodg5k9K.d.mts.map} +1 -1
- package/dist/index.d.mts +11 -10
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +43 -42
- package/dist/index.mjs.map +1 -1
- package/dist/{package-C58KmGKw.mjs → package-XpCRbTOA.mjs} +1 -1
- package/dist/{package-C58KmGKw.mjs.map → package-XpCRbTOA.mjs.map} +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +11 -11
- package/dist/{preview-BUPB38Kk.mjs → preview-9ifxywUM.mjs} +2 -2
- package/dist/{preview-BUPB38Kk.mjs.map → preview-9ifxywUM.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-3ROJ7JVY.mjs → chunk-25IW7NYO.mjs} +1 -1
- package/dist/preview-engine/chunk-36YGYLKD.mjs +58 -0
- package/dist/preview-engine/chunk-4VOHF3FF.mjs +1 -0
- package/dist/preview-engine/{chunk-TNZENER3.mjs → chunk-7DIAFPQP.mjs} +2 -2
- package/dist/preview-engine/{chunk-CXFEQ5PM.mjs → chunk-7O24H4YT.mjs} +2 -2
- package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
- package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-AG5JNZYQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-BE3CEVJB.mjs → chunk-AUFSM5KI.mjs} +2 -2
- package/dist/preview-engine/chunk-AW7HNZKR.mjs +98 -0
- package/dist/preview-engine/chunk-BHFI3Y4T.mjs +1 -0
- package/dist/preview-engine/chunk-DLXQDDIN.mjs +46 -0
- package/dist/preview-engine/chunk-EJGLUZMW.mjs +1 -0
- package/dist/preview-engine/{chunk-XSMK5E2V.mjs → chunk-JAOXXYXG.mjs} +2 -2
- package/dist/preview-engine/{chunk-PO4VAAQC.mjs → chunk-K52S5DJX.mjs} +1 -1
- package/dist/preview-engine/{chunk-IGFT3XLN.mjs → chunk-MDDF2GCF.mjs} +2 -2
- package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
- package/dist/preview-engine/{chunk-BUWK5RJ4.mjs → chunk-QTKJXDIW.mjs} +1 -1
- package/dist/preview-engine/{chunk-WQ7BFSKF.mjs → chunk-RNOO4UR5.mjs} +1 -1
- package/dist/preview-engine/{chunk-POPVFC5P.mjs → chunk-S4CSX6K5.mjs} +10 -10
- package/dist/preview-engine/chunk-SNYAHQ25.mjs +186 -0
- package/dist/preview-engine/{chunk-JNEVSC4I.mjs → chunk-T6CC2KCZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-MC7TZZLD.mjs → chunk-T6COGNOW.mjs} +2 -2
- package/dist/preview-engine/chunk-VVLM6LZ3.mjs +1 -0
- package/dist/preview-engine/chunk-XUM42I4R.mjs +1 -0
- package/dist/preview-engine/chunk-ZDCA6NVT.mjs +82 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +13 -13
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-Q2ZDD5K2.mjs → renderers-2US2NIUG.mjs} +2 -2
- package/dist/preview-engine/{renderers-54AQK6RF.mjs → renderers-32PIFHPS.mjs} +1 -1
- package/dist/preview-engine/{renderers-O6HOYIPS.mjs → renderers-76PQY2SO.mjs} +1 -1
- package/dist/preview-engine/renderers-7HNVXNAI.mjs +248 -0
- package/dist/preview-engine/{renderers-PXGLEFZO.mjs → renderers-CI2GXWLP.mjs} +1 -1
- package/dist/preview-engine/{renderers-GC7EGB5Z.mjs → renderers-CRKRWR2Y.mjs} +1 -1
- package/dist/preview-engine/{renderers-47UITXLZ.mjs → renderers-EE2GFG7J.mjs} +1 -1
- package/dist/preview-engine/{renderers-E3JYRLSD.mjs → renderers-GJSUN5HU.mjs} +1 -1
- package/dist/preview-engine/{renderers-KCP4TFHG.mjs → renderers-IHKORHMT.mjs} +1 -1
- package/dist/preview-engine/{renderers-OBMTU3QY.mjs → renderers-NQUDQEHY.mjs} +1 -1
- package/dist/preview-engine/{renderers-QECJP22T.mjs → renderers-NSY2SDIE.mjs} +1 -1
- package/dist/preview-engine/{renderers-KS4HPV6Q.mjs → renderers-PWLWOZY4.mjs} +1 -1
- package/dist/preview-engine/{renderers-TUYQLKHJ.mjs → renderers-W5CVDJVH.mjs} +1 -1
- package/dist/preview-engine/{renderers-N5UPJY73.mjs → renderers-WLLJFZTF.mjs} +1 -1
- package/dist/preview-engine/renderers-WN4SYFCU.mjs +1 -0
- package/dist/preview-engine/{renderers-TG62LZTF.mjs → renderers-XFBSGTHU.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Jt07Tx1J.mjs → program-xRfFoPxe.mjs} +2 -2
- package/dist/{program-Jt07Tx1J.mjs.map → program-xRfFoPxe.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-Bal8734U.d.mts → renderer-2NQWaZd7.d.mts} +2 -2
- package/dist/{renderer-Bal8734U.d.mts.map → renderer-2NQWaZd7.d.mts.map} +1 -1
- package/dist/{renderer-CIMjMFGm.mjs → renderer-5h0llpx7.mjs} +2 -2
- package/dist/{renderer-CIMjMFGm.mjs.map → renderer-5h0llpx7.mjs.map} +1 -1
- package/dist/{renderer-U0LJuM9D.mjs → renderer-6GeDT4Mx.mjs} +2 -2
- package/dist/{renderer-U0LJuM9D.mjs.map → renderer-6GeDT4Mx.mjs.map} +1 -1
- package/dist/{renderer-CIQYTiT9.mjs → renderer-8qpGxSSO.mjs} +2 -2
- package/dist/{renderer-CIQYTiT9.mjs.map → renderer-8qpGxSSO.mjs.map} +1 -1
- package/dist/{renderer-BkOXe6o6.mjs → renderer-9wp5R7PL.mjs} +2 -2
- package/dist/{renderer-BkOXe6o6.mjs.map → renderer-9wp5R7PL.mjs.map} +1 -1
- package/dist/renderer-B4F6wL68.mjs +3 -0
- package/dist/renderer-B4i1jmiT.mjs +3 -0
- package/dist/renderer-B5ylY3uM.mjs +3 -0
- package/dist/{renderer-B6Q5e9CU.mjs → renderer-BA8YwBRQ.mjs} +2 -2
- package/dist/{renderer-B6Q5e9CU.mjs.map → renderer-BA8YwBRQ.mjs.map} +1 -1
- package/dist/{renderer-DVQp5fLG.mjs → renderer-BGXbGqY4.mjs} +5 -4
- package/dist/{renderer-DVQp5fLG.mjs.map → renderer-BGXbGqY4.mjs.map} +1 -1
- package/dist/{renderer-Dgg6pQGI.mjs → renderer-BJ6Y-7ke.mjs} +2 -2
- package/dist/{renderer-Dgg6pQGI.mjs.map → renderer-BJ6Y-7ke.mjs.map} +1 -1
- package/dist/{renderer-BDLnExoP.mjs → renderer-BM05sB8m.mjs} +8 -7
- package/dist/renderer-BM05sB8m.mjs.map +1 -0
- package/dist/renderer-BPw23wiR.mjs +3 -0
- package/dist/{renderer-DP-xNaYX.mjs → renderer-BZmfKIom.mjs} +2 -2
- package/dist/{renderer-DP-xNaYX.mjs.map → renderer-BZmfKIom.mjs.map} +1 -1
- package/dist/{renderer-DXyaswab.mjs → renderer-BgdkEFmv.mjs} +18 -17
- package/dist/renderer-BgdkEFmv.mjs.map +1 -0
- package/dist/renderer-BghW-bSZ.mjs +3 -0
- package/dist/{renderer-BdSHGzHj.mjs → renderer-BiSALMQy.mjs} +1 -1
- package/dist/{renderer-C-Bv9nVB.mjs → renderer-BnvqEqvE.mjs} +2 -2
- package/dist/{renderer-C-Bv9nVB.mjs.map → renderer-BnvqEqvE.mjs.map} +1 -1
- package/dist/{renderer-CmIySXSN.mjs → renderer-BpCxKWQm.mjs} +11 -5
- package/dist/renderer-BpCxKWQm.mjs.map +1 -0
- package/dist/{renderer-CceiI6P7.mjs → renderer-BtRfKx5N.mjs} +18 -4
- package/dist/renderer-BtRfKx5N.mjs.map +1 -0
- package/dist/{renderer-CXZe0lfI.mjs → renderer-But0u-xi.mjs} +2 -2
- package/dist/{renderer-CXZe0lfI.mjs.map → renderer-But0u-xi.mjs.map} +1 -1
- package/dist/renderer-Bw3oZ9YT.mjs +3 -0
- package/dist/renderer-C2009W-_.mjs +3 -0
- package/dist/renderer-C36yoGXG.mjs +3 -0
- package/dist/{renderer-VPK8JnSw.mjs → renderer-CIYcdZuZ.mjs} +7 -6
- package/dist/{renderer-VPK8JnSw.mjs.map → renderer-CIYcdZuZ.mjs.map} +1 -1
- package/dist/{renderer-D49-PYDo.mjs → renderer-CJNyhr_S.mjs} +2 -2
- package/dist/{renderer-D49-PYDo.mjs.map → renderer-CJNyhr_S.mjs.map} +1 -1
- package/dist/renderer-CM1_2ZWA.mjs +3 -0
- package/dist/{renderer-0uccAKQe.mjs → renderer-CNF10fCq.mjs} +2 -2
- package/dist/{renderer-0uccAKQe.mjs.map → renderer-CNF10fCq.mjs.map} +1 -1
- package/dist/{renderer-DxBUppHf.mjs → renderer-CStktK20.mjs} +74 -63
- package/dist/{renderer-DxBUppHf.mjs.map → renderer-CStktK20.mjs.map} +1 -1
- package/dist/renderer-CWlzudP8.mjs +3 -0
- package/dist/{renderer-D5GsF1LT.mjs → renderer-CcU7dVn9.mjs} +2 -2
- package/dist/{renderer-D5GsF1LT.mjs.map → renderer-CcU7dVn9.mjs.map} +1 -1
- package/dist/renderer-Cd5vzrGs.mjs +3 -0
- package/dist/renderer-CeJ_vDXI.mjs +3 -0
- package/dist/{renderer-DFKsLrUs.mjs → renderer-CepMDQ06.mjs} +1 -1
- package/dist/{renderer-DFKsLrUs.mjs.map → renderer-CepMDQ06.mjs.map} +1 -1
- package/dist/{renderer-DrgNyCSx.mjs → renderer-CfeoxM_3.mjs} +2 -2
- package/dist/{renderer-DrgNyCSx.mjs.map → renderer-CfeoxM_3.mjs.map} +1 -1
- package/dist/{renderer-BENX0vRC.mjs → renderer-CgmFh6MY.mjs} +1 -1
- package/dist/renderer-CjY77sB_.mjs +3 -0
- package/dist/{renderer-Bu0xOP_v.mjs → renderer-CoZKST2Y.mjs} +2 -2
- package/dist/{renderer-Bu0xOP_v.mjs.map → renderer-CoZKST2Y.mjs.map} +1 -1
- package/dist/{renderer-BQZniXw0.mjs → renderer-CroHPOsX.mjs} +2 -2
- package/dist/{renderer-BQZniXw0.mjs.map → renderer-CroHPOsX.mjs.map} +1 -1
- package/dist/{renderer-DabG62XS.mjs → renderer-D2XD4QYk.mjs} +1 -1
- package/dist/{renderer-DabG62XS.mjs.map → renderer-D2XD4QYk.mjs.map} +1 -1
- package/dist/renderer-D5Z6mda5.mjs +3 -0
- package/dist/{renderer-Bv-ljXHc.mjs → renderer-D7ztfQHX.mjs} +2 -2
- package/dist/{renderer-Bv-ljXHc.mjs.map → renderer-D7ztfQHX.mjs.map} +1 -1
- package/dist/{renderer-DjI45OYC.mjs → renderer-D7zvPHKn.mjs} +1 -1
- package/dist/{renderer-DjI45OYC.mjs.map → renderer-D7zvPHKn.mjs.map} +1 -1
- package/dist/renderer-D9NnIx7o.mjs +3 -0
- package/dist/{renderer-C5RhNQdr.mjs → renderer-DAMJZNtX.mjs} +10 -9
- package/dist/{renderer-C5RhNQdr.mjs.map → renderer-DAMJZNtX.mjs.map} +1 -1
- package/dist/{renderer-Bq3Geqe3.mjs → renderer-DBlPbsgi.mjs} +1 -1
- package/dist/renderer-DCJa7OGk.mjs +3 -0
- package/dist/{renderer-DDd3cjaz.mjs → renderer-DCkSR2Ne.mjs} +18 -11
- package/dist/renderer-DCkSR2Ne.mjs.map +1 -0
- package/dist/{renderer-B80s47yo.mjs → renderer-DEJwPRkR.mjs} +1 -1
- package/dist/{renderer-B80s47yo.mjs.map → renderer-DEJwPRkR.mjs.map} +1 -1
- package/dist/renderer-DGwSl7g1.mjs +3 -0
- package/dist/{renderer-DbaSgadp.mjs → renderer-DNNqpK7t.mjs} +2 -2
- package/dist/{renderer-DbaSgadp.mjs.map → renderer-DNNqpK7t.mjs.map} +1 -1
- package/dist/renderer-DNoRNfMm.mjs +3 -0
- package/dist/renderer-DOZ8bpyY.mjs +3 -0
- package/dist/renderer-DRHyRNU8.mjs +3 -0
- package/dist/{renderer-BjROyv5F.mjs → renderer-DTvfYkI9.mjs} +2 -2
- package/dist/{renderer-BjROyv5F.mjs.map → renderer-DTvfYkI9.mjs.map} +1 -1
- package/dist/{renderer-CboM4tba.mjs → renderer-DYm4duFr.mjs} +11 -5
- package/dist/renderer-DYm4duFr.mjs.map +1 -0
- package/dist/{renderer-CIvaRnP_.mjs → renderer-D_1oDOCP.mjs} +1 -1
- package/dist/{renderer-CIvaRnP_.mjs.map → renderer-D_1oDOCP.mjs.map} +1 -1
- package/dist/renderer-DdVBt8Rz.mjs +263 -0
- package/dist/renderer-DdVBt8Rz.mjs.map +1 -0
- package/dist/{renderer-BPbNLPcz.mjs → renderer-DffynBHa.mjs} +2 -2
- package/dist/{renderer-BPbNLPcz.mjs.map → renderer-DffynBHa.mjs.map} +1 -1
- package/dist/{renderer-CXJxK7HP.mjs → renderer-DjTiNeAp.mjs} +17 -4
- package/dist/renderer-DjTiNeAp.mjs.map +1 -0
- package/dist/{renderer-DP948J9X.mjs → renderer-Dju9CaeL.mjs} +18 -4
- package/dist/renderer-Dju9CaeL.mjs.map +1 -0
- package/dist/renderer-DlD85Xoi.mjs +3 -0
- package/dist/renderer-Dr0bgOrW.mjs +3 -0
- package/dist/{renderer-BTFPC3UJ.mjs → renderer-DryPrxYc.mjs} +1 -1
- package/dist/renderer-DurtG-Hc.mjs +3 -0
- package/dist/{renderer-zwxwjWqa.mjs → renderer-DxtHmyAa.mjs} +2 -2
- package/dist/{renderer-zwxwjWqa.mjs.map → renderer-DxtHmyAa.mjs.map} +1 -1
- package/dist/{renderer-h-HOoLwD.mjs → renderer-_bygZSKk.mjs} +1 -1
- package/dist/{renderer-h-HOoLwD.mjs.map → renderer-_bygZSKk.mjs.map} +1 -1
- package/dist/{renderer-BD6Jkc8j.mjs → renderer-b6sZN90h.mjs} +4 -3
- package/dist/{renderer-BD6Jkc8j.mjs.map → renderer-b6sZN90h.mjs.map} +1 -1
- package/dist/renderer-d5-F_48R.mjs +3 -0
- package/dist/renderer-eFv9HBmL.mjs +3 -0
- package/dist/renderer-iuV6wQoL.mjs +4 -0
- package/dist/{renderer-D5xelwpw.mjs → renderer-jkZ_IQnW.mjs} +2 -2
- package/dist/{renderer-D5xelwpw.mjs.map → renderer-jkZ_IQnW.mjs.map} +1 -1
- package/dist/renderer-n-uuWPF4.mjs +3 -0
- package/dist/renderer-rzccTFuY.mjs +3 -0
- package/dist/{renderer-DIfk6m2O.mjs → renderer-wVldKtFU.mjs} +2 -2
- package/dist/{renderer-DIfk6m2O.mjs.map → renderer-wVldKtFU.mjs.map} +1 -1
- package/dist/{renderer-o4wOvjEC.mjs → renderer-xKOVmd2O.mjs} +21 -18
- package/dist/renderer-xKOVmd2O.mjs.map +1 -0
- package/dist/renderer-y9eGFPFL.mjs +3 -0
- package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs → renderers-CP8CFWDs-BLgwUYX2.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs.map → renderers-CP8CFWDs-BLgwUYX2.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/dist/{signin-CZj4Oc5s.mjs → signin-Db08vl-g.mjs} +9 -9
- package/dist/{signin-CZj4Oc5s.mjs.map → signin-Db08vl-g.mjs.map} +1 -1
- package/dist/{sso-oidc-C0_31ThY.mjs → sso-oidc-CpLz_lIu.mjs} +9 -9
- package/dist/{sso-oidc-C0_31ThY.mjs.map → sso-oidc-CpLz_lIu.mjs.map} +1 -1
- package/dist/{sts-DD4ggEXC.mjs → sts-BQefGuml.mjs} +2 -2
- package/dist/{sts-nXw8RDJI.mjs → sts-Dgl0kH-t.mjs} +9 -9
- package/dist/{sts-nXw8RDJI.mjs.map → sts-Dgl0kH-t.mjs.map} +1 -1
- package/package.json +55 -54
- package/dist/dist-BQFap0wr.mjs.map +0 -1
- package/dist/dist-ZVlYkuR4.mjs.map +0 -1
- package/dist/dist-cjs-CmZEMtO6.mjs +0 -6
- package/dist/effects-axfL_C3a.mjs.map +0 -1
- package/dist/index-BJx_Qxc_.d.mts.map +0 -1
- package/dist/index-CZChQhXZ.d.mts.map +0 -1
- package/dist/index-WIPHLy5m.d.mts.map +0 -1
- package/dist/preview-engine/chunk-2XXICKQV.mjs +0 -82
- package/dist/preview-engine/chunk-66NVL4BN.mjs +0 -58
- package/dist/preview-engine/chunk-7MJVROKR.mjs +0 -98
- package/dist/preview-engine/chunk-7NVDTELW.mjs +0 -1
- package/dist/preview-engine/chunk-DMWSTYFF.mjs +0 -1
- package/dist/preview-engine/chunk-FKZ4XXPE.mjs +0 -1
- package/dist/preview-engine/chunk-JQ4WY6BZ.mjs +0 -186
- package/dist/preview-engine/chunk-S3P3MJYU.mjs +0 -1
- package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
- package/dist/preview-engine/renderers-MZBR3MSR.mjs +0 -248
- package/dist/renderer-1mNREW16.mjs +0 -3
- package/dist/renderer-4tKI3p9c.mjs +0 -3
- package/dist/renderer-B3XeKN-e.mjs +0 -3
- package/dist/renderer-B7_6SHd8.mjs +0 -3
- package/dist/renderer-BDLnExoP.mjs.map +0 -1
- package/dist/renderer-BENF6Wts.mjs +0 -3
- package/dist/renderer-BMovYRoR.mjs +0 -3
- package/dist/renderer-BPiLdwI1.mjs +0 -3
- package/dist/renderer-BdyMrzUX.mjs +0 -3
- package/dist/renderer-BfpdekRn.mjs +0 -3
- package/dist/renderer-BfvBHHNr.mjs +0 -3
- package/dist/renderer-BtdnLjKZ.mjs +0 -3
- package/dist/renderer-C0q5UUY7.mjs +0 -3
- package/dist/renderer-CXJxK7HP.mjs.map +0 -1
- package/dist/renderer-CboM4tba.mjs.map +0 -1
- package/dist/renderer-CceiI6P7.mjs.map +0 -1
- package/dist/renderer-Cg-rJgwM.mjs +0 -3
- package/dist/renderer-CkgQArsi.mjs +0 -3
- package/dist/renderer-CmIySXSN.mjs.map +0 -1
- package/dist/renderer-CnO9KcmP.mjs +0 -3
- package/dist/renderer-Cnp5JCwi.mjs +0 -3
- package/dist/renderer-CwiCQzjW.mjs +0 -4
- package/dist/renderer-D2LCMZ0l.mjs +0 -3
- package/dist/renderer-D6bWQtr-.mjs +0 -3
- package/dist/renderer-DBGy4qIh.mjs +0 -3
- package/dist/renderer-DBRnvHBV.mjs +0 -3
- package/dist/renderer-DDd3cjaz.mjs.map +0 -1
- package/dist/renderer-DJgrcu3v.mjs +0 -3
- package/dist/renderer-DP948J9X.mjs.map +0 -1
- package/dist/renderer-DTpBOlDA.mjs +0 -3
- package/dist/renderer-DWwIX4Mr.mjs +0 -3
- package/dist/renderer-DXyaswab.mjs.map +0 -1
- package/dist/renderer-DfnacE0H.mjs +0 -3
- package/dist/renderer-RA8pee2T.mjs +0 -3
- package/dist/renderer-eH4u4-2c.mjs +0 -3
- package/dist/renderer-eWOqFUz9.mjs +0 -3
- package/dist/renderer-o4wOvjEC.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Cn}from"./chunk-JPXQPP6J.mjs";import{a as un}from"./chunk-CNSHAFEA.mjs";import{h as Bn,l as ln}from"./chunk-24P6DAB3.mjs";import{d as cn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as En,f as NA,g as ft,h as Qn}from"./chunk-ZJFAGIOM.mjs";import{r as pA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),pn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),pn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=pn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),p=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=p;M++)D+=(s[M]??0)*(s[M]??0);let N=Math.min(1,Math.sqrt(D/(p-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:N,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),p=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:p,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var yn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,p=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,N=[m,p,D],M=k.subtract(N,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<yn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<yn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof pA<"u"&&pA.existsSync)try{let w=JA.resolve(r.basePath,q);if(pA.existsSync(w)){let L=pA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,p=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>p&&(p=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,p=1);let D=(E+h)*.5,N=(Q+m)*.5,M=(C+p)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),G=Math.max(1e-4,p-C),T=Math.max(b,x,G),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?N:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(p-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
1
|
+
import{a as Cn}from"./chunk-JPXQPP6J.mjs";import{a as un}from"./chunk-CNSHAFEA.mjs";import{h as Bn,l as ln}from"./chunk-24P6DAB3.mjs";import{d as cn}from"./chunk-6YJP57MZ.mjs";import{d as ZA,e as En,f as NA,g as ft,h as Qn}from"./chunk-MJM3NFEC.mjs";import{r as pA}from"./chunk-MTJHQATU.mjs";import{d as Ct}from"./chunk-HYBAPT6I.mjs";import{o as JA}from"./chunk-YAQFFQPG.mjs";import{a as gn,c as In,e as $}from"./chunk-BVF64D6H.mjs";var bn=gn((Wo,wn)=>{$();var Ke=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ke(),apply:()=>Ke(),construct:()=>Ke()});wn.exports=Ke()});var $n=gn((xs,_n)=>{$();var tt=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":tt(),apply:()=>tt(),construct:()=>tt()});_n.exports=tt()});$();var dn=new Float32Array(2048);for(let A=0;A<2048;A++)dn[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var hn=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;hn[A]=e}var mn=new Float32Array(2048/2),pn=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;mn[A]=Math.cos(e),pn[A]=Math.sin(e)}function Jr(A,e){for(let t=0;t<2048;t++){let n=hn[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let o=e[t]??0;e[t]=e[n]??0,e[n]=o}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let o=0;o<2048;o+=t)for(let i=0;i<n;i++){let a=i*r,s=mn[a]??1,g=pn[a]??0,I=A[o+i]??0,B=e[o+i]??0,u=A[o+i+n]??0,E=e[o+i+n]??0,Q=u*s-E*g,C=u*g+E*s;A[o+i]=I+Q,e[o+i]=B+C,A[o+i+n]=I-Q,e[o+i+n]=B-C}}}var Te=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,o=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let M=0;M<2048;M++){let b=a+M,x=0;b>=0&&b<o&&(r===1?x=e[0]?.[b]??0:r>=2&&(x=((e[0]?.[b]??0)+(e[1]?.[b]??0))*.5)),this.tempReal[M]=x*(dn[M]??1),this.tempImag[M]=0}Jr(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let M=0;M<1024;M++){let b=this.tempReal[M]??0,x=this.tempImag[M]??0;s[M]=Math.sqrt(b*b+x*x)*g*2}let I=t/2048,B=Math.max(1,Math.round(20/I)),u=Math.max(B+1,Math.round(150/I)),E=0;for(let M=B;M<=u&&M<1024;M++)E+=(s[M]??0)*(s[M]??0);let Q=Math.min(1,Math.sqrt(E/(u-B+1))*4),C=0;for(let M=0;M<1024;M++){let b=(s[M]??0)-(this.previousBins[M]??0);b>0&&(C+=b),this.previousBins[M]=s[M]??0}let h=Math.min(1,C*.15),m=Math.round(300/I),p=Math.min(1023,Math.round(3400/I)),D=0;for(let M=m;M<=p;M++)D+=(s[M]??0)*(s[M]??0);let N=Math.min(1,Math.sqrt(D/(p-m+1))*3.5);return{fftBins:s,bassEnergy:Q,drumTransient:h,vocalEnergy:N,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},fn=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let o=new Te,i=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/i*a)+10),I=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(I);for(let B=0;B<I;B++){let u=B/a;this.frames[B]=o.extractAtTime(e,i,u)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),o=n.get(r);if(!o){let i=this.getFrameData(r);o=Te.createGpuBuffer(e,i),n.set(r,o)}return o}};$();$();$();var k={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};var cA={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=k.normalize(A),n=t[0],r=t[1],o=t[2],i=Math.cos(e),a=Math.sin(e),s=1-i;return[s*n*n+i,s*n*r+a*o,s*n*o-a*r,0,s*n*r-a*o,s*r*r+i,s*r*o+a*n,0,s*n*o+a*r,s*r*o-a*n,s*o*o+i,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=k.subtract(e,A);k.lengthSq(n)===0?n=[0,0,1]:n=k.normalize(n);let r=k.cross(n,t);k.lengthSq(r)===0?r=[1,0,0]:r=k.normalize(r);let o=k.cross(r,n);return[r[0],o[0],n[0],0,r[1],o[1],n[1],0,r[2],o[2],n[2],0,-k.dot(r,A),-k.dot(o,A),-k.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),o=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*o,1,0,0,-t*n*o,0]},orthographic(A,e,t,n,r,o){let i=1/(e-A),a=1/(n-t),s=1/(o-r);return[2*i,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*i,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],o=A[0]*t+A[4]*n+A[8]*r+A[12],i=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[o*g,i*g,a*g]},projectRectangle(A,e,t){return[cA.projectPoint(A,[0,0,0]),cA.projectPoint(A,[e,0,0]),cA.projectPoint(A,[e,t,0]),cA.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};function ce(A,e,t=3){let n=0,r=1,o=1,i=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*o,i+=o,r*=2,o*=.5}return i>0?n/i:0}var ne={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return cA.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=cA.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=ne.computeViewMatrix(A),t=ne.computeProjectionMatrix(A);return cA.multiply(t,e)},dolly(A,e,t){let n=k.normalize(k.subtract(e,A)),r=k.multiplyScalar(n,t);return{eye:k.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let o=k.normalize(k.subtract(e,A)),i=k.normalize(k.cross(o,t)),a=k.cross(i,o),s=k.multiplyScalar(i,n),g=k.multiplyScalar(a,r),I=k.add(s,g);return{eye:k.add(A,I),target:k.add(e,I)}},orbit(A,e,t,n){let r=t*Math.PI/180,o=n*Math.PI/180,i=Math.cos(o),a=Math.sin(o),s=Math.cos(r),g=Math.sin(r),I=A[0]+e*i*g,B=A[1]-e*a,u=A[2]-e*i*s;return[I,B,u]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=k.normalize(k.subtract(A.target,A.eye)),o=k.normalize(k.cross(r,A.up)),i=k.cross(o,r),a=k.distance(A.eye,A.target),s=r,g=i;if(t!==0){let u=t*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.subtract(k.multiplyScalar(s,E),k.multiplyScalar(o,Q)))}let I=k.normalize(k.cross(s,g));if(e!==0){let u=e*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);s=k.normalize(k.add(k.multiplyScalar(s,E),k.multiplyScalar(g,Q))),g=k.normalize(k.cross(I,s))}if(n!==0){let u=n*Math.PI/180,E=Math.cos(u),Q=Math.sin(u);g=k.normalize(k.add(k.multiplyScalar(g,E),k.multiplyScalar(I,Q)))}let B=k.add(A.eye,k.multiplyScalar(s,a));return{...A,target:B,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:o=2.5,octaves:i=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*o,g=ce(s,a,i)*n,I=ce(s,a+101.5,i)*n,B=ce(s,a+203.7,i)*(n*.5),u=ce(s,a+307.1,i)*r,E=ce(s,a+409.3,i)*r,Q=k.normalize(k.subtract(A.target,A.eye)),C=k.normalize(k.cross(Q,A.up)),h=k.cross(C,Q),m=k.add(k.multiplyScalar(C,g),k.add(k.multiplyScalar(h,I),k.multiplyScalar(Q,B))),p=k.add(A.eye,m),D=k.add(A.target,k.add(k.multiplyScalar(C,E*10),k.multiplyScalar(h,u*10)));return{...A,eye:p,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let o=Math.abs(A-e),i=t/n,a=o/A*i*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let o=r[0]>0?e[0]:A[0],i=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*o+r[1]*i+r[2]*a+r[3]<0)return!1}return!0}};$();var yn=8,dt=544;function Dn(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,o=A[1]??1,i=A[2]??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A=="object"&&A!==null){let r=A.r??1,o=A.g??1,i=A.b??1;return[r>1?r/255:r,o>1?o/255:o,i>1?i/255:i]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let o=Number.parseInt(r[0]+r[0],16)/255,i=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[o,i,a]}if(r.length>=6){let o=Number.parseInt(r.slice(0,2),16)/255,i=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[o,i,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,o=Number.parseFloat(t[2])/255,i=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,o)),Math.max(0,Math.min(1,i))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,o=Number.parseFloat(n[2])/100,i=Number.parseFloat(n[3])/100;return Tr(r,o,i)}return[1,1,1]}function Tr(A,e,t){if(e===0)return[t,t,t];let n=(i,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?i+(a-i)*6*g:g<1/2?a:g<2/3?i+(a-i)*(2/3-g)*6:i},r=t<.5?t*(1+e):t+e-t*e,o=2*t-r;return[n(o,r,A+1/3),n(o,r,A),n(o,r,A-1/3)]}var re={computeNormalMatrix(A){let e=cA.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:cA.identity()},processLight(A){let e=Dn(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,o=A.position?A.position[2]:A.z??0,i=A.lightType??A.type??"directional",a=1;i==="ambient"?a=0:i==="directional"?a=1:i==="point"?a=2:i==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=k.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let m=A.target?A.target[0]:A.targetX??n,p=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??o,N=[m,p,D],M=k.subtract(N,[n,r,o]);k.length(M)>1e-4&&(s=k.normalize(M))}let g=Math.max(1,A.radius??1e3),I=A.decay??2,B=Math.max(.1,Math.min(180,A.angle??45)),u=Math.max(0,Math.min(1,A.penumbra??.2)),E=B*Math.PI/180,Q=E*(1-u),C=Math.cos(E),h=Math.cos(Q);return{posType:[n,r,o,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[C,h,I,0]}},packLightsUniforms(A){let e=new Float32Array(dt/4);if(!A||A.length===0)return e[4]=0,e[5]=0,e;let t=0,n=0,r=0,o=[];for(let a of A)if((a.lightType??a.type)==="ambient"){let g=Dn(a.color),I=a.intensity??1;t+=g[0]*I,n+=g[1]*I,r+=g[2]*I}else o.length<yn&&o.push(re.processLight(a));e[0]=t,e[1]=n,e[2]=r,e[3]=1,e[4]=o.length,e[5]=1,e[6]=0,e[7]=0;let i=8;for(let a=0;a<yn;a++){if(a<o.length){let s=o[a];e[i+0]=s.posType[0],e[i+1]=s.posType[1],e[i+2]=s.posType[2],e[i+3]=s.posType[3],e[i+4]=s.dirRadius[0],e[i+5]=s.dirRadius[1],e[i+6]=s.dirRadius[2],e[i+7]=s.dirRadius[3],e[i+8]=s.colorIntensity[0],e[i+9]=s.colorIntensity[1],e[i+10]=s.colorIntensity[2],e[i+11]=s.colorIntensity[3],e[i+12]=s.spotParams[0],e[i+13]=s.spotParams[1],e[i+14]=s.spotParams[2],e[i+15]=s.spotParams[3]}else for(let s=0;s<16;s++)e[i+s]=0;i+=16}return e}};$();var ue=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},o=typeof t=="string"?t:r.mtlText,i=[],a=[],s=[],g=[],I={materialName:"default",faces:[]};g.push(I);let B={};o&&Object.assign(B,A.parseMtl(o));let u=e.split(/\r?\n/);for(let R=0;R<u.length;R++){let gA=u[R]?.trim();if(!gA||gA.startsWith("#"))continue;let AA=gA.split(/\s+/),IA=AA[0]?.toLowerCase();if(IA==="mtllib"){let q=AA.slice(1).join(" ").trim();if(r.basePath&&typeof pA<"u"&&pA.existsSync)try{let w=JA.resolve(r.basePath,q);if(pA.existsSync(w)){let L=pA.readFileSync(w,"utf-8");Object.assign(B,A.parseMtl(L))}}catch{}}else if(IA==="v"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");i.push([q,w,L])}else if(IA==="vn"){let q=Number.parseFloat(AA[1]??"0"),w=Number.parseFloat(AA[2]??"0"),L=Number.parseFloat(AA[3]??"0");a.push([q,w,L])}else if(IA==="vt"){let q=Number.parseFloat(AA[1]??"0"),w=AA[2]!==void 0?Number.parseFloat(AA[2]):0;s.push([q,w])}else if(IA==="usemtl"){let q=AA[1]??"default";I.faces.length>0?(I={materialName:q,faces:[]},g.push(I)):I.materialName=q}else if(IA==="f"){let q=[];for(let w=1;w<AA.length;w++){let L=AA[w];if(!L)continue;let z=L.split("/"),iA=Number.parseInt(z[0]??"0",10),EA=z[1]&&z[1].length>0?Number.parseInt(z[1],10):0,CA=z[2]&&z[2].length>0?Number.parseInt(z[2],10):0;iA<0&&(iA=i.length+iA+1),EA<0&&(EA=s.length+EA+1),CA<0&&(CA=a.length+CA+1),q.push({v:iA-1,vt:EA-1,vn:CA-1})}if(q.length>=3)for(let w=1;w<q.length-1;w++){let L=q[0],z=q[w],iA=q[w+1];L&&z&&iA&&I.faces.push([L,z,iA])}}}let E=1/0,Q=1/0,C=1/0,h=-1/0,m=-1/0,p=-1/0;for(let R of i){let[gA,AA,IA]=R;gA===void 0||AA===void 0||IA===void 0||(gA<E&&(E=gA),AA<Q&&(Q=AA),IA<C&&(C=IA),gA>h&&(h=gA),AA>m&&(m=AA),IA>p&&(p=IA))}Number.isFinite(E)||(E=-1,Q=-1,C=-1,h=1,m=1,p=1);let D=(E+h)*.5,N=(Q+m)*.5,M=(C+p)*.5,b=Math.max(1e-4,h-E),x=Math.max(1e-4,m-Q),G=Math.max(1e-4,p-C),T=Math.max(b,x,G),Y=1;r.normalizeSize&&r.normalizeSize>0&&(Y=r.normalizeSize/T),typeof r.scale=="number"&&(Y*=r.scale);let O=r.center??!1,v=O?D:0,tA=O?N:0,X=O?M:0,F=[];for(let R=0;R<g.length;R++){let gA=g[R];if(!gA||gA.faces.length===0)continue;let AA=new Map,IA=[],q=[],w=[],L=[],z=!1;for(let CA of gA.faces)for(let QA of CA){let mA=`${QA.v}_${QA.vt}_${QA.vn}`,dA=AA.get(mA);if(dA===void 0){dA=IA.length/3,AA.set(mA,dA);let DA=i[QA.v]??[0,0,0],wA=((DA[0]??0)-v)*Y,UA=((DA[1]??0)-tA)*Y,SA=((DA[2]??0)-X)*Y;if(IA.push(wA,UA,SA),QA.vt>=0&&s[QA.vt]){let kA=s[QA.vt];w.push(kA[0]??0,1-(kA[1]??0))}else w.push(0,0);if(QA.vn>=0&&a[QA.vn]){z=!0;let kA=a[QA.vn];q.push(kA[0]??0,kA[1]??0,kA[2]??0)}else q.push(0,0,0)}L.push(dA)}if(!z||r.smoothNormals){let CA=new Float32Array(IA.length);for(let QA=0;QA<L.length;QA+=3){let mA=L[QA],dA=L[QA+1],DA=L[QA+2],wA=[IA[mA*3],IA[mA*3+1],IA[mA*3+2]],UA=[IA[dA*3],IA[dA*3+1],IA[dA*3+2]],SA=[IA[DA*3],IA[DA*3+1],IA[DA*3+2]],kA=k.subtract(UA,wA),ot=k.subtract(SA,wA),RA=k.cross(kA,ot);CA[mA*3]+=RA[0],CA[mA*3+1]+=RA[1],CA[mA*3+2]+=RA[2],CA[dA*3]+=RA[0],CA[dA*3+1]+=RA[1],CA[dA*3+2]+=RA[2],CA[DA*3]+=RA[0],CA[DA*3+1]+=RA[1],CA[DA*3+2]+=RA[2]}for(let QA=0;QA<IA.length/3;QA++){let mA=CA[QA*3],dA=CA[QA*3+1],DA=CA[QA*3+2],wA=Math.hypot(mA,dA,DA)||1;q[QA*3]=mA/wA,q[QA*3+1]=dA/wA,q[QA*3+2]=DA/wA}}let EA=IA.length/3>65535?new Uint32Array(L):new Uint16Array(L);F.push({id:`mesh_${R}`,name:gA.materialName,positions:new Float32Array(IA),normals:new Float32Array(q),uvs:new Float32Array(w),indices:EA,materialName:gA.materialName})}let sA=(E-v)*Y,H=(Q-tA)*Y,V=(C-X)*Y,rA=(h-v)*Y,K=(m-tA)*Y,S=(p-X)*Y,_=rA-sA,j=K-H,W=S-V,nA=(sA+rA)*.5,lA=(H+K)*.5,oA=(V+S)*.5,aA=Math.hypot(_,j,W)*.5;return{meshes:F,materials:B,animations:[],bounds:{min:[sA,H,V],max:[rA,K,S],center:[nA,lA,oA],size:[_,j,W],boundingSphereRadius:aA}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,I,B,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),I=Number.parseFloat(a[2]??"1"),B=Number.parseFloat(a[3]??"1");n.specularColor=[g,I,B],n.specularIntensity=(g+I+B)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),I=Number.parseFloat(a[2]??"0.2"),B=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,I,B]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else s==="map_kd"?n.diffuseTexture=a.slice(1).join(" "):(s==="map_bump"||s==="bump")&&(n.normalTexture=a.slice(1).join(" "))}return t}};function Ko(A,e,t={}){return ue.parse(A,e,t)}function Yo(A){return ue.parseMtl(A)}function Ee(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
2
2
|
v `)||r.includes("\rv "))&&typeof pA<"u"&&pA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}pA.existsSync(i)?(n=pA.readFileSync(i,"utf-8"),t={basePath:t.basePath??JA.dirname(i),...t}):n=A}catch{n=A}else n=A}return ue.parse(n,e,t)}$();var xn=In(bn(),1);var qA=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n.getUint32(23,!0)>=7500,i=27,a={name:"Root",props:[],children:[]},s=()=>{if(i>=t.byteLength)return null;let g,I,B;if(o){if(i+25>t.byteLength)return null;g=Number(n.getBigUint64(i,!0)),I=Number(n.getBigUint64(i+8,!0)),B=n.getUint8(i+24),i+=25}else{if(i+13>t.byteLength)return null;g=n.getUint32(i,!0),I=n.getUint32(i+4,!0),B=n.getUint8(i+12),i+=13}if(g===0)return null;let u=new TextDecoder().decode(t.subarray(i,i+B));i+=B;let E=[];for(let C=0;C<I;C++){let h=String.fromCharCode(t[i]);switch(i+=1,h){case"Y":{E.push(n.getInt16(i,!0)),i+=2;break}case"C":case"B":{E.push(n.getUint8(i)!==0),i+=1;break}case"I":{E.push(n.getInt32(i,!0)),i+=4;break}case"F":{E.push(n.getFloat32(i,!0)),i+=4;break}case"D":{E.push(n.getFloat64(i,!0)),i+=8;break}case"L":{E.push(Number(n.getBigInt64(i,!0))),i+=8;break}case"S":{let m=n.getUint32(i,!0);i+=4;let p=new TextDecoder().decode(t.subarray(i,i+m));E.push(p),i+=m;break}case"R":{let m=n.getUint32(i,!0);i+=4;let p=t.subarray(i,i+m);E.push(p),i+=m;break}case"f":case"d":case"i":case"l":case"b":case"c":{let m=n.getUint32(i,!0),p=n.getUint32(i+4,!0),D=n.getUint32(i+8,!0);i+=12;let N;if(p===1){let b=t.subarray(i,i+D);N=(0,xn.inflateSync)(b),i+=D}else{let x=m*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);N=t.subarray(i,i+x),i+=x}let M=new DataView(N.buffer,N.byteOffset,N.byteLength);if(h==="f"){let b=new Float32Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat32(x*4,!0);E.push(b)}else if(h==="d"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=M.getFloat64(x*8,!0);E.push(b)}else if(h==="i"){let b=new Int32Array(m);for(let x=0;x<m;x++)b[x]=M.getInt32(x*4,!0);E.push(b)}else if(h==="l"){let b=new Float64Array(m);for(let x=0;x<m;x++)b[x]=Number(M.getBigInt64(x*8,!0));E.push(b)}else if(h==="b"){let b=new Uint8Array(m);for(let x=0;x<m;x++)b[x]=M.getUint8(x);E.push(b)}else E.push(N);break}default:break}}let Q=[];for(;i<g;){let C=s();if(C)Q.push(C);else break}return i=g,{name:u,props:E,children:Q}};for(;i<t.byteLength-(o?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let o=0;o<r.length;o++){let i=r[o]?.trim();if(!i||i.startsWith(";"))continue;if(i==="}"){n.length>1&&n.pop();continue}let a=i.indexOf(":");if(a===-1)continue;let s=i.substring(0,a).trim(),g=i.substring(a+1).trim(),I=g.endsWith("{"),B=I?g.slice(0,-1).trim():g,u=[];if(B){let C=B.split(",").map(h=>h.trim());for(let h of C)h.startsWith('"')&&h.endsWith('"')?u.push(h.slice(1,-1)):Number.isNaN(Number(h))?u.push(h):u.push(Number(h))}let E={name:s,props:u,children:[]},Q=n[n.length-1];Q&&Q.children.push(E),I&&n.push(E)}return t}static buildModelFromTree(e,t={}){let n=e.children.find(G=>G.name==="Objects"),r=e.children.find(G=>G.name==="Connections"),o=new Map;if(n)for(let G of n.children){let T=G.props[0]??0,O=String(G.props[1]??"").split("::"),v=O.length>1?O[1]:O[0],tA=String(G.props[2]??G.name);o.set(T,{id:T,name:v,type:tA,node:G})}let i=[];if(r){for(let G of r.children)if(G.name==="C"||G.name==="Connect"){let T=String(G.props[0]),Y=G.props[1]??0,O=G.props[2]??0,v=T==="OP"?String(G.props[3]):void 0;i.push({childId:Y,parentId:O,propName:v})}}let a=[],s={};function g(G){if(!G)return[];if(G.props[0]instanceof Float32Array||G.props[0]instanceof Float64Array||G.props[0]instanceof Int32Array||Array.isArray(G.props[0]))return G.props[0];let T=G.children.find(Y=>Y.name==="a");return T&&T.props.length>0?T.props:Array.isArray(G.props)&&G.props.length>0&&typeof G.props[0]=="number"?G.props:[]}for(let[G,T]of o)if(T.node.name==="Geometry"&&(T.type==="Mesh"||T.node.props[2]==="Mesh"||T.type==="")){let Y=T.node,O=Y.children.find(w=>w.name==="Vertices"),v=Y.children.find(w=>w.name==="PolygonVertexIndex"),tA=Y.children.find(w=>w.name==="LayerElementNormal"),X=Y.children.find(w=>w.name==="LayerElementUV");if(!O||!v)continue;let F=g(O),sA=g(v),H=tA?.children.find(w=>w.name==="Normals"),V=g(H),rA=X?.children.find(w=>w.name==="UV"),K=X?.children.find(w=>w.name==="UVIndex"),S=g(rA),_=g(K),j=[],W=[],nA=[];for(let w=0;w<sA.length;w++){let L=sA[w];if(L<0){if(nA.push(-(L+1)),W.push(w),nA.length>=3)for(let z=1;z<nA.length-1;z++)j.push([nA[0],nA[z],nA[z+1]]);nA=[]}else nA.push(L),W.push(w)}let lA=[],oA=[],aA=[],R=[];for(let w=0;w<j.length;w++){let L=j[w];for(let z=0;z<3;z++){let iA=L[z],EA=lA.length/3,CA=F[iA*3]??0,QA=F[iA*3+1]??0,mA=F[iA*3+2]??0;if(lA.push(CA,QA,mA),V.length>0){let dA=V[iA*3]??0,DA=V[iA*3+1]??0,wA=V[iA*3+2]??0;oA.push(dA,DA,wA)}else oA.push(0,0,1);if(S.length>0){let dA=iA;_.length>0&&(dA=_[iA]??iA);let DA=S[dA*2]??0,wA=S[dA*2+1]??0;aA.push(DA,1-wA)}else aA.push(0,0);R.push(EA)}}if(V.length===0||t.smoothNormals){let w=new Float32Array(lA.length);for(let L=0;L<R.length;L+=3){let z=R[L],iA=R[L+1],EA=R[L+2],CA=[lA[z*3],lA[z*3+1],lA[z*3+2]],QA=[lA[iA*3],lA[iA*3+1],lA[iA*3+2]],mA=[lA[EA*3],lA[EA*3+1],lA[EA*3+2]],dA=k.subtract(QA,CA),DA=k.subtract(mA,CA),wA=k.cross(dA,DA);w[z*3]+=wA[0],w[z*3+1]+=wA[1],w[z*3+2]+=wA[2],w[iA*3]+=wA[0],w[iA*3+1]+=wA[1],w[iA*3+2]+=wA[2],w[EA*3]+=wA[0],w[EA*3+1]+=wA[1],w[EA*3+2]+=wA[2]}for(let L=0;L<lA.length/3;L++){let z=w[L*3],iA=w[L*3+1],EA=w[L*3+2],CA=Math.hypot(z,iA,EA)||1;oA[L*3]=z/CA,oA[L*3+1]=iA/CA,oA[L*3+2]=EA/CA}}let gA=i.find(w=>w.parentId===G&&o.get(w.childId)?.type==="Deformer"&&o.get(w.childId)?.node.props[2]==="Skin"),AA,IA;if(gA){let w=lA.length/3;AA=new Float32Array(w*4),IA=new Float32Array(w*4),i.filter(z=>z.parentId===gA.childId&&o.get(z.childId)?.type==="Deformer"&&o.get(z.childId)?.node.props[2]==="Cluster").forEach((z,iA)=>{let EA=o.get(z.childId)?.node,CA=EA?.children.find(mA=>mA.name==="Indexes"),QA=EA?.children.find(mA=>mA.name==="Weights");if(CA&&QA){let mA=g(CA),dA=g(QA);for(let DA=0;DA<mA.length;DA++){let wA=dA[DA]??0;for(let UA=0;UA<w;UA++)for(let SA=0;SA<4;SA++)if(IA[UA*4+SA]===0){AA[UA*4+SA]=iA,IA[UA*4+SA]=wA;break}}}})}let q=lA.length/3>65535;a.push({id:`fbx_mesh_${G}`,name:T.name,positions:new Float32Array(lA),normals:new Float32Array(oA),uvs:new Float32Array(aA),indices:q?new Uint32Array(R):new Uint16Array(R),jointIndices:AA,jointWeights:IA,materialName:T.name})}for(let[,G]of o)if(G.node.name==="Material"){let Y=G.node.children.find(X=>X.name==="Properties70"),O=[1,1,1,1],v=32,tA=1;if(Y){for(let X of Y.children)if(X.name==="P"){let F=String(X.props[0]);if(F==="DiffuseColor"||F==="Color"){let sA=Number(X.props[4]??1),H=Number(X.props[5]??1),V=Number(X.props[6]??1);O=[sA,H,V,1]}else F==="Shininess"||F==="ShininessExponent"?v=Number(X.props[4]??32):F==="Opacity"&&(tA=Number(X.props[4]??1),O[3]=tA)}}s[G.name]={name:G.name,diffuseColor:O,shininess:v,opacity:tA}}let I=[];for(let[G,T]of o)if(T.node.name==="AnimationStack"){let Y=T.name||"Take 001",O=[],v=i.find(X=>X.parentId===G&&o.get(X.childId)?.node.name==="AnimationLayer");if(v){let X=i.filter(sA=>sA.parentId===v.childId&&o.get(sA.childId)?.node.name==="AnimationCurveNode"),F=new Map;for(let sA of X){let H=o.get(sA.childId);if(!H)continue;let V=i.find(W=>W.childId===H.id&&o.get(W.parentId)?.node.name==="Model"),rA=V?o.get(V.parentId):void 0,K=Mn(V?.propName)??Mn(H.name);if(!K)continue;let S=`${rA?.id??H.id}|${K}`,_=F.get(S);if(!_){let W=rA?.node;_={nodeName:rA?.name??H.name,model:W,kind:K,defaults:Yr(W,H.node,K),channels:[void 0,void 0,void 0]},F.set(S,_)}i.filter(W=>W.parentId===H.id&&o.get(W.childId)?.node.name==="AnimationCurve").forEach((W,nA)=>{let lA=Kr(W.propName)??nA;if(lA>2)return;let oA=o.get(W.childId)?.node,aA=g(oA?.children.find(AA=>AA.name==="KeyTime")),R=g(oA?.children.find(AA=>AA.name==="KeyValueFloat")),gA=Math.min(aA.length,R.length);gA!==0&&(_.channels[lA]={times:Array.from(aA.slice(0,gA),AA=>Number(AA)),values:Array.from(R.slice(0,gA),AA=>Number(AA))})})}for(let sA of F.values()){let H=zr(sA);H&&O.push(H)}}let tA=1;for(let X of O)if(X.times.length>0){let F=X.times[X.times.length-1]??0;F>tA&&(tA=F)}I.push({name:Y,duration:tA,fps:30,tracks:O})}let B=1/0,u=1/0,E=1/0,Q=-1/0,C=-1/0,h=-1/0;for(let G of a)for(let T=0;T<G.positions.length;T+=3){let Y=G.positions[T],O=G.positions[T+1],v=G.positions[T+2];Y<B&&(B=Y),O<u&&(u=O),v<E&&(E=v),Y>Q&&(Q=Y),O>C&&(C=O),v>h&&(h=v)}Number.isFinite(B)||(B=-1,u=-1,E=-1,Q=1,C=1,h=1);let m=Q-B,p=C-u,D=h-E,N=(B+Q)*.5,M=(u+C)*.5,b=(E+h)*.5,x=Math.hypot(m,p,D)*.5;return{meshes:a,materials:s,animations:I,bounds:{min:[B,u,E],max:[Q,C,h],center:[N,M,b],size:[m,p,D],boundingSphereRadius:x}}}};function Mn(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Kr(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function ht(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function Yr(A,e,t){let n=t==="S"?1:0,r=ht(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),o=[n,n,n];for(let i=0;i<3;i++){let a=r?.[i],s=ht(e,`d|${"XYZ"[i]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(o[i]=g)}return o}var Or=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function Vr(A){let e=ht(A,"RotationOrder")?.[0]??0;return Or[e]??"XYZ"}function Wr(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),o=(A[r]??0)*Math.PI/360,i=Math.sin(o),a=[0,0,0,Math.cos(o)];a[r]=i,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function Xr(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let o=0;for(;o<r-1&&t[o+1]<=e;)o++;let i=t[o],a=t[o+1],s=a>i?(e-i)/(a-i):0;return n[o]+(n[o+1]-n[o])*s}function zr(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",o=new Float32Array(t.length*(r?4:3)),i=r?Vr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/qA.FBX_KTIME;let I=[0,1,2].map(u=>{let E=A.channels[u];return E?Xr(E,s):A.defaults[u]});if(!r){o.set(I,g*3);return}let B=Wr(I,i);if(a&&a[0]*B[0]+a[1]*B[1]+a[2]*B[2]+a[3]*B[3]<0)for(let u=0;u<4;u++)B[u]=-B[u];a=B,o.set(B,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?o:void 0,rotations:r?o:void 0,scales:A.kind==="S"?o:void 0}}function qo(A,e={}){return qA.parse(A,e)}function Qe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof pA<"u"&&pA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}if(pA.existsSync(o)){let i=pA.readFileSync(o);t=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)}}catch{}}return qA.parse(t,e)}$();$();var Fn=`
|
|
3
3
|
struct AudioLatentBuffer {
|
|
4
4
|
fftBins : array<f32, 1024>,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as F}from"./chunk-
|
|
1
|
+
import{a as F}from"./chunk-AEK5BO3J.mjs";import{b as T,d as m}from"./chunk-MJM3NFEC.mjs";import{m as y}from"./chunk-4GEWSUX5.mjs";import{o}from"./chunk-YAQFFQPG.mjs";import{d as g,e as d}from"./chunk-BVF64D6H.mjs";d();d();var U=65536,x=1953658213,N=1954115633,$=1330926671,k=1953784678;function P(e,t){if(e.length<12)throw new Error(`Invalid font binary for "${t}": File size (${e.length} bytes) is too small to be a valid TrueType or OpenType font.`);let n=(e[0]??0)<<24|(e[1]??0)<<16|(e[2]??0)<<8|(e[3]??0);if(n===U||n===x||n===N||n===k)return"truetype";if(n===$)return"opentype";let r=(n>>>0).toString(16).padStart(8,"0");throw new Error(`Invalid font format for "${t}": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${r}.`)}async function v(e){if(e instanceof Uint8Array)return{buffer:e};if(typeof e!="string")throw new TypeError(`Font source must be a file path string or Uint8Array, received: ${typeof e}`);let t=e;if(t.startsWith("http://")||t.startsWith("https://")){let i=await fetch(t);if(!i.ok)throw new Error(`Failed to download font from "${t}": HTTP ${i.status} ${i.statusText}`);let l=await i.arrayBuffer();return{buffer:new Uint8Array(l),filePath:t}}if(t.startsWith("file://"))try{t=new URL(t).pathname}catch{t=t.replace(/^file:\/\//,"")}let n=[t,o.resolve(g.cwd(),t),o.resolve(g.cwd(),"assets/fonts",t),o.resolve(g.cwd(),"assets/fonts",o.basename(t))],r=g.cwd();for(let i=0;i<5;i++){n.push(o.resolve(r,t)),n.push(o.resolve(r,"assets/fonts",o.basename(t)));let l=o.dirname(r);if(l===r)break;r=l}let s=null,f=null;for(let i of n)try{if((await y.stat(i)).isFile()){s=i,f=await y.readFile(i);break}}catch{}if(!s||!f)throw new Error(`Font file not found: "${e}". Checked candidate locations:
|
|
2
2
|
- ${n.join(`
|
|
3
3
|
- `)}`);return{buffer:new Uint8Array(f.buffer,f.byteOffset,f.byteLength),filePath:s}}var b=class e{static instance=null;fonts=new Map;constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}static async register(t,n){return e.getInstance().register(t,n)}static async registerEmojiFont(t){let{buffer:n,filePath:r}=await v(t);P(n,r??(typeof t=="string"?t:"Uint8Array")),m.setEmojiFont(n,r)}static get(t){return e.getInstance().get(t)}static has(t){return e.getInstance().has(t)}static getAll(){return e.getInstance().getAll()}static getRegisteredFontPaths(){return e.getInstance().getRegisteredFontPaths()}static clear(){e.getInstance().clear()}async register(t,n){let r,s,f,i;if(typeof t=="object"&&t!==null)r=t.family,s=t.source,f=t.weight,i=t.style;else if(typeof t=="string"&&n!==void 0)r=t,s=n;else if(typeof t=="string")r=void 0,s=t;else throw new TypeError("Invalid arguments passed to FontManager.register");let{buffer:l,filePath:u}=await v(s),h=u??(typeof s=="string"?s:"Uint8Array"),E=P(l,h),c;try{let a=T(l);a&&"fonts"in a&&Array.isArray(a.fonts)&&a.fonts.length>0?c=a.fonts[0]:c=a}catch(a){let A=a instanceof Error?a.message:String(a);throw new Error(`Failed to parse TrueType/OpenType font binary for "${h}": ${A}`)}let R=c.familyName||c.postscriptName||o.parse(h).name,p=r?.trim()||R,w={family:p,source:s,filePath:u,format:E,postscriptName:c.postscriptName,unitsPerEm:c.unitsPerEm,weight:f,style:i};return this.fonts.set(p,w),u&&await F(p,u),m.setParsed(p,c),w}get(t){return this.fonts.get(t)}has(t){return this.fonts.has(t)}getAll(){return Array.from(this.fonts.values())}getRegisteredFontPaths(){let t=[];for(let n of this.fonts.values())n.filePath?t.push(n.filePath):typeof n.source=="string"&&t.push(n.source);return t}clear(){this.fonts.clear()}};export{b as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as ue}from"./chunk-XOEEGC4Z.mjs";import{b as oe,c as ce}from"./chunk-IYVN2QEL.mjs";import{a as f}from"./chunk-NQZKBFC6.mjs";import{t as le}from"./chunk-ZNGOAGAI.mjs";import{d as X}from"./chunk-6YJP57MZ.mjs";import{e as P}from"./chunk-BVF64D6H.mjs";P();P();P();var Q=100,Te=ue().field("blurType",f.enum(["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]).default("Gaussian"),{bindable:!1,label:"Blur Type"}).field("strength",f.number().min(0).max(Q).default(5),{bindable:!0,dataTypes:["Number","Signal"],label:"Strength Signal",description:"The intensity of the blur. 0 = no blur. Can be modulated by a static number or a dynamic signal."}).field("angle",f.number().int().min(0).max(360).default(0),{bindable:!1,signal:!0,label:"Angle",description:"Direction of a Motion blur, in degrees."}).field("sigmaColor",f.number().min(.01).max(1).default(.1),{bindable:!0,dataTypes:["Number","Signal"],label:"Color Sigma Signal",description:"Sigma value for color space in Bilateral / Edge-preserving blurs. Can be modulated by a static number or a dynamic signal."}).field("centerX",f.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center X Signal",description:"The X coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal."}).field("centerY",f.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center Y Signal",description:"The Y coordinate of the blur center (0.0 to 1.0). Can be modulated by a static number or a dynamic signal."}).field("partialBlur",f.boolean().default(!1),{bindable:!1,signal:!0,label:"Partial Blur",description:"Blurs only a specific circular area around center point."}).field("radius",f.number().min(.01).max(1).default(.3),{bindable:!0,dataTypes:["Number","Signal"],label:"Partial Radius Signal",description:"Radius of the partial blur region (0.01 to 1.0). Can be modulated by a static number or a dynamic signal."}).field("radiusY",f.number().min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Partial Radius Y Signal",description:"Vertical radius of the partial blur region (0 to 1.0). 0 reuses the horizontal radius."}).field("shape",f.enum(["ellipse","circle","rect"]).default("circle"),{bindable:!1,label:"Partial Shape",description:"Shape of the partial blur region."}).build(),Ie=Te.schema,De=f.union([oe,ce]);var b=`
|
|
2
2
|
struct BlurUniforms {
|
|
3
3
|
dirX : f32,
|
|
4
4
|
dirY : f32,
|
|
@@ -74,7 +74,7 @@ fn applyPartialBlur(blurred: vec4<f32>, uv: vec2<f32>, dimensions: vec2<f32>) ->
|
|
|
74
74
|
}
|
|
75
75
|
return mix(orig, blurred, mask);
|
|
76
76
|
}
|
|
77
|
-
`,
|
|
77
|
+
`,Pe=`
|
|
78
78
|
${b}
|
|
79
79
|
|
|
80
80
|
struct VSOut {
|
|
@@ -131,7 +131,7 @@ struct VSOut {
|
|
|
131
131
|
let blurred = color / totalWeight;
|
|
132
132
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
133
133
|
}
|
|
134
|
-
`,
|
|
134
|
+
`,Re=`
|
|
135
135
|
${b}
|
|
136
136
|
|
|
137
137
|
struct VSOut {
|
|
@@ -183,7 +183,7 @@ struct VSOut {
|
|
|
183
183
|
let blurred = color / count;
|
|
184
184
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
185
185
|
}
|
|
186
|
-
`,
|
|
186
|
+
`,Le=`
|
|
187
187
|
${b}
|
|
188
188
|
|
|
189
189
|
struct VSOut {
|
|
@@ -259,7 +259,7 @@ struct Val {
|
|
|
259
259
|
let medianIdx = count / 2;
|
|
260
260
|
return applyPartialBlur(values[medianIdx].color, in.uv, dimensions);
|
|
261
261
|
}
|
|
262
|
-
`,
|
|
262
|
+
`,Ve=`
|
|
263
263
|
${b}
|
|
264
264
|
|
|
265
265
|
struct VSOut {
|
|
@@ -314,7 +314,7 @@ struct VSOut {
|
|
|
314
314
|
let blurred = color / f32(numSamples);
|
|
315
315
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
316
316
|
}
|
|
317
|
-
`,
|
|
317
|
+
`,Ge=`
|
|
318
318
|
${b}
|
|
319
319
|
|
|
320
320
|
struct VSOut {
|
|
@@ -384,7 +384,7 @@ struct VSOut {
|
|
|
384
384
|
}
|
|
385
385
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
386
386
|
}
|
|
387
|
-
`,
|
|
387
|
+
`,we=`
|
|
388
388
|
${b}
|
|
389
389
|
|
|
390
390
|
struct VSOut {
|
|
@@ -481,7 +481,7 @@ struct VSOut {
|
|
|
481
481
|
let blurred = vec4<f32>(finalCol, centerCol.a);
|
|
482
482
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
483
483
|
}
|
|
484
|
-
`,
|
|
484
|
+
`,Ce=`
|
|
485
485
|
${b}
|
|
486
486
|
|
|
487
487
|
struct VSOut {
|
|
@@ -547,7 +547,7 @@ struct VSOut {
|
|
|
547
547
|
let blurred = color / 24.0;
|
|
548
548
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
549
549
|
}
|
|
550
|
-
`,
|
|
550
|
+
`,_e=`
|
|
551
551
|
${b}
|
|
552
552
|
|
|
553
553
|
struct VSOut {
|
|
@@ -607,4 +607,4 @@ struct VSOut {
|
|
|
607
607
|
let blurred = color / 24.0;
|
|
608
608
|
return applyPartialBlur(blurred, in.uv, dimensions);
|
|
609
609
|
}
|
|
610
|
-
`,
|
|
610
|
+
`,de=new WeakMap;function Ye(u){let e=de.get(u);if(e)return e;let i=u.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),o=u.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),y=u.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});return e={blurUniformLayout:i,singleTextureLayout:o,signalTextureLayout:y,pipelineCache:new Map},de.set(u,e),e}function Ue(u,e,i){let o=Ye(u),y=`blur_${i}_${e}`,p=o.pipelineCache.get(y);if(!p){let c=Pe;i==="Box"?c=Re:i==="Median"?c=Le:i==="Motion"?c=Ve:i==="Bilateral"?c=Ge:i==="Edge-preserving"?c=we:i==="Radial"?c=Ce:i==="Zoom"&&(c=_e);let B=u.createShaderModule({label:`blur_${i}_${e}.wgsl`,code:c});p=u.createRenderPipeline({label:`BlurPipeline_${i}_${e}`,layout:u.createPipelineLayout({bindGroupLayouts:[o.blurUniformLayout,o.singleTextureLayout,o.signalTextureLayout]}),vertex:{module:B,entryPoint:"vs"},fragment:{module:B,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),o.pipelineCache.set(y,p)}return{blurPipeline:p,blurUniformLayout:o.blurUniformLayout,singleTextureLayout:o.singleTextureLayout,signalTextureLayout:o.signalTextureLayout}}var ve=async u=>{let{ctx:e,encoder:i,pass:o,targetView:y,targetTexture:p,targetWidth:c,targetHeight:B,props:n,drawChild:ge}=u,I=n.frame??0,ee=n.compositionFrame??I,R=n.fps||30,l=n.virtualMedia?.operation;if(l?.op!=="Blur"||!l)return;let D=n.virtualMedia.children?.[0];if(!D)return;o.end();let t=new Float32Array(16),m=c,S=B,pe=n.containerWidth??e.surface.width/(typeof window<"u"?window.devicePixelRatio:1),A=m/pe,me=l.inputs?Object.keys(l.inputs)[0]:"blur_node",T=(r,s,v,w,g=!1)=>{let Be=`${r}HandleId`,ie=l[Be],x=ie?l.inputs?.[ie]:null,ne=!!(x?.connectionValid&&(x.outputItem?.type==="Signal"||x.outputItem?.type==="Numeric")),Z=ne&&x?.outputItem?.data?x.outputItem.data:null,h=s,K=!1,ae;if(ne){if(Z){let a=Number(Z.offset??0);h=Math.max(v,Math.min(w,a)),g&&(h*=A),K=!0}}else if(x?.connectionValid&&x.outputItem?.type==="Number"){let a=Number(x.outputItem.data??s);h=Math.max(v,Math.min(w,a)),g&&(h*=A)}else{let a=l[r];if(a!=null)if(typeof a=="object"){if("get"in a&&typeof a.get=="function")a=a.get({frame:ee,fps:R});else if("value"in a){let J=a;J.gpuBinding?.textureView&&(ae=J.gpuBinding.textureView,K=!0),a=J.value}}else typeof a=="function"&&(a=a(ee,R));let se=Number(a??s);h=Math.max(v,Math.min(w,isNaN(se)?s:se)),g&&(h*=A)}return{val:h,hasStaticSig:K,sd:Z,gpuTextureView:ae}},C=T("strength",5,0,Q,!0),_=T("sigmaColor",.1,.01,1,!1),Y=T("centerX",.5,0,1,!1),U=T("centerY",.5,0,1,!1),O=T("radius",.3,.001,1,!1),Se=T("radiusY",0,0,1,!1),d=e.renderer.getTemporaryTexture(m,S,[...n.excludeTextures||[],p]),te=d.createView();e.renderer.beginFrame(i,te,{r:0,g:0,b:0,a:0},m,S,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:m,height:S}),e.renderer.pushIdentity(),await ge(D,{...n,virtualMedia:D},te,d,m,S),e.renderer.popTransform(),e.renderer.popScissor();let L=l.blurType??"Gaussian",xe=L==="Gaussian"||L==="Box"||L==="Median"||L==="Bilateral",{blurPipeline:N,blurUniformLayout:E,singleTextureLayout:be,signalTextureLayout:k}=Ue(e.device,e.renderer.format,L),M=e.renderer.samplerCache.getSampler(e.device),he=n.elapsedMs!==void 0?n.elapsedMs/1e3:I/R,ye=n.virtualMedia?.metadata?.durationMs?n.virtualMedia.metadata.durationMs/1e3:n.durationMs!==void 0?n.durationMs/1e3:0;for(let r of[C,_,Y,U,O])r.hasStaticSig&&r.sd&&await X.ensureAudioSourcesExtracted(e.device,r.sd,R,n.renderId);let V=(r,s)=>r.gpuTextureView?r.gpuTextureView:r.hasStaticSig&&r.sd?X.getOrCreate2DTextureView(e.device,i,r.sd.nodeId??`${me}_${s}`,he,ye,r.sd,m,S,n.renderId,I,R):X.getDummy1x1TextureView(e.device),W=V(C,"strength_sig"),F=V(_,"sigmacolor_sig"),j=V(Y,"centerx_sig"),$=V(U,"centery_sig"),z=V(O,"radius_sig"),H=(r,s)=>e.device.createBindGroup({layout:be,entries:[{binding:0,resource:r.createView()},{binding:1,resource:M},{binding:2,resource:s.createView()}]}),q=!!(l.partialBlur&&l.partialBlur!=="false"&&l.partialBlur!==0);t[2]=C.val,t[3]=Number(l.angle??0),t[4]=_.val,t[5]=Y.val,t[6]=U.val,t[7]=O.val,t[8]=q?1:0,t[9]=C.hasStaticSig?1:0,t[10]=_.hasStaticSig?1:0,t[11]=Y.hasStaticSig?1:0,t[12]=U.hasStaticSig?1:0,t[13]=O.hasStaticSig?1:0,t[14]=Se.val,t[15]=l.shape==="rect"?1:0;let G;if(xe){let r=e.renderer.getTemporaryTexture(m,S,[d,p,...n.excludeTextures||[]]);G=e.renderer.getTemporaryTexture(m,S,[d,r,p,...n.excludeTextures||[]]),t[0]=1,t[1]=0,t[8]=0;let s=e.renderer.getTemporaryBuffer(t),v=i.beginRenderPass({colorAttachments:[{view:r.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});v.setPipeline(N),v.setBindGroup(0,e.device.createBindGroup({layout:E,entries:[{binding:0,resource:{buffer:s}}]})),v.setBindGroup(1,H(d,d)),v.setBindGroup(2,e.device.createBindGroup({layout:k,entries:[{binding:0,resource:W},{binding:1,resource:F},{binding:2,resource:j},{binding:3,resource:$},{binding:4,resource:z},{binding:5,resource:M}]})),v.draw(4),v.end(),t[0]=0,t[1]=1,t[8]=q?1:0;let w=e.renderer.getTemporaryBuffer(t),g=i.beginRenderPass({colorAttachments:[{view:G.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});g.setPipeline(N),g.setBindGroup(0,e.device.createBindGroup({layout:E,entries:[{binding:0,resource:{buffer:w}}]})),g.setBindGroup(1,H(r,d)),g.setBindGroup(2,e.device.createBindGroup({layout:k,entries:[{binding:0,resource:W},{binding:1,resource:F},{binding:2,resource:j},{binding:3,resource:$},{binding:4,resource:z},{binding:5,resource:M}]})),g.draw(4),g.end()}else{G=e.renderer.getTemporaryTexture(m,S,[d,p,...n.excludeTextures||[]]),t[0]=0,t[1]=0,t[8]=q?1:0;let r=e.renderer.getTemporaryBuffer(t),s=i.beginRenderPass({colorAttachments:[{view:G.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(N),s.setBindGroup(0,e.device.createBindGroup({layout:E,entries:[{binding:0,resource:{buffer:r}}]})),s.setBindGroup(1,H(d,d)),s.setBindGroup(2,e.device.createBindGroup({layout:k,entries:[{binding:0,resource:W},{binding:1,resource:F},{binding:2,resource:j},{binding:3,resource:$},{binding:4,resource:z},{binding:5,resource:M}]})),s.draw(4),s.end()}let re=e.renderer.beginFrame(i,y,{r:0,g:0,b:0,a:0},c,B,"load");e.renderer.drawTexture(re,G,{x:0,y:0,width:c,height:B},{opacity:l.opacity??1}),u.pass=re};var ze=le({WebGPURenderer:ve});export{ze as a};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import{a as Q}from"./chunk-XOEEGC4Z.mjs";import{b as Z,c as ee}from"./chunk-IYVN2QEL.mjs";import{a as n}from"./chunk-NQZKBFC6.mjs";import{t as K}from"./chunk-ZNGOAGAI.mjs";import{d as J}from"./chunk-6YJP57MZ.mjs";import{e as b}from"./chunk-BVF64D6H.mjs";b();b();b();b();var R=500,I=100,d=4096,Ge=n.object({id:n.string().default("patch"),centerX:n.number().min(0).max(1).default(.5),centerY:n.number().min(0).max(1).default(.5),offsetX:n.number().min(-d).max(d).default(50),offsetY:n.number().min(-d).max(d).default(0),radius:n.number().min(1).max(R).default(25),sourceRadius:n.number().min(1).max(R).default(25),feather:n.number().min(0).max(I).default(50),opacity:n.number().min(0).max(1).default(1),mode:n.enum(["Clone","SeamlessHeal","TextureTransfer"]).default("SeamlessHeal")}),Ce=Q().field("patches",n.array(Ge).optional(),{label:"Patches",description:"List of patch healing operations applied sequentially."}).field("centerX",n.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center X Signal",description:"Horizontal normalized position of destination patch (0.0 to 1.0)."}).field("centerY",n.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center Y Signal",description:"Vertical normalized position of destination patch (0.0 to 1.0)."}).field("offsetX",n.number().min(-d).max(d).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Offset X Signal",description:"Horizontal pixel distance from destination to sample source patch."}).field("offsetY",n.number().min(-d).max(d).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Offset Y Signal",description:"Vertical pixel distance from destination to sample source patch."}).field("radius",n.number().min(1).max(R).default(25),{bindable:!0,dataTypes:["Number","Signal"],label:"Target Radius Signal",description:"Radius of the destination circular patch in pixels (used when no explicit Mask input is connected)."}).field("sourceRadius",n.number().min(1).max(R).default(25),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Radius Signal",description:"Radius of the source sample circular patch in pixels."}).field("feather",n.number().min(0).max(I).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Feather Signal",description:"Softness edge falloff percentage (0\u2013100%)."}).field("opacity",n.number().min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Opacity Signal",description:"Blending opacity of the healed patch (0.0\u20131.0)."}).field("mode",n.enum(["Clone","SeamlessHeal","TextureTransfer"]).default("SeamlessHeal"),{label:"Healing Mode",description:"Healing algorithm: Clone (direct stamp), SeamlessHeal (Poisson color/lighting blend), TextureTransfer (luminance structure matching)."}).build(),_e=Ce.schema;function te(r){if(r?.patches&&r.patches.length>0)return r.patches.map((s,P)=>({id:s.id||`patch-${P+1}`,centerX:s.centerX??.5,centerY:s.centerY??.5,offsetX:s.offsetX??50,offsetY:s.offsetY??0,radius:s.radius??25,sourceRadius:s.sourceRadius??s.radius??25,feather:s.feather??50,opacity:s.opacity??1,mode:s.mode??"SeamlessHeal"}));let e=r?.radius??25;return[{id:"patch-1",centerX:r?.centerX??.5,centerY:r?.centerY??.5,offsetX:r?.offsetX??50,offsetY:r?.offsetY??0,radius:e,sourceRadius:r?.sourceRadius??e,feather:r?.feather??50,opacity:r?.opacity??1,mode:r?.mode??"SeamlessHeal"}]}var Fe=n.union([Z,ee]);var Me=`
|
|
2
|
+
struct VertexOutput {
|
|
3
|
+
@builtin(position) position : vec4<f32>,
|
|
4
|
+
@location(0) uv : vec2<f32>,
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
@vertex
|
|
8
|
+
fn vs_main(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
|
|
9
|
+
var pos = array<vec2<f32>, 4>(
|
|
10
|
+
vec2<f32>(-1.0, 1.0),
|
|
11
|
+
vec2<f32>( 1.0, 1.0),
|
|
12
|
+
vec2<f32>(-1.0, -1.0),
|
|
13
|
+
vec2<f32>( 1.0, -1.0)
|
|
14
|
+
);
|
|
15
|
+
var uvs = array<vec2<f32>, 4>(
|
|
16
|
+
vec2<f32>(0.0, 0.0),
|
|
17
|
+
vec2<f32>(1.0, 0.0),
|
|
18
|
+
vec2<f32>(0.0, 1.0),
|
|
19
|
+
vec2<f32>(1.0, 1.0)
|
|
20
|
+
);
|
|
21
|
+
var output : VertexOutput;
|
|
22
|
+
output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
|
|
23
|
+
output.uv = uvs[vertexIndex];
|
|
24
|
+
return output;
|
|
25
|
+
}
|
|
26
|
+
`,Xe=`
|
|
27
|
+
struct PatchHealUniforms {
|
|
28
|
+
offsetX : f32,
|
|
29
|
+
offsetY : f32,
|
|
30
|
+
centerX : f32,
|
|
31
|
+
centerY : f32,
|
|
32
|
+
|
|
33
|
+
radius : f32,
|
|
34
|
+
sourceRadius : f32,
|
|
35
|
+
feather : f32,
|
|
36
|
+
opacity : f32,
|
|
37
|
+
|
|
38
|
+
mode : f32,
|
|
39
|
+
hasMask : f32,
|
|
40
|
+
hasOffsetXSig : f32,
|
|
41
|
+
hasOffsetYSig : f32,
|
|
42
|
+
|
|
43
|
+
hasCenterXSig : f32,
|
|
44
|
+
hasCenterYSig : f32,
|
|
45
|
+
hasRadiusSig : f32,
|
|
46
|
+
hasSourceRadSig : f32,
|
|
47
|
+
|
|
48
|
+
hasFeatherSig : f32,
|
|
49
|
+
hasOpacitySig : f32,
|
|
50
|
+
pad0 : f32,
|
|
51
|
+
pad1 : f32,
|
|
52
|
+
};
|
|
53
|
+
`,He=`
|
|
54
|
+
${Xe}
|
|
55
|
+
|
|
56
|
+
@group(0) @binding(0) var<uniform> u : PatchHealUniforms;
|
|
57
|
+
|
|
58
|
+
@group(1) @binding(0) var srcTex : texture_2d<f32>;
|
|
59
|
+
@group(1) @binding(1) var maskTex : texture_2d<f32>;
|
|
60
|
+
@group(1) @binding(2) var samp : sampler;
|
|
61
|
+
|
|
62
|
+
@group(2) @binding(0) var offsetXSigTex : texture_2d<f32>;
|
|
63
|
+
@group(2) @binding(1) var offsetYSigTex : texture_2d<f32>;
|
|
64
|
+
@group(2) @binding(2) var centerXSigTex : texture_2d<f32>;
|
|
65
|
+
@group(2) @binding(3) var centerYSigTex : texture_2d<f32>;
|
|
66
|
+
@group(2) @binding(4) var radiusSigTex : texture_2d<f32>;
|
|
67
|
+
@group(2) @binding(5) var sourceRadSigTex : texture_2d<f32>;
|
|
68
|
+
@group(2) @binding(6) var featherSigTex : texture_2d<f32>;
|
|
69
|
+
@group(2) @binding(7) var opacitySigTex : texture_2d<f32>;
|
|
70
|
+
@group(2) @binding(8) var signalSamp : sampler;
|
|
71
|
+
|
|
72
|
+
fn getLuminance(c : vec3<f32>) -> f32 {
|
|
73
|
+
return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
fn sampleBoxBlur(tex : texture_2d<f32>, smp : sampler, centerUv : vec2<f32>, blurPx : f32, dims : vec2<f32>) -> vec4<f32> {
|
|
77
|
+
let texel = 1.0 / dims;
|
|
78
|
+
let stepSize = max(1.0, blurPx / 3.0);
|
|
79
|
+
var accum = vec4<f32>(0.0);
|
|
80
|
+
var count = 0.0;
|
|
81
|
+
|
|
82
|
+
for (var y = -2; y <= 2; y++) {
|
|
83
|
+
for (var x = -2; x <= 2; x++) {
|
|
84
|
+
let offset = vec2<f32>(f32(x) * stepSize, f32(y) * stepSize) * texel;
|
|
85
|
+
let sampleUv = clamp(centerUv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
86
|
+
accum += textureSampleLevel(tex, smp, sampleUv, 0.0);
|
|
87
|
+
count += 1.0;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return accum / count;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@fragment
|
|
94
|
+
fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
95
|
+
let dimensions = vec2<f32>(textureDimensions(srcTex));
|
|
96
|
+
|
|
97
|
+
var offsetX = u.offsetX;
|
|
98
|
+
if (u.hasOffsetXSig > 0.5) {
|
|
99
|
+
offsetX = textureSampleLevel(offsetXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
100
|
+
}
|
|
101
|
+
var offsetY = u.offsetY;
|
|
102
|
+
if (u.hasOffsetYSig > 0.5) {
|
|
103
|
+
offsetY = textureSampleLevel(offsetYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
104
|
+
}
|
|
105
|
+
var centerX = u.centerX;
|
|
106
|
+
if (u.hasCenterXSig > 0.5) {
|
|
107
|
+
centerX = textureSampleLevel(centerXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
108
|
+
}
|
|
109
|
+
var centerY = u.centerY;
|
|
110
|
+
if (u.hasCenterYSig > 0.5) {
|
|
111
|
+
centerY = textureSampleLevel(centerYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
112
|
+
}
|
|
113
|
+
var radius = u.radius;
|
|
114
|
+
if (u.hasRadiusSig > 0.5) {
|
|
115
|
+
radius = textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
116
|
+
}
|
|
117
|
+
var sourceRadius = u.sourceRadius;
|
|
118
|
+
if (u.hasSourceRadSig > 0.5) {
|
|
119
|
+
sourceRadius = textureSampleLevel(sourceRadSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
120
|
+
}
|
|
121
|
+
var feather = u.feather;
|
|
122
|
+
if (u.hasFeatherSig > 0.5) {
|
|
123
|
+
feather = textureSampleLevel(featherSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
124
|
+
}
|
|
125
|
+
var opacity = u.opacity;
|
|
126
|
+
if (u.hasOpacitySig > 0.5) {
|
|
127
|
+
opacity = textureSampleLevel(opacitySigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
let dstCol = textureSampleLevel(srcTex, samp, in.uv, 0.0);
|
|
131
|
+
|
|
132
|
+
// Calculate mask weight (either from explicit mask or procedural circular patch)
|
|
133
|
+
var maskWeight = 0.0;
|
|
134
|
+
let targetCenterUV = vec2<f32>(centerX, centerY);
|
|
135
|
+
|
|
136
|
+
if (u.hasMask > 0.5) {
|
|
137
|
+
let maskCol = textureSampleLevel(maskTex, samp, in.uv, 0.0);
|
|
138
|
+
maskWeight = max(maskCol.a, max(maskCol.r, max(maskCol.g, maskCol.b)));
|
|
139
|
+
} else {
|
|
140
|
+
let distPx = length((in.uv - targetCenterUV) * dimensions);
|
|
141
|
+
let innerRadius = radius * max(0.0, 1.0 - feather / 100.0);
|
|
142
|
+
maskWeight = 1.0 - smoothstep(innerRadius, max(innerRadius + 0.001, radius), distPx);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
let blendWeight = clamp(maskWeight * opacity, 0.0, 1.0);
|
|
146
|
+
if (blendWeight < 1e-4) {
|
|
147
|
+
return dstCol;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Compute source sample coordinate (scaling from sourceRadius to target radius if different)
|
|
151
|
+
let sourceCenterUV = targetCenterUV + vec2<f32>(offsetX, offsetY) / dimensions;
|
|
152
|
+
let srcScale = max(1.0, sourceRadius) / max(1.0, radius);
|
|
153
|
+
let uvFromTargetCenter = in.uv - targetCenterUV;
|
|
154
|
+
let srcUV = clamp(sourceCenterUV + uvFromTargetCenter * srcScale, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
155
|
+
let srcCol = textureSampleLevel(srcTex, samp, srcUV, 0.0);
|
|
156
|
+
|
|
157
|
+
var healedCol = srcCol;
|
|
158
|
+
|
|
159
|
+
if (u.mode > 0.5 && u.mode < 1.5) {
|
|
160
|
+
// Mode 1: Seamless Heal (Poisson gradient / local illumination matching)
|
|
161
|
+
let blurRadius = max(4.0, radius * 0.4);
|
|
162
|
+
let srcBlur = sampleBoxBlur(srcTex, samp, srcUV, blurRadius, dimensions);
|
|
163
|
+
let dstBlur = sampleBoxBlur(srcTex, samp, in.uv, blurRadius, dimensions);
|
|
164
|
+
|
|
165
|
+
let srcDetail = srcCol.rgb - srcBlur.rgb;
|
|
166
|
+
let healedRgb = dstBlur.rgb + srcDetail;
|
|
167
|
+
let clampedRgb = clamp(healedRgb, vec3<f32>(0.0), vec3<f32>(srcCol.a));
|
|
168
|
+
healedCol = vec4<f32>(clampedRgb, srcCol.a);
|
|
169
|
+
} else if (u.mode >= 1.5) {
|
|
170
|
+
// Mode 2: Texture Transfer (Luminance structure matching)
|
|
171
|
+
let blurRadius = max(4.0, radius * 0.4);
|
|
172
|
+
let srcBlur = sampleBoxBlur(srcTex, samp, srcUV, blurRadius, dimensions);
|
|
173
|
+
|
|
174
|
+
let lumaSrc = getLuminance(srcCol.rgb);
|
|
175
|
+
let lumaSrcBlur = getLuminance(srcBlur.rgb);
|
|
176
|
+
let lumaDelta = lumaSrc - lumaSrcBlur;
|
|
177
|
+
|
|
178
|
+
let healedRgb = dstCol.rgb + vec3<f32>(lumaDelta);
|
|
179
|
+
let clampedRgb = clamp(healedRgb, vec3<f32>(0.0), vec3<f32>(dstCol.a));
|
|
180
|
+
healedCol = vec4<f32>(clampedRgb, dstCol.a);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return mix(dstCol, healedCol, blendWeight);
|
|
184
|
+
}
|
|
185
|
+
`,ae=new WeakMap;function Ue(r,e){let s=ae.get(r);if(s)return s;let P=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),U=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),v=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:6,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:7,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:8,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),L=r.createShaderModule({code:`${Me}
|
|
186
|
+
${He}`}),N=r.createPipelineLayout({bindGroupLayouts:[P,U,v]}),i=r.createRenderPipeline({layout:N,vertex:{module:L,entryPoint:"vs_main"},fragment:{module:L,entryPoint:"fs_main",targets:[{format:e,blend:{color:{srcFactor:"one",dstFactor:"zero",operation:"add"},alpha:{srcFactor:"one",dstFactor:"zero",operation:"add"}}}]},primitive:{topology:"triangle-strip"}});return s={uniformLayout:P,textureLayout:U,signalTextureLayout:v,pipeline:i},ae.set(r,s),s}var re=async r=>{let{ctx:e,encoder:s,pass:P,targetView:U,targetTexture:v,targetWidth:L,targetHeight:N,props:i,drawChild:W}=r,p=i.virtualMedia?.operation;if(p?.op!=="PatchHeal"||!p)return;let k=i.virtualMedia?.children?.[0];if(!k)return;P.end();let l=L,c=N,B=i.frame??0,z=i.compositionFrame??B,Y=i.fps||30,ie=p.inputs?Object.keys(p.inputs)[0]:"patch_heal_node",V=J,h=e.renderer.getTemporaryTexture(l,c,[...i.excludeTextures||[],v]),_=h.createView();e.renderer.beginFrame(s,_,{r:0,g:0,b:0,a:0},l,c,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:l,height:c}),e.renderer.pushIdentity(),await W(k,{...i,virtualMedia:k,renderId:`${i.renderId}-src`,excludeTextures:[...i.excludeTextures||[],h]},_,h,l,c),e.renderer.popTransform(),e.renderer.popScissor();let m=null;if(p.maskMedia){m=e.renderer.getTemporaryTexture(l,c,[...i.excludeTextures||[],v,h]);let g=m.createView();e.renderer.beginFrame(s,g,{r:0,g:0,b:0,a:0},l,c,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:l,height:c}),e.renderer.pushIdentity(),await W(p.maskMedia,{...i,virtualMedia:p.maskMedia,renderId:`${i.renderId}-mask`,excludeTextures:[...i.excludeTextures||[],h,m]},g,m,l,c),e.renderer.popTransform(),e.renderer.popScissor()}let{pipeline:se,uniformLayout:ne,textureLayout:oe,signalTextureLayout:ue}=Ue(e.device,e.renderer.format),$=e.renderer.samplerCache.getSampler(e.device),le=i.elapsedMs!==void 0?i.elapsedMs/1e3:B/Y,ce=i.virtualMedia?.metadata?.durationMs?i.virtualMedia.metadata.durationMs/1e3:i.durationMs!==void 0?i.durationMs/1e3:0,A=te(p),S=(g,t,f,y)=>{let H=`${g}HandleId`,G=p[H],u=G?p.inputs?.[G]:null,C=!!(u?.connectionValid&&(u.outputItem?.type==="Signal"||u.outputItem?.type==="Numeric")),T=C&&u?.outputItem?.data?u.outputItem.data:null,x=t,M=!1;if(C)T&&(x=Math.max(f,Math.min(y,Number(T.offset??0))),M=!0);else if(u?.connectionValid&&u.outputItem?.type==="Number"){let a=typeof u.outputItem.data=="number"?u.outputItem.data:u.outputItem.data?.value??t;x=Math.max(f,Math.min(y,Number(a)))}else{let a=t;a!=null&&(typeof a=="object"?"get"in a&&typeof a.get=="function"?a=a.get({frame:z,fps:Y}):"value"in a&&(a=a.value):typeof a=="function"&&(a=a(z,Y)));let F=Number(a??t);x=Math.max(f,Math.min(y,isNaN(F)?t:F))}return{val:x,hasStaticSig:M,sd:T}},de=m?m.createView():_,E=h,D=e.renderer.getTemporaryTexture(l,c,[h,...m?[m]:[],v,...i.excludeTextures||[]]),fe=A.length>1?e.renderer.getTemporaryTexture(l,c,[h,D,...m?[m]:[],v,...i.excludeTextures||[]]):D;for(let g=0;g<A.length;g++){let t=A[g],f=g===0,y=f?S("centerX",t.centerX,0,1):{val:t.centerX,hasStaticSig:!1,sd:null},H=f?S("centerY",t.centerY,0,1):{val:t.centerY,hasStaticSig:!1,sd:null},G=f?S("offsetX",t.offsetX,-d,d):{val:t.offsetX,hasStaticSig:!1,sd:null},u=f?S("offsetY",t.offsetY,-d,d):{val:t.offsetY,hasStaticSig:!1,sd:null},C=f?S("radius",t.radius,1,R):{val:t.radius,hasStaticSig:!1,sd:null},T=f?S("sourceRadius",t.sourceRadius??t.radius,1,R):{val:t.sourceRadius??t.radius,hasStaticSig:!1,sd:null},x=f?S("feather",t.feather,0,I):{val:t.feather,hasStaticSig:!1,sd:null},M=f?S("opacity",t.opacity,0,1):{val:t.opacity,hasStaticSig:!1,sd:null},a=(w,Pe)=>w.hasStaticSig&&w.sd&&V?V.getOrCreate2DTextureView(e.device,s,w.sd.nodeId??`${ie}_${Pe}`,le,ce,w.sd,l,c,i.renderId,B,Y):V?V.getDummy1x1TextureView(e.device):_,F=a(G,"offsetX_sig"),me=a(u,"offsetY_sig"),pe=a(y,"centerX_sig"),ge=a(H,"centerY_sig"),he=a(C,"radius_sig"),Se=a(T,"sourceRadius_sig"),xe=a(x,"feather_sig"),be=a(M,"opacity_sig"),ve=t.mode==="Clone"?0:t.mode==="TextureTransfer"?2:1,o=new Float32Array(20);o[0]=G.val,o[1]=u.val,o[2]=y.val,o[3]=H.val,o[4]=C.val,o[5]=T.val,o[6]=x.val,o[7]=M.val,o[8]=ve,o[9]=m?1:0,o[10]=G.hasStaticSig?1:0,o[11]=u.hasStaticSig?1:0,o[12]=y.hasStaticSig?1:0,o[13]=H.hasStaticSig?1:0,o[14]=C.hasStaticSig?1:0,o[15]=T.hasStaticSig?1:0,o[16]=x.hasStaticSig?1:0,o[17]=M.hasStaticSig?1:0,o[18]=0,o[19]=0;let ye=e.renderer.getTemporaryBuffer(o),q=g%2===0?D:fe,Te=e.device.createBindGroup({layout:oe,entries:[{binding:0,resource:E.createView()},{binding:1,resource:de},{binding:2,resource:$}]}),Re=e.device.createBindGroup({layout:ue,entries:[{binding:0,resource:F},{binding:1,resource:me},{binding:2,resource:pe},{binding:3,resource:ge},{binding:4,resource:he},{binding:5,resource:Se},{binding:6,resource:xe},{binding:7,resource:be},{binding:8,resource:$}]}),X=s.beginRenderPass({colorAttachments:[{view:q.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});X.setPipeline(se),X.setBindGroup(0,e.device.createBindGroup({layout:ne,entries:[{binding:0,resource:{buffer:ye}}]})),X.setBindGroup(1,Te),X.setBindGroup(2,Re),X.draw(4),X.end(),E=q}let j=e.renderer.beginFrame(s,U,{r:0,g:0,b:0,a:0},l,c,"load");e.renderer.drawTexture(j,E,{x:0,y:0,width:l,height:c},{opacity:1}),r.pass=j};var $e=K({WebGPURenderer:re});export{re as a,$e as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Z}from"./chunk-LKYN3BM2.mjs";import{a as mt}from"./chunk-JPXQPP6J.mjs";import{a as B}from"./chunk-CNSHAFEA.mjs";import{a as pt,b as K,d as dt,e as L}from"./chunk-
|
|
1
|
+
import{a as Z}from"./chunk-LKYN3BM2.mjs";import{a as mt}from"./chunk-JPXQPP6J.mjs";import{a as B}from"./chunk-CNSHAFEA.mjs";import{a as pt,b as K,d as dt,e as L}from"./chunk-36YGYLKD.mjs";import{a as ct,b as ht}from"./chunk-AEK5BO3J.mjs";import{d as R,f as G,g as M,i as ft}from"./chunk-MJM3NFEC.mjs";import{d as lt}from"./chunk-HYBAPT6I.mjs";import{e as g}from"./chunk-BVF64D6H.mjs";g();var $=class{constructor(t,e){this.url=t;this.isHeadless=e}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let t=await L.acquire(this.url);this.destroyed?L.release(this.url):this.input=t}catch(t){throw this.initPromise=null,t}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(L.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},J=class extends ${canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];isDecoding=!1;decodeBuffer=null;nextRequest=null;pushHeadlessQueue(t){let e=this.headlessQueue.findIndex(r=>r.timestamp>t.timestamp);e===-1?this.headlessQueue.push(t):this.headlessQueue.splice(e,0,t)}async fillHeadlessQueue(t){if(this.iterator)for(;this.headlessQueue.length<2;){let e=await this.iterator.next();if(this.currentFetchId!==t){e.value?.close?.();return}if(e.done||!e.value)break;this.pushHeadlessQueue(e.value)}}async closeIterator(t){if(t)try{await t.return()}catch{}}resetSinks(){let t=this.iterator;if(this.iterator=null,t)try{t.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let e of this.headlessQueue)try{e.close()}catch{}this.headlessQueue=[],this.decodeBuffer=null,this.iteratorStartTimestamp=-1}onDestroy(){this.resetSinks()}async startIterator(t,e){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let n=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed)return;this.currentFrame=n.value??null;let s=await this.iterator.next();this.currentFetchId!==e||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(t,e){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(t)?t:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==e||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let n=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(n),await this.fillHeadlessQueue(e),!(this.currentFetchId!==e||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(t){if(await this.init(),this.destroyed||!this.input)return null;let e=Math.max(0,Number.isFinite(t)?t:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:e,resolve:r,reject:i}})):this.executeDecode(e)}async executeDecode(t){this.isDecoding=!0;try{return await this.performDecode(t)}finally{if(this.isDecoding=!1,this.nextRequest){let e=this.nextRequest;this.nextRequest=null,this.executeDecode(e.timestampSec).then(e.resolve).catch(e.reject)}}}async performDecodeHeadless(t,e){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let h=await this.input.getPrimaryVideoTrack();if(!h)return null;this.videoSampleSink=new pt(h)}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&t<this.headlessQueue[0].timestamp-.01||this.headlessQueue.length>0&&t-this.headlessQueue[0].timestamp>1)&&(await this.startIteratorHeadless(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(e),this.currentFetchId!==e||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=t+r){this.headlessQueue.shift()?.close();continue}break}let s=this.headlessQueue[0];if(!s)return null;let a=s.displayWidth,o=s.displayHeight,l=a*o*4,c=this.decodeBuffer;return(!c||c.length!==l)&&(c=new Uint8Array(l),this.decodeBuffer=c),await s.copyTo(c,{format:"RGBA"}),this.currentFetchId!==e||this.destroyed||!this.input?null:{width:a,height:o,buffer:c}}async performDecodeInternal(t){this.currentFetchId++;let e=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(t,e);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let a=await this.input.getPrimaryVideoTrack();if(!a)return null;this.canvasSink=new K(a,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||t<this.iteratorStartTimestamp-r||this.currentFrame&&t<this.currentFrame.timestamp-.01||this.currentFrame&&t-this.currentFrame.timestamp>1)&&(await this.startIterator(t,e),this.currentFetchId!==e||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=t+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let a=await this.iterator.next();if(this.currentFetchId!==e||this.destroyed||!this.input)return null;this.nextFrame=a.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(t){let e=Math.max(0,Number.isFinite(t)?t:0);try{return await this.performDecodeInternal(e)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let n=await this.input.getPrimaryVideoTrack();if(n&&!this.destroyed)return this.canvasSink=new K(n,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(e)}}catch{}throw r}}},tt=class extends ${audioSink=null;onDestroy(){this.audioSink=null}async startIterator(t,e){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(t),this.iteratorStartTimestamp=t)}async*getBuffers(t){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new dt(i)}(!this.iterator||Math.abs(t-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(t,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(e){let r=e;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw e}finally{let e=this.currentFetchId;this.currentFetchId===e&&(this.iterator=null)}}},et=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;touchKey(t){this.lastAccessed.set(t,Date.now())}destroy(){for(let t of this.videoDecoders.values())try{t.destroy()}catch{}this.videoDecoders.clear();for(let t of this.audioDecoders.values())try{t.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear()}prune(t=3e5){let e=Date.now();for(let[r,i]of this.lastAccessed.entries())if(e-i>t){let n=this.videoDecoders.get(r);n&&(n.destroy(),this.videoDecoders.delete(r));let s=this.audioDecoders.get(r);s&&(s.destroy(),this.audioDecoders.delete(r)),this.lastAccessed.delete(r)}}getVideo(t,e,r){let i=`${t}-${e}-${r??"default"}`,n=this.videoDecoders.get(i);return n||(n=new J(t,e),this.videoDecoders.set(i,n)),this.touchKey(i),this.prune(),n}getAudio(t,e){let r=`${t}-${e??"default"}`,i=this.audioDecoders.get(r);return i||(i=new tt(t,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(t){for(let[e,r]of this.videoDecoders)e.includes(t)&&(r.destroy(),this.videoDecoders.delete(e),this.lastAccessed.delete(e));for(let[e,r]of this.audioDecoders)e.includes(t)&&(r.destroy(),this.audioDecoders.delete(e),this.lastAccessed.delete(e))}},Vt=new et;g();g();var yt=`
|
|
2
2
|
struct CompositeUniforms {
|
|
3
3
|
blendMode : u32,
|
|
4
4
|
padding1 : u32,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as V}from"./chunk-6YJP57MZ.mjs";import{e as
|
|
1
|
+
import{d as V}from"./chunk-6YJP57MZ.mjs";import{e as w}from"./chunk-BVF64D6H.mjs";w();w();var O=new WeakMap,ce=`
|
|
2
2
|
struct ColorBalanceUniforms {
|
|
3
3
|
shadows : vec4<f32>,
|
|
4
4
|
midtones : vec4<f32>,
|
|
@@ -131,4 +131,4 @@ fn set_luminance(c: vec3<f32>, l: f32) -> vec3<f32> {
|
|
|
131
131
|
|
|
132
132
|
return vec4<f32>(adjustedRgb * alpha, alpha);
|
|
133
133
|
}
|
|
134
|
-
`;function
|
|
134
|
+
`;function he(r,t){let s=O.get(r);if(s)return s;let S=r.createBindGroupLayout({label:"ColorBalanceUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),v=r.createBindGroupLayout({label:"ColorBalanceTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),f=r.createBindGroupLayout({label:"ColorBalanceSignalTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:6,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:7,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:8,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:9,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),c=r.createShaderModule({label:"ColorBalanceShaderModule",code:ce});return s={pipeline:r.createRenderPipeline({label:"ColorBalancePipeline",layout:r.createPipelineLayout({bindGroupLayouts:[S,v,f]}),vertex:{module:c,entryPoint:"vs"},fragment:{module:c,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-strip"}}),uniformLayout:S,textureLayout:v,signalTextureLayout:f},O.set(r,s),s}var e=new Float32Array(24),k=async r=>{let{ctx:t,encoder:s,pass:S,targetView:v,targetTexture:f,targetWidth:c,targetHeight:y,props:n,drawChild:W}=r,i=n.virtualMedia?.operation;if(i?.op!=="ColorBalance"||!n.virtualMedia?.children?.[0])return;S.end();let G=n.frame??0,H=n.compositionFrame??G,b=n.fps||30,F=n.virtualMedia.children[0],h=c,m=y,j=n.virtualMedia?.metadata?.id||(i.inputs?Object.keys(i.inputs)[0]:null)||n.renderId||"colorbalance_node",o=(a,g,I=-100,D=100)=>{if(a&&i.inputs?.[a]?.connectionValid){let u=i.inputs[a].outputItem;if(u?.type==="Number"){let ge=typeof u.data=="number"?u.data:u.data?.value??g;return{val:Math.max(I,Math.min(D,ge)),hasStaticSig:!1,sd:null}}if(u?.type==="Signal"&&u.data)return{val:g,hasStaticSig:!0,sd:u.data}}return{val:Math.max(I,Math.min(D,g)),hasStaticSig:!1,sd:null}},l=a=>{a!=null&&(typeof a=="object"&&a!==null?"get"in a&&typeof a.get=="function"?a=a.get({frame:H,fps:b}):"value"in a&&(a=a.value):typeof a=="function"&&(a=a(H,b)));let g=Number(a??0);return isNaN(g)?0:g},B=o(i.shadows_cyanRedHandleId,l(i.shadows?.cyanRed)),R=o(i.shadows_magentaGreenHandleId,l(i.shadows?.magentaGreen)),T=o(i.shadows_yellowBlueHandleId,l(i.shadows?.yellowBlue)),M=o(i.midtones_cyanRedHandleId,l(i.midtones?.cyanRed)),_=o(i.midtones_magentaGreenHandleId,l(i.midtones?.magentaGreen)),C=o(i.midtones_yellowBlueHandleId,l(i.midtones?.yellowBlue)),L=o(i.highlights_cyanRedHandleId,l(i.highlights?.cyanRed)),P=o(i.highlights_magentaGreenHandleId,l(i.highlights?.magentaGreen)),U=o(i.highlights_yellowBlueHandleId,l(i.highlights?.yellowBlue)),x=t.renderer.getTemporaryTexture(h,m,[...n.excludeTextures||[],f]),N=x.createView();t.renderer.beginFrame(s,N,{r:0,g:0,b:0,a:0},h,m,"clear").end(),t.renderer.pushScissor({x:0,y:0,width:h,height:m}),t.renderer.pushIdentity(),await W(F,{...n,virtualMedia:F},N,x,h,m),t.renderer.popTransform(),t.renderer.popScissor();let{pipeline:$,uniformLayout:q,textureLayout:z,signalTextureLayout:J}=he(t.device,t.renderer.format),A=t.renderer.samplerCache.getSampler(t.device),K=n.elapsedMs!==void 0?n.elapsedMs/1e3:G/b,Q=n.virtualMedia?.metadata?.durationMs?n.virtualMedia.metadata.durationMs/1e3:n.durationMs!==void 0?n.durationMs/1e3:0,d=(a,g)=>a.hasStaticSig&&a.sd?V.getOrCreate2DTextureView(t.device,s,a.sd.nodeId??`${j}_${g}`,K,Q,a.sd,h,m,n.renderId,G,b):V.getDummy1x1TextureView(t.device),X=d(B,"shadows_cyanRed_sig"),Z=d(R,"shadows_magentaGreen_sig"),ee=d(T,"shadows_yellowBlue_sig"),ie=d(M,"midtones_cyanRed_sig"),ae=d(_,"midtones_magentaGreen_sig"),te=d(C,"midtones_yellowBlue_sig"),ne=d(L,"highlights_cyanRed_sig"),re=d(P,"highlights_magentaGreen_sig"),se=d(U,"highlights_yellowBlue_sig"),oe=i.preserveLuminosity===!1?0:1;e[0]=B.val/100,e[1]=R.val/100,e[2]=T.val/100,e[3]=0,e[4]=M.val/100,e[5]=_.val/100,e[6]=C.val/100,e[7]=0,e[8]=L.val/100,e[9]=P.val/100,e[10]=U.val/100,e[11]=0,e[12]=oe,e[13]=B.hasStaticSig?1:0,e[14]=R.hasStaticSig?1:0,e[15]=T.hasStaticSig?1:0,e[16]=M.hasStaticSig?1:0,e[17]=_.hasStaticSig?1:0,e[18]=C.hasStaticSig?1:0,e[19]=L.hasStaticSig?1:0,e[20]=P.hasStaticSig?1:0,e[21]=U.hasStaticSig?1:0,e[22]=0,e[23]=0;let le=t.renderer.getTemporaryBuffer(e),Y=t.renderer.getTemporaryTexture(h,m,[x,f,...n.excludeTextures||[]]),de=t.device.createBindGroup({layout:J,entries:[{binding:0,resource:X},{binding:1,resource:Z},{binding:2,resource:ee},{binding:3,resource:ie},{binding:4,resource:ae},{binding:5,resource:te},{binding:6,resource:ne},{binding:7,resource:re},{binding:8,resource:se},{binding:9,resource:A}]}),p=s.beginRenderPass({colorAttachments:[{view:Y.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline($),p.setBindGroup(0,t.device.createBindGroup({layout:q,entries:[{binding:0,resource:{buffer:le}}]})),p.setBindGroup(1,t.renderer.bindGroupCache.getBindGroup(t.device,z,x,A)),p.setBindGroup(2,de),p.draw(4),p.end();let E=t.renderer.beginFrame(s,v,{r:0,g:0,b:0,a:0},c,y,"load");t.renderer.drawTexture(E,Y,{x:0,y:0,width:c,height:y},{opacity:n.opacity??1}),r.pass=E};var ye={WebGPURenderer:k};export{k as a,ye as b};
|