framefields 2.0.7 → 2.0.9
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-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/{audio-D6enPyAG.mjs → audio-Dev4NGPa.mjs} +3 -3
- package/dist/{audio-D6enPyAG.mjs.map → audio-Dev4NGPa.mjs.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-JkiL-qy7.mjs → dist-CoSg-CWr.mjs} +21 -11
- package/dist/dist-CoSg-CWr.mjs.map +1 -0
- package/dist/{dist-sHqWCB9M.mjs → dist-DgfykO99.mjs} +61 -10
- package/dist/dist-DgfykO99.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-l0T61DPU.mjs → effects-hxRwxjyC.mjs} +27 -3
- package/dist/effects-hxRwxjyC.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-CuG-05-_.mjs → fonts-BznIea-I.mjs} +2 -2
- package/dist/{fonts-CuG-05-_.mjs.map → fonts-BznIea-I.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-4z1jNSej.mjs → preview-DZTbEON9.mjs} +2 -2
- package/dist/{preview-4z1jNSej.mjs.map → preview-DZTbEON9.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-45JOFIHE.mjs → chunk-5PPSCISJ.mjs} +1 -1
- 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-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-5NYKHIQN.mjs → chunk-BUWK5RJ4.mjs} +9 -9
- 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-OZVCWK27.mjs → chunk-OF75EHTX.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-MC7TZZLD.mjs → chunk-T6COGNOW.mjs} +2 -2
- package/dist/preview-engine/chunk-VVLM6LZ3.mjs +1 -0
- package/dist/preview-engine/{chunk-RJJRPL42.mjs → chunk-VWLR2AZR.mjs} +1 -1
- package/dist/preview-engine/{chunk-KNZU3Z2F.mjs → chunk-WQ7BFSKF.mjs} +1 -1
- package/dist/preview-engine/chunk-XUM42I4R.mjs +1 -0
- package/dist/preview-engine/chunk-ZDCA6NVT.mjs +82 -0
- package/dist/preview-engine/{chunk-YK4XHUP4.mjs → chunk-ZJFAGIOM.mjs} +6 -6
- package/dist/preview-engine/{chunk-EJTGJVUA.mjs → chunk-ZSIJB76A.mjs} +2 -2
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +13 -13
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-GYJTBVV2.mjs → renderers-27Q5X3U6.mjs} +1 -1
- 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-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-LTNTQLWE.mjs +248 -0
- 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-DPFDbeL9.mjs → program-C797QMRL.mjs} +2 -2
- package/dist/{program-DPFDbeL9.mjs.map → program-C797QMRL.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-C-F91lPu.mjs → renderer--vY6O19V.mjs} +2 -2
- package/dist/{renderer-C-F91lPu.mjs.map → renderer--vY6O19V.mjs.map} +1 -1
- 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-3uTfN95I.mjs +3 -0
- package/dist/{renderer-CLUPc9do.mjs → renderer-5jfDUKd4.mjs} +2 -2
- package/dist/{renderer-CLUPc9do.mjs.map → renderer-5jfDUKd4.mjs.map} +1 -1
- package/dist/{renderer-DvHpzsUV.mjs → renderer-6PqlYQjC.mjs} +10 -9
- package/dist/{renderer-DvHpzsUV.mjs.map → renderer-6PqlYQjC.mjs.map} +1 -1
- package/dist/{renderer-BbwOEawB.mjs → renderer-9QCHY8Kh.mjs} +18 -4
- package/dist/renderer-9QCHY8Kh.mjs.map +1 -0
- package/dist/{renderer-CmMNU1-P.mjs → renderer-B1UeU7lX.mjs} +21 -18
- package/dist/renderer-B1UeU7lX.mjs.map +1 -0
- package/dist/{renderer-BHsEOp1I.mjs → renderer-B4ecTNR7.mjs} +18 -11
- package/dist/renderer-B4ecTNR7.mjs.map +1 -0
- package/dist/renderer-B5GslTP-.mjs +3 -0
- package/dist/{renderer-BgrDGRNW.mjs → renderer-B8gTyU3w.mjs} +18 -17
- package/dist/renderer-B8gTyU3w.mjs.map +1 -0
- package/dist/{renderer-L72D1mwv.mjs → renderer-BE4Ns0nw.mjs} +2 -2
- package/dist/{renderer-L72D1mwv.mjs.map → renderer-BE4Ns0nw.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-By91JEn8.mjs → renderer-BTYncYDf.mjs} +74 -63
- package/dist/{renderer-By91JEn8.mjs.map → renderer-BTYncYDf.mjs.map} +1 -1
- package/dist/renderer-BUIWeIKQ.mjs +3 -0
- package/dist/{renderer-DVj8jfmO.mjs → renderer-BXaK02qA.mjs} +2 -2
- package/dist/{renderer-DVj8jfmO.mjs.map → renderer-BXaK02qA.mjs.map} +1 -1
- package/dist/renderer-B_LfC88A.mjs +3 -0
- package/dist/renderer-B_zmicsE.mjs +3 -0
- package/dist/{renderer-DJPuwTbS.mjs → renderer-BcPpcKDI.mjs} +2 -2
- package/dist/{renderer-DJPuwTbS.mjs.map → renderer-BcPpcKDI.mjs.map} +1 -1
- package/dist/{renderer-CsE9ztUa.mjs → renderer-BgqjWI7K.mjs} +2 -2
- package/dist/{renderer-CsE9ztUa.mjs.map → renderer-BgqjWI7K.mjs.map} +1 -1
- package/dist/{renderer-Cn-p1SyO.mjs → renderer-BpJgfBQ8.mjs} +2 -2
- package/dist/{renderer-Cn-p1SyO.mjs.map → renderer-BpJgfBQ8.mjs.map} +1 -1
- package/dist/renderer-BtNxtXkR.mjs +3 -0
- package/dist/{renderer-Bpf8EGY1.mjs → renderer-BwmZUkvd.mjs} +2 -2
- package/dist/{renderer-Bpf8EGY1.mjs.map → renderer-BwmZUkvd.mjs.map} +1 -1
- package/dist/{renderer-7v-ZNKEJ.mjs → renderer-C-PfbkPu.mjs} +2 -2
- package/dist/{renderer-7v-ZNKEJ.mjs.map → renderer-C-PfbkPu.mjs.map} +1 -1
- package/dist/renderer-C-sZSHtf.mjs +3 -0
- package/dist/renderer-C1zifktw.mjs +3 -0
- package/dist/{renderer-BV_d3D_3.mjs → renderer-C2gnWTQZ.mjs} +2 -2
- package/dist/{renderer-BV_d3D_3.mjs.map → renderer-C2gnWTQZ.mjs.map} +1 -1
- package/dist/{renderer-BShK_xMJ.mjs → renderer-CB8hMQgm.mjs} +1 -1
- package/dist/renderer-CCt2XTSM.mjs +3 -0
- package/dist/{renderer-CLWAbaCS.mjs → renderer-CKJb_Lky.mjs} +2 -2
- package/dist/{renderer-CLWAbaCS.mjs.map → renderer-CKJb_Lky.mjs.map} +1 -1
- package/dist/renderer-CMXcaArD.mjs +3 -0
- package/dist/{renderer-doPt4zQZ.mjs → renderer-CV8diddR.mjs} +2 -2
- package/dist/{renderer-doPt4zQZ.mjs.map → renderer-CV8diddR.mjs.map} +1 -1
- package/dist/renderer-CW9D5zCP.mjs +3 -0
- package/dist/{renderer-B1IXTeF2.mjs → renderer-CckJJHbM.mjs} +2 -2
- package/dist/{renderer-B1IXTeF2.mjs.map → renderer-CckJJHbM.mjs.map} +1 -1
- 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-CjY77sB_.mjs +3 -0
- package/dist/{renderer-DnXQXk-8.mjs → renderer-CpUbDJAV.mjs} +5 -4
- package/dist/{renderer-DnXQXk-8.mjs.map → renderer-CpUbDJAV.mjs.map} +1 -1
- package/dist/{renderer-DRf4FLSq.mjs → renderer-CrVAvP92.mjs} +2 -2
- package/dist/{renderer-DRf4FLSq.mjs.map → renderer-CrVAvP92.mjs.map} +1 -1
- package/dist/{renderer-Cgy1H0Ql.mjs → renderer-CuqhAB4i.mjs} +11 -5
- package/dist/renderer-CuqhAB4i.mjs.map +1 -0
- package/dist/{renderer--akPySto.mjs → renderer-CxQ5v4fJ.mjs} +11 -5
- package/dist/renderer-CxQ5v4fJ.mjs.map +1 -0
- package/dist/renderer-D1R7vBUl.mjs +3 -0
- 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-CM5c8a7B.mjs → renderer-D3uNI10l.mjs} +7 -7
- package/dist/{renderer-CM5c8a7B.mjs.map → renderer-D3uNI10l.mjs.map} +1 -1
- package/dist/renderer-D5yawxtJ.mjs +3 -0
- package/dist/{renderer-B52Y2SDC.mjs → renderer-D6Gi_h4K.mjs} +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-BNBh4omF.mjs → renderer-DAFyJ4dv.mjs} +2 -2
- package/dist/{renderer-BNBh4omF.mjs.map → renderer-DAFyJ4dv.mjs.map} +1 -1
- package/dist/renderer-DC8jr1Ay.mjs +3 -0
- package/dist/{renderer-BhfFVqCx.mjs → renderer-DCK73tcD.mjs} +17 -4
- package/dist/renderer-DCK73tcD.mjs.map +1 -0
- package/dist/renderer-DCv-Abvn.mjs +4 -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-DPLFhzaV.mjs +3 -0
- package/dist/{renderer-BXWu8aHU.mjs → renderer-DPpgBTlK.mjs} +2 -2
- package/dist/{renderer-BXWu8aHU.mjs.map → renderer-DPpgBTlK.mjs.map} +1 -1
- package/dist/{renderer-E5D4H5dK.mjs → renderer-DRpE3ZW4.mjs} +2 -2
- package/dist/{renderer-E5D4H5dK.mjs.map → renderer-DRpE3ZW4.mjs.map} +1 -1
- package/dist/renderer-DVsF2FDr.mjs +3 -0
- package/dist/{renderer-BUJ6uaJE.mjs → renderer-DX38J6mK.mjs} +7 -6
- package/dist/{renderer-BUJ6uaJE.mjs.map → renderer-DX38J6mK.mjs.map} +1 -1
- 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-DetDm3ep.mjs +3 -0
- package/dist/{renderer-Bl9C9lIo.mjs → renderer-DgSO5OO0.mjs} +1 -1
- package/dist/renderer-DhMhJh_G.mjs +3 -0
- package/dist/renderer-DhQld4Qt.mjs +3 -0
- package/dist/renderer-Dn3rc3ah.mjs +3 -0
- package/dist/{renderer-XRGwrdg8.mjs → renderer-Dn8v2o9L.mjs} +18 -4
- package/dist/renderer-Dn8v2o9L.mjs.map +1 -0
- package/dist/{renderer-BpTwFaja.mjs → renderer-DnF3aXPX.mjs} +2 -2
- package/dist/{renderer-BpTwFaja.mjs.map → renderer-DnF3aXPX.mjs.map} +1 -1
- package/dist/renderer-Dw9LxE2f.mjs +3 -0
- package/dist/{renderer-Dntxca07.mjs → renderer-EmG34sT2.mjs} +2 -2
- package/dist/{renderer-Dntxca07.mjs.map → renderer-EmG34sT2.mjs.map} +1 -1
- package/dist/renderer-HvrQZw5E.mjs +3 -0
- package/dist/renderer-QdJE56ts.mjs +3 -0
- 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-euGyUN2O.mjs +3 -0
- package/dist/{renderer-C5lJvf-h.mjs → renderer-gT0ADXMW.mjs} +2 -2
- package/dist/{renderer-C5lJvf-h.mjs.map → renderer-gT0ADXMW.mjs.map} +1 -1
- package/dist/{renderer-0ty5QtXg.mjs → renderer-lq4n1hSS.mjs} +2 -2
- package/dist/{renderer-0ty5QtXg.mjs.map → renderer-lq4n1hSS.mjs.map} +1 -1
- package/dist/renderer-p3SmBFP9.mjs +3 -0
- package/dist/renderer-xp_J0ln7.mjs +263 -0
- package/dist/renderer-xp_J0ln7.mjs.map +1 -0
- package/dist/{renderer-D3FsnptO.mjs → renderer-zvtpCnqy.mjs} +1 -1
- package/dist/{renderers-CP8CFWDs-CAs5DgWj.mjs → renderers-CP8CFWDs-Ciap7y_j.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-CAs5DgWj.mjs.map → renderers-CP8CFWDs-Ciap7y_j.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-JkiL-qy7.mjs.map +0 -1
- package/dist/dist-cjs-CmZEMtO6.mjs +0 -6
- package/dist/dist-sHqWCB9M.mjs.map +0 -1
- package/dist/effects-l0T61DPU.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/renderers-R5WSHETG.mjs +0 -248
- package/dist/renderer--akPySto.mjs.map +0 -1
- package/dist/renderer-145WIXyW.mjs +0 -3
- package/dist/renderer-9W8q4Y8D.mjs +0 -3
- package/dist/renderer-B5HBViEG.mjs +0 -3
- package/dist/renderer-B7naoaVH.mjs +0 -3
- package/dist/renderer-BDLnExoP.mjs.map +0 -1
- package/dist/renderer-BHYmRBem.mjs +0 -3
- package/dist/renderer-BHsEOp1I.mjs.map +0 -1
- package/dist/renderer-BL51bhvQ.mjs +0 -3
- package/dist/renderer-BMovYRoR.mjs +0 -3
- package/dist/renderer-BbwOEawB.mjs.map +0 -1
- package/dist/renderer-BfvBHHNr.mjs +0 -3
- package/dist/renderer-BgrDGRNW.mjs.map +0 -1
- package/dist/renderer-BhfFVqCx.mjs.map +0 -1
- package/dist/renderer-ByxrzTRg.mjs +0 -3
- package/dist/renderer-CDirzReW.mjs +0 -3
- package/dist/renderer-CGCmbeJ2.mjs +0 -3
- package/dist/renderer-CO0KsnEg.mjs +0 -3
- package/dist/renderer-COO44HDO.mjs +0 -3
- package/dist/renderer-C_9SIgZX.mjs +0 -3
- package/dist/renderer-Cgy1H0Ql.mjs.map +0 -1
- package/dist/renderer-CmMNU1-P.mjs.map +0 -1
- package/dist/renderer-CntaTaNq.mjs +0 -3
- package/dist/renderer-Cv9JLpL6.mjs +0 -3
- package/dist/renderer-D0FWIsWn.mjs +0 -3
- package/dist/renderer-D3jUYUDU.mjs +0 -3
- package/dist/renderer-D5Je-AeQ.mjs +0 -3
- package/dist/renderer-D6bWQtr-.mjs +0 -3
- package/dist/renderer-DNPwpmYS.mjs +0 -3
- package/dist/renderer-DawVsNLw.mjs +0 -3
- package/dist/renderer-Dl_6Kn87.mjs +0 -3
- package/dist/renderer-DlrJSfaw.mjs +0 -3
- package/dist/renderer-DpScOWGG.mjs +0 -4
- package/dist/renderer-DxYOA1MM.mjs +0 -3
- package/dist/renderer-S7jOr_jF.mjs +0 -3
- package/dist/renderer-XRGwrdg8.mjs.map +0 -1
- package/dist/renderer-kN2TeWks.mjs +0 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import{a as k}from"./chunk-XOEEGC4Z.mjs";import{b as B,c as D}from"./chunk-IYVN2QEL.mjs";import{a as h}from"./chunk-NQZKBFC6.mjs";import{e as R}from"./chunk-36YGYLKD.mjs";import{t as F}from"./chunk-ZNGOAGAI.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();u();var A=new Map;function I(t){let e=A.get(t);return e||(e=(async()=>{try{let r=await R.acquire(t);try{let n=await r.getPrimaryVideoTrack();return n?{width:n.displayWidth,height:n.displayHeight}:null}finally{R.release(t)}}catch{return null}})(),A.set(t,e)),e}u();var K=k().field("angle",h.number().default(90),{bindable:!0,dataTypes:["Number","Signal"],label:"Angle Signal",description:"Rotation in degrees about the frame center, clockwise. Any value; 90 / 180 / 270 fix footage shot sideways or upside down."}).field("fit",h.enum(["cover","contain","fill"]).default("cover"),{description:"How the rotated source sits in the output: cover fills it (cropping the overhang), contain shows all of it (transparent margins), fill keeps the unrotated source stretched to the output and only turns it."}).field("scale",h.number().min(.01).max(20).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Scale Signal",description:"Extra zoom applied after the fit (1 = exactly fitted)."}).build(),oe=K.schema,ae=h.union([B,D]);function O(t,e,r,n,a,o){if(o==="fill")return{width:r,height:n};let s=a*Math.PI/180,c=Math.abs(Math.cos(s)),i=Math.abs(Math.sin(s)),g=o==="cover"?Math.max((c*r+i*n)/t,(i*r+c*n)/e):Math.min(r/(c*t+i*e),n/(i*t+c*e));return{width:t*g,height:e*g}}var Q=`
|
|
2
|
+
struct RotateUniforms {
|
|
3
|
+
outSize: vec2<f32>,
|
|
4
|
+
size : vec2<f32>,
|
|
5
|
+
cs : vec2<f32>,
|
|
6
|
+
_pad : vec2<f32>,
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
@group(0) @binding(0) var<uniform> u : RotateUniforms;
|
|
10
|
+
@group(1) @binding(0) var tex : texture_2d<f32>;
|
|
11
|
+
@group(1) @binding(1) var samp : sampler;
|
|
12
|
+
|
|
13
|
+
struct VSOut {
|
|
14
|
+
@builtin(position) pos : vec4<f32>,
|
|
15
|
+
@location(0) uv : vec2<f32>,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
|
|
19
|
+
var pos = array<vec2<f32>, 4>(
|
|
20
|
+
vec2<f32>(-1.0, 1.0),
|
|
21
|
+
vec2<f32>(1.0, 1.0),
|
|
22
|
+
vec2<f32>(-1.0, -1.0),
|
|
23
|
+
vec2<f32>(1.0, -1.0)
|
|
24
|
+
);
|
|
25
|
+
var uv = array<vec2<f32>, 4>(
|
|
26
|
+
vec2<f32>(0.0, 0.0),
|
|
27
|
+
vec2<f32>(1.0, 0.0),
|
|
28
|
+
vec2<f32>(0.0, 1.0),
|
|
29
|
+
vec2<f32>(1.0, 1.0)
|
|
30
|
+
);
|
|
31
|
+
return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
35
|
+
let p = (in.uv - vec2<f32>(0.5)) * u.outSize;
|
|
36
|
+
// Clockwise on screen (y down): undo it with the transpose.
|
|
37
|
+
let q = vec2<f32>(u.cs.x * p.x + u.cs.y * p.y, -u.cs.y * p.x + u.cs.x * p.y);
|
|
38
|
+
let uv = q / u.size + vec2<f32>(0.5);
|
|
39
|
+
// Distance (output px) inside the source rectangle's nearest edge.
|
|
40
|
+
let edge = (vec2<f32>(0.5) - abs(uv - vec2<f32>(0.5))) * u.size;
|
|
41
|
+
let coverage = clamp(min(edge.x, edge.y) + 0.5, 0.0, 1.0);
|
|
42
|
+
let color = textureSampleLevel(tex, samp, clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0)), 0.0);
|
|
43
|
+
// Premultiplied: coverage scales every channel.
|
|
44
|
+
return color * coverage;
|
|
45
|
+
}
|
|
46
|
+
`,C=new WeakMap,d=new Float32Array(8);function X(t,e){let r=C.get(t);if(r)return r;let n=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),a=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),o=t.createShaderModule({code:Q}),s=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[n,a]}),vertex:{module:o,entryPoint:"vs"},fragment:{module:o,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),c={uniformLayout:n,textureLayout:a,pipeline:s};return C.set(t,c),c}function E(t,e,r,n){let a=typeof t=="function"?t(r,n):t!==null&&typeof t=="object"?"get"in t&&typeof t.get=="function"?t.get({frame:r,fps:n}):"value"in t?t.value:t:t,o=Number(a??e);return Number.isFinite(o)?o:e}async function Z(t){for(let e=t;e;){let{width:r,height:n}=e.metadata??{};if(r&&n)return{width:r,height:n};let a=e.operation;if(a.op==="source"){let o=typeof a.url=="string"?a.url:a.source;return typeof o=="string"?I(o):null}e=e.children?.[0]}return null}var _=async t=>{let{ctx:e,encoder:r,pass:n,targetView:a,targetTexture:o,targetWidth:s,targetHeight:c,props:i,drawChild:g}=t,l=i.virtualMedia?.operation;if(l?.op!=="Rotate"||!l)return;let v=i.virtualMedia.children?.[0];if(!v)return;n.end();let W=i.frame??0,P=i.compositionFrame??W,G=i.fps||30,y=s,b=c,w=await Z(v),p=w?.width??i.containerWidth??y,f=w?.height??i.containerHeight??b,x=e.renderer.getTemporaryTexture(p,f,[...i.excludeTextures||[],o]),M=x.createView();e.renderer.beginFrame(r,M,{r:0,g:0,b:0,a:0},p,f,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:p,height:f}),e.renderer.pushIdentity(),await g(v,{...i,containerWidth:p,containerHeight:f,virtualMedia:v},M,x,p,f),e.renderer.popTransform(),e.renderer.popScissor();let T=E(l.angle,90,P,G),V=Math.max(.01,E(l.scale,1,P,G)),z=O(p,f,y,b,T,l.fit??"cover"),N=T*Math.PI/180;d[0]=y,d[1]=b,d[2]=z.width*V,d[3]=z.height*V,d[4]=Math.cos(N),d[5]=Math.sin(N);let{pipeline:q,uniformLayout:j,textureLayout:H}=X(e.device,e.renderer.format),Y=e.device.createBindGroup({layout:j,entries:[{binding:0,resource:{buffer:e.renderer.getTemporaryBuffer(d)}}]}),J=e.device.createBindGroup({layout:H,entries:[{binding:0,resource:x.createView()},{binding:1,resource:e.renderer.samplerCache.getSampler(e.device)}]}),U=e.renderer.getTemporaryTexture(y,b,[x,o,...i.excludeTextures||[]]),m=r.beginRenderPass({colorAttachments:[{view:U.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(q),m.setBindGroup(0,Y),m.setBindGroup(1,J),m.draw(4),m.end();let L=e.renderer.beginFrame(r,a,{r:0,g:0,b:0,a:0},s,c,"load");e.renderer.drawTexture(L,U,{x:0,y:0,width:s,height:c},{opacity:l.opacity??1}),t.pass=L};var he=F({WebGPURenderer:_});export{he as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as M,e as L}from"./chunk-BVF64D6H.mjs";L();var G=class{deviceCaches=new WeakMap;devicePromises=new WeakMap;rawDataCache=new Map;rawDataPromises=new Map;listeners=new Set;onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}emit(e){for(let t of this.listeners)try{t(e)}catch{}}getAnyMatching(e,t){let a=this.getCache(t),r=Array.from(a.keys());for(let o=r.length-1;o>=0;o--){let u=r[o];if(u.startsWith(e))return a.get(u)}}getOrCreateRawDataPromise(e){let t=this.rawDataPromises.get(e);if(!t){let a,r;t={promise:new Promise((u,l)=>{a=u,r=l}),resolve:a,reject:r},this.rawDataPromises.set(e,t)}return t}rejectRawDataPromise(e,t){let a=this.rawDataPromises.get(e);a&&(a.reject(t),this.rawDataPromises.delete(e)),this.emit(e)}getCache(e){let t=this.deviceCaches.get(e);return t||(t=new Map,this.deviceCaches.set(e,t)),t}getPromises(e){let t=this.devicePromises.get(e);return t||(t=new Map,this.devicePromises.set(e,t)),t}get(e,t){return this.getCache(t).get(e)}set(e,t,a){let r=this.getCache(t),o=r.get(e);if(o&&o!==a){if(o.texture!==a.texture){let u=o.texture;t.queue.onSubmittedWorkDone().then(()=>{try{u.destroy()}catch{}}).catch(()=>{})}if(o.vertexBuffer!==a.vertexBuffer){let u=o.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{u.destroy()}catch{}}).catch(()=>{})}}r.set(e,a)}getRawData(e){return this.rawDataCache.get(e)}getAnyRawData(){let e=Array.from(this.rawDataCache.values());return e[e.length-1]}createOrUpdate(e,t,a,r,o){let u={points:a,size:r,type:o};this.rawDataCache.set(e,u);let l=this.rawDataPromises.get(e);l&&(l.resolve(u),this.rawDataPromises.delete(e));let p=[];if(o==="3D"){let s=0;for(let i=0;i<r;i++)for(let n=0;n<r;n++)for(let d=0;d<r;d++){let c=d/(r-1||1),h=n/(r-1||1),g=i/(r-1||1),y=a[s]||[c,h,g];s++,p.push(c-.5,h-.5,g-.5),p.push(y[0],y[1],y[2])}}else for(let s=0;s<a.length;s++){let i=s/(a.length-1||1),n=a[s];p.push(i-.5,0,0),p.push(n[0],n[1],n[2])}let v=new Float32Array(p),f=this.get(e,t),m=f?.texture;if(!m||f?.size!==r||f?.type!==o){if(f){let s=f.texture;t.queue.onSubmittedWorkDone().then(()=>{try{s.destroy()}catch{}}).catch(()=>{})}o==="3D"?m=t.createTexture({size:[r,r,r],dimension:"3d",format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}):m=t.createTexture({size:[r,1,1],dimension:"1d",format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST})}if(o==="3D"){let i=Math.ceil(r*4/256)*256,n=new Uint8Array(i*r*r),d=0;for(let c=0;c<r;c++)for(let h=0;h<r;h++)for(let g=0;g<r;g++){let y=g/(r-1||1),D=h/(r-1||1),C=c/(r-1||1),U=a[d]||[y,D,C];d++;let b=g*4+h*i+c*i*r;n[b]=Math.max(0,Math.min(255,Math.round(U[0]*255))),n[b+1]=Math.max(0,Math.min(255,Math.round(U[1]*255))),n[b+2]=Math.max(0,Math.min(255,Math.round(U[2]*255))),n[b+3]=255}t.queue.writeTexture({texture:m},n,{bytesPerRow:i,rowsPerImage:r},[r,r,r])}else{let i=new Uint8Array(r*4);for(let n=0;n<r;n++){let d=a[n]||[n/(r-1||1),0,0],c=n*4;i[c]=Math.max(0,Math.min(255,Math.round(d[0]*255))),i[c+1]=Math.max(0,Math.min(255,Math.round(d[1]*255))),i[c+2]=Math.max(0,Math.min(255,Math.round(d[2]*255))),i[c+3]=255}t.queue.writeTexture({texture:m},i,{},[r,1,1])}let P=f?.vertexBuffer;if(!P||P.size<v.byteLength){if(f){let s=f.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{s.destroy()}catch{}}).catch(()=>{})}P=t.createBuffer({size:v.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST})}t.queue.writeBuffer(P,0,v);let x={texture:m,type:o,size:r,vertexBuffer:P,vertexCount:a.length};return this.set(e,t,x),this.emit(e),x}async getOrLoad(e,t,a){if(a?.aborted)throw new DOMException("The operation was aborted.","AbortError");let r=this.get(e,t);if(r)return r;let o=this.rawDataCache.get(e);if(o)return this.createOrUpdate(e,t,o.points,o.size,o.type);let u=this.getPromises(t),l=u.get(e);return l||(l=(async()=>{if(e.startsWith("runtime://")){let x=this.getOrCreateRawDataPromise(e),s,i=new Promise((c,h)=>{let g=()=>{s=setTimeout(()=>{(()=>{if(typeof window<"u"){let D=window.renderer_delayRenderHandles;if(Array.isArray(D)&&D.length>0)return!0}if(typeof globalThis<"u"){let D=globalThis.__GATEWAI_DELAYS__;if(D instanceof Set&&D.size>0)return!0}return!1})()?g():h(new Error(`Timeout waiting for runtime LUT "${e}" after 5000ms.`))},5e3)};g()}),n,d;a&&(d=new Promise((c,h)=>{n=()=>{h(new DOMException("The operation was aborted.","AbortError"))},a.addEventListener("abort",n)}));try{let c=[x.promise,i];d&&c.push(d);let h=await Promise.race(c);return this.createOrUpdate(e,t,h.points,h.size,h.type)}finally{clearTimeout(s),n&&a&&a.removeEventListener("abort",n)}}let v=(await A(e,a)).split(/\r?\n/),f=33,m="3D",P=[];for(let x of v){let s=x.trim();if(!s||s.startsWith("#"))continue;if(s.startsWith("LUT_3D_SIZE")){let n=s.split(/\s+/);f=parseInt(n[1],10),m="3D";continue}if(s.startsWith("LUT_1D_SIZE")){let n=s.split(/\s+/);f=parseInt(n[1],10),m="1D";continue}if(s.match(/^[a-zA-Z]/))continue;let i=s.split(/\s+/).map(Number);i.length===3&&i.every(n=>!isNaN(n))&&P.push([i[0],i[1],i[2]])}if(P.length===0)throw new Error("No valid color mappings found in LUT file.");return this.createOrUpdate(e,t,P,f,m)})(),u.set(e,l),l.catch(()=>{u.delete(e)})),l}evict(e,t){let a=this.getCache(t),r=a.get(e);if(r){let o=r.texture,u=r.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{o.destroy()}catch{}try{u.destroy()}catch{}}).catch(()=>{}),a.delete(e)}this.getPromises(t).delete(e)}hasPending(e){let t=this.devicePromises.get(e);return t!==void 0&&t.size>0||this.rawDataPromises.size>0}async awaitAllPending(e){let t=Array.from(this.getPromises(e).values());await Promise.all(t)}destroy(){this.deviceCaches=new WeakMap,this.devicePromises=new WeakMap,this.rawDataCache.clear(),this.rawDataPromises.clear()}},T="__GATEWAI_LUT_STORE__",R=(globalThis[T]||(globalThis[T]=new G),globalThis[T]);async function A(w,e){let t=typeof M<"u"&&!!M.versions?.node,a=w.startsWith("/")||w.startsWith("file://");if(t&&a){let{readFile:o}=await import("./shims/fs-promises.mjs"),{fileURLToPath:u}=await import("./shims/url.mjs"),l=w.startsWith("file://")?u(w):w;return o(l,{encoding:"utf8",signal:e})}let r=await fetch(w,{signal:e});if(!r.ok)throw new Error(`Failed to load LUT file: ${r.statusText}`);return r.text()}export{R as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as F}from"./chunk-CNSHAFEA.mjs";import{t as J}from"./chunk-ZNGOAGAI.mjs";import{d as _}from"./chunk-6YJP57MZ.mjs";import{e as M}from"./chunk-BVF64D6H.mjs";M();M();var Se=`
|
|
2
2
|
struct HalftoneUniforms {
|
|
3
3
|
mode : f32, // 0 = Monochrome, 1 = CMYK
|
|
4
4
|
dotShape : f32, // 0 = Circle, 1 = Diamond, 2 = Line, 3 = Square
|
|
@@ -272,4 +272,4 @@ fn evalDotCoverage(
|
|
|
272
272
|
let finalRgb = mix(unpremult, screenedRgb, clamp(effectOpacity, 0.0, 1.0));
|
|
273
273
|
return vec4<f32>(finalRgb * sourceCol.a, sourceCol.a);
|
|
274
274
|
}
|
|
275
|
-
`,
|
|
275
|
+
`,Q=new WeakMap;function xe(l){let e=Q.get(l);if(e)return e;let n=l.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),d=l.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),o=l.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"}}]});return e={uniformLayout:n,singleTextureLayout:d,signalTextureLayout:o,pipelineCache:new Map},Q.set(l,e),e}function he(l,e){let n=xe(l),d=`halftone_${e}`,o=n.pipelineCache.get(d);if(!o){let v=l.createShaderModule({label:`halftone_${e}.wgsl`,code:Se});o=l.createRenderPipeline({label:`HalftonePipeline_${e}`,layout:l.createPipelineLayout({bindGroupLayouts:[n.uniformLayout,n.singleTextureLayout,n.signalTextureLayout]}),vertex:{module:v,entryPoint:"vs"},fragment:{module:v,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),n.pipelineCache.set(d,o)}return{halftonePipeline:o,uniformLayout:n.uniformLayout,singleTextureLayout:n.singleTextureLayout,signalTextureLayout:n.signalTextureLayout}}var X=async l=>{let{ctx:e,encoder:n,pass:d,targetView:o,targetTexture:v,targetWidth:T,targetHeight:P,props:a,drawChild:Z}=l,R=a.frame??0,B=a.compositionFrame??R,y=a.fps||30,r=a.virtualMedia?.operation;if(r?.op!=="HalftoneScreen"||!r)return;let G=a.virtualMedia.children?.[0];if(!G)return;d.end();let f=T,p=P,ee=r.inputs?Object.keys(r.inputs)[0]:"halftone_node",s=(u,b,H,I)=>{let be=`${u}HandleId`,z=r[be],g=z?r.inputs?.[z]:null,$=!!(g?.connectionValid&&g.outputItem?.type==="Signal"),Y=$&&g?.outputItem?.data?g.outputItem.data:null,A=b,j=!1;if($)Y&&(A=Math.max(H,Math.min(I,Number(Y.offset??0))),j=!0);else if(g?.connectionValid&&g.outputItem?.type==="Number")A=Math.max(H,Math.min(I,Number(g.outputItem.data??b)));else{let i=r[u];i!=null&&(typeof i=="object"?"get"in i&&typeof i.get=="function"?i=i.get({frame:B,fps:y}):"value"in i&&(i=i.value):typeof i=="function"&&(i=i(B,y))),A=Math.max(H,Math.min(I,Number(i??b)))}return{val:A,hasStaticSig:j,sd:Y}},U=s("frequency",30,1,200),L=s("angle",45,0,360),V=s("contrast",1,.1,5),w=s("cyanAngle",15,0,360),k=s("magentaAngle",75,0,360),D=s("yellowAngle",0,0,360),K=s("blackAngle",45,0,360),q=s("opacity",1,0,1),S=e.renderer.getTemporaryTexture(f,p,[...a.excludeTextures||[],v]),N=S.createView();e.renderer.beginFrame(n,N,{r:0,g:0,b:0,a:0},f,p,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:f,height:p}),e.renderer.pushIdentity(),await Z(G,{...a,virtualMedia:G},N,S,f,p),e.renderer.popTransform(),e.renderer.popScissor();let{halftonePipeline:te,uniformLayout:ne,singleTextureLayout:ae,signalTextureLayout:re}=he(e.device,e.renderer.format),O=e.renderer.samplerCache.getSampler(e.device),ie=a.elapsedMs!==void 0?a.elapsedMs/1e3:R/y,le=a.virtualMedia?.metadata?.durationMs?a.virtualMedia.metadata.durationMs/1e3:a.durationMs!==void 0?a.durationMs/1e3:0,c=(u,b)=>u.hasStaticSig&&u.sd?_.getOrCreate2DTextureView(e.device,n,u.sd.nodeId??`${ee}_${b}`,ie,le,u.sd,f,p,a.renderId,R,y):_.getDummy1x1TextureView(e.device),oe=c(U,"freq_sig"),se=c(L,"angle_sig"),ce=c(V,"contrast_sig"),ue=c(w,"cyan_sig"),ge=c(k,"mag_sig"),de=c(D,"yel_sig"),fe=c(K,"blk_sig"),pe=c(q,"opacity_sig"),me=r.mode==="CMYK"?1:0,x=0;r.dotShape==="Diamond"?x=1:r.dotShape==="Line"?x=2:r.dotShape==="Square"&&(x=3);let h=F(r.dotColor??"#000000"),C=F(r.paperColor??"#ffffff"),t=new Float32Array(28);t[0]=me,t[1]=x,t[2]=U.val,t[3]=L.val,t[4]=V.val,t[5]=r.invert?1:0,t[6]=r.smooth!==!1?1:0,t[7]=q.val,t[8]=h.r,t[9]=h.g,t[10]=h.b,t[11]=h.a,t[12]=C.r,t[13]=C.g,t[14]=C.b,t[15]=C.a,t[16]=w.val,t[17]=k.val,t[18]=D.val,t[19]=K.val,t[20]=U.hasStaticSig?1:0,t[21]=L.hasStaticSig?1:0,t[22]=V.hasStaticSig?1:0,t[23]=w.hasStaticSig?1:0,t[24]=k.hasStaticSig?1:0,t[25]=D.hasStaticSig?1:0,t[26]=K.hasStaticSig?1:0,t[27]=q.hasStaticSig?1:0;let ve=e.renderer.getTemporaryBuffer(t),E=e.renderer.getTemporaryTexture(f,p,[S,v,...a.excludeTextures||[]]),m=n.beginRenderPass({colorAttachments:[{view:E.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(te),m.setBindGroup(0,e.device.createBindGroup({layout:ne,entries:[{binding:0,resource:{buffer:ve}}]})),m.setBindGroup(1,e.renderer.bindGroupCache.getBindGroup(e.device,ae,S,O)),m.setBindGroup(2,e.device.createBindGroup({layout:re,entries:[{binding:0,resource:oe},{binding:1,resource:se},{binding:2,resource:ce},{binding:3,resource:ue},{binding:4,resource:ge},{binding:5,resource:de},{binding:6,resource:fe},{binding:7,resource:pe},{binding:8,resource:O}]})),m.draw(4),m.end();let W=e.renderer.beginFrame(n,o,{r:0,g:0,b:0,a:0},T,P,"load");e.renderer.drawTexture(W,E,{x:0,y:0,width:T,height:P},{opacity:1}),l.pass=W};var Ge=J({WebGPURenderer:X});export{Ge as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as S}from"./chunk-
|
|
1
|
+
import{a as S}from"./chunk-EJGLUZMW.mjs";import{t as E}from"./chunk-ZNGOAGAI.mjs";import{d as D}from"./chunk-6YJP57MZ.mjs";import{e as G}from"./chunk-BVF64D6H.mjs";G();G();var k=`
|
|
2
2
|
struct LutUniforms {
|
|
3
3
|
intensity : f32,
|
|
4
4
|
lutSize : f32,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as
|
|
1
|
+
import{t as B}from"./chunk-ZNGOAGAI.mjs";import{d as G}from"./chunk-6YJP57MZ.mjs";import{e as T}from"./chunk-BVF64D6H.mjs";T();T();function J(t,e,r,a){if(t==null)return e;if(typeof t=="object"&&t!==null){if("get"in t&&typeof t.get=="function")try{let o=t.get({frame:r,fps:a,time:a>0?r/a:0,duration:0,durationMs:0,progress:0,deltaTime:a>0?1/a:0}),l=Number(o);if(Number.isFinite(l))return l}catch{}if("value"in t){let o=Number(t.value);if(Number.isFinite(o))return o}}else if(typeof t=="function")try{let o=t(r,a),l=Number(o);if(Number.isFinite(l))return l}catch{}let i=Number(t);return Number.isFinite(i)?i:e}function y(t,e,r,a,i,o=0,l=30){let x=`${e}HandleId`,n=t[x],c=n?t.inputs?.[n]:null,m=!!(c?.connectionValid&&c.outputItem?.type==="Signal"),s=m?c?.outputItem?.data:null,u=r;if(m)s&&typeof s=="object"&&"offset"in s&&(u=Number(s.offset??r));else if(c?.connectionValid&&c.outputItem?.type==="Number")u=Number(c.outputItem.data??r);else{let p=t[e]??t.signals?.[e];u=J(p,r,o,l)}return u=Math.max(a,Math.min(i,u)),{hasSignal:m,sd:s,value:u}}var Q=`
|
|
2
2
|
struct ModulateUniforms {
|
|
3
3
|
hue : f32,
|
|
4
4
|
brightness : f32,
|
|
@@ -181,4 +181,4 @@ fn apply_sepia(c: vec4<f32>, s: f32) -> vec4<f32> {
|
|
|
181
181
|
|
|
182
182
|
return color;
|
|
183
183
|
}
|
|
184
|
-
`,
|
|
184
|
+
`,E=new WeakMap,f=new Float32Array(12);function X(t){let e=E.get(t);if(e)return e;let r=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),a=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),i=t.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,sampler:{type:"filtering"}}]});return e={modulateUniformLayout:r,singleTextureLayout:a,modulateSignalsLayout:i,pipelineCache:new Map},E.set(t,e),e}function Y(t,e){let r=X(t),a=`modulate_${e}`,i=r.pipelineCache.get(a);if(!i){let o=t.createShaderModule({label:`modulate_static_${e}.wgsl`,code:Q});i=t.createRenderPipeline({label:`ModulatePipeline_static_${e}`,layout:t.createPipelineLayout({bindGroupLayouts:[r.modulateUniformLayout,r.singleTextureLayout,r.modulateSignalsLayout]}),vertex:{module:o,entryPoint:"vs"},fragment:{module:o,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}}),r.pipelineCache.set(a,i)}return{modulatePipeline:i,modulateUniformLayout:r.modulateUniformLayout,singleTextureLayout:r.singleTextureLayout,modulateSignalsLayout:r.modulateSignalsLayout}}var k=async t=>{let{ctx:e,encoder:r,pass:a,targetView:i,targetTexture:o,targetWidth:l,targetHeight:x,props:n,drawChild:c}=t,m=n.frame??0,s=n.compositionFrame??m,u=n.fps||30,p=n.virtualMedia?.operation;if(p?.op!=="Modulate"||!p)return;let w=n.virtualMedia.children?.[0];if(!w)return;a.end();let M=y(p,"hue",0,0,360,s,u),R=y(p,"brightness",1,0,2,s,u),_=y(p,"contrast",1,0,2,s,u),P=y(p,"exposure",0,-2,2,s,u),L=y(p,"saturation",1,0,2,s,u),V=y(p,"sepia",0,0,1,s,u),g=l,b=x,S=e.renderer.getTemporaryTexture(g,b,[...n.excludeTextures||[],o]),A=S.createView();e.renderer.beginFrame(r,A,{r:0,g:0,b:0,a:0},g,b,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:g,height:b}),e.renderer.pushIdentity(),await c(w,{...n,virtualMedia:w},A,S,g,b),e.renderer.popTransform(),e.renderer.popScissor();let{modulatePipeline:D,modulateUniformLayout:O,singleTextureLayout:C,modulateSignalsLayout:H}=Y(e.device,e.renderer.format),U=e.renderer.samplerCache.getSampler(e.device),I=e.renderer.getTemporaryTexture(g,b,[S,o,...n.excludeTextures||[]]);f[0]=M.value,f[1]=R.value,f[2]=_.value,f[3]=P.value,f[4]=L.value,f[5]=V.value;let W=[{name:"hue",info:M,idx:6},{name:"brightness",info:R,idx:7},{name:"contrast",info:_,idx:8},{name:"exposure",info:P,idx:9},{name:"saturation",info:L,idx:10},{name:"sepia",info:V,idx:11}],d=[],$=n.elapsedMs!==void 0?n.elapsedMs/1e3:m/u,j=n.virtualMedia?.metadata?.durationMs?n.virtualMedia.metadata.durationMs/1e3:n.durationMs!==void 0?n.durationMs/1e3:0;for(let h of W){let N=!!(h.info.hasSignal&&h.info.sd);if(f[h.idx]=N?1:0,N){let q=G.getOrCreate2DTextureView(e.device,r,h.info.sd.nodeId??`modulate_${h.name}_sig`,$,j,h.info.sd,g,b,n.renderId,m,u);d.push(q)}else d.push(G.getDummy1x1TextureView(e.device))}let K=e.renderer.getTemporaryBuffer(f),v=r.beginRenderPass({colorAttachments:[{view:I.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});v.setPipeline(D),v.setBindGroup(0,e.device.createBindGroup({layout:O,entries:[{binding:0,resource:{buffer:K}}]})),v.setBindGroup(1,e.renderer.bindGroupCache.getBindGroup(e.device,C,S,U)),v.setBindGroup(2,e.device.createBindGroup({layout:H,entries:[{binding:0,resource:d[0]},{binding:1,resource:d[1]},{binding:2,resource:d[2]},{binding:3,resource:d[3]},{binding:4,resource:d[4]},{binding:5,resource:d[5]},{binding:6,resource:U}]})),v.draw(4),v.end();let F=e.renderer.beginFrame(r,i,{r:0,g:0,b:0,a:0},l,x,"load");e.renderer.drawTexture(F,I,{x:0,y:0,width:l,height:x},{opacity:p.opacity??1}),t.pass=F};var ue=B({WebGPURenderer:k});export{ue as a};
|
|
@@ -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-VWLR2AZR.mjs";import{d as R,f as G,g as M,i as ft}from"./chunk-ZJFAGIOM.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{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{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};
|