framefields 2.3.0 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-ChRqnFwB.mjs → audio-C7Kn5xBm.mjs} +3 -3
- package/dist/{audio-ChRqnFwB.mjs.map → audio-C7Kn5xBm.mjs.map} +1 -1
- package/dist/{dist-t-NLlnhM.mjs → dist-CPUIfrtw.mjs} +2 -2
- package/dist/{dist-t-NLlnhM.mjs.map → dist-CPUIfrtw.mjs.map} +1 -1
- package/dist/{dist-PwT_Vmax.mjs → dist-CturBK2Z.mjs} +245 -91
- package/dist/dist-CturBK2Z.mjs.map +1 -0
- package/dist/effects/index.mjs +34 -34
- package/dist/{effects-Duoqc_Oa.mjs → effects-CW1VgdI5.mjs} +2 -2
- package/dist/{effects-Duoqc_Oa.mjs.map → effects-CW1VgdI5.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-CgNmeFXh.mjs → fonts-EgMNL8KE.mjs} +2 -2
- package/dist/{fonts-CgNmeFXh.mjs.map → fonts-EgMNL8KE.mjs.map} +1 -1
- package/dist/{gpu-1ZpAuQOR.mjs → gpu-CN14e7Bi.mjs} +2 -2
- package/dist/{gpu-1ZpAuQOR.mjs.map → gpu-CN14e7Bi.mjs.map} +1 -1
- package/dist/index-AdrZIWT0.d.mts.map +1 -1
- package/dist/index-CeRv1KC0.d.mts.map +1 -1
- package/dist/index.mjs +48 -48
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-CArsjmkd.mjs → preview-1sjnhHQL.mjs} +2 -2
- package/dist/{preview-CArsjmkd.mjs.map → preview-1sjnhHQL.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-VO2R3DWV.mjs → chunk-44CQSOYE.mjs} +1 -1
- package/dist/preview-engine/{chunk-FNE22WGA.mjs → chunk-6AEU4DC7.mjs} +4 -4
- package/dist/preview-engine/{chunk-PR2BUYCL.mjs → chunk-7G3XIOP7.mjs} +1 -1
- package/dist/preview-engine/{chunk-AXQZX3TC.mjs → chunk-AY7UX37L.mjs} +1 -1
- package/dist/preview-engine/{chunk-FPRXK2WD.mjs → chunk-DIGIQ5MJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-K773AOF3.mjs → chunk-EVXWDOCL.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZNL4W4DK.mjs → chunk-EYWPOCZW.mjs} +1 -1
- package/dist/preview-engine/{chunk-WSIURGP2.mjs → chunk-HE4R7EZM.mjs} +1 -1
- package/dist/preview-engine/{chunk-L3CHEZMZ.mjs → chunk-IR5DNNWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-2MZXSWVT.mjs → chunk-JXNG2ACR.mjs} +1 -1
- package/dist/preview-engine/{chunk-O2RNIQXT.mjs → chunk-L6BH5J4P.mjs} +1 -1
- package/dist/preview-engine/{chunk-BVA5NGSH.mjs → chunk-M5HZPZHQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-PFA427ZC.mjs → chunk-MLY5M7Y5.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZH5MZQTZ.mjs → chunk-OG62XGCT.mjs} +1 -1
- package/dist/preview-engine/{chunk-LBRVQ4GE.mjs → chunk-PSRQA3QW.mjs} +1 -1
- package/dist/preview-engine/{chunk-3UPI4EPV.mjs → chunk-Q22PJXFJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-E3HC4GRQ.mjs → chunk-T2FE5VOW.mjs} +1 -1
- package/dist/preview-engine/{chunk-Q2DPNVIA.mjs → chunk-TS3JI3BH.mjs} +1 -1
- package/dist/preview-engine/{chunk-NEE3KQTX.mjs → chunk-U4JIFQRR.mjs} +1 -1
- package/dist/preview-engine/{chunk-DLAHSLNX.mjs → chunk-U7NIY7UC.mjs} +14 -14
- package/dist/preview-engine/{chunk-BQY4BUMN.mjs → chunk-VGZZSPDN.mjs} +1 -1
- package/dist/preview-engine/{chunk-TPAEN6VV.mjs → chunk-VK2CVMWJ.mjs} +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +3 -3
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/renderers-2H7YEUTD.mjs +1 -1
- package/dist/preview-engine/renderers-2ILG23ED.mjs +1 -0
- package/dist/preview-engine/renderers-2P6KXWEZ.mjs +1 -1
- package/dist/preview-engine/{renderers-P4S7GL64.mjs → renderers-2VN3AH45.mjs} +1 -1
- package/dist/preview-engine/{renderers-LLUEOW5T.mjs → renderers-3GHEWWVX.mjs} +1 -1
- package/dist/preview-engine/renderers-3SRG77SC.mjs +1 -1
- package/dist/preview-engine/{renderers-YNFKFM7D.mjs → renderers-3YCJOINH.mjs} +1 -1
- package/dist/preview-engine/{renderers-WP67KK5K.mjs → renderers-4GRVAW2W.mjs} +1 -1
- package/dist/preview-engine/{renderers-BGGRPAVV.mjs → renderers-5FQA2DP4.mjs} +1 -1
- package/dist/preview-engine/{renderers-FGHOLJJK.mjs → renderers-5YEIUTVN.mjs} +1 -1
- package/dist/preview-engine/{renderers-JLFGBYN4.mjs → renderers-6CG7DBTB.mjs} +1 -1
- package/dist/preview-engine/{renderers-O2DZPBOJ.mjs → renderers-6OGFUSH6.mjs} +1 -1
- package/dist/preview-engine/renderers-6WH7NZCC.mjs +1 -1
- package/dist/preview-engine/renderers-7VJN5L3Z.mjs +1 -1
- package/dist/preview-engine/{renderers-7JTNJE7M.mjs → renderers-A6HM64UZ.mjs} +1 -1
- package/dist/preview-engine/renderers-B7DSGUMI.mjs +1 -0
- package/dist/preview-engine/renderers-BFNJ7VCI.mjs +1 -0
- package/dist/preview-engine/{renderers-XCMVZ2XG.mjs → renderers-BSKZXITT.mjs} +1 -1
- package/dist/preview-engine/renderers-CGYIDAVV.mjs +1 -0
- package/dist/preview-engine/{renderers-LVDUZZ75.mjs → renderers-CRRLV7IO.mjs} +1 -1
- package/dist/preview-engine/{renderers-TFZST6WW.mjs → renderers-D6T6IPER.mjs} +1 -1
- package/dist/preview-engine/renderers-DXHJAMZR.mjs +1 -1
- package/dist/preview-engine/{renderers-6ODPWZ2R.mjs → renderers-E76OKK66.mjs} +1 -1
- package/dist/preview-engine/renderers-ECA3P4ON.mjs +1 -0
- package/dist/preview-engine/{renderers-7NCG6BYS.mjs → renderers-EJWPVVQR.mjs} +1 -1
- package/dist/preview-engine/renderers-FWGMNPYB.mjs +1 -1
- package/dist/preview-engine/renderers-HUW2ZMS3.mjs +1 -1
- package/dist/preview-engine/renderers-HXFRTIJD.mjs +1 -1
- package/dist/preview-engine/{renderers-ZSENYGIY.mjs → renderers-I5E2RSV4.mjs} +1 -1
- package/dist/preview-engine/renderers-IWQ3V6AJ.mjs +1 -1
- package/dist/preview-engine/renderers-JHFT27YU.mjs +1 -0
- package/dist/preview-engine/renderers-KZWGSKRF.mjs +1 -1
- package/dist/preview-engine/{renderers-FQWWAETX.mjs → renderers-MCECHPCL.mjs} +1 -1
- package/dist/preview-engine/renderers-MON4QFRF.mjs +1 -0
- package/dist/preview-engine/{renderers-UJ4YVJZT.mjs → renderers-N7FR54V2.mjs} +1 -1
- package/dist/preview-engine/{renderers-PVYP2ONH.mjs → renderers-N7TS5562.mjs} +1 -1
- package/dist/preview-engine/renderers-NQXMYNSY.mjs +1 -0
- package/dist/preview-engine/renderers-NWHS7N2L.mjs +1 -1
- package/dist/preview-engine/renderers-ORAIXUL3.mjs +1 -0
- package/dist/preview-engine/renderers-OT7D3BUA.mjs +1 -1
- package/dist/preview-engine/{renderers-WHBDHTRI.mjs → renderers-PYWXELLG.mjs} +1 -1
- package/dist/preview-engine/renderers-Q4OFCMXI.mjs +1 -1
- package/dist/preview-engine/renderers-QVZVEYP5.mjs +1 -0
- package/dist/preview-engine/renderers-RJO6H4FC.mjs +1 -1
- package/dist/preview-engine/renderers-RKDPX5JU.mjs +1 -0
- package/dist/preview-engine/{renderers-D2EJULOJ.mjs → renderers-RLHTNLRE.mjs} +1 -1
- package/dist/preview-engine/renderers-SBFF7JP5.mjs +1 -0
- package/dist/preview-engine/renderers-TAWT3ZSS.mjs +1 -1
- package/dist/preview-engine/{renderers-HMR2NAD7.mjs → renderers-TR2V2HZ2.mjs} +1 -1
- package/dist/preview-engine/{renderers-UPKB5OLS.mjs → renderers-U6KY34TP.mjs} +1 -1
- package/dist/preview-engine/renderers-UHTO6BQA.mjs +1 -1
- package/dist/preview-engine/renderers-UNK6I4JJ.mjs +1 -0
- package/dist/preview-engine/renderers-W773SBPV.mjs +1 -0
- package/dist/preview-engine/{renderers-527ONFIA.mjs → renderers-WP2LBR5U.mjs} +1 -1
- package/dist/preview-engine/renderers-XHTMRXC5.mjs +1 -1
- package/dist/preview-engine/renderers-YECY2YFT.mjs +1 -1
- package/dist/preview-engine/renderers-YMN6QXK7.mjs +1 -1
- package/dist/preview-engine/{renderers-DN2GF3I7.mjs → renderers-YMPXGYRU.mjs} +1 -1
- package/dist/preview-engine/renderers-ZANPE3OK.mjs +1 -1
- package/dist/preview-engine/renderers-ZHTX73PR.mjs +1 -0
- package/dist/preview-engine/{renderers-TPBPNXWH.mjs → renderers-ZHZMGMLN.mjs} +1 -1
- package/dist/preview-engine/renderers-ZJTRANIX.mjs +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Dd9tJFkY.mjs → program-DtiNMTxO.mjs} +2 -2
- package/dist/{program-Dd9tJFkY.mjs.map → program-DtiNMTxO.mjs.map} +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-7OvgLE8w.mjs → renderer--Da6pAJ4.mjs} +2 -2
- package/dist/{renderer-yGAk7J9P.mjs → renderer--S2cNYXS.mjs} +3 -3
- package/dist/{renderer-yGAk7J9P.mjs.map → renderer--S2cNYXS.mjs.map} +1 -1
- package/dist/renderer-1hypa-l7.mjs +5 -0
- package/dist/renderer-6D8M4DRu.mjs +5 -0
- package/dist/{renderer-257LxOyx.mjs → renderer-6QAlE1Mp.mjs} +3 -3
- package/dist/{renderer-257LxOyx.mjs.map → renderer-6QAlE1Mp.mjs.map} +1 -1
- package/dist/{renderer-C-Qj0BnT.mjs → renderer-8k-TR_Cy.mjs} +3 -3
- package/dist/{renderer-C-Qj0BnT.mjs.map → renderer-8k-TR_Cy.mjs.map} +1 -1
- package/dist/renderer-APrj6tdP.mjs +5 -0
- package/dist/{renderer-CKpwEo1w.mjs → renderer-B3x-uogM.mjs} +3 -3
- package/dist/{renderer-CKpwEo1w.mjs.map → renderer-B3x-uogM.mjs.map} +1 -1
- package/dist/{renderer-C4tUATd_.mjs → renderer-B48vtpou.mjs} +3 -3
- package/dist/{renderer-C4tUATd_.mjs.map → renderer-B48vtpou.mjs.map} +1 -1
- package/dist/{renderer-aCDIEYb3.mjs → renderer-B5Icb0XW.mjs} +2 -2
- package/dist/{renderer-aCDIEYb3.mjs.map → renderer-B5Icb0XW.mjs.map} +1 -1
- package/dist/{renderer-2BnBo6CX.mjs → renderer-B6c_Rk_2.mjs} +3 -3
- package/dist/{renderer-2BnBo6CX.mjs.map → renderer-B6c_Rk_2.mjs.map} +1 -1
- package/dist/{renderer-CS-goRD3.mjs → renderer-BAmGO6Hj.mjs} +3 -3
- package/dist/{renderer-CS-goRD3.mjs.map → renderer-BAmGO6Hj.mjs.map} +1 -1
- package/dist/renderer-BF8wlbN1.mjs +5 -0
- package/dist/{renderer-CxP2e6Ov.mjs → renderer-BFHgl-0f.mjs} +2 -2
- package/dist/{renderer-CxP2e6Ov.mjs.map → renderer-BFHgl-0f.mjs.map} +1 -1
- package/dist/{renderer-D0xLIq1r.mjs → renderer-BI1nmIqA.mjs} +3 -3
- package/dist/{renderer-D0xLIq1r.mjs.map → renderer-BI1nmIqA.mjs.map} +1 -1
- package/dist/renderer-BOUcMCJB.mjs +5 -0
- package/dist/{renderer-D1T7A3NF.mjs → renderer-BRWpn3dT.mjs} +3 -3
- package/dist/{renderer-D1T7A3NF.mjs.map → renderer-BRWpn3dT.mjs.map} +1 -1
- package/dist/renderer-BSwn6KmG.mjs +5 -0
- package/dist/renderer-BUxvuC5A.mjs +5 -0
- package/dist/{renderer-72A4SvOE.mjs → renderer-BXCZev4l.mjs} +3 -3
- package/dist/{renderer-72A4SvOE.mjs.map → renderer-BXCZev4l.mjs.map} +1 -1
- package/dist/renderer-BYOsmJ8F.mjs +5 -0
- package/dist/{renderer-D1MOTlWS.mjs → renderer-BYj8x8YM.mjs} +2 -2
- package/dist/{renderer-D1MOTlWS.mjs.map → renderer-BYj8x8YM.mjs.map} +1 -1
- package/dist/{renderer-UT0CcmMZ.mjs → renderer-BaOC1Pd1.mjs} +3 -3
- package/dist/{renderer-UT0CcmMZ.mjs.map → renderer-BaOC1Pd1.mjs.map} +1 -1
- package/dist/{renderer-BY08hHFS.mjs → renderer-BebePsG7.mjs} +2 -2
- package/dist/{renderer-BY08hHFS.mjs.map → renderer-BebePsG7.mjs.map} +1 -1
- package/dist/{renderer-DzOzVxNS.mjs → renderer-Bf4BdBtb.mjs} +2 -2
- package/dist/{renderer-DzOzVxNS.mjs.map → renderer-Bf4BdBtb.mjs.map} +1 -1
- package/dist/{renderer-zQIB2VZZ.mjs → renderer-BkXqFmNO.mjs} +2 -2
- package/dist/{renderer-zQIB2VZZ.mjs.map → renderer-BkXqFmNO.mjs.map} +1 -1
- package/dist/{renderer-YyEBKPcE.mjs → renderer-BlafvK-L.mjs} +2 -2
- package/dist/{renderer-OxafT7Xm.mjs → renderer-BmWH4dK1.mjs} +5 -5
- package/dist/{renderer-OxafT7Xm.mjs.map → renderer-BmWH4dK1.mjs.map} +1 -1
- package/dist/renderer-Bp7LqSTt.mjs +5 -0
- package/dist/{renderer-D-yNHLG7.mjs → renderer-Bq9jXYJ5.mjs} +3 -3
- package/dist/{renderer-D-yNHLG7.mjs.map → renderer-Bq9jXYJ5.mjs.map} +1 -1
- package/dist/{renderer-BVR0mEIT.mjs → renderer-BqSiWRoD.mjs} +2 -2
- package/dist/{renderer-BVR0mEIT.mjs.map → renderer-BqSiWRoD.mjs.map} +1 -1
- package/dist/{renderer-DyPgVl1l.mjs → renderer-ButaUWLr.mjs} +3 -3
- package/dist/{renderer-DyPgVl1l.mjs.map → renderer-ButaUWLr.mjs.map} +1 -1
- package/dist/{renderer-94byj7Mk.mjs → renderer-C2Ff-9u_.mjs} +2 -2
- package/dist/{renderer-94byj7Mk.mjs.map → renderer-C2Ff-9u_.mjs.map} +1 -1
- package/dist/{renderer-DpQaiH6C.mjs → renderer-C4puWDLK.mjs} +2 -2
- package/dist/{renderer-DpQaiH6C.mjs.map → renderer-C4puWDLK.mjs.map} +1 -1
- package/dist/{renderer-D6YcQTLI.mjs → renderer-CBG6ewNf.mjs} +3 -3
- package/dist/{renderer-D6YcQTLI.mjs.map → renderer-CBG6ewNf.mjs.map} +1 -1
- package/dist/renderer-CD0amH_Q.mjs +5 -0
- package/dist/renderer-CIJGjrt7.mjs +5 -0
- package/dist/{renderer-CIMI33Yd.mjs → renderer-CJwgsecF.mjs} +2 -2
- package/dist/{renderer-CIMI33Yd.mjs.map → renderer-CJwgsecF.mjs.map} +1 -1
- package/dist/{renderer-aN60v8jR.mjs → renderer-CMzd3BrW.mjs} +2 -2
- package/dist/{renderer-aN60v8jR.mjs.map → renderer-CMzd3BrW.mjs.map} +1 -1
- package/dist/renderer-CNFTl94b.mjs +5 -0
- package/dist/{renderer-DJQD7tai.mjs → renderer-CPNLkir4.mjs} +2 -2
- package/dist/{renderer-DJQD7tai.mjs.map → renderer-CPNLkir4.mjs.map} +1 -1
- package/dist/{renderer-CLUyYFqS.mjs → renderer-CRYO5HQw.mjs} +2 -2
- package/dist/{renderer-CLUyYFqS.mjs.map → renderer-CRYO5HQw.mjs.map} +1 -1
- package/dist/renderer-CTJ0gHPS.mjs +5 -0
- package/dist/{renderer-Dju3SEAJ.mjs → renderer-CbNW0KHh.mjs} +3 -3
- package/dist/{renderer-Dju3SEAJ.mjs.map → renderer-CbNW0KHh.mjs.map} +1 -1
- package/dist/renderer-Cc3INn7w.mjs +5 -0
- package/dist/{renderer-BK32cV7E.mjs → renderer-CczmOPAO.mjs} +3 -3
- package/dist/{renderer-BK32cV7E.mjs.map → renderer-CczmOPAO.mjs.map} +1 -1
- package/dist/renderer-CeHh2lKY.mjs +5 -0
- package/dist/renderer-CfjwkQP4.mjs +5 -0
- package/dist/{renderer-0L9MEb3A.mjs → renderer-CgEMtLOL.mjs} +2 -2
- package/dist/{renderer-0L9MEb3A.mjs.map → renderer-CgEMtLOL.mjs.map} +1 -1
- package/dist/{renderer-CWQ-Bct7.mjs → renderer-Ch1rv1XP.mjs} +2 -2
- package/dist/{renderer-CWQ-Bct7.mjs.map → renderer-Ch1rv1XP.mjs.map} +1 -1
- package/dist/renderer-CiuOB-Md.mjs +5 -0
- package/dist/{renderer-DNYSf2Fl.mjs → renderer-ClK7_Yzz.mjs} +2 -2
- package/dist/{renderer-DNYSf2Fl.mjs.map → renderer-ClK7_Yzz.mjs.map} +1 -1
- package/dist/renderer-Cor66Y2X.mjs +5 -0
- package/dist/renderer-CtIM0LWe.mjs +5 -0
- package/dist/renderer-CyqgTsnx.mjs +5 -0
- package/dist/{renderer-DWcbrx2M.mjs → renderer-Cz11KJmQ.mjs} +2 -2
- package/dist/{renderer-DWcbrx2M.mjs.map → renderer-Cz11KJmQ.mjs.map} +1 -1
- package/dist/{renderer-B2aXfdW_.mjs → renderer-D-eTVnDS.mjs} +2 -2
- package/dist/{renderer-B2aXfdW_.mjs.map → renderer-D-eTVnDS.mjs.map} +1 -1
- package/dist/renderer-D2QG9yIW.mjs +5 -0
- package/dist/renderer-D2woU27o.mjs +6 -0
- package/dist/{renderer-EhCkD11e.mjs → renderer-D8tdGi2P.mjs} +3 -3
- package/dist/{renderer-EhCkD11e.mjs.map → renderer-D8tdGi2P.mjs.map} +1 -1
- package/dist/{renderer-DuxzqfoE.mjs → renderer-D90PpIKG.mjs} +2 -2
- package/dist/renderer-DAhDiQQY.mjs +5 -0
- package/dist/{renderer-BmQbSQHf.mjs → renderer-DDBmBmQN.mjs} +2 -2
- package/dist/{renderer-BmQbSQHf.mjs.map → renderer-DDBmBmQN.mjs.map} +1 -1
- package/dist/renderer-DIjxOQFi.mjs +5 -0
- package/dist/{renderer-_AuL8mAi.mjs → renderer-DJWQWN1E.mjs} +3 -3
- package/dist/{renderer-_AuL8mAi.mjs.map → renderer-DJWQWN1E.mjs.map} +1 -1
- package/dist/{renderer-JiEpssIz.mjs → renderer-DL4oR40b.mjs} +2 -2
- package/dist/{renderer-JiEpssIz.mjs.map → renderer-DL4oR40b.mjs.map} +1 -1
- package/dist/{renderer-CrUudSLP.mjs → renderer-DNhOjz6C.mjs} +2 -2
- package/dist/{renderer-CrUudSLP.mjs.map → renderer-DNhOjz6C.mjs.map} +1 -1
- package/dist/renderer-DRzalGhU.mjs +5 -0
- package/dist/{renderer-BpdzhZE7.mjs → renderer-DS64UaYK.mjs} +3 -3
- package/dist/{renderer-BpdzhZE7.mjs.map → renderer-DS64UaYK.mjs.map} +1 -1
- package/dist/renderer-DY6S1jWp.mjs +5 -0
- package/dist/{renderer-CSPpKLi3.mjs → renderer-DYo_a5-8.mjs} +2 -2
- package/dist/{renderer-CSPpKLi3.mjs.map → renderer-DYo_a5-8.mjs.map} +1 -1
- package/dist/{renderer-Ck2pRec0.mjs → renderer-DacnnTjY.mjs} +3 -3
- package/dist/{renderer-Ck2pRec0.mjs.map → renderer-DacnnTjY.mjs.map} +1 -1
- package/dist/renderer-DeW0KNQV.mjs +5 -0
- package/dist/{renderer-CvOzuDX3.mjs → renderer-DjPC9l3w.mjs} +3 -3
- package/dist/{renderer-CvOzuDX3.mjs.map → renderer-DjPC9l3w.mjs.map} +1 -1
- package/dist/{renderer-BId5hBLb.mjs → renderer-DjwF10p2.mjs} +3 -3
- package/dist/{renderer-BId5hBLb.mjs.map → renderer-DjwF10p2.mjs.map} +1 -1
- package/dist/{renderer-CraudZUC.mjs → renderer-DmOewVsB.mjs} +3 -3
- package/dist/{renderer-CraudZUC.mjs.map → renderer-DmOewVsB.mjs.map} +1 -1
- package/dist/{renderer-BHrqEgIA.mjs → renderer-DqlvbOUt.mjs} +3 -3
- package/dist/{renderer-BHrqEgIA.mjs.map → renderer-DqlvbOUt.mjs.map} +1 -1
- package/dist/renderer-DsVSVFkl.mjs +5 -0
- package/dist/{renderer-DIqwz7dV.mjs → renderer-DvoPplvC.mjs} +2 -2
- package/dist/{renderer-BEpANdcO.mjs → renderer-Dw1e5phO.mjs} +3 -3
- package/dist/{renderer-BEpANdcO.mjs.map → renderer-Dw1e5phO.mjs.map} +1 -1
- package/dist/renderer-DxvcIgEU.mjs +5 -0
- package/dist/renderer-F0MKqmol.mjs +5 -0
- package/dist/{renderer-CKSdl0Xf.mjs → renderer-F410V727.mjs} +3 -3
- package/dist/{renderer-CKSdl0Xf.mjs.map → renderer-F410V727.mjs.map} +1 -1
- package/dist/{renderer-B3ypX3MH.mjs → renderer-Fm2brScz.mjs} +3 -3
- package/dist/{renderer-B3ypX3MH.mjs.map → renderer-Fm2brScz.mjs.map} +1 -1
- package/dist/{renderer-CI9Pq77W.mjs → renderer-GlyeFl5R.mjs} +3 -3
- package/dist/{renderer-CI9Pq77W.mjs.map → renderer-GlyeFl5R.mjs.map} +1 -1
- package/dist/{renderer-DZnUiiBp.mjs → renderer-ITtBRR4o.mjs} +3 -3
- package/dist/{renderer-DZnUiiBp.mjs.map → renderer-ITtBRR4o.mjs.map} +1 -1
- package/dist/{renderer-CwwmwM7J.mjs → renderer-Kj9AhRCc.mjs} +3 -3
- package/dist/{renderer-CwwmwM7J.mjs.map → renderer-Kj9AhRCc.mjs.map} +1 -1
- package/dist/{renderer-DNaHFctD.mjs → renderer-MS70wrQB.mjs} +2 -2
- package/dist/{renderer-DNaHFctD.mjs.map → renderer-MS70wrQB.mjs.map} +1 -1
- package/dist/{renderer-BEdc-7JW.mjs → renderer-Mdyv_W8K.mjs} +3 -3
- package/dist/{renderer-BEdc-7JW.mjs.map → renderer-Mdyv_W8K.mjs.map} +1 -1
- package/dist/renderer-OkbovcAc.mjs +5 -0
- package/dist/{renderer-Dvq11SEA.mjs → renderer-QMGrRiab.mjs} +2 -2
- package/dist/{renderer-Dvq11SEA.mjs.map → renderer-QMGrRiab.mjs.map} +1 -1
- package/dist/renderer-QyBeWMEL.mjs +5 -0
- package/dist/{renderer-B3c-j-e5.mjs → renderer-R0sJId_6.mjs} +2 -2
- package/dist/{renderer-B3c-j-e5.mjs.map → renderer-R0sJId_6.mjs.map} +1 -1
- package/dist/{renderer-DKXK5hDm.mjs → renderer-Rg1BFv8B.mjs} +2 -2
- package/dist/{renderer-DKXK5hDm.mjs.map → renderer-Rg1BFv8B.mjs.map} +1 -1
- package/dist/{renderer-BmTDXIUI.mjs → renderer-S6ez0leJ.mjs} +2 -2
- package/dist/{renderer-BmTDXIUI.mjs.map → renderer-S6ez0leJ.mjs.map} +1 -1
- package/dist/{renderer-ChoYV7Ko.mjs → renderer-YtRSM2cv.mjs} +2 -2
- package/dist/{renderer-ChoYV7Ko.mjs.map → renderer-YtRSM2cv.mjs.map} +1 -1
- package/dist/{renderer-CC72sZ8l.mjs → renderer-_-MCpvGq.mjs} +91 -73
- package/dist/renderer-_-MCpvGq.mjs.map +1 -0
- package/dist/{renderer-xezE7IZX.mjs → renderer-_Fh9IBlE.mjs} +3 -3
- package/dist/{renderer-xezE7IZX.mjs.map → renderer-_Fh9IBlE.mjs.map} +1 -1
- package/dist/{renderer-mpInX4Iy.mjs → renderer-dJcu7WqI.mjs} +3 -3
- package/dist/{renderer-mpInX4Iy.mjs.map → renderer-dJcu7WqI.mjs.map} +1 -1
- package/dist/renderer-hSh5IrDp.mjs +5 -0
- package/dist/{renderer-Dvg5nbgU.mjs → renderer-ktpusVT2.mjs} +3 -3
- package/dist/{renderer-Dvg5nbgU.mjs.map → renderer-ktpusVT2.mjs.map} +1 -1
- package/dist/renderer-puLncHft.mjs +5 -0
- package/dist/{renderer-D8_UYdDb.mjs → renderer-w8LKBg_5.mjs} +2 -2
- package/dist/{renderer-D8_UYdDb.mjs.map → renderer-w8LKBg_5.mjs.map} +1 -1
- package/dist/renderer-wnFCaw7j.mjs +5 -0
- package/dist/renderer-xjtlyGS1.mjs +5 -0
- package/dist/{renderer-Cvysm2Jg.mjs → renderer-z3YOOR3k.mjs} +3 -3
- package/dist/{renderer-Cvysm2Jg.mjs.map → renderer-z3YOOR3k.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-i6u_rhCX.mjs → renderers-CP8CFWDs-DXiR_PLR.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-i6u_rhCX.mjs.map → renderers-CP8CFWDs-DXiR_PLR.mjs.map} +1 -1
- package/dist/signals/index.mjs +4 -4
- package/package.json +56 -56
- package/dist/dist-PwT_Vmax.mjs.map +0 -1
- package/dist/preview-engine/chunk-OCX5AD23.mjs +0 -1
- package/dist/preview-engine/renderers-3T7Q4SPP.mjs +0 -1
- package/dist/preview-engine/renderers-4DV4REGM.mjs +0 -1
- package/dist/preview-engine/renderers-CQXQHOW2.mjs +0 -1
- package/dist/preview-engine/renderers-IXGM55XK.mjs +0 -1
- package/dist/preview-engine/renderers-KVHUVWSN.mjs +0 -1
- package/dist/preview-engine/renderers-M7R2ZJUP.mjs +0 -1
- package/dist/preview-engine/renderers-PMOO7DLX.mjs +0 -1
- package/dist/preview-engine/renderers-QCCPCH73.mjs +0 -1
- package/dist/preview-engine/renderers-RRXFJRGI.mjs +0 -1
- package/dist/preview-engine/renderers-VLMQR3DW.mjs +0 -1
- package/dist/preview-engine/renderers-WVTTRCVI.mjs +0 -1
- package/dist/preview-engine/renderers-X5PUIPU5.mjs +0 -1
- package/dist/preview-engine/renderers-YDCDY3BR.mjs +0 -1
- package/dist/preview-engine/renderers-YJNQ4B7B.mjs +0 -1
- package/dist/preview-engine/renderers-Z7YQUFAY.mjs +0 -1
- package/dist/preview-engine/skia-canvas-QBXAOGPB.mjs +0 -1
- package/dist/renderer-0lp9ClNc.mjs +0 -5
- package/dist/renderer-4g_BfiKp.mjs +0 -5
- package/dist/renderer-7Aw6AHqW.mjs +0 -5
- package/dist/renderer-B82v8PyC.mjs +0 -5
- package/dist/renderer-B8BDMJNz.mjs +0 -5
- package/dist/renderer-BCPRrhP8.mjs +0 -5
- package/dist/renderer-BFhzO6En.mjs +0 -5
- package/dist/renderer-BH0KF-y-.mjs +0 -6
- package/dist/renderer-BTI5ybyH.mjs +0 -5
- package/dist/renderer-Ba7LH8U2.mjs +0 -5
- package/dist/renderer-BcQBlfhC.mjs +0 -5
- package/dist/renderer-BdMJzCTz.mjs +0 -5
- package/dist/renderer-Bxi2j-tG.mjs +0 -5
- package/dist/renderer-CC72sZ8l.mjs.map +0 -1
- package/dist/renderer-CCn5ISVM.mjs +0 -5
- package/dist/renderer-CDRsdhg9.mjs +0 -5
- package/dist/renderer-CiCK8ZG_.mjs +0 -5
- package/dist/renderer-CsEk9TFz.mjs +0 -5
- package/dist/renderer-D1gx_-hi.mjs +0 -5
- package/dist/renderer-D5MCGNAF.mjs +0 -5
- package/dist/renderer-DD_MzvM-.mjs +0 -5
- package/dist/renderer-DP7YoZ0K.mjs +0 -5
- package/dist/renderer-DXiWvKij.mjs +0 -5
- package/dist/renderer-Dc6fW-o1.mjs +0 -5
- package/dist/renderer-DiurlsNT.mjs +0 -5
- package/dist/renderer-DvCUdgVz.mjs +0 -5
- package/dist/renderer-IiwAh9-K.mjs +0 -5
- package/dist/renderer-JlGXqH0E.mjs +0 -5
- package/dist/renderer-TZFKKgL1.mjs +0 -5
- package/dist/renderer-aEecoNPX.mjs +0 -5
- package/dist/renderer-ewhliYYP.mjs +0 -5
- package/dist/renderer-hQc6GgTi.mjs +0 -5
- package/dist/renderer-iuX0RZIi.mjs +0 -5
- package/dist/renderer-j4vkTzHa.mjs +0 -5
- package/dist/renderer-msPjwx_9.mjs +0 -5
- package/dist/renderer-pI2ndu-b.mjs +0 -5
- package/dist/renderer-x1OGMhsC.mjs +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-ChoYV7Ko.mjs","names":[],"sources":["../../../nodes/node-refine-edge/dist/renderers-BAo85yKE.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { ImageResultSchema, VideoResultSchema, configBuilder, resolveHandleParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, signalTextureView, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst MIN_DECONTAMINATE = 0;\nconst MAX_DECONTAMINATE = 1;\nconst MIN_RADIUS = .5;\nconst MAX_RADIUS = 50;\nconst MIN_SMOOTH = 0;\nconst MAX_SMOOTH = 100;\nconst MIN_FEATHER = 0;\nconst MAX_FEATHER = 50;\nconst MIN_SHIFT_EDGE = -100;\nconst MAX_SHIFT_EDGE = 100;\nconst MatteChannelEnum = z.enum([\n\t\"Alpha\",\n\t\"Luminance\",\n\t\"Red\",\n\t\"Green\",\n\t\"Blue\"\n]);\nconst RefineEdgeOutputModeEnum = z.enum([\n\t\"Composite\",\n\t\"MatteOnly\",\n\t\"DecontaminatedRGB\"\n]);\nconst refineEdgeConfig = configBuilder().field(\"decontaminateAmount\", z.number().multipleOf(.01).min(MIN_DECONTAMINATE).max(MAX_DECONTAMINATE).default(.7), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Decontaminate Colors\",\n\tdescription: \"Amount of edge color spill decontamination/defringing (0.0–1.0).\"\n}).field(\"radius\", z.number().multipleOf(.1).min(MIN_RADIUS).max(MAX_RADIUS).default(2), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Edge Detection Radius (px)\",\n\tdescription: \"Radius in pixels around alpha transitions to refine and decontaminate.\"\n}).field(\"smooth\", z.number().min(MIN_SMOOTH).max(MAX_SMOOTH).default(5), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Smoothness\",\n\tdescription: \"Matte edge smoothing curve intensity (0–100).\"\n}).field(\"feather\", z.number().multipleOf(.1).min(MIN_FEATHER).max(MAX_FEATHER).default(.5), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Feather (px)\",\n\tdescription: \"Sub-pixel gaussian softness along the matte boundary.\"\n}).field(\"shiftEdge\", z.number().min(MIN_SHIFT_EDGE).max(MAX_SHIFT_EDGE).default(0), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Shift Edge (%)\",\n\tdescription: \"Contract (<0) or expand (>0) the edge boundary (-100% to +100%).\"\n}).field(\"matteChannel\", MatteChannelEnum.default(\"Alpha\"), {\n\tlabel: \"Matte Channel\",\n\tdescription: \"Channel to extract matte from (Alpha, Luminance, Red, Green, Blue).\"\n}).field(\"outputMode\", RefineEdgeOutputModeEnum.default(\"Composite\"), {\n\tlabel: \"Output Mode\",\n\tdescription: \"Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha).\"\n}).build();\nconst RefineEdgeNodeConfigSchema = refineEdgeConfig.schema;\nconst RefineEdgeResultSchema = z.union([ImageResultSchema, VideoResultSchema]);\nconst REFINE_EDGE_OUTPUT_TYPE_MAP = {\n\tVideo: \"Video\",\n\tLottie: \"Video\",\n\tGIF: \"GIF\",\n\tImage: \"Image\",\n\tSVG: \"Image\"\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst CHANNEL_MAP = {\n\tAlpha: 0,\n\tLuminance: 1,\n\tRed: 2,\n\tGreen: 3,\n\tBlue: 4\n};\nconst OUTPUT_MODE_MAP = {\n\tComposite: 0,\n\tMatteOnly: 1,\n\tDecontaminatedRGB: 2\n};\nconst WGSL_REFINE_EDGE = `\nstruct RefineEdgeUniforms {\n\tdirX : f32,\n\tdirY : f32,\n\tdecontaminateAmount : f32,\n\tradius : f32,\n\n\tsmoothness : f32,\n\tfeather : f32,\n\tshiftEdge : f32,\n\tmatteChannel : f32,\n\n\toutputMode : f32,\n\thasMatte : f32,\n\thasDecontamSig : f32,\n\thasRadiusSig : f32,\n\n\thasSmoothSig : f32,\n\thasFeatherSig : f32,\n\thasShiftEdgeSig : f32,\n\tisSecondPass : f32,\n\n\tpad0 : f32,\n\tpad1 : f32,\n\tpad2 : f32,\n\tpad3 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : RefineEdgeUniforms;\n\n@group(1) @binding(0) var texInput : texture_2d<f32>;\n@group(1) @binding(1) var texMatte : texture_2d<f32>;\n@group(1) @binding(2) var origTex : texture_2d<f32>;\n@group(1) @binding(3) var samp : sampler;\n\n@group(2) @binding(0) var decontamSigTex : texture_2d<f32>;\n@group(2) @binding(1) var radiusSigTex : texture_2d<f32>;\n@group(2) @binding(2) var smoothSigTex : texture_2d<f32>;\n@group(2) @binding(3) var featherSigTex : texture_2d<f32>;\n@group(2) @binding(4) var shiftEdgeSigTex : texture_2d<f32>;\n@group(2) @binding(5) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn extractChannel(color : vec4<f32>, chCode : f32) -> f32 {\n\tif (chCode < 0.5) {\n\t\t// Alpha\n\t\treturn color.a;\n\t} else if (chCode < 1.5) {\n\t\t// Luminance\n\t\tlet luma = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, luma / color.a);\n\t\t}\n\t\treturn luma;\n\t} else if (chCode < 2.5) {\n\t\t// Red\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.r / color.a);\n\t\t}\n\t\treturn color.r;\n\t} else if (chCode < 3.5) {\n\t\t// Green\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.g / color.a);\n\t\t}\n\t\treturn color.g;\n\t} else {\n\t\t// Blue\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.b / color.a);\n\t\t}\n\t\treturn color.b;\n\t}\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet dimensions = vec2<f32>(textureDimensions(texInput));\n\tlet texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));\n\n\tvar decontam = u.decontaminateAmount;\n\tif (u.hasDecontamSig > 0.5) {\n\t\tdecontam = clamp(textureSampleLevel(decontamSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);\n\t}\n\tvar radius = u.radius;\n\tif (u.hasRadiusSig > 0.5) {\n\t\tradius = clamp(textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.5, 50.0);\n\t}\n\tvar smoothVal = u.smoothness;\n\tif (u.hasSmoothSig > 0.5) {\n\t\tsmoothVal = clamp(textureSampleLevel(smoothSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 100.0);\n\t}\n\tvar featherVal = u.feather;\n\tif (u.hasFeatherSig > 0.5) {\n\t\tfeatherVal = clamp(textureSampleLevel(featherSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 50.0);\n\t}\n\tvar shiftEdgeVal = u.shiftEdge;\n\tif (u.hasShiftEdgeSig > 0.5) {\n\t\tshiftEdgeVal = clamp(textureSampleLevel(shiftEdgeSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0);\n\t}\n\n\tlet direction = vec2<f32>(u.dirX, u.dirY);\n\n\t// Combined sigma for smoothing & feathering\n\tlet smoothSigma = max(0.0, smoothVal * 0.15);\n\tlet featherSigma = max(0.0, featherVal);\n\tlet totalSigma = max(0.1, sqrt(smoothSigma * smoothSigma + featherSigma * featherSigma));\n\n\tif (u.isSecondPass <= 0.5) {\n\t\t// =============================================================\n\t\t// PASS 1: Horizontal Pass (Alpha filter + FG color sampling)\n\t\t// =============================================================\n\t\tlet centerInput = textureSampleLevel(texInput, samp, in.uv, 0.0);\n\t\tlet centerMatte = textureSampleLevel(texMatte, samp, in.uv, 0.0);\n\n\t\tvar centerRawAlpha = centerInput.a;\n\t\tif (u.hasMatte > 0.5) {\n\t\t\tcenterRawAlpha = extractChannel(centerMatte, u.matteChannel);\n\t\t}\n\n\t\t// 1. Horizontal Alpha Blur / Filter\n\t\tvar alphaAccum = 0.0;\n\t\tvar alphaWeightSum = 0.0;\n\n\t\tlet stepScale = max(1.0, totalSigma / 15.0);\n\t\tlet effectiveSigma = totalSigma / stepScale;\n\t\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);\n\n\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\t\tlet sampleInput = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\t\tvar sAlpha = sampleInput.a;\n\t\t\tif (u.hasMatte > 0.5) {\n\t\t\t\tlet sMatte = textureSampleLevel(texMatte, samp, sampleUv, 0.0);\n\t\t\t\tsAlpha = extractChannel(sMatte, u.matteChannel);\n\t\t\t}\n\n\t\t\tlet dist = f32(i) * stepScale;\n\t\t\tlet weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));\n\t\t\talphaAccum += sAlpha * weight;\n\t\t\talphaWeightSum += weight;\n\t\t}\n\n\t\tlet smoothedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);\n\n\t\t// 2. Horizontal Foreground Color Sampling for Defringing\n\t\tvar fgColorAccum = vec3<f32>(0.0);\n\t\tvar fgWeightSum = 0.0;\n\n\t\tlet rStepScale = max(1.0, radius / 15.0);\n\t\tlet rSampleCount = min(i32(ceil(radius / rStepScale)), 32);\n\n\t\tfor (var i = -rSampleCount; i <= rSampleCount; i++) {\n\t\t\tlet offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;\n\t\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\t\tlet sampleCol = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\t\tvar sampleA = sampleCol.a;\n\t\t\tif (u.hasMatte > 0.5) {\n\t\t\t\tlet sm = textureSampleLevel(texMatte, samp, sampleUv, 0.0);\n\t\t\t\tsampleA = extractChannel(sm, u.matteChannel);\n\t\t\t}\n\n\t\t\tlet sampleRgb = select(sampleCol.rgb, sampleCol.rgb / max(sampleCol.a, 1e-4), sampleCol.a > 1e-4);\n\t\t\tlet spatialDist = f32(i) * rStepScale;\n\t\t\tlet spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));\n\t\t\t// Weight foreground pixels by alpha confidence\n\t\t\tlet fgConfidence = clamp((sampleA - 0.2) / 0.8, 0.0, 1.0);\n\t\t\tlet weight = fgConfidence * spatialWeight;\n\n\t\t\tfgColorAccum += sampleRgb * weight;\n\t\t\tfgWeightSum += weight;\n\t\t}\n\n\t\tlet centerUnpremult = select(centerInput.rgb, centerInput.rgb / max(centerInput.a, 1e-4), centerInput.a > 1e-4);\n\t\tlet fgColor = select(centerUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);\n\n\t\treturn vec4<f32>(fgColor, smoothedAlpha);\n\t}\n\n\t// =============================================================\n\t// PASS 2: Vertical Pass & Final Defringe/Composite\n\t// =============================================================\n\tlet pass1Sample = textureSampleLevel(texInput, samp, in.uv, 0.0);\n\tlet origSample = textureSampleLevel(origTex, samp, in.uv, 0.0);\n\n\tvar rawMatteAlpha = origSample.a;\n\tif (u.hasMatte > 0.5) {\n\t\tlet rawMatteSample = textureSampleLevel(texMatte, samp, in.uv, 0.0);\n\t\trawMatteAlpha = extractChannel(rawMatteSample, u.matteChannel);\n\t}\n\n\t// 1. Vertical Alpha Blur / Filter\n\tvar alphaAccum = 0.0;\n\tvar alphaWeightSum = 0.0;\n\n\tlet stepScale = max(1.0, totalSigma / 15.0);\n\tlet effectiveSigma = totalSigma / stepScale;\n\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);\n\n\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\tlet sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\tlet sAlpha = sPass1.a;\n\n\t\tlet dist = f32(i) * stepScale;\n\t\tlet weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));\n\t\talphaAccum += sAlpha * weight;\n\t\talphaWeightSum += weight;\n\t}\n\n\tvar refinedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);\n\n\t// 2. Shift Edge (Choke < 0 or Expand > 0)\n\tif (abs(shiftEdgeVal) > 0.01) {\n\t\tlet shiftNorm = shiftEdgeVal / 100.0;\n\t\tif (shiftNorm < 0.0) {\n\t\t\t// Contract / Choke\n\t\t\tlet chokeLimit = abs(shiftNorm);\n\t\t\trefinedAlpha = clamp((refinedAlpha - chokeLimit) / max(1.0 - chokeLimit, 1e-4), 0.0, 1.0);\n\t\t} else {\n\t\t\t// Expand / Dilate\n\t\t\trefinedAlpha = clamp(refinedAlpha / max(1.0 - shiftNorm, 1e-4), 0.0, 1.0);\n\t\t}\n\t}\n\n\t// 3. Vertical Foreground Color Sampling for Defringing\n\tvar fgColorAccum = vec3<f32>(0.0);\n\tvar fgWeightSum = 0.0;\n\n\tlet rStepScale = max(1.0, radius / 15.0);\n\tlet rSampleCount = min(i32(ceil(radius / rStepScale)), 32);\n\n\tfor (var i = -rSampleCount; i <= rSampleCount; i++) {\n\t\tlet offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;\n\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\tlet sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\tlet sRgb = sPass1.rgb;\n\t\tlet sA = sPass1.a;\n\n\t\tlet spatialDist = f32(i) * rStepScale;\n\t\tlet spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));\n\t\tlet fgConfidence = clamp((sA - 0.2) / 0.8, 0.0, 1.0);\n\t\tlet weight = fgConfidence * spatialWeight;\n\n\t\tfgColorAccum += sRgb * weight;\n\t\tfgWeightSum += weight;\n\t}\n\n\tlet origUnpremult = select(origSample.rgb, origSample.rgb / max(origSample.a, 1e-4), origSample.a > 1e-4);\n\tlet fgColor = select(origUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);\n\n\t// Edge zone detection: transitions between foreground and background\n\tlet edgeWeight = clamp(4.0 * rawMatteAlpha * (1.0 - rawMatteAlpha), 0.0, 1.0);\n\tlet decontamFactor = clamp(decontam * max(edgeWeight, (1.0 - refinedAlpha) * 0.8), 0.0, 1.0);\n\n\tlet decontaminatedColor = mix(origUnpremult, fgColor, decontamFactor);\n\n\t// Format Output\n\tlet mode = u.outputMode;\n\tif (mode < 0.5) {\n\t\t// Composite: Decontaminated RGB with refined alpha (premultiplied)\n\t\treturn vec4<f32>(decontaminatedColor * refinedAlpha, refinedAlpha);\n\t} else if (mode < 1.5) {\n\t\t// MatteOnly: Grayscale refined alpha mask\n\t\treturn vec4<f32>(refinedAlpha, refinedAlpha, refinedAlpha, 1.0);\n\t} else {\n\t\t// DecontaminatedRGB: Clean defringed RGB with full alpha\n\t\treturn vec4<f32>(decontaminatedColor, 1.0);\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getRefineEdgeResources(device, targetFormat) {\n\tconst cached = deviceResourceCache.get(device);\n\tif (cached) return cached;\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\tconst textureLayout = texturesLayout(device, 3);\n\tconst signalTextureLayout = texturesLayout(device, 5);\n\tconst res = {\n\t\tuniformLayout,\n\t\ttextureLayout,\n\t\tsignalTextureLayout,\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tmodule: device.createShaderModule({ code: WGSL_REFINE_EDGE }),\n\t\t\tlayouts: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tuniformLayout,\n\t\t\t\ttextureLayout,\n\t\t\t\tsignalTextureLayout\n\t\t\t] }),\n\t\t\tformat: targetFormat\n\t\t})\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nconst WebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"RefineEdge\" || !op) return;\n\tconst childMedia = props.virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);\n\tconst decontamRes = resolveField(op.decontaminateAmountHandleId, Number(op.decontaminateAmount ?? .7), MIN_DECONTAMINATE, MAX_DECONTAMINATE);\n\tconst radiusRes = resolveField(op.radiusHandleId, Number(op.radius ?? 2), MIN_RADIUS, MAX_RADIUS);\n\tconst smoothRes = resolveField(op.smoothHandleId, Number(op.smooth ?? 5), MIN_SMOOTH, MAX_SMOOTH);\n\tconst featherRes = resolveField(op.featherHandleId, Number(op.feather ?? .5), MIN_FEATHER, MAX_FEATHER);\n\tconst shiftEdgeRes = resolveField(op.shiftEdgeHandleId, Number(op.shiftEdge ?? 0), MIN_SHIFT_EDGE, MAX_SHIFT_EDGE);\n\tconst { texture: tmpInputTex, view: tmpInputView } = await drawChildToTexture(args, childMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\trenderId: `${props.renderId}-input`\n\t} });\n\tlet tmpMatteTex = null;\n\tif (op.matteMedia) ({texture: tmpMatteTex} = await drawChildToTexture(args, op.matteMedia, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: op.matteMedia,\n\t\t\trenderId: `${props.renderId}-matte`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tmpInputTex]\n\t\t},\n\t\texclude: [tmpInputTex]\n\t}));\n\tconst { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getRefineEdgeResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, res.handleId ?? `${props.renderId ?? \"refineedge\"}_${suffix}`);\n\tconst decontamView = getSignalView(decontamRes, \"decontam_sig\");\n\tconst radiusView = getSignalView(radiusRes, \"radius_sig\");\n\tconst smoothView = getSignalView(smoothRes, \"smooth_sig\");\n\tconst featherView = getSignalView(featherRes, \"feather_sig\");\n\tconst shiftEdgeView = getSignalView(shiftEdgeRes, \"shiftEdge_sig\");\n\tconst sigBindGroup = ctx.device.createBindGroup({\n\t\tlayout: signalTextureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: decontamView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: radiusView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: smoothView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: featherView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: shiftEdgeView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst matteChannelCode = CHANNEL_MAP[op.matteChannel ?? \"Alpha\"] ?? 0;\n\tconst outputModeCode = OUTPUT_MODE_MAP[op.outputMode ?? \"Composite\"] ?? 0;\n\tconst dummyMatteView = tmpMatteTex ? tmpMatteTex.createView() : tmpInputView;\n\tconst hUniformData = new Float32Array(20);\n\tconst vUniformData = new Float32Array(20);\n\tconst baseUniforms = [\n\t\t0,\n\t\t0,\n\t\tdecontamRes.val,\n\t\tradiusRes.val,\n\t\tsmoothRes.val,\n\t\tfeatherRes.val,\n\t\tshiftEdgeRes.val,\n\t\tmatteChannelCode,\n\t\toutputModeCode,\n\t\ttmpMatteTex ? 1 : 0,\n\t\tdecontamRes.hasStaticSig ? 1 : 0,\n\t\tradiusRes.hasStaticSig ? 1 : 0,\n\t\tsmoothRes.hasStaticSig ? 1 : 0,\n\t\tfeatherRes.hasStaticSig ? 1 : 0,\n\t\tshiftEdgeRes.hasStaticSig ? 1 : 0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\thUniformData.set(baseUniforms);\n\thUniformData[0] = 1;\n\thUniformData[1] = 0;\n\thUniformData[15] = 0;\n\tvUniformData.set(baseUniforms);\n\tvUniformData[0] = 0;\n\tvUniformData[1] = 1;\n\tvUniformData[15] = 1;\n\tconst outTex1 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpInputTex,\n\t\t...tmpMatteTex ? [tmpMatteTex] : [],\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst outTex2 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpInputTex,\n\t\t...tmpMatteTex ? [tmpMatteTex] : [],\n\t\toutTex1,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst hBuffer = ctx.renderer.getTemporaryBuffer(hUniformData);\n\tdrawFullscreenPass(encoder, outTex1.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: hBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyMatteView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tconst vBuffer = ctx.renderer.getTemporaryBuffer(vUniformData);\n\tdrawFullscreenPass(encoder, outTex2.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: vBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: outTex1.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyMatteView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tdrawTextureToTarget(args, outTex2, props.opacity ?? op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { RefineEdgeResultSchema as _, MAX_RADIUS as a, MIN_DECONTAMINATE as c, MIN_SHIFT_EDGE as d, MIN_SMOOTH as f, RefineEdgeOutputModeEnum as g, RefineEdgeNodeConfigSchema as h, MAX_FEATHER as i, MIN_FEATHER as l, REFINE_EDGE_OUTPUT_TYPE_MAP as m, WebGPURenderer as n, MAX_SHIFT_EDGE as o, MatteChannelEnum as p, MAX_DECONTAMINATE as r, MAX_SMOOTH as s, renderers_default as t, MIN_RADIUS as u, refineEdgeConfig as v };\n//# sourceMappingURL=renderers-BAo85yKE.mjs.map"],"mappings":";;;;;;AAMA,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AACvB,MAAM,mBAAmB,EAAE,KAAK;CAC/B;CACA;CACA;CACA;CACA;CACA,CAAC;AACF,MAAM,2BAA2B,EAAE,KAAK;CACvC;CACA;CACA;CACA,CAAC;AACF,MAAM,mBAAmB,eAAe,CAAC,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,QAAQ,GAAG,EAAE;CAC3J,UAAU;CACV,WAAW,CAAC,UAAU,SAAS;CAC/B,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE;CACxF,UAAU;CACV,WAAW,CAAC,UAAU,SAAS;CAC/B,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,UAAU,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE;CACzE,UAAU;CACV,WAAW,CAAC,UAAU,SAAS;CAC/B,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,GAAG,EAAE;CAC5F,UAAU;CACV,WAAW,CAAC,UAAU,SAAS;CAC/B,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,aAAa,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE;CACpF,UAAU;CACV,WAAW,CAAC,UAAU,SAAS;CAC/B,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,gBAAgB,iBAAiB,QAAQ,QAAQ,EAAE;CAC3D,OAAO;CACP,aAAa;CACb,CAAC,CAAC,MAAM,cAAc,yBAAyB,QAAQ,YAAY,EAAE;CACrE,OAAO;CACP,aAAa;CACb,CAAC,CAAC,OAAO;AACV,MAAM,6BAA6B,iBAAiB;AACpD,MAAM,yBAAyB,EAAE,MAAM,CAAC,mBAAmB,kBAAkB,CAAC;AAW9E,MAAM,cAAc;CACnB,OAAO;CACP,WAAW;CACX,KAAK;CACL,OAAO;CACP,MAAM;CACN;AACD,MAAM,kBAAkB;CACvB,WAAW;CACX,WAAW;CACX,mBAAmB;CACnB;AACD,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCvB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuOvB,MAAM,sCAAsC,IAAI,SAAS;AACzD,SAAS,uBAAuB,QAAQ,cAAc;CACrD,MAAM,SAAS,oBAAoB,IAAI,OAAO;AAC9C,KAAI,OAAQ,QAAO;CACnB,MAAM,gBAAgB,wBAAwB,QAAQ,CAAC,UAAU,CAAC;CAClE,MAAM,gBAAgB,eAAe,QAAQ,EAAE;CAC/C,MAAM,sBAAsB,eAAe,QAAQ,EAAE;CACrD,MAAM,MAAM;EACX;EACA;EACA;EACA,UAAU,yBAAyB,QAAQ;GAC1C,QAAQ,OAAO,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;GAC7D,SAAS,OAAO,qBAAqB,EAAE,kBAAkB;IACxD;IACA;IACA;IACA,EAAE,CAAC;GACJ,QAAQ;GACR,CAAC;EACF;AACD,qBAAoB,IAAI,QAAQ,IAAI;AACpC,QAAO;;AAER,MAAM,iBAAiB,OAAO,SAAS;CACtC,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,gBAAgB,CAAC,GAAI;CACpC,MAAM,aAAa,MAAM,cAAc,WAAW;AAClD,KAAI,CAAC,WAAY;AACjB,MAAK,KAAK;CACV,MAAM,QAAQ,MAAM,SAAS;CAC7B,MAAM,MAAM,MAAM,OAAO;CACzB,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,MAAM,gBAAgB,UAAU,aAAa,WAAW,GAAG,WAAW,QAAQ,mBAAmB,GAAG,QAAQ,UAAU,aAAa,UAAU,SAAS;CACtJ,MAAM,cAAc,aAAa,GAAG,6BAA6B,OAAO,GAAG,uBAAuB,GAAG,EAAE,mBAAmB,kBAAkB;CAC5I,MAAM,YAAY,aAAa,GAAG,gBAAgB,OAAO,GAAG,UAAU,EAAE,EAAE,YAAY,WAAW;CACjG,MAAM,YAAY,aAAa,GAAG,gBAAgB,OAAO,GAAG,UAAU,EAAE,EAAE,YAAY,WAAW;CACjG,MAAM,aAAa,aAAa,GAAG,iBAAiB,OAAO,GAAG,WAAW,GAAG,EAAE,aAAa,YAAY;CACvG,MAAM,eAAe,aAAa,GAAG,mBAAmB,OAAO,GAAG,aAAa,EAAE,EAAE,gBAAgB,eAAe;CAClH,MAAM,EAAE,SAAS,aAAa,MAAM,iBAAiB,MAAM,mBAAmB,MAAM,YAAY,EAAE,OAAO;EACxG,GAAG;EACH,cAAc;EACd,UAAU,GAAG,MAAM,SAAS;EAC5B,EAAE,CAAC;CACJ,IAAI,cAAc;AAClB,KAAI,GAAG,WAAY,EAAC,CAAC,SAAS,eAAe,MAAM,mBAAmB,MAAM,GAAG,YAAY;EAC1F,OAAO;GACN,GAAG;GACH,cAAc,GAAG;GACjB,UAAU,GAAG,MAAM,SAAS;GAC5B,iBAAiB,CAAC,GAAG,MAAM,mBAAmB,EAAE,EAAE,YAAY;GAC9D;EACD,SAAS,CAAC,YAAY;EACtB,CAAC;CACF,MAAM,EAAE,UAAU,eAAe,eAAe,wBAAwB,uBAAuB,IAAI,QAAQ,IAAI,SAAS,OAAO;CAC/H,MAAM,UAAU,IAAI,SAAS,aAAa,WAAW,IAAI,OAAO;CAChE,MAAM,EAAE,gBAAgB,oBAAoB,aAAa,OAAO,OAAO,IAAI;CAC3E,MAAM,gBAAgB;EACrB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,MAAM,iBAAiB,KAAK,WAAW,kBAAkB,eAAe,KAAK,IAAI,YAAY,GAAG,MAAM,YAAY,aAAa,GAAG,SAAS;CAC3I,MAAM,eAAe,cAAc,aAAa,eAAe;CAC/D,MAAM,aAAa,cAAc,WAAW,aAAa;CACzD,MAAM,aAAa,cAAc,WAAW,aAAa;CACzD,MAAM,cAAc,cAAc,YAAY,cAAc;CAC5D,MAAM,gBAAgB,cAAc,cAAc,gBAAgB;CAClE,MAAM,eAAe,IAAI,OAAO,gBAAgB;EAC/C,QAAQ;EACR,SAAS;GACR;IACC,SAAS;IACT,UAAU;IACV;GACD;IACC,SAAS;IACT,UAAU;IACV;GACD;IACC,SAAS;IACT,UAAU;IACV;GACD;IACC,SAAS;IACT,UAAU;IACV;GACD;IACC,SAAS;IACT,UAAU;IACV;GACD;IACC,SAAS;IACT,UAAU;IACV;GACD;EACD,CAAC;CACF,MAAM,mBAAmB,YAAY,GAAG,gBAAgB,YAAY;CACpE,MAAM,iBAAiB,gBAAgB,GAAG,cAAc,gBAAgB;CACxE,MAAM,iBAAiB,cAAc,YAAY,YAAY,GAAG;CAChE,MAAM,eAAe,IAAI,aAAa,GAAG;CACzC,MAAM,eAAe,IAAI,aAAa,GAAG;CACzC,MAAM,eAAe;EACpB;EACA;EACA,YAAY;EACZ,UAAU;EACV,UAAU;EACV,WAAW;EACX,aAAa;EACb;EACA;EACA,cAAc,IAAI;EAClB,YAAY,eAAe,IAAI;EAC/B,UAAU,eAAe,IAAI;EAC7B,UAAU,eAAe,IAAI;EAC7B,WAAW,eAAe,IAAI;EAC9B,aAAa,eAAe,IAAI;EAChC;EACA;EACA;EACA;EACA;EACA;AACD,cAAa,IAAI,aAAa;AAC9B,cAAa,KAAK;AAClB,cAAa,KAAK;AAClB,cAAa,MAAM;AACnB,cAAa,IAAI,aAAa;AAC9B,cAAa,KAAK;AAClB,cAAa,KAAK;AAClB,cAAa,MAAM;CACnB,MAAM,UAAU,IAAI,SAAS,oBAAoB,OAAO,QAAQ;EAC/D;EACA,GAAG,cAAc,CAAC,YAAY,GAAG,EAAE;EACnC;EACA,GAAG,MAAM,mBAAmB,EAAE;EAC9B,CAAC;CACF,MAAM,UAAU,IAAI,SAAS,oBAAoB,OAAO,QAAQ;EAC/D;EACA,GAAG,cAAc,CAAC,YAAY,GAAG,EAAE;EACnC;EACA;EACA,GAAG,MAAM,mBAAmB,EAAE;EAC9B,CAAC;CACF,MAAM,UAAU,IAAI,SAAS,mBAAmB,aAAa;AAC7D,oBAAmB,SAAS,QAAQ,YAAY,EAAE,UAAU;EAC3D,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS,CAAC;IACT,SAAS;IACT,UAAU,EAAE,QAAQ,SAAS;IAC7B,CAAC;GACF,CAAC;EACF,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS;IACR;KACC,SAAS;KACT,UAAU;KACV;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;GACD,CAAC;EACF;EACA,CAAC;CACF,MAAM,UAAU,IAAI,SAAS,mBAAmB,aAAa;AAC7D,oBAAmB,SAAS,QAAQ,YAAY,EAAE,UAAU;EAC3D,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS,CAAC;IACT,SAAS;IACT,UAAU,EAAE,QAAQ,SAAS;IAC7B,CAAC;GACF,CAAC;EACF,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS;IACR;KACC,SAAS;KACT,UAAU,QAAQ,YAAY;KAC9B;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;GACD,CAAC;EACF;EACA,CAAC;AACF,qBAAoB,MAAM,SAAS,MAAM,WAAW,GAAG,WAAW,EAAE;;AAKrE,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"renderer-YtRSM2cv.mjs","names":[],"sources":["../../../nodes/node-refine-edge/dist/renderers-BAo85yKE.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { ImageResultSchema, VideoResultSchema, configBuilder, resolveHandleParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, signalTextureView, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst MIN_DECONTAMINATE = 0;\nconst MAX_DECONTAMINATE = 1;\nconst MIN_RADIUS = .5;\nconst MAX_RADIUS = 50;\nconst MIN_SMOOTH = 0;\nconst MAX_SMOOTH = 100;\nconst MIN_FEATHER = 0;\nconst MAX_FEATHER = 50;\nconst MIN_SHIFT_EDGE = -100;\nconst MAX_SHIFT_EDGE = 100;\nconst MatteChannelEnum = z.enum([\n\t\"Alpha\",\n\t\"Luminance\",\n\t\"Red\",\n\t\"Green\",\n\t\"Blue\"\n]);\nconst RefineEdgeOutputModeEnum = z.enum([\n\t\"Composite\",\n\t\"MatteOnly\",\n\t\"DecontaminatedRGB\"\n]);\nconst refineEdgeConfig = configBuilder().field(\"decontaminateAmount\", z.number().multipleOf(.01).min(MIN_DECONTAMINATE).max(MAX_DECONTAMINATE).default(.7), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Decontaminate Colors\",\n\tdescription: \"Amount of edge color spill decontamination/defringing (0.0–1.0).\"\n}).field(\"radius\", z.number().multipleOf(.1).min(MIN_RADIUS).max(MAX_RADIUS).default(2), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Edge Detection Radius (px)\",\n\tdescription: \"Radius in pixels around alpha transitions to refine and decontaminate.\"\n}).field(\"smooth\", z.number().min(MIN_SMOOTH).max(MAX_SMOOTH).default(5), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Smoothness\",\n\tdescription: \"Matte edge smoothing curve intensity (0–100).\"\n}).field(\"feather\", z.number().multipleOf(.1).min(MIN_FEATHER).max(MAX_FEATHER).default(.5), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Feather (px)\",\n\tdescription: \"Sub-pixel gaussian softness along the matte boundary.\"\n}).field(\"shiftEdge\", z.number().min(MIN_SHIFT_EDGE).max(MAX_SHIFT_EDGE).default(0), {\n\tbindable: true,\n\tdataTypes: [\"Number\", \"Signal\"],\n\tlabel: \"Shift Edge (%)\",\n\tdescription: \"Contract (<0) or expand (>0) the edge boundary (-100% to +100%).\"\n}).field(\"matteChannel\", MatteChannelEnum.default(\"Alpha\"), {\n\tlabel: \"Matte Channel\",\n\tdescription: \"Channel to extract matte from (Alpha, Luminance, Red, Green, Blue).\"\n}).field(\"outputMode\", RefineEdgeOutputModeEnum.default(\"Composite\"), {\n\tlabel: \"Output Mode\",\n\tdescription: \"Composite (decontaminated RGB + refined alpha), MatteOnly (grayscale mask), DecontaminatedRGB (clean RGB with full alpha).\"\n}).build();\nconst RefineEdgeNodeConfigSchema = refineEdgeConfig.schema;\nconst RefineEdgeResultSchema = z.union([ImageResultSchema, VideoResultSchema]);\nconst REFINE_EDGE_OUTPUT_TYPE_MAP = {\n\tVideo: \"Video\",\n\tLottie: \"Video\",\n\tGIF: \"GIF\",\n\tImage: \"Image\",\n\tSVG: \"Image\"\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst CHANNEL_MAP = {\n\tAlpha: 0,\n\tLuminance: 1,\n\tRed: 2,\n\tGreen: 3,\n\tBlue: 4\n};\nconst OUTPUT_MODE_MAP = {\n\tComposite: 0,\n\tMatteOnly: 1,\n\tDecontaminatedRGB: 2\n};\nconst WGSL_REFINE_EDGE = `\nstruct RefineEdgeUniforms {\n\tdirX : f32,\n\tdirY : f32,\n\tdecontaminateAmount : f32,\n\tradius : f32,\n\n\tsmoothness : f32,\n\tfeather : f32,\n\tshiftEdge : f32,\n\tmatteChannel : f32,\n\n\toutputMode : f32,\n\thasMatte : f32,\n\thasDecontamSig : f32,\n\thasRadiusSig : f32,\n\n\thasSmoothSig : f32,\n\thasFeatherSig : f32,\n\thasShiftEdgeSig : f32,\n\tisSecondPass : f32,\n\n\tpad0 : f32,\n\tpad1 : f32,\n\tpad2 : f32,\n\tpad3 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : RefineEdgeUniforms;\n\n@group(1) @binding(0) var texInput : texture_2d<f32>;\n@group(1) @binding(1) var texMatte : texture_2d<f32>;\n@group(1) @binding(2) var origTex : texture_2d<f32>;\n@group(1) @binding(3) var samp : sampler;\n\n@group(2) @binding(0) var decontamSigTex : texture_2d<f32>;\n@group(2) @binding(1) var radiusSigTex : texture_2d<f32>;\n@group(2) @binding(2) var smoothSigTex : texture_2d<f32>;\n@group(2) @binding(3) var featherSigTex : texture_2d<f32>;\n@group(2) @binding(4) var shiftEdgeSigTex : texture_2d<f32>;\n@group(2) @binding(5) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn extractChannel(color : vec4<f32>, chCode : f32) -> f32 {\n\tif (chCode < 0.5) {\n\t\t// Alpha\n\t\treturn color.a;\n\t} else if (chCode < 1.5) {\n\t\t// Luminance\n\t\tlet luma = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, luma / color.a);\n\t\t}\n\t\treturn luma;\n\t} else if (chCode < 2.5) {\n\t\t// Red\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.r / color.a);\n\t\t}\n\t\treturn color.r;\n\t} else if (chCode < 3.5) {\n\t\t// Green\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.g / color.a);\n\t\t}\n\t\treturn color.g;\n\t} else {\n\t\t// Blue\n\t\tif (color.a > 1e-4) {\n\t\t\treturn min(1.0, color.b / color.a);\n\t\t}\n\t\treturn color.b;\n\t}\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet dimensions = vec2<f32>(textureDimensions(texInput));\n\tlet texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));\n\n\tvar decontam = u.decontaminateAmount;\n\tif (u.hasDecontamSig > 0.5) {\n\t\tdecontam = clamp(textureSampleLevel(decontamSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 1.0);\n\t}\n\tvar radius = u.radius;\n\tif (u.hasRadiusSig > 0.5) {\n\t\tradius = clamp(textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.5, 50.0);\n\t}\n\tvar smoothVal = u.smoothness;\n\tif (u.hasSmoothSig > 0.5) {\n\t\tsmoothVal = clamp(textureSampleLevel(smoothSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 100.0);\n\t}\n\tvar featherVal = u.feather;\n\tif (u.hasFeatherSig > 0.5) {\n\t\tfeatherVal = clamp(textureSampleLevel(featherSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, 0.0, 50.0);\n\t}\n\tvar shiftEdgeVal = u.shiftEdge;\n\tif (u.hasShiftEdgeSig > 0.5) {\n\t\tshiftEdgeVal = clamp(textureSampleLevel(shiftEdgeSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0);\n\t}\n\n\tlet direction = vec2<f32>(u.dirX, u.dirY);\n\n\t// Combined sigma for smoothing & feathering\n\tlet smoothSigma = max(0.0, smoothVal * 0.15);\n\tlet featherSigma = max(0.0, featherVal);\n\tlet totalSigma = max(0.1, sqrt(smoothSigma * smoothSigma + featherSigma * featherSigma));\n\n\tif (u.isSecondPass <= 0.5) {\n\t\t// =============================================================\n\t\t// PASS 1: Horizontal Pass (Alpha filter + FG color sampling)\n\t\t// =============================================================\n\t\tlet centerInput = textureSampleLevel(texInput, samp, in.uv, 0.0);\n\t\tlet centerMatte = textureSampleLevel(texMatte, samp, in.uv, 0.0);\n\n\t\tvar centerRawAlpha = centerInput.a;\n\t\tif (u.hasMatte > 0.5) {\n\t\t\tcenterRawAlpha = extractChannel(centerMatte, u.matteChannel);\n\t\t}\n\n\t\t// 1. Horizontal Alpha Blur / Filter\n\t\tvar alphaAccum = 0.0;\n\t\tvar alphaWeightSum = 0.0;\n\n\t\tlet stepScale = max(1.0, totalSigma / 15.0);\n\t\tlet effectiveSigma = totalSigma / stepScale;\n\t\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);\n\n\t\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\t\tlet sampleInput = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\t\tvar sAlpha = sampleInput.a;\n\t\t\tif (u.hasMatte > 0.5) {\n\t\t\t\tlet sMatte = textureSampleLevel(texMatte, samp, sampleUv, 0.0);\n\t\t\t\tsAlpha = extractChannel(sMatte, u.matteChannel);\n\t\t\t}\n\n\t\t\tlet dist = f32(i) * stepScale;\n\t\t\tlet weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));\n\t\t\talphaAccum += sAlpha * weight;\n\t\t\talphaWeightSum += weight;\n\t\t}\n\n\t\tlet smoothedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);\n\n\t\t// 2. Horizontal Foreground Color Sampling for Defringing\n\t\tvar fgColorAccum = vec3<f32>(0.0);\n\t\tvar fgWeightSum = 0.0;\n\n\t\tlet rStepScale = max(1.0, radius / 15.0);\n\t\tlet rSampleCount = min(i32(ceil(radius / rStepScale)), 32);\n\n\t\tfor (var i = -rSampleCount; i <= rSampleCount; i++) {\n\t\t\tlet offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;\n\t\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\t\tlet sampleCol = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\t\tvar sampleA = sampleCol.a;\n\t\t\tif (u.hasMatte > 0.5) {\n\t\t\t\tlet sm = textureSampleLevel(texMatte, samp, sampleUv, 0.0);\n\t\t\t\tsampleA = extractChannel(sm, u.matteChannel);\n\t\t\t}\n\n\t\t\tlet sampleRgb = select(sampleCol.rgb, sampleCol.rgb / max(sampleCol.a, 1e-4), sampleCol.a > 1e-4);\n\t\t\tlet spatialDist = f32(i) * rStepScale;\n\t\t\tlet spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));\n\t\t\t// Weight foreground pixels by alpha confidence\n\t\t\tlet fgConfidence = clamp((sampleA - 0.2) / 0.8, 0.0, 1.0);\n\t\t\tlet weight = fgConfidence * spatialWeight;\n\n\t\t\tfgColorAccum += sampleRgb * weight;\n\t\t\tfgWeightSum += weight;\n\t\t}\n\n\t\tlet centerUnpremult = select(centerInput.rgb, centerInput.rgb / max(centerInput.a, 1e-4), centerInput.a > 1e-4);\n\t\tlet fgColor = select(centerUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);\n\n\t\treturn vec4<f32>(fgColor, smoothedAlpha);\n\t}\n\n\t// =============================================================\n\t// PASS 2: Vertical Pass & Final Defringe/Composite\n\t// =============================================================\n\tlet pass1Sample = textureSampleLevel(texInput, samp, in.uv, 0.0);\n\tlet origSample = textureSampleLevel(origTex, samp, in.uv, 0.0);\n\n\tvar rawMatteAlpha = origSample.a;\n\tif (u.hasMatte > 0.5) {\n\t\tlet rawMatteSample = textureSampleLevel(texMatte, samp, in.uv, 0.0);\n\t\trawMatteAlpha = extractChannel(rawMatteSample, u.matteChannel);\n\t}\n\n\t// 1. Vertical Alpha Blur / Filter\n\tvar alphaAccum = 0.0;\n\tvar alphaWeightSum = 0.0;\n\n\tlet stepScale = max(1.0, totalSigma / 15.0);\n\tlet effectiveSigma = totalSigma / stepScale;\n\tlet sampleRadius = min(i32(ceil(3.0 * effectiveSigma)), 32);\n\n\tfor (var i = -sampleRadius; i <= sampleRadius; i++) {\n\t\tlet offset = vec2<f32>(f32(i) * stepScale) * direction * texelSize;\n\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\tlet sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\tlet sAlpha = sPass1.a;\n\n\t\tlet dist = f32(i) * stepScale;\n\t\tlet weight = exp(-0.5 * (dist / totalSigma) * (dist / totalSigma));\n\t\talphaAccum += sAlpha * weight;\n\t\talphaWeightSum += weight;\n\t}\n\n\tvar refinedAlpha = alphaAccum / max(alphaWeightSum, 1e-5);\n\n\t// 2. Shift Edge (Choke < 0 or Expand > 0)\n\tif (abs(shiftEdgeVal) > 0.01) {\n\t\tlet shiftNorm = shiftEdgeVal / 100.0;\n\t\tif (shiftNorm < 0.0) {\n\t\t\t// Contract / Choke\n\t\t\tlet chokeLimit = abs(shiftNorm);\n\t\t\trefinedAlpha = clamp((refinedAlpha - chokeLimit) / max(1.0 - chokeLimit, 1e-4), 0.0, 1.0);\n\t\t} else {\n\t\t\t// Expand / Dilate\n\t\t\trefinedAlpha = clamp(refinedAlpha / max(1.0 - shiftNorm, 1e-4), 0.0, 1.0);\n\t\t}\n\t}\n\n\t// 3. Vertical Foreground Color Sampling for Defringing\n\tvar fgColorAccum = vec3<f32>(0.0);\n\tvar fgWeightSum = 0.0;\n\n\tlet rStepScale = max(1.0, radius / 15.0);\n\tlet rSampleCount = min(i32(ceil(radius / rStepScale)), 32);\n\n\tfor (var i = -rSampleCount; i <= rSampleCount; i++) {\n\t\tlet offset = vec2<f32>(f32(i) * rStepScale) * direction * texelSize;\n\t\tlet sampleUv = clamp(in.uv + offset, vec2<f32>(0.0), vec2<f32>(1.0));\n\t\tlet sPass1 = textureSampleLevel(texInput, samp, sampleUv, 0.0);\n\t\tlet sRgb = sPass1.rgb;\n\t\tlet sA = sPass1.a;\n\n\t\tlet spatialDist = f32(i) * rStepScale;\n\t\tlet spatialWeight = exp(-0.5 * (spatialDist / max(radius, 0.5)) * (spatialDist / max(radius, 0.5)));\n\t\tlet fgConfidence = clamp((sA - 0.2) / 0.8, 0.0, 1.0);\n\t\tlet weight = fgConfidence * spatialWeight;\n\n\t\tfgColorAccum += sRgb * weight;\n\t\tfgWeightSum += weight;\n\t}\n\n\tlet origUnpremult = select(origSample.rgb, origSample.rgb / max(origSample.a, 1e-4), origSample.a > 1e-4);\n\tlet fgColor = select(origUnpremult, fgColorAccum / max(fgWeightSum, 1e-5), fgWeightSum > 1e-4);\n\n\t// Edge zone detection: transitions between foreground and background\n\tlet edgeWeight = clamp(4.0 * rawMatteAlpha * (1.0 - rawMatteAlpha), 0.0, 1.0);\n\tlet decontamFactor = clamp(decontam * max(edgeWeight, (1.0 - refinedAlpha) * 0.8), 0.0, 1.0);\n\n\tlet decontaminatedColor = mix(origUnpremult, fgColor, decontamFactor);\n\n\t// Format Output\n\tlet mode = u.outputMode;\n\tif (mode < 0.5) {\n\t\t// Composite: Decontaminated RGB with refined alpha (premultiplied)\n\t\treturn vec4<f32>(decontaminatedColor * refinedAlpha, refinedAlpha);\n\t} else if (mode < 1.5) {\n\t\t// MatteOnly: Grayscale refined alpha mask\n\t\treturn vec4<f32>(refinedAlpha, refinedAlpha, refinedAlpha, 1.0);\n\t} else {\n\t\t// DecontaminatedRGB: Clean defringed RGB with full alpha\n\t\treturn vec4<f32>(decontaminatedColor, 1.0);\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getRefineEdgeResources(device, targetFormat) {\n\tconst cached = deviceResourceCache.get(device);\n\tif (cached) return cached;\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\tconst textureLayout = texturesLayout(device, 3);\n\tconst signalTextureLayout = texturesLayout(device, 5);\n\tconst res = {\n\t\tuniformLayout,\n\t\ttextureLayout,\n\t\tsignalTextureLayout,\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tmodule: device.createShaderModule({ code: WGSL_REFINE_EDGE }),\n\t\t\tlayouts: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tuniformLayout,\n\t\t\t\ttextureLayout,\n\t\t\t\tsignalTextureLayout\n\t\t\t] }),\n\t\t\tformat: targetFormat\n\t\t})\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nconst WebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"RefineEdge\" || !op) return;\n\tconst childMedia = props.virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst resolveField = (handleId, fallbackVal, clampMin = 0, clampMax = 1e3) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);\n\tconst decontamRes = resolveField(op.decontaminateAmountHandleId, Number(op.decontaminateAmount ?? .7), MIN_DECONTAMINATE, MAX_DECONTAMINATE);\n\tconst radiusRes = resolveField(op.radiusHandleId, Number(op.radius ?? 2), MIN_RADIUS, MAX_RADIUS);\n\tconst smoothRes = resolveField(op.smoothHandleId, Number(op.smooth ?? 5), MIN_SMOOTH, MAX_SMOOTH);\n\tconst featherRes = resolveField(op.featherHandleId, Number(op.feather ?? .5), MIN_FEATHER, MAX_FEATHER);\n\tconst shiftEdgeRes = resolveField(op.shiftEdgeHandleId, Number(op.shiftEdge ?? 0), MIN_SHIFT_EDGE, MAX_SHIFT_EDGE);\n\tconst { texture: tmpInputTex, view: tmpInputView } = await drawChildToTexture(args, childMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\trenderId: `${props.renderId}-input`\n\t} });\n\tlet tmpMatteTex = null;\n\tif (op.matteMedia) ({texture: tmpMatteTex} = await drawChildToTexture(args, op.matteMedia, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: op.matteMedia,\n\t\t\trenderId: `${props.renderId}-matte`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tmpInputTex]\n\t\t},\n\t\texclude: [tmpInputTex]\n\t}));\n\tconst { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getRefineEdgeResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, res.handleId ?? `${props.renderId ?? \"refineedge\"}_${suffix}`);\n\tconst decontamView = getSignalView(decontamRes, \"decontam_sig\");\n\tconst radiusView = getSignalView(radiusRes, \"radius_sig\");\n\tconst smoothView = getSignalView(smoothRes, \"smooth_sig\");\n\tconst featherView = getSignalView(featherRes, \"feather_sig\");\n\tconst shiftEdgeView = getSignalView(shiftEdgeRes, \"shiftEdge_sig\");\n\tconst sigBindGroup = ctx.device.createBindGroup({\n\t\tlayout: signalTextureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: decontamView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: radiusView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: smoothView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: featherView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: shiftEdgeView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst matteChannelCode = CHANNEL_MAP[op.matteChannel ?? \"Alpha\"] ?? 0;\n\tconst outputModeCode = OUTPUT_MODE_MAP[op.outputMode ?? \"Composite\"] ?? 0;\n\tconst dummyMatteView = tmpMatteTex ? tmpMatteTex.createView() : tmpInputView;\n\tconst hUniformData = new Float32Array(20);\n\tconst vUniformData = new Float32Array(20);\n\tconst baseUniforms = [\n\t\t0,\n\t\t0,\n\t\tdecontamRes.val,\n\t\tradiusRes.val,\n\t\tsmoothRes.val,\n\t\tfeatherRes.val,\n\t\tshiftEdgeRes.val,\n\t\tmatteChannelCode,\n\t\toutputModeCode,\n\t\ttmpMatteTex ? 1 : 0,\n\t\tdecontamRes.hasStaticSig ? 1 : 0,\n\t\tradiusRes.hasStaticSig ? 1 : 0,\n\t\tsmoothRes.hasStaticSig ? 1 : 0,\n\t\tfeatherRes.hasStaticSig ? 1 : 0,\n\t\tshiftEdgeRes.hasStaticSig ? 1 : 0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\thUniformData.set(baseUniforms);\n\thUniformData[0] = 1;\n\thUniformData[1] = 0;\n\thUniformData[15] = 0;\n\tvUniformData.set(baseUniforms);\n\tvUniformData[0] = 0;\n\tvUniformData[1] = 1;\n\tvUniformData[15] = 1;\n\tconst outTex1 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpInputTex,\n\t\t...tmpMatteTex ? [tmpMatteTex] : [],\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst outTex2 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpInputTex,\n\t\t...tmpMatteTex ? [tmpMatteTex] : [],\n\t\toutTex1,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst hBuffer = ctx.renderer.getTemporaryBuffer(hUniformData);\n\tdrawFullscreenPass(encoder, outTex1.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: hBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyMatteView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tconst vBuffer = ctx.renderer.getTemporaryBuffer(vUniformData);\n\tdrawFullscreenPass(encoder, outTex2.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: vBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: textureLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: outTex1.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: dummyMatteView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: tmpInputView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t}),\n\t\tsigBindGroup\n\t]);\n\tdrawTextureToTarget(args, outTex2, props.opacity ?? op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer });\n\n//#endregion\nexport { RefineEdgeResultSchema as _, MAX_RADIUS as a, MIN_DECONTAMINATE as c, MIN_SHIFT_EDGE as d, MIN_SMOOTH as f, RefineEdgeOutputModeEnum as g, RefineEdgeNodeConfigSchema as h, MAX_FEATHER as i, MIN_FEATHER as l, REFINE_EDGE_OUTPUT_TYPE_MAP as m, WebGPURenderer as n, MAX_SHIFT_EDGE as o, MatteChannelEnum as p, MAX_DECONTAMINATE as r, MAX_SMOOTH as s, renderers_default as t, MIN_RADIUS as u, refineEdgeConfig as v };\n//# sourceMappingURL=renderers-BAo85yKE.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Ot as getMediaType, in as takeRenderDiagnostics, on as updateClockSignals } from "./dist-fjKpBYkc.mjs";
|
|
2
2
|
import { i as registerWebGPURenderer, t as audioRegistry } from "./renderer-BSitV56h.mjs";
|
|
3
|
-
import { A as ensureDevice, F as getRenderer2D, H as lutStore, I as initHeadlessWebGPU, L as inputStore, W as mediaDecoderCache, et as shaderStore, g as WebGPUAudioProcessor, p as SlugFontCache, rt as textureCache, s as NodeSurfaceProvider, v as clearAllVideoCache, y as clearHeadlessFonts } from "./dist-
|
|
4
|
-
import { i as mixAudioTracks, m as preloadCompositionFonts, r as drawCompositionTree, t as compositionStateStore } from "./dist-
|
|
3
|
+
import { A as ensureDevice, F as getRenderer2D, H as lutStore, I as initHeadlessWebGPU, L as inputStore, W as mediaDecoderCache, et as shaderStore, g as WebGPUAudioProcessor, p as SlugFontCache, rt as textureCache, s as NodeSurfaceProvider, v as clearAllVideoCache, y as clearHeadlessFonts } from "./dist-CturBK2Z.mjs";
|
|
4
|
+
import { i as mixAudioTracks, m as preloadCompositionFonts, r as drawCompositionTree, t as compositionStateStore } from "./dist-CPUIfrtw.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
import { AudioSample, AudioSampleSource, FilePathTarget, Mp3OutputFormat, Mp4OutputFormat, Output, QUALITY_HIGH, QUALITY_LOW, QUALITY_VERY_HIGH, QUALITY_VERY_LOW, VideoSample, VideoSampleSource, WebMOutputFormat } from "mediabunny";
|
|
7
7
|
import fs from "node:fs";
|
|
@@ -242,237 +242,237 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
242
242
|
{
|
|
243
243
|
packageName: "@framefields/node-lut",
|
|
244
244
|
ops: ["ApplyLUT"],
|
|
245
|
-
load: () => import("./renderer-
|
|
245
|
+
load: () => import("./renderer-QyBeWMEL.mjs")
|
|
246
246
|
},
|
|
247
247
|
{
|
|
248
248
|
packageName: "@framefields/node-ascii",
|
|
249
249
|
ops: ["Ascii"],
|
|
250
|
-
load: () => import("./renderer-
|
|
250
|
+
load: () => import("./renderer-ButaUWLr.mjs")
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
253
|
packageName: "@framefields/node-audio-compressor",
|
|
254
254
|
ops: ["AudioCompressor"],
|
|
255
|
-
load: () => import("./renderer-
|
|
255
|
+
load: () => import("./renderer-xjtlyGS1.mjs")
|
|
256
256
|
},
|
|
257
257
|
{
|
|
258
258
|
packageName: "@framefields/node-audio-delay",
|
|
259
259
|
ops: ["AudioDelay"],
|
|
260
|
-
load: () => import("./renderer-
|
|
260
|
+
load: () => import("./renderer-DxvcIgEU.mjs")
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
263
|
packageName: "@framefields/node-audio-fade",
|
|
264
264
|
ops: ["AudioFade"],
|
|
265
|
-
load: () => import("./renderer-
|
|
265
|
+
load: () => import("./renderer-CeHh2lKY.mjs")
|
|
266
266
|
},
|
|
267
267
|
{
|
|
268
268
|
packageName: "@framefields/node-audio-noise-gate",
|
|
269
269
|
ops: ["AudioNoiseGate"],
|
|
270
|
-
load: () => import("./renderer-
|
|
270
|
+
load: () => import("./renderer-CIJGjrt7.mjs")
|
|
271
271
|
},
|
|
272
272
|
{
|
|
273
273
|
packageName: "@framefields/node-audio-parametric-eq",
|
|
274
274
|
ops: ["AudioParametricEq"],
|
|
275
|
-
load: () => import("./renderer-
|
|
275
|
+
load: () => import("./renderer-wnFCaw7j.mjs")
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
packageName: "@framefields/node-audio-reverb",
|
|
279
279
|
ops: ["AudioReverb"],
|
|
280
|
-
load: () => import("./renderer-
|
|
280
|
+
load: () => import("./renderer-CtIM0LWe.mjs")
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
283
|
packageName: "@framefields/node-audio-signal-extractor",
|
|
284
284
|
ops: ["AudioSignalExtractor"],
|
|
285
|
-
load: () => import("./renderer-
|
|
285
|
+
load: () => import("./renderer-D2woU27o.mjs")
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
packageName: "@framefields/node-blur",
|
|
289
289
|
ops: ["Blur"],
|
|
290
|
-
load: () => import("./renderer-
|
|
290
|
+
load: () => import("./renderer-CyqgTsnx.mjs")
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
293
|
packageName: "@framefields/node-camera-parallax-3d",
|
|
294
294
|
ops: ["CameraParallax3D"],
|
|
295
|
-
load: () => import("./renderer-
|
|
295
|
+
load: () => import("./renderer-_Fh9IBlE.mjs")
|
|
296
296
|
},
|
|
297
297
|
{
|
|
298
298
|
packageName: "@framefields/node-canvas-generator",
|
|
299
299
|
ops: ["CanvasGenerator"],
|
|
300
|
-
load: () => import("./renderer-
|
|
300
|
+
load: () => import("./renderer-DJWQWN1E.mjs")
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
303
|
packageName: "@framefields/node-channel-merger",
|
|
304
304
|
ops: ["ChannelMerger"],
|
|
305
|
-
load: () => import("./renderer-
|
|
305
|
+
load: () => import("./renderer-Mdyv_W8K.mjs")
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
packageName: "@framefields/node-channel-splitter",
|
|
309
309
|
ops: ["ChannelSplitter"],
|
|
310
|
-
load: () => import("./renderer-
|
|
310
|
+
load: () => import("./renderer-z3YOOR3k.mjs")
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
packageName: "@framefields/node-color-balance",
|
|
314
314
|
ops: ["ColorBalance"],
|
|
315
|
-
load: () => import("./renderer-
|
|
315
|
+
load: () => import("./renderer-BlafvK-L.mjs")
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
packageName: "@framefields/node-colorkey",
|
|
319
319
|
ops: ["ColorKey"],
|
|
320
|
-
load: () => import("./renderer-
|
|
320
|
+
load: () => import("./renderer-D2QG9yIW.mjs")
|
|
321
321
|
},
|
|
322
322
|
{
|
|
323
323
|
packageName: "@framefields/node-compositor",
|
|
324
324
|
ops: ["Compositor"],
|
|
325
|
-
load: () => import("./renderer-
|
|
325
|
+
load: () => import("./renderer-BmWH4dK1.mjs")
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
packageName: "@framefields/node-contour",
|
|
329
329
|
ops: ["Contour"],
|
|
330
|
-
load: () => import("./renderer
|
|
330
|
+
load: () => import("./renderer--S2cNYXS.mjs")
|
|
331
331
|
},
|
|
332
332
|
{
|
|
333
333
|
packageName: "@framefields/node-corner-pin",
|
|
334
334
|
ops: ["CornerPin"],
|
|
335
|
-
load: () => import("./renderer-
|
|
335
|
+
load: () => import("./renderer-DeW0KNQV.mjs")
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
packageName: "@framefields/node-crop",
|
|
339
339
|
ops: ["Crop"],
|
|
340
|
-
load: () => import("./renderer-
|
|
340
|
+
load: () => import("./renderer-BUxvuC5A.mjs")
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
packageName: "@framefields/node-crt",
|
|
344
344
|
ops: ["CRT"],
|
|
345
|
-
load: () => import("./renderer-
|
|
345
|
+
load: () => import("./renderer-DS64UaYK.mjs")
|
|
346
346
|
},
|
|
347
347
|
{
|
|
348
348
|
packageName: "@framefields/node-curves",
|
|
349
349
|
ops: ["Curves"],
|
|
350
|
-
load: () => import("./renderer-
|
|
350
|
+
load: () => import("./renderer-DsVSVFkl.mjs")
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
packageName: "@framefields/node-datamosh",
|
|
354
354
|
ops: ["Datamosh"],
|
|
355
|
-
load: () => import("./renderer-
|
|
355
|
+
load: () => import("./renderer-D8tdGi2P.mjs")
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
packageName: "@framefields/node-deflicker",
|
|
359
359
|
ops: ["TemporalDeflicker", "Deflicker"],
|
|
360
|
-
load: () => import("./renderer-
|
|
360
|
+
load: () => import("./renderer-APrj6tdP.mjs")
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
packageName: "@framefields/node-displacement-map",
|
|
364
364
|
ops: ["DisplacementMap"],
|
|
365
|
-
load: () => import("./renderer-
|
|
365
|
+
load: () => import("./renderer-BF8wlbN1.mjs")
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
packageName: "@framefields/node-dither",
|
|
369
369
|
ops: ["Dither"],
|
|
370
|
-
load: () => import("./renderer-
|
|
370
|
+
load: () => import("./renderer-BXCZev4l.mjs")
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
packageName: "@framefields/node-extract-frame",
|
|
374
374
|
ops: ["ExtractFrame"],
|
|
375
|
-
load: () => import("./renderer-
|
|
375
|
+
load: () => import("./renderer-GlyeFl5R.mjs")
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
packageName: "@framefields/node-extract-lut",
|
|
379
379
|
ops: ["ExtractLUT"],
|
|
380
|
-
load: () => import("./renderer-
|
|
380
|
+
load: () => import("./renderer-Ch1rv1XP.mjs")
|
|
381
381
|
},
|
|
382
382
|
{
|
|
383
383
|
packageName: "@framefields/node-film-grain",
|
|
384
384
|
ops: ["FilmGrain"],
|
|
385
|
-
load: () => import("./renderer-
|
|
385
|
+
load: () => import("./renderer-Cc3INn7w.mjs")
|
|
386
386
|
},
|
|
387
387
|
{
|
|
388
388
|
packageName: "@framefields/node-flip",
|
|
389
389
|
ops: ["Flip"],
|
|
390
|
-
load: () => import("./renderer-
|
|
390
|
+
load: () => import("./renderer-DIjxOQFi.mjs")
|
|
391
391
|
},
|
|
392
392
|
{
|
|
393
393
|
packageName: "@framefields/node-gooey",
|
|
394
394
|
ops: ["Gooey"],
|
|
395
|
-
load: () => import("./renderer-
|
|
395
|
+
load: () => import("./renderer-F410V727.mjs")
|
|
396
396
|
},
|
|
397
397
|
{
|
|
398
398
|
packageName: "@framefields/node-gradient-map",
|
|
399
399
|
ops: ["GradientMap"],
|
|
400
|
-
load: () => import("./renderer-
|
|
400
|
+
load: () => import("./renderer-DvoPplvC.mjs")
|
|
401
401
|
},
|
|
402
402
|
{
|
|
403
403
|
packageName: "@framefields/node-halftone-screen",
|
|
404
404
|
ops: ["HalftoneScreen"],
|
|
405
|
-
load: () => import("./renderer-
|
|
405
|
+
load: () => import("./renderer-BYOsmJ8F.mjs")
|
|
406
406
|
},
|
|
407
407
|
{
|
|
408
408
|
packageName: "@framefields/node-high-pass",
|
|
409
409
|
ops: ["HighPass"],
|
|
410
|
-
load: () => import("./renderer-
|
|
410
|
+
load: () => import("./renderer-Cor66Y2X.mjs")
|
|
411
411
|
},
|
|
412
412
|
{
|
|
413
413
|
packageName: "@framefields/node-iridescence",
|
|
414
414
|
ops: ["Iridescence"],
|
|
415
|
-
load: () => import("./renderer-
|
|
415
|
+
load: () => import("./renderer-BI1nmIqA.mjs")
|
|
416
416
|
},
|
|
417
417
|
{
|
|
418
418
|
packageName: "@framefields/node-kaleidoscope",
|
|
419
419
|
ops: ["Kaleidoscope"],
|
|
420
|
-
load: () => import("./renderer-
|
|
420
|
+
load: () => import("./renderer-CczmOPAO.mjs")
|
|
421
421
|
},
|
|
422
422
|
{
|
|
423
423
|
packageName: "@framefields/node-kenburns",
|
|
424
424
|
ops: ["KenBurns"],
|
|
425
|
-
load: () => import("./renderer-
|
|
425
|
+
load: () => import("./renderer-Bp7LqSTt.mjs")
|
|
426
426
|
},
|
|
427
427
|
{
|
|
428
428
|
packageName: "@framefields/node-layer-style",
|
|
429
429
|
ops: ["LayerStyle"],
|
|
430
|
-
load: () => import("./renderer-
|
|
430
|
+
load: () => import("./renderer-puLncHft.mjs")
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
433
|
packageName: "@framefields/node-levels",
|
|
434
434
|
ops: ["Levels"],
|
|
435
|
-
load: () => import("./renderer-
|
|
435
|
+
load: () => import("./renderer-CTJ0gHPS.mjs")
|
|
436
436
|
},
|
|
437
437
|
{
|
|
438
438
|
packageName: "@framefields/node-liquify",
|
|
439
439
|
ops: ["Liquify"],
|
|
440
|
-
load: () => import("./renderer-
|
|
440
|
+
load: () => import("./renderer-CD0amH_Q.mjs")
|
|
441
441
|
},
|
|
442
442
|
{
|
|
443
443
|
packageName: "@framefields/node-mask-math",
|
|
444
444
|
ops: ["MaskMath"],
|
|
445
|
-
load: () => import("./renderer-
|
|
445
|
+
load: () => import("./renderer-CNFTl94b.mjs")
|
|
446
446
|
},
|
|
447
447
|
{
|
|
448
448
|
packageName: "@framefields/node-mesh-warp",
|
|
449
449
|
ops: ["MeshWarp"],
|
|
450
|
-
load: () => import("./renderer-
|
|
450
|
+
load: () => import("./renderer-F0MKqmol.mjs")
|
|
451
451
|
},
|
|
452
452
|
{
|
|
453
453
|
packageName: "@framefields/node-modulate",
|
|
454
454
|
ops: ["Modulate"],
|
|
455
|
-
load: () => import("./renderer-
|
|
455
|
+
load: () => import("./renderer-6D8M4DRu.mjs")
|
|
456
456
|
},
|
|
457
457
|
{
|
|
458
458
|
packageName: "@framefields/node-noise-generator",
|
|
459
459
|
ops: ["NoiseGenerator"],
|
|
460
|
-
load: () => import("./renderer-
|
|
460
|
+
load: () => import("./renderer-ktpusVT2.mjs")
|
|
461
461
|
},
|
|
462
462
|
{
|
|
463
463
|
packageName: "@framefields/node-op-art",
|
|
464
464
|
ops: ["OpArt"],
|
|
465
|
-
load: () => import("./renderer-
|
|
465
|
+
load: () => import("./renderer-BRWpn3dT.mjs")
|
|
466
466
|
},
|
|
467
467
|
{
|
|
468
468
|
packageName: "@framefields/node-paint",
|
|
469
469
|
ops: ["Paint"],
|
|
470
|
-
load: () => import("./renderer-
|
|
470
|
+
load: () => import("./renderer-CiuOB-Md.mjs")
|
|
471
471
|
},
|
|
472
472
|
{
|
|
473
473
|
packageName: "@framefields/node-painterly",
|
|
474
474
|
ops: ["Painterly"],
|
|
475
|
-
load: () => import("./renderer-
|
|
475
|
+
load: () => import("./renderer-ITtBRR4o.mjs")
|
|
476
476
|
},
|
|
477
477
|
{
|
|
478
478
|
packageName: "@framefields/node-particles",
|
|
@@ -482,67 +482,67 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
482
482
|
{
|
|
483
483
|
packageName: "@framefields/node-patch-heal",
|
|
484
484
|
ops: ["PatchHeal"],
|
|
485
|
-
load: () => import("./renderer-
|
|
485
|
+
load: () => import("./renderer-D90PpIKG.mjs")
|
|
486
486
|
},
|
|
487
487
|
{
|
|
488
488
|
packageName: "@framefields/node-pixelate",
|
|
489
489
|
ops: ["Pixelate"],
|
|
490
|
-
load: () => import("./renderer-
|
|
490
|
+
load: () => import("./renderer-Dw1e5phO.mjs")
|
|
491
491
|
},
|
|
492
492
|
{
|
|
493
493
|
packageName: "@framefields/node-posterize",
|
|
494
494
|
ops: ["Posterize"],
|
|
495
|
-
load: () => import("./renderer-
|
|
495
|
+
load: () => import("./renderer-Fm2brScz.mjs")
|
|
496
496
|
},
|
|
497
497
|
{
|
|
498
498
|
packageName: "@framefields/node-procedural-vfx",
|
|
499
499
|
ops: ["ProceduralVFX"],
|
|
500
|
-
load: () => import("./renderer-
|
|
500
|
+
load: () => import("./renderer-DqlvbOUt.mjs")
|
|
501
501
|
},
|
|
502
502
|
{
|
|
503
503
|
packageName: "@framefields/node-refine-edge",
|
|
504
504
|
ops: ["RefineEdge"],
|
|
505
|
-
load: () => import("./renderer-
|
|
505
|
+
load: () => import("./renderer-1hypa-l7.mjs")
|
|
506
506
|
},
|
|
507
507
|
{
|
|
508
508
|
packageName: "@framefields/node-refraction-caustics",
|
|
509
509
|
ops: ["RefractionCaustics3D"],
|
|
510
|
-
load: () => import("./renderer
|
|
510
|
+
load: () => import("./renderer--Da6pAJ4.mjs")
|
|
511
511
|
},
|
|
512
512
|
{
|
|
513
513
|
packageName: "@framefields/node-relight-3d",
|
|
514
514
|
ops: ["Relight3D"],
|
|
515
|
-
load: () => import("./renderer-
|
|
515
|
+
load: () => import("./renderer-hSh5IrDp.mjs")
|
|
516
516
|
},
|
|
517
517
|
{
|
|
518
518
|
packageName: "@framefields/node-resizer-scaler",
|
|
519
519
|
ops: ["ResizerScaler"],
|
|
520
|
-
load: () => import("./renderer-
|
|
520
|
+
load: () => import("./renderer-DmOewVsB.mjs")
|
|
521
521
|
},
|
|
522
522
|
{
|
|
523
523
|
packageName: "@framefields/node-rgb-split",
|
|
524
524
|
ops: ["RGBSplit"],
|
|
525
|
-
load: () => import("./renderer-
|
|
525
|
+
load: () => import("./renderer-BaOC1Pd1.mjs")
|
|
526
526
|
},
|
|
527
527
|
{
|
|
528
528
|
packageName: "@framefields/node-rotate",
|
|
529
529
|
ops: ["Rotate"],
|
|
530
|
-
load: () => import("./renderer-
|
|
530
|
+
load: () => import("./renderer-CfjwkQP4.mjs")
|
|
531
531
|
},
|
|
532
532
|
{
|
|
533
533
|
packageName: "@framefields/node-selective-color",
|
|
534
534
|
ops: ["SelectiveColor"],
|
|
535
|
-
load: () => import("./renderer-
|
|
535
|
+
load: () => import("./renderer-BSwn6KmG.mjs")
|
|
536
536
|
},
|
|
537
537
|
{
|
|
538
538
|
packageName: "@framefields/node-shadows-highlights",
|
|
539
539
|
ops: ["ShadowsHighlights"],
|
|
540
|
-
load: () => import("./renderer-
|
|
540
|
+
load: () => import("./renderer-DAhDiQQY.mjs")
|
|
541
541
|
},
|
|
542
542
|
{
|
|
543
543
|
packageName: "@framefields/node-shape-generator",
|
|
544
544
|
ops: ["ShapeGenerator"],
|
|
545
|
-
load: () => import("./renderer-
|
|
545
|
+
load: () => import("./renderer-BFHgl-0f.mjs")
|
|
546
546
|
},
|
|
547
547
|
{
|
|
548
548
|
packageName: "@framefields/node-signal-gate",
|
|
@@ -552,32 +552,32 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
552
552
|
{
|
|
553
553
|
packageName: "@framefields/node-stereo-panning",
|
|
554
554
|
ops: ["StereoPanning"],
|
|
555
|
-
load: () => import("./renderer-
|
|
555
|
+
load: () => import("./renderer-OkbovcAc.mjs")
|
|
556
556
|
},
|
|
557
557
|
{
|
|
558
558
|
packageName: "@framefields/node-tile-offset",
|
|
559
559
|
ops: ["TileOffset"],
|
|
560
|
-
load: () => import("./renderer-
|
|
560
|
+
load: () => import("./renderer-DRzalGhU.mjs")
|
|
561
561
|
},
|
|
562
562
|
{
|
|
563
563
|
packageName: "@framefields/node-toon",
|
|
564
564
|
ops: ["Toon"],
|
|
565
|
-
load: () => import("./renderer-
|
|
565
|
+
load: () => import("./renderer-B6c_Rk_2.mjs")
|
|
566
566
|
},
|
|
567
567
|
{
|
|
568
568
|
packageName: "@framefields/node-trails",
|
|
569
569
|
ops: ["Trails"],
|
|
570
|
-
load: () => import("./renderer-
|
|
570
|
+
load: () => import("./renderer-DjPC9l3w.mjs")
|
|
571
571
|
},
|
|
572
572
|
{
|
|
573
573
|
packageName: "@framefields/node-unsharp-mask",
|
|
574
574
|
ops: ["UnsharpMask"],
|
|
575
|
-
load: () => import("./renderer-
|
|
575
|
+
load: () => import("./renderer-DY6S1jWp.mjs")
|
|
576
576
|
},
|
|
577
577
|
{
|
|
578
578
|
packageName: "@framefields/node-vignette",
|
|
579
579
|
ops: ["Vignette"],
|
|
580
|
-
load: () => import("./renderer-
|
|
580
|
+
load: () => import("./renderer-BOUcMCJB.mjs")
|
|
581
581
|
},
|
|
582
582
|
{
|
|
583
583
|
packageName: "@framefields/node-vision",
|
|
@@ -934,7 +934,7 @@ const bootstrapMediabunny = () => {
|
|
|
934
934
|
};
|
|
935
935
|
|
|
936
936
|
//#endregion
|
|
937
|
-
//#region ../renderer/dist/headless-webgpu-renderer-
|
|
937
|
+
//#region ../renderer/dist/headless-webgpu-renderer-1QAxgoPn.mjs
|
|
938
938
|
const DEFAULTS = {
|
|
939
939
|
blackPixelThreshold: .1,
|
|
940
940
|
blackFrameRatio: .98,
|
|
@@ -1561,6 +1561,18 @@ var RenderSemaphore = class {
|
|
|
1561
1561
|
}
|
|
1562
1562
|
};
|
|
1563
1563
|
const renderSemaphore = new RenderSemaphore(MAX_CONCURRENT_RENDERS);
|
|
1564
|
+
/**
|
|
1565
|
+
* Ids for still renders without a caller id. Media caches (video decoders,
|
|
1566
|
+
* last-good frames) are keyed by render id, so a fresh id per still would
|
|
1567
|
+
* open a new decoder for every frame of a frame-by-frame export. Stills
|
|
1568
|
+
* borrow an idle id instead: consecutive stills reuse it (and its decoders);
|
|
1569
|
+
* concurrent stills get distinct ones.
|
|
1570
|
+
*/
|
|
1571
|
+
const idleStillIds = [];
|
|
1572
|
+
const takeStillId = () => idleStillIds.pop() ?? `img-${randomUUID()}`;
|
|
1573
|
+
const returnStillId = (id) => {
|
|
1574
|
+
idleStillIds.push(id);
|
|
1575
|
+
};
|
|
1564
1576
|
function toEvenDimension(n) {
|
|
1565
1577
|
const v = Math.round(n);
|
|
1566
1578
|
return v % 2 === 0 ? v : v + 1;
|
|
@@ -1690,7 +1702,8 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
1690
1702
|
const width = toEvenDimension(virtualMedia.metadata.width ?? 0);
|
|
1691
1703
|
const height = toEvenDimension(virtualMedia.metadata.height ?? 0);
|
|
1692
1704
|
if (!width || !height) throw new Error(`Invalid dimensions: ${width}x${height}`);
|
|
1693
|
-
const
|
|
1705
|
+
const pooledId = options.renderId ? void 0 : takeStillId();
|
|
1706
|
+
const renderId = options.renderId ?? pooledId;
|
|
1694
1707
|
rendererLogger.debug({
|
|
1695
1708
|
renderId,
|
|
1696
1709
|
frame,
|
|
@@ -1771,6 +1784,10 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
1771
1784
|
try {
|
|
1772
1785
|
shaderStore.clear(renderId);
|
|
1773
1786
|
} catch {}
|
|
1787
|
+
try {
|
|
1788
|
+
mediaDecoderCache.tick();
|
|
1789
|
+
} catch {}
|
|
1790
|
+
if (pooledId) returnStillId(pooledId);
|
|
1774
1791
|
if (surface) nodeSurfacePool.release(device, surface);
|
|
1775
1792
|
try {
|
|
1776
1793
|
textureCache.destroy();
|
|
@@ -1893,7 +1910,7 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
1893
1910
|
lutSub();
|
|
1894
1911
|
} catch {}
|
|
1895
1912
|
try {
|
|
1896
|
-
mediaDecoderCache.
|
|
1913
|
+
mediaDecoderCache.clearNode(renderId);
|
|
1897
1914
|
clearAllVideoCache();
|
|
1898
1915
|
} catch {}
|
|
1899
1916
|
try {
|
|
@@ -2109,6 +2126,7 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
2109
2126
|
}
|
|
2110
2127
|
compositionStateStore.setState(renderId, i, fps, true);
|
|
2111
2128
|
updateClockSignals(i, fps, durationMs);
|
|
2129
|
+
mediaDecoderCache.tick();
|
|
2112
2130
|
const encoder = device.createCommandEncoder();
|
|
2113
2131
|
const targetView = surface.getCurrentTextureView();
|
|
2114
2132
|
const targetTexture = surface.getCurrentTexture();
|
|
@@ -2227,7 +2245,7 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
2227
2245
|
surface?.destroy();
|
|
2228
2246
|
} catch {}
|
|
2229
2247
|
try {
|
|
2230
|
-
mediaDecoderCache.
|
|
2248
|
+
mediaDecoderCache.clearNode(renderId);
|
|
2231
2249
|
} catch {}
|
|
2232
2250
|
try {
|
|
2233
2251
|
clearAllVideoCache();
|
|
@@ -2443,4 +2461,4 @@ async function renderFrameGrid(target, options = {}) {
|
|
|
2443
2461
|
|
|
2444
2462
|
//#endregion
|
|
2445
2463
|
export { HeadlessMediaRenderer as a, renderSemaphore as c, resetRenderCaches as i, renderFrameGrid as n, HeadlessWebGPURenderer as o, resolveSamplePoints as r, formatQaReport as s, computeGridLayout as t };
|
|
2446
|
-
//# sourceMappingURL=renderer-
|
|
2464
|
+
//# sourceMappingURL=renderer-_-MCpvGq.mjs.map
|