framefields 2.2.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -2
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BvYmTu5T.d.mts → audio-BNnEclHU.d.mts} +3 -3
- package/dist/{audio-BvYmTu5T.d.mts.map → audio-BNnEclHU.d.mts.map} +1 -1
- package/dist/{audio-DMUr01vS.mjs → audio-CS104aUj.mjs} +3 -3
- package/dist/{audio-DMUr01vS.mjs.map → audio-CS104aUj.mjs.map} +1 -1
- package/dist/{dist-CT___nEU.mjs → dist-BOdxAhOT.mjs} +7 -5
- package/dist/dist-BOdxAhOT.mjs.map +1 -0
- package/dist/{dist-cjxDXQdx.mjs → dist-jU289ehm.mjs} +209 -31
- package/dist/{dist-cjxDXQdx.mjs.map → dist-jU289ehm.mjs.map} +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-C06-AOge.mjs → effects-BzOlVD-w.mjs} +532 -4
- package/dist/effects-BzOlVD-w.mjs.map +1 -0
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-C0UuLQvr.mjs → fonts-BhlV_3Qt.mjs} +2 -2
- package/dist/{fonts-C0UuLQvr.mjs.map → fonts-BhlV_3Qt.mjs.map} +1 -1
- package/dist/{gpu-Du7GpVFW.mjs → gpu-BA1Wz_mS.mjs} +2 -2
- package/dist/{gpu-Du7GpVFW.mjs.map → gpu-BA1Wz_mS.mjs.map} +1 -1
- package/dist/{index-B-oUlLoO.d.mts → index-AdrZIWT0.d.mts} +27 -2
- package/dist/index-AdrZIWT0.d.mts.map +1 -0
- package/dist/{index-BcA8rep0.d.mts → index-B-55dXDu.d.mts} +1 -1
- package/dist/{index-BcA8rep0.d.mts.map → index-B-55dXDu.d.mts.map} +1 -1
- package/dist/{index-D-Iek5sq.d.mts → index-B3BwLHa6.d.mts} +3 -3
- package/dist/{index-D-Iek5sq.d.mts.map → index-B3BwLHa6.d.mts.map} +1 -1
- package/dist/{index-CwbszPDG.d.mts → index-BU51pxZO.d.mts} +956 -9
- package/dist/index-BU51pxZO.d.mts.map +1 -0
- package/dist/{index-XdQPNJnq.d.mts → index-CeRv1KC0.d.mts} +3 -3
- package/dist/{index-XdQPNJnq.d.mts.map → index-CeRv1KC0.d.mts.map} +1 -1
- package/dist/{index-DXfp_T-3.d.mts → index-Cg2ptXcs.d.mts} +2 -2
- package/dist/{index-DXfp_T-3.d.mts.map → index-Cg2ptXcs.d.mts.map} +1 -1
- package/dist/{index-CdyE1tst.d.mts → index-QmkcUL3W.d.mts} +2 -2
- package/dist/{index-CdyE1tst.d.mts.map → index-QmkcUL3W.d.mts.map} +1 -1
- package/dist/index.d.mts +1383 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3122 -83
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-M0TsUzC6.mjs → preview-BVyG76gO.mjs} +2 -2
- package/dist/{preview-M0TsUzC6.mjs.map → preview-BVyG76gO.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/chunk-2JKXYG6J.mjs +127 -0
- package/dist/preview-engine/chunk-7I7PKKDL.mjs +214 -0
- package/dist/preview-engine/chunk-BQY4BUMN.mjs +1 -0
- package/dist/preview-engine/{chunk-RSMO7NPN.mjs → chunk-BSOJR4JU.mjs} +1 -1
- package/dist/preview-engine/chunk-BVA5NGSH.mjs +1 -0
- package/dist/preview-engine/{chunk-ZTHWCQ2A.mjs → chunk-FNE22WGA.mjs} +1 -1
- package/dist/preview-engine/chunk-GCTVRM7J.mjs +1522 -0
- package/dist/preview-engine/chunk-KERW7QJ4.mjs +174 -0
- package/dist/preview-engine/{chunk-7B5S5D4N.mjs → chunk-TPAEN6VV.mjs} +1 -1
- package/dist/preview-engine/chunk-YQRKT47I.mjs +1 -0
- package/dist/preview-engine/crypto-W5UAWSNT.mjs +1 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +26 -26
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/rapier-AHBIGHEL.mjs +1 -0
- package/dist/preview-engine/rapier-JD7KNQRV.mjs +1 -0
- package/dist/preview-engine/renderers-3F5AIDEL.mjs +228 -0
- package/dist/preview-engine/renderers-6ODPWZ2R.mjs +96 -0
- package/dist/preview-engine/renderers-7NCG6BYS.mjs +94 -0
- package/dist/preview-engine/renderers-BGGRPAVV.mjs +363 -0
- package/dist/preview-engine/renderers-DN2GF3I7.mjs +82 -0
- package/dist/preview-engine/renderers-FGHOLJJK.mjs +44 -0
- package/dist/preview-engine/renderers-FK72LKQC.mjs +275 -0
- package/dist/preview-engine/renderers-FQWWAETX.mjs +203 -0
- package/dist/preview-engine/renderers-HMR2NAD7.mjs +81 -0
- package/dist/preview-engine/renderers-HUW2ZMS3.mjs +1 -0
- package/dist/preview-engine/renderers-JLFGBYN4.mjs +78 -0
- package/dist/preview-engine/renderers-LLUEOW5T.mjs +77 -0
- package/dist/preview-engine/renderers-NC64EQDE.mjs +1 -0
- package/dist/preview-engine/renderers-PVYP2ONH.mjs +76 -0
- package/dist/preview-engine/renderers-TPBPNXWH.mjs +26 -0
- package/dist/preview-engine/renderers-UJ4YVJZT.mjs +80 -0
- package/dist/preview-engine/renderers-WHBDHTRI.mjs +78 -0
- package/dist/preview-engine/renderers-WP67KK5K.mjs +89 -0
- package/dist/preview-engine/renderers-YNFKFM7D.mjs +67 -0
- package/dist/preview-engine/renderers-ZSENYGIY.mjs +84 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-DzknMiY0.mjs → program-CCSfHMfh.mjs} +346 -13
- package/dist/program-CCSfHMfh.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer-1Kv7oA86.mjs +5 -0
- package/dist/{renderer-1vhaKMeg.mjs → renderer-1uLtqb74.mjs} +141 -56
- package/dist/renderer-1uLtqb74.mjs.map +1 -0
- package/dist/{renderer-BerD3T-X.mjs → renderer-4VpA7LfU.mjs} +2 -2
- package/dist/{renderer-BerD3T-X.mjs.map → renderer-4VpA7LfU.mjs.map} +1 -1
- package/dist/{renderer-BNqwn0gZ.mjs → renderer-8BM6sJUR.mjs} +2 -2
- package/dist/{renderer-BNqwn0gZ.mjs.map → renderer-8BM6sJUR.mjs.map} +1 -1
- package/dist/renderer-AVHJ33nv.mjs +5 -0
- package/dist/{renderer-0gY4IQhM.mjs → renderer-AtLlZMQ9.mjs} +2 -2
- package/dist/{renderer-0gY4IQhM.mjs.map → renderer-AtLlZMQ9.mjs.map} +1 -1
- package/dist/renderer-B8dJGf8R.mjs +6 -0
- package/dist/{renderer-57ATc_mQ.mjs → renderer-B93zd3sx.mjs} +2 -2
- package/dist/{renderer-57ATc_mQ.mjs.map → renderer-B93zd3sx.mjs.map} +1 -1
- package/dist/renderer-BARst3ZD.mjs +3 -0
- package/dist/{renderer-CJB9nU1x.mjs → renderer-BD7Lmb8h.mjs} +3 -3
- package/dist/{renderer-CJB9nU1x.mjs.map → renderer-BD7Lmb8h.mjs.map} +1 -1
- package/dist/renderer-BEA6nknY.mjs +5 -0
- package/dist/renderer-BFRI5alp.mjs +222 -0
- package/dist/renderer-BFRI5alp.mjs.map +1 -0
- package/dist/{renderer-BiwIh_w4.mjs → renderer-BG5sbTXt.mjs} +3 -3
- package/dist/{renderer-BiwIh_w4.mjs.map → renderer-BG5sbTXt.mjs.map} +1 -1
- package/dist/{renderer-DtgMsjyL.mjs → renderer-BI4OMlEx.mjs} +2 -2
- package/dist/{renderer-DtgMsjyL.mjs.map → renderer-BI4OMlEx.mjs.map} +1 -1
- package/dist/renderer-BOfi06L2.mjs +5 -0
- package/dist/renderer-BOhvtAGL.mjs +5 -0
- package/dist/renderer-BQT3GI9g.mjs +5 -0
- package/dist/{renderer-DJfFc-XW.mjs → renderer-BRwp1kV-.mjs} +3 -3
- package/dist/{renderer-DJfFc-XW.mjs.map → renderer-BRwp1kV-.mjs.map} +1 -1
- package/dist/{renderer-u8ynJtAC.mjs → renderer-BVUTOGHs.mjs} +2 -2
- package/dist/{renderer-u8ynJtAC.mjs.map → renderer-BVUTOGHs.mjs.map} +1 -1
- package/dist/renderer-BXmStgeT.mjs +5 -0
- package/dist/renderer-Bajxo7Nt.mjs +5 -0
- package/dist/{renderer-BHskWZNG.mjs → renderer-Bel1UHA5.mjs} +2 -2
- package/dist/{renderer-AF884a7T.mjs → renderer-BetA_iVd.mjs} +3 -3
- package/dist/{renderer-AF884a7T.mjs.map → renderer-BetA_iVd.mjs.map} +1 -1
- package/dist/{renderer-DpW_LxLO.mjs → renderer-BmDpyiII.mjs} +3 -3
- package/dist/{renderer-DpW_LxLO.mjs.map → renderer-BmDpyiII.mjs.map} +1 -1
- package/dist/{renderer-BteUC_7n.mjs → renderer-BonWt8jF.mjs} +3 -3
- package/dist/{renderer-BteUC_7n.mjs.map → renderer-BonWt8jF.mjs.map} +1 -1
- package/dist/{renderer-BC8XOVl5.mjs → renderer-BpEsZG3t.mjs} +3 -3
- package/dist/{renderer-BC8XOVl5.mjs.map → renderer-BpEsZG3t.mjs.map} +1 -1
- package/dist/{renderer-aArb4RwJ.mjs → renderer-BvBIHi6N.mjs} +2 -2
- package/dist/{renderer-aArb4RwJ.mjs.map → renderer-BvBIHi6N.mjs.map} +1 -1
- package/dist/{renderer-Db3JIF1K.mjs → renderer-BvvuGfZk.mjs} +3 -3
- package/dist/{renderer-Db3JIF1K.mjs.map → renderer-BvvuGfZk.mjs.map} +1 -1
- package/dist/renderer-BzRR0KMm.mjs +5 -0
- package/dist/{renderer-DEuIwr-t.mjs → renderer-Bzl0s07U.mjs} +2 -2
- package/dist/{renderer-DEuIwr-t.mjs.map → renderer-Bzl0s07U.mjs.map} +1 -1
- package/dist/renderer-C39GD6jP.mjs +331 -0
- package/dist/renderer-C39GD6jP.mjs.map +1 -0
- package/dist/renderer-C3Gjy2iE.mjs +5 -0
- package/dist/{renderer-Br6KyRO_.mjs → renderer-C3lPwajT.mjs} +3 -3
- package/dist/{renderer-Br6KyRO_.mjs.map → renderer-C3lPwajT.mjs.map} +1 -1
- package/dist/renderer-C5hQgkz-.mjs +5 -0
- package/dist/{renderer-CebB0v1y.mjs → renderer-C6cF5seJ.mjs} +2 -2
- package/dist/{renderer-CebB0v1y.mjs.map → renderer-C6cF5seJ.mjs.map} +1 -1
- package/dist/renderer-C8GZ0pCV.mjs +191 -0
- package/dist/renderer-C8GZ0pCV.mjs.map +1 -0
- package/dist/{renderer-CuVPo-wP.mjs → renderer-CFe9pZFN.mjs} +2 -2
- package/dist/{renderer-CuVPo-wP.mjs.map → renderer-CFe9pZFN.mjs.map} +1 -1
- package/dist/renderer-CLF-MiOA.mjs +5 -0
- package/dist/renderer-CLa43fCd.mjs +5 -0
- package/dist/{renderer-Bvx56GR6.mjs → renderer-CLdwOhST.mjs} +2 -2
- package/dist/{renderer-Bvx56GR6.mjs.map → renderer-CLdwOhST.mjs.map} +1 -1
- package/dist/renderer-CMK1d6w_.mjs +5 -0
- package/dist/{renderer-CursFKUf.mjs → renderer-CMdtUn5o.mjs} +2 -2
- package/dist/{renderer-CursFKUf.mjs.map → renderer-CMdtUn5o.mjs.map} +1 -1
- package/dist/{renderer-DXqIslFk.mjs → renderer-CNYfB5cC.mjs} +2 -2
- package/dist/{renderer-DXqIslFk.mjs.map → renderer-CNYfB5cC.mjs.map} +1 -1
- package/dist/renderer-CPEQOe3u.mjs +5 -0
- package/dist/{renderer-BbdZ0YHR.mjs → renderer-CWx3Kg79.mjs} +3 -3
- package/dist/{renderer-BbdZ0YHR.mjs.map → renderer-CWx3Kg79.mjs.map} +1 -1
- package/dist/{renderer-CWBHVCvA.mjs → renderer-CdOy3EBJ.mjs} +2 -2
- package/dist/{renderer-CWBHVCvA.mjs.map → renderer-CdOy3EBJ.mjs.map} +1 -1
- package/dist/{renderer-DupsdRIw.mjs → renderer-Celrh689.mjs} +3 -3
- package/dist/{renderer-DupsdRIw.mjs.map → renderer-Celrh689.mjs.map} +1 -1
- package/dist/renderer-CemfjOM9.mjs +5 -0
- package/dist/{renderer-jYxN4mHn.mjs → renderer-ChloaI6P.mjs} +3 -3
- package/dist/{renderer-jYxN4mHn.mjs.map → renderer-ChloaI6P.mjs.map} +1 -1
- package/dist/{renderer-DqdhsSwS.mjs → renderer-CiMpdh0s.mjs} +2 -2
- package/dist/{renderer-DqdhsSwS.mjs.map → renderer-CiMpdh0s.mjs.map} +1 -1
- package/dist/renderer-CkcrScs9.mjs +5 -0
- package/dist/{renderer-CMT4QcpV.mjs → renderer-Cn6VlWHZ.mjs} +3 -3
- package/dist/{renderer-CMT4QcpV.mjs.map → renderer-Cn6VlWHZ.mjs.map} +1 -1
- package/dist/renderer-CqewgazK.mjs +224 -0
- package/dist/renderer-CqewgazK.mjs.map +1 -0
- package/dist/{renderer-C6md3msE.mjs → renderer-Cu5k5D9N.mjs} +2 -2
- package/dist/{renderer-C6md3msE.mjs.map → renderer-Cu5k5D9N.mjs.map} +1 -1
- package/dist/{renderer-id8TbKBY.mjs → renderer-CuphUktB.mjs} +2 -2
- package/dist/{renderer-id8TbKBY.mjs.map → renderer-CuphUktB.mjs.map} +1 -1
- package/dist/renderer-CwrLihY6.mjs +5 -0
- package/dist/{renderer-BzDjy1_x.mjs → renderer-D1Jt-c3F.mjs} +2 -2
- package/dist/{renderer-BzDjy1_x.mjs.map → renderer-D1Jt-c3F.mjs.map} +1 -1
- package/dist/{renderer-Beg7FLt2.mjs → renderer-D1wd0FhZ.mjs} +75 -27
- package/dist/renderer-D1wd0FhZ.mjs.map +1 -0
- package/dist/{renderer-jqByPgkD.mjs → renderer-D26S5hUh.mjs} +2 -2
- package/dist/{renderer-jqByPgkD.mjs.map → renderer-D26S5hUh.mjs.map} +1 -1
- package/dist/renderer-D4S6i2MC.mjs +5 -0
- package/dist/{renderer-BmGPTWwV.mjs → renderer-D7ss6fLB.mjs} +3 -3
- package/dist/{renderer-BmGPTWwV.mjs.map → renderer-D7ss6fLB.mjs.map} +1 -1
- package/dist/renderer-DB8F0XoP.mjs +5 -0
- package/dist/{renderer-PKQNH21k.mjs → renderer-DCGLXnYW.mjs} +2 -2
- package/dist/{renderer-CrABA3lB.mjs → renderer-DCYabwlC.mjs} +2 -2
- package/dist/{renderer-CrABA3lB.mjs.map → renderer-DCYabwlC.mjs.map} +1 -1
- package/dist/renderer-DGpVLJOn.mjs +5 -0
- package/dist/renderer-DGxibeSa.mjs +5 -0
- package/dist/renderer-DJQm3bAW.mjs +5 -0
- package/dist/{renderer-DD8napek.mjs → renderer-DMZ5aLU1.mjs} +2 -2
- package/dist/{renderer-DD8napek.mjs.map → renderer-DMZ5aLU1.mjs.map} +1 -1
- package/dist/renderer-DMftVSfX.mjs +5 -0
- package/dist/renderer-DNpovOd8.mjs +5 -0
- package/dist/renderer-DO5r7ZV-.mjs +658 -0
- package/dist/renderer-DO5r7ZV-.mjs.map +1 -0
- package/dist/{renderer-DZXbgVMK.mjs → renderer-DOWekunR.mjs} +3 -3
- package/dist/{renderer-DZXbgVMK.mjs.map → renderer-DOWekunR.mjs.map} +1 -1
- package/dist/{renderer-Cce2fgpX.mjs → renderer-DPWeKe_x.mjs} +3 -3
- package/dist/{renderer-Cce2fgpX.mjs.map → renderer-DPWeKe_x.mjs.map} +1 -1
- package/dist/{renderer-CE7fwGgw.mjs → renderer-DQtk282o.mjs} +29 -8
- package/dist/renderer-DQtk282o.mjs.map +1 -0
- package/dist/renderer-DSHlvKQk.mjs +5 -0
- package/dist/renderer-DUBb7D17.mjs +219 -0
- package/dist/renderer-DUBb7D17.mjs.map +1 -0
- package/dist/renderer-DYtrdR2p.mjs +5 -0
- package/dist/{renderer-Bn2eQE-t.mjs → renderer-DaCsT-XU.mjs} +3 -3
- package/dist/{renderer-Bn2eQE-t.mjs.map → renderer-DaCsT-XU.mjs.map} +1 -1
- package/dist/{renderer-D1Cm21eq.mjs → renderer-DcAfp1Er.mjs} +2 -2
- package/dist/{renderer-D1Cm21eq.mjs.map → renderer-DcAfp1Er.mjs.map} +1 -1
- package/dist/{renderer-C8uKdelk.mjs → renderer-DdlaBsk_.mjs} +2 -2
- package/dist/{renderer-C8uKdelk.mjs.map → renderer-DdlaBsk_.mjs.map} +1 -1
- package/dist/renderer-DerDxKK3.mjs +220 -0
- package/dist/renderer-DerDxKK3.mjs.map +1 -0
- package/dist/{renderer-CeyAgJnw.mjs → renderer-DfkWYUTX.mjs} +2 -2
- package/dist/{renderer-DHGTzype.mjs → renderer-Dh-OF6aH.mjs} +2 -2
- package/dist/{renderer-DHGTzype.mjs.map → renderer-Dh-OF6aH.mjs.map} +1 -1
- package/dist/renderer-Dk-THZHp.mjs +222 -0
- package/dist/renderer-Dk-THZHp.mjs.map +1 -0
- package/dist/{renderer-BT-_EoXw.d.mts → renderer-DlESyfg7.d.mts} +2 -2
- package/dist/{renderer-BT-_EoXw.d.mts.map → renderer-DlESyfg7.d.mts.map} +1 -1
- package/dist/renderer-DpWRj6zF.mjs +203 -0
- package/dist/renderer-DpWRj6zF.mjs.map +1 -0
- package/dist/renderer-DpwlN4LH.mjs +233 -0
- package/dist/renderer-DpwlN4LH.mjs.map +1 -0
- package/dist/{renderer-DvFaC_-7.mjs → renderer-Dq4aO7az.mjs} +2 -2
- package/dist/{renderer-DvFaC_-7.mjs.map → renderer-Dq4aO7az.mjs.map} +1 -1
- package/dist/renderer-DuSImLUz.mjs +5 -0
- package/dist/{renderer-BeIUgp1r.mjs → renderer-DukD7S3w.mjs} +2 -2
- package/dist/{renderer-BeIUgp1r.mjs.map → renderer-DukD7S3w.mjs.map} +1 -1
- package/dist/{renderer-EemDpvv3.mjs → renderer-FXUCKps6.mjs} +3 -3
- package/dist/{renderer-EemDpvv3.mjs.map → renderer-FXUCKps6.mjs.map} +1 -1
- package/dist/renderer-FbyMYKXe.mjs +5 -0
- package/dist/renderer-HMl2V4iM.mjs +541 -0
- package/dist/renderer-HMl2V4iM.mjs.map +1 -0
- package/dist/renderer-LM_XIKl1.mjs +203 -0
- package/dist/renderer-LM_XIKl1.mjs.map +1 -0
- package/dist/renderer-NMFv7Auz.mjs +5 -0
- package/dist/{renderer-YbaCzPcG.mjs → renderer-O1b-oYJE.mjs} +2 -2
- package/dist/renderer-P3vpdUnb.mjs +5 -0
- package/dist/renderer-PknbdJyL.mjs +208 -0
- package/dist/renderer-PknbdJyL.mjs.map +1 -0
- package/dist/renderer-QTOm26Lg.mjs +5 -0
- package/dist/renderer-YJ3Yukou.mjs +215 -0
- package/dist/renderer-YJ3Yukou.mjs.map +1 -0
- package/dist/{renderer-p_C_T9Kn.mjs → renderer-YdLL2o6d.mjs} +2 -2
- package/dist/{renderer-p_C_T9Kn.mjs.map → renderer-YdLL2o6d.mjs.map} +1 -1
- package/dist/renderer-ahzhMa5q.mjs +5 -0
- package/dist/{renderer-D-vRKssW.mjs → renderer-c-bwxMde.mjs} +2 -2
- package/dist/{renderer-D-vRKssW.mjs.map → renderer-c-bwxMde.mjs.map} +1 -1
- package/dist/renderer-dThfTNge.mjs +5 -0
- package/dist/renderer-dUkOBfGB.mjs +308 -0
- package/dist/renderer-dUkOBfGB.mjs.map +1 -0
- package/dist/renderer-dgAS_k7B.mjs +5 -0
- package/dist/renderer-g-ui08Lh.mjs +204 -0
- package/dist/renderer-g-ui08Lh.mjs.map +1 -0
- package/dist/renderer-kSs8VtY7.mjs +223 -0
- package/dist/renderer-kSs8VtY7.mjs.map +1 -0
- package/dist/{renderer-KnCcN_Nz.mjs → renderer-pPiQwFYh.mjs} +2 -2
- package/dist/{renderer-KnCcN_Nz.mjs.map → renderer-pPiQwFYh.mjs.map} +1 -1
- package/dist/{renderer-D8thCpS7.mjs → renderer-wL-ly4fT.mjs} +3 -3
- package/dist/{renderer-D8thCpS7.mjs.map → renderer-wL-ly4fT.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs → renderers-CP8CFWDs-CVHwMTiz.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs.map → renderers-CP8CFWDs-CVHwMTiz.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/package.json +58 -55
- package/dist/dist-CT___nEU.mjs.map +0 -1
- package/dist/effects-C06-AOge.mjs.map +0 -1
- package/dist/index-B-oUlLoO.d.mts.map +0 -1
- package/dist/index-CwbszPDG.d.mts.map +0 -1
- package/dist/preview-engine/chunk-G4K6TLNA.mjs +0 -1
- package/dist/preview-engine/chunk-HVCAOHNI.mjs +0 -1
- package/dist/preview-engine/chunk-KBO6EX3M.mjs +0 -1448
- package/dist/preview-engine/chunk-N4LHIPHZ.mjs +0 -340
- package/dist/preview-engine/chunk-NECOKNHA.mjs +0 -174
- package/dist/preview-engine/renderers-T4JMJXWL.mjs +0 -1
- package/dist/preview-engine/renderers-VFV5QWO3.mjs +0 -1
- package/dist/preview-engine/renderers-VUL4HBX3.mjs +0 -228
- package/dist/program-DzknMiY0.mjs.map +0 -1
- package/dist/renderer--IDyGdqT.mjs +0 -5
- package/dist/renderer-17K4tjid.mjs +0 -5
- package/dist/renderer-1vhaKMeg.mjs.map +0 -1
- package/dist/renderer-Ab9Ttn_m.mjs +0 -5
- package/dist/renderer-B-roDBBo.mjs +0 -5
- package/dist/renderer-B03uwoUX.mjs +0 -5
- package/dist/renderer-B3BI_7YJ.mjs +0 -5
- package/dist/renderer-BGD4lQ74.mjs +0 -5
- package/dist/renderer-BHXhYfeC.mjs +0 -5
- package/dist/renderer-BRsTIMFa.mjs +0 -5
- package/dist/renderer-Beg7FLt2.mjs.map +0 -1
- package/dist/renderer-BjMTtYZw.mjs +0 -5
- package/dist/renderer-BoCh3Yts.mjs +0 -5
- package/dist/renderer-BqPbR8c4.mjs +0 -5
- package/dist/renderer-Bxa4SDm9.mjs +0 -3
- package/dist/renderer-C4Da2I1-.mjs +0 -5
- package/dist/renderer-C93X6dgl.mjs +0 -5
- package/dist/renderer-CE7fwGgw.mjs.map +0 -1
- package/dist/renderer-CMAwFfGx.mjs +0 -6
- package/dist/renderer-CRXeSuX2.mjs +0 -5
- package/dist/renderer-CSp6WYBN.mjs +0 -5
- package/dist/renderer-CUXX7HTL.mjs +0 -5
- package/dist/renderer-CUgThpka.mjs +0 -5
- package/dist/renderer-CeVtufiT.mjs +0 -5
- package/dist/renderer-CespkZUk.mjs +0 -5
- package/dist/renderer-D1l47xhL.mjs +0 -5
- package/dist/renderer-DDuG18J8.mjs +0 -5
- package/dist/renderer-DFhrFSMn.mjs +0 -5
- package/dist/renderer-DO48vQ7Y.mjs +0 -5
- package/dist/renderer-DTC39B_n.mjs +0 -5
- package/dist/renderer-DbyU3hNF.mjs +0 -5
- package/dist/renderer-DftVpmfu.mjs +0 -5
- package/dist/renderer-Dj5jm63K.mjs +0 -5
- package/dist/renderer-Dju57ZaF.mjs +0 -5
- package/dist/renderer-Dn8TQCw7.mjs +0 -5
- package/dist/renderer-ETF46K0D.mjs +0 -5
- package/dist/renderer-azYzWGC3.mjs +0 -5
- package/dist/renderer-dxNoRW59.mjs +0 -5
- package/dist/renderer-fdfelx_I.mjs +0 -5
- package/dist/renderer-snwEKwMw.mjs +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as k,b as l,c as m,d as n}from"./chunk-CURR5X7D.mjs";import{a as j}from"./chunk-O2RNIQXT.mjs";import{a as b}from"./chunk-FPRXK2WD.mjs";import{a as c}from"./chunk-VO2R3DWV.mjs";import{a as d}from"./chunk-Q2DPNVIA.mjs";import{a as e}from"./chunk-ZNL4W4DK.mjs";import{a as f}from"./chunk-NEE3KQTX.mjs";import{a as g}from"./chunk-K773AOF3.mjs";import{a}from"./chunk-ZH5MZQTZ.mjs";import{a as h}from"./chunk-PR2BUYCL.mjs";import{b as i}from"./chunk-
|
|
1
|
+
import{a as k,b as l,c as m,d as n}from"./chunk-CURR5X7D.mjs";import{a as j}from"./chunk-O2RNIQXT.mjs";import{a as b}from"./chunk-FPRXK2WD.mjs";import{a as c}from"./chunk-VO2R3DWV.mjs";import{a as d}from"./chunk-Q2DPNVIA.mjs";import{a as e}from"./chunk-ZNL4W4DK.mjs";import{a as f}from"./chunk-NEE3KQTX.mjs";import{a as g}from"./chunk-K773AOF3.mjs";import{a}from"./chunk-ZH5MZQTZ.mjs";import{a as h}from"./chunk-PR2BUYCL.mjs";import{b as i}from"./chunk-BVA5NGSH.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-2SJ4BBMT.mjs";import"./chunk-24P6DAB3.mjs";import"./chunk-NIRW77QA.mjs";import"./chunk-Q4Z54DQ7.mjs";import"./chunk-6YJP57MZ.mjs";import"./chunk-63SFBHEH.mjs";import"./chunk-BVF64D6H.mjs";export{a as WebGPUAudioProcessor,d as audioFadeRenderer,h as audioSignalExtractorRenderer,b as compressorRenderer,c as delayRenderer,n as encodeStereoWav,i as mixAudioTracks,l as mixSfxInto,e as noiseGateRenderer,f as parametricEqRenderer,k as renderSfx,g as reverbRenderer,m as softLimit,j as stereoPanningRenderer};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import{a as m}from"./chunk-7I7PKKDL.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();var g=`
|
|
2
|
+
struct WarpBlendParams {
|
|
3
|
+
width: u32,
|
|
4
|
+
height: u32,
|
|
5
|
+
blendWeight: f32, // Base current frame weight alpha (e.g. 0.35)
|
|
6
|
+
disocclusionThreshold: f32, // Photometric error cutoff for fallback to curr frame
|
|
7
|
+
maxMotionPixels: f32, // Speed cutoff for fallback to curr frame
|
|
8
|
+
isFirstFrame: f32, // 1.0 = pass-through first frame, 0.0 = temporal blend
|
|
9
|
+
_pad0: f32,
|
|
10
|
+
_pad1: f32,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
@group(0) @binding(0) var prevTex: texture_2d<f32>;
|
|
14
|
+
@group(0) @binding(1) var currTex: texture_2d<f32>;
|
|
15
|
+
@group(0) @binding(2) var flowTex: texture_2d<f32>;
|
|
16
|
+
@group(0) @binding(3) var outTex: texture_storage_2d<rgba8unorm, write>;
|
|
17
|
+
@group(0) @binding(4) var<uniform> params: WarpBlendParams;
|
|
18
|
+
@group(0) @binding(5) var bilinearSamp: sampler;
|
|
19
|
+
|
|
20
|
+
@compute @workgroup_size(16, 16)
|
|
21
|
+
fn warpBlend(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
22
|
+
if (id.x >= params.width || id.y >= params.height) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let coord = vec2<i32>(i32(id.x), i32(id.y));
|
|
27
|
+
let currColor = textureLoad(currTex, coord, 0);
|
|
28
|
+
|
|
29
|
+
// If first frame or scene cut reset, pass through current frame directly
|
|
30
|
+
if (params.isFirstFrame > 0.5) {
|
|
31
|
+
textureStore(outTex, id.xy, currColor);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let dims = vec2<f32>(f32(params.width), f32(params.height));
|
|
36
|
+
let invDims = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);
|
|
37
|
+
let uv = (vec2<f32>(id.xy) + 0.5) * invDims;
|
|
38
|
+
|
|
39
|
+
// Read motion vector (u, v) in pixel units
|
|
40
|
+
let flowSample = textureLoad(flowTex, coord, 0);
|
|
41
|
+
let flow = flowSample.xy;
|
|
42
|
+
let speed = length(flow);
|
|
43
|
+
|
|
44
|
+
// Motion-compensated backward warp coordinate pointing to previous frame
|
|
45
|
+
let warpedUv = clamp(uv - flow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
46
|
+
let warpedPrev = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
|
|
47
|
+
|
|
48
|
+
// Photometric consistency error normalized to [0, 1] range (1 / sqrt(3) ~= 0.57735027)
|
|
49
|
+
let colorDiff = length(currColor.rgb - warpedPrev.rgb) * 0.57735027;
|
|
50
|
+
|
|
51
|
+
// Adaptive blend weight:
|
|
52
|
+
// - Coherent motion (low diff, low speed): alpha = blendWeight (strong deflicker smoothing)
|
|
53
|
+
// - Disocclusion or extreme motion (high diff): alpha -> 1.0 (fall back to curr frame, no ghosting)
|
|
54
|
+
let tLow = params.disocclusionThreshold;
|
|
55
|
+
let tHigh = params.disocclusionThreshold * 1.5;
|
|
56
|
+
let errFactor = smoothstep(tLow, tHigh, colorDiff);
|
|
57
|
+
let speedFactor = smoothstep(params.maxMotionPixels * 0.5, params.maxMotionPixels, speed);
|
|
58
|
+
|
|
59
|
+
let fallbackFactor = max(errFactor, speedFactor);
|
|
60
|
+
let alpha = clamp(mix(params.blendWeight, 1.0, fallbackFactor), 0.0, 1.0);
|
|
61
|
+
|
|
62
|
+
let blendedRgb = mix(warpedPrev.rgb, currColor.rgb, alpha);
|
|
63
|
+
let blendedA = mix(warpedPrev.a, currColor.a, alpha);
|
|
64
|
+
|
|
65
|
+
textureStore(outTex, id.xy, vec4<f32>(blendedRgb, blendedA));
|
|
66
|
+
}
|
|
67
|
+
`,x=`
|
|
68
|
+
struct WarpBlendParams {
|
|
69
|
+
width: u32,
|
|
70
|
+
height: u32,
|
|
71
|
+
blendWeight: f32,
|
|
72
|
+
disocclusionThreshold: f32,
|
|
73
|
+
maxMotionPixels: f32,
|
|
74
|
+
isFirstFrame: f32,
|
|
75
|
+
_pad0: f32,
|
|
76
|
+
_pad1: f32,
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
@group(0) @binding(0) var prevTex: texture_2d<f32>;
|
|
80
|
+
@group(0) @binding(1) var currTex: texture_2d<f32>;
|
|
81
|
+
@group(0) @binding(2) var flowTex: texture_2d<f32>;
|
|
82
|
+
@group(0) @binding(3) var outTex: texture_storage_2d<rgba16float, write>;
|
|
83
|
+
@group(0) @binding(4) var<uniform> params: WarpBlendParams;
|
|
84
|
+
@group(0) @binding(5) var bilinearSamp: sampler;
|
|
85
|
+
|
|
86
|
+
@compute @workgroup_size(16, 16)
|
|
87
|
+
fn warpBlend(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
88
|
+
if (id.x >= params.width || id.y >= params.height) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let coord = vec2<i32>(i32(id.x), i32(id.y));
|
|
93
|
+
let currColor = textureLoad(currTex, coord, 0);
|
|
94
|
+
|
|
95
|
+
if (params.isFirstFrame > 0.5) {
|
|
96
|
+
textureStore(outTex, id.xy, currColor);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
let dims = vec2<f32>(f32(params.width), f32(params.height));
|
|
101
|
+
let invDims = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);
|
|
102
|
+
let uv = (vec2<f32>(id.xy) + 0.5) * invDims;
|
|
103
|
+
|
|
104
|
+
let flowSample = textureLoad(flowTex, coord, 0);
|
|
105
|
+
let flow = flowSample.xy;
|
|
106
|
+
let speed = length(flow);
|
|
107
|
+
|
|
108
|
+
let warpedUv = clamp(uv - flow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
109
|
+
let warpedPrev = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
|
|
110
|
+
|
|
111
|
+
// Photometric consistency error normalized to [0, 1] range (1 / sqrt(3) ~= 0.57735027)
|
|
112
|
+
let colorDiff = length(currColor.rgb - warpedPrev.rgb) * 0.57735027;
|
|
113
|
+
|
|
114
|
+
let tLow = params.disocclusionThreshold;
|
|
115
|
+
let tHigh = params.disocclusionThreshold * 1.5;
|
|
116
|
+
let errFactor = smoothstep(tLow, tHigh, colorDiff);
|
|
117
|
+
let speedFactor = smoothstep(params.maxMotionPixels * 0.5, params.maxMotionPixels, speed);
|
|
118
|
+
|
|
119
|
+
let fallbackFactor = max(errFactor, speedFactor);
|
|
120
|
+
let alpha = clamp(mix(params.blendWeight, 1.0, fallbackFactor), 0.0, 1.0);
|
|
121
|
+
|
|
122
|
+
let blendedRgb = mix(warpedPrev.rgb, currColor.rgb, alpha);
|
|
123
|
+
let blendedA = mix(warpedPrev.a, currColor.a, alpha);
|
|
124
|
+
|
|
125
|
+
textureStore(outTex, id.xy, vec4<f32>(blendedRgb, blendedA));
|
|
126
|
+
}
|
|
127
|
+
`;var b=class{constructor(e){this.device=e;this.flowPipeline=new m(e);let a=e.createShaderModule({label:"temporal_warp_blend_rgba8.wgsl",code:g});this.rgba8Pipeline=e.createComputePipeline({label:"TemporalWarpBlendRgba8Pipeline",layout:"auto",compute:{module:a,entryPoint:"warpBlend"}});let i=e.createShaderModule({label:"temporal_warp_blend_rgba16f.wgsl",code:x});this.rgba16fPipeline=e.createComputePipeline({label:"TemporalWarpBlendRgba16fPipeline",layout:"auto",compute:{module:i,entryPoint:"warpBlend"}}),this.uniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"temporal_deflicker_uniform"}),this.bilinearSampler=e.createSampler({label:"temporal_deflicker_sampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})}device;flowPipeline;rgba8Pipeline;rgba16fPipeline;uniformBuffer;bilinearSampler;historyTexture;cachedOutputTexture;execute(e,a={},i){let r=e.width,t=e.height,d=a.blendWeight??.35,T=typeof d=="number"?d:Number(d),w=a.disocclusionThreshold??.15,v=a.maxMotionPixels??64,o=e.format,P=o==="rgba16float";if((!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==t||this.cachedOutputTexture.format!==o)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`deflickered_output_${o}`,size:[r,t],format:o,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT})),!this.historyTexture||this.historyTexture.width!==r||this.historyTexture.height!==t){this.historyTexture?.destroy(),this.historyTexture=this.device.createTexture({label:"deflicker_history_texture",size:[r,t],format:o,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC});let c=i??this.device.createCommandEncoder({label:"deflicker_first_frame_encoder"});return c.copyTextureToTexture({texture:e},{texture:this.historyTexture},[r,t]),c.copyTextureToTexture({texture:e},{texture:this.cachedOutputTexture},[r,t]),i||this.device.queue.submit([c.finish()]),this.cachedOutputTexture}let y=this.flowPipeline.execute(this.historyTexture,e,a.opticalFlow,i),n=new ArrayBuffer(32),f=new Uint32Array(n),l=new Float32Array(n);f[0]=r,f[1]=t,l[2]=T,l[3]=w,l[4]=v,l[5]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,n);let h=P?this.rgba16fPipeline:this.rgba8Pipeline,p=i??this.device.createCommandEncoder({label:"deflicker_blend_encoder"}),_=this.device.createBindGroup({layout:h.getBindGroupLayout(0),entries:[{binding:0,resource:this.historyTexture.createView()},{binding:1,resource:e.createView()},{binding:2,resource:y.createView()},{binding:3,resource:this.cachedOutputTexture.createView()},{binding:4,resource:{buffer:this.uniformBuffer}},{binding:5,resource:this.bilinearSampler}]}),s=p.beginComputePass({label:"deflicker_blend_pass"});return s.setPipeline(h),s.setBindGroup(0,_),s.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(t/16)),s.end(),p.copyTextureToTexture({texture:this.cachedOutputTexture},{texture:this.historyTexture},[r,t]),i||this.device.queue.submit([p.finish()]),this.cachedOutputTexture}reset(){this.historyTexture?.destroy(),this.historyTexture=void 0}destroy(){this.flowPipeline.destroy(),this.historyTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};export{b as a};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import{e as x}from"./chunk-BVF64D6H.mjs";x();x();var P=`
|
|
2
|
+
struct FlowParams {
|
|
3
|
+
width: u32,
|
|
4
|
+
height: u32,
|
|
5
|
+
windowSize: u32, // Half-window radius W (e.g. 2 for 5x5 window)
|
|
6
|
+
regularization: f32, // Tikhonov regularization lambda
|
|
7
|
+
maxDisplacement: f32, // Maximum allowable flow vector length
|
|
8
|
+
_pad0: f32,
|
|
9
|
+
_pad1: f32,
|
|
10
|
+
_pad2: f32,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
@group(0) @binding(0) var prevTex: texture_2d<f32>;
|
|
14
|
+
@group(0) @binding(1) var currTex: texture_2d<f32>;
|
|
15
|
+
@group(0) @binding(2) var flowTex: texture_storage_2d<rgba16float, write>;
|
|
16
|
+
@group(0) @binding(3) var<uniform> params: FlowParams;
|
|
17
|
+
|
|
18
|
+
fn rgbToLuminance(rgb: vec3<f32>) -> f32 {
|
|
19
|
+
return dot(rgb, vec3<f32>(0.299, 0.587, 0.114));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
fn sampleLuma(tex: texture_2d<f32>, coord: vec2<i32>) -> f32 {
|
|
23
|
+
let inDims = vec2<f32>(textureDimensions(tex));
|
|
24
|
+
let scaleRatio = inDims / vec2<f32>(f32(params.width), f32(params.height));
|
|
25
|
+
let actualCoord = vec2<i32>(vec2<f32>(coord) * scaleRatio);
|
|
26
|
+
let clamped = clamp(actualCoord, vec2<i32>(0, 0), vec2<i32>(inDims) - vec2<i32>(1, 1));
|
|
27
|
+
let color = textureLoad(tex, clamped, 0);
|
|
28
|
+
return rgbToLuminance(color.rgb);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@compute @workgroup_size(16, 16)
|
|
32
|
+
fn computeFlow(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
33
|
+
if (id.x >= params.width || id.y >= params.height) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let centerCoord = vec2<i32>(i32(id.x), i32(id.y));
|
|
38
|
+
let w = i32(max(params.windowSize, 1u));
|
|
39
|
+
|
|
40
|
+
var sxx: f32 = 0.0;
|
|
41
|
+
var syy: f32 = 0.0;
|
|
42
|
+
var sxy: f32 = 0.0;
|
|
43
|
+
var sxt: f32 = 0.0;
|
|
44
|
+
var syt: f32 = 0.0;
|
|
45
|
+
|
|
46
|
+
for (var dy = -w; dy <= w; dy = dy + 1) {
|
|
47
|
+
for (var dx = -w; dx <= w; dx = dx + 1) {
|
|
48
|
+
let p = centerCoord + vec2<i32>(dx, dy);
|
|
49
|
+
|
|
50
|
+
// Central difference spatial gradients on current frame
|
|
51
|
+
let lx = sampleLuma(currTex, p - vec2<i32>(1, 0));
|
|
52
|
+
let rx = sampleLuma(currTex, p + vec2<i32>(1, 0));
|
|
53
|
+
let uy = sampleLuma(currTex, p - vec2<i32>(0, 1));
|
|
54
|
+
let dyL = sampleLuma(currTex, p + vec2<i32>(0, 1));
|
|
55
|
+
|
|
56
|
+
let ix = (rx - lx) * 0.5;
|
|
57
|
+
let iy = (dyL - uy) * 0.5;
|
|
58
|
+
|
|
59
|
+
// Temporal gradient: difference between current and previous frame
|
|
60
|
+
let cCurr = sampleLuma(currTex, p);
|
|
61
|
+
let cPrev = sampleLuma(prevTex, p);
|
|
62
|
+
let it = cCurr - cPrev;
|
|
63
|
+
|
|
64
|
+
// Gaussian spatial falloff weight
|
|
65
|
+
let distSq = f32(dx * dx + dy * dy);
|
|
66
|
+
let weight = exp(-distSq / (2.0 * f32(w * w) + 0.1));
|
|
67
|
+
|
|
68
|
+
sxx += ix * ix * weight;
|
|
69
|
+
syy += iy * iy * weight;
|
|
70
|
+
sxy += ix * iy * weight;
|
|
71
|
+
sxt += ix * it * weight;
|
|
72
|
+
syt += iy * it * weight;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Tikhonov regularization prevents singularity in flat/homogeneous regions
|
|
77
|
+
let trace = sxx + syy;
|
|
78
|
+
let reg = max(params.regularization, 1e-4) * max(trace, 1.0);
|
|
79
|
+
let A = sxx + reg;
|
|
80
|
+
let B = sxy;
|
|
81
|
+
let C = syy + reg;
|
|
82
|
+
|
|
83
|
+
let det = A * C - B * B;
|
|
84
|
+
var u: f32 = 0.0;
|
|
85
|
+
var v: f32 = 0.0;
|
|
86
|
+
|
|
87
|
+
if (det > 1e-6) {
|
|
88
|
+
u = (-sxt * C + syt * B) / det;
|
|
89
|
+
v = (-syt * A + sxt * B) / det;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let mag = length(vec2<f32>(u, v));
|
|
93
|
+
let maxD = max(params.maxDisplacement, 1.0);
|
|
94
|
+
if (mag > maxD) {
|
|
95
|
+
let scale = maxD / mag;
|
|
96
|
+
u *= scale;
|
|
97
|
+
v *= scale;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
textureStore(flowTex, id.xy, vec4<f32>(u, v, min(mag, maxD), 1.0));
|
|
101
|
+
}
|
|
102
|
+
`,U=`
|
|
103
|
+
struct FlowParams {
|
|
104
|
+
width: u32,
|
|
105
|
+
height: u32,
|
|
106
|
+
windowSize: u32,
|
|
107
|
+
regularization: f32,
|
|
108
|
+
maxDisplacement: f32,
|
|
109
|
+
coarseWidth: u32,
|
|
110
|
+
coarseHeight: u32,
|
|
111
|
+
_pad0: f32,
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
@group(0) @binding(0) var prevTex: texture_2d<f32>;
|
|
115
|
+
@group(0) @binding(1) var currTex: texture_2d<f32>;
|
|
116
|
+
@group(0) @binding(2) var coarseFlowTex: texture_2d<f32>;
|
|
117
|
+
@group(0) @binding(3) var fineFlowTex: texture_storage_2d<rgba16float, write>;
|
|
118
|
+
@group(0) @binding(4) var<uniform> params: FlowParams;
|
|
119
|
+
@group(0) @binding(5) var bilinearSamp: sampler;
|
|
120
|
+
|
|
121
|
+
fn rgbToLuminance(rgb: vec3<f32>) -> f32 {
|
|
122
|
+
return dot(rgb, vec3<f32>(0.299, 0.587, 0.114));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
fn sampleLuma(tex: texture_2d<f32>, coord: vec2<i32>) -> f32 {
|
|
126
|
+
let clamped = clamp(coord, vec2<i32>(0, 0), vec2<i32>(i32(params.width) - 1, i32(params.height) - 1));
|
|
127
|
+
let color = textureLoad(tex, clamped, 0);
|
|
128
|
+
return rgbToLuminance(color.rgb);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
fn sampleWarpedPrevLuma(uv: vec2<f32>, priorFlow: vec2<f32>) -> f32 {
|
|
132
|
+
let invDims = vec2<f32>(1.0 / f32(params.width), 1.0 / f32(params.height));
|
|
133
|
+
let warpedUv = clamp(uv - priorFlow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
134
|
+
let sampleColor = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
|
|
135
|
+
return rgbToLuminance(sampleColor.rgb);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@compute @workgroup_size(16, 16)
|
|
139
|
+
fn refineFlow(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
140
|
+
if (id.x >= params.width || id.y >= params.height) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
let centerCoord = vec2<i32>(i32(id.x), i32(id.y));
|
|
145
|
+
let w = i32(max(params.windowSize, 1u));
|
|
146
|
+
let invDims = vec2<f32>(1.0 / f32(params.width), 1.0 / f32(params.height));
|
|
147
|
+
let centerUv = (vec2<f32>(id.xy) + 0.5) * invDims;
|
|
148
|
+
|
|
149
|
+
// Read upsampled prior flow from coarse scale (scaled by 2x)
|
|
150
|
+
let coarseCoord = vec2<i32>(centerCoord / 2);
|
|
151
|
+
let coarseSample = textureLoad(coarseFlowTex, coarseCoord, 0);
|
|
152
|
+
let priorFlow = coarseSample.xy * 2.0;
|
|
153
|
+
|
|
154
|
+
var sxx: f32 = 0.0;
|
|
155
|
+
var syy: f32 = 0.0;
|
|
156
|
+
var sxy: f32 = 0.0;
|
|
157
|
+
var sxt: f32 = 0.0;
|
|
158
|
+
var syt: f32 = 0.0;
|
|
159
|
+
|
|
160
|
+
for (var dy = -w; dy <= w; dy = dy + 1) {
|
|
161
|
+
for (var dx = -w; dx <= w; dx = dx + 1) {
|
|
162
|
+
let p = centerCoord + vec2<i32>(dx, dy);
|
|
163
|
+
let pUv = (vec2<f32>(p) + 0.5) * invDims;
|
|
164
|
+
|
|
165
|
+
let lx = sampleLuma(currTex, p - vec2<i32>(1, 0));
|
|
166
|
+
let rx = sampleLuma(currTex, p + vec2<i32>(1, 0));
|
|
167
|
+
let uy = sampleLuma(currTex, p - vec2<i32>(0, 1));
|
|
168
|
+
let dyL = sampleLuma(currTex, p + vec2<i32>(0, 1));
|
|
169
|
+
|
|
170
|
+
let ix = (rx - lx) * 0.5;
|
|
171
|
+
let iy = (dyL - uy) * 0.5;
|
|
172
|
+
|
|
173
|
+
// Temporal residual against warped previous frame
|
|
174
|
+
let cCurr = sampleLuma(currTex, p);
|
|
175
|
+
let cWarpedPrev = sampleWarpedPrevLuma(pUv, priorFlow);
|
|
176
|
+
let it = cCurr - cWarpedPrev;
|
|
177
|
+
|
|
178
|
+
let distSq = f32(dx * dx + dy * dy);
|
|
179
|
+
let weight = exp(-distSq / (2.0 * f32(w * w) + 0.1));
|
|
180
|
+
|
|
181
|
+
sxx += ix * ix * weight;
|
|
182
|
+
syy += iy * iy * weight;
|
|
183
|
+
sxy += ix * iy * weight;
|
|
184
|
+
sxt += ix * it * weight;
|
|
185
|
+
syt += iy * it * weight;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
let trace = sxx + syy;
|
|
190
|
+
let reg = max(params.regularization, 1e-4) * max(trace, 1.0);
|
|
191
|
+
let A = sxx + reg;
|
|
192
|
+
let B = sxy;
|
|
193
|
+
let C = syy + reg;
|
|
194
|
+
|
|
195
|
+
let det = A * C - B * B;
|
|
196
|
+
var du: f32 = 0.0;
|
|
197
|
+
var dv: f32 = 0.0;
|
|
198
|
+
|
|
199
|
+
if (det > 1e-6) {
|
|
200
|
+
du = (-sxt * C + syt * B) / det;
|
|
201
|
+
dv = (-syt * A + sxt * B) / det;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Combine coarse prior flow with fine residual flow
|
|
205
|
+
var totalFlow = priorFlow + vec2<f32>(du, dv);
|
|
206
|
+
let mag = length(totalFlow);
|
|
207
|
+
let maxD = max(params.maxDisplacement, 1.0);
|
|
208
|
+
if (mag > maxD) {
|
|
209
|
+
totalFlow *= (maxD / mag);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
textureStore(fineFlowTex, id.xy, vec4<f32>(totalFlow.x, totalFlow.y, min(mag, maxD), 1.0));
|
|
213
|
+
}
|
|
214
|
+
`;var _=class{constructor(e){this.device=e;let o=e.createShaderModule({label:"optical_flow_direct.wgsl",code:P});this.directPipeline=e.createComputePipeline({label:"OpticalFlowDirectPipeline",layout:"auto",compute:{module:o,entryPoint:"computeFlow"}});let l=e.createShaderModule({label:"optical_flow_refine.wgsl",code:U});this.refinePipeline=e.createComputePipeline({label:"OpticalFlowRefinePipeline",layout:"auto",compute:{module:l,entryPoint:"refineFlow"}}),this.directUniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"optical_flow_direct_uniform"}),this.refineUniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"optical_flow_refine_uniform"}),this.bilinearSampler=e.createSampler({label:"optical_flow_bilinear_sampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})}device;directPipeline;refinePipeline;directUniformBuffer;refineUniformBuffer;bilinearSampler;cachedCoarseTexture;cachedOutputTexture;execute(e,o,l={},b){let i=o.width,a=o.height,g=l?.windowSize??3,h=l?.regularization??l?.lambda??.05,u=l?.scale??.5,w=64,v=l.outputFormat??"rgba16float";(!this.cachedOutputTexture||this.cachedOutputTexture.width!==i||this.cachedOutputTexture.height!==a||this.cachedOutputTexture.format!==v)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`optical_flow_output_${v}`,size:[i,a],format:v,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let f=b??this.device.createCommandEncoder({label:"optical_flow_command_encoder"});if(u>.1&&u<.95&&i>=64&&a>=64){let r=Math.max(16,Math.floor(i*u)),t=Math.max(16,Math.floor(a*u));(!this.cachedCoarseTexture||this.cachedCoarseTexture.width!==r||this.cachedCoarseTexture.height!==t)&&(this.cachedCoarseTexture?.destroy(),this.cachedCoarseTexture=this.device.createTexture({label:"optical_flow_coarse",size:[r,t],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let c=new ArrayBuffer(32),n=new Uint32Array(c),s=new Float32Array(c);n[0]=r,n[1]=t,n[2]=g,s[3]=h,s[4]=w*u,this.device.queue.writeBuffer(this.directUniformBuffer,0,c);let B=this.device.createBindGroup({layout:this.directPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedCoarseTexture.createView()},{binding:3,resource:{buffer:this.directUniformBuffer}}]}),p=f.beginComputePass({label:"optical_flow_coarse_pass"});p.setPipeline(this.directPipeline),p.setBindGroup(0,B),p.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(t/16)),p.end();let y=new ArrayBuffer(32),d=new Uint32Array(y),T=new Float32Array(y);d[0]=i,d[1]=a,d[2]=g,T[3]=h,T[4]=w,d[5]=r,d[6]=t,this.device.queue.writeBuffer(this.refineUniformBuffer,0,y);let C=this.device.createBindGroup({layout:this.refinePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedCoarseTexture.createView()},{binding:3,resource:this.cachedOutputTexture.createView()},{binding:4,resource:{buffer:this.refineUniformBuffer}},{binding:5,resource:this.bilinearSampler}]}),m=f.beginComputePass({label:"optical_flow_fine_pass"});m.setPipeline(this.refinePipeline),m.setBindGroup(0,C),m.dispatchWorkgroups(Math.ceil(i/16),Math.ceil(a/16)),m.end()}else{let r=new ArrayBuffer(32),t=new Uint32Array(r),c=new Float32Array(r);t[0]=i,t[1]=a,t[2]=g,c[3]=h,c[4]=w,this.device.queue.writeBuffer(this.directUniformBuffer,0,r);let n=this.device.createBindGroup({layout:this.directPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedOutputTexture.createView()},{binding:3,resource:{buffer:this.directUniformBuffer}}]}),s=f.beginComputePass({label:"optical_flow_direct_pass"});s.setPipeline(this.directPipeline),s.setBindGroup(0,n),s.dispatchWorkgroups(Math.ceil(i/16),Math.ceil(a/16)),s.end()}return b||this.device.queue.submit([f.finish()]),this.cachedOutputTexture}destroy(){this.cachedCoarseTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.directUniformBuffer.destroy(),this.refineUniformBuffer.destroy()}};export{_ as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as t}from"./chunk-KERW7QJ4.mjs";import{a as pe}from"./chunk-TPAEN6VV.mjs";import{h as ie}from"./chunk-63SFBHEH.mjs";import{d,e as p}from"./chunk-BVF64D6H.mjs";p();p();p();p();p();p();function de(r){return typeof d<"u"?d.env?.[r]:void 0}function me(){let r=de("FRAMEFIELDS_STRICT_PROPS");return r==="1"||r==="true"}function ze(){return me()||de("NODE_ENV")!=="production"}var ue=new Set;function se(r){if(me())throw new Error(r);ue.has(r)||(ue.add(r),console.warn(`[framefields] ${r}`))}function ce(r){if(typeof r!="object"||r===null||Array.isArray(r)||ie(r))return!1;let e=Object.getPrototypeOf(r);return e===Object.prototype||e===null}function Fe(r,e){let a=Array.from({length:e.length+1},(l,i)=>i);for(let l=1;l<=r.length;l++){let i=a[0];a[0]=l;for(let s=1;s<=e.length;s++){let c=a[s];a[s]=Math.min(a[s]+1,a[s-1]+1,i+(r[l-1]===e[s-1]?0:1)),i=c}}return a[e.length]}function Ye(r,e){let a,l=Number.POSITIVE_INFINITY,i=r.toLowerCase();for(let c of e){let u=c.toLowerCase(),m=u.includes(i)||i.includes(u)?1:Fe(i,u);m<l&&(l=m,a=c)}return a&&l<=Math.max(2,Math.ceil(r.length/2))?` Did you mean "${a}"?`:` Known props: ${e.join(", ")}.`}function Ve(r,e,a){if(typeof e=="number"){let{min:l,max:i}=a,s=l!==void 0&&e<l,c=i!==void 0&&e>i;if(s||c||Number.isNaN(e)){let u=l!==void 0&&i!==void 0?`${l} to ${i}`:l!==void 0?`\u2265 ${l}`:`\u2264 ${i}`;se(Number.isNaN(e)?`${r} is NaN`:`${r} = ${e} is outside ${u}`)}return}a.enum&&(typeof e=="string"||typeof e=="boolean")&&!a.enum.includes(e)&&se(`${r} = ${JSON.stringify(e)} is not one of ${a.enum.map(l=>JSON.stringify(l)).join(", ")}`)}function be(r,e,a){let l=Object.keys(a);for(let[i,s]of Object.entries(e)){if(s===void 0)continue;let c=a[i];if(!c){se(`${r}: unknown prop "${i}".${Ye(i,l)}`);continue}ie(s)||typeof s=="function"||(c.props&&ce(s)?be(`${r}.${i}`,s,c.props):Ve(`${r}.${i}`,s,c))}}function Xe(r){return typeof r=="object"&&r!==null?structuredClone(r):r}function o(r,e,a,l){let i=a;ze()&&be(r,i,l);let s={};for(let[c,u]of Object.entries(e))s[c]=Xe(u);for(let[c,u]of Object.entries(i)){if(u===void 0)continue;let m=s[c];s[c]=ce(m)&&ce(u)?{...m,...Object.fromEntries(Object.entries(u).filter(([,Oe])=>Oe!==void 0))}:u}return s}p();var n={Ascii:{cellSize:{min:4,max:64},colorMode:{enum:["mono","source","green"]},fg:{},bg:{},contrast:{min:.5,max:3},invert:{}},AudioCompressor:{threshold:{min:-60,max:0},ratio:{min:1,max:100},attack:{min:1e-4,max:1},release:{min:.01,max:5},knee:{min:0,max:24},makeupGain:{min:0,max:24}},AudioDelay:{delayTime:{min:.001,max:5},feedback:{min:0,max:.95},wet:{min:0,max:1},dry:{min:0,max:1},pingPong:{}},AudioFade:{fadeInDuration:{min:0,max:60},fadeOutDuration:{min:0,max:60},fadeInCurve:{enum:["linear","exponential","scurve"]},fadeOutCurve:{enum:["linear","exponential","scurve"]}},AudioNoiseGate:{threshold:{min:-120,max:0},attack:{min:1e-4,max:1},hold:{min:.001,max:5},release:{min:.01,max:5},range:{min:-120,max:0}},AudioParametricEq:{type:{enum:["lowShelf","highShelf","peak","lowPass","highPass","notch"]},frequency:{min:20,max:2e4},gain:{min:-24,max:24},q:{min:.01,max:10}},AudioReverb:{roomSize:{min:0,max:.98},damping:{min:0,max:1},wet:{min:0,max:1},dry:{min:0,max:1},width:{min:0,max:1}},Blur:{blurType:{enum:["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]},strength:{min:0,max:100},angle:{min:0,max:360},sigmaColor:{min:.01,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1},partialBlur:{},radius:{min:.01,max:1},radiusY:{min:0,max:1},shape:{enum:["ellipse","circle","rect"]}},CameraParallax3D:{motionPreset:{enum:["Custom","DollyZoom","Orbit","FlyThrough","HandheldShake","RackFocus"]},panX:{min:-1,max:1},panY:{min:-1,max:1},dollyZ:{min:-1,max:1},fov:{min:15,max:120},parallaxAmount:{min:0,max:2},dofAperture:{min:0,max:1},focusPlane:{min:0,max:1},edgeDilation:{min:0,max:1},depthInvert:{}},ChannelMerger:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]},defaultChannel4:{min:0,max:1}},ChannelSplitter:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]}},ColorBalance:{shadows:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},midtones:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},highlights:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},preserveLuminosity:{}},ColorKey:{keyColor:{},similarity:{min:0,max:1},smoothness:{min:0,max:1},spillSuppression:{min:0,max:1},colorSpace:{enum:["YUV","RGB"]},spillSuppressionType:{enum:["Desaturate","Neutralize","None"]}},Contour:{levels:{min:2,max:64},lineWidth:{min:.5,max:8},lineColor:{},fill:{enum:["source","flat","none"]},fillColor:{},smoothing:{min:0,max:8}},CornerPin:{points:{}},CRT:{scanlines:{min:0,max:1},lineCount:{min:100,max:2160},curvature:{min:0,max:1},mask:{min:0,max:1},vignette:{min:0,max:1},noise:{min:0,max:1},flicker:{min:0,max:1},tracking:{min:0,max:1},chroma:{min:0,max:20}},Datamosh:{keyframes:{},strength:{min:0,max:10},bleed:{min:0,max:1},warmup:{min:1,max:240}},DisplacementMap:{strengthX:{min:0,max:500},strengthY:{min:0,max:500},xChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},yChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},wrapMode:{enum:["Clamp","Repeat","Mirror"]}},Dither:{mode:{enum:["bayer","noise","halftone"]},levels:{min:2,max:16},scale:{min:1,max:16},monochrome:{},dark:{},light:{}},ExtractLUT:{strategy:{enum:["deterministic","statistical"]},samplePoints:{min:10,max:500}},Flip:{horizontal:{},vertical:{},diagonal:{},mode:{enum:["horizontal","vertical","both","diagonal","antiDiagonal","custom"]},symmetry:{enum:["none","leftToRight","rightToLeft","topToBottom","bottomToTop","quadrant"]}},Gooey:{radius:{min:1,max:60},threshold:{min:0,max:1},softness:{min:.001,max:.5}},Iridescence:{strength:{min:0,max:1},scale:{min:.1,max:10},shift:{min:-3600,max:3600},mode:{enum:["luminance","relief"]}},Kaleidoscope:{segments:{min:2,max:32},rotation:{min:-3600,max:3600},centerX:{min:0,max:1},centerY:{min:0,max:1},zoom:{min:.2,max:4}},KenBurns:{keyframes:{},motionBlurSize:{min:0,max:10},movementStyle:{enum:["spline","direct"]},aspectRatio:{enum:["input","16:9","9:16","21:9","9:21","1:1","4:3","3:2","2:3","4:5","5:4"]}},LayerStyle:{dropShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},spread:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},innerShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},choke:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},outerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},innerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},stroke:{props:{enabled:{},size:{min:0,max:100},position:{enum:["inside","center","outside"]},color:{},opacity:{min:0,max:1},blendMode:{}}},bevelEmboss:{props:{enabled:{},style:{enum:["InnerBevel","OuterBevel","Emboss","PillowEmboss"]},technique:{enum:["Smooth","ChiselHard","ChiselSoft"]},depth:{min:1,max:1e3},direction:{enum:["Up","Down"]},size:{min:0,max:250},soften:{min:0,max:50},angle:{min:0,max:360},altitude:{min:0,max:90},highlightColor:{},highlightOpacity:{min:0,max:1},shadowColor:{},shadowOpacity:{min:0,max:1}}},colorOverlay:{props:{enabled:{},color:{},opacity:{min:0,max:1},blendMode:{}}},dropShadowAngleHandleId:{},dropShadowDistanceHandleId:{},dropShadowSpreadHandleId:{},dropShadowSizeHandleId:{},dropShadowOpacityHandleId:{},innerShadowAngleHandleId:{},innerShadowDistanceHandleId:{},innerShadowChokeHandleId:{},innerShadowSizeHandleId:{},innerShadowOpacityHandleId:{},outerGlowSizeHandleId:{},outerGlowSpreadHandleId:{},outerGlowOpacityHandleId:{},innerGlowSizeHandleId:{},innerGlowSpreadHandleId:{},innerGlowOpacityHandleId:{},strokeSizeHandleId:{},strokeOpacityHandleId:{},bevelEmbossDepthHandleId:{},bevelEmbossSizeHandleId:{},bevelEmbossSoftenHandleId:{},bevelEmbossAngleHandleId:{},bevelEmbossAltitudeHandleId:{},bevelEmbossHighlightOpacityHandleId:{},bevelEmbossShadowOpacityHandleId:{},colorOverlayOpacityHandleId:{}},Liquify:{operations:{}},MaskMath:{operation:{enum:["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]},radius:{min:0,max:200},threshold:{min:0,max:1},clampMin:{min:0,max:1},clampMax:{min:0,max:1},channelA:{enum:["Alpha","Luminance","Red","Green","Blue"]},channelB:{enum:["Alpha","Luminance","Red","Green","Blue"]},binarize:{},invertResult:{},outputFormat:{enum:["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]}},MeshWarp:{cols:{min:2,max:12},rows:{min:2,max:12},points:{}},NoiseGenerator:{noiseType:{enum:["Perlin","Simplex","Voronoi"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},scale:{min:.1,max:100},octaves:{min:1,max:8},persistence:{min:0,max:1},lacunarity:{min:1,max:4},speed:{min:0,max:10},colorStart:{},colorEnd:{},durationMs:{min:1,max:6e4},fps:{min:1,max:120}},OpArt:{pattern:{enum:["stripes","rings","checker","waves"]},frequency:{min:2,max:300},angle:{min:-360,max:360},warp:{min:0,max:3},source:{min:0,max:1},colorA:{},colorB:{}},Paint:{width:{min:1,max:16384},height:{min:1,max:16384},maintainAspect:{},aspectRatio:{},backgroundColor:{},strokes:{}},Painterly:{style:{enum:["oil","watercolor"]},radius:{min:2,max:12},edgeDarkening:{min:0,max:1},paper:{min:0,max:1},saturation:{min:0,max:2}},PatchHeal:{patches:{},centerX:{min:0,max:1},centerY:{min:0,max:1},offsetX:{min:-4096,max:4096},offsetY:{min:-4096,max:4096},radius:{min:1,max:500},sourceRadius:{min:1,max:500},feather:{min:0,max:100},opacity:{min:0,max:1},mode:{enum:["Clone","SeamlessHeal","TextureTransfer"]}},Pixelate:{size:{min:1,max:256},shape:{enum:["square","circle","diamond"]},gap:{min:0,max:.9}},Posterize:{levels:{min:2,max:64},palette:{enum:["none","gameboy","teletext","cga","pico8","c64","grayscale","sepia","custom"]},colors:{},dither:{min:0,max:1},pixelSize:{min:1,max:64}},ProceduralVFX:{effectType:{enum:["Smoke","Fire","Rain","Sparks","Snow","Dust","Lightning","Magic","LensFlare","Embers","EnergyBeam","Aurora"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},density:{min:0,max:1},scale:{min:.001,max:10},speed:{min:0,max:10},intensity:{min:0,max:1},seed:{min:0,max:1e6},colorStart:{},colorEnd:{},durationMs:{min:100,max:1e5},fps:{min:1,max:120}},RefineEdge:{decontaminateAmount:{min:0,max:1},radius:{min:.5,max:50},smooth:{min:0,max:100},feather:{min:0,max:50},shiftEdge:{min:-100,max:100},matteChannel:{enum:["Alpha","Luminance","Red","Green","Blue"]},outputMode:{enum:["Composite","MatteOnly","DecontaminatedRGB"]}},RefractionCaustics3D:{ior:{min:1,max:2.5},dispersion:{min:0,max:.2},refractionScale:{min:0,max:2},causticBrightness:{min:0,max:2},causticScale:{min:.1,max:5},fluidRipples:{min:0,max:1},rippleSpeed:{min:0,max:5},roughness:{min:0,max:1},specularIntensity:{min:0,max:2},lightPosX:{min:0,max:1},lightPosY:{min:0,max:1},tintColor:{},tintStrength:{min:0,max:1},depthInvert:{},depthScale:{min:.1,max:5}},ResizerScaler:{aspectRatioPreset:{enum:["9:16","16:9","1:1","4:5","21:9","custom"]},resolutionPreset:{enum:["4k","1080p","720p","480p","custom"]},targetWidth:{min:1,max:8192},targetHeight:{min:1,max:8192},fitMode:{enum:["cover","contain","stretch","manual"]},zoom:{min:1,max:1e3},offsetX:{min:-8192,max:8192},offsetY:{min:-8192,max:8192},backgroundMode:{enum:["solid","blurred","gradient","transparent"]},backgroundColor:{},backgroundColor2:{},blurRadius:{min:0,max:100},backgroundBrightness:{min:0,max:1},anchorX:{enum:["left","center","right"]},anchorY:{enum:["top","center","bottom"]}},RGBSplit:{amount:{min:0,max:200},angle:{min:-360,max:360},radial:{}},Rotate:{angle:{},fit:{enum:["cover","contain","fill"]},scale:{min:.01,max:20}},StereoPanning:{pan:{min:-1,max:1}},Toon:{levels:{min:2,max:12},edgeThreshold:{min:0,max:1},edgeWidth:{min:.5,max:4},edgeColor:{},saturation:{min:0,max:2}},Trails:{decay:{min:0,max:1},mode:{enum:["blend","over","add","max"]},zoom:{min:.5,max:2},rotation:{min:-45,max:45},offsetX:{min:-500,max:500},offsetY:{min:-500,max:500},hueShift:{min:-180,max:180},warmup:{min:0,max:240}},Vignette:{strength:{min:0,max:100},radius:{min:.1,max:2},softness:{min:0,max:1},roundness:{min:0,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1}}};var qe={cellSize:10,colorMode:"mono",fg:"#e8e8e8",bg:"#0b0b0b",contrast:1.2,invert:!1},b=class extends t{op="Ascii";constructor(e={}){super(o("Ascii",qe,e,n.Ascii))}},We={threshold:-24,ratio:4,attack:.003,release:.25,knee:6,makeupGain:0},f=class extends t{op="AudioCompressor";constructor(e={}){super(o("AudioCompressor",We,e,n.AudioCompressor))}},Ke={delayTime:.25,feedback:.4,wet:.3,dry:1,pingPong:!1},h=class extends t{op="AudioDelay";constructor(e={}){super(o("AudioDelay",Ke,e,n.AudioDelay))}},Ne={fadeInDuration:0,fadeOutDuration:0,fadeInCurve:"linear",fadeOutCurve:"linear"},P=class extends t{op="AudioFade";constructor(e={}){super(o("AudioFade",Ne,e,n.AudioFade))}},je={threshold:-40,attack:.005,hold:.05,release:.1,range:-80},y=class extends t{op="AudioNoiseGate";constructor(e={}){super(o("AudioNoiseGate",je,e,n.AudioNoiseGate))}},Ue={type:"peak",frequency:1e3,gain:0,q:1},g=class extends t{op="AudioParametricEq";constructor(e={}){super(o("AudioParametricEq",Ue,e,n.AudioParametricEq))}},$e={roomSize:.5,damping:.5,wet:.3,dry:1,width:1},x=class extends t{op="AudioReverb";constructor(e={}){super(o("AudioReverb",$e,e,n.AudioReverb))}},Ze={blurType:"Gaussian",strength:5,angle:0,sigmaColor:.1,centerX:.5,centerY:.5,partialBlur:!1,radius:.3,radiusY:0,shape:"circle"},le=class extends t{op="Blur";constructor(e={}){super(o("Blur",Ze,e,n.Blur))}},_e={motionPreset:"DollyZoom",panX:0,panY:0,dollyZ:0,fov:50,parallaxAmount:.6,dofAperture:.3,focusPlane:.4,edgeDilation:.5,depthInvert:!1},S=class extends t{op="CameraParallax3D";constructor(e={}){super(o("CameraParallax3D",_e,e,n.CameraParallax3D))}},Je={colorSpace:"RGBA",defaultChannel4:1},C=class extends t{op="ChannelMerger";constructor(e={}){super(o("ChannelMerger",Je,e,n.ChannelMerger))}},Qe={colorSpace:"RGBA"},E=class extends t{op="ChannelSplitter";constructor(e={}){super(o("ChannelSplitter",Qe,e,n.ChannelSplitter))}},er={shadows:{cyanRed:0,magentaGreen:0,yellowBlue:0},midtones:{cyanRed:0,magentaGreen:0,yellowBlue:0},highlights:{cyanRed:0,magentaGreen:0,yellowBlue:0},preserveLuminosity:!0},w=class extends t{op="ColorBalance";constructor(e={}){super(o("ColorBalance",er,e,n.ColorBalance))}},rr={keyColor:"#00ff00",similarity:.4,smoothness:.1,spillSuppression:.2,colorSpace:"YUV",spillSuppressionType:"Desaturate"},v=class extends t{op="ColorKey";constructor(e={}){super(o("ColorKey",rr,e,n.ColorKey))}},tr={levels:14,lineWidth:1.2,lineColor:"#2b1d0e",fill:"source",fillColor:"#f3ead8",smoothing:2},R=class extends t{op="Contour";constructor(e={}){super(o("Contour",tr,e,n.Contour))}},nr={},A=class extends t{op="CornerPin";constructor(e={}){super(o("CornerPin",nr,e,n.CornerPin))}},or={scanlines:.45,lineCount:540,curvature:.12,mask:.25,vignette:.35,noise:.08,flicker:.03,tracking:0,chroma:0},M=class extends t{op="CRT";constructor(e={}){super(o("CRT",or,e,n.CRT))}},ar={keyframes:[],strength:1,bleed:0,warmup:48},D=class extends t{op="Datamosh";constructor(e={}){super(o("Datamosh",ar,e,n.Datamosh))}},lr={strengthX:50,strengthY:50,xChannel:"Red",yChannel:"Green",wrapMode:"Clamp"},k=class extends t{op="DisplacementMap";constructor(e={}){super(o("DisplacementMap",lr,e,n.DisplacementMap))}},ir={mode:"bayer",levels:2,scale:2,monochrome:!0,dark:"#111111",light:"#f2efe6"},B=class extends t{op="Dither";constructor(e={}){super(o("Dither",ir,e,n.Dither))}},sr={strategy:"deterministic",samplePoints:150},I=class extends t{op="ExtractLUT";constructor(e={}){super(o("ExtractLUT",sr,e,n.ExtractLUT))}},cr={horizontal:!0,vertical:!1,diagonal:!1,mode:"horizontal",symmetry:"none"},T=class extends t{op="Flip";constructor(e={}){super(o("Flip",cr,e,n.Flip))}},pr={radius:12,threshold:.5,softness:.04},G=class extends t{op="Gooey";constructor(e={}){super(o("Gooey",pr,e,n.Gooey))}},ur={strength:.6,scale:2,shift:0,mode:"relief"},H=class extends t{op="Iridescence";constructor(e={}){super(o("Iridescence",ur,e,n.Iridescence))}},dr={segments:6,rotation:0,centerX:.5,centerY:.5,zoom:1},L=class extends t{op="Kaleidoscope";constructor(e={}){super(o("Kaleidoscope",dr,e,n.Kaleidoscope))}},mr={keyframes:[],motionBlurSize:1.5,movementStyle:"spline",aspectRatio:"input"},O=class extends t{op="KenBurns";constructor(e={}){super(o("KenBurns",mr,e,n.KenBurns))}},br={dropShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:10,spread:0,size:10,blendMode:"multiply"},innerShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:5,choke:0,size:5,blendMode:"multiply"},outerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},innerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},stroke:{enabled:!1,size:2,position:"outside",color:"#ffffff",opacity:1,blendMode:"normal"},bevelEmboss:{enabled:!1,style:"InnerBevel",technique:"Smooth",depth:100,direction:"Up",size:5,soften:0,angle:120,altitude:30,highlightColor:"#ffffff",highlightOpacity:.75,shadowColor:"#000000",shadowOpacity:.75},colorOverlay:{enabled:!1,color:"#ff0000",opacity:1,blendMode:"normal"}},z=class extends t{op="LayerStyle";constructor(e={}){super(o("LayerStyle",br,e,n.LayerStyle))}},fr={operations:[]},F=class extends t{op="Liquify";constructor(e={}){super(o("Liquify",fr,e,n.Liquify))}},hr={operation:"Union",radius:0,threshold:.5,clampMin:0,clampMax:1,channelA:"Alpha",channelB:"Alpha",binarize:!1,invertResult:!1,outputFormat:"WhiteWithAlpha"},Y=class extends t{op="MaskMath";constructor(e={}){super(o("MaskMath",hr,e,n.MaskMath))}},Pr={cols:3,rows:3},V=class extends t{op="MeshWarp";constructor(e={}){super(o("MeshWarp",Pr,e,n.MeshWarp))}},yr={noiseType:"Perlin",outputType:"Image",width:512,height:512,scale:10,octaves:4,persistence:.5,lacunarity:2,speed:1,colorStart:"#000000",colorEnd:"#ffffff",durationMs:5e3,fps:30},X=class extends t{op="NoiseGenerator";constructor(e={}){super(o("NoiseGenerator",yr,e,n.NoiseGenerator))}},gr={pattern:"stripes",frequency:48,angle:0,warp:.6,source:1,colorA:"#0a0a0a",colorB:"#f5f5f5"},q=class extends t{op="OpArt";constructor(e={}){super(o("OpArt",gr,e,n.OpArt))}},xr={width:1080,height:1080,maintainAspect:!0,backgroundColor:"#ffffff"},W=class extends t{op="Paint";constructor(e={}){super(o("Paint",xr,e,n.Paint))}},Sr={style:"oil",radius:5,edgeDarkening:.5,paper:.3,saturation:1.05},K=class extends t{op="Painterly";constructor(e={}){super(o("Painterly",Sr,e,n.Painterly))}},Cr={centerX:.5,centerY:.5,offsetX:50,offsetY:0,radius:25,sourceRadius:25,feather:50,opacity:1,mode:"SeamlessHeal"},N=class extends t{op="PatchHeal";constructor(e={}){super(o("PatchHeal",Cr,e,n.PatchHeal))}},Er={size:12,shape:"square",gap:0},j=class extends t{op="Pixelate";constructor(e={}){super(o("Pixelate",Er,e,n.Pixelate))}},wr={levels:6,palette:"none",colors:[],dither:0,pixelSize:1},U=class extends t{op="Posterize";constructor(e={}){super(o("Posterize",wr,e,n.Posterize))}},vr={effectType:"Smoke",outputType:"Video",width:1080,height:1080,density:.6,scale:.01,speed:1,intensity:.8,seed:1234,colorStart:"#ffffff",colorEnd:"#ff5500",durationMs:5e3,fps:30},$=class extends t{op="ProceduralVFX";constructor(e={}){super(o("ProceduralVFX",vr,e,n.ProceduralVFX))}},Rr={decontaminateAmount:.7,radius:2,smooth:5,feather:.5,shiftEdge:0,matteChannel:"Alpha",outputMode:"Composite"},Z=class extends t{op="RefineEdge";constructor(e={}){super(o("RefineEdge",Rr,e,n.RefineEdge))}},Ar={ior:1.52,dispersion:.04,refractionScale:.5,causticBrightness:.6,causticScale:1,fluidRipples:0,rippleSpeed:1,roughness:0,specularIntensity:.8,lightPosX:.5,lightPosY:.2,tintColor:"#ffffff",tintStrength:0,depthInvert:!1,depthScale:1},_=class extends t{op="RefractionCaustics3D";constructor(e={}){super(o("RefractionCaustics3D",Ar,e,n.RefractionCaustics3D))}},Mr={aspectRatioPreset:"16:9",resolutionPreset:"1080p",targetWidth:1920,targetHeight:1080,fitMode:"contain",zoom:100,offsetX:0,offsetY:0,backgroundMode:"solid",backgroundColor:"#000000FF",backgroundColor2:"#000000FF",blurRadius:40,backgroundBrightness:.6,anchorX:"center",anchorY:"center"},J=class extends t{op="ResizerScaler";constructor(e={}){super(o("ResizerScaler",Mr,e,n.ResizerScaler))}},Dr={amount:8,angle:0,radial:!1},Q=class extends t{op="RGBSplit";constructor(e={}){super(o("RGBSplit",Dr,e,n.RGBSplit))}},kr={angle:90,fit:"cover",scale:1},ee=class extends t{op="Rotate";constructor(e={}){super(o("Rotate",kr,e,n.Rotate))}},Br={pan:0},re=class extends t{op="StereoPanning";constructor(e={}){super(o("StereoPanning",Br,e,n.StereoPanning))}},Ir={levels:4,edgeThreshold:.2,edgeWidth:1,edgeColor:"#111111",saturation:1.15},te=class extends t{op="Toon";constructor(e={}){super(o("Toon",Ir,e,n.Toon))}},Tr={decay:.9,mode:"blend",zoom:1,rotation:0,offsetX:0,offsetY:0,hueShift:0,warmup:60},ne=class extends t{op="Trails";constructor(e={}){super(o("Trails",Tr,e,n.Trails))}},Gr={strength:50,radius:1,softness:.5,roundness:.5,centerX:.5,centerY:.5},oe=class extends t{op="Vignette";constructor(e={}){super(o("Vignette",Gr,e,n.Vignette))}};function Hr(r){return{partialBlur:!0,centerX:r.center.x,centerY:r.center.y,radius:r.bounds.width.multiply(.55),radiusY:r.bounds.height.multiply(.55),shape:"ellipse",strength:r.active.multiply(25)}}var ae=class extends le{constructor(e={}){let{track:a,...l}=e;super(a?{...Hr(a),...Lr(l)}:l)}};function Lr(r){return Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}p();var Or={ascii:r=>new b(r),audioCompressor:r=>new f(r),audioDelay:r=>new h(r),audioFade:r=>new P(r),audioNoiseGate:r=>new y(r),audioParametricEq:r=>new g(r),audioReverb:r=>new x(r),blur:r=>new ae(r),cameraParallax3D:r=>new S(r),channelMerger:r=>new C(r),channelSplitter:r=>new E(r),colorBalance:r=>new w(r),colorKey:r=>new v(r),contour:r=>new R(r),cornerPin:r=>new A(r),cRT:r=>new M(r),datamosh:r=>new D(r),displacementMap:r=>new k(r),dither:r=>new B(r),extractLUT:r=>new I(r),flip:r=>new T(r),gooey:r=>new G(r),iridescence:r=>new H(r),kaleidoscope:r=>new L(r),kenBurns:r=>new O(r),layerStyle:r=>new z(r),liquify:r=>new F(r),maskMath:r=>new Y(r),meshWarp:r=>new V(r),noiseGenerator:r=>new X(r),opArt:r=>new q(r),paint:r=>new W(r),painterly:r=>new K(r),patchHeal:r=>new N(r),pixelate:r=>new j(r),posterize:r=>new U(r),proceduralVFX:r=>new $(r),refineEdge:r=>new Z(r),refractionCaustics3D:r=>new _(r),resizerScaler:r=>new J(r),rGBSplit:r=>new Q(r),rotate:r=>new ee(r),stereoPanning:r=>new re(r),toon:r=>new te(r),trails:r=>new ne(r),vignette:r=>new oe(r)};var fe=class extends t{op="Levels";constructor(e={}){let a={inBlack:0,inWhite:1,outBlack:0,outWhite:1};super({master:e.master??{...a},red:e.red??{...a},green:e.green??{...a},blue:e.blue??{...a},...e})}},he=class extends t{op="FilmGrain";constructor(e={}){super({strength:e.strength??15,size:e.size??1.5,monochrome:e.monochrome??!0,animated:e.animated??!0,speed:e.speed??50,shadows:e.shadows??.2,midtones:e.midtones??1,highlights:e.highlights??.2,...e})}},Pe=class extends t{op;constructor(e,a={}){super(a),this.op=e}},ye=class extends t{op="AudioSignalExtractor";constructor(e={}){super({extractionMode:e.extractionMode??"rms_envelope",attackMs:e.attackMs??10,releaseMs:e.releaseMs??120,sensitivity:e.sensitivity??1,noiseFloorDb:e.noiseFloorDb??-48,dynamicRangeDb:e.dynamicRangeDb??48,autoRange:e.autoRange??!0,smoothing:e.smoothing??.15,curve:e.curve??"linear",beatThreshold:e.beatThreshold??.08,beatDecayMs:e.beatDecayMs??80,previewMode:e.previewMode??"envelope",nodeId:e.nodeId??"audio_extractor",...e})}async extract(e,a={}){return pe.extract(e,{extractionMode:this.extractionMode,attackMs:this.attackMs,releaseMs:this.releaseMs,sensitivity:this.sensitivity,noiseFloorDb:this.noiseFloorDb,dynamicRangeDb:this.dynamicRangeDb,smoothing:this.smoothing,curve:this.curve,beatThreshold:this.beatThreshold,beatDecayMs:this.beatDecayMs,previewMode:this.previewMode,...a})}},ge=class extends t{op="Curves";constructor(e={}){super({...e,curveType:e.curveType??"rgb",master:e.master??[{x:0,y:0},{x:1,y:1}],red:e.red??[{x:0,y:0},{x:1,y:1}],green:e.green??[{x:0,y:0},{x:1,y:1}],blue:e.blue??[{x:0,y:0},{x:1,y:1}],hueVsHue:e.hueVsHue??[{x:0,y:.5},{x:1,y:.5}],hueVsSat:e.hueVsSat??[{x:0,y:1},{x:1,y:1}],lumVsSat:e.lumVsSat??[{x:0,y:1},{x:1,y:1}],satVsSat:e.satVsSat??[{x:0,y:1},{x:1,y:1}]})}},xe=class extends t{op="SelectiveColor";constructor(e={}){let a={cyan:0,magenta:0,yellow:0,black:0};super({...e,method:e.method??"Relative",reds:{...a,...e.reds},yellows:{...a,...e.yellows},greens:{...a,...e.greens},cyans:{...a,...e.cyans},blues:{...a,...e.blues},magentas:{...a,...e.magentas},whites:{...a,...e.whites},neutrals:{...a,...e.neutrals},blacks:{...a,...e.blacks}})}},Se=class extends t{op="GradientMap";constructor(e={}){let a=[{position:0,color:"#000000"},{position:1,color:"#ffffff"}];super({...e,stops:e.stops??a,smooth:e.smooth??!0,dither:e.dither??!0,opacity:e.opacity??1})}},Ce=class extends t{op="ShadowsHighlights";constructor(e={}){super({...e,shadowAmount:e.shadowAmount??0,shadowTonalWidth:e.shadowTonalWidth??50,shadowRadius:e.shadowRadius??30,highlightAmount:e.highlightAmount??0,highlightTonalWidth:e.highlightTonalWidth??50,highlightRadius:e.highlightRadius??30,colorCorrection:e.colorCorrection??0,midtoneContrast:e.midtoneContrast??0})}},Ee=class extends t{op="ApplyLUT";constructor(e={}){super({...e,lutUrl:e.lutUrl??"",intensity:e.intensity??1})}},we=class extends t{op="UnsharpMask";constructor(e={}){super({...e,amount:e.amount??100,radius:e.radius??1.5,threshold:e.threshold??3})}},ve=class extends t{op="HighPass";constructor(e={}){super({...e,radius:e.radius??3,contrastBoost:e.contrastBoost??1,monochrome:e.monochrome??!0})}},Re=class extends t{op="HalftoneScreen";constructor(e={}){super({...e,mode:e.mode??"Monochrome",dotShape:e.dotShape??"Circle",frequency:e.frequency??30,angle:e.angle??45,contrast:e.contrast??1,dotColor:e.dotColor??"#000000",paperColor:e.paperColor??"#ffffff",smooth:e.smooth??!0,invert:e.invert??!1,cyanAngle:e.cyanAngle??15,magentaAngle:e.magentaAngle??75,yellowAngle:e.yellowAngle??0,blackAngle:e.blackAngle??45,opacity:e.opacity??1})}},Ae=class extends t{op="TileOffset";constructor(e={}){super({...e,offsetX:e.offsetX??0,offsetY:e.offsetY??0,wrap:e.wrap??!0,edgeMode:e.edgeMode??"wrap"})}},Me=class extends t{op="MotionBlur";constructor(e={}){super({...e,shutterAngle:e.shutterAngle??180,samples:e.samples??16,maxVelocity:e.maxVelocity??64,shutterCurve:e.shutterCurve??"gaussian",depthAware:e.depthAware??!0})}},De=class extends t{op="SSAO";constructor(e={}){super({...e,radius:e.radius??45,bias:e.bias??.025,intensity:e.intensity??1.5,kernelSamples:e.kernelSamples??16,blurRadius:e.blurRadius??4})}},ke=class extends t{op="PBRGlass";constructor(e={}){super({...e,ior:e.ior??1.49,roughness:e.roughness??.15,transmission:e.transmission??.92,dispersion:e.dispersion??.015,fresnelPower:e.fresnelPower??5,tintColor:e.tintColor??"#ffffff"})}},Be=class extends t{op="DepthOfField";constructor(e={}){super({...e,focusDistance:e.focusDistance??500,focalLength:e.focalLength??50,aperture:e.aperture??2.8,maxBlur:e.maxBlur??16,quality:e.quality??"high"})}},Ie=class extends t{op="Crop";constructor(e={}){super({cropType:e.cropType??"rect",leftPercentage:e.leftPercentage??0,topPercentage:e.topPercentage??0,widthPercentage:e.widthPercentage??100,heightPercentage:e.heightPercentage??100,roundness:e.roundness??0,...e})}},Te=class extends t{op="Vision";constructor(e={}){super({enableDetection:e.enableDetection!==!1,enableSegmentation:e.enableSegmentation===!0,enablePose:e.enablePose===!0,enableMatte:e.enableMatte===!0,confidence:e.confidence??.3,variant:e.variant??"s",mode:e.mode??"passthrough",matteSource:e.matteSource??"instance",...e})}},Ge=class extends t{op="Relight3D";constructor(e={}){super({lightType:e.lightType??"Point",intensity:e.intensity??1,lightPosX:e.lightPosX??.5,lightPosY:e.lightPosY??.5,lightPosZ:e.lightPosZ??.3,lightRadius:e.lightRadius??.8,spotConeAngle:e.spotConeAngle??45,specularRoughness:e.specularRoughness??.35,specularStrength:e.specularStrength??.7,metallic:e.metallic??0,ambientIntensity:e.ambientIntensity??.4,volumetricDensity:e.volumetricDensity??.2,depthScale:e.depthScale??1,depthInvert:e.depthInvert??!1,lightColor:e.lightColor??"#ffffff",ambientColor:e.ambientColor??"#ffffff",normalMap:e.normalMap,...e})}},He=class extends t{op="TemporalDeflicker";constructor(e={}){super({blendWeight:e.blendWeight??.35,disocclusionThreshold:e.disocclusionThreshold??.15,maxMotionPixels:e.maxMotionPixels??64,scale:e.scale??.5,windowSize:e.windowSize??2,...e})}},Le=class extends t{op="Modulate";constructor(e={}){super({hue:e.hue??0,brightness:e.brightness??1,contrast:e.contrast??1,exposure:e.exposure??0,saturation:e.saturation??1,sepia:e.sepia??0,...e})}};export{n as a,b,f as c,h as d,P as e,y as f,g,x as h,S as i,C as j,E as k,w as l,v as m,R as n,A as o,M as p,D as q,k as r,B as s,I as t,T as u,G as v,H as w,L as x,O as y,z,F as A,Y as B,V as C,X as D,q as E,W as F,K as G,N as H,j as I,U as J,$ as K,Z as L,_ as M,J as N,Q as O,ee as P,re as Q,te as R,ne as S,oe as T,ae as U,Or as V,fe as W,he as X,Pe as Y,ye as Z,ge as _,xe as $,Se as aa,Ce as ba,Ee as ca,we as da,ve as ea,Re as fa,Ae as ga,Me as ha,De as ia,ke as ja,Be as ka,Ie as la,Te as ma,Ge as na,He as oa,Le as pa};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as x}from"./chunk-2JKXYG6J.mjs";import{h as b,j as g}from"./chunk-ENKKLU7B.mjs";import{u as w,z as T}from"./chunk-63SFBHEH.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();function d(n,r,i,m,f,h,o){let e=`${r}HandleId`,l=n[e],c=l?n.inputs?.[l]:null,s;if(c?.connectionValid&&c.outputItem){let t=c.outputItem.data;s=t&&typeof t=="object"&&"offset"in t?t.offset:c.outputItem.data}else s=n[r];let p=w(s,i,h,o);return Math.max(m,Math.min(f,p))}var P=new Map;function z(n,r){let i=P.get(r);return i||(i=new x(n),P.set(r,i)),i}var D=async n=>{let{ctx:r,encoder:i,pass:m,targetWidth:f,targetHeight:h,props:o}=n,e=o.virtualMedia?.operation;if(!e||e.op!=="TemporalDeflicker"&&e.op!=="Deflicker")return;let l=o.virtualMedia?.children?.[0];if(!l)return;m.end();let c=f,s=h,p=o.frame??0,t=o.compositionFrame??p,a=o.fps||30,{texture:M}=await b(n,l,{props:{...o,virtualMedia:l,containerWidth:c,containerHeight:s}});n.pass.end();let W=d(e,"blendWeight",.35,0,1,t,a),y=d(e,"disocclusionThreshold",.15,.01,1,t,a),I=d(e,"maxMotionPixels",64,1,256,t,a),v=d(e,"scale",.5,.1,1,t,a),R=Math.round(d(e,"windowSize",2,1,5,t,a)),G=o.virtualMedia?.metadata?.id||e.id||`deflicker_${o.renderId??"global"}`,k=z(r.device,G);p===0&&k.reset();let H=k.execute(M,{blendWeight:W,disocclusionThreshold:y,maxMotionPixels:I,scale:v,windowSize:R},i),U=typeof e.opacity=="number"?e.opacity:1;g(n,H,U)};var j=T({WebGPURenderer:D});export{j as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as mt}from"./chunk-37EFVZWT.mjs";import{c as ht}from"./chunk-2SJ4BBMT.mjs";import{i as ut,l as N}from"./chunk-24P6DAB3.mjs";import{c as ft,e as et}from"./chunk-NIRW77QA.mjs";import{C as dt}from"./chunk-63SFBHEH.mjs";import{d as L,e as j}from"./chunk-BVF64D6H.mjs";j();j();j();function pt(e,n){return Math.round(e*n)}function X(e,n,i={timeOffsetSec:0}){if(!e)return e;let{operation:u,metadata:d={},children:c=[]}=e,{timeOffsetSec:p,durationLimitMs:s}=i;if(!u)return{...e,children:(c||[]).map(t=>X(t,n,i))};let m=u.timeline,y=m?.segments||[],f=N(e)?.durationMs??0;if(y.length>0){let t=y.reduce((a,A)=>{let z=A.endSec!=null?A.endSec-A.startSec:0,v=Math.max(1,Math.round(z*n));return a+v},0);t>0&&(f=t/n*1e3)}let h={...u},o=m?.startFrame??h.startFrame;if(typeof o=="number"){let t=pt(p,n);h.startFrame=o-t}let M={...d,durationMs:f},r=typeof o=="number"||h.op==="compose"?{timeOffsetSec:0,durationLimitMs:void 0}:{timeOffsetSec:p,durationLimitMs:s},F=(c||[]).map(t=>X(t,n,r));return{metadata:M,operation:h,children:F}}var gt=typeof L<"u"&&/^(debug|trace)$/i.test(L.env?.LOG_LEVEL??""),b={debug:(e,...n)=>{gt&&(typeof e=="object"&&e!==null?console.info("[AudioExtractor]",e,...n):console.info(`[AudioExtractor] ${e}`,...n))},warn:(e,...n)=>{typeof e=="object"&&e!==null?console.warn("[AudioExtractor]",e,...n):console.warn(`[AudioExtractor] ${e}`,...n)},error:(e,...n)=>{typeof e=="object"&&e!==null?console.error("[AudioExtractor]",e,...n):console.error(`[AudioExtractor] ${e}`,...n)}},wt=()=>{if(typeof window>"u")return Promise.resolve();let e=globalThis.scheduler;return typeof e?.yield=="function"?e.yield():new Promise(n=>setTimeout(n,0))},Mt=async(e=3e4)=>{await new Promise(i=>setTimeout(i,100));let n=Date.now();return new Promise(i=>{let u=()=>{let d=typeof window<"u"&&window.renderer_delayRenderHandles?window.renderer_delayRenderHandles:[],c=typeof globalThis<"u"?globalThis.__GATEWAI_DELAYS__:null,p=d.length>0,s=c instanceof Set&&c.size>0;if(!p&&!s){i();return}if(Date.now()-n>e){b.warn(`[AudioExtractor] waitForDelayRender timed out waiting for handles: ${JSON.stringify({browserHandles:d,globalDelays:c?Array.from(c):[]})}`),i();return}setTimeout(u,50)};u()})};async function xt(e){b.debug(`[AudioExtractor] decodeAudioSource started for url: ${e}`);try{if(typeof window<"u"&&typeof window.document<"u"&&!(typeof L<"u"&&L.versions&&L.versions.node)){b.debug(`[AudioExtractor] Browser detected. Fetching arrayBuffer for ${e}...`);let u=window.AudioContext||window.webkitAudioContext;if(!u)throw new Error("AudioContext is not supported in this browser");let d=new u;try{let c=await fetch(e);if(b.debug(`[AudioExtractor] Fetch response status for ${e}: ${c.status} (${c.statusText})`),!c.ok)throw new Error(`Failed to fetch audio source: ${c.statusText}`);let p=await c.arrayBuffer();b.debug(`[AudioExtractor] Fetched ${p.byteLength} bytes. Decoding audio data...`);let s=await d.decodeAudioData(p);b.debug(`[AudioExtractor] Decoded successfully: ${s.numberOfChannels} channels, sampleRate: ${s.sampleRate}, duration: ${s.duration}s`);let m=[];for(let y=0;y<s.numberOfChannels;y++)m.push(new Float32Array(s.getChannelData(y)));return{channels:m,sampleRate:s.sampleRate}}finally{d.close(),b.debug(`[AudioExtractor] AudioContext closed for ${e}`)}}let i=!1;try{b.debug(`[AudioExtractor] Server / Node.js detected. Acquiring from inputStore for ${e}...`);let u=await et.acquire(e);i=!0,b.debug("[AudioExtractor] inputStore acquired. Retrieving primary audio track...");let d=await u.getPrimaryAudioTrack();if(!d)return b.warn(`[AudioExtractor] No primary audio track found in input for ${e}`),null;let p=new ft(d).samples(0),s=[],m=0,y=48e3,f=1;b.debug(`[AudioExtractor] Starting mediabunny generator loop for ${e}...`);for await(let o of p){y=o.sampleRate,f=o.numberOfChannels;let M=o.numberOfFrames;if(s.length===0)for(let l=0;l<f;l++)s.push([]);for(let l=0;l<f;l++){let r;try{let F=o.allocationSize({planeIndex:l,format:"f32-planar"});r=new Float32Array(F/4),o.copyTo(r,{planeIndex:l,format:"f32-planar"})}catch{let F=o.allocationSize({planeIndex:l});if(o.format==="s16"||o.format==="s16-planar"){let t=new Int16Array(F/2);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/32768}else if(o.format==="s32"||o.format==="s32-planar"){let t=new Int32Array(F/4);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/2147483648}else if(o.format==="u8"||o.format==="u8-planar"){let t=new Uint8Array(F);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=((t[a]??128)-128)/128}else r=new Float32Array(F/4),o.copyTo(r,{planeIndex:l})}s[l].push(r)}m+=M,o.close()}return b.debug(`[AudioExtractor] Generator loop finished. Decoded total frames: ${m}`),m===0||s.length===0?null:{channels:s.map(o=>{let M=new Float32Array(m),l=0;for(let r of o)M.set(r,l),l+=r.length;return M}),sampleRate:y}}catch(u){if(u instanceof Error&&u.message.includes("Cannot open local media file"))throw u;if(typeof L<"u"&&L.versions?.node)try{let{execSync:d}=await import("./child_process-AIL2NBWS.mjs"),c=d(`ffmpeg -v error -i "${e}" -f f32le -ar 48000 -ac 2 pipe:1`,{maxBuffer:100*1024*1024}),p=c.byteLength/4,s=p/2,m=new Float32Array(c.buffer,c.byteOffset,p),y=new Float32Array(s),f=new Float32Array(s);for(let h=0;h<s;h++)y[h]=m[h*2],f[h]=m[h*2+1];return{channels:[y,f],sampleRate:48e3}}catch(d){b.warn({ffmpegErr:d},`[AudioExtractor] ffmpeg fallback decode failed for ${e}`)}return b.error({err:u},`[AudioExtractor] Failed to decode source ${e}`),null}finally{i&&et.release(e)}}catch(n){if(n instanceof Error&&n.message.includes("Cannot open local media file"))throw n;return b.error({err:n},`[AudioExtractor] Failed to decode source ${e}`),null}}async function yt(e,n,i,u,d,c){let p=new Float32Array(d),m=n/i*u,y=1e5;for(let f=0;f<d;f++){f>0&&f%y===0&&await wt();let h=c+f*m,o=Math.floor(h),M=Math.ceil(h);if(o<0){p[f]=0;continue}if(o>=e.length)break;let l=h-o,r=e[o]??0,F=M>=0&&M<e.length?e[M]??r:r,t=r+l*(F-r);p[f]=Number.isFinite(t)?t:0}return p}async function It(e,n,i=48e3,u,d){b.debug(`[AudioExtractor] mixAudioTracks started. FPS: ${n}, targetSampleRate: ${i}`),await Mt(),mt.registerSignalsFromComposition(d,e);let c=N(e)?.durationMs||1e3,p=c/1e3,s=Math.ceil(p*i);b.debug(`[AudioExtractor] Composition total duration: ${c}ms (${p}s). Total mixed samples to allocate: ${s}`);let m=new Float32Array(s),y=new Float32Array(s),f=[m,y],h=new Map;async function o(t,a,A,z,v,B){if(!t)return null;let x=t.operation;if(!x){let k=N(t)?.durationMs??0,D=Math.round(k/1e3*n),U=B!==null?D>0?Math.min(B,D):B:D,O=Math.ceil(U/n*i);if(O<=0)return null;let q=new Float32Array(O),G=new Float32Array(O),H=[q,G];for(let C of t.children){let Y=await o(C,a,A,z,v,U);if(Y){let E=C.operation,S=E?.startFrame??E?.timeline?.startFrame??0,T=Math.round(S/n*i);for(let P=0;P<2;P++){let w=H[P],R=Y[P],g=Math.min(R.length,w.length-T);for(let $=0;$<g;$++)T+$>=0&&(w[T+$]+=R[$])}}}return H}let W=z*(x.volume??1)*(x.opacity===0?0:1)*(x.muted?0:1),nt=v,bt=x.startFrame??x.timeline?.startFrame??0,ot=A+bt,rt=x.timeline?.segments||[],V=x,at=V.op==="CompositorLayer"?(V.mediaStartFrame??V.trimStartFrames??null)!==null?(V.mediaStartFrame??V.trimStartFrames??0)/n:Math.round((V.trimStartSec??0)*n)/n:0,At=N(t)?.durationMs??0,K=Math.round(At/1e3*n),St=B!==null?K>0?Math.min(B,K):B:K,I=Math.ceil(St/n*i);if(I<=0)return null;let st=new Float32Array(I),it=new Float32Array(I),Z=[st,it],ct=async(k,D)=>{let U=k?k.startSec:0,O=a+at+U,q=ot+D,G=0;k?G=Math.max(1,Math.round(((k.endSec??0)-k.startSec)*n)):G=K;let H=B!==null?Math.min(B,G):G,C=Math.round(D/n*i);if(x.op==="source"){let E=ut(t),S=ht(t);if(S.sourceUrl&&(E==="Audio"||E==="Video")&&W>0){let T=Math.max(.5,nt*(Number(S.speed)||1)),P=Math.max(0,(Number(S.trimStartSec)||0)+O),w=h.get(S.sourceUrl);if(w===void 0&&(w=await xt(S.sourceUrl),h.set(S.sourceUrl,w)),w){let R=H/n,g=Math.min(I-C,Math.ceil(R*i));if(g>0&&C<I){let $=Math.round(P*w.sampleRate),Q=w.channels[0],tt=w.channels.length>1?w.channels[1]:w.channels[0],_=await yt(Q,w.sampleRate,i,T,g,$),Ft=await yt(tt,w.sampleRate,i,T,g,$);for(let J=0;J<g;J++){let lt=C+J;st[lt]+=_[J]*W,it[lt]+=Ft[J]*W}}}await wt()}}if(t.children)for(let E of t.children){let S=await o(E,O,q,W,nt,H);if(S){let T=E.operation,P=T?.startFrame??T?.timeline?.startFrame??0,w=Math.round(P/n*i),R=C+w;for(let g=0;g<2;g++){let $=Z[g],Q=S[g],tt=Math.min(Q.length,$.length-R);for(let _=0;_<tt;_++)R+_>=0&&($[R+_]+=Q[_])}}}let Y=dt.get(x.op);if(Y)try{let E=H/n,S=Math.min(I-C,Math.ceil(E*i));if(S>0&&C<I&&C>=0){let T=Z.map(g=>g.subarray(C,C+S)),P=x.op==="CompositorLayer"?ot:0,w=((q-P)/n+O-at)*1e3,R=N(t)?.durationMs??void 0;await Y(T,i,t,{device:u,frame:q,fps:n,renderId:d,elapsedMs:w,durationMs:R})}}catch(E){b.error({err:E},`[AudioExtractor] Custom plugin for operation '${x.op}' failed`)}};if(rt.length>0){let k=0;for(let D of rt){let U=(D.endSec??0)-D.startSec,O=Math.max(1,Math.round(U*n));await ct(D,k),k+=O}}else await ct(null,0);return Z}let M=X(e,n),l=await o(M,0,0,1,1,null);if(l)for(let t=0;t<2;t++){let a=f[t],A=l[t],z=Math.min(A.length,a.length);for(let v=0;v<z;v++)a[v]=A[v]}h.clear();let r=0;for(let t=0;t<s;t++){let a=Math.abs(m[t]??0),A=Math.abs(y[t]??0);a>r&&(r=a),A>r&&(r=A)}let F=r>.95?.92/r:1;for(let t=0;t<s;t++){let a=(m[t]??0)*F,A=(y[t]??0)*F;m[t]=Number.isFinite(a)?Math.tanh(a):0,y[t]=Number.isFinite(A)?Math.tanh(A):0}return{channels:f,sampleRate:i}}export{xt as a,It as b};
|
|
@@ -471,4 +471,4 @@ fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
|
|
|
471
471
|
|
|
472
472
|
return vec4<f32>(fill.rgb * alpha, alpha);
|
|
473
473
|
}
|
|
474
|
-
`;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:Ot});this.uniformLayout=C(t),this.pipeline=T(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a=0,o){let c=Y(i),l=c?{r:0,g:0,b:0,a:1}:D(i),h=o?.opacity??1;e.packIntoBuffer(this.uniformData,h,n,s,o?.transform),this.uniformData[15]=a,this.uniformData[16]=l.r,this.uniformData[17]=l.g,this.uniformData[18]=l.b,this.uniformData[19]=l.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,X(c,r,this.uniformData,24);let p=this.uniformPool.getBuffer(this.device,this.uniformData);this.vertexData[0]=r.x,this.vertexData[1]=r.y,this.vertexData[2]=r.x+r.width,this.vertexData[3]=r.y,this.vertexData[4]=r.x,this.vertexData[5]=r.y+r.height,this.vertexData[6]=r.x+r.width,this.vertexData[7]=r.y+r.height;let d=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let f=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p);t.setBindGroup(0,f),t.setVertexBuffer(0,d),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();var J=class{stack=[new DOMMatrix];push(t){let r=this.stack[this.stack.length-1].multiply(t);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(t,e,r,i,n,s){let a=this.getCurrent();n&&(a=a.multiply(n)),t[0]=a.a,t[1]=a.b,t[2]=0,t[3]=0,t[4]=a.c,t[5]=a.d,t[6]=0,t[7]=0,t[8]=a.e,t[9]=a.f,t[10]=1,t[11]=0,t[12]=e,t[13]=r,t[14]=i,t[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Yt(u){if(Array.isArray(u)){let r=u[3]??1;return[u[0]*r,u[1]*r,u[2]*r,r]}if("r"in u){let r=u.a??1;return{r:u.r*r,g:u.g*r,b:u.b*r,a:r}}let t=Array.from(u),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var $t=new WeakMap;function vr(u,t){let e=$t.get(u);return(!e||e.format!==t||e.isDestroyed)&&(e=new pt(u,t),$t.set(u,e)),e.resetPools(),e}var pt=class{device;transformStack=new J;clipStack=new W;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new V;samplerCache=new Mt;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new q(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new H(t,e),this.effectPipeline=new I(t,e),this.slugPipeline=new Gt(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,n,s="clear"){this.surfaceWidth=i,this.surfaceHeight=n,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let a=t.beginRenderPass({colorAttachments:[{view:e,clearValue:Yt(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(a,i,n),a}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),ot.flushRetired(this.device),ot.prune(this.device)}drawTexture(t,e,r,i){let n=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,n,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,n){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,s,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawRect(t,e,r,i=0,n){let s=0,a=n;typeof i=="object"&&i!==null?(a=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,s,a)}drawPath(t,e,r,i,n){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShapeFill(t,e,r,i,n){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShape(t,e,r,i,n){let s={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let a=Ft(e);if(a.length>0&&(this.drawShapeFill(t,a,r,s,n),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let o=ct(e);o&&this.drawPath(t,o,r.color,1,{...n,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let a=ct(e);a&&this.drawPath(t,a,i.color,i.width,{...n,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,n){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,n)}applyMotionBlur(t,e,r,i,n=180,s=16,a){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,n,s,this.format,a)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(h=>h.x),n=r.map(h=>h.y),s=Math.min(...i),a=Math.min(...n),o=Math.max(...i)-s,c=Math.max(...n)-a,l=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(l){let h=Math.max(s,l.x),p=Math.max(a,l.y),d=Math.min(s+o,l.x+l.width),f=Math.min(a+c,l.y+l.height);s=h,a=p,o=Math.max(0,d-h),c=Math.max(0,f-p)}this.clipStack.pushScissor({x:s,y:a,width:o,height:c},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};x();async function At(u,t){if(typeof window<"u"&&typeof FontFace<"u")try{let r=await new FontFace(u,`url(${t})`).load();document.fonts.add(r),await document.fonts.ready}catch(e){console.warn(`[preloadFont] Failed to load font "${u}" from ${t}:`,e)}else await Pt(u,t)}x();var Xt=/\p{Extended_Pictographic}/gu,Et=!1;async function Tr(u,t,e=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(a){let o=a.operation;if(o){let c=o.op==="text"||o.kind==="text"||o.op==="caption"||o.kind==="caption"||typeof o.text=="string",l=o.fontFamily||(c?"Inter":"");if(l&&r.add(l),o.op==="text"&&typeof o.text=="string"){let h=o.fontSize??48;for(let p of o.text.match(Xt)??[])i.set(`${p}-${h}`,h)}}for(let c of a.children??[])s(c)})(u);let n=[];for(let s of r){let a=vt(s)??wt(s);n.push(At(s,a).catch(o=>e(o,`font "${s}" from ${a}`))),t&&n.push(O.preloadSlugFont(t,s,a).catch(o=>e(o,`Slug font "${s}" from ${a}`)))}if(t&&i.size>0){!O.hasEmojiFont()&&!Et&&(Et=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path)."));for(let[s,a]of i){let o=s.slice(0,s.lastIndexOf("-"));n.push(O.preloadEmoji(t,o,a).catch(c=>{O.hasEmojiFont()&&e(c,`emoji "${o}"`)}))}}await Promise.all(n)}export{te as a,I as b,
|
|
474
|
+
`;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new M;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new G(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new G(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:Ot});this.uniformLayout=C(t),this.pipeline=T(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,n,s,a=0,o){let c=Y(i),l=c?{r:0,g:0,b:0,a:1}:D(i),h=o?.opacity??1;e.packIntoBuffer(this.uniformData,h,n,s,o?.transform),this.uniformData[15]=a,this.uniformData[16]=l.r,this.uniformData[17]=l.g,this.uniformData[18]=l.b,this.uniformData[19]=l.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,X(c,r,this.uniformData,24);let p=this.uniformPool.getBuffer(this.device,this.uniformData);this.vertexData[0]=r.x,this.vertexData[1]=r.y,this.vertexData[2]=r.x+r.width,this.vertexData[3]=r.y,this.vertexData[4]=r.x,this.vertexData[5]=r.y+r.height,this.vertexData[6]=r.x+r.width,this.vertexData[7]=r.y+r.height;let d=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let f=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,p);t.setBindGroup(0,f),t.setVertexBuffer(0,d),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};x();var J=class{stack=[new DOMMatrix];push(t){let r=this.stack[this.stack.length-1].multiply(t);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(t,e,r,i,n,s){let a=this.getCurrent();n&&(a=a.multiply(n)),t[0]=a.a,t[1]=a.b,t[2]=0,t[3]=0,t[4]=a.c,t[5]=a.d,t[6]=0,t[7]=0,t[8]=a.e,t[9]=a.f,t[10]=1,t[11]=0,t[12]=e,t[13]=r,t[14]=i,t[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Yt(u){if(Array.isArray(u)){let r=u[3]??1;return[u[0]*r,u[1]*r,u[2]*r,r]}if("r"in u){let r=u.a??1;return{r:u.r*r,g:u.g*r,b:u.b*r,a:r}}let t=Array.from(u),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var $t=new WeakMap;function vr(u,t){let e=$t.get(u);return(!e||e.format!==t||e.isDestroyed)&&(e=new pt(u,t),$t.set(u,e)),e.resetPools(),e}var pt=class{device;transformStack=new J;clipStack=new W;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new V;samplerCache=new Mt;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new q(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new H(t,e),this.effectPipeline=new I(t,e),this.slugPipeline=new Gt(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,n,s="clear"){this.surfaceWidth=i,this.surfaceHeight=n,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let a=t.beginRenderPass({colorAttachments:[{view:e,clearValue:Yt(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(a,i,n),a}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),ot.flushRetired(this.device),ot.prune(this.device)}drawTexture(t,e,r,i){let n=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,n,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,n){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,s,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawRect(t,e,r,i=0,n){let s=0,a=n;typeof i=="object"&&i!==null?(a=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,s,a)}drawPath(t,e,r,i,n){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShapeFill(t,e,r,i,n){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,n)}drawShape(t,e,r,i,n){let s={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let a=Ft(e);if(a.length>0&&(this.drawShapeFill(t,a,r,s,n),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let o=ct(e);o&&this.drawPath(t,o,r.color,1,{...n,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let a=ct(e);a&&this.drawPath(t,a,i.color,i.width,{...n,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,n){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,n)}applyMotionBlur(t,e,r,i,n=180,s=16,a){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,n,s,this.format,a)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(h=>h.x),n=r.map(h=>h.y),s=Math.min(...i),a=Math.min(...n),o=Math.max(...i)-s,c=Math.max(...n)-a,l=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(l){let h=Math.max(s,l.x),p=Math.max(a,l.y),d=Math.min(s+o,l.x+l.width),f=Math.min(a+c,l.y+l.height);s=h,a=p,o=Math.max(0,d-h),c=Math.max(0,f-p)}this.clipStack.pushScissor({x:s,y:a,width:o,height:c},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};x();async function At(u,t){if(typeof window<"u"&&typeof FontFace<"u")try{let r=await new FontFace(u,`url(${t})`).load();document.fonts.add(r),await document.fonts.ready}catch(e){console.warn(`[preloadFont] Failed to load font "${u}" from ${t}:`,e)}else await Pt(u,t)}x();var Xt=/\p{Extended_Pictographic}/gu,Et=!1;async function Tr(u,t,e=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(a){let o=a.operation;if(o){let c=o.op==="text"||o.kind==="text"||o.op==="caption"||o.kind==="caption"||typeof o.text=="string",l=o.fontFamily||(c?"Inter":"");if(l&&r.add(l),o.op==="text"&&typeof o.text=="string"){let h=o.fontSize??48;for(let p of o.text.match(Xt)??[])i.set(`${p}-${h}`,h)}}for(let c of a.children??[])s(c)})(u);let n=[];for(let s of r){let a=vt(s)??wt(s);n.push(At(s,a).catch(o=>e(o,`font "${s}" from ${a}`))),t&&n.push(O.preloadSlugFont(t,s,a).catch(o=>e(o,`Slug font "${s}" from ${a}`)))}if(t&&i.size>0){!O.hasEmojiFont()&&!Et&&(Et=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path)."));for(let[s,a]of i){let o=s.slice(0,s.lastIndexOf("-"));n.push(O.preloadEmoji(t,o,a).catch(c=>{O.hasEmojiFont()&&e(c,`emoji "${o}"`)}))}}await Promise.all(n)}export{te as a,I as b,z as c,ct as d,vr as e,pt as f,At as g,Tr as h};
|