framefields 2.4.2 → 2.5.0
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 +26 -1
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-DJeVoE8b.mjs → audio-BluXgSeG.mjs} +1 -1
- package/dist/{audio-DJeVoE8b.mjs.map → audio-BluXgSeG.mjs.map} +1 -1
- package/dist/{audio-DHuEMOtQ.d.mts → audio-C1A4N3Wh.d.mts} +3 -3
- package/dist/{audio-DHuEMOtQ.d.mts.map → audio-C1A4N3Wh.d.mts.map} +1 -1
- package/dist/{audio-Bb31xJuX.mjs → audio-CMHpfOoS.mjs} +4 -4
- package/dist/{audio-Bb31xJuX.mjs.map → audio-CMHpfOoS.mjs.map} +1 -1
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +221 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/components/index.d.mts +12 -0
- package/dist/components/index.mjs +49 -0
- package/dist/{dist-CspOG4V1.mjs → dist-BBUrGwqd.mjs} +24 -3
- package/dist/{dist-CspOG4V1.mjs.map → dist-BBUrGwqd.mjs.map} +1 -1
- package/dist/{dist-SB9qfAko.mjs → dist-CQZ5_60A.mjs} +2 -2
- package/dist/{dist-SB9qfAko.mjs.map → dist-CQZ5_60A.mjs.map} +1 -1
- package/dist/{dist-0QGroRYZ.mjs → dist-C_SMBmHr.mjs} +1 -1
- package/dist/{dist-0QGroRYZ.mjs.map → dist-C_SMBmHr.mjs.map} +1 -1
- package/dist/{dist-ClyC_d66.mjs → dist-DFeF-ygz.mjs} +117 -40
- package/dist/dist-DFeF-ygz.mjs.map +1 -0
- package/dist/{dist-CxGfrigI.mjs → dist-QMVy31gR.mjs} +23 -4
- package/dist/dist-QMVy31gR.mjs.map +1 -0
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-BOk_2kzM.mjs → effects-mRe-rLte.mjs} +71 -3
- package/dist/effects-mRe-rLte.mjs.map +1 -0
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-CsMDfqv9.mjs → fonts-wI3CUYHM.mjs} +2 -2
- package/dist/{fonts-CsMDfqv9.mjs.map → fonts-wI3CUYHM.mjs.map} +1 -1
- package/dist/{gpu-DtT5I4ME.mjs → gpu-I5fdrflL.mjs} +2 -2
- package/dist/{gpu-DtT5I4ME.mjs.map → gpu-I5fdrflL.mjs.map} +1 -1
- package/dist/{index-BTPLbjt4.d.mts → index-B-KVpJMb.d.mts} +2 -2
- package/dist/{index-BTPLbjt4.d.mts.map → index-B-KVpJMb.d.mts.map} +1 -1
- package/dist/index-BJe_GEyj.d.mts +5968 -0
- package/dist/index-BJe_GEyj.d.mts.map +1 -0
- package/dist/{index-D-l-yCv6.d.mts → index-BpdVOlsV.d.mts} +3 -3
- package/dist/{index-D-l-yCv6.d.mts.map → index-BpdVOlsV.d.mts.map} +1 -1
- package/dist/index-C2f4Hm-p.d.mts +89 -0
- package/dist/index-C2f4Hm-p.d.mts.map +1 -0
- package/dist/{index-B-55dXDu.d.mts → index-CalU-mpZ.d.mts} +1 -1
- package/dist/{index-B-55dXDu.d.mts.map → index-CalU-mpZ.d.mts.map} +1 -1
- package/dist/{index-B2Xesdug.d.mts → index-D6-lH1Mx.d.mts} +477 -327
- package/dist/index-D6-lH1Mx.d.mts.map +1 -0
- package/dist/{index-B3-gwjK6.d.mts → index-DNKM3to5.d.mts} +3 -3
- package/dist/{index-B3-gwjK6.d.mts.map → index-DNKM3to5.d.mts.map} +1 -1
- package/dist/{index-DujpgUUq.d.mts → index-fymoeGNW.d.mts} +245 -152
- package/dist/index-fymoeGNW.d.mts.map +1 -0
- package/dist/index.d.mts +13 -4593
- package/dist/index.mjs +59 -6654
- package/dist/preview/index.d.mts +4 -90
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-DyGw2b3_.mjs → preview--DEgW67P.mjs} +3 -3
- package/dist/{preview-DyGw2b3_.mjs.map → preview--DEgW67P.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-FHKBALVI.mjs → chunk-24H3QVYB.mjs} +1 -1
- package/dist/preview-engine/{chunk-SWXVITCQ.mjs → chunk-25T3M6MI.mjs} +1 -1
- package/dist/preview-engine/chunk-2AV7HRRL.mjs +174 -0
- package/dist/preview-engine/{chunk-HNNIVJ2K.mjs → chunk-4EOS6ZWW.mjs} +1 -1
- package/dist/preview-engine/{chunk-67SSYK7D.mjs → chunk-4UI3S3UG.mjs} +1 -1
- package/dist/preview-engine/{chunk-LLDIDE5Q.mjs → chunk-5N3GW3NE.mjs} +1 -1
- package/dist/preview-engine/{chunk-KAQUNOVB.mjs → chunk-5P764TTF.mjs} +1 -1
- package/dist/preview-engine/{chunk-WJJIISQJ.mjs → chunk-7BUKVFWB.mjs} +1 -1
- package/dist/preview-engine/{chunk-HUKAC5MJ.mjs → chunk-7EHUT5A3.mjs} +1 -1
- package/dist/preview-engine/{chunk-34ACEGNW.mjs → chunk-7HTTYP6T.mjs} +1 -1
- package/dist/preview-engine/{chunk-6K7US2WD.mjs → chunk-7JYMNGNK.mjs} +1 -1
- package/dist/preview-engine/{chunk-NRAZV5OA.mjs → chunk-A5OUYV3I.mjs} +1 -1
- package/dist/preview-engine/{chunk-VONDRBA2.mjs → chunk-AJLPRIXB.mjs} +1 -1
- package/dist/preview-engine/{chunk-HDGFNBYK.mjs → chunk-ANZDLSSM.mjs} +1 -1
- package/dist/preview-engine/{chunk-FFMPC7QA.mjs → chunk-C2TA65CH.mjs} +1 -1
- package/dist/preview-engine/{chunk-7QJUC6YY.mjs → chunk-CBQOJAIS.mjs} +14 -14
- package/dist/preview-engine/{chunk-GMGGDADT.mjs → chunk-CEIOI4HO.mjs} +1 -1
- package/dist/preview-engine/{chunk-RHRMEBNK.mjs → chunk-DKXKOUQR.mjs} +1 -1
- package/dist/preview-engine/chunk-DPIED3EG.mjs +1 -0
- package/dist/preview-engine/{chunk-QJZKIY4H.mjs → chunk-ENS4KUJV.mjs} +1 -1
- package/dist/preview-engine/{chunk-Z6UKUHPU.mjs → chunk-HXHP3UHZ.mjs} +1 -1
- package/dist/preview-engine/chunk-I6E3AKLS.mjs +1 -0
- package/dist/preview-engine/{chunk-2DDBSI75.mjs → chunk-ILKBHDFB.mjs} +1 -1
- package/dist/preview-engine/{chunk-O6NRIXS5.mjs → chunk-JMOJKT5W.mjs} +1 -1
- package/dist/preview-engine/{chunk-PZF6T7DM.mjs → chunk-KKBJ7X3T.mjs} +1 -1
- package/dist/preview-engine/{chunk-NNQUIVTE.mjs → chunk-KRVXRP5F.mjs} +1 -1
- package/dist/preview-engine/{chunk-FLPSWDX4.mjs → chunk-MJN3LOZ7.mjs} +1 -1
- package/dist/preview-engine/{chunk-GQLZXCW3.mjs → chunk-MLW6Y4RN.mjs} +1 -1
- package/dist/preview-engine/{chunk-KT35IPCF.mjs → chunk-MRDJNDYV.mjs} +1 -1
- package/dist/preview-engine/{chunk-RKVB47IA.mjs → chunk-MZAAJXUL.mjs} +1 -1
- package/dist/preview-engine/{chunk-FFGBUS76.mjs → chunk-NB55FW7D.mjs} +1 -1
- package/dist/preview-engine/{chunk-JX22B2FS.mjs → chunk-NG5WSR3A.mjs} +1 -1
- package/dist/preview-engine/{chunk-XOEEGC4Z.mjs → chunk-NVTPJUNG.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZKPQGQE3.mjs → chunk-NXKXOSE6.mjs} +1 -1
- package/dist/preview-engine/{chunk-WCZ5DKZ4.mjs → chunk-NYEDWUFS.mjs} +1 -1
- package/dist/preview-engine/{chunk-WACWOKEP.mjs → chunk-O6LGKH4S.mjs} +1 -1
- package/dist/preview-engine/chunk-OLLY3Q7M.mjs +1 -0
- package/dist/preview-engine/{chunk-A5OVKZ52.mjs → chunk-OOJAQBS3.mjs} +1 -1
- package/dist/preview-engine/{chunk-6AEU4DC7.mjs → chunk-PJN7DD55.mjs} +3 -3
- package/dist/preview-engine/{chunk-R26SY5D4.mjs → chunk-QCUGWPYP.mjs} +1 -1
- package/dist/preview-engine/{chunk-LK3T65RB.mjs → chunk-QQJPPGH5.mjs} +1 -1
- package/dist/preview-engine/{chunk-3ACCCPBN.mjs → chunk-QVUT3QNF.mjs} +1 -1
- package/dist/preview-engine/chunk-RNFYEZLL.mjs +1 -0
- package/dist/preview-engine/{chunk-GNG4YH2W.mjs → chunk-TA5OBYRR.mjs} +1 -1
- package/dist/preview-engine/{chunk-NQZKBFC6.mjs → chunk-V6DAD4S4.mjs} +14 -14
- package/dist/preview-engine/{chunk-5RQHNB6Y.mjs → chunk-VRNN6H6Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-C6Z7H2RZ.mjs → chunk-VTE3IISK.mjs} +1 -1
- package/dist/preview-engine/{chunk-RDP6QROU.mjs → chunk-VZGDX7II.mjs} +1 -1
- package/dist/preview-engine/{chunk-DOCSX45C.mjs → chunk-XJ4CQIZZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-7LVOSEGN.mjs → chunk-XYRBFLFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-LIQA5OOU.mjs → chunk-YMQMPBTL.mjs} +1 -1
- package/dist/preview-engine/{chunk-G4J662EL.mjs → chunk-Z4ZO4RVT.mjs} +1 -1
- package/dist/preview-engine/{chunk-2GIWWDE4.mjs → chunk-ZFURUTVW.mjs} +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +30 -28
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/renderers-2CBJYNOC.mjs +1 -0
- package/dist/preview-engine/renderers-37CN7O4S.mjs +1 -0
- package/dist/preview-engine/renderers-3AZ5PMGC.mjs +1 -0
- package/dist/preview-engine/renderers-3UGG2IMP.mjs +1 -0
- package/dist/preview-engine/renderers-3VXNHICC.mjs +1 -0
- package/dist/preview-engine/{renderers-BDWVXYTW.mjs → renderers-3ZYXHUSW.mjs} +1 -1
- package/dist/preview-engine/renderers-4FONYSBA.mjs +1 -0
- package/dist/preview-engine/renderers-54I5SFXR.mjs +1 -0
- package/dist/preview-engine/renderers-5LXALKB4.mjs +1 -0
- package/dist/preview-engine/renderers-5TICPV2K.mjs +1 -0
- package/dist/preview-engine/renderers-5YS5WHAV.mjs +1 -0
- package/dist/preview-engine/renderers-6UTRYW7Z.mjs +1 -0
- package/dist/preview-engine/{renderers-R4WMM6IX.mjs → renderers-6ZCFR7BL.mjs} +1 -1
- package/dist/preview-engine/renderers-AYEWAW7F.mjs +1 -0
- package/dist/preview-engine/{renderers-75TL7RLS.mjs → renderers-BOT4H6KJ.mjs} +1 -1
- package/dist/preview-engine/{renderers-NJLGPPX7.mjs → renderers-C44CEIYB.mjs} +1 -1
- package/dist/preview-engine/{renderers-UDOBX433.mjs → renderers-C4G7X7LD.mjs} +1 -1
- package/dist/preview-engine/renderers-CLCPP3TZ.mjs +1 -0
- package/dist/preview-engine/{renderers-RKZGYWDG.mjs → renderers-DBRC3SQE.mjs} +1 -1
- package/dist/preview-engine/{renderers-HZHEGONW.mjs → renderers-DSICQMRF.mjs} +1 -1
- package/dist/preview-engine/renderers-DTZ2AER5.mjs +1 -0
- package/dist/preview-engine/renderers-DUF2CTX6.mjs +1 -0
- package/dist/preview-engine/{renderers-AZYJFJLO.mjs → renderers-EOIMH7UE.mjs} +1 -1
- package/dist/preview-engine/renderers-EOMMSENQ.mjs +1 -0
- package/dist/preview-engine/{renderers-CK3ZL3GM.mjs → renderers-GSRKNT75.mjs} +1 -1
- package/dist/preview-engine/renderers-GUJTPO37.mjs +1 -0
- package/dist/preview-engine/{renderers-TCNPEANL.mjs → renderers-HE42AT5T.mjs} +1 -1
- package/dist/preview-engine/{renderers-GUPEJK3O.mjs → renderers-JM7JEVBN.mjs} +1 -1
- package/dist/preview-engine/{renderers-FKH5S64C.mjs → renderers-JRU2GNPE.mjs} +1 -1
- package/dist/preview-engine/{renderers-IHRFEZNP.mjs → renderers-K6J77OI5.mjs} +1 -1
- package/dist/preview-engine/{renderers-IJDQJEE5.mjs → renderers-L7EITUCD.mjs} +1 -1
- package/dist/preview-engine/renderers-LGUHDWWB.mjs +1 -0
- package/dist/preview-engine/renderers-LGXD24IJ.mjs +1 -0
- package/dist/preview-engine/renderers-MCTBJEL7.mjs +1 -0
- package/dist/preview-engine/renderers-OBXNUQMP.mjs +1 -0
- package/dist/preview-engine/renderers-OZGEXW2X.mjs +1 -0
- package/dist/preview-engine/{renderers-7CPYTCNW.mjs → renderers-PJGFJGJS.mjs} +1 -1
- package/dist/preview-engine/{renderers-SW7FIEKO.mjs → renderers-PPGOYOID.mjs} +1 -1
- package/dist/preview-engine/renderers-PUJRHBUW.mjs +1 -0
- package/dist/preview-engine/renderers-PVUROEGR.mjs +1 -0
- package/dist/preview-engine/renderers-QBVVTQV6.mjs +1 -0
- package/dist/preview-engine/{renderers-K7B5PQBT.mjs → renderers-QPHOG7QR.mjs} +1 -1
- package/dist/preview-engine/{renderers-WR6MKT5S.mjs → renderers-RV62K5JC.mjs} +1 -1
- package/dist/preview-engine/{renderers-UMPOVFRA.mjs → renderers-SBX64ERA.mjs} +1 -1
- package/dist/preview-engine/renderers-SCJTTOEJ.mjs +1 -0
- package/dist/preview-engine/{renderers-FM6A5YR4.mjs → renderers-SD35PBEM.mjs} +1 -1
- package/dist/preview-engine/{renderers-LVLVJHOL.mjs → renderers-SIHL5GLI.mjs} +1 -1
- package/dist/preview-engine/renderers-SNUVYUDE.mjs +1 -0
- package/dist/preview-engine/renderers-SPW4SWZ2.mjs +228 -0
- package/dist/preview-engine/renderers-SRKCF3LD.mjs +1 -0
- package/dist/preview-engine/{renderers-GAIUTII6.mjs → renderers-T3S7QVM4.mjs} +1 -1
- package/dist/preview-engine/renderers-TBP2EKJ4.mjs +1 -0
- package/dist/preview-engine/renderers-UN6YLFHW.mjs +1 -0
- package/dist/preview-engine/renderers-UTWKTBZI.mjs +1 -0
- package/dist/preview-engine/{renderers-6JZ4HYIU.mjs → renderers-V5MJJH33.mjs} +1 -1
- package/dist/preview-engine/{renderers-XKHNBARD.mjs → renderers-V67L3MCY.mjs} +1 -1
- package/dist/preview-engine/{renderers-FADYGSLK.mjs → renderers-VYK2BJID.mjs} +1 -1
- package/dist/preview-engine/renderers-W6762MNW.mjs +1 -0
- package/dist/preview-engine/renderers-W6ZTVA2I.mjs +1 -0
- package/dist/preview-engine/renderers-WDV7ENJA.mjs +1 -0
- package/dist/preview-engine/{renderers-MBSOKWKB.mjs → renderers-WPBTAU2E.mjs} +1 -1
- package/dist/preview-engine/renderers-XP7YFWBV.mjs +1 -0
- package/dist/preview-engine/renderers-XVUOO7B6.mjs +1 -0
- package/dist/preview-engine/renderers-YPFM5UJO.mjs +1 -0
- package/dist/preview-engine/renderers-YW3LBALW.mjs +1 -0
- package/dist/preview-engine/{renderers-4AJWVIJG.mjs → renderers-ZAPIBQZC.mjs} +1 -1
- package/dist/preview-engine/renderers-ZRR4TUVQ.mjs +1 -0
- package/dist/preview-engine/{renderers-TY7DVI7E.mjs → renderers-ZVKXIQ3E.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-C2cJayA1.mjs → program-CEHCeDpG.mjs} +204 -61
- package/dist/program-CEHCeDpG.mjs.map +1 -0
- package/dist/registry/annotate.json +30 -0
- package/dist/registry/app-frame.json +38 -0
- package/dist/registry/backdrop.json +37 -0
- package/dist/registry/before-after.json +33 -0
- package/dist/registry/callout.json +30 -0
- package/dist/registry/captions.json +37 -0
- package/dist/registry/card-stack.json +30 -0
- package/dist/registry/chat-thread.json +32 -0
- package/dist/registry/code-block.json +45 -0
- package/dist/registry/confetti.json +29 -0
- package/dist/registry/counter.json +36 -0
- package/dist/registry/device-frame.json +36 -0
- package/dist/registry/focus-zoom.json +32 -0
- package/dist/registry/index.json +408 -0
- package/dist/registry/logo-reveal.json +37 -0
- package/dist/registry/lower-third.json +34 -0
- package/dist/registry/meter.json +35 -0
- package/dist/registry/mouse-pointer.json +44 -0
- package/dist/registry/selection.json +31 -0
- package/dist/registry/spotlight.json +28 -0
- package/dist/registry/terminal.json +40 -0
- package/dist/registry/text-reveal.json +39 -0
- package/dist/registry/title-card.json +34 -0
- package/dist/registry/toasts.json +28 -0
- package/dist/registry/touch-point.json +33 -0
- package/dist/registry/waveform.json +29 -0
- package/dist/registry/word-cycle.json +32 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-BMKFzfSQ.mjs → renderer--wMbTRFg.mjs} +4 -4
- package/dist/{renderer-BMKFzfSQ.mjs.map → renderer--wMbTRFg.mjs.map} +1 -1
- package/dist/{renderer-CDUxAtsk.mjs → renderer-3aLw-la1.mjs} +5 -5
- package/dist/{renderer-CDUxAtsk.mjs.map → renderer-3aLw-la1.mjs.map} +1 -1
- package/dist/renderer-7vCBWQVP.mjs +5 -0
- package/dist/{renderer-DILUmb-e.mjs → renderer-AkRxGnFU.mjs} +5 -5
- package/dist/{renderer-DILUmb-e.mjs.map → renderer-AkRxGnFU.mjs.map} +1 -1
- package/dist/renderer-B-XgGMCq.mjs +5 -0
- package/dist/renderer-B0yabPlf.mjs +5 -0
- package/dist/{renderer-CoWfz-9p.mjs → renderer-B1yPBJQc.mjs} +74 -74
- package/dist/{renderer-CoWfz-9p.mjs.map → renderer-B1yPBJQc.mjs.map} +1 -1
- package/dist/{renderer-BPixWnmY.mjs → renderer-B41jTHFs.mjs} +6 -6
- package/dist/{renderer-BPixWnmY.mjs.map → renderer-B41jTHFs.mjs.map} +1 -1
- package/dist/{renderer-BTd2sWDC.mjs → renderer-B5HG6Czb.mjs} +4 -4
- package/dist/{renderer-BTd2sWDC.mjs.map → renderer-B5HG6Czb.mjs.map} +1 -1
- package/dist/{renderer-gRMkQabv.mjs → renderer-B5oJN3A5.mjs} +5 -5
- package/dist/{renderer-gRMkQabv.mjs.map → renderer-B5oJN3A5.mjs.map} +1 -1
- package/dist/renderer-B9MYevrF.mjs +5 -0
- package/dist/renderer-BA2Ko4H1.mjs +3 -0
- package/dist/renderer-BCGosndi.mjs +5 -0
- package/dist/{renderer-CzRqzp8P.mjs → renderer-BEmDSqXg.mjs} +4 -4
- package/dist/{renderer-CzRqzp8P.mjs.map → renderer-BEmDSqXg.mjs.map} +1 -1
- package/dist/{renderer-Csss5GFQ.mjs → renderer-BG8jNTHr.mjs} +3 -3
- package/dist/{renderer-Csss5GFQ.mjs.map → renderer-BG8jNTHr.mjs.map} +1 -1
- package/dist/{renderer-BTigwMQp.mjs → renderer-BMnrBPh1.mjs} +4 -4
- package/dist/{renderer-BTigwMQp.mjs.map → renderer-BMnrBPh1.mjs.map} +1 -1
- package/dist/{renderer-yyUpCeWb.mjs → renderer-BORzpTQP.mjs} +3 -3
- package/dist/{renderer-yyUpCeWb.mjs.map → renderer-BORzpTQP.mjs.map} +1 -1
- package/dist/{renderer-RDCax5CK.mjs → renderer-BWtI3wKu.mjs} +4 -4
- package/dist/{renderer-RDCax5CK.mjs.map → renderer-BWtI3wKu.mjs.map} +1 -1
- package/dist/renderer-BXTHDEnd.mjs +5 -0
- package/dist/{renderer-G1pMJH5C.mjs → renderer-Baw30QRI.mjs} +3 -3
- package/dist/{renderer-G1pMJH5C.mjs.map → renderer-Baw30QRI.mjs.map} +1 -1
- package/dist/renderer-BbJoZ-zL.mjs +5 -0
- package/dist/{renderer-Dwu_zfdL.mjs → renderer-BbdgwkDB.mjs} +5 -5
- package/dist/{renderer-Dwu_zfdL.mjs.map → renderer-BbdgwkDB.mjs.map} +1 -1
- package/dist/{renderer-D6BXR7P4.mjs → renderer-BgOEqtZu.mjs} +3 -3
- package/dist/{renderer-D6BXR7P4.mjs.map → renderer-BgOEqtZu.mjs.map} +1 -1
- package/dist/{renderer-NizuhHsH.mjs → renderer-Bv0-WmP4.mjs} +4 -4
- package/dist/{renderer-NizuhHsH.mjs.map → renderer-Bv0-WmP4.mjs.map} +1 -1
- package/dist/renderer-BvcqncI2.mjs +3 -0
- package/dist/{renderer-BljMOvry.mjs → renderer-Bvhj-05p.mjs} +4 -4
- package/dist/{renderer-BljMOvry.mjs.map → renderer-Bvhj-05p.mjs.map} +1 -1
- package/dist/renderer-BxAZKOQy.mjs +5 -0
- package/dist/{renderer-92eLJg24.mjs → renderer-BxDhx8KM.mjs} +5 -5
- package/dist/{renderer-92eLJg24.mjs.map → renderer-BxDhx8KM.mjs.map} +1 -1
- package/dist/renderer-BxgkH__7.mjs +5 -0
- package/dist/{renderer-7y5Cj8rV.mjs → renderer-C1XZ0fQ-.mjs} +4 -4
- package/dist/{renderer-7y5Cj8rV.mjs.map → renderer-C1XZ0fQ-.mjs.map} +1 -1
- package/dist/{renderer-UcdqCarR.mjs → renderer-C8KEfda3.mjs} +4 -4
- package/dist/{renderer-UcdqCarR.mjs.map → renderer-C8KEfda3.mjs.map} +1 -1
- package/dist/{renderer-BSitV56h.mjs → renderer-C9r0-KY4.mjs} +10 -1
- package/dist/{renderer-BSitV56h.mjs.map → renderer-C9r0-KY4.mjs.map} +1 -1
- package/dist/{renderer-B3e4LSE6.mjs → renderer-CF25oNd3.mjs} +5 -5
- package/dist/{renderer-B3e4LSE6.mjs.map → renderer-CF25oNd3.mjs.map} +1 -1
- package/dist/renderer-CFEvikBH.mjs +5 -0
- package/dist/{renderer-DzSMeQBC.mjs → renderer-CHFUJyul.mjs} +5 -5
- package/dist/{renderer-DzSMeQBC.mjs.map → renderer-CHFUJyul.mjs.map} +1 -1
- package/dist/{renderer-ByCX4JYg.mjs → renderer-CKGOKBZi.mjs} +5 -5
- package/dist/{renderer-ByCX4JYg.mjs.map → renderer-CKGOKBZi.mjs.map} +1 -1
- package/dist/{renderer-If8JOkBi.mjs → renderer-CNs1vBUy.mjs} +4 -4
- package/dist/{renderer-If8JOkBi.mjs.map → renderer-CNs1vBUy.mjs.map} +1 -1
- package/dist/{index-B1XcyMm8.d.mts → renderer-COXKPofU.d.mts} +18 -18
- package/dist/renderer-COXKPofU.d.mts.map +1 -0
- package/dist/{renderer-CNuVJ4nG.mjs → renderer-COZCwiIr.mjs} +3 -3
- package/dist/{renderer-CNuVJ4nG.mjs.map → renderer-COZCwiIr.mjs.map} +1 -1
- package/dist/{renderer-V5uEyDFz.mjs → renderer-CPmoA87K.mjs} +4 -4
- package/dist/{renderer-V5uEyDFz.mjs.map → renderer-CPmoA87K.mjs.map} +1 -1
- package/dist/{renderer-Cw6Sagih.mjs → renderer-CYZb9uoO.mjs} +4 -4
- package/dist/{renderer-Cw6Sagih.mjs.map → renderer-CYZb9uoO.mjs.map} +1 -1
- package/dist/renderer-C_u9B-_7.mjs +5 -0
- package/dist/{renderer-BwpgDLYO.mjs → renderer-CaUJlGoB.mjs} +5 -5
- package/dist/{renderer-BwpgDLYO.mjs.map → renderer-CaUJlGoB.mjs.map} +1 -1
- package/dist/{renderer-DjwITRvg.mjs → renderer-CcS3Zntx.mjs} +3 -3
- package/dist/{renderer-BDCy8NgT.mjs → renderer-CddpdCL3.mjs} +4 -4
- package/dist/{renderer-BDCy8NgT.mjs.map → renderer-CddpdCL3.mjs.map} +1 -1
- package/dist/{renderer-BV48PFjX.mjs → renderer-Cg-d78nf.mjs} +192 -27
- package/dist/renderer-Cg-d78nf.mjs.map +1 -0
- package/dist/renderer-Cgx_qzGT.mjs +5 -0
- package/dist/{renderer-DScyMHpJ.mjs → renderer-ChNCtBMR.mjs} +3 -3
- package/dist/{renderer-DScyMHpJ.mjs.map → renderer-ChNCtBMR.mjs.map} +1 -1
- package/dist/renderer-ClOkY1Ny.mjs +5 -0
- package/dist/{renderer-DyyIXLQK.mjs → renderer-CrU0kbiB.mjs} +5 -5
- package/dist/{renderer-DyyIXLQK.mjs.map → renderer-CrU0kbiB.mjs.map} +1 -1
- package/dist/renderer-CtDub_ig.mjs +5 -0
- package/dist/{renderer-ut1GqW89.mjs → renderer-CyhSWLKq.mjs} +4 -4
- package/dist/{renderer-ut1GqW89.mjs.map → renderer-CyhSWLKq.mjs.map} +1 -1
- package/dist/{renderer-DaSxr9fM.mjs → renderer-D-bmSKv4.mjs} +5 -5
- package/dist/{renderer-DaSxr9fM.mjs.map → renderer-D-bmSKv4.mjs.map} +1 -1
- package/dist/renderer-D0duAhCo.mjs +5 -0
- package/dist/{renderer-BBAbZfBl.mjs → renderer-D2tdNoM6.mjs} +6 -6
- package/dist/{renderer-BBAbZfBl.mjs.map → renderer-D2tdNoM6.mjs.map} +1 -1
- package/dist/renderer-D4wM1dqg.mjs +6 -0
- package/dist/renderer-D5U3d09T.mjs +5 -0
- package/dist/{renderer-B1QREs7J.mjs → renderer-D86Y5YYi.mjs} +5 -5
- package/dist/{renderer-B1QREs7J.mjs.map → renderer-D86Y5YYi.mjs.map} +1 -1
- package/dist/{renderer-Cbsnj9vV.mjs → renderer-D8D7dKxq.mjs} +4 -4
- package/dist/{renderer-Cbsnj9vV.mjs.map → renderer-D8D7dKxq.mjs.map} +1 -1
- package/dist/{renderer-D0vom99O.mjs → renderer-DATAjI6x.mjs} +3 -3
- package/dist/{renderer-D0vom99O.mjs.map → renderer-DATAjI6x.mjs.map} +1 -1
- package/dist/{renderer-X0eKSD7v.mjs → renderer-DGhCIVI4.mjs} +5 -5
- package/dist/{renderer-X0eKSD7v.mjs.map → renderer-DGhCIVI4.mjs.map} +1 -1
- package/dist/{renderer-CJ4bxCld.mjs → renderer-DILjs1tz.mjs} +3 -3
- package/dist/{renderer-DjBCWxYy.mjs → renderer-DIyzKouj.mjs} +4 -4
- package/dist/{renderer-DjBCWxYy.mjs.map → renderer-DIyzKouj.mjs.map} +1 -1
- package/dist/{renderer-BwwZB2mt.mjs → renderer-DJ78Bgv7.mjs} +5 -5
- package/dist/{renderer-BwwZB2mt.mjs.map → renderer-DJ78Bgv7.mjs.map} +1 -1
- package/dist/renderer-DKqFxYfP.mjs +5 -0
- package/dist/renderer-DQZNI1zf.mjs +5 -0
- package/dist/{renderer-B4RpSd4A.mjs → renderer-DVnrUnkh.mjs} +3 -3
- package/dist/{renderer-B4RpSd4A.mjs.map → renderer-DVnrUnkh.mjs.map} +1 -1
- package/dist/{renderer-C1E5Rt5q.mjs → renderer-DWtquP0s.mjs} +4 -4
- package/dist/{renderer-C1E5Rt5q.mjs.map → renderer-DWtquP0s.mjs.map} +1 -1
- package/dist/renderer-DXITcVbS.mjs +5 -0
- package/dist/renderer-DY1QgdDC.mjs +5 -0
- package/dist/renderer-DYEz06xn.mjs +5 -0
- package/dist/renderer-D_2OrSMc.mjs +5 -0
- package/dist/renderer-DcCl9CO6.mjs +5 -0
- package/dist/{renderer-rXgqgAjw.mjs → renderer-DetTl6bQ.mjs} +3 -3
- package/dist/{renderer-rXgqgAjw.mjs.map → renderer-DetTl6bQ.mjs.map} +1 -1
- package/dist/{renderer-BjCHW9Jp.mjs → renderer-DfxwJVjW.mjs} +3 -3
- package/dist/{renderer-Cv4lchUP.mjs → renderer-DhQZiRL3.mjs} +5 -5
- package/dist/{renderer-Cv4lchUP.mjs.map → renderer-DhQZiRL3.mjs.map} +1 -1
- package/dist/{renderer-EZp_IIPK.mjs → renderer-Djn4BYtz.mjs} +5 -5
- package/dist/{renderer-EZp_IIPK.mjs.map → renderer-Djn4BYtz.mjs.map} +1 -1
- package/dist/{renderer-Bkrk0M0r.mjs → renderer-DkS6cblv.mjs} +5 -5
- package/dist/{renderer-Bkrk0M0r.mjs.map → renderer-DkS6cblv.mjs.map} +1 -1
- package/dist/{renderer-DKfwlE4e.mjs → renderer-DkeJefRk.mjs} +5 -5
- package/dist/{renderer-DKfwlE4e.mjs.map → renderer-DkeJefRk.mjs.map} +1 -1
- package/dist/renderer-DotZXhrh.mjs +5 -0
- package/dist/renderer-DpYDVTzs.mjs +5 -0
- package/dist/renderer-DpZxLVQF.mjs +5 -0
- package/dist/{renderer-Za4D9hej.mjs → renderer-DqabtpGN.mjs} +5 -5
- package/dist/{renderer-Za4D9hej.mjs.map → renderer-DqabtpGN.mjs.map} +1 -1
- package/dist/{renderer-DaqWTx7s.mjs → renderer-DqdD8gzX.mjs} +5 -5
- package/dist/{renderer-DaqWTx7s.mjs.map → renderer-DqdD8gzX.mjs.map} +1 -1
- package/dist/{renderer-DZJJHCtm.mjs → renderer-DstROEvX.mjs} +4 -4
- package/dist/{renderer-DZJJHCtm.mjs.map → renderer-DstROEvX.mjs.map} +1 -1
- package/dist/{renderer-BjvNEbML.mjs → renderer-DuawUm8D.mjs} +3 -3
- package/dist/{renderer-BjvNEbML.mjs.map → renderer-DuawUm8D.mjs.map} +1 -1
- package/dist/{renderer-CDOobs18.mjs → renderer-DvIWhLnY.mjs} +5 -5
- package/dist/{renderer-CDOobs18.mjs.map → renderer-DvIWhLnY.mjs.map} +1 -1
- package/dist/renderer-DvJbouz0.mjs +5 -0
- package/dist/{renderer-apeDrNXM.mjs → renderer-Dw2ZFwDT.mjs} +5 -5
- package/dist/{renderer-apeDrNXM.mjs.map → renderer-Dw2ZFwDT.mjs.map} +1 -1
- package/dist/{renderer-CxqPeATd.d.mts → renderer-Dx28wTi1.d.mts} +2 -2
- package/dist/{renderer-CxqPeATd.d.mts.map → renderer-Dx28wTi1.d.mts.map} +1 -1
- package/dist/{renderer-CcoUNzlQ.mjs → renderer-DxLkZGUK.mjs} +4 -4
- package/dist/{renderer-CcoUNzlQ.mjs.map → renderer-DxLkZGUK.mjs.map} +1 -1
- package/dist/{renderer-CeiCJCg4.mjs → renderer-GY7D1oAn.mjs} +4 -4
- package/dist/{renderer-CeiCJCg4.mjs.map → renderer-GY7D1oAn.mjs.map} +1 -1
- package/dist/{renderer-D2-V9nQq.mjs → renderer-JaSEubRQ.mjs} +4 -4
- package/dist/{renderer-D2-V9nQq.mjs.map → renderer-JaSEubRQ.mjs.map} +1 -1
- package/dist/{renderer-CqtIbe5n.mjs → renderer-MrvH4L7b.mjs} +4 -4
- package/dist/{renderer-CqtIbe5n.mjs.map → renderer-MrvH4L7b.mjs.map} +1 -1
- package/dist/{renderer-DO5r7ZV-.mjs → renderer-PNIgmWft.mjs} +2 -2
- package/dist/{renderer-DO5r7ZV-.mjs.map → renderer-PNIgmWft.mjs.map} +1 -1
- package/dist/renderer-S305xm67.mjs +5 -0
- package/dist/renderer-TgUloP-y.mjs +5 -0
- package/dist/{renderer-DFJQ6v0F.mjs → renderer-VcPoZAM2.mjs} +3 -3
- package/dist/{renderer-DFJQ6v0F.mjs.map → renderer-VcPoZAM2.mjs.map} +1 -1
- package/dist/{renderer-DcBGYN3V.mjs → renderer-ZGJWn-_L.mjs} +4 -4
- package/dist/{renderer-DcBGYN3V.mjs.map → renderer-ZGJWn-_L.mjs.map} +1 -1
- package/dist/{renderer-DTw-W0Yz.mjs → renderer-aXwxbXcE.mjs} +5 -5
- package/dist/{renderer-DTw-W0Yz.mjs.map → renderer-aXwxbXcE.mjs.map} +1 -1
- package/dist/renderer-gZ5SMvbU.mjs +5 -0
- package/dist/{renderer-CCGzT6bX.mjs → renderer-gniIzAsk.mjs} +3 -3
- package/dist/renderer-kEpx7pUy.mjs +5 -0
- package/dist/{renderer-BkWd4-YO.mjs → renderer-mSlww_MA.mjs} +4 -4
- package/dist/{renderer-BkWd4-YO.mjs.map → renderer-mSlww_MA.mjs.map} +1 -1
- package/dist/{renderer-B0gPTXhe.mjs → renderer-mWfgWQy_.mjs} +5 -5
- package/dist/{renderer-B0gPTXhe.mjs.map → renderer-mWfgWQy_.mjs.map} +1 -1
- package/dist/{renderer-BajIOuZH.mjs → renderer-nLPfvY3-.mjs} +2 -2
- package/dist/{renderer-BajIOuZH.mjs.map → renderer-nLPfvY3-.mjs.map} +1 -1
- package/dist/renderer-oPWZmzua.mjs +5 -0
- package/dist/{renderer--ruTGlPo.mjs → renderer-pcpDwv3K.mjs} +4 -4
- package/dist/{renderer--ruTGlPo.mjs.map → renderer-pcpDwv3K.mjs.map} +1 -1
- package/dist/renderer-qCNOffLy.mjs +5 -0
- package/dist/{renderer-DwVOxdzC.mjs → renderer-vPJRRVNN.mjs} +5 -5
- package/dist/{renderer-DwVOxdzC.mjs.map → renderer-vPJRRVNN.mjs.map} +1 -1
- package/dist/{renderer-JvcR1vYI.mjs → renderer-vQrX7Qsw.mjs} +3 -3
- package/dist/{renderer-JvcR1vYI.mjs.map → renderer-vQrX7Qsw.mjs.map} +1 -1
- package/dist/{renderer-Bi6W4RSn.mjs → renderer-wld_ZR0-.mjs} +3 -3
- package/dist/{renderer-Bi6W4RSn.mjs.map → renderer-wld_ZR0-.mjs.map} +1 -1
- package/dist/renderer-xEVoeq12.mjs +5 -0
- package/dist/renderer-ypw8fzVD.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-DzGXDs5p.mjs → renderers-CP8CFWDs-DgKdGMvS.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DzGXDs5p.mjs.map → renderers-CP8CFWDs-DgKdGMvS.mjs.map} +1 -1
- package/dist/signals/index.d.mts +6 -6
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-C5nOrRmn.mjs → signals-Cf9mfNGE.mjs} +4 -4
- package/dist/{signals-C5nOrRmn.mjs.map → signals-Cf9mfNGE.mjs.map} +1 -1
- package/dist/src-CU_7ui4I.mjs +8373 -0
- package/dist/src-CU_7ui4I.mjs.map +1 -0
- package/package.json +68 -58
- package/dist/dist-ClyC_d66.mjs.map +0 -1
- package/dist/dist-CxGfrigI.mjs.map +0 -1
- package/dist/effects-BOk_2kzM.mjs.map +0 -1
- package/dist/index-B1XcyMm8.d.mts.map +0 -1
- package/dist/index-B2Xesdug.d.mts.map +0 -1
- package/dist/index-DujpgUUq.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/preview/index.d.mts.map +0 -1
- package/dist/preview-engine/chunk-AQNTIWTK.mjs +0 -1
- package/dist/preview-engine/chunk-CPFPY35C.mjs +0 -1
- package/dist/preview-engine/chunk-UZBVCYRY.mjs +0 -174
- package/dist/preview-engine/chunk-XDMZP3E2.mjs +0 -1
- package/dist/preview-engine/chunk-YKMBRUAE.mjs +0 -1
- package/dist/preview-engine/renderers-3CXFGRE7.mjs +0 -1
- package/dist/preview-engine/renderers-3FC3WCJN.mjs +0 -1
- package/dist/preview-engine/renderers-3S2FM33K.mjs +0 -1
- package/dist/preview-engine/renderers-53ZTBI3C.mjs +0 -1
- package/dist/preview-engine/renderers-5USBVCMQ.mjs +0 -1
- package/dist/preview-engine/renderers-65G6BLEA.mjs +0 -1
- package/dist/preview-engine/renderers-7XU7BXE7.mjs +0 -1
- package/dist/preview-engine/renderers-BFXM32BC.mjs +0 -1
- package/dist/preview-engine/renderers-CDXHCWWK.mjs +0 -1
- package/dist/preview-engine/renderers-CLUN7WU6.mjs +0 -1
- package/dist/preview-engine/renderers-DTB4HEXU.mjs +0 -1
- package/dist/preview-engine/renderers-EFKNRLYF.mjs +0 -1
- package/dist/preview-engine/renderers-EI6MQ2EL.mjs +0 -228
- package/dist/preview-engine/renderers-G2K7ZA5O.mjs +0 -1
- package/dist/preview-engine/renderers-GTUO5LIV.mjs +0 -1
- package/dist/preview-engine/renderers-HSJIVP57.mjs +0 -1
- package/dist/preview-engine/renderers-IHACBWXI.mjs +0 -1
- package/dist/preview-engine/renderers-IO3BVVJ7.mjs +0 -1
- package/dist/preview-engine/renderers-IR772VSN.mjs +0 -1
- package/dist/preview-engine/renderers-L6TRJOXA.mjs +0 -1
- package/dist/preview-engine/renderers-N6H6RSF2.mjs +0 -1
- package/dist/preview-engine/renderers-O5NFQYRQ.mjs +0 -1
- package/dist/preview-engine/renderers-O6V3OEKX.mjs +0 -1
- package/dist/preview-engine/renderers-OODA27UH.mjs +0 -1
- package/dist/preview-engine/renderers-RIGW33ZI.mjs +0 -1
- package/dist/preview-engine/renderers-RUZRBQ4K.mjs +0 -1
- package/dist/preview-engine/renderers-SKB2GGKS.mjs +0 -1
- package/dist/preview-engine/renderers-T4D2TASM.mjs +0 -1
- package/dist/preview-engine/renderers-T74XV36Q.mjs +0 -1
- package/dist/preview-engine/renderers-TOPW2UM3.mjs +0 -1
- package/dist/preview-engine/renderers-UO5G3Y2G.mjs +0 -1
- package/dist/preview-engine/renderers-UOV7VOJJ.mjs +0 -1
- package/dist/preview-engine/renderers-UWKSTSTA.mjs +0 -1
- package/dist/preview-engine/renderers-VHPAOUTA.mjs +0 -1
- package/dist/preview-engine/renderers-YEQRQJFC.mjs +0 -1
- package/dist/preview-engine/renderers-YRZ3WODX.mjs +0 -1
- package/dist/preview-engine/renderers-YUTFGVRY.mjs +0 -1
- package/dist/preview-engine/renderers-YXOTRKPA.mjs +0 -1
- package/dist/preview-engine/renderers-ZOU5ARVD.mjs +0 -1
- package/dist/preview-engine/renderers-ZW75LQTR.mjs +0 -1
- package/dist/program-C2cJayA1.mjs.map +0 -1
- package/dist/renderer-BAhZeUUn.mjs +0 -5
- package/dist/renderer-BHAE_dKq.mjs +0 -5
- package/dist/renderer-BNYZY3FE.mjs +0 -5
- package/dist/renderer-BSvubMvI.mjs +0 -5
- package/dist/renderer-BV48PFjX.mjs.map +0 -1
- package/dist/renderer-B_M_yhTc.mjs +0 -5
- package/dist/renderer-B_xSsTuy.mjs +0 -5
- package/dist/renderer-BePHurAU.mjs +0 -5
- package/dist/renderer-BfZquJrW.mjs +0 -5
- package/dist/renderer-BuY5ypB2.mjs +0 -5
- package/dist/renderer-BvOQgFHo.mjs +0 -5
- package/dist/renderer-C7NkSvUz.mjs +0 -5
- package/dist/renderer-CIuxV2q1.mjs +0 -5
- package/dist/renderer-CKp97tSQ.mjs +0 -5
- package/dist/renderer-CY89dTFR.mjs +0 -5
- package/dist/renderer-C_B_4Bl0.mjs +0 -5
- package/dist/renderer-Cd87JOjP.mjs +0 -5
- package/dist/renderer-Cev6orIK.mjs +0 -6
- package/dist/renderer-Cewf6UPh.mjs +0 -5
- package/dist/renderer-CnHsMLIv.mjs +0 -5
- package/dist/renderer-CoxuAr7b.mjs +0 -5
- package/dist/renderer-CrdG7trA.mjs +0 -5
- package/dist/renderer-Cu5MFgbk.mjs +0 -5
- package/dist/renderer-CuOjhtoo.mjs +0 -5
- package/dist/renderer-D2_0g6Oi.mjs +0 -5
- package/dist/renderer-D62FwolD.mjs +0 -5
- package/dist/renderer-DDNY9N7I.mjs +0 -5
- package/dist/renderer-DF_ONJ3v.mjs +0 -5
- package/dist/renderer-DbzrVHEE.mjs +0 -5
- package/dist/renderer-DlYchp1v.mjs +0 -5
- package/dist/renderer-DqcUNP8J.mjs +0 -5
- package/dist/renderer-DqvFhEQj.mjs +0 -5
- package/dist/renderer-DuuOlYIG.mjs +0 -3
- package/dist/renderer-DxBav2bE.mjs +0 -5
- package/dist/renderer-GvSRoQje.mjs +0 -5
- package/dist/renderer-KP7Ita9g.mjs +0 -5
- package/dist/renderer-Pc8dyNXt.mjs +0 -5
- package/dist/renderer-ezRCmU09.mjs +0 -3
- package/dist/renderer-h6ev1ogx.mjs +0 -5
- /package/dist/{chunk-GBe2k3y8.mjs → chunk-D7gtBK74.mjs} +0 -0
- /package/dist/{renderer-B-BcgA6d.mjs → renderer-B7fX0C62.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-BDCy8NgT.mjs","names":[],"sources":["../../../nodes/node-film-grain/dist/renderers-C10tt2eD.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst FILM_GRAIN_SHADER = `\nstruct FilmUniforms {\n strength : f32,\n size : f32,\n monochrome : f32,\n animated : f32,\n\n frameIndex : f32, // discrete per-output-frame counter (speed-scaled), NOT continuous time\n shadows : f32,\n midtones : f32,\n highlights : f32,\n\n hasSignal : f32,\n _pad0 : f32,\n _pad1 : f32,\n _pad2 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : FilmUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n@group(2) @binding(0) var signalTex : texture_2d<f32>;\n@group(2) @binding(1) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hash2D(p: vec2<f32>) -> f32 {\n var p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfn smoothNoise(p: vec2<f32>) -> f32 {\n let pi = floor(p);\n let pf = fract(p);\n\n // Quintic interpolation\n let w = pf * pf * pf * (pf * (pf * 6.0 - 15.0) + 10.0);\n\n let h00 = hash2D(pi + vec2<f32>(0.0, 0.0));\n let h10 = hash2D(pi + vec2<f32>(1.0, 0.0));\n let h01 = hash2D(pi + vec2<f32>(0.0, 1.0));\n let h11 = hash2D(pi + vec2<f32>(1.0, 1.0));\n\n let n0 = mix(h00, h10, w.x);\n let n1 = mix(h01, h11, w.x);\n\n return mix(n0, n1, w.y);\n}\n\n// Produces a pseudo-random, NON-directional offset that changes once per\n// output frame. This replaces the old time * constant translation, which\n// smoothly scrolled the noise lattice in a fixed direction (17.31, 43.19)\n// every frame -- that's why grain visibly drifted instead of flickering.\n//\n// The frame index is wrapped into a bounded range before hashing so the\n// pattern stays high quality over long renders (f32 precision degrades on\n// very large hash inputs); the wrap period is long enough that any repeat\n// is imperceptible in grain.\nfn frameJitter(frameIndex: f32) -> vec2<f32> {\n let raw = floor(frameIndex);\n let n = raw - floor(raw / 4096.0) * 4096.0;\n let hx = hash2D(vec2<f32>(n, n * 1.6180339887));\n let hy = hash2D(vec2<f32>(n * 3.14159265, n + 91.7));\n return vec2<f32>(hx, hy) * 1024.0;\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\n var strength = u.strength;\n if (u.hasSignal > 0.5) {\n let sigVal = textureSampleLevel(signalTex, signalSamp, in.uv, 0.0).r;\n strength = sigVal;\n }\n\n if (strength <= 0.0) {\n return color;\n }\n\n let dimensions = vec2<f32>(textureDimensions(tex));\n let grainCoord = (in.uv * dimensions) / u.size;\n\n let jitter = select(vec2<f32>(0.0), frameJitter(u.frameIndex), u.animated > 0.5);\n\n let luminance = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));\n\n // Luminance response curve logic\n let shadowFactor = exp(-luminance * luminance / 0.1);\n let highlightFactor = exp(-(1.0 - luminance) * (1.0 - luminance) / 0.1);\n let midtoneFactor = max(0.0, 1.0 - shadowFactor - highlightFactor);\n\n let response = (u.shadows * shadowFactor) + (u.midtones * midtoneFactor) + (u.highlights * highlightFactor);\n let finalGrainStrength = (strength / 100.0) * response * 0.15; // Normalized scale\n\n if (u.monochrome > 0.5) {\n let seed = grainCoord + jitter;\n let noiseVal = smoothNoise(seed);\n let grain = (noiseVal - 0.5) * finalGrainStrength;\n color.r += grain;\n color.g += grain;\n color.b += grain;\n } else {\n // Fixed per-channel spatial offsets (unrelated to time) keep the\n // R/G/B lattices decorrelated from each other; temporal variation\n // comes entirely from jitter now.\n let seedR = grainCoord + jitter;\n let seedG = grainCoord + jitter + vec2<f32>(173.3, 281.9);\n let seedB = grainCoord + jitter + vec2<f32>(391.7, 127.1);\n\n let noiseR = smoothNoise(seedR);\n let noiseG = smoothNoise(seedG);\n let noiseB = smoothNoise(seedB);\n\n color.r += (noiseR - 0.5) * finalGrainStrength;\n color.g += (noiseG - 0.5) * finalGrainStrength;\n color.b += (noiseB - 0.5) * finalGrainStrength;\n }\n\n return clamp(color, vec4<f32>(0.0), vec4<f32>(1.0));\n}\n`;\nconst filmGrainUniformData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tfilmUniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getFilmGrainResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `filmgrain_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst filmModule = device.createShaderModule({\n\t\t\tlabel: `filmgrain_${format}.wgsl`,\n\t\t\tcode: FILM_GRAIN_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `FilmGrainPipeline_${format}`,\n\t\t\tmodule: filmModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.filmUniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tfilmPipeline: pipeline,\n\t\tfilmUniformLayout: layouts.filmUniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst FilmGrainWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"FilmGrain\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst dpiScale = width / (props.containerWidth ?? ctx.surface.width / (typeof window !== \"undefined\" ? window.devicePixelRatio : 1));\n\tconst signalInput = op.strengthHandleId ? op.inputs?.[op.strengthHandleId] : null;\n\tconst hasSignal = !!(signalInput?.connectionValid && (signalInput.outputItem?.type === \"Signal\" || signalInput.outputItem?.type === \"Numeric\"));\n\tconst sd = hasSignal && signalInput?.outputItem?.data ? signalInput.outputItem.data : null;\n\tconst resolveVal = (val, fallback) => {\n\t\tif (val === void 0 || val === null) return fallback;\n\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\tif (\"get\" in val && typeof val.get === \"function\") val = val.get({\n\t\t\t\tframe: compositionFrame,\n\t\t\t\tfps\n\t\t\t});\n\t\t\telse if (\"value\" in val) val = val.value;\n\t\t} else if (typeof val === \"function\") val = val(compositionFrame, fps);\n\t\tconst n = Number(val);\n\t\treturn Number.isFinite(n) ? n : fallback;\n\t};\n\tlet strength = 0;\n\tlet hasStaticSignal = false;\n\tif (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === \"Number\") strength = Math.max(0, Number(signalInput.outputItem.data ?? 0));\n\telse strength = Math.max(0, resolveVal(op.strength, 15));\n\telse if (sd) {\n\t\tstrength = Math.max(0, Number(sd.offset ?? 0));\n\t\thasStaticSignal = true;\n\t}\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\targs.pass.end();\n\tconst { filmPipeline: pipeline, filmUniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getFilmGrainResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tlet signalView;\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tif (hasStaticSignal && sd) signalView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, sd.nodeId ?? \"filmgrain_strength_sig\", elapsedSeconds, durationSeconds, sd, width, height, props.renderId, frame, fps);\n\telse signalView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tconst size = Math.max(.5, resolveVal(op.size, 1.5)) * dpiScale;\n\tconst animated = op.animated ?? true;\n\tconst grainFrameIndex = frame * (resolveVal(op.speed, 50) / 50);\n\tfilmGrainUniformData[0] = strength;\n\tfilmGrainUniformData[1] = size;\n\tfilmGrainUniformData[2] = op.monochrome ?? true ? 1 : 0;\n\tfilmGrainUniformData[3] = animated ? 1 : 0;\n\tfilmGrainUniformData[4] = grainFrameIndex;\n\tfilmGrainUniformData[5] = resolveVal(op.shadows, .2);\n\tfilmGrainUniformData[6] = resolveVal(op.midtones, 1);\n\tfilmGrainUniformData[7] = resolveVal(op.highlights, .2);\n\tfilmGrainUniformData[8] = hasStaticSignal ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(filmGrainUniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: signalView\n\t\t\t}, {\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: sampler\n\t\t\t}]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, resolveVal(op.opacity, 1));\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: FilmGrainWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-C10tt2eD.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-CddpdCL3.mjs","names":[],"sources":["../../../nodes/node-film-grain/dist/renderers-C10tt2eD.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst FILM_GRAIN_SHADER = `\nstruct FilmUniforms {\n strength : f32,\n size : f32,\n monochrome : f32,\n animated : f32,\n\n frameIndex : f32, // discrete per-output-frame counter (speed-scaled), NOT continuous time\n shadows : f32,\n midtones : f32,\n highlights : f32,\n\n hasSignal : f32,\n _pad0 : f32,\n _pad1 : f32,\n _pad2 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : FilmUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n@group(2) @binding(0) var signalTex : texture_2d<f32>;\n@group(2) @binding(1) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hash2D(p: vec2<f32>) -> f32 {\n var p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfn smoothNoise(p: vec2<f32>) -> f32 {\n let pi = floor(p);\n let pf = fract(p);\n\n // Quintic interpolation\n let w = pf * pf * pf * (pf * (pf * 6.0 - 15.0) + 10.0);\n\n let h00 = hash2D(pi + vec2<f32>(0.0, 0.0));\n let h10 = hash2D(pi + vec2<f32>(1.0, 0.0));\n let h01 = hash2D(pi + vec2<f32>(0.0, 1.0));\n let h11 = hash2D(pi + vec2<f32>(1.0, 1.0));\n\n let n0 = mix(h00, h10, w.x);\n let n1 = mix(h01, h11, w.x);\n\n return mix(n0, n1, w.y);\n}\n\n// Produces a pseudo-random, NON-directional offset that changes once per\n// output frame. This replaces the old time * constant translation, which\n// smoothly scrolled the noise lattice in a fixed direction (17.31, 43.19)\n// every frame -- that's why grain visibly drifted instead of flickering.\n//\n// The frame index is wrapped into a bounded range before hashing so the\n// pattern stays high quality over long renders (f32 precision degrades on\n// very large hash inputs); the wrap period is long enough that any repeat\n// is imperceptible in grain.\nfn frameJitter(frameIndex: f32) -> vec2<f32> {\n let raw = floor(frameIndex);\n let n = raw - floor(raw / 4096.0) * 4096.0;\n let hx = hash2D(vec2<f32>(n, n * 1.6180339887));\n let hy = hash2D(vec2<f32>(n * 3.14159265, n + 91.7));\n return vec2<f32>(hx, hy) * 1024.0;\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n var color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\n var strength = u.strength;\n if (u.hasSignal > 0.5) {\n let sigVal = textureSampleLevel(signalTex, signalSamp, in.uv, 0.0).r;\n strength = sigVal;\n }\n\n if (strength <= 0.0) {\n return color;\n }\n\n let dimensions = vec2<f32>(textureDimensions(tex));\n let grainCoord = (in.uv * dimensions) / u.size;\n\n let jitter = select(vec2<f32>(0.0), frameJitter(u.frameIndex), u.animated > 0.5);\n\n let luminance = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));\n\n // Luminance response curve logic\n let shadowFactor = exp(-luminance * luminance / 0.1);\n let highlightFactor = exp(-(1.0 - luminance) * (1.0 - luminance) / 0.1);\n let midtoneFactor = max(0.0, 1.0 - shadowFactor - highlightFactor);\n\n let response = (u.shadows * shadowFactor) + (u.midtones * midtoneFactor) + (u.highlights * highlightFactor);\n let finalGrainStrength = (strength / 100.0) * response * 0.15; // Normalized scale\n\n if (u.monochrome > 0.5) {\n let seed = grainCoord + jitter;\n let noiseVal = smoothNoise(seed);\n let grain = (noiseVal - 0.5) * finalGrainStrength;\n color.r += grain;\n color.g += grain;\n color.b += grain;\n } else {\n // Fixed per-channel spatial offsets (unrelated to time) keep the\n // R/G/B lattices decorrelated from each other; temporal variation\n // comes entirely from jitter now.\n let seedR = grainCoord + jitter;\n let seedG = grainCoord + jitter + vec2<f32>(173.3, 281.9);\n let seedB = grainCoord + jitter + vec2<f32>(391.7, 127.1);\n\n let noiseR = smoothNoise(seedR);\n let noiseG = smoothNoise(seedG);\n let noiseB = smoothNoise(seedB);\n\n color.r += (noiseR - 0.5) * finalGrainStrength;\n color.g += (noiseG - 0.5) * finalGrainStrength;\n color.b += (noiseB - 0.5) * finalGrainStrength;\n }\n\n return clamp(color, vec4<f32>(0.0), vec4<f32>(1.0));\n}\n`;\nconst filmGrainUniformData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tfilmUniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getFilmGrainResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `filmgrain_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst filmModule = device.createShaderModule({\n\t\t\tlabel: `filmgrain_${format}.wgsl`,\n\t\t\tcode: FILM_GRAIN_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `FilmGrainPipeline_${format}`,\n\t\t\tmodule: filmModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.filmUniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tfilmPipeline: pipeline,\n\t\tfilmUniformLayout: layouts.filmUniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst FilmGrainWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"FilmGrain\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst dpiScale = width / (props.containerWidth ?? ctx.surface.width / (typeof window !== \"undefined\" ? window.devicePixelRatio : 1));\n\tconst signalInput = op.strengthHandleId ? op.inputs?.[op.strengthHandleId] : null;\n\tconst hasSignal = !!(signalInput?.connectionValid && (signalInput.outputItem?.type === \"Signal\" || signalInput.outputItem?.type === \"Numeric\"));\n\tconst sd = hasSignal && signalInput?.outputItem?.data ? signalInput.outputItem.data : null;\n\tconst resolveVal = (val, fallback) => {\n\t\tif (val === void 0 || val === null) return fallback;\n\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\tif (\"get\" in val && typeof val.get === \"function\") val = val.get({\n\t\t\t\tframe: compositionFrame,\n\t\t\t\tfps\n\t\t\t});\n\t\t\telse if (\"value\" in val) val = val.value;\n\t\t} else if (typeof val === \"function\") val = val(compositionFrame, fps);\n\t\tconst n = Number(val);\n\t\treturn Number.isFinite(n) ? n : fallback;\n\t};\n\tlet strength = 0;\n\tlet hasStaticSignal = false;\n\tif (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === \"Number\") strength = Math.max(0, Number(signalInput.outputItem.data ?? 0));\n\telse strength = Math.max(0, resolveVal(op.strength, 15));\n\telse if (sd) {\n\t\tstrength = Math.max(0, Number(sd.offset ?? 0));\n\t\thasStaticSignal = true;\n\t}\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\targs.pass.end();\n\tconst { filmPipeline: pipeline, filmUniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getFilmGrainResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tlet signalView;\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tif (hasStaticSignal && sd) signalView = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, sd.nodeId ?? \"filmgrain_strength_sig\", elapsedSeconds, durationSeconds, sd, width, height, props.renderId, frame, fps);\n\telse signalView = signalRegistry.getDummy1x1TextureView(ctx.device);\n\tconst size = Math.max(.5, resolveVal(op.size, 1.5)) * dpiScale;\n\tconst animated = op.animated ?? true;\n\tconst grainFrameIndex = frame * (resolveVal(op.speed, 50) / 50);\n\tfilmGrainUniformData[0] = strength;\n\tfilmGrainUniformData[1] = size;\n\tfilmGrainUniformData[2] = op.monochrome ?? true ? 1 : 0;\n\tfilmGrainUniformData[3] = animated ? 1 : 0;\n\tfilmGrainUniformData[4] = grainFrameIndex;\n\tfilmGrainUniformData[5] = resolveVal(op.shadows, .2);\n\tfilmGrainUniformData[6] = resolveVal(op.midtones, 1);\n\tfilmGrainUniformData[7] = resolveVal(op.highlights, .2);\n\tfilmGrainUniformData[8] = hasStaticSignal ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(filmGrainUniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: signalView\n\t\t\t}, {\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: sampler\n\t\t\t}]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, resolveVal(op.opacity, 1));\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: FilmGrainWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-C10tt2eD.mjs.map"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import "./chunk-
|
|
2
|
-
import {
|
|
3
|
-
import { a as resolveFrameNumber, c as solveHomography, n as defineRenderer, t as audioRegistry } from "./renderer-
|
|
4
|
-
import { $ as resolveTextSpans, G as parseColor, M as generateExtrudedTextGeometry, P as getPrimitiveGeometry, R as jointMatrices, U as measureMaxCaptionHeight, X as poseNodes, at as resolveMediaSourceUrl, d as ScreenSpaceRelightPipeline, dt as Matrix4Math, j as fitSpansToText, l as Renderer3D, lt as Light3D, n as AudioLatentTrackCache, nt as srtLoader, ot as Camera3D, p as SlugFontCache, pt as Vector3Math, tt as spansText } from "./dist-
|
|
5
|
-
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-
|
|
6
|
-
import { a as resolveLayerDuration, f as measureText, n as decodeAudioSource } from "./dist-
|
|
7
|
-
import { o as TemporalDeflickerPipeline } from "./dist-
|
|
8
|
-
import { B as evaluateTrackAtFrame, F as computeLayout, H as initLayout, M as collectNodeOps, z as evaluateKeyframes } from "./program-
|
|
1
|
+
import "./chunk-D7gtBK74.mjs";
|
|
2
|
+
import { Ot as getActiveMediaMetadata, an as reportRenderDiagnostic, cn as resolveNumber, on as resolveBoolean, p as DEFAULT_DURATION_MS } from "./dist-DFeF-ygz.mjs";
|
|
3
|
+
import { a as resolveFrameNumber, c as solveHomography, n as defineRenderer, t as audioRegistry } from "./renderer-C9r0-KY4.mjs";
|
|
4
|
+
import { $ as resolveTextSpans, G as parseColor, M as generateExtrudedTextGeometry, P as getPrimitiveGeometry, R as jointMatrices, U as measureMaxCaptionHeight, X as poseNodes, at as resolveMediaSourceUrl, d as ScreenSpaceRelightPipeline, dt as Matrix4Math, j as fitSpansToText, l as Renderer3D, lt as Light3D, n as AudioLatentTrackCache, nt as srtLoader, ot as Camera3D, p as SlugFontCache, pt as Vector3Math, tt as spansText } from "./dist-BBUrGwqd.mjs";
|
|
5
|
+
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-I5fdrflL.mjs";
|
|
6
|
+
import { a as resolveLayerDuration, f as measureText, n as decodeAudioSource } from "./dist-QMVy31gR.mjs";
|
|
7
|
+
import { o as TemporalDeflickerPipeline } from "./dist-C_SMBmHr.mjs";
|
|
8
|
+
import { B as evaluateTrackAtFrame, F as computeLayout, H as initLayout, M as collectNodeOps, z as evaluateKeyframes } from "./program-CEHCeDpG.mjs";
|
|
9
9
|
import gsapModule from "gsap";
|
|
10
10
|
|
|
11
|
-
//#region ../../nodes/node-compositor/dist/renderers-
|
|
11
|
+
//#region ../../nodes/node-compositor/dist/renderers-1O3UOrUy.mjs
|
|
12
12
|
/**
|
|
13
13
|
* Solves a cubic bezier curve defined by control points (x1, y1) and (x2, y2)
|
|
14
14
|
* for a given progress parameter t in [0, 1].
|
|
@@ -741,6 +741,12 @@ function multiply(m1, m2) {
|
|
|
741
741
|
f: m1.b * m2.e + m1.d * m2.f + m1.f
|
|
742
742
|
};
|
|
743
743
|
}
|
|
744
|
+
function transformPoint(m, x, y) {
|
|
745
|
+
return {
|
|
746
|
+
x: m.a * x + m.c * y + m.e,
|
|
747
|
+
y: m.b * x + m.d * y + m.f
|
|
748
|
+
};
|
|
749
|
+
}
|
|
744
750
|
/** Materialize into a DOMMatrix for the renderer's transform stack. */
|
|
745
751
|
function toDOMMatrix(m) {
|
|
746
752
|
return new DOMMatrix([
|
|
@@ -770,7 +776,45 @@ function buildLayerMatrix(params) {
|
|
|
770
776
|
const ay = params.anchorY ?? .5;
|
|
771
777
|
const px = ax * params.width;
|
|
772
778
|
const py = ay * params.height;
|
|
773
|
-
|
|
779
|
+
const uniformScale = params.scale ?? 1;
|
|
780
|
+
const sx = (params.scaleX ?? 1) * uniformScale;
|
|
781
|
+
const sy = (params.scaleY ?? 1) * uniformScale;
|
|
782
|
+
return multiply(translate(params.x, params.y), multiply(translate(px, py), multiply(rotate(params.rotation), multiply(scale(sx, sy), translate(-px, -py)))));
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Resolves a layer's 2D world position on the canvas.
|
|
786
|
+
*
|
|
787
|
+
* For top-level layers, this is the layout position + animated translation delta.
|
|
788
|
+
* For children inside a 2D parent container, this inherits the parent container's
|
|
789
|
+
* 2D translation and transformation (parentMatrix).
|
|
790
|
+
*/
|
|
791
|
+
function resolveLayer2DPosition(params) {
|
|
792
|
+
const baseX = params.baseX ?? 0;
|
|
793
|
+
const baseY = params.baseY ?? 0;
|
|
794
|
+
const sampledX = params.sampledX ?? baseX;
|
|
795
|
+
const sampledY = params.sampledY ?? baseY;
|
|
796
|
+
let localX = 0;
|
|
797
|
+
let localY = 0;
|
|
798
|
+
if (params.rect && params.parentRect) {
|
|
799
|
+
localX = params.rect.x - params.parentRect.x + (sampledX - baseX);
|
|
800
|
+
localY = params.rect.y - params.parentRect.y + (sampledY - baseY);
|
|
801
|
+
} else if (params.rect) {
|
|
802
|
+
localX = params.rect.x + (sampledX - baseX);
|
|
803
|
+
localY = params.rect.y + (sampledY - baseY);
|
|
804
|
+
} else {
|
|
805
|
+
localX = sampledX;
|
|
806
|
+
localY = sampledY;
|
|
807
|
+
}
|
|
808
|
+
const pm = params.parentMatrix;
|
|
809
|
+
if (!pm) return {
|
|
810
|
+
x: localX,
|
|
811
|
+
y: localY
|
|
812
|
+
};
|
|
813
|
+
if ("isIdentity" in pm && pm.isIdentity) return {
|
|
814
|
+
x: localX,
|
|
815
|
+
y: localY
|
|
816
|
+
};
|
|
817
|
+
return transformPoint(pm, localX, localY);
|
|
774
818
|
}
|
|
775
819
|
const Transform3DMath = {
|
|
776
820
|
identity() {
|
|
@@ -1239,6 +1283,90 @@ function computeContainerScissor(matrix, width, height) {
|
|
|
1239
1283
|
height: Math.max(0, Math.round(maxY - minY))
|
|
1240
1284
|
};
|
|
1241
1285
|
}
|
|
1286
|
+
async function applyLayerEffects(effects, sourceTex, width, height, ctx, encoder, props, drawChild, excludes, shiftedFrame, compositionFrame, fps, isVideoMode, layerId) {
|
|
1287
|
+
const remainingEffects = effects.filter((e) => {
|
|
1288
|
+
if (!e || typeof e !== "object") return false;
|
|
1289
|
+
const op = e?.op;
|
|
1290
|
+
const name = e?.constructor?.name;
|
|
1291
|
+
if (op === "TemporalDeflicker" || op === "Deflicker" || op === "Relight3D" || name === "TemporalDeflicker" || name === "Relight3D") return false;
|
|
1292
|
+
return true;
|
|
1293
|
+
});
|
|
1294
|
+
if (remainingEffects.length === 0) return {
|
|
1295
|
+
texture: sourceTex,
|
|
1296
|
+
view: sourceTex.createView()
|
|
1297
|
+
};
|
|
1298
|
+
let currentMedia = {
|
|
1299
|
+
metadata: {
|
|
1300
|
+
width,
|
|
1301
|
+
height
|
|
1302
|
+
},
|
|
1303
|
+
operation: {
|
|
1304
|
+
op: "TextureSource",
|
|
1305
|
+
sourceTexture: sourceTex,
|
|
1306
|
+
dataType: "Image"
|
|
1307
|
+
},
|
|
1308
|
+
children: []
|
|
1309
|
+
};
|
|
1310
|
+
for (let i = 0; i < remainingEffects.length; i++) {
|
|
1311
|
+
const eff = remainingEffects[i];
|
|
1312
|
+
const effOp = eff && typeof eff.toOperation === "function" ? eff.toOperation() : eff;
|
|
1313
|
+
const opName = String(effOp.op ?? "effect");
|
|
1314
|
+
currentMedia = {
|
|
1315
|
+
metadata: {
|
|
1316
|
+
width,
|
|
1317
|
+
height
|
|
1318
|
+
},
|
|
1319
|
+
operation: {
|
|
1320
|
+
op: opName,
|
|
1321
|
+
id: `${layerId}-${opName}_${i}`,
|
|
1322
|
+
effect: eff,
|
|
1323
|
+
...effOp,
|
|
1324
|
+
dataType: "Image"
|
|
1325
|
+
},
|
|
1326
|
+
children: [currentMedia]
|
|
1327
|
+
};
|
|
1328
|
+
}
|
|
1329
|
+
const outTex = ctx.renderer.getTemporaryTexture(width, height, [sourceTex, ...excludes]);
|
|
1330
|
+
const outView = outTex.createView();
|
|
1331
|
+
ctx.renderer.beginFrame(encoder, outView, {
|
|
1332
|
+
r: 0,
|
|
1333
|
+
g: 0,
|
|
1334
|
+
b: 0,
|
|
1335
|
+
a: 0
|
|
1336
|
+
}, width, height, "clear").end();
|
|
1337
|
+
ctx.renderer.pushScissor({
|
|
1338
|
+
x: 0,
|
|
1339
|
+
y: 0,
|
|
1340
|
+
width,
|
|
1341
|
+
height
|
|
1342
|
+
});
|
|
1343
|
+
ctx.renderer.pushIdentity();
|
|
1344
|
+
try {
|
|
1345
|
+
await drawChild(currentMedia, {
|
|
1346
|
+
...props,
|
|
1347
|
+
containerWidth: width,
|
|
1348
|
+
containerHeight: height,
|
|
1349
|
+
renderId: `${props.renderId}-${layerId}-fx`,
|
|
1350
|
+
frame: shiftedFrame,
|
|
1351
|
+
compositionFrame,
|
|
1352
|
+
fps,
|
|
1353
|
+
isVideoMode,
|
|
1354
|
+
signals: props.signals,
|
|
1355
|
+
excludeTextures: [
|
|
1356
|
+
sourceTex,
|
|
1357
|
+
outTex,
|
|
1358
|
+
...excludes
|
|
1359
|
+
]
|
|
1360
|
+
}, outView, outTex, width, height);
|
|
1361
|
+
} finally {
|
|
1362
|
+
ctx.renderer.popTransform();
|
|
1363
|
+
ctx.renderer.popScissor();
|
|
1364
|
+
}
|
|
1365
|
+
return {
|
|
1366
|
+
texture: outTex,
|
|
1367
|
+
view: outView
|
|
1368
|
+
};
|
|
1369
|
+
}
|
|
1242
1370
|
const CompositorWebGPURenderer = async (args) => {
|
|
1243
1371
|
const { ctx, pass, targetView, targetTexture, targetWidth, targetHeight, encoder, props, drawChild } = args;
|
|
1244
1372
|
const { virtualMedia, fps, frame } = props;
|
|
@@ -1814,9 +1942,26 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1814
1942
|
return;
|
|
1815
1943
|
}
|
|
1816
1944
|
if (!model || model.meshes.length === 0) return;
|
|
1817
|
-
const
|
|
1818
|
-
const
|
|
1945
|
+
const baseX$1 = lop.x ?? 0;
|
|
1946
|
+
const baseY$1 = lop.y ?? 0;
|
|
1947
|
+
const sampledX$1 = target?.x ?? baseX$1;
|
|
1948
|
+
const sampledY$1 = target?.y ?? baseY$1;
|
|
1819
1949
|
const posZ = target?.z ?? lop.z ?? 0;
|
|
1950
|
+
let posX = sampledX$1;
|
|
1951
|
+
let posY = sampledY$1;
|
|
1952
|
+
if (!parent3DMatrix) {
|
|
1953
|
+
const pos = resolveLayer2DPosition({
|
|
1954
|
+
rect: null,
|
|
1955
|
+
parentRect: null,
|
|
1956
|
+
baseX: baseX$1,
|
|
1957
|
+
baseY: baseY$1,
|
|
1958
|
+
sampledX: sampledX$1,
|
|
1959
|
+
sampledY: sampledY$1,
|
|
1960
|
+
parentMatrix
|
|
1961
|
+
});
|
|
1962
|
+
posX = pos.x;
|
|
1963
|
+
posY = pos.y;
|
|
1964
|
+
}
|
|
1820
1965
|
const rotX = target?.rotateX ?? lop.rotateX ?? 0;
|
|
1821
1966
|
const rotY = target?.rotateY ?? lop.rotateY ?? 0;
|
|
1822
1967
|
const rotZ = (target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : target?.rotation ?? lop.rotation ?? 0;
|
|
@@ -2079,6 +2224,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2079
2224
|
localY = rect.y + (sampledY - baseY);
|
|
2080
2225
|
}
|
|
2081
2226
|
const scale$1 = target?.scale ?? lop.scale ?? 1;
|
|
2227
|
+
const scaleX = target?.scaleX ?? lop.scaleX ?? 1;
|
|
2228
|
+
const scaleY = target?.scaleY ?? lop.scaleY ?? 1;
|
|
2082
2229
|
const rotation = target?.rotation ?? lop.rotation ?? 0;
|
|
2083
2230
|
const layerOpacity = (target?.opacity ?? lop.opacity ?? 1) * accumulatedOpacity;
|
|
2084
2231
|
const rawAnimators = target?.animators ?? lop.animators;
|
|
@@ -2122,6 +2269,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2122
2269
|
height: layerH,
|
|
2123
2270
|
rotation,
|
|
2124
2271
|
scale: scale$1,
|
|
2272
|
+
scaleX,
|
|
2273
|
+
scaleY,
|
|
2125
2274
|
anchorX: isPathText ? anchorX * rect.width / layerW : anchorX,
|
|
2126
2275
|
anchorY: isPathText ? anchorY * rect.height / layerH : anchorY
|
|
2127
2276
|
}));
|
|
@@ -2148,8 +2297,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2148
2297
|
rotateXDeg: rotateX,
|
|
2149
2298
|
rotateYDeg: rotateY,
|
|
2150
2299
|
rotateZDeg: rotateZ !== 0 ? rotateZ : rotation,
|
|
2151
|
-
scaleX: scale$1,
|
|
2152
|
-
scaleY: scale$1,
|
|
2300
|
+
scaleX: scaleX * scale$1,
|
|
2301
|
+
scaleY: scaleY * scale$1,
|
|
2153
2302
|
perspectivePx: perspective,
|
|
2154
2303
|
originXRatio: perspectiveOriginX,
|
|
2155
2304
|
originYRatio: perspectiveOriginY,
|
|
@@ -2263,8 +2412,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2263
2412
|
if (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));
|
|
2264
2413
|
if (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));
|
|
2265
2414
|
if (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));
|
|
2266
|
-
const sx = layerW * scale$1;
|
|
2267
|
-
const sy = layerH * scale$1;
|
|
2415
|
+
const sx = layerW * scale$1 * scaleX;
|
|
2416
|
+
const sy = layerH * scale$1 * scaleY;
|
|
2268
2417
|
const sz = target?.scaleZ ?? lop.scaleZ ?? 1;
|
|
2269
2418
|
localM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));
|
|
2270
2419
|
const ax = lop.anchorX ?? .5;
|
|
@@ -2289,8 +2438,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2289
2438
|
(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation
|
|
2290
2439
|
],
|
|
2291
2440
|
scale: [
|
|
2292
|
-
scale$1,
|
|
2293
|
-
scale$1,
|
|
2441
|
+
scale$1 * scaleX,
|
|
2442
|
+
scale$1 * scaleY,
|
|
2294
2443
|
target?.scaleZ ?? lop.scaleZ ?? 1
|
|
2295
2444
|
],
|
|
2296
2445
|
anchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],
|
|
@@ -2420,8 +2569,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2420
2569
|
const shouldClip = lop.overflow !== "visible";
|
|
2421
2570
|
const scissorRect = shouldClip ? computeContainerScissor(layerMatrix, layerW, layerH) : null;
|
|
2422
2571
|
const clipRadius = shouldClip ? Math.min(target?.borderRadius ?? lop.borderRadius ?? 0, layerW / 2, layerH / 2) : 0;
|
|
2423
|
-
if ((kind === "flex" || kind === "block") && clipRadius <= 0 && !shouldPaintContainerBackground(kind, lop.background) && layerOpacity === 1 && blendMode === "normal" && !lop.borderWidth && !lop.borderColor && (typeof lop.relighting !== "object" || !lop.relighting) && (typeof lop.relight !== "object" || !lop.relight) && (typeof target?.relighting !== "object" || !target?.relighting) && (typeof target?.relight !== "object" || !target?.relight) && (typeof lop.deflicker !== "object" || !lop.deflicker) && (typeof target?.deflicker !== "object" || !target?.deflicker)) {
|
|
2424
|
-
if (scissorRect) ctx.renderer.
|
|
2572
|
+
if ((kind === "flex" || kind === "block") && (!Array.isArray(lop.effects) || lop.effects.length === 0) && clipRadius <= 0 && !shouldPaintContainerBackground(kind, lop.background) && layerOpacity === 1 && blendMode === "normal" && !lop.borderWidth && !lop.borderColor && (typeof lop.relighting !== "object" || !lop.relighting) && (typeof lop.relight !== "object" || !lop.relight) && (typeof target?.relighting !== "object" || !target?.relighting) && (typeof target?.relight !== "object" || !target?.relight) && (typeof lop.deflicker !== "object" || !lop.deflicker) && (typeof target?.deflicker !== "object" || !target?.deflicker)) {
|
|
2573
|
+
if (scissorRect) ctx.renderer.pushScissorIntersect(scissorRect);
|
|
2425
2574
|
const res = await renderNodeTree(nodeVM.children ?? [], activeTex, activeView, excludes, accumulatedOpacity, layerMatrix, rect, targetW, targetH, null, isRootScene);
|
|
2426
2575
|
if (scissorRect) ctx.renderer.popScissor();
|
|
2427
2576
|
return res;
|
|
@@ -2460,7 +2609,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2460
2609
|
let activeGroupTex = groupTex;
|
|
2461
2610
|
let activeGroupView = groupView;
|
|
2462
2611
|
if (nodeVM.children && nodeVM.children.length > 0) {
|
|
2463
|
-
if (scissorRect) ctx.renderer.
|
|
2612
|
+
if (scissorRect) ctx.renderer.pushScissorIntersect(scissorRect);
|
|
2464
2613
|
const res = await renderNodeTree(nodeVM.children, groupTex, groupView, [groupTex, ...groupExcludes], layerOpacity, layerMatrix, rect, targetW, targetH, null, false);
|
|
2465
2614
|
if (scissorRect) ctx.renderer.popScissor();
|
|
2466
2615
|
activeGroupTex = res.finalTex;
|
|
@@ -2566,6 +2715,15 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2566
2715
|
activeGroupTex = relitTex;
|
|
2567
2716
|
activeGroupView = relitView;
|
|
2568
2717
|
}
|
|
2718
|
+
if (Array.isArray(lop.effects) && lop.effects.length > 0) {
|
|
2719
|
+
const postEffects = await applyLayerEffects(lop.effects, activeGroupTex, targetW, targetH, ctx, encoder, props, drawChild, [
|
|
2720
|
+
activeTex,
|
|
2721
|
+
targetTexture,
|
|
2722
|
+
...excludes
|
|
2723
|
+
], shiftedFrame, compositionFrame, fps ?? 24, isVideoMode, lop.id ?? `container_${i}`);
|
|
2724
|
+
activeGroupTex = postEffects.texture;
|
|
2725
|
+
activeGroupView = postEffects.view;
|
|
2726
|
+
}
|
|
2569
2727
|
const compositeExcludes = [
|
|
2570
2728
|
activeTex,
|
|
2571
2729
|
targetTexture,
|
|
@@ -2842,7 +3000,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2842
3000
|
const rawLeafRelight = target?.relighting ?? lop.relighting ?? (typeof lop.relight === "object" ? lop.relight : void 0) ?? leafRelightEffect;
|
|
2843
3001
|
const relightOpts = typeof rawLeafRelight === "object" && rawLeafRelight !== null ? rawLeafRelight : void 0;
|
|
2844
3002
|
const shutterAngle = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;
|
|
2845
|
-
|
|
3003
|
+
const hasEffects = kind !== "media" && Array.isArray(lop.effects) && lop.effects.length > 0;
|
|
3004
|
+
if (glyphBatches && glyphBatches.length > 0 && (deflickerOpts || relightOpts || shutterAngle > 0 || hasEffects)) {
|
|
2846
3005
|
const glyphPass = ctx.renderer.beginFrame(encoder, localView, {
|
|
2847
3006
|
r: 0,
|
|
2848
3007
|
g: 0,
|
|
@@ -2975,6 +3134,12 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2975
3134
|
]);
|
|
2976
3135
|
}
|
|
2977
3136
|
}
|
|
3137
|
+
if (kind !== "media" && Array.isArray(lop.effects) && lop.effects.length > 0) finalTex = (await applyLayerEffects(lop.effects, finalTex, texW, texH, ctx, encoder, props, drawChild, [
|
|
3138
|
+
localTex,
|
|
3139
|
+
activeTex,
|
|
3140
|
+
targetTexture,
|
|
3141
|
+
...excludes
|
|
3142
|
+
], shiftedFrame, compositionFrame, fps ?? 24, isVideoMode, lop.id ?? `leaf_${i}`)).texture;
|
|
2978
3143
|
const borderExcludes = [
|
|
2979
3144
|
localTex,
|
|
2980
3145
|
finalTex,
|
|
@@ -3014,8 +3179,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3014
3179
|
if (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));
|
|
3015
3180
|
if (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));
|
|
3016
3181
|
if (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));
|
|
3017
|
-
const sx = layerW * scale$1;
|
|
3018
|
-
const sy = layerH * scale$1;
|
|
3182
|
+
const sx = layerW * scale$1 * scaleX;
|
|
3183
|
+
const sy = layerH * scale$1 * scaleY;
|
|
3019
3184
|
const sz = target?.scaleZ ?? lop.scaleZ ?? 1;
|
|
3020
3185
|
localM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));
|
|
3021
3186
|
const ax = lop.anchorX ?? .5;
|
|
@@ -3040,8 +3205,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3040
3205
|
(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation
|
|
3041
3206
|
],
|
|
3042
3207
|
scale: [
|
|
3043
|
-
scale$1,
|
|
3044
|
-
scale$1,
|
|
3208
|
+
scale$1 * scaleX,
|
|
3209
|
+
scale$1 * scaleY,
|
|
3045
3210
|
target?.scaleZ ?? lop.scaleZ ?? 1
|
|
3046
3211
|
],
|
|
3047
3212
|
anchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],
|
|
@@ -3365,4 +3530,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: CompositorWebGPURendere
|
|
|
3365
3530
|
|
|
3366
3531
|
//#endregion
|
|
3367
3532
|
export { Transform3DMath, renderers_default as default, has3DTransform };
|
|
3368
|
-
//# sourceMappingURL=renderer-
|
|
3533
|
+
//# sourceMappingURL=renderer-Cg-d78nf.mjs.map
|