framefields 2.6.1 → 2.7.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/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-CYrO9q9P.mjs → audio-j3ttoRDX.mjs} +4 -4
- package/dist/{audio-CYrO9q9P.mjs.map → audio-j3ttoRDX.mjs.map} +1 -1
- package/dist/{audio-B5mdR8vv.d.mts → audio-tL8CcPra.d.mts} +3 -3
- package/dist/{audio-B5mdR8vv.d.mts.map → audio-tL8CcPra.d.mts.map} +1 -1
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-cC6nOaMR.mjs → dist-BHTd-EC1.mjs} +164 -34
- package/dist/dist-BHTd-EC1.mjs.map +1 -0
- package/dist/{dist-DSKhnhDk.mjs → dist-BM0ilHvQ.mjs} +115 -21
- package/dist/dist-BM0ilHvQ.mjs.map +1 -0
- package/dist/{dist-D021IFfp.mjs → dist-BRXsfWKQ.mjs} +444 -8
- package/dist/dist-BRXsfWKQ.mjs.map +1 -0
- package/dist/{dist-BPOi5xb_.mjs → dist-CPtFZxtu.mjs} +2 -2
- package/dist/{dist-BPOi5xb_.mjs.map → dist-CPtFZxtu.mjs.map} +1 -1
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-Dvdwndk0.mjs → effects-Dy661XS_.mjs} +3 -3
- package/dist/{effects-Dvdwndk0.mjs.map → effects-Dy661XS_.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-B6a4CyoM.mjs → fonts-BcFhAqqO.mjs} +2 -2
- package/dist/{fonts-B6a4CyoM.mjs.map → fonts-BcFhAqqO.mjs.map} +1 -1
- package/dist/{gpu-CrQADlcf.mjs → gpu-zIhSz_0X.mjs} +2 -2
- package/dist/{gpu-CrQADlcf.mjs.map → gpu-zIhSz_0X.mjs.map} +1 -1
- package/dist/{index-ocZc12ZS.d.mts → index-B1ENegOQ.d.mts} +224 -2
- package/dist/index-B1ENegOQ.d.mts.map +1 -0
- package/dist/{index-D-Gnyffj.d.mts → index-CJRTBLZ4.d.mts} +4 -4
- package/dist/{index-D-Gnyffj.d.mts.map → index-CJRTBLZ4.d.mts.map} +1 -1
- package/dist/{index-BhzlG_1Q.d.mts → index-Cg30slle.d.mts} +2 -2
- package/dist/{index-BhzlG_1Q.d.mts.map → index-Cg30slle.d.mts.map} +1 -1
- package/dist/{index-B4o6F1JC.d.mts → index-DeeMmoEA.d.mts} +2 -2
- package/dist/{index-B4o6F1JC.d.mts.map → index-DeeMmoEA.d.mts.map} +1 -1
- package/dist/{index-CWG19cm-.d.mts → index-ePGQ_C7f.d.mts} +39 -16
- package/dist/index-ePGQ_C7f.d.mts.map +1 -0
- package/dist/{index-o8LxWdwz.d.mts → index-l1yRugLc.d.mts} +3 -3
- package/dist/{index-o8LxWdwz.d.mts.map → index-l1yRugLc.d.mts.map} +1 -1
- package/dist/{index-3Vdef2KE.d.mts → index-uDZ9Yuv-.d.mts} +5 -8
- package/dist/index-uDZ9Yuv-.d.mts.map +1 -0
- package/dist/index.d.mts +11 -11
- package/dist/index.mjs +53 -53
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-OTsGYyOU.mjs → preview-IpdVFuxv.mjs} +3 -2
- package/dist/{preview-OTsGYyOU.mjs.map → preview-IpdVFuxv.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-RF62TV3G.mjs → chunk-25WRUINA.mjs} +1 -1
- package/dist/preview-engine/{chunk-MMVFX42U.mjs → chunk-2AEWPT6Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-IIOHF7MH.mjs → chunk-2MDTUA3W.mjs} +1 -1
- package/dist/preview-engine/{chunk-KWTTANYN.mjs → chunk-2TLABBER.mjs} +1 -1
- package/dist/preview-engine/{chunk-MUOJMF7M.mjs → chunk-3QOJVABU.mjs} +1 -1
- package/dist/preview-engine/{chunk-RDEQ4LQU.mjs → chunk-4Q3ZUTQC.mjs} +1 -1
- package/dist/preview-engine/{chunk-OXXRKNHW.mjs → chunk-5BXCJ2QX.mjs} +1 -1
- package/dist/preview-engine/{chunk-JTT3YX7W.mjs → chunk-5R4UF7YK.mjs} +1 -1
- package/dist/preview-engine/{chunk-4C26NVQY.mjs → chunk-6THE6J3A.mjs} +1 -1
- package/dist/preview-engine/{chunk-SVE3XWO7.mjs → chunk-6VDYWMP5.mjs} +1 -1
- package/dist/preview-engine/{chunk-ULPLHKM2.mjs → chunk-7B7QQDPZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-ULVX4VYT.mjs → chunk-7ZA36EZE.mjs} +1 -1
- package/dist/preview-engine/{chunk-LYSU6S4O.mjs → chunk-AJ6BVUDB.mjs} +1 -1
- package/dist/preview-engine/{chunk-J24VHZS6.mjs → chunk-BDXGUSSF.mjs} +1 -1
- package/dist/preview-engine/{chunk-B7J72YSP.mjs → chunk-CC5V7UBF.mjs} +1 -1
- package/dist/preview-engine/{chunk-JD4TBC6Z.mjs → chunk-CP42LYD7.mjs} +1 -1
- package/dist/preview-engine/{chunk-LN3YAWUD.mjs → chunk-DJWDD3OE.mjs} +1 -1
- package/dist/preview-engine/{chunk-V3FODTPI.mjs → chunk-DZEWY4PR.mjs} +22 -22
- package/dist/preview-engine/{chunk-RKNV5N7D.mjs → chunk-ENGQ55LR.mjs} +1 -1
- package/dist/preview-engine/{chunk-AGLAJGQJ.mjs → chunk-FBXKVLTB.mjs} +14 -14
- package/dist/preview-engine/{chunk-MJCK5FLZ.mjs → chunk-FMEXTHL7.mjs} +1 -1
- package/dist/preview-engine/{chunk-UEQIO6AH.mjs → chunk-FQ7UCMWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-TPFDAOW7.mjs → chunk-FRIBHQTM.mjs} +1 -1
- package/dist/preview-engine/chunk-FT7HJ6IE.mjs +3 -0
- package/dist/preview-engine/{chunk-YEPYVASB.mjs → chunk-G3UOUGIE.mjs} +1 -1
- package/dist/preview-engine/{chunk-4JX5LBE2.mjs → chunk-H4GDIVX4.mjs} +1 -1
- package/dist/preview-engine/{chunk-LHCEQ77S.mjs → chunk-HU73APZL.mjs} +1 -1
- package/dist/preview-engine/{chunk-DDFWN7DI.mjs → chunk-I7QIQURU.mjs} +1 -1
- package/dist/preview-engine/{chunk-3KHD67Q3.mjs → chunk-ID344UBN.mjs} +1 -1
- package/dist/preview-engine/{chunk-5NT7WWJR.mjs → chunk-IGCXUGHT.mjs} +1 -1
- package/dist/preview-engine/{chunk-QPBTLJ5W.mjs → chunk-IK3YA6MC.mjs} +1 -1
- package/dist/preview-engine/chunk-J5SKQFJ6.mjs +1 -0
- package/dist/preview-engine/{chunk-Q7JN4EHX.mjs → chunk-JOPZNSZJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-SQ52PBF3.mjs → chunk-JOSNIMFT.mjs} +1 -1
- package/dist/preview-engine/{chunk-SXNCNG4L.mjs → chunk-JR443L5E.mjs} +1 -1
- package/dist/preview-engine/{chunk-FZLKPBKS.mjs → chunk-KCAFMWDM.mjs} +1 -1
- package/dist/preview-engine/{chunk-QRYCB6E3.mjs → chunk-LAEPNVOE.mjs} +1 -1
- package/dist/preview-engine/chunk-MAALUQK3.mjs +1974 -0
- package/dist/preview-engine/chunk-MHCXSWK7.mjs +1 -0
- package/dist/preview-engine/{chunk-4INGTMZ5.mjs → chunk-MWBARRK2.mjs} +1 -1
- package/dist/preview-engine/chunk-MXK2PP6K.mjs +1 -0
- package/dist/preview-engine/{chunk-GQIRV466.mjs → chunk-MXPN2GB7.mjs} +1 -1
- package/dist/preview-engine/{chunk-W2EZFV4Q.mjs → chunk-NHYB5YC3.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3IMPV6T.mjs → chunk-PXSKIGAP.mjs} +6 -6
- package/dist/preview-engine/{chunk-SP22JWN2.mjs → chunk-PYM2FBFA.mjs} +1 -1
- package/dist/preview-engine/chunk-QDTJ4MOJ.mjs +1 -0
- package/dist/preview-engine/{chunk-6PMATELR.mjs → chunk-RQU2GFGH.mjs} +1 -1
- package/dist/preview-engine/{chunk-UQD2UE6I.mjs → chunk-RWDPBES3.mjs} +1 -1
- package/dist/preview-engine/{chunk-QVW5METG.mjs → chunk-S5ONWSZF.mjs} +1 -1
- package/dist/preview-engine/{chunk-2YGR5YCN.mjs → chunk-SIU6JU2R.mjs} +1 -1
- package/dist/preview-engine/{chunk-NQZRPPUU.mjs → chunk-SJ3Q4AQP.mjs} +1 -1
- package/dist/preview-engine/{chunk-Q6CRERSJ.mjs → chunk-T36SKUWK.mjs} +9 -9
- package/dist/preview-engine/chunk-TEBZRQPG.mjs +1 -0
- package/dist/preview-engine/{chunk-WDWHOXSA.mjs → chunk-UUDML2SN.mjs} +1 -1
- package/dist/preview-engine/{chunk-RHXZXWJ4.mjs → chunk-VAS4IJZR.mjs} +1 -1
- package/dist/preview-engine/{chunk-DOCFOSA6.mjs → chunk-WTDK6H46.mjs} +1 -1
- package/dist/preview-engine/chunk-XNMEVVQB.mjs +1 -0
- package/dist/preview-engine/{chunk-AKT4YQWL.mjs → chunk-YVGT4NK6.mjs} +2 -2
- package/dist/preview-engine/{chunk-ZGMA27IG.mjs → chunk-ZR4QFIJR.mjs} +1 -1
- package/dist/preview-engine/chunk-ZYTXBBIX.mjs +1 -0
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +2 -2
- package/dist/preview-engine/{renderers-FC7G7KU7.mjs → renderers-2AKYMAIK.mjs} +1 -1
- package/dist/preview-engine/renderers-363CKEIG.mjs +1 -0
- package/dist/preview-engine/{renderers-EJGF3PYQ.mjs → renderers-36L24ZVS.mjs} +1 -1
- package/dist/preview-engine/renderers-3FMMVDMA.mjs +1 -0
- package/dist/preview-engine/{renderers-56TGEFDK.mjs → renderers-44AANAXR.mjs} +1 -1
- package/dist/preview-engine/renderers-4UUU62VV.mjs +1 -0
- package/dist/preview-engine/renderers-4ZTZFSAR.mjs +1 -0
- package/dist/preview-engine/{renderers-PYDOSDEY.mjs → renderers-5ZSB75GY.mjs} +1 -1
- package/dist/preview-engine/renderers-6KDD75BM.mjs +1 -0
- package/dist/preview-engine/renderers-7BJRD4G2.mjs +1 -0
- package/dist/preview-engine/{renderers-HBIBRZD7.mjs → renderers-AIIHGDJM.mjs} +1 -1
- package/dist/preview-engine/{renderers-P2FTCDZ7.mjs → renderers-AU746ORP.mjs} +1 -1
- package/dist/preview-engine/renderers-BIF2BETK.mjs +1 -0
- package/dist/preview-engine/{renderers-FD3ZT73R.mjs → renderers-BTQCHVHV.mjs} +1 -1
- package/dist/preview-engine/{renderers-HMNCIEU3.mjs → renderers-CFHBOAZG.mjs} +1 -1
- package/dist/preview-engine/renderers-CU5RW5UA.mjs +1 -0
- package/dist/preview-engine/renderers-DK5OBTKE.mjs +1 -0
- package/dist/preview-engine/renderers-EAKCDGTY.mjs +1 -0
- package/dist/preview-engine/{renderers-FYI6QNUH.mjs → renderers-EGBGC7MU.mjs} +1 -1
- package/dist/preview-engine/renderers-EVXCU7G7.mjs +1 -0
- package/dist/preview-engine/renderers-EXEYEH3F.mjs +1 -0
- package/dist/preview-engine/{renderers-RDHHVXRE.mjs → renderers-EXJDPS3T.mjs} +1 -1
- package/dist/preview-engine/renderers-F3WALPWI.mjs +1 -0
- package/dist/preview-engine/{renderers-4RVSLTCX.mjs → renderers-FS3EOB4J.mjs} +1 -1
- package/dist/preview-engine/{renderers-C3YXNKNM.mjs → renderers-GUL2MXDD.mjs} +1 -1
- package/dist/preview-engine/{renderers-EQDINUMT.mjs → renderers-H4HC44B5.mjs} +1 -1
- package/dist/preview-engine/renderers-H6565HO4.mjs +1 -0
- package/dist/preview-engine/renderers-HT5V6OZ2.mjs +1 -0
- package/dist/preview-engine/renderers-HXMOARWO.mjs +1 -0
- package/dist/preview-engine/renderers-HZ2Q7BGK.mjs +1 -0
- package/dist/preview-engine/renderers-I4N2K2KW.mjs +1 -0
- package/dist/preview-engine/renderers-I5J7U6CB.mjs +1 -0
- package/dist/preview-engine/renderers-IZV6QXR5.mjs +1 -0
- package/dist/preview-engine/renderers-JWGAPHWX.mjs +1 -0
- package/dist/preview-engine/renderers-KNDSVQTY.mjs +1 -0
- package/dist/preview-engine/renderers-KNDUOO6M.mjs +1 -0
- package/dist/preview-engine/renderers-KQAO3QEI.mjs +1 -0
- package/dist/preview-engine/{renderers-7SW2AHM2.mjs → renderers-LCSQLXRD.mjs} +1 -1
- package/dist/preview-engine/renderers-M34LOEHC.mjs +1 -0
- package/dist/preview-engine/renderers-ML6GNCWB.mjs +1 -0
- package/dist/preview-engine/renderers-NARG274F.mjs +1 -0
- package/dist/preview-engine/renderers-NCFPOSWR.mjs +1 -0
- package/dist/preview-engine/{renderers-ZAMSS7QN.mjs → renderers-PCOTECQB.mjs} +1 -1
- package/dist/preview-engine/renderers-PG5JHI2S.mjs +1 -0
- package/dist/preview-engine/{renderers-LTV5RFDJ.mjs → renderers-Q7MNLQJF.mjs} +1 -1
- package/dist/preview-engine/{renderers-GHP7SL5M.mjs → renderers-QXVSJYZL.mjs} +1 -1
- package/dist/preview-engine/{renderers-H2UI7YEO.mjs → renderers-R3ERZ3ZY.mjs} +1 -1
- package/dist/preview-engine/renderers-RXQKV65L.mjs +1 -0
- package/dist/preview-engine/renderers-SA73GD2B.mjs +1 -0
- package/dist/preview-engine/renderers-SLIXUHNX.mjs +1 -0
- package/dist/preview-engine/renderers-T462JZNA.mjs +1 -0
- package/dist/preview-engine/{renderers-LV6LLULR.mjs → renderers-TH2XZAYW.mjs} +1 -1
- package/dist/preview-engine/{renderers-ART3EGSZ.mjs → renderers-UHZIERVH.mjs} +1 -1
- package/dist/preview-engine/renderers-V7CFVGYK.mjs +1 -0
- package/dist/preview-engine/renderers-VY5E7BPK.mjs +1 -0
- package/dist/preview-engine/{renderers-ZDMDDWLN.mjs → renderers-WKXGELRG.mjs} +1 -1
- package/dist/preview-engine/{renderers-GY4R467B.mjs → renderers-WLDIIFR5.mjs} +1 -1
- package/dist/preview-engine/{renderers-NTKSN32T.mjs → renderers-WM6WBRH6.mjs} +1 -1
- package/dist/preview-engine/renderers-WT5FQZM7.mjs +228 -0
- package/dist/preview-engine/{renderers-YK74777T.mjs → renderers-WTKRLNNR.mjs} +1 -1
- package/dist/preview-engine/{renderers-BWRNCXR6.mjs → renderers-X6GKEVP7.mjs} +1 -1
- package/dist/preview-engine/renderers-Y47N5EYR.mjs +1 -0
- package/dist/preview-engine/renderers-Y4CUVZYI.mjs +1 -0
- package/dist/preview-engine/renderers-Y6YC7ZAK.mjs +1 -0
- package/dist/preview-engine/renderers-Y6ZYUAQG.mjs +1 -0
- package/dist/preview-engine/{renderers-YBTWN76S.mjs → renderers-YRWXYT5A.mjs} +1 -1
- package/dist/preview-engine/{renderers-SY435YU3.mjs → renderers-YWC4MXPG.mjs} +1 -1
- package/dist/preview-engine/{renderers-7GMW52G3.mjs → renderers-ZWNPYZN6.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-W4CWO2bp.mjs → program-KPBfq9tw.mjs} +95 -21
- package/dist/program-KPBfq9tw.mjs.map +1 -0
- package/dist/registry/index.json +1 -1
- package/dist/registry/lower-third.json +1 -1
- package/dist/registry/terminal.json +1 -1
- package/dist/registry/text-reveal.json +2 -2
- package/dist/registry/title-card.json +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-CX4rvqm9.mjs → renderer-1-FLx8kd.mjs} +3 -3
- package/dist/{renderer-CX4rvqm9.mjs.map → renderer-1-FLx8kd.mjs.map} +1 -1
- package/dist/{renderer-BIMm7lYG.mjs → renderer-47d3etrX.mjs} +4 -4
- package/dist/{renderer-BIMm7lYG.mjs.map → renderer-47d3etrX.mjs.map} +1 -1
- package/dist/{renderer-CPtyQrJI.mjs → renderer-6GCG6JxD.mjs} +3 -3
- package/dist/{renderer-CPtyQrJI.mjs.map → renderer-6GCG6JxD.mjs.map} +1 -1
- package/dist/{renderer-BE6K88VR.mjs → renderer-8BIDdgjt.mjs} +3 -3
- package/dist/{renderer-BE6K88VR.mjs.map → renderer-8BIDdgjt.mjs.map} +1 -1
- package/dist/renderer-B-5TlncB.mjs +5 -0
- package/dist/{renderer-FgP_1OgD.mjs → renderer-B1yzSbvC.mjs} +4 -4
- package/dist/{renderer-FgP_1OgD.mjs.map → renderer-B1yzSbvC.mjs.map} +1 -1
- package/dist/{renderer-158rymL0.mjs → renderer-B2YiXpp-.mjs} +2 -2
- package/dist/{renderer-158rymL0.mjs.map → renderer-B2YiXpp-.mjs.map} +1 -1
- package/dist/{renderer-eQP0fvgc.mjs → renderer-B55ljMI_.mjs} +2 -2
- package/dist/{renderer-eQP0fvgc.mjs.map → renderer-B55ljMI_.mjs.map} +1 -1
- package/dist/{renderer-Duorbrb8.mjs → renderer-B6Tg4UgH.mjs} +4 -4
- package/dist/{renderer-Duorbrb8.mjs.map → renderer-B6Tg4UgH.mjs.map} +1 -1
- package/dist/{renderer-DmrP4dsn.mjs → renderer-BFnf-8Yt.mjs} +3 -3
- package/dist/{renderer-DmrP4dsn.mjs.map → renderer-BFnf-8Yt.mjs.map} +1 -1
- package/dist/{renderer-CLP6Lm7y.mjs → renderer-BGHHoPiD.mjs} +2 -2
- package/dist/{renderer-BO5u8eFS.mjs → renderer-BHUjPi24.mjs} +2 -2
- package/dist/{renderer-BO5u8eFS.mjs.map → renderer-BHUjPi24.mjs.map} +1 -1
- package/dist/renderer-BHXtDg5_.mjs +3 -0
- package/dist/{renderer-HPBahXjt.mjs → renderer-BIk67-jU.mjs} +2 -2
- package/dist/{renderer-HPBahXjt.mjs.map → renderer-BIk67-jU.mjs.map} +1 -1
- package/dist/{renderer-C-dcd14F.d.mts → renderer-BLEmr0Lt.d.mts} +2 -2
- package/dist/{renderer-C-dcd14F.d.mts.map → renderer-BLEmr0Lt.d.mts.map} +1 -1
- package/dist/{renderer-tYmQUp4d.mjs → renderer-BLs5sDdk.mjs} +3 -3
- package/dist/{renderer-tYmQUp4d.mjs.map → renderer-BLs5sDdk.mjs.map} +1 -1
- package/dist/renderer-BPd3gvEt.mjs +5 -0
- package/dist/{renderer-BiH29MS6.mjs → renderer-BXul0Wy6.mjs} +3 -3
- package/dist/{renderer-BiH29MS6.mjs.map → renderer-BXul0Wy6.mjs.map} +1 -1
- package/dist/{renderer-DVdRzDwX.mjs → renderer-B_1SLBPa.mjs} +3 -3
- package/dist/{renderer-DVdRzDwX.mjs.map → renderer-B_1SLBPa.mjs.map} +1 -1
- package/dist/renderer-B_ep98BH.mjs +5 -0
- package/dist/renderer-Ba_KUbKW.mjs +5 -0
- package/dist/{renderer-dX7Fy1NR.mjs → renderer-BbyNUjE_.mjs} +3 -3
- package/dist/{renderer-dX7Fy1NR.mjs.map → renderer-BbyNUjE_.mjs.map} +1 -1
- package/dist/{renderer-0n4A8P2_.mjs → renderer-BcVr_cIk.mjs} +2 -2
- package/dist/{renderer-0n4A8P2_.mjs.map → renderer-BcVr_cIk.mjs.map} +1 -1
- package/dist/renderer-BeL2hstU.mjs +5 -0
- package/dist/renderer-Bj81osPQ.mjs +5 -0
- package/dist/{renderer-ZM2jwJbX.mjs → renderer-BjL7sKGU.mjs} +3 -3
- package/dist/{renderer-ZM2jwJbX.mjs.map → renderer-BjL7sKGU.mjs.map} +1 -1
- package/dist/{renderer-Bh7d3RSt.mjs → renderer-BjNcuJ4H.mjs} +3 -3
- package/dist/{renderer-Bh7d3RSt.mjs.map → renderer-BjNcuJ4H.mjs.map} +1 -1
- package/dist/{renderer-Sdsy27LH.mjs → renderer-Br8aDmf0.mjs} +2 -2
- package/dist/renderer-BvZQngSm.mjs +5 -0
- package/dist/renderer-BxgN8oXx.mjs +5 -0
- package/dist/{renderer-BQ-pHSPI.mjs → renderer-ByOvGGzp.mjs} +3 -3
- package/dist/{renderer-BQ-pHSPI.mjs.map → renderer-ByOvGGzp.mjs.map} +1 -1
- package/dist/{renderer-KkDYCAkn.mjs → renderer-C11qLlrz.mjs} +3 -3
- package/dist/{renderer-KkDYCAkn.mjs.map → renderer-C11qLlrz.mjs.map} +1 -1
- package/dist/{renderer-D52KWsb8.mjs → renderer-C5dyPQjG.mjs} +3 -3
- package/dist/{renderer-D52KWsb8.mjs.map → renderer-C5dyPQjG.mjs.map} +1 -1
- package/dist/renderer-C5jDrTBc.mjs +5 -0
- package/dist/{renderer-DTKtkgTO.mjs → renderer-C6TbU8U5.mjs} +3 -3
- package/dist/{renderer-DTKtkgTO.mjs.map → renderer-C6TbU8U5.mjs.map} +1 -1
- package/dist/{renderer-aT6MUYPr.mjs → renderer-C9bcEaBE.mjs} +3 -3
- package/dist/{renderer-aT6MUYPr.mjs.map → renderer-C9bcEaBE.mjs.map} +1 -1
- package/dist/{renderer-CsxO_wBG.mjs → renderer-CAH00Lub.mjs} +2 -2
- package/dist/{renderer-Cb74SQHm.mjs → renderer-CAhsBEpU.mjs} +2 -2
- package/dist/{renderer-Cb74SQHm.mjs.map → renderer-CAhsBEpU.mjs.map} +1 -1
- package/dist/renderer-CBK4M82Y.mjs +5 -0
- package/dist/{renderer-CFSh2eG-.mjs → renderer-CCH0gSF7.mjs} +3 -3
- package/dist/{renderer-CFSh2eG-.mjs.map → renderer-CCH0gSF7.mjs.map} +1 -1
- package/dist/{renderer-CHvEgLHy.mjs → renderer-CCbOp0BM.mjs} +3 -3
- package/dist/{renderer-CHvEgLHy.mjs.map → renderer-CCbOp0BM.mjs.map} +1 -1
- package/dist/{renderer-DrrWvz8l.mjs → renderer-CEb5GjcU.mjs} +3 -3
- package/dist/{renderer-DrrWvz8l.mjs.map → renderer-CEb5GjcU.mjs.map} +1 -1
- package/dist/{renderer-1KfQICGK.mjs → renderer-CIL9zh-a.mjs} +3 -3
- package/dist/{renderer-1KfQICGK.mjs.map → renderer-CIL9zh-a.mjs.map} +1 -1
- package/dist/{renderer-CEvj79Wg.mjs → renderer-CIbXIFOb.mjs} +4 -4
- package/dist/{renderer-CEvj79Wg.mjs.map → renderer-CIbXIFOb.mjs.map} +1 -1
- package/dist/renderer-CLHtCctc.mjs +5 -0
- package/dist/{renderer-DxOJv_G7.mjs → renderer-CLX33fIK.mjs} +3 -3
- package/dist/{renderer-DxOJv_G7.mjs.map → renderer-CLX33fIK.mjs.map} +1 -1
- package/dist/{renderer-BcaT2j3R.mjs → renderer-CLXpWDqx.mjs} +2 -2
- package/dist/{renderer-BcaT2j3R.mjs.map → renderer-CLXpWDqx.mjs.map} +1 -1
- package/dist/renderer-CLin7MNN.mjs +5 -0
- package/dist/{renderer-COcFh5bK.mjs → renderer-CLypsmiH.mjs} +3 -3
- package/dist/{renderer-COcFh5bK.mjs.map → renderer-CLypsmiH.mjs.map} +1 -1
- package/dist/renderer-CN7TypOB.mjs +5 -0
- package/dist/renderer-CV5Jfwq7.mjs +5 -0
- package/dist/renderer-Ca5E46WK.mjs +5 -0
- package/dist/renderer-CdbOtoOU.mjs +5 -0
- package/dist/renderer-CeD_bqWj.mjs +5 -0
- package/dist/{renderer-BnpMAub0.mjs → renderer-CfEuoZ7b.mjs} +3 -3
- package/dist/{renderer-BnpMAub0.mjs.map → renderer-CfEuoZ7b.mjs.map} +1 -1
- package/dist/renderer-CfzNNUOd.mjs +5 -0
- package/dist/{renderer-0W-Ty55h.mjs → renderer-Cg3h0Mz9.mjs} +3 -3
- package/dist/{renderer-0W-Ty55h.mjs.map → renderer-Cg3h0Mz9.mjs.map} +1 -1
- package/dist/renderer-Cl8TmdU8.mjs +5 -0
- package/dist/{renderer-CoaDDIS6.mjs → renderer-ClHqvIps.mjs} +10 -10
- package/dist/renderer-ClHqvIps.mjs.map +1 -0
- package/dist/renderer-CosBP_IM.mjs +5 -0
- package/dist/renderer-CpwVs5Fh.mjs +5 -0
- package/dist/renderer-Cq7baxNb.mjs +5 -0
- package/dist/{renderer-B_Oz9L3g.mjs → renderer-CqMz_iXy.mjs} +2 -2
- package/dist/{renderer-B_Oz9L3g.mjs.map → renderer-CqMz_iXy.mjs.map} +1 -1
- package/dist/{renderer-DORydJHm.mjs → renderer-CqSmfrE1.mjs} +3 -3
- package/dist/{renderer-DORydJHm.mjs.map → renderer-CqSmfrE1.mjs.map} +1 -1
- package/dist/{renderer-WTvo3wo9.d.mts → renderer-CrhJJKFY.d.mts} +5 -3
- package/dist/renderer-CrhJJKFY.d.mts.map +1 -0
- package/dist/{renderer-Bt3F1tmP.mjs → renderer-CxxwhUwy.mjs} +3 -3
- package/dist/{renderer-Bt3F1tmP.mjs.map → renderer-CxxwhUwy.mjs.map} +1 -1
- package/dist/{renderer-Cba208C9.mjs → renderer-D24aiXmB.mjs} +3 -3
- package/dist/{renderer-Cba208C9.mjs.map → renderer-D24aiXmB.mjs.map} +1 -1
- package/dist/renderer-D6GkxwAx.mjs +5 -0
- package/dist/renderer-D7SfGdzX.mjs +5 -0
- package/dist/renderer-D7wt09_l.mjs +5 -0
- package/dist/{renderer-CdJoOfQw.mjs → renderer-DBslE7fc.mjs} +2 -2
- package/dist/{renderer-CdJoOfQw.mjs.map → renderer-DBslE7fc.mjs.map} +1 -1
- package/dist/{renderer-Df-rf7RC.mjs → renderer-DE3Ki96C.mjs} +3 -3
- package/dist/{renderer-Df-rf7RC.mjs.map → renderer-DE3Ki96C.mjs.map} +1 -1
- package/dist/{renderer-DqIrYB0P.mjs → renderer-DJCqc98W.mjs} +3 -3
- package/dist/{renderer-DqIrYB0P.mjs.map → renderer-DJCqc98W.mjs.map} +1 -1
- package/dist/{renderer-E54Vv1_W.mjs → renderer-DODOyrty.mjs} +3 -3
- package/dist/{renderer-E54Vv1_W.mjs.map → renderer-DODOyrty.mjs.map} +1 -1
- package/dist/{renderer-DuFwDHHF.mjs → renderer-DRYxcfgi.mjs} +2 -2
- package/dist/renderer-DSuDMYqY.mjs +5 -0
- package/dist/{renderer-BGDKxfsM.mjs → renderer-DYreml_A.mjs} +3 -3
- package/dist/{renderer-BGDKxfsM.mjs.map → renderer-DYreml_A.mjs.map} +1 -1
- package/dist/{renderer-BGnMRdUK.mjs → renderer-DZJnNISO.mjs} +2 -2
- package/dist/{renderer-BGnMRdUK.mjs.map → renderer-DZJnNISO.mjs.map} +1 -1
- package/dist/renderer-DaIstCIs.mjs +5 -0
- package/dist/renderer-DbOD3Nc0.mjs +5 -0
- package/dist/{renderer-B3gQT1uq.mjs → renderer-DbenSRjl.mjs} +3 -3
- package/dist/{renderer-B3gQT1uq.mjs.map → renderer-DbenSRjl.mjs.map} +1 -1
- package/dist/{renderer-DGsWlXjl.mjs → renderer-DcXxkxds.mjs} +75 -72
- package/dist/renderer-DcXxkxds.mjs.map +1 -0
- package/dist/renderer-DdRCA1bn.mjs +6 -0
- package/dist/{renderer-PDs21Gsq.mjs → renderer-DdUtL-qF.mjs} +3 -3
- package/dist/{renderer-PDs21Gsq.mjs.map → renderer-DdUtL-qF.mjs.map} +1 -1
- package/dist/renderer-DfO37haf.mjs +5 -0
- package/dist/renderer-DjZwzxZ7.mjs +5 -0
- package/dist/renderer-DnAvySNy.mjs +5 -0
- package/dist/{renderer-BwnQRuce.mjs → renderer-DnbY04Qk.mjs} +3 -3
- package/dist/{renderer-BwnQRuce.mjs.map → renderer-DnbY04Qk.mjs.map} +1 -1
- package/dist/renderer-DnvEPm5E.mjs +5 -0
- package/dist/{renderer-C_-hWBF1.mjs → renderer-Do9mW_-B.mjs} +3 -3
- package/dist/{renderer-C_-hWBF1.mjs.map → renderer-Do9mW_-B.mjs.map} +1 -1
- package/dist/{renderer-PDAlUGKG.mjs → renderer-Dqg8qxjq.mjs} +3 -3
- package/dist/{renderer-PDAlUGKG.mjs.map → renderer-Dqg8qxjq.mjs.map} +1 -1
- package/dist/{renderer-wrXFfvpJ.mjs → renderer-DvkRbmb2.mjs} +3 -3
- package/dist/{renderer-wrXFfvpJ.mjs.map → renderer-DvkRbmb2.mjs.map} +1 -1
- package/dist/renderer-DwNpKnWf.mjs +5 -0
- package/dist/{renderer-Cv6od7Be.mjs → renderer-Dw_xy3zx.mjs} +3 -3
- package/dist/{renderer-Cv6od7Be.mjs.map → renderer-Dw_xy3zx.mjs.map} +1 -1
- package/dist/renderer-Dx3Dghus.mjs +5 -0
- package/dist/{renderer-lP23pU1s.mjs → renderer-DyrNti45.mjs} +3 -3
- package/dist/{renderer-lP23pU1s.mjs.map → renderer-DyrNti45.mjs.map} +1 -1
- package/dist/renderer-KvaoEwIk.mjs +5 -0
- package/dist/{renderer-Cw7R1U43.mjs → renderer-SwUFJ4aA.mjs} +3 -3
- package/dist/{renderer-Cw7R1U43.mjs.map → renderer-SwUFJ4aA.mjs.map} +1 -1
- package/dist/{renderer-C4Jfgjm5.mjs → renderer-XEoQnDs5.mjs} +3 -3
- package/dist/{renderer-C4Jfgjm5.mjs.map → renderer-XEoQnDs5.mjs.map} +1 -1
- package/dist/{renderer-BXGr426R.mjs → renderer-Xw9Zn3pD.mjs} +2 -2
- package/dist/{renderer-BXGr426R.mjs.map → renderer-Xw9Zn3pD.mjs.map} +1 -1
- package/dist/{renderer-BEpA2g1_.mjs → renderer-ZWIDTOLV.mjs} +2 -2
- package/dist/{renderer-BEpA2g1_.mjs.map → renderer-ZWIDTOLV.mjs.map} +1 -1
- package/dist/{renderer-D36Pjp0B.mjs → renderer-bGhRdKB7.mjs} +2 -2
- package/dist/{renderer-D36Pjp0B.mjs.map → renderer-bGhRdKB7.mjs.map} +1 -1
- package/dist/{renderer-ZarULMvJ.mjs → renderer-d4weUlVq.mjs} +2 -2
- package/dist/{renderer-ZarULMvJ.mjs.map → renderer-d4weUlVq.mjs.map} +1 -1
- package/dist/{renderer-YEDoDnsE.mjs → renderer-g7CMgD1v.mjs} +3 -3
- package/dist/{renderer-YEDoDnsE.mjs.map → renderer-g7CMgD1v.mjs.map} +1 -1
- package/dist/{renderer-CZGpETnc.mjs → renderer-gjLFqdv-.mjs} +4 -4
- package/dist/{renderer-CZGpETnc.mjs.map → renderer-gjLFqdv-.mjs.map} +1 -1
- package/dist/{renderer-H-Adf8Za.mjs → renderer-gv0u9XmU.mjs} +3 -3
- package/dist/{renderer-H-Adf8Za.mjs.map → renderer-gv0u9XmU.mjs.map} +1 -1
- package/dist/{renderer-FPYVmSf6.mjs → renderer-jJWwrha1.mjs} +3 -3
- package/dist/{renderer-FPYVmSf6.mjs.map → renderer-jJWwrha1.mjs.map} +1 -1
- package/dist/{renderer-BKhdqykZ.mjs → renderer-kl_pAczD.mjs} +3 -3
- package/dist/{renderer-BKhdqykZ.mjs.map → renderer-kl_pAczD.mjs.map} +1 -1
- package/dist/{renderer-BKL3UEzN.mjs → renderer-lrKwPhZi.mjs} +2 -2
- package/dist/{renderer-BKL3UEzN.mjs.map → renderer-lrKwPhZi.mjs.map} +1 -1
- package/dist/{renderer-C2O4nK9x.mjs → renderer-pnYj1REL.mjs} +3 -3
- package/dist/{renderer-C2O4nK9x.mjs.map → renderer-pnYj1REL.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-CZJ7NRsl.mjs → renderers-CP8CFWDs-CDikhBRO.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-CZJ7NRsl.mjs.map → renderers-CP8CFWDs-CDikhBRO.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-BrNF9l9s.mjs → signals-BeAWA_1Y.mjs} +3 -3
- package/dist/{signals-BrNF9l9s.mjs.map → signals-BeAWA_1Y.mjs.map} +1 -1
- package/dist/{src-_l81YkMD.mjs → src-LYcH_X8o.mjs} +233 -27
- package/dist/src-LYcH_X8o.mjs.map +1 -0
- package/package.json +58 -58
- package/dist/dist-D021IFfp.mjs.map +0 -1
- package/dist/dist-DSKhnhDk.mjs.map +0 -1
- package/dist/dist-cC6nOaMR.mjs.map +0 -1
- package/dist/index-3Vdef2KE.d.mts.map +0 -1
- package/dist/index-CWG19cm-.d.mts.map +0 -1
- package/dist/index-ocZc12ZS.d.mts.map +0 -1
- package/dist/preview-engine/chunk-3SR6BI4B.mjs +0 -1
- package/dist/preview-engine/chunk-5NLDETDV.mjs +0 -1974
- package/dist/preview-engine/chunk-ALSOO22Q.mjs +0 -1
- package/dist/preview-engine/chunk-NKGXINCU.mjs +0 -1
- package/dist/preview-engine/chunk-PJMX2GFY.mjs +0 -1
- package/dist/preview-engine/chunk-SIXIF5QZ.mjs +0 -3
- package/dist/preview-engine/renderers-4CRXZJ5G.mjs +0 -1
- package/dist/preview-engine/renderers-5QF4OLFQ.mjs +0 -1
- package/dist/preview-engine/renderers-5SOW6OVE.mjs +0 -1
- package/dist/preview-engine/renderers-6M2HPY2J.mjs +0 -1
- package/dist/preview-engine/renderers-7HT5NW7W.mjs +0 -1
- package/dist/preview-engine/renderers-ATTGUTYY.mjs +0 -1
- package/dist/preview-engine/renderers-AYWCRBQC.mjs +0 -1
- package/dist/preview-engine/renderers-BA6ZCPI5.mjs +0 -1
- package/dist/preview-engine/renderers-BAS7RXTC.mjs +0 -1
- package/dist/preview-engine/renderers-CZTCW4FC.mjs +0 -1
- package/dist/preview-engine/renderers-D2XEQ2YY.mjs +0 -1
- package/dist/preview-engine/renderers-DFIJYBW2.mjs +0 -1
- package/dist/preview-engine/renderers-EJN6M6DO.mjs +0 -1
- package/dist/preview-engine/renderers-EK3HQUUF.mjs +0 -1
- package/dist/preview-engine/renderers-G34C5J27.mjs +0 -1
- package/dist/preview-engine/renderers-GKVTNDVH.mjs +0 -1
- package/dist/preview-engine/renderers-HZBYQKIQ.mjs +0 -1
- package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +0 -1
- package/dist/preview-engine/renderers-ISASPH6T.mjs +0 -1
- package/dist/preview-engine/renderers-IT5ISWSA.mjs +0 -228
- package/dist/preview-engine/renderers-IW5MWDBI.mjs +0 -1
- package/dist/preview-engine/renderers-K2PI4WJS.mjs +0 -1
- package/dist/preview-engine/renderers-KESHVFL2.mjs +0 -1
- package/dist/preview-engine/renderers-KTZZVAB2.mjs +0 -1
- package/dist/preview-engine/renderers-KY5CJEOV.mjs +0 -1
- package/dist/preview-engine/renderers-M5W6SUQD.mjs +0 -1
- package/dist/preview-engine/renderers-MEM3REMI.mjs +0 -1
- package/dist/preview-engine/renderers-N36R42RL.mjs +0 -1
- package/dist/preview-engine/renderers-O5XMWFPY.mjs +0 -1
- package/dist/preview-engine/renderers-QJA35PKC.mjs +0 -1
- package/dist/preview-engine/renderers-TJIFTQHV.mjs +0 -1
- package/dist/preview-engine/renderers-TN4XN436.mjs +0 -1
- package/dist/preview-engine/renderers-UDYLCYCB.mjs +0 -1
- package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +0 -1
- package/dist/preview-engine/renderers-X6QNDC6R.mjs +0 -1
- package/dist/preview-engine/renderers-X6RNTJOV.mjs +0 -1
- package/dist/preview-engine/renderers-Y3N7236P.mjs +0 -1
- package/dist/preview-engine/renderers-YP3ASXIJ.mjs +0 -1
- package/dist/preview-engine/renderers-YVJAG3PD.mjs +0 -1
- package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +0 -1
- package/dist/program-W4CWO2bp.mjs.map +0 -1
- package/dist/renderer-8HnHWqYj.mjs +0 -5
- package/dist/renderer-8itujues.mjs +0 -5
- package/dist/renderer-BFods-7v.mjs +0 -5
- package/dist/renderer-BbQygRwc.mjs +0 -5
- package/dist/renderer-Bq_sPaCg.mjs +0 -5
- package/dist/renderer-BrkDrvqS.mjs +0 -5
- package/dist/renderer-C1diVT5Q.mjs +0 -5
- package/dist/renderer-C8E7ajTR.mjs +0 -5
- package/dist/renderer-CAz8JW5c.mjs +0 -5
- package/dist/renderer-CKfrUdGw.mjs +0 -5
- package/dist/renderer-CL0rqBA4.mjs +0 -5
- package/dist/renderer-COyavIEv.mjs +0 -5
- package/dist/renderer-CUrShvUZ.mjs +0 -5
- package/dist/renderer-CWvJ_GaL.mjs +0 -5
- package/dist/renderer-Ck0mGIo9.mjs +0 -5
- package/dist/renderer-CoaDDIS6.mjs.map +0 -1
- package/dist/renderer-CqIXqdf0.mjs +0 -5
- package/dist/renderer-Csod6biL.mjs +0 -5
- package/dist/renderer-CueO924-.mjs +0 -5
- package/dist/renderer-D1vM4obC.mjs +0 -5
- package/dist/renderer-DB7QUt90.mjs +0 -5
- package/dist/renderer-DGsWlXjl.mjs.map +0 -1
- package/dist/renderer-DLMDnKlA.mjs +0 -6
- package/dist/renderer-DNs7yWMr.mjs +0 -5
- package/dist/renderer-DOrtuoa9.mjs +0 -5
- package/dist/renderer-D_JgOawb.mjs +0 -5
- package/dist/renderer-DdLo1uoa.mjs +0 -5
- package/dist/renderer-DeX3JEZV.mjs +0 -5
- package/dist/renderer-DfgZVACG.mjs +0 -5
- package/dist/renderer-DoYG7Pn6.mjs +0 -5
- package/dist/renderer-Jwqa-BUN.mjs +0 -5
- package/dist/renderer-WTvo3wo9.d.mts.map +0 -1
- package/dist/renderer-WyaqnVMz.mjs +0 -3
- package/dist/renderer-Z2Vs-IqP.mjs +0 -5
- package/dist/renderer-ZnyCpdWE.mjs +0 -5
- package/dist/renderer-emCnsnTH.mjs +0 -5
- package/dist/renderer-ioxa4-Dy.mjs +0 -5
- package/dist/renderer-iyIwrDWO.mjs +0 -5
- package/dist/renderer-tuudA_RZ.mjs +0 -5
- package/dist/renderer-yyn8S821.mjs +0 -5
- package/dist/src-_l81YkMD.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
|
|
2
|
-
import { In as signalRegistry } from "./dist-
|
|
3
|
-
import { a as createFullscreenPipeline, c as drawTextureToTarget, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-
|
|
2
|
+
import { In as signalRegistry } from "./dist-BHTd-EC1.mjs";
|
|
3
|
+
import { a as createFullscreenPipeline, c as drawTextureToTarget, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-zIhSz_0X.mjs";
|
|
4
4
|
|
|
5
5
|
//#region ../../nodes/node-modulate/dist/renderers-B9q42xr2.mjs
|
|
6
6
|
function resolveVal(val, fallback, frame, fps) {
|
|
@@ -370,4 +370,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: ModulateWebGPURenderer
|
|
|
370
370
|
|
|
371
371
|
//#endregion
|
|
372
372
|
export { renderers_default as t };
|
|
373
|
-
//# sourceMappingURL=renderer-
|
|
373
|
+
//# sourceMappingURL=renderer-CLypsmiH.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-COcFh5bK.mjs","names":[],"sources":["../../../nodes/node-modulate/dist/renderers-B9q42xr2.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nfunction resolveVal(val, fallback, frame, fps) {\n\tif (val === void 0 || val === null) return fallback;\n\tif (typeof val === \"object\" && val !== null) {\n\t\tif (\"get\" in val && typeof val.get === \"function\") try {\n\t\t\tconst res = val.get({\n\t\t\t\tframe,\n\t\t\t\tfps,\n\t\t\t\ttime: fps > 0 ? frame / fps : 0,\n\t\t\t\tduration: 0,\n\t\t\t\tdurationMs: 0,\n\t\t\t\tprogress: 0,\n\t\t\t\tdeltaTime: fps > 0 ? 1 / fps : 0\n\t\t\t});\n\t\t\tconst n$1 = Number(res);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t} catch {}\n\t\tif (\"value\" in val) {\n\t\t\tconst n$1 = Number(val.value);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t}\n\t} else if (typeof val === \"function\") try {\n\t\tconst res = val(frame, fps);\n\t\tconst n$1 = Number(res);\n\t\tif (Number.isFinite(n$1)) return n$1;\n\t} catch {}\n\tconst n = Number(val);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction resolveModulateField(op, fieldName, defaultValue, minVal, maxVal, frame = 0, fps = 30) {\n\tconst handleId = op[`${fieldName}HandleId`];\n\tconst signalInput = handleId ? op.inputs?.[handleId] : null;\n\tconst hasSignal = !!(signalInput?.connectionValid && signalInput.outputItem?.type === \"Signal\");\n\tconst sd = hasSignal ? signalInput?.outputItem?.data : null;\n\tlet value = defaultValue;\n\tif (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === \"Number\") value = Number(signalInput.outputItem.data ?? defaultValue);\n\telse value = resolveVal(op[fieldName] ?? op.signals?.[fieldName], defaultValue, frame, fps);\n\telse if (sd && typeof sd === \"object\" && \"offset\" in sd) value = Number(sd.offset ?? defaultValue);\n\tvalue = Math.max(minVal, Math.min(maxVal, value));\n\treturn {\n\t\thasSignal,\n\t\tsd,\n\t\tvalue\n\t};\n}\nconst STATIC_MODULATE_SHADER = `\nstruct ModulateUniforms {\n\thue : f32,\n\tbrightness : f32,\n\tcontrast : f32,\n\texposure : f32,\n\tsaturation : f32,\n\tsepia : f32,\n\n\thasSignal_hue : f32,\n\thasSignal_brightness : f32,\n\thasSignal_contrast : f32,\n\thasSignal_exposure : f32,\n\thasSignal_saturation : f32,\n\thasSignal_sepia : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ModulateUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var hueTex : texture_2d<f32>;\n@group(2) @binding(1) var brightnessTex : texture_2d<f32>;\n@group(2) @binding(2) var contrastTex : texture_2d<f32>;\n@group(2) @binding(3) var exposureTex : texture_2d<f32>;\n@group(2) @binding(4) var saturationTex : texture_2d<f32>;\n@group(2) @binding(5) var sepiaTex : texture_2d<f32>;\n@group(2) @binding(6) var sigSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn apply_exposure(c: vec4<f32>, exposure: f32) -> vec4<f32> {\n\tlet scale = pow(2.0, exposure);\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = scale * unpremult.r;\n\tlet g = scale * unpremult.g;\n\tlet b = scale * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_hue(c: vec4<f32>, degrees: f32) -> vec4<f32> {\n\tlet rad = (degrees * 3.1415926535) / 180.0;\n\tlet cosVal = cos(rad);\n\tlet sinVal = sin(rad);\n\n\tlet row0 = vec4<f32>(0.213 + cosVal * 0.787 - sinVal * 0.213, 0.715 - cosVal * 0.715 - sinVal * 0.715, 0.072 - cosVal * 0.072 + sinVal * 0.928, 0.0);\n\tlet row1 = vec4<f32>(0.213 - cosVal * 0.213 + sinVal * 0.143, 0.715 + cosVal * 0.285 + sinVal * 0.14, 0.072 - cosVal * 0.072 - sinVal * 0.283, 0.0);\n\tlet row2 = vec4<f32>(0.213 - cosVal * 0.213 - sinVal * 0.787, 0.715 - cosVal * 0.715 + sinVal * 0.715, 0.072 + cosVal * 0.928 + sinVal * 0.072, 0.0);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_saturation(c: vec4<f32>, sat: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(0.213 + sat * 0.787, 0.715 * (1.0 - sat), 0.072 * (1.0 - sat), 0.0);\n\tlet row1 = vec4<f32>(0.213 * (1.0 - sat), 0.715 + sat * 0.285, 0.072 * (1.0 - sat), 0.0);\n\tlet row2 = vec4<f32>(0.213 * (1.0 - sat), 0.715 * (1.0 - sat), 0.072 + sat * 0.928, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_contrast(c: vec4<f32>, contrast: f32) -> vec4<f32> {\n\tlet offset = 0.5 * (1.0 - contrast);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = contrast * unpremult.r + offset;\n\tlet g = contrast * unpremult.g + offset;\n\tlet b = contrast * unpremult.b + offset;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_brightness(c: vec4<f32>, bright: f32) -> vec4<f32> {\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = bright * unpremult.r;\n\tlet g = bright * unpremult.g;\n\tlet b = bright * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_sepia(c: vec4<f32>, s: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(1.0 - 0.607 * s, 0.769 * s, 0.189 * s, 0.0);\n\tlet row1 = vec4<f32>(0.349 * s, 1.0 - 0.314 * s, 0.168 * s, 0.0);\n\tlet row2 = vec4<f32>(0.272 * s, 0.534 * s, 1.0 - 0.869 * s, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet original = textureSample(tex, samp, in.uv);\n\tvar color = original;\n\n\t// 1. Exposure\n\tvar exposure = u.exposure;\n\tif (u.hasSignal_exposure > 0.5) {\n\t\texposure = textureSampleLevel(exposureTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_exposure(color, exposure);\n\n\t// 2. Hue\n\tvar hue = u.hue;\n\tif (u.hasSignal_hue > 0.5) {\n\t\thue = textureSampleLevel(hueTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_hue(color, hue);\n\n\t// 3. Saturation\n\tvar saturation = u.saturation;\n\tif (u.hasSignal_saturation > 0.5) {\n\t\tsaturation = textureSampleLevel(saturationTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_saturation(color, saturation);\n\n\t// 4. Contrast\n\tvar contrast = u.contrast;\n\tif (u.hasSignal_contrast > 0.5) {\n\t\tcontrast = textureSampleLevel(contrastTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_contrast(color, contrast);\n\n\t// 5. Brightness\n\tvar brightness = u.brightness;\n\tif (u.hasSignal_brightness > 0.5) {\n\t\tbrightness = textureSampleLevel(brightnessTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_brightness(color, brightness);\n\n\t// 6. Sepia\n\tvar sepia = u.sepia;\n\tif (u.hasSignal_sepia > 0.5) {\n\t\tsepia = textureSampleLevel(sepiaTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_sepia(color, sepia);\n\n\treturn color;\n}\n`;\nconst modulateData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tmodulateUniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tmodulateSignalsLayout: texturesLayout(device, 6),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getModulateResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `modulate_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst modulateModule = device.createShaderModule({\n\t\t\tlabel: `modulate_static_${format}.wgsl`,\n\t\t\tcode: STATIC_MODULATE_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ModulatePipeline_static_${format}`,\n\t\t\tmodule: modulateModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.modulateUniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.modulateSignalsLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tmodulatePipeline: pipeline,\n\t\tmodulateUniformLayout: layouts.modulateUniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tmodulateSignalsLayout: layouts.modulateSignalsLayout\n\t};\n}\nconst ModulateWebGPURenderer = 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 !== \"Modulate\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst hueInfo = resolveModulateField(op, \"hue\", 0, 0, 360, compositionFrame, fps);\n\tconst brightnessInfo = resolveModulateField(op, \"brightness\", 1, 0, 2, compositionFrame, fps);\n\tconst contrastInfo = resolveModulateField(op, \"contrast\", 1, 0, 2, compositionFrame, fps);\n\tconst exposureInfo = resolveModulateField(op, \"exposure\", 0, -2, 2, compositionFrame, fps);\n\tconst saturationInfo = resolveModulateField(op, \"saturation\", 1, 0, 2, compositionFrame, fps);\n\tconst sepiaInfo = resolveModulateField(op, \"sepia\", 0, 0, 1, compositionFrame, fps);\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { modulatePipeline: pipeline, modulateUniformLayout: uLayout, singleTextureLayout: tLayout, modulateSignalsLayout: sigLayout } = getModulateResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tmodulateData[0] = hueInfo.value;\n\tmodulateData[1] = brightnessInfo.value;\n\tmodulateData[2] = contrastInfo.value;\n\tmodulateData[3] = exposureInfo.value;\n\tmodulateData[4] = saturationInfo.value;\n\tmodulateData[5] = sepiaInfo.value;\n\tconst fields = [\n\t\t{\n\t\t\tname: \"hue\",\n\t\t\tinfo: hueInfo,\n\t\t\tidx: 6\n\t\t},\n\t\t{\n\t\t\tname: \"brightness\",\n\t\t\tinfo: brightnessInfo,\n\t\t\tidx: 7\n\t\t},\n\t\t{\n\t\t\tname: \"contrast\",\n\t\t\tinfo: contrastInfo,\n\t\t\tidx: 8\n\t\t},\n\t\t{\n\t\t\tname: \"exposure\",\n\t\t\tinfo: exposureInfo,\n\t\t\tidx: 9\n\t\t},\n\t\t{\n\t\t\tname: \"saturation\",\n\t\t\tinfo: saturationInfo,\n\t\t\tidx: 10\n\t\t},\n\t\t{\n\t\t\tname: \"sepia\",\n\t\t\tinfo: sepiaInfo,\n\t\t\tidx: 11\n\t\t}\n\t];\n\tconst signalViews = [];\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tfor (const f of fields) {\n\t\tconst isGenerator = !!(f.info.hasSignal && f.info.sd);\n\t\tmodulateData[f.idx] = isGenerator ? 1 : 0;\n\t\tif (isGenerator) {\n\t\t\tconst view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd.nodeId ?? `modulate_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, width, height, props.renderId, frame, fps);\n\t\t\tsignalViews.push(view);\n\t\t} else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));\n\t}\n\tconst buffer = ctx.renderer.getTemporaryBuffer(modulateData);\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 }\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\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: signalViews[0]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: signalViews[1]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: signalViews[2]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: signalViews[3]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 4,\n\t\t\t\t\tresource: signalViews[4]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 5,\n\t\t\t\t\tresource: signalViews[5]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 6,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ModulateWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-B9q42xr2.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-CLypsmiH.mjs","names":[],"sources":["../../../nodes/node-modulate/dist/renderers-B9q42xr2.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nfunction resolveVal(val, fallback, frame, fps) {\n\tif (val === void 0 || val === null) return fallback;\n\tif (typeof val === \"object\" && val !== null) {\n\t\tif (\"get\" in val && typeof val.get === \"function\") try {\n\t\t\tconst res = val.get({\n\t\t\t\tframe,\n\t\t\t\tfps,\n\t\t\t\ttime: fps > 0 ? frame / fps : 0,\n\t\t\t\tduration: 0,\n\t\t\t\tdurationMs: 0,\n\t\t\t\tprogress: 0,\n\t\t\t\tdeltaTime: fps > 0 ? 1 / fps : 0\n\t\t\t});\n\t\t\tconst n$1 = Number(res);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t} catch {}\n\t\tif (\"value\" in val) {\n\t\t\tconst n$1 = Number(val.value);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t}\n\t} else if (typeof val === \"function\") try {\n\t\tconst res = val(frame, fps);\n\t\tconst n$1 = Number(res);\n\t\tif (Number.isFinite(n$1)) return n$1;\n\t} catch {}\n\tconst n = Number(val);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction resolveModulateField(op, fieldName, defaultValue, minVal, maxVal, frame = 0, fps = 30) {\n\tconst handleId = op[`${fieldName}HandleId`];\n\tconst signalInput = handleId ? op.inputs?.[handleId] : null;\n\tconst hasSignal = !!(signalInput?.connectionValid && signalInput.outputItem?.type === \"Signal\");\n\tconst sd = hasSignal ? signalInput?.outputItem?.data : null;\n\tlet value = defaultValue;\n\tif (!hasSignal) if (signalInput?.connectionValid && signalInput.outputItem?.type === \"Number\") value = Number(signalInput.outputItem.data ?? defaultValue);\n\telse value = resolveVal(op[fieldName] ?? op.signals?.[fieldName], defaultValue, frame, fps);\n\telse if (sd && typeof sd === \"object\" && \"offset\" in sd) value = Number(sd.offset ?? defaultValue);\n\tvalue = Math.max(minVal, Math.min(maxVal, value));\n\treturn {\n\t\thasSignal,\n\t\tsd,\n\t\tvalue\n\t};\n}\nconst STATIC_MODULATE_SHADER = `\nstruct ModulateUniforms {\n\thue : f32,\n\tbrightness : f32,\n\tcontrast : f32,\n\texposure : f32,\n\tsaturation : f32,\n\tsepia : f32,\n\n\thasSignal_hue : f32,\n\thasSignal_brightness : f32,\n\thasSignal_contrast : f32,\n\thasSignal_exposure : f32,\n\thasSignal_saturation : f32,\n\thasSignal_sepia : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ModulateUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var hueTex : texture_2d<f32>;\n@group(2) @binding(1) var brightnessTex : texture_2d<f32>;\n@group(2) @binding(2) var contrastTex : texture_2d<f32>;\n@group(2) @binding(3) var exposureTex : texture_2d<f32>;\n@group(2) @binding(4) var saturationTex : texture_2d<f32>;\n@group(2) @binding(5) var sepiaTex : texture_2d<f32>;\n@group(2) @binding(6) var sigSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn apply_exposure(c: vec4<f32>, exposure: f32) -> vec4<f32> {\n\tlet scale = pow(2.0, exposure);\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = scale * unpremult.r;\n\tlet g = scale * unpremult.g;\n\tlet b = scale * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_hue(c: vec4<f32>, degrees: f32) -> vec4<f32> {\n\tlet rad = (degrees * 3.1415926535) / 180.0;\n\tlet cosVal = cos(rad);\n\tlet sinVal = sin(rad);\n\n\tlet row0 = vec4<f32>(0.213 + cosVal * 0.787 - sinVal * 0.213, 0.715 - cosVal * 0.715 - sinVal * 0.715, 0.072 - cosVal * 0.072 + sinVal * 0.928, 0.0);\n\tlet row1 = vec4<f32>(0.213 - cosVal * 0.213 + sinVal * 0.143, 0.715 + cosVal * 0.285 + sinVal * 0.14, 0.072 - cosVal * 0.072 - sinVal * 0.283, 0.0);\n\tlet row2 = vec4<f32>(0.213 - cosVal * 0.213 - sinVal * 0.787, 0.715 - cosVal * 0.715 + sinVal * 0.715, 0.072 + cosVal * 0.928 + sinVal * 0.072, 0.0);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_saturation(c: vec4<f32>, sat: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(0.213 + sat * 0.787, 0.715 * (1.0 - sat), 0.072 * (1.0 - sat), 0.0);\n\tlet row1 = vec4<f32>(0.213 * (1.0 - sat), 0.715 + sat * 0.285, 0.072 * (1.0 - sat), 0.0);\n\tlet row2 = vec4<f32>(0.213 * (1.0 - sat), 0.715 * (1.0 - sat), 0.072 + sat * 0.928, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_contrast(c: vec4<f32>, contrast: f32) -> vec4<f32> {\n\tlet offset = 0.5 * (1.0 - contrast);\n\t\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = contrast * unpremult.r + offset;\n\tlet g = contrast * unpremult.g + offset;\n\tlet b = contrast * unpremult.b + offset;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_brightness(c: vec4<f32>, bright: f32) -> vec4<f32> {\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = bright * unpremult.r;\n\tlet g = bright * unpremult.g;\n\tlet b = bright * unpremult.b;\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\nfn apply_sepia(c: vec4<f32>, s: f32) -> vec4<f32> {\n\tlet row0 = vec4<f32>(1.0 - 0.607 * s, 0.769 * s, 0.189 * s, 0.0);\n\tlet row1 = vec4<f32>(0.349 * s, 1.0 - 0.314 * s, 0.168 * s, 0.0);\n\tlet row2 = vec4<f32>(0.272 * s, 0.534 * s, 1.0 - 0.869 * s, 0.0);\n\n\tvar unpremult = c;\n\tif (unpremult.a > 0.0) { unpremult = vec4<f32>(unpremult.rgb / unpremult.a, unpremult.a); }\n\tlet r = dot(row0, unpremult);\n\tlet g = dot(row1, unpremult);\n\tlet b = dot(row2, unpremult);\n\tlet outAlpha = clamp(unpremult.a, 0.0, 1.0);\n\tlet outRgb = clamp(vec3<f32>(r, g, b), vec3<f32>(0.0), vec3<f32>(1.0)) * outAlpha;\n\treturn vec4<f32>(outRgb, outAlpha);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet original = textureSample(tex, samp, in.uv);\n\tvar color = original;\n\n\t// 1. Exposure\n\tvar exposure = u.exposure;\n\tif (u.hasSignal_exposure > 0.5) {\n\t\texposure = textureSampleLevel(exposureTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_exposure(color, exposure);\n\n\t// 2. Hue\n\tvar hue = u.hue;\n\tif (u.hasSignal_hue > 0.5) {\n\t\thue = textureSampleLevel(hueTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_hue(color, hue);\n\n\t// 3. Saturation\n\tvar saturation = u.saturation;\n\tif (u.hasSignal_saturation > 0.5) {\n\t\tsaturation = textureSampleLevel(saturationTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_saturation(color, saturation);\n\n\t// 4. Contrast\n\tvar contrast = u.contrast;\n\tif (u.hasSignal_contrast > 0.5) {\n\t\tcontrast = textureSampleLevel(contrastTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_contrast(color, contrast);\n\n\t// 5. Brightness\n\tvar brightness = u.brightness;\n\tif (u.hasSignal_brightness > 0.5) {\n\t\tbrightness = textureSampleLevel(brightnessTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_brightness(color, brightness);\n\n\t// 6. Sepia\n\tvar sepia = u.sepia;\n\tif (u.hasSignal_sepia > 0.5) {\n\t\tsepia = textureSampleLevel(sepiaTex, sigSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n\t}\n\tcolor = apply_sepia(color, sepia);\n\n\treturn color;\n}\n`;\nconst modulateData = new Float32Array(12);\nconst getDeviceLayouts = perDevice((device) => ({\n\tmodulateUniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tmodulateSignalsLayout: texturesLayout(device, 6),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getModulateResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `modulate_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst modulateModule = device.createShaderModule({\n\t\t\tlabel: `modulate_static_${format}.wgsl`,\n\t\t\tcode: STATIC_MODULATE_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ModulatePipeline_static_${format}`,\n\t\t\tmodule: modulateModule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.modulateUniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.modulateSignalsLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tmodulatePipeline: pipeline,\n\t\tmodulateUniformLayout: layouts.modulateUniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tmodulateSignalsLayout: layouts.modulateSignalsLayout\n\t};\n}\nconst ModulateWebGPURenderer = 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 !== \"Modulate\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst hueInfo = resolveModulateField(op, \"hue\", 0, 0, 360, compositionFrame, fps);\n\tconst brightnessInfo = resolveModulateField(op, \"brightness\", 1, 0, 2, compositionFrame, fps);\n\tconst contrastInfo = resolveModulateField(op, \"contrast\", 1, 0, 2, compositionFrame, fps);\n\tconst exposureInfo = resolveModulateField(op, \"exposure\", 0, -2, 2, compositionFrame, fps);\n\tconst saturationInfo = resolveModulateField(op, \"saturation\", 1, 0, 2, compositionFrame, fps);\n\tconst sepiaInfo = resolveModulateField(op, \"sepia\", 0, 0, 1, compositionFrame, fps);\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { modulatePipeline: pipeline, modulateUniformLayout: uLayout, singleTextureLayout: tLayout, modulateSignalsLayout: sigLayout } = getModulateResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tmodulateData[0] = hueInfo.value;\n\tmodulateData[1] = brightnessInfo.value;\n\tmodulateData[2] = contrastInfo.value;\n\tmodulateData[3] = exposureInfo.value;\n\tmodulateData[4] = saturationInfo.value;\n\tmodulateData[5] = sepiaInfo.value;\n\tconst fields = [\n\t\t{\n\t\t\tname: \"hue\",\n\t\t\tinfo: hueInfo,\n\t\t\tidx: 6\n\t\t},\n\t\t{\n\t\t\tname: \"brightness\",\n\t\t\tinfo: brightnessInfo,\n\t\t\tidx: 7\n\t\t},\n\t\t{\n\t\t\tname: \"contrast\",\n\t\t\tinfo: contrastInfo,\n\t\t\tidx: 8\n\t\t},\n\t\t{\n\t\t\tname: \"exposure\",\n\t\t\tinfo: exposureInfo,\n\t\t\tidx: 9\n\t\t},\n\t\t{\n\t\t\tname: \"saturation\",\n\t\t\tinfo: saturationInfo,\n\t\t\tidx: 10\n\t\t},\n\t\t{\n\t\t\tname: \"sepia\",\n\t\t\tinfo: sepiaInfo,\n\t\t\tidx: 11\n\t\t}\n\t];\n\tconst signalViews = [];\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tfor (const f of fields) {\n\t\tconst isGenerator = !!(f.info.hasSignal && f.info.sd);\n\t\tmodulateData[f.idx] = isGenerator ? 1 : 0;\n\t\tif (isGenerator) {\n\t\t\tconst view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd.nodeId ?? `modulate_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, width, height, props.renderId, frame, fps);\n\t\t\tsignalViews.push(view);\n\t\t} else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));\n\t}\n\tconst buffer = ctx.renderer.getTemporaryBuffer(modulateData);\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 }\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\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: signalViews[0]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: signalViews[1]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: signalViews[2]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: signalViews[3]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 4,\n\t\t\t\t\tresource: signalViews[4]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 5,\n\t\t\t\t\tresource: signalViews[5]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 6,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ModulateWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-B9q42xr2.mjs.map"],"mappings":";;;;;AAKA,SAAS,WAAW,KAAK,UAAU,OAAO,KAAK;AAC9C,KAAI,QAAQ,KAAK,KAAK,QAAQ,KAAM,QAAO;AAC3C,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC5C,MAAI,SAAS,OAAO,OAAO,IAAI,QAAQ,WAAY,KAAI;GACtD,MAAM,MAAM,IAAI,IAAI;IACnB;IACA;IACA,MAAM,MAAM,IAAI,QAAQ,MAAM;IAC9B,UAAU;IACV,YAAY;IACZ,UAAU;IACV,WAAW,MAAM,IAAI,IAAI,MAAM;IAC/B,CAAC;GACF,MAAM,MAAM,OAAO,IAAI;AACvB,OAAI,OAAO,SAAS,IAAI,CAAE,QAAO;UAC1B;AACR,MAAI,WAAW,KAAK;GACnB,MAAM,MAAM,OAAO,IAAI,MAAM;AAC7B,OAAI,OAAO,SAAS,IAAI,CAAE,QAAO;;YAExB,OAAO,QAAQ,WAAY,KAAI;EACzC,MAAM,MAAM,IAAI,OAAO,IAAI;EAC3B,MAAM,MAAM,OAAO,IAAI;AACvB,MAAI,OAAO,SAAS,IAAI,CAAE,QAAO;SAC1B;CACR,MAAM,IAAI,OAAO,IAAI;AACrB,QAAO,OAAO,SAAS,EAAE,GAAG,IAAI;;AAEjC,SAAS,qBAAqB,IAAI,WAAW,cAAc,QAAQ,QAAQ,QAAQ,GAAG,MAAM,IAAI;CAC/F,MAAM,WAAW,GAAG,GAAG,UAAU;CACjC,MAAM,cAAc,WAAW,GAAG,SAAS,YAAY;CACvD,MAAM,YAAY,CAAC,EAAE,aAAa,mBAAmB,YAAY,YAAY,SAAS;CACtF,MAAM,KAAK,YAAY,aAAa,YAAY,OAAO;CACvD,IAAI,QAAQ;AACZ,KAAI,CAAC,UAAW,KAAI,aAAa,mBAAmB,YAAY,YAAY,SAAS,SAAU,SAAQ,OAAO,YAAY,WAAW,QAAQ,aAAa;KACrJ,SAAQ,WAAW,GAAG,cAAc,GAAG,UAAU,YAAY,cAAc,OAAO,IAAI;UAClF,MAAM,OAAO,OAAO,YAAY,YAAY,GAAI,SAAQ,OAAO,GAAG,UAAU,aAAa;AAClG,SAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,MAAM,CAAC;AACjD,QAAO;EACN;EACA;EACA;EACA;;AAEF,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B7B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwIvB,MAAM,eAAe,IAAI,aAAa,GAAG;AACzC,MAAM,mBAAmB,WAAW,YAAY;CAC/C,uBAAuB,wBAAwB,QAAQ,CAAC,UAAU,CAAC;CACnE,qBAAqB,wBAAwB,QAAQ,CAAC,WAAW,UAAU,CAAC;CAC5E,uBAAuB,eAAe,QAAQ,EAAE;CAChD,+BAA+B,IAAI,KAAK;CACxC,EAAE;AACH,SAAS,qBAAqB,QAAQ,QAAQ;CAC7C,MAAM,UAAU,iBAAiB,OAAO;CACxC,MAAM,WAAW,YAAY;CAC7B,IAAI,WAAW,QAAQ,cAAc,IAAI,SAAS;AAClD,KAAI,CAAC,UAAU;EACd,MAAM,iBAAiB,OAAO,mBAAmB;GAChD,OAAO,mBAAmB,OAAO;GACjC,MAAM;GACN,CAAC;AACF,aAAW,yBAAyB,QAAQ;GAC3C,OAAO,2BAA2B;GAClC,QAAQ;GACR,SAAS;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR;GACD;GACA,CAAC;AACF,UAAQ,cAAc,IAAI,UAAU,SAAS;;AAE9C,QAAO;EACN,kBAAkB;EAClB,uBAAuB,QAAQ;EAC/B,qBAAqB,QAAQ;EAC7B,uBAAuB,QAAQ;EAC/B;;AAEF,MAAM,yBAAyB,OAAO,SAAS;CAC9C,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,QAAQ,MAAM,SAAS;CAC7B,MAAM,mBAAmB,MAAM,oBAAoB;CACnD,MAAM,MAAM,MAAM,OAAO;CACzB,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,cAAc,CAAC,GAAI;CAClC,MAAM,aAAa,MAAM,aAAa,WAAW;AACjD,KAAI,CAAC,WAAY;AACjB,MAAK,KAAK;CACV,MAAM,UAAU,qBAAqB,IAAI,OAAO,GAAG,GAAG,KAAK,kBAAkB,IAAI;CACjF,MAAM,iBAAiB,qBAAqB,IAAI,cAAc,GAAG,GAAG,GAAG,kBAAkB,IAAI;CAC7F,MAAM,eAAe,qBAAqB,IAAI,YAAY,GAAG,GAAG,GAAG,kBAAkB,IAAI;CACzF,MAAM,eAAe,qBAAqB,IAAI,YAAY,GAAG,IAAI,GAAG,kBAAkB,IAAI;CAC1F,MAAM,iBAAiB,qBAAqB,IAAI,cAAc,GAAG,GAAG,GAAG,kBAAkB,IAAI;CAC7F,MAAM,YAAY,qBAAqB,IAAI,SAAS,GAAG,GAAG,GAAG,kBAAkB,IAAI;CACnF,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,MAAM,EAAE,SAAS,WAAW,MAAM,mBAAmB,MAAM,WAAW;CACtE,MAAM,EAAE,kBAAkB,UAAU,uBAAuB,SAAS,qBAAqB,SAAS,uBAAuB,cAAc,qBAAqB,IAAI,QAAQ,IAAI,SAAS,OAAO;CAC5L,MAAM,UAAU,IAAI,SAAS,aAAa,WAAW,IAAI,OAAO;CAChE,MAAM,SAAS,IAAI,SAAS,oBAAoB,OAAO,QAAQ;EAC9D;EACA;EACA,GAAG,MAAM,mBAAmB,EAAE;EAC9B,CAAC;AACF,cAAa,KAAK,QAAQ;AAC1B,cAAa,KAAK,eAAe;AACjC,cAAa,KAAK,aAAa;AAC/B,cAAa,KAAK,aAAa;AAC/B,cAAa,KAAK,eAAe;AACjC,cAAa,KAAK,UAAU;CAC5B,MAAM,SAAS;EACd;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;GACC,MAAM;GACN,MAAM;GACN,KAAK;GACL;EACD;CACD,MAAM,cAAc,EAAE;CACtB,MAAM,EAAE,gBAAgB,oBAAoB,aAAa,OAAO,OAAO,IAAI;AAC3E,MAAK,MAAM,KAAK,QAAQ;EACvB,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK;AAClD,eAAa,EAAE,OAAO,cAAc,IAAI;AACxC,MAAI,aAAa;GAChB,MAAM,OAAO,eAAe,yBAAyB,IAAI,QAAQ,SAAS,EAAE,KAAK,GAAG,UAAU,YAAY,EAAE,KAAK,OAAO,gBAAgB,iBAAiB,EAAE,KAAK,IAAI,OAAO,QAAQ,MAAM,UAAU,OAAO,IAAI;AAC9M,eAAY,KAAK,KAAK;QAChB,aAAY,KAAK,eAAe,uBAAuB,IAAI,OAAO,CAAC;;CAE3E,MAAM,SAAS,IAAI,SAAS,mBAAmB,aAAa;AAC5D,oBAAmB,SAAS,OAAO,YAAY,EAAE,UAAU;EAC1D,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS,CAAC;IACT,SAAS;IACT,UAAU,EAAE,QAAQ;IACpB,CAAC;GACF,CAAC;EACF,IAAI,SAAS,eAAe,aAAa,IAAI,QAAQ,SAAS,QAAQ,QAAQ;EAC9E,IAAI,OAAO,gBAAgB;GAC1B,QAAQ;GACR,SAAS;IACR;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU,YAAY;KACtB;IACD;KACC,SAAS;KACT,UAAU;KACV;IACD;GACD,CAAC;EACF,CAAC;AACF,qBAAoB,MAAM,QAAQ,GAAG,WAAW,EAAE;;AAKnD,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,wBAAwB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Jt as isSignal, vn as resolveNumber } from "./dist-BRXsfWKQ.mjs";
|
|
2
2
|
import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
|
|
3
|
-
import { g as WebGPUAudioProcessor } from "./dist-
|
|
3
|
+
import { g as WebGPUAudioProcessor } from "./dist-BHTd-EC1.mjs";
|
|
4
4
|
|
|
5
5
|
//#region ../../nodes/node-stereo-panning/dist/renderers-Dc15sLt-.mjs
|
|
6
6
|
const PARAM_ORDER = ["pan"];
|
|
@@ -96,4 +96,4 @@ var renderers_default = defineRenderer({ audioProcessor: stereoPanningAudioProce
|
|
|
96
96
|
|
|
97
97
|
//#endregion
|
|
98
98
|
export { renderers_default as t };
|
|
99
|
-
//# sourceMappingURL=renderer-
|
|
99
|
+
//# sourceMappingURL=renderer-CfEuoZ7b.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-CfEuoZ7b.mjs","names":[],"sources":["../../../nodes/node-stereo-panning/dist/renderers-Dc15sLt-.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { isSignal, resolveNumber } from \"@framefields/node-sdk\";\nimport { WebGPUAudioProcessor } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst PARAM_ORDER = [\"pan\"];\nconst PANNING_SHADER_TEMPLATE = () => `\nstruct Uniforms {\n sampleRate : f32,\n pan : f32,\n hasPanSig : f32,\n baseTime : f32,\n frame : f32,\n numSamples : f32,\n numChannels : f32,\n pad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : Uniforms;\n@group(0) @binding(1) var<storage, read> inputChannels : array<f32>;\n@group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;\n@group(0) @binding(3) var<storage, read_write> state : array<f32>;\n@group(0) @binding(4) var<storage, read> panSignal : array<f32>;\n\n@compute @workgroup_size(1)\nfn main(@builtin(global_invocation_id) gid : vec3<u32>) {\n if (gid.x != 0u) { return; }\n\n let numSamples = u32(u.numSamples);\n let numChannels = u32(u.numChannels);\n\n for (var index = 0u; index < numSamples; index = index + 1u) {\n var currentPan = u.pan;\n if (u.hasPanSig > 0.5f) {\n currentPan = panSignal[index];\n }\n let clampedPan = max(-1.0f, min(1.0f, currentPan));\n var leftGain = 1.0f;\n var rightGain = 1.0f;\n\n if (clampedPan < 0.0f) {\n rightGain = 1.0f + clampedPan;\n } else if (clampedPan > 0.0f) {\n leftGain = 1.0f - clampedPan;\n }\n\n if (numChannels > 1u) {\n outputChannels[index] = inputChannels[index] * leftGain;\n outputChannels[numSamples + index] = inputChannels[numSamples + index] * rightGain;\n } else {\n outputChannels[index] = inputChannels[index] * leftGain;\n }\n }\n\n // Dummy reference to prevent state binding from being optimized out\n state[0] = state[0];\n}\n`;\nconst stereoPanningAudioProcessor = async (channels, sampleRate, node, ctx) => {\n\tif (!ctx?.device) throw new Error(\"GPUDevice is required for WebGPU Stereo Panning.\");\n\tconst op = node.operation || {};\n\tconst inputs = op.inputs || {};\n\tconst pan = resolveNumber(op.pan, 0);\n\tconst clampedPan = Math.max(-1, Math.min(1, pan));\n\tconst isHandleConnected = (handleIdKey) => {\n\t\tconst handleId = op[handleIdKey];\n\t\tif (typeof handleId !== \"string\" || !handleId) return false;\n\t\tconst input = inputs[handleId];\n\t\treturn Boolean(input?.connectionValid && input.outputItem && (input.outputItem.type === \"Signal\" || input.outputItem.type === \"Number\"));\n\t};\n\tconst hasPanSig = isSignal(op.pan) || isSignal(op.signals?.pan) || isHandleConnected(\"panHandleId\") ? 1 : 0;\n\tif (channels.length === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tif (channels.length === 1) {\n\t\tconst rightChannel = new Float32Array(numSamples);\n\t\trightChannel.set(channels[0]);\n\t\tchannels.push(rightChannel);\n\t}\n\tconst numChannels = channels.length;\n\tconst nodeId = op.id || \"stereo-panning\";\n\tconst frame = ctx.frame ?? 0;\n\tconst fps = ctx.fps ?? 24;\n\tawait WebGPUAudioProcessor.process(ctx.device, nodeId, channels, sampleRate, node, frame, fps, PANNING_SHADER_TEMPLATE, () => [\n\t\tsampleRate,\n\t\tclampedPan,\n\t\thasPanSig,\n\t\t0,\n\t\tframe,\n\t\tnumSamples,\n\t\tnumChannels,\n\t\t0\n\t], 8, 1, ctx?.renderId, true, ctx?.elapsedMs, ctx?.durationMs, void 0, void 0, PARAM_ORDER);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: stereoPanningAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-Dc15sLt-.mjs.map"],"mappings":";;;;;AAKA,MAAM,cAAc,CAAC,MAAM;AAC3B,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDtC,MAAM,8BAA8B,OAAO,UAAU,YAAY,MAAM,QAAQ;AAC9E,KAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,mDAAmD;CACrF,MAAM,KAAK,KAAK,aAAa,EAAE;CAC/B,MAAM,SAAS,GAAG,UAAU,EAAE;CAC9B,MAAM,MAAM,cAAc,GAAG,KAAK,EAAE;CACpC,MAAM,aAAa,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACjD,MAAM,qBAAqB,gBAAgB;EAC1C,MAAM,WAAW,GAAG;AACpB,MAAI,OAAO,aAAa,YAAY,CAAC,SAAU,QAAO;EACtD,MAAM,QAAQ,OAAO;AACrB,SAAO,QAAQ,OAAO,mBAAmB,MAAM,eAAe,MAAM,WAAW,SAAS,YAAY,MAAM,WAAW,SAAS,UAAU;;CAEzI,MAAM,YAAY,SAAS,GAAG,IAAI,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,kBAAkB,cAAc,GAAG,IAAI;AAC1G,KAAI,SAAS,WAAW,EAAG;CAC3B,MAAM,aAAa,SAAS,GAAG;AAC/B,KAAI,eAAe,EAAG;AACtB,KAAI,SAAS,WAAW,GAAG;EAC1B,MAAM,eAAe,IAAI,aAAa,WAAW;AACjD,eAAa,IAAI,SAAS,GAAG;AAC7B,WAAS,KAAK,aAAa;;CAE5B,MAAM,cAAc,SAAS;CAC7B,MAAM,SAAS,GAAG,MAAM;CACxB,MAAM,QAAQ,IAAI,SAAS;CAC3B,MAAM,MAAM,IAAI,OAAO;AACvB,OAAM,qBAAqB,QAAQ,IAAI,QAAQ,QAAQ,UAAU,YAAY,MAAM,OAAO,KAAK,+BAA+B;EAC7H;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,GAAG,GAAG,KAAK,UAAU,MAAM,KAAK,WAAW,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,YAAY;;AAK5F,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,6BAA6B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./chunk-D7gtBK74.mjs";
|
|
2
2
|
import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
|
|
3
|
-
import "./dist-
|
|
4
|
-
import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-
|
|
3
|
+
import "./dist-BHTd-EC1.mjs";
|
|
4
|
+
import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-zIhSz_0X.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-painterly/dist/renderers-DhYrtjqf.mjs
|
|
7
7
|
const OP = "Painterly";
|
|
@@ -219,4 +219,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: PainterlyWebGPURenderer
|
|
|
219
219
|
|
|
220
220
|
//#endregion
|
|
221
221
|
export { PainterlyWebGPURenderer, renderers_default as default };
|
|
222
|
-
//# sourceMappingURL=renderer-
|
|
222
|
+
//# sourceMappingURL=renderer-Cg3h0Mz9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-0W-Ty55h.mjs","names":[],"sources":["../../../nodes/node-painterly/dist/renderers-DhYrtjqf.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst OP = \"Painterly\";\nconst UNIFORM_FLOATS = 12;\n/** One fragment shader per pass; pass 0 reads the layer, later passes read the previous pass. */\nconst PASSES = [`struct U { v : array<vec4<f32>, 3> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var src : texture_2d<f32>;\n@group(0) @binding(2) var prev : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn straight(c : vec4<f32>) -> vec4<f32> {\n\tif (c.a <= 0.0001) { return vec4<f32>(0.0); }\n\treturn vec4<f32>(c.rgb / c.a, c.a);\n}\nfn premul(c : vec4<f32>) -> vec4<f32> { return vec4<f32>(c.rgb * c.a, c.a); }\nfn res() -> vec2<f32> { return vec2<f32>(textureDimensions(src)); }\n/** Straight-alpha color of the layer at a uv (filtered). */\nfn sampleS(uv : vec2<f32>) -> vec4<f32> { return straight(textureSampleLevel(src, samp, uv, 0.0)); }\n/** Premultiplied color of the layer at a uv (filtered). */\nfn sampleP(uv : vec2<f32>) -> vec4<f32> { return textureSampleLevel(src, samp, uv, 0.0); }\n/** Straight-alpha color of the layer's texel at a pixel position (nearest). */\nfn texelS(p : vec2<f32>) -> vec4<f32> {\n\tlet d = vec2<i32>(textureDimensions(src));\n\tlet q = clamp(vec2<i32>(floor(p)), vec2<i32>(0), d - vec2<i32>(1));\n\treturn straight(textureLoad(src, q, 0));\n}\nfn luma(c : vec3<f32>) -> f32 { return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722)); }\nfn hash12(p : vec2<f32>) -> f32 {\n\tvar p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n\tp3 += dot(p3, p3.yzx + 33.33);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\nfn vnoise(p : vec2<f32>) -> f32 {\n\tlet i = floor(p);\n\tlet f = fract(p);\n\tlet u = f * f * (3.0 - 2.0 * f);\n\treturn mix(mix(hash12(i), hash12(i + vec2<f32>(1.0, 0.0)), u.x),\n\t\tmix(hash12(i + vec2<f32>(0.0, 1.0)), hash12(i + vec2<f32>(1.0, 1.0)), u.x), u.y);\n}\n/** 8x8 ordered-dither threshold, 0..1. */\nfn bayer8(p : vec2<f32>) -> f32 {\n\tlet x = u32(p.x) & 7u;\n\tlet y = u32(p.y) & 7u;\n\tvar v = 0u;\n\tfor (var k = 0u; k < 3u; k++) {\n\t\tlet bx = (x >> k) & 1u;\n\t\tlet by = (y >> k) & 1u;\n\t\tlet m = ((bx ^ by) << 1u) | by;\n\t\tv += m * (1u << (2u * (2u - k)));\n\t}\n\treturn (f32(v) + 0.5) / 64.0;\n}\nfn rot2(a : f32) -> mat2x2<f32> { let c = cos(a); let s = sin(a); return mat2x2<f32>(c, s, -s, c); }\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet time = u.v[0].x;\n\tlet frame = u.v[0].y;\n\tlet style = u32(u.v[1].x + 0.5);\n\tlet radius = u.v[1].y;\n\tlet edgeDarkening = u.v[1].z;\n\tlet paper = u.v[1].w;\n\tlet saturation = u.v[2].x;\n\n\tlet R = res();\n\tlet r = i32(radius);\n\tvar mean = array<vec3<f32>, 4>(vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0));\n\tvar sq = array<vec3<f32>, 4>(vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0));\n\tvar a = 0.0;\n\tfor (var j = -r; j <= r; j++) {\n\t\tfor (var i = -r; i <= r; i++) {\n\t\t\tlet c = sampleS(in.uv + vec2<f32>(f32(i), f32(j)) / R);\n\t\t\ta += c.a;\n\t\t\tlet q = select(select(3, 2, i <= 0), select(1, 0, i <= 0), j <= 0);\n\t\t\tmean[q] += c.rgb;\n\t\t\tsq[q] += c.rgb * c.rgb;\n\t\t}\n\t}\n\tlet n = f32((r + 1) * (r + 1));\n\tvar best = vec3<f32>(0.0);\n\tvar bestV = 1e9;\n\tfor (var k = 0; k < 4; k++) {\n\t\tlet m = mean[k] / n;\n\t\tlet v = sq[k] / n - m * m;\n\t\tlet vs = v.r + v.g + v.b;\n\t\tif (vs < bestV) { bestV = vs; best = m; }\n\t}\n\tvar rgb = best;\n\tlet grain = vnoise(in.uv * R / 3.0) * 0.6 + vnoise(in.uv * R / 11.0) * 0.4;\n\tif (style == 1u) {\n\t\trgb = mix(rgb, vec3<f32>(1.0), 0.06);\n\t\trgb *= 1.0 - edgeDarkening * 0.45 * smoothstep(0.004, 0.05, sqrt(max(bestV, 0.0)));\n\t\trgb *= 1.0 - paper * 0.18 * (grain - 0.5);\n\t} else {\n\t\trgb *= 1.0 - paper * 0.1 * (grain - 0.5);\n\t}\n\trgb = clamp(mix(vec3<f32>(luma(rgb)), rgb, saturation), vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet alpha = a / f32((2 * r + 1) * (2 * r + 1));\n\treturn premul(vec4<f32>(rgb, alpha));\n}\n`];\nconst resources = perDevice((device) => ({\n\tlayout: fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], `${OP}_layout`),\n\tpipelines: /* @__PURE__ */ new Map(),\n\tsampler: device.createSampler({\n\t\tmagFilter: \"linear\",\n\t\tminFilter: \"linear\",\n\t\taddressModeU: \"clamp-to-edge\",\n\t\taddressModeV: \"clamp-to-edge\"\n\t})\n}));\nfunction pipelinesFor(device, format) {\n\tconst r = resources(device);\n\tlet list = r.pipelines.get(format);\n\tif (!list) {\n\t\tlist = PASSES.map((code, i) => {\n\t\t\tconst module = device.createShaderModule({\n\t\t\t\tcode,\n\t\t\t\tlabel: `${OP}_${i}.wgsl`\n\t\t\t});\n\t\t\treturn device.createRenderPipeline({\n\t\t\t\tlabel: `${OP}_${i}`,\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [r.layout] }),\n\t\t\t\tvertex: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"vs\"\n\t\t\t\t},\n\t\t\t\tfragment: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"fs\",\n\t\t\t\t\ttargets: [{ format }]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t\t});\n\t\t});\n\t\tr.pipelines.set(format, list);\n\t}\n\treturn list;\n}\nfunction num(v, fallback) {\n\tconst n = typeof v === \"number\" ? v : Number(v);\n\treturn Number.isFinite(n) ? n : fallback;\n}\n/** Packs the effect's resolved props into the uniform block the shaders read. */\nfunction pack(raw, data, time, frame) {\n\tdata.fill(0);\n\tdata[0] = time;\n\tdata[1] = frame;\n\tdata[4] = Math.max(0, [\"oil\", \"watercolor\"].indexOf(String(raw.style ?? \"oil\")));\n\tdata[5] = num(raw.radius, 5);\n\tdata[6] = num(raw.edgeDarkening, .5);\n\tdata[7] = num(raw.paper, .3);\n\tdata[8] = num(raw.saturation, 1.05);\n}\nconst PainterlyWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== OP) return;\n\tconst child = props.virtualMedia?.children?.[0];\n\tif (!child) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst frame = Math.round(props.compositionFrame ?? props.frame ?? 0);\n\tconst raw = op.effect?.resolveUniforms ? op.effect.resolveUniforms({\n\t\tframe,\n\t\tfps,\n\t\ttime: frame / fps\n\t}) : op;\n\tconst data = new Float32Array(UNIFORM_FLOATS);\n\tpack(raw, data, frame / fps, frame);\n\tconst { texture: childTex } = await drawChildToTexture(args, child);\n\tconst device = ctx.device;\n\tconst r = resources(device);\n\tconst pipelines = pipelinesFor(device, ctx.renderer.format);\n\tconst ubo = ctx.renderer.getTemporaryBuffer(data);\n\tlet prev = childTex;\n\tfor (const pipeline of pipelines) {\n\t\tconst out = ctx.renderer.getTemporaryTexture(targetWidth, targetHeight, [\n\t\t\tchildTex,\n\t\t\tprev,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tdrawFullscreenPass(encoder, out.createView(), pipeline, [device.createBindGroup({\n\t\t\tlayout: r.layout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: ubo }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: childTex.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: prev.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: r.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})]);\n\t\tprev = out;\n\t}\n\tdrawTextureToTarget(args, prev);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: PainterlyWebGPURenderer });\n\n//#endregion\nexport { PainterlyWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-DhYrtjqf.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-Cg3h0Mz9.mjs","names":[],"sources":["../../../nodes/node-painterly/dist/renderers-DhYrtjqf.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst OP = \"Painterly\";\nconst UNIFORM_FLOATS = 12;\n/** One fragment shader per pass; pass 0 reads the layer, later passes read the previous pass. */\nconst PASSES = [`struct U { v : array<vec4<f32>, 3> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var src : texture_2d<f32>;\n@group(0) @binding(2) var prev : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn straight(c : vec4<f32>) -> vec4<f32> {\n\tif (c.a <= 0.0001) { return vec4<f32>(0.0); }\n\treturn vec4<f32>(c.rgb / c.a, c.a);\n}\nfn premul(c : vec4<f32>) -> vec4<f32> { return vec4<f32>(c.rgb * c.a, c.a); }\nfn res() -> vec2<f32> { return vec2<f32>(textureDimensions(src)); }\n/** Straight-alpha color of the layer at a uv (filtered). */\nfn sampleS(uv : vec2<f32>) -> vec4<f32> { return straight(textureSampleLevel(src, samp, uv, 0.0)); }\n/** Premultiplied color of the layer at a uv (filtered). */\nfn sampleP(uv : vec2<f32>) -> vec4<f32> { return textureSampleLevel(src, samp, uv, 0.0); }\n/** Straight-alpha color of the layer's texel at a pixel position (nearest). */\nfn texelS(p : vec2<f32>) -> vec4<f32> {\n\tlet d = vec2<i32>(textureDimensions(src));\n\tlet q = clamp(vec2<i32>(floor(p)), vec2<i32>(0), d - vec2<i32>(1));\n\treturn straight(textureLoad(src, q, 0));\n}\nfn luma(c : vec3<f32>) -> f32 { return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722)); }\nfn hash12(p : vec2<f32>) -> f32 {\n\tvar p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n\tp3 += dot(p3, p3.yzx + 33.33);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\nfn vnoise(p : vec2<f32>) -> f32 {\n\tlet i = floor(p);\n\tlet f = fract(p);\n\tlet u = f * f * (3.0 - 2.0 * f);\n\treturn mix(mix(hash12(i), hash12(i + vec2<f32>(1.0, 0.0)), u.x),\n\t\tmix(hash12(i + vec2<f32>(0.0, 1.0)), hash12(i + vec2<f32>(1.0, 1.0)), u.x), u.y);\n}\n/** 8x8 ordered-dither threshold, 0..1. */\nfn bayer8(p : vec2<f32>) -> f32 {\n\tlet x = u32(p.x) & 7u;\n\tlet y = u32(p.y) & 7u;\n\tvar v = 0u;\n\tfor (var k = 0u; k < 3u; k++) {\n\t\tlet bx = (x >> k) & 1u;\n\t\tlet by = (y >> k) & 1u;\n\t\tlet m = ((bx ^ by) << 1u) | by;\n\t\tv += m * (1u << (2u * (2u - k)));\n\t}\n\treturn (f32(v) + 0.5) / 64.0;\n}\nfn rot2(a : f32) -> mat2x2<f32> { let c = cos(a); let s = sin(a); return mat2x2<f32>(c, s, -s, c); }\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet time = u.v[0].x;\n\tlet frame = u.v[0].y;\n\tlet style = u32(u.v[1].x + 0.5);\n\tlet radius = u.v[1].y;\n\tlet edgeDarkening = u.v[1].z;\n\tlet paper = u.v[1].w;\n\tlet saturation = u.v[2].x;\n\n\tlet R = res();\n\tlet r = i32(radius);\n\tvar mean = array<vec3<f32>, 4>(vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0));\n\tvar sq = array<vec3<f32>, 4>(vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0));\n\tvar a = 0.0;\n\tfor (var j = -r; j <= r; j++) {\n\t\tfor (var i = -r; i <= r; i++) {\n\t\t\tlet c = sampleS(in.uv + vec2<f32>(f32(i), f32(j)) / R);\n\t\t\ta += c.a;\n\t\t\tlet q = select(select(3, 2, i <= 0), select(1, 0, i <= 0), j <= 0);\n\t\t\tmean[q] += c.rgb;\n\t\t\tsq[q] += c.rgb * c.rgb;\n\t\t}\n\t}\n\tlet n = f32((r + 1) * (r + 1));\n\tvar best = vec3<f32>(0.0);\n\tvar bestV = 1e9;\n\tfor (var k = 0; k < 4; k++) {\n\t\tlet m = mean[k] / n;\n\t\tlet v = sq[k] / n - m * m;\n\t\tlet vs = v.r + v.g + v.b;\n\t\tif (vs < bestV) { bestV = vs; best = m; }\n\t}\n\tvar rgb = best;\n\tlet grain = vnoise(in.uv * R / 3.0) * 0.6 + vnoise(in.uv * R / 11.0) * 0.4;\n\tif (style == 1u) {\n\t\trgb = mix(rgb, vec3<f32>(1.0), 0.06);\n\t\trgb *= 1.0 - edgeDarkening * 0.45 * smoothstep(0.004, 0.05, sqrt(max(bestV, 0.0)));\n\t\trgb *= 1.0 - paper * 0.18 * (grain - 0.5);\n\t} else {\n\t\trgb *= 1.0 - paper * 0.1 * (grain - 0.5);\n\t}\n\trgb = clamp(mix(vec3<f32>(luma(rgb)), rgb, saturation), vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet alpha = a / f32((2 * r + 1) * (2 * r + 1));\n\treturn premul(vec4<f32>(rgb, alpha));\n}\n`];\nconst resources = perDevice((device) => ({\n\tlayout: fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], `${OP}_layout`),\n\tpipelines: /* @__PURE__ */ new Map(),\n\tsampler: device.createSampler({\n\t\tmagFilter: \"linear\",\n\t\tminFilter: \"linear\",\n\t\taddressModeU: \"clamp-to-edge\",\n\t\taddressModeV: \"clamp-to-edge\"\n\t})\n}));\nfunction pipelinesFor(device, format) {\n\tconst r = resources(device);\n\tlet list = r.pipelines.get(format);\n\tif (!list) {\n\t\tlist = PASSES.map((code, i) => {\n\t\t\tconst module = device.createShaderModule({\n\t\t\t\tcode,\n\t\t\t\tlabel: `${OP}_${i}.wgsl`\n\t\t\t});\n\t\t\treturn device.createRenderPipeline({\n\t\t\t\tlabel: `${OP}_${i}`,\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [r.layout] }),\n\t\t\t\tvertex: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"vs\"\n\t\t\t\t},\n\t\t\t\tfragment: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"fs\",\n\t\t\t\t\ttargets: [{ format }]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t\t});\n\t\t});\n\t\tr.pipelines.set(format, list);\n\t}\n\treturn list;\n}\nfunction num(v, fallback) {\n\tconst n = typeof v === \"number\" ? v : Number(v);\n\treturn Number.isFinite(n) ? n : fallback;\n}\n/** Packs the effect's resolved props into the uniform block the shaders read. */\nfunction pack(raw, data, time, frame) {\n\tdata.fill(0);\n\tdata[0] = time;\n\tdata[1] = frame;\n\tdata[4] = Math.max(0, [\"oil\", \"watercolor\"].indexOf(String(raw.style ?? \"oil\")));\n\tdata[5] = num(raw.radius, 5);\n\tdata[6] = num(raw.edgeDarkening, .5);\n\tdata[7] = num(raw.paper, .3);\n\tdata[8] = num(raw.saturation, 1.05);\n}\nconst PainterlyWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== OP) return;\n\tconst child = props.virtualMedia?.children?.[0];\n\tif (!child) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst frame = Math.round(props.compositionFrame ?? props.frame ?? 0);\n\tconst raw = op.effect?.resolveUniforms ? op.effect.resolveUniforms({\n\t\tframe,\n\t\tfps,\n\t\ttime: frame / fps\n\t}) : op;\n\tconst data = new Float32Array(UNIFORM_FLOATS);\n\tpack(raw, data, frame / fps, frame);\n\tconst { texture: childTex } = await drawChildToTexture(args, child);\n\tconst device = ctx.device;\n\tconst r = resources(device);\n\tconst pipelines = pipelinesFor(device, ctx.renderer.format);\n\tconst ubo = ctx.renderer.getTemporaryBuffer(data);\n\tlet prev = childTex;\n\tfor (const pipeline of pipelines) {\n\t\tconst out = ctx.renderer.getTemporaryTexture(targetWidth, targetHeight, [\n\t\t\tchildTex,\n\t\t\tprev,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tdrawFullscreenPass(encoder, out.createView(), pipeline, [device.createBindGroup({\n\t\t\tlayout: r.layout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: ubo }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: childTex.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: prev.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: r.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})]);\n\t\tprev = out;\n\t}\n\tdrawTextureToTarget(args, prev);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: PainterlyWebGPURenderer });\n\n//#endregion\nexport { PainterlyWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-DhYrtjqf.mjs.map"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "./chunk-D7gtBK74.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { Pt as getActiveMediaMetadata, gn as resolveBoolean, hn as reportRenderDiagnostic, p as DEFAULT_DURATION_MS, tn as mediaSourceTime, vn as resolveNumber } from "./dist-BRXsfWKQ.mjs";
|
|
3
3
|
import { l as solveHomography, n as defineRenderer, o as resolveFrameNumber, r as effectReach, t as audioRegistry } from "./renderer-BgmO1Dzw.mjs";
|
|
4
|
-
import { B as jointMatrices, F as getPrimitiveGeometry, G as measureMaxCaptionHeight, M as fitSpansToText, N as generateExtrudedTextGeometry, Q as poseNodes, at as srtLoader, ct as resolveMediaSourceUrl, d as ScreenSpaceRelightPipeline, ft as Light3D, gt as Vector3Math, it as spansText, l as Renderer3D, lt as Camera3D, mt as Matrix4Math, n as AudioLatentTrackCache, p as SlugFontCache, q as parseColor, tt as resolveTextSpans } from "./dist-
|
|
5
|
-
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-
|
|
6
|
-
import {
|
|
4
|
+
import { B as jointMatrices, F as getPrimitiveGeometry, G as measureMaxCaptionHeight, M as fitSpansToText, N as generateExtrudedTextGeometry, Q as poseNodes, at as srtLoader, ct as resolveMediaSourceUrl, d as ScreenSpaceRelightPipeline, ft as Light3D, gt as Vector3Math, it as spansText, l as Renderer3D, lt as Camera3D, mt as Matrix4Math, n as AudioLatentTrackCache, p as SlugFontCache, q as parseColor, tt as resolveTextSpans } from "./dist-BHTd-EC1.mjs";
|
|
5
|
+
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-zIhSz_0X.mjs";
|
|
6
|
+
import { n as decodeAudioSource, o as resolveLayerDuration, p as measureText } from "./dist-BM0ilHvQ.mjs";
|
|
7
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-
|
|
8
|
+
import { B as evaluateTrackAtFrame, F as computeLayout, H as initLayout, M as collectNodeOps, z as evaluateKeyframes } from "./program-KPBfq9tw.mjs";
|
|
9
9
|
import gsapModule from "gsap";
|
|
10
10
|
|
|
11
|
-
//#region ../../nodes/node-compositor/dist/renderers-
|
|
11
|
+
//#region ../../nodes/node-compositor/dist/renderers-Bgxy2011.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].
|
|
@@ -3005,10 +3005,9 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3005
3005
|
}
|
|
3006
3006
|
return a;
|
|
3007
3007
|
});
|
|
3008
|
-
const hasKineticAnimators$1 = Array.isArray(resolvedAnimators) && resolvedAnimators.length > 0;
|
|
3009
3008
|
const hasTypewriter = Boolean(lop.typewriter || target?.typewriter);
|
|
3010
3009
|
const textTrack = lop.animation?.tracks?.find((t) => t.prop === "text");
|
|
3011
|
-
if (!
|
|
3010
|
+
if (!hasTypewriter && (textTrack !== void 0 || typeof target?.text === "number") && fullText.length > 0) {
|
|
3012
3011
|
const progress = typeof target?.text === "number" ? Math.max(0, Math.min(1, target.text)) : 1;
|
|
3013
3012
|
const countsUnits = typeof target?.text === "number" && target.text > 1.0001;
|
|
3014
3013
|
if (progress >= 1 && !countsUnits) displayText = fullText;
|
|
@@ -3104,7 +3103,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3104
3103
|
...excludes
|
|
3105
3104
|
],
|
|
3106
3105
|
isVideoMode: isVideoMode && !contentIsImageCompositor,
|
|
3107
|
-
...isVideoMode && {
|
|
3106
|
+
...isVideoMode && lop.timeRemap && kind === "media" && lop.dataType === "Video" && { sourceTimeSec: mediaSourceTime(lop.timeRemap, Math.max(0, shiftedFrame - (lop.startFrame ?? 0)), fps ?? 24) },
|
|
3107
|
+
...isVideoMode && { frame: lop.timeRemap && kind === "media" && lop.dataType === "Video" ? Math.max(0, shiftedFrame - (lop.startFrame ?? 0)) : Math.max(0, shiftedFrame - (lop.startFrame ?? 0)) + (lop.mediaStartFrame ?? lop.trimStartFrames ?? (lop.trimStartSec != null ? Math.round(lop.trimStartSec * (fps ?? 24)) : 0)) },
|
|
3108
3108
|
compositionFrame,
|
|
3109
3109
|
...isCaption && {
|
|
3110
3110
|
fontFamily: lop.fontFamily,
|
|
@@ -3737,4 +3737,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: CompositorWebGPURendere
|
|
|
3737
3737
|
|
|
3738
3738
|
//#endregion
|
|
3739
3739
|
export { Transform3DMath, renderers_default as default, has3DTransform };
|
|
3740
|
-
//# sourceMappingURL=renderer-
|
|
3740
|
+
//# sourceMappingURL=renderer-ClHqvIps.mjs.map
|