framefields 2.11.0 → 2.12.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/NOTICE.md +4 -0
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BuCVk1IQ.mjs → audio-DHLoNcxD.mjs} +3 -3
- package/dist/{audio-BuCVk1IQ.mjs.map → audio-DHLoNcxD.mjs.map} +1 -1
- package/dist/{audio-CYZkDwae.d.mts → audio-afTBdB3U.d.mts} +3 -3
- package/dist/{audio-CYZkDwae.d.mts.map → audio-afTBdB3U.d.mts.map} +1 -1
- package/dist/cli/check-worker.mjs +45 -45
- package/dist/cli.mjs +174 -83
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +14 -3
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/cloud/index.mjs +2 -2
- package/dist/{cloud-xcfV4J03.mjs → cloud-COid1Ipa.mjs} +169 -16
- package/dist/cloud-COid1Ipa.mjs.map +1 -0
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-Dg9LMWoX.mjs → dist-2_lT3Dwc.mjs} +2 -2
- package/dist/{dist-Dg9LMWoX.mjs.map → dist-2_lT3Dwc.mjs.map} +1 -1
- package/dist/{dist-CWLLnigL.mjs → dist-B-OPY7Cs.mjs} +273 -76
- package/dist/dist-B-OPY7Cs.mjs.map +1 -0
- package/dist/{dist-EQX3TUUl.mjs → dist-BSqeChht.mjs} +3 -3
- package/dist/{dist-EQX3TUUl.mjs.map → dist-BSqeChht.mjs.map} +1 -1
- package/dist/{dist-CNGv-JTX.mjs → dist-BwtxciN4.mjs} +1 -1
- package/dist/dist-CySGkG54.mjs.map +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-DKLbLXF7.mjs → effects-C8CL9cOq.mjs} +2 -2
- package/dist/{effects-DKLbLXF7.mjs.map → effects-C8CL9cOq.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-gPbGbShD.mjs → fonts-BQrDjnpV.mjs} +2 -2
- package/dist/{fonts-gPbGbShD.mjs.map → fonts-BQrDjnpV.mjs.map} +1 -1
- package/dist/{gpu-CpkJJLQP.mjs → gpu-DHa-3Dou.mjs} +11 -3
- package/dist/gpu-DHa-3Dou.mjs.map +1 -0
- package/dist/{index-Cro-818i.d.mts → index-BNClElng.d.mts} +592 -516
- package/dist/index-BNClElng.d.mts.map +1 -0
- package/dist/{index-jSDEM-uE.d.mts → index-CAuNuvIg.d.mts} +5 -5
- package/dist/{index-jSDEM-uE.d.mts.map → index-CAuNuvIg.d.mts.map} +1 -1
- package/dist/index-COYNQ_mf.d.mts.map +1 -1
- package/dist/{index-D2i9J9Zq.d.mts → index-CTv9ZieD.d.mts} +2 -2
- package/dist/{index-D2i9J9Zq.d.mts.map → index-CTv9ZieD.d.mts.map} +1 -1
- package/dist/{index-C8YwZ6k1.d.mts → index-DQa7mhzq.d.mts} +2 -2
- package/dist/{index-C8YwZ6k1.d.mts.map → index-DQa7mhzq.d.mts.map} +1 -1
- package/dist/{index-Bly-7YM1.d.mts → index-Drk6HC2k.d.mts} +2 -2
- package/dist/{index-Bly-7YM1.d.mts.map → index-Drk6HC2k.d.mts.map} +1 -1
- package/dist/{index-BuiZzc6i.d.mts → index-Fliv2Z-w.d.mts} +32 -1
- package/dist/index-Fliv2Z-w.d.mts.map +1 -0
- package/dist/{index-CEU_Zsb9.d.mts → index-WwuuX8ZJ.d.mts} +24 -22
- package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
- package/dist/index.d.mts +10 -10
- package/dist/index.mjs +52 -52
- package/dist/preview/index.d.mts +1 -1
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-BToKUTtZ.mjs → preview-BUtt481A.mjs} +2 -2
- package/dist/{preview-BToKUTtZ.mjs.map → preview-BUtt481A.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-QF4JWVO3.mjs → chunk-35XSD4QM.mjs} +15 -15
- package/dist/preview-engine/{chunk-ZF2MEFKO.mjs → chunk-3DOIE4DV.mjs} +1 -1
- package/dist/preview-engine/{chunk-JDB7PMRI.mjs → chunk-3IT7LHWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-DNNGWS2C.mjs → chunk-3MLGWUSK.mjs} +1 -1
- package/dist/preview-engine/{chunk-KVOFO273.mjs → chunk-3QJ5GRBH.mjs} +1 -1
- package/dist/preview-engine/{chunk-54Q5CKSV.mjs → chunk-3QTHW2CD.mjs} +1 -1
- package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
- package/dist/preview-engine/{chunk-BRV7TQDV.mjs → chunk-4JNIEQS2.mjs} +1 -1
- package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
- package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
- package/dist/preview-engine/{chunk-UMJ3VGKN.mjs → chunk-6B3NOY5W.mjs} +1 -1
- package/dist/preview-engine/{chunk-VQA4DYZU.mjs → chunk-6O7UDVNL.mjs} +1 -1
- package/dist/preview-engine/chunk-74J4DJQA.mjs +1 -0
- package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
- package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
- package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
- package/dist/preview-engine/{chunk-OLB4TQLQ.mjs → chunk-AKVRG7UU.mjs} +1 -1
- package/dist/preview-engine/{chunk-CIVEZJYF.mjs → chunk-CRBOK3JT.mjs} +1 -1
- package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
- package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-EPRINA4V.mjs → chunk-E7BKWHOT.mjs} +10 -10
- package/dist/preview-engine/{chunk-NOKPBMIP.mjs → chunk-EWDJMJO5.mjs} +1 -1
- package/dist/preview-engine/{chunk-5KSBS3AL.mjs → chunk-EYE3GNL5.mjs} +1 -1
- package/dist/preview-engine/{chunk-GHTG5XV6.mjs → chunk-EYKN2VET.mjs} +84 -25
- package/dist/preview-engine/{chunk-OELPPLML.mjs → chunk-FJTURGJV.mjs} +1 -1
- package/dist/preview-engine/{chunk-IKVJ4MW5.mjs → chunk-G4ZTSLZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-VZLIRYAL.mjs → chunk-GAMAKN5L.mjs} +1 -1
- package/dist/preview-engine/{chunk-65NANVQL.mjs → chunk-HTAHYSCW.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZIXPWP2B.mjs → chunk-ICWD36H6.mjs} +1 -1
- package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
- package/dist/preview-engine/{chunk-RDWLLITE.mjs → chunk-JAUMCOOJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-ACBBBOUM.mjs → chunk-KBCZKIIQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-YVZTRH4Y.mjs → chunk-KDCM7S3S.mjs} +1 -1
- package/dist/preview-engine/chunk-KIPXBOYG.mjs +1974 -0
- package/dist/preview-engine/{chunk-6LTINEA4.mjs → chunk-M4QVCQ3O.mjs} +1 -1
- package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
- package/dist/preview-engine/{chunk-YKM7JDQY.mjs → chunk-NJO2BIJX.mjs} +1 -1
- package/dist/preview-engine/{chunk-7GMHSTRP.mjs → chunk-NTSALWFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-PKNUTHPI.mjs → chunk-O75BFM4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-VFQH5KVS.mjs → chunk-ONHY4KNY.mjs} +1 -1
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
- package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
- package/dist/preview-engine/{chunk-YHMBGJP6.mjs → chunk-QPT2Y2GZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-4AGQN53P.mjs → chunk-QXLFTCLC.mjs} +1 -1
- package/dist/preview-engine/{chunk-O63FLYWC.mjs → chunk-RGKS6YIA.mjs} +1 -1
- package/dist/preview-engine/{chunk-FQL4IJZN.mjs → chunk-RN7J5TRU.mjs} +1 -1
- package/dist/preview-engine/{chunk-26XWIHW3.mjs → chunk-RVCLMO5Q.mjs} +1 -1
- package/dist/preview-engine/{chunk-TEWRQKX3.mjs → chunk-SFHWP65D.mjs} +1 -1
- package/dist/preview-engine/{chunk-EXEO245X.mjs → chunk-TKXOSEIJ.mjs} +1 -1
- package/dist/preview-engine/chunk-UKZVUYB6.mjs +483 -0
- package/dist/preview-engine/{chunk-EAWJXW4J.mjs → chunk-UVEDFIPN.mjs} +1 -1
- package/dist/preview-engine/{chunk-Z24UEN4P.mjs → chunk-VUO4K52B.mjs} +1 -1
- package/dist/preview-engine/{chunk-IBPYV6HF.mjs → chunk-W4XR6F5G.mjs} +1 -1
- package/dist/preview-engine/{chunk-UI3VH33L.mjs → chunk-WPYWCWWL.mjs} +1 -1
- package/dist/preview-engine/{chunk-WFMUDL55.mjs → chunk-YAPGJZPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-LMXMBX4J.mjs → chunk-YJ4DSRDY.mjs} +1 -1
- package/dist/preview-engine/{chunk-CCORQLMR.mjs → chunk-YOJKIMU5.mjs} +1 -1
- package/dist/preview-engine/{chunk-UGB6JKVS.mjs → chunk-ZHNEZZ6A.mjs} +1 -1
- package/dist/preview-engine/{chunk-LFNCWMKS.mjs → chunk-ZZMI3WOT.mjs} +1 -1
- 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 +1 -1
- package/dist/preview-engine/{renderers-53EI26GL.mjs → renderers-3FZVDYRQ.mjs} +1 -1
- package/dist/preview-engine/renderers-3KEBYOOF.mjs +1 -0
- package/dist/preview-engine/{renderers-6YVZUQOH.mjs → renderers-4RPQSUUZ.mjs} +1 -1
- package/dist/preview-engine/renderers-5EGFXFPF.mjs +1 -0
- package/dist/preview-engine/renderers-5SJHYUTM.mjs +1 -0
- package/dist/preview-engine/renderers-66MWDUN6.mjs +1 -0
- package/dist/preview-engine/{renderers-CCRZNGVK.mjs → renderers-6FENMFSC.mjs} +1 -1
- package/dist/preview-engine/renderers-77OXJ2GY.mjs +1 -0
- package/dist/preview-engine/renderers-7LI4QKHO.mjs +1 -0
- package/dist/preview-engine/{renderers-CYJAVWHT.mjs → renderers-AIZRIW2R.mjs} +1 -1
- package/dist/preview-engine/{renderers-OGOW3NA4.mjs → renderers-BDI2BDBA.mjs} +1 -1
- package/dist/preview-engine/renderers-BDXCO6NR.mjs +1 -0
- package/dist/preview-engine/{renderers-EN7LXJLG.mjs → renderers-BUZ67FNZ.mjs} +1 -1
- package/dist/preview-engine/renderers-DMTGKURQ.mjs +1 -0
- package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
- package/dist/preview-engine/{renderers-WSABL3QO.mjs → renderers-ECXMT5BD.mjs} +1 -1
- package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
- package/dist/preview-engine/{renderers-X6CORAES.mjs → renderers-EVEWFJ7U.mjs} +1 -1
- package/dist/preview-engine/renderers-F6PT2LON.mjs +1 -0
- package/dist/preview-engine/renderers-F7WPJXKT.mjs +1 -0
- package/dist/preview-engine/renderers-FIFF267S.mjs +1 -0
- package/dist/preview-engine/{renderers-GQM3KMV3.mjs → renderers-FQISHQEN.mjs} +1 -1
- package/dist/preview-engine/{renderers-HKLCB4U6.mjs → renderers-FXAVFNUN.mjs} +1 -1
- package/dist/preview-engine/{renderers-P2HORBZ6.mjs → renderers-GITAVRYZ.mjs} +1 -1
- package/dist/preview-engine/renderers-GTKRV225.mjs +1 -0
- package/dist/preview-engine/{renderers-KCGK33Y2.mjs → renderers-HG6JZIZO.mjs} +1 -1
- package/dist/preview-engine/{renderers-I6QKZ7CH.mjs → renderers-HHWMIDN3.mjs} +1 -1
- package/dist/preview-engine/renderers-HI3SRJVD.mjs +1 -0
- package/dist/preview-engine/{renderers-7CAHX35U.mjs → renderers-HXEDI4BD.mjs} +1 -1
- package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
- package/dist/preview-engine/{renderers-ACUJMDEK.mjs → renderers-I2ZOUFRU.mjs} +1 -1
- package/dist/preview-engine/renderers-JHFD4LHZ.mjs +1 -0
- package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
- package/dist/preview-engine/renderers-KGVZUFHD.mjs +1 -0
- package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
- package/dist/preview-engine/{renderers-C7SI3NIE.mjs → renderers-KKULMOV4.mjs} +1 -1
- package/dist/preview-engine/{renderers-HSFQIILN.mjs → renderers-KMVMPYY7.mjs} +1 -1
- package/dist/preview-engine/renderers-L6GFGHS6.mjs +1 -0
- package/dist/preview-engine/renderers-LN7WPG6I.mjs +1 -0
- package/dist/preview-engine/{renderers-BOBVXYAA.mjs → renderers-LWW4RF6D.mjs} +1 -1
- package/dist/preview-engine/renderers-LY57CZZB.mjs +1 -0
- package/dist/preview-engine/renderers-MBMJWZEW.mjs +1 -0
- package/dist/preview-engine/{renderers-VVP5WQOY.mjs → renderers-MPFU74I3.mjs} +1 -1
- package/dist/preview-engine/{renderers-H6PBHEYU.mjs → renderers-MW53LTMB.mjs} +1 -1
- package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
- package/dist/preview-engine/{renderers-4IBFDW2S.mjs → renderers-PC2GOZDT.mjs} +1 -1
- package/dist/preview-engine/renderers-PREFONJG.mjs +1 -0
- package/dist/preview-engine/renderers-PSBTV2DO.mjs +228 -0
- package/dist/preview-engine/{renderers-UG2C3C7T.mjs → renderers-Q77UPEYE.mjs} +1 -1
- package/dist/preview-engine/renderers-QHXCFDHI.mjs +1 -0
- package/dist/preview-engine/renderers-R22CDFO4.mjs +1 -0
- package/dist/preview-engine/renderers-RDYJRNAR.mjs +1 -0
- package/dist/preview-engine/renderers-RENLKAA7.mjs +1 -0
- package/dist/preview-engine/{renderers-5XLGCEOA.mjs → renderers-RIPXT4AL.mjs} +1 -1
- package/dist/preview-engine/{renderers-FY2HOQCS.mjs → renderers-SFVFAS3C.mjs} +1 -1
- package/dist/preview-engine/{renderers-VIGZYJYX.mjs → renderers-SWQVCJHB.mjs} +1 -1
- package/dist/preview-engine/renderers-SZVDZDY7.mjs +1 -0
- package/dist/preview-engine/renderers-TEKHQHCL.mjs +1 -0
- package/dist/preview-engine/renderers-TS32FDV7.mjs +1 -0
- package/dist/preview-engine/renderers-TYSLUZ53.mjs +1 -0
- package/dist/preview-engine/renderers-U3RLYFCN.mjs +1 -0
- package/dist/preview-engine/{renderers-6LNDAO4B.mjs → renderers-U4IXWMD6.mjs} +1 -1
- package/dist/preview-engine/renderers-V5HM6PZ2.mjs +1 -0
- package/dist/preview-engine/{renderers-33FCFHDR.mjs → renderers-VUQAZ56P.mjs} +1 -1
- package/dist/preview-engine/renderers-W5YFMLSB.mjs +1 -0
- package/dist/preview-engine/renderers-XKDWUK56.mjs +1 -0
- package/dist/preview-engine/renderers-XKSBNCLZ.mjs +1 -0
- package/dist/preview-engine/renderers-XLQXVD37.mjs +1 -0
- package/dist/preview-engine/renderers-ZGX3A3QZ.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
- package/dist/{program-Bc860ko5.mjs → program-Cvv_nb9T.mjs} +42 -15
- package/dist/program-Cvv_nb9T.mjs.map +1 -0
- package/dist/renderer/index.d.mts +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--RJepuOy.mjs +5 -0
- package/dist/{renderer-Bf4-N7k7.mjs → renderer-4uZGSmUD.mjs} +4 -4
- package/dist/{renderer-Bf4-N7k7.mjs.map → renderer-4uZGSmUD.mjs.map} +1 -1
- package/dist/{renderer-V4dhrf_h.mjs → renderer-5fGj_tqN.mjs} +4 -4
- package/dist/{renderer-V4dhrf_h.mjs.map → renderer-5fGj_tqN.mjs.map} +1 -1
- package/dist/{renderer-ByjaseAo.mjs → renderer-6g1ri445.mjs} +4 -4
- package/dist/{renderer-ByjaseAo.mjs.map → renderer-6g1ri445.mjs.map} +1 -1
- package/dist/{renderer-CR0mDPYY.mjs → renderer-B09I95bo.mjs} +2 -2
- package/dist/{renderer-BVKOQarx.d.mts → renderer-B1U6YRRV.d.mts} +22 -4
- package/dist/renderer-B1U6YRRV.d.mts.map +1 -0
- package/dist/renderer-B4NFnaty.mjs +5 -0
- package/dist/renderer-B6g4ts0e.mjs +5 -0
- package/dist/{renderer-g_1t2je9.mjs → renderer-BBjkX0Vt.mjs} +2 -2
- package/dist/{renderer-DAn9xiQT.mjs → renderer-BC_Nse6h.mjs} +4 -4
- package/dist/{renderer-DAn9xiQT.mjs.map → renderer-BC_Nse6h.mjs.map} +1 -1
- package/dist/renderer-BGoAr-tl.mjs +5 -0
- package/dist/{renderer-_9gbYS-3.mjs → renderer-BJEexai1.mjs} +4 -4
- package/dist/{renderer-_9gbYS-3.mjs.map → renderer-BJEexai1.mjs.map} +1 -1
- package/dist/{renderer-DcvjSolU.mjs → renderer-BOg8i8eF.mjs} +11 -2
- package/dist/{renderer-DcvjSolU.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
- package/dist/renderer-BSOdBgdE.mjs +5 -0
- package/dist/{renderer-4ZUv3X1I.mjs → renderer-BSsKlcHk.mjs} +4 -4
- package/dist/{renderer-4ZUv3X1I.mjs.map → renderer-BSsKlcHk.mjs.map} +1 -1
- package/dist/{renderer-Cz-n883J.mjs → renderer-BTd6tFcS.mjs} +4 -4
- package/dist/{renderer-Cz-n883J.mjs.map → renderer-BTd6tFcS.mjs.map} +1 -1
- package/dist/renderer-BU6O0fpM.mjs +5 -0
- package/dist/{renderer-D-QVGphn.mjs → renderer-BXGuCnCJ.mjs} +4 -4
- package/dist/{renderer-D-QVGphn.mjs.map → renderer-BXGuCnCJ.mjs.map} +1 -1
- package/dist/renderer-BZ97iidG.mjs +5 -0
- package/dist/renderer-B_Klh1VT.mjs +5 -0
- package/dist/renderer-BaWQM1y-.mjs +5 -0
- package/dist/renderer-Bc0jvAj0.mjs +5 -0
- package/dist/renderer-Bd-NuU3M.mjs +3 -0
- package/dist/{renderer-B-CMRUag.mjs → renderer-Bf7Z7WT5.mjs} +3 -3
- package/dist/{renderer-B-CMRUag.mjs.map → renderer-Bf7Z7WT5.mjs.map} +1 -1
- package/dist/renderer-Bm077kZ6.mjs +5 -0
- package/dist/renderer-BtzE_e_Y.mjs +5 -0
- package/dist/{renderer-DFJWPqOJ.mjs → renderer-BvRM3OZ6.mjs} +3 -3
- package/dist/{renderer-DFJWPqOJ.mjs.map → renderer-BvRM3OZ6.mjs.map} +1 -1
- package/dist/{renderer-fwKnV9zs.mjs → renderer-BwJ0nXXu.mjs} +4 -4
- package/dist/{renderer-fwKnV9zs.mjs.map → renderer-BwJ0nXXu.mjs.map} +1 -1
- package/dist/{renderer-CLAvn9c6.mjs → renderer-BwV-o_1b.mjs} +3 -3
- package/dist/{renderer-CLAvn9c6.mjs.map → renderer-BwV-o_1b.mjs.map} +1 -1
- package/dist/{renderer-BDZC3o3N.mjs → renderer-Bxiiar50.mjs} +4 -4
- package/dist/{renderer-BDZC3o3N.mjs.map → renderer-Bxiiar50.mjs.map} +1 -1
- package/dist/{renderer-o68mVeyk.mjs → renderer-ByFPmHBC.mjs} +3 -3
- package/dist/{renderer-o68mVeyk.mjs.map → renderer-ByFPmHBC.mjs.map} +1 -1
- package/dist/{renderer-D4f8f66C.mjs → renderer-BzTj_CeK.mjs} +4 -4
- package/dist/{renderer-D4f8f66C.mjs.map → renderer-BzTj_CeK.mjs.map} +1 -1
- package/dist/renderer-C225eCAo.mjs +5 -0
- package/dist/{renderer-BNJ6Jk7-.mjs → renderer-C2kFIZ4r.mjs} +3 -3
- package/dist/{renderer-BNJ6Jk7-.mjs.map → renderer-C2kFIZ4r.mjs.map} +1 -1
- package/dist/{renderer-riIFosX6.mjs → renderer-C3CGYjrC.mjs} +4 -4
- package/dist/{renderer-riIFosX6.mjs.map → renderer-C3CGYjrC.mjs.map} +1 -1
- package/dist/renderer-CC4fhNup.mjs +3 -0
- package/dist/{renderer-B1esRxGy.mjs → renderer-CGpi8CDT.mjs} +4 -4
- package/dist/{renderer-B1esRxGy.mjs.map → renderer-CGpi8CDT.mjs.map} +1 -1
- package/dist/{renderer-Rw87u1Cr.mjs → renderer-CInMMs5x.mjs} +4 -4
- package/dist/{renderer-Rw87u1Cr.mjs.map → renderer-CInMMs5x.mjs.map} +1 -1
- package/dist/{renderer-COcKhouz.mjs → renderer-CLTRTtQ8.mjs} +4 -4
- package/dist/{renderer-COcKhouz.mjs.map → renderer-CLTRTtQ8.mjs.map} +1 -1
- package/dist/renderer-CLXdR4vz.mjs +5 -0
- package/dist/{renderer-BhsrlGKp.mjs → renderer-CMCmljb0.mjs} +74 -21
- package/dist/renderer-CMCmljb0.mjs.map +1 -0
- package/dist/{renderer-HDj9Zb-O.mjs → renderer-CN-mCIoI.mjs} +19 -6
- package/dist/renderer-CN-mCIoI.mjs.map +1 -0
- package/dist/{renderer-Ros7XQg2.mjs → renderer-CNpq7rL-.mjs} +3 -3
- package/dist/{renderer-Ros7XQg2.mjs.map → renderer-CNpq7rL-.mjs.map} +1 -1
- package/dist/{renderer-B3Dme2es.mjs → renderer-CZClDMgF.mjs} +4 -4
- package/dist/{renderer-B3Dme2es.mjs.map → renderer-CZClDMgF.mjs.map} +1 -1
- package/dist/{renderer-1uoKiILq.mjs → renderer-C_gR2H3R.mjs} +3 -3
- package/dist/{renderer-1uoKiILq.mjs.map → renderer-C_gR2H3R.mjs.map} +1 -1
- package/dist/{renderer-88C3QpKL.d.mts → renderer-CcmxR6Fy.d.mts} +2 -2
- package/dist/{renderer-88C3QpKL.d.mts.map → renderer-CcmxR6Fy.d.mts.map} +1 -1
- package/dist/{renderer-50JEMaVo.mjs → renderer-CiHVnhUk.mjs} +4 -4
- package/dist/{renderer-50JEMaVo.mjs.map → renderer-CiHVnhUk.mjs.map} +1 -1
- package/dist/renderer-CszM8B3C.mjs +5 -0
- package/dist/renderer-Ctp8ZYfk.mjs +5 -0
- package/dist/{renderer-JHByuUNb.mjs → renderer-CtpEzVBn.mjs} +3 -3
- package/dist/{renderer-JHByuUNb.mjs.map → renderer-CtpEzVBn.mjs.map} +1 -1
- package/dist/renderer-CxQdSp8I.mjs +5 -0
- package/dist/{renderer-BaIJIfJ6.mjs → renderer-D3QPNBEj.mjs} +4 -4
- package/dist/{renderer-BaIJIfJ6.mjs.map → renderer-D3QPNBEj.mjs.map} +1 -1
- package/dist/{renderer-Bbxh4N8Y.mjs → renderer-D3YbHjRG.mjs} +73 -73
- package/dist/{renderer-Bbxh4N8Y.mjs.map → renderer-D3YbHjRG.mjs.map} +1 -1
- package/dist/renderer-D4GMRtDd.mjs +6 -0
- package/dist/{renderer-Bx14Wnxl.mjs → renderer-DCMoBppL.mjs} +58 -4
- package/dist/renderer-DCMoBppL.mjs.map +1 -0
- package/dist/{renderer-sfqZK6L5.mjs → renderer-DEoerd-j.mjs} +4 -4
- package/dist/{renderer-sfqZK6L5.mjs.map → renderer-DEoerd-j.mjs.map} +1 -1
- package/dist/renderer-DEsGIvTZ.mjs +5 -0
- package/dist/{renderer-ynFRJh7G.mjs → renderer-DGXqspB9.mjs} +2 -2
- package/dist/renderer-DIaUQ0EP.mjs +5 -0
- package/dist/{renderer-DgPn_SOC.mjs → renderer-DKFaVaRJ.mjs} +3 -3
- package/dist/{renderer-DgPn_SOC.mjs.map → renderer-DKFaVaRJ.mjs.map} +1 -1
- package/dist/{renderer-CrR8Mpxq.mjs → renderer-DL3o_lG1.mjs} +4 -4
- package/dist/{renderer-CrR8Mpxq.mjs.map → renderer-DL3o_lG1.mjs.map} +1 -1
- package/dist/{renderer-Bxjb0HYU.mjs → renderer-DLaUT6JZ.mjs} +3 -3
- package/dist/{renderer-Bxjb0HYU.mjs.map → renderer-DLaUT6JZ.mjs.map} +1 -1
- package/dist/renderer-DLjqcNzQ.mjs +5 -0
- package/dist/renderer-DMuQZa51.mjs +5 -0
- package/dist/{renderer-Co6UFbZB.mjs → renderer-DO1SZ5xY.mjs} +4 -4
- package/dist/{renderer-Co6UFbZB.mjs.map → renderer-DO1SZ5xY.mjs.map} +1 -1
- package/dist/{renderer-B6Oeahe_.mjs → renderer-DO_zXwMJ.mjs} +3 -3
- package/dist/{renderer-B6Oeahe_.mjs.map → renderer-DO_zXwMJ.mjs.map} +1 -1
- package/dist/renderer-DOgi2aF2.mjs +5 -0
- package/dist/{renderer-BSELd5vU.mjs → renderer-DP9ScNM6.mjs} +3 -3
- package/dist/{renderer-BSELd5vU.mjs.map → renderer-DP9ScNM6.mjs.map} +1 -1
- package/dist/{renderer-DOkbn1ot.mjs → renderer-DQJHjU0L.mjs} +4 -4
- package/dist/{renderer-DOkbn1ot.mjs.map → renderer-DQJHjU0L.mjs.map} +1 -1
- package/dist/renderer-DSh7cvi4.mjs +5 -0
- package/dist/renderer-DV1LVBBP.mjs +5 -0
- package/dist/{renderer-BJ-7WRgO.mjs → renderer-DX60Kr20.mjs} +3 -3
- package/dist/{renderer-BJ-7WRgO.mjs.map → renderer-DX60Kr20.mjs.map} +1 -1
- package/dist/{renderer-DLPhfwbR.mjs → renderer-DZIxduEt.mjs} +3 -3
- package/dist/{renderer-DLPhfwbR.mjs.map → renderer-DZIxduEt.mjs.map} +1 -1
- package/dist/{renderer-TKZCA0B9.mjs → renderer-DaLy1dFA.mjs} +208 -69
- package/dist/renderer-DaLy1dFA.mjs.map +1 -0
- package/dist/{renderer-DaXQgGg3.mjs → renderer-DaY04IyU.mjs} +4 -4
- package/dist/{renderer-DaXQgGg3.mjs.map → renderer-DaY04IyU.mjs.map} +1 -1
- package/dist/{renderer-Dpl6poqD.mjs → renderer-Dak_wVh9.mjs} +2 -2
- package/dist/{renderer-Dpl6poqD.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
- package/dist/renderer-Dhrj2bJz.mjs +5 -0
- package/dist/{renderer-celhuAL7.mjs → renderer-Dj54y3h3.mjs} +3 -3
- package/dist/{renderer-celhuAL7.mjs.map → renderer-Dj54y3h3.mjs.map} +1 -1
- package/dist/renderer-DoFUu1R4.mjs +5 -0
- package/dist/{renderer-RvI3qRUI.mjs → renderer-Dp9FQKVP.mjs} +4 -4
- package/dist/{renderer-RvI3qRUI.mjs.map → renderer-Dp9FQKVP.mjs.map} +1 -1
- package/dist/{renderer-KKk7myX1.mjs → renderer-DrK6pyfz.mjs} +4 -4
- package/dist/{renderer-KKk7myX1.mjs.map → renderer-DrK6pyfz.mjs.map} +1 -1
- package/dist/{renderer-BURhYcpA.mjs → renderer-DrL3J9ci.mjs} +3 -3
- package/dist/{renderer-BURhYcpA.mjs.map → renderer-DrL3J9ci.mjs.map} +1 -1
- package/dist/{renderer-BOrMBwQS.mjs → renderer-DsPLMzy1.mjs} +2 -2
- package/dist/{renderer-BOrMBwQS.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
- package/dist/renderer-DsydX3cx.mjs +5 -0
- package/dist/{renderer-D06HxSXO.mjs → renderer-DwH5e3hx.mjs} +2 -2
- package/dist/renderer-DxVSoeYi.mjs +5 -0
- package/dist/{renderer-BQetXCcZ.mjs → renderer-Dy1xQOTu.mjs} +3 -3
- package/dist/{renderer-BQetXCcZ.mjs.map → renderer-Dy1xQOTu.mjs.map} +1 -1
- package/dist/{renderer-CxGx1Lhi.mjs → renderer-FvvywNvv.mjs} +3 -3
- package/dist/{renderer-CxGx1Lhi.mjs.map → renderer-FvvywNvv.mjs.map} +1 -1
- package/dist/{renderer-DE9Jik9K.mjs → renderer-HXw4cJZx.mjs} +3 -3
- package/dist/{renderer-DE9Jik9K.mjs.map → renderer-HXw4cJZx.mjs.map} +1 -1
- package/dist/{renderer-CU8v-LxD.mjs → renderer-HhJPFidU.mjs} +4 -4
- package/dist/{renderer-CU8v-LxD.mjs.map → renderer-HhJPFidU.mjs.map} +1 -1
- package/dist/{renderer-BwrfKKqw.mjs → renderer-IAffbHXx.mjs} +3 -3
- package/dist/{renderer-BwrfKKqw.mjs.map → renderer-IAffbHXx.mjs.map} +1 -1
- package/dist/{renderer-fs8f1QeE.mjs → renderer-LrAldCWN.mjs} +4 -4
- package/dist/{renderer-fs8f1QeE.mjs.map → renderer-LrAldCWN.mjs.map} +1 -1
- package/dist/renderer-Nc9bHb0n.mjs +5 -0
- package/dist/{renderer-h62QaJYz.mjs → renderer-O4y02xkD.mjs} +3 -3
- package/dist/{renderer-h62QaJYz.mjs.map → renderer-O4y02xkD.mjs.map} +1 -1
- package/dist/{renderer-eMCTAa9e.mjs → renderer-PnnkUWm-.mjs} +3 -3
- package/dist/{renderer-eMCTAa9e.mjs.map → renderer-PnnkUWm-.mjs.map} +1 -1
- package/dist/renderer-TFaSD2Db.mjs +5 -0
- package/dist/{renderer-jnAIhWn_.mjs → renderer-TiaHrU5z.mjs} +4 -4
- package/dist/{renderer-jnAIhWn_.mjs.map → renderer-TiaHrU5z.mjs.map} +1 -1
- package/dist/renderer-Z61ctppe.mjs +5 -0
- package/dist/{renderer-DkqZmfm8.mjs → renderer-_KIBvES8.mjs} +4 -4
- package/dist/{renderer-DkqZmfm8.mjs.map → renderer-_KIBvES8.mjs.map} +1 -1
- package/dist/renderer-awXf3sNS.mjs +5 -0
- package/dist/{renderer-7ow5Acsg.mjs → renderer-b0H3oDae.mjs} +3 -3
- package/dist/{renderer-7ow5Acsg.mjs.map → renderer-b0H3oDae.mjs.map} +1 -1
- package/dist/renderer-cHT28oYI.mjs +5 -0
- package/dist/renderer-g7Y3bFot.mjs +5 -0
- package/dist/{renderer-q7q6k_cD.mjs → renderer-oBgCEqaM.mjs} +3 -3
- package/dist/{renderer-q7q6k_cD.mjs.map → renderer-oBgCEqaM.mjs.map} +1 -1
- package/dist/{renderer-Bo7shNdU.mjs → renderer-qVJdxbXB.mjs} +4 -4
- package/dist/{renderer-Bo7shNdU.mjs.map → renderer-qVJdxbXB.mjs.map} +1 -1
- package/dist/renderer-qVv0OzVc.mjs +5 -0
- package/dist/{renderer-D0aAZHC7.mjs → renderer-rKw5_EjG.mjs} +3 -3
- package/dist/{renderer-D0aAZHC7.mjs.map → renderer-rKw5_EjG.mjs.map} +1 -1
- package/dist/{renderer-B1LD29TV.mjs → renderer-sMFJtt_H.mjs} +3 -3
- package/dist/{renderer-B1LD29TV.mjs.map → renderer-sMFJtt_H.mjs.map} +1 -1
- package/dist/{renderer-C9BSXyrq.mjs → renderer-smP1F57W.mjs} +3 -3
- package/dist/{renderer-C9BSXyrq.mjs.map → renderer-smP1F57W.mjs.map} +1 -1
- package/dist/{renderer-DwK9jsER.mjs → renderer-snjhPaP-.mjs} +4 -4
- package/dist/{renderer-DwK9jsER.mjs.map → renderer-snjhPaP-.mjs.map} +1 -1
- package/dist/{renderer-lHNTgiOM.mjs → renderer-t1sXDiqm.mjs} +3 -3
- package/dist/{renderer-lHNTgiOM.mjs.map → renderer-t1sXDiqm.mjs.map} +1 -1
- package/dist/{renderer-CAWnCsQc.mjs → renderer-tRi3KNoG.mjs} +4 -4
- package/dist/{renderer-CAWnCsQc.mjs.map → renderer-tRi3KNoG.mjs.map} +1 -1
- package/dist/{renderer-BNHcwxw9.mjs → renderer-uA0UCxjA.mjs} +3 -3
- package/dist/{renderer-BNHcwxw9.mjs.map → renderer-uA0UCxjA.mjs.map} +1 -1
- package/dist/{renderer-pNmI-A9o.mjs → renderer-xNOKSN3V.mjs} +4 -4
- package/dist/{renderer-pNmI-A9o.mjs.map → renderer-xNOKSN3V.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs → renderers-CP8CFWDs-DWRjjeUg.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs.map → renderers-CP8CFWDs-DWRjjeUg.mjs.map} +1 -1
- package/dist/sam/index.d.mts +2 -2
- package/dist/sam/index.mjs +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +5 -5
- package/dist/{src-Bnr8DUC--BRDqRF6I.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +74 -9
- package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
- package/dist/{src-BYp6r-cS.mjs → src-D7M8VTzv.mjs} +248 -28
- package/dist/src-D7M8VTzv.mjs.map +1 -0
- package/package.json +59 -59
- package/dist/cloud-xcfV4J03.mjs.map +0 -1
- package/dist/dist-CWLLnigL.mjs.map +0 -1
- package/dist/gpu-CpkJJLQP.mjs.map +0 -1
- package/dist/index-BuiZzc6i.d.mts.map +0 -1
- package/dist/index-CEU_Zsb9.d.mts.map +0 -1
- package/dist/index-Cro-818i.d.mts.map +0 -1
- package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
- package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
- package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
- package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
- package/dist/preview-engine/chunk-CIVJXFWH.mjs +0 -4
- package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
- package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
- package/dist/preview-engine/chunk-M4QANUJI.mjs +0 -480
- package/dist/preview-engine/chunk-XF6DYP6B.mjs +0 -1974
- package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
- package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
- package/dist/preview-engine/renderers-2NGIILMI.mjs +0 -1
- package/dist/preview-engine/renderers-466Z77BH.mjs +0 -1
- package/dist/preview-engine/renderers-4KRENGZA.mjs +0 -1
- package/dist/preview-engine/renderers-4W52BQEU.mjs +0 -1
- package/dist/preview-engine/renderers-55PRAS7G.mjs +0 -1
- package/dist/preview-engine/renderers-5LLYINHW.mjs +0 -1
- package/dist/preview-engine/renderers-63N3Y2XO.mjs +0 -1
- package/dist/preview-engine/renderers-6ROVFDIN.mjs +0 -1
- package/dist/preview-engine/renderers-A4RVLPMG.mjs +0 -1
- package/dist/preview-engine/renderers-A53P4J6O.mjs +0 -1
- package/dist/preview-engine/renderers-AFJ3373L.mjs +0 -1
- package/dist/preview-engine/renderers-ATFWTA3U.mjs +0 -1
- package/dist/preview-engine/renderers-BPYJXHBU.mjs +0 -1
- package/dist/preview-engine/renderers-D3ZF7FXT.mjs +0 -1
- package/dist/preview-engine/renderers-D7YN6B4B.mjs +0 -1
- package/dist/preview-engine/renderers-DBLASKF5.mjs +0 -1
- package/dist/preview-engine/renderers-DC5ZYYHM.mjs +0 -1
- package/dist/preview-engine/renderers-J6ZEXW5L.mjs +0 -1
- package/dist/preview-engine/renderers-JV4MF46Q.mjs +0 -1
- package/dist/preview-engine/renderers-KQKH4ZIX.mjs +0 -1
- package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
- package/dist/preview-engine/renderers-MEITHN4N.mjs +0 -1
- package/dist/preview-engine/renderers-MN3HSBTJ.mjs +0 -1
- package/dist/preview-engine/renderers-NTG3QGNH.mjs +0 -1
- package/dist/preview-engine/renderers-OU4SFMB2.mjs +0 -1
- package/dist/preview-engine/renderers-P6TIBJIG.mjs +0 -1
- package/dist/preview-engine/renderers-POJWQ7L3.mjs +0 -1
- package/dist/preview-engine/renderers-RJ7S6VHD.mjs +0 -1
- package/dist/preview-engine/renderers-RJJAJZYN.mjs +0 -1
- package/dist/preview-engine/renderers-UEQ733VK.mjs +0 -1
- package/dist/preview-engine/renderers-ULO2AW2U.mjs +0 -1
- package/dist/preview-engine/renderers-UPVHGHCK.mjs +0 -1
- package/dist/preview-engine/renderers-UZHSNNIM.mjs +0 -1
- package/dist/preview-engine/renderers-V5KWZL2C.mjs +0 -1
- package/dist/preview-engine/renderers-WL372W36.mjs +0 -228
- package/dist/preview-engine/renderers-YMXKYOHQ.mjs +0 -1
- package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +0 -1
- package/dist/program-Bc860ko5.mjs.map +0 -1
- package/dist/renderer--Ymc_4XJ.mjs +0 -5
- package/dist/renderer-B-OdV-eq.mjs +0 -5
- package/dist/renderer-B65fwoA2.mjs +0 -5
- package/dist/renderer-B92Ahkcv.mjs +0 -5
- package/dist/renderer-B9z2AK31.mjs +0 -5
- package/dist/renderer-BIF3Dg3Z.mjs +0 -5
- package/dist/renderer-BJUVaIAT.mjs +0 -5
- package/dist/renderer-BKRDMbI-.mjs +0 -5
- package/dist/renderer-BSwhyVWa.mjs +0 -5
- package/dist/renderer-BUqSZn2X.mjs +0 -5
- package/dist/renderer-BVKOQarx.d.mts.map +0 -1
- package/dist/renderer-BbmvjqK9.mjs +0 -3
- package/dist/renderer-BhsrlGKp.mjs.map +0 -1
- package/dist/renderer-Bpe4k_x6.mjs +0 -5
- package/dist/renderer-Bx14Wnxl.mjs.map +0 -1
- package/dist/renderer-C1NjG0CJ.mjs +0 -5
- package/dist/renderer-C7Puyst9.mjs +0 -5
- package/dist/renderer-CGA_7320.mjs +0 -5
- package/dist/renderer-CLnFkXO7.mjs +0 -5
- package/dist/renderer-CMQIT1Kh.mjs +0 -5
- package/dist/renderer-CQ1rwjIh.mjs +0 -5
- package/dist/renderer-CT8h0boY.mjs +0 -5
- package/dist/renderer-Cb0lszt3.mjs +0 -5
- package/dist/renderer-Ci7oLye9.mjs +0 -5
- package/dist/renderer-CjqXB3CZ.mjs +0 -5
- package/dist/renderer-CqTV04zQ.mjs +0 -5
- package/dist/renderer-CtWeRtHK.mjs +0 -5
- package/dist/renderer-CzolnwCo.mjs +0 -5
- package/dist/renderer-D6qhcx_C.mjs +0 -5
- package/dist/renderer-DDfEf0jt.mjs +0 -5
- package/dist/renderer-DDpa8ztp.mjs +0 -5
- package/dist/renderer-DbQBqzmx.mjs +0 -5
- package/dist/renderer-DfUcwMKa.mjs +0 -5
- package/dist/renderer-DgIjNANM.mjs +0 -6
- package/dist/renderer-Dsh6Tgu0.mjs +0 -3
- package/dist/renderer-DuIwR9GT.mjs +0 -5
- package/dist/renderer-Dv4u2c14.mjs +0 -5
- package/dist/renderer-HDj9Zb-O.mjs.map +0 -1
- package/dist/renderer-IE1yu3lZ.mjs +0 -5
- package/dist/renderer-PY_wnEN0.mjs +0 -5
- package/dist/renderer-TKZCA0B9.mjs.map +0 -1
- package/dist/renderer-gv24VyzO.mjs +0 -5
- package/dist/renderer-nN6lPZf9.mjs +0 -5
- package/dist/src-BYp6r-cS.mjs.map +0 -1
- package/dist/src-Bnr8DUC--BRDqRF6I.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-C_gR2H3R.mjs","names":[],"sources":["../../../nodes/node-liquify/dist/renderers-C4bNr5l9.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, STRAIGHT_ALPHA_BLEND, beginTargetPass, createFullscreenPipeline, drawChildToTexture, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst MAX_OPERATIONS = 1024;\nconst LIQUIFY_SHADER = `\nstruct LiquifyOpData {\n\topType : f32, // 0=Push, 1=Pull, 2=Bloat, 3=Pucker, 4=TwirlCW, 5=TwirlCCW\n\tx : f32,\n\ty : f32,\n\tradius : f32,\n\tstrength : f32,\n\tdx : f32,\n\tdy : f32,\n\t_pad : f32,\n};\n\nstruct LiquifyUniforms {\n\topCount : f32,\n\taspectRatio : f32,\n\topacity : f32,\n\t_pad0 : f32,\n\tops : array<LiquifyOpData, 1024>,\n};\n\n@group(0) @binding(0) var<uniform> u : LiquifyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nconst PI = 3.141592653589793;\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tvar currentUV = in.uv;\n\tlet count = u32(u.opCount);\n\tlet aspect = u.aspectRatio;\n\n\tfor (var i = 0u; i < count && i < 1024u; i = i + 1u) {\n\t\tlet op = u.ops[i];\n\t\tlet center = vec2<f32>(op.x, op.y);\n\t\tlet delta = currentUV - center;\n\t\tlet deltaAspect = vec2<f32>(delta.x * aspect, delta.y);\n\t\tlet dist = length(deltaAspect);\n\n\t\tif (dist < op.radius && op.radius > 0.0001) {\n\t\t\tlet t = dist / op.radius;\n\t\t\tlet falloff = (1.0 - t * t) * (1.0 - t * t);\n\t\t\tlet s = op.strength;\n\n\t\t\tif (op.opType < 0.5) {\n\t\t\t\t// 0 = Push\n\t\t\t\tlet shift = vec2<f32>(op.dx, op.dy) * s * falloff;\n\t\t\t\tcurrentUV = currentUV - shift;\n\t\t\t} else if (op.opType < 1.5) {\n\t\t\t\t// 1 = Pull\n\t\t\t\tlet shift = vec2<f32>(op.dx, op.dy) * s * falloff;\n\t\t\t\tcurrentUV = currentUV + shift;\n\t\t\t} else if (op.opType < 2.5) {\n\t\t\t\t// 2 = Bloat\n\t\t\t\tlet factor = 1.0 - s * falloff * 0.45;\n\t\t\t\tcurrentUV = center + delta * factor;\n\t\t\t} else if (op.opType < 3.5) {\n\t\t\t\t// 3 = Pucker\n\t\t\t\tlet factor = 1.0 + s * falloff * 0.45;\n\t\t\t\tcurrentUV = center + delta * factor;\n\t\t\t} else if (op.opType < 4.5) {\n\t\t\t\t// 4 = TwirlCW\n\t\t\t\tlet angle = -s * PI * falloff;\n\t\t\t\tlet cosA = cos(angle);\n\t\t\t\tlet sinA = sin(angle);\n\t\t\t\tlet rotated = vec2<f32>(delta.x * cosA - delta.y * sinA, delta.x * sinA + delta.y * cosA);\n\t\t\t\tcurrentUV = center + rotated;\n\t\t\t} else {\n\t\t\t\t// 5 = TwirlCCW\n\t\t\t\tlet angle = s * PI * falloff;\n\t\t\t\tlet cosA = cos(angle);\n\t\t\t\tlet sinA = sin(angle);\n\t\t\t\tlet rotated = vec2<f32>(delta.x * cosA - delta.y * sinA, delta.x * sinA + delta.y * cosA);\n\t\t\t\tcurrentUV = center + rotated;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet clampedUV = clamp(currentUV, vec2<f32>(0.0), vec2<f32>(1.0));\n\tlet sampledColor = textureSampleLevel(tex, samp, clampedUV, 0.0);\n\treturn sampledColor;\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getLiquifyResources(device, format) {\n\tlet layouts = deviceResourceCache.get(device);\n\tif (!layouts) {\n\t\tlayouts = {\n\t\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"], \"LiquifyUniformLayout\"),\n\t\t\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"], \"LiquifyTextureLayout\"),\n\t\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t\t};\n\t\tdeviceResourceCache.set(device, layouts);\n\t}\n\tconst cacheKey = format;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"liquify.wgsl\",\n\t\t\tcode: LIQUIFY_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `LiquifyPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [layouts.uniformLayout, layouts.singleTextureLayout],\n\t\t\tformat,\n\t\t\tblend: STRAIGHT_ALPHA_BLEND\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tliquifyPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout\n\t};\n}\nconst TYPE_ENUM_MAP = {\n\tPush: 0,\n\tPull: 1,\n\tBloat: 2,\n\tPucker: 3,\n\tTwirlCW: 4,\n\tTwirlCCW: 5\n};\nconst LiquifyWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Liquify\" || !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 aspectRatio = height > 0 ? width / height : 1;\n\tconst { texture: childTexture } = await drawChildToTexture(args, childMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\tcontainerWidth: width,\n\t\tcontainerHeight: height\n\t} });\n\tconst operations = op.operations || [];\n\tconst opCount = Math.min(operations.length, MAX_OPERATIONS);\n\tconst uniformData = new Float32Array(4 + MAX_OPERATIONS * 8);\n\tuniformData[0] = opCount;\n\tuniformData[1] = aspectRatio;\n\tuniformData[2] = 1;\n\tuniformData[3] = 0;\n\tfor (let i = 0; i < opCount; i++) {\n\t\tconst item = operations[i];\n\t\tif (!item) continue;\n\t\tconst offset = 4 + i * 8;\n\t\tuniformData[offset + 0] = TYPE_ENUM_MAP[item.type] ?? 2;\n\t\tuniformData[offset + 1] = item.x;\n\t\tuniformData[offset + 2] = item.y;\n\t\tuniformData[offset + 3] = item.radius ?? .15;\n\t\tuniformData[offset + 4] = item.strength ?? .5;\n\t\tuniformData[offset + 5] = item.dx ?? 0;\n\t\tuniformData[offset + 6] = item.dy ?? 0;\n\t\tuniformData[offset + 7] = 0;\n\t}\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst resources = getLiquifyResources(ctx.device, ctx.renderer.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, resources.singleTextureLayout, childTexture, sampler);\n\tconst outPass = beginTargetPass(args);\n\toutPass.setPipeline(resources.liquifyPipeline);\n\toutPass.setBindGroup(0, uniformBindGroup);\n\toutPass.setBindGroup(1, textureBindGroup);\n\toutPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: LiquifyWebGPURenderer });\n\n//#endregion\nexport { LiquifyWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-C4bNr5l9.mjs.map"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as NodeRendererPlugin } from "./renderer-
|
|
1
|
+
import { n as NodeRendererPlugin } from "./renderer-B1U6YRRV.mjs";
|
|
2
2
|
|
|
3
3
|
//#region ../../nodes/node-audio-signal-extractor/dist/renderer.d.mts
|
|
4
4
|
//#region src/renderers/index.d.ts
|
|
@@ -7,4 +7,4 @@ declare const _default: Readonly<NodeRendererPlugin>;
|
|
|
7
7
|
|
|
8
8
|
//#endregion
|
|
9
9
|
export { _default as t };
|
|
10
|
-
//# sourceMappingURL=renderer-
|
|
10
|
+
//# sourceMappingURL=renderer-CcmxR6Fy.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-CcmxR6Fy.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderer.d.mts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;AAAkF,cAGpEC,QAAsE,EAA5DE,QAASH,CAAAA,kBAAD,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./chunk-W71TSjRM.mjs";
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
3
|
-
import "./dist-
|
|
4
|
-
import { i as beginTargetPass, l as fragmentBindGroupLayout,
|
|
2
|
+
import { n as defineRenderer } from "./renderer-BOg8i8eF.mjs";
|
|
3
|
+
import "./dist-B-OPY7Cs.mjs";
|
|
4
|
+
import { i as beginTargetPass, l as fragmentBindGroupLayout, m as texturesLayout, o as drawChildToTexture, t as FULLSCREEN_QUAD_WGSL } from "./gpu-DHa-3Dou.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs
|
|
7
7
|
const COLOR_SPACE_MAP = {
|
|
@@ -290,4 +290,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURend
|
|
|
290
290
|
|
|
291
291
|
//#endregion
|
|
292
292
|
export { ChannelMergerWebGPURenderer, renderers_default as default };
|
|
293
|
-
//# sourceMappingURL=renderer-
|
|
293
|
+
//# sourceMappingURL=renderer-CiHVnhUk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-50JEMaVo.mjs","names":[],"sources":["../../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, beginTargetPass, drawChildToTexture, fragmentBindGroupLayout, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLOR_SPACE_MAP = {\n\tRGBA: 0,\n\tHSLA: 1,\n\tCMYK: 2,\n\tLAB: 3\n};\nconst WGSL_CHANNEL_MERGER = `\nstruct MergerUniforms {\n\tcolorSpace : f32, // 0=RGBA, 1=HSLA, 2=CMYK, 3=LAB\n\thasCh4 : f32, // 0 or 1\n\tdefaultCh4 : f32, // fallback value (1.0 for alpha, 0.0 for CMYK black)\n\t_pad0 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : MergerUniforms;\n@group(1) @binding(0) var tex1 : texture_2d<f32>;\n@group(1) @binding(1) var tex2 : texture_2d<f32>;\n@group(1) @binding(2) var tex3 : texture_2d<f32>;\n@group(1) @binding(3) var tex4 : texture_2d<f32>;\n@group(1) @binding(4) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hue2rgb(p: f32, q: f32, t_in: f32) -> f32 {\n\tvar t = t_in;\n\tif (t < 0.0) { t = t + 1.0; }\n\tif (t > 1.0) { t = t - 1.0; }\n\tif (t < 1.0 / 6.0) { return p + (q - p) * 6.0 * t; }\n\tif (t < 1.0 / 2.0) { return q; }\n\tif (t < 2.0 / 3.0) { return p + (q - p) * (2.0 / 3.0 - t) * 6.0; }\n\treturn p;\n}\n\nfn hsl2rgb(h: f32, s: f32, l: f32) -> vec3<f32> {\n\tif (s <= 0.00001) {\n\t\treturn vec3<f32>(l, l, l);\n\t}\n\tlet q = select(l + s - l * s, l * (1.0 + s), l < 0.5);\n\tlet p = 2.0 * l - q;\n\tlet r = hue2rgb(p, q, h + 1.0 / 3.0);\n\tlet g = hue2rgb(p, q, h);\n\tlet b = hue2rgb(p, q, h - 1.0 / 3.0);\n\treturn vec3<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0));\n}\n\nfn inv_lab_f(t: f32) -> f32 {\n\tlet t3 = t * t * t;\n\treturn select((t - 16.0 / 116.0) / 7.787, t3, t3 > 0.008856);\n}\n\nfn lin2srgb(v: f32) -> f32 {\n\tlet c = clamp(v, 0.0, 1.0);\n\treturn select(c * 12.92, 1.055 * pow(c, 1.0 / 2.4) - 0.055, c > 0.0031308);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tlet c1 = textureSample(tex1, samp, in.uv);\n\tlet c2 = textureSample(tex2, samp, in.uv);\n\tlet c3 = textureSample(tex3, samp, in.uv);\n\tlet c4 = textureSample(tex4, samp, in.uv);\n\n\tlet v1 = c1.r;\n\tlet v2 = c2.r;\n\tlet v3 = c3.r;\n\tlet v4 = select(u.defaultCh4, c4.r, u.hasCh4 > 0.5);\n\n\tlet cs = u32(u.colorSpace + 0.5);\n\n\tif (cs == 0u) { // RGBA\n\t\treturn vec4<f32>(clamp(v1, 0.0, 1.0), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0), clamp(v4, 0.0, 1.0));\n\t} else if (cs == 1u) { // HSLA\n\t\tlet rgb = hsl2rgb(fract(v1), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0));\n\t\treturn vec4<f32>(rgb, clamp(v4, 0.0, 1.0));\n\t} else if (cs == 2u) { // CMYK\n\t\tlet C = clamp(v1, 0.0, 1.0);\n\t\tlet M = clamp(v2, 0.0, 1.0);\n\t\tlet Y = clamp(v3, 0.0, 1.0);\n\t\tlet K = clamp(v4, 0.0, 1.0);\n\t\tlet r = (1.0 - C) * (1.0 - K);\n\t\tlet g = (1.0 - M) * (1.0 - K);\n\t\tlet b = (1.0 - Y) * (1.0 - K);\n\t\treturn vec4<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0), 1.0);\n\t} else { // LAB\n\t\tlet L_norm = clamp(v1, 0.0, 1.0);\n\t\tlet a_norm = clamp(v2, 0.0, 1.0);\n\t\tlet b_norm = clamp(v3, 0.0, 1.0);\n\n\t\tlet L_star = L_norm * 100.0;\n\t\tlet a_star = a_norm * 255.0 - 128.0;\n\t\tlet b_star = b_norm * 255.0 - 128.0;\n\n\t\tlet fy = (L_star + 16.0) / 116.0;\n\t\tlet fx = fy + a_star / 500.0;\n\t\tlet fz = fy - b_star / 200.0;\n\n\t\tlet x = inv_lab_f(fx);\n\t\tlet y = inv_lab_f(fy);\n\t\tlet z = inv_lab_f(fz);\n\n\t\tlet X = x * 0.95047;\n\t\tlet Y = y * 1.00000;\n\t\tlet Z = z * 1.08883;\n\n\t\tlet lr = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n\t\tlet lg = -0.9692660 * X + 1.8760108 * Y + 0.0415560 * Z;\n\t\tlet lb = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n\n\t\treturn vec4<f32>(lin2srgb(lr), lin2srgb(lg), lin2srgb(lb), clamp(v4, 0.0, 1.0));\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst uniformData = new Float32Array(4);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\t\ttextureLayout: texturesLayout(device, 4),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getPipeline(device, format) {\n\tconst resources = getDeviceLayouts(device);\n\tconst key = `merger_${format}`;\n\tlet pipeline = resources.pipelineCache.get(key);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"ChannelMergerShader\",\n\t\t\tcode: WGSL_CHANNEL_MERGER\n\t\t});\n\t\tconst layout = device.createPipelineLayout({ bindGroupLayouts: [resources.uniformLayout, resources.textureLayout] });\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: \"ChannelMergerPipeline\",\n\t\t\tlayout,\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tresources.pipelineCache.set(key, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tresources\n\t};\n}\nconst ChannelMergerWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ChannelMerger\" || !op) return;\n\tconst ch1Media = op.channel1Media ?? props.virtualMedia.children?.[0];\n\tconst ch2Media = op.channel2Media;\n\tconst ch3Media = op.channel3Media;\n\tconst ch4Media = op.channel4Media;\n\tif (!ch1Media || !ch2Media || !ch3Media) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tex1, view: view1 } = await drawChildToTexture(args, ch1Media, { props: {\n\t\t...props,\n\t\tvirtualMedia: ch1Media,\n\t\trenderId: `${props.renderId}-ch1`\n\t} });\n\targs.pass.end();\n\tconst { texture: tex2, view: view2 } = await drawChildToTexture(args, ch2Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch2Media,\n\t\t\trenderId: `${props.renderId}-ch2`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tex1]\n\t\t},\n\t\texclude: [tex1]\n\t});\n\targs.pass.end();\n\tconst { texture: tex3, view: view3 } = await drawChildToTexture(args, ch3Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch3Media,\n\t\t\trenderId: `${props.renderId}-ch3`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2\n\t\t\t]\n\t\t},\n\t\texclude: [tex1, tex2]\n\t});\n\targs.pass.end();\n\tconst tex4 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\ttargetTexture,\n\t\ttex1,\n\t\ttex2,\n\t\ttex3\n\t]);\n\tconst view4 = tex4.createView();\n\tctx.renderer.beginFrame(encoder, view4, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tconst hasCh4 = ch4Media ? 1 : 0;\n\tif (ch4Media) {\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait drawChild(ch4Media, {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch4Media,\n\t\t\trenderId: `${props.renderId}-ch4`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2,\n\t\t\t\ttex3,\n\t\t\t\ttex4\n\t\t\t]\n\t\t}, view4, tex4, width, height);\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\targs.pass.end();\n\t}\n\tconst colorSpace = op.colorSpace ?? \"RGBA\";\n\tconst defaultCh4 = op.defaultChannel4 ?? (colorSpace === \"CMYK\" ? 0 : 1);\n\tuniformData[0] = COLOR_SPACE_MAP[colorSpace] ?? 0;\n\tuniformData[1] = hasCh4;\n\tuniformData[2] = defaultCh4;\n\tuniformData[3] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst { pipeline, resources } = getPipeline(ctx.device, targetTexture.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.textureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: view1\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: view2\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: view3\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: view4\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst finalPass = beginTargetPass(args);\n\tfinalPass.setPipeline(pipeline);\n\tfinalPass.setBindGroup(0, uniformBindGroup);\n\tfinalPass.setBindGroup(1, textureBindGroup);\n\tfinalPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURenderer });\n\n//#endregion\nexport { ChannelMergerWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-CFuJvvvy.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-CiHVnhUk.mjs","names":[],"sources":["../../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, beginTargetPass, drawChildToTexture, fragmentBindGroupLayout, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLOR_SPACE_MAP = {\n\tRGBA: 0,\n\tHSLA: 1,\n\tCMYK: 2,\n\tLAB: 3\n};\nconst WGSL_CHANNEL_MERGER = `\nstruct MergerUniforms {\n\tcolorSpace : f32, // 0=RGBA, 1=HSLA, 2=CMYK, 3=LAB\n\thasCh4 : f32, // 0 or 1\n\tdefaultCh4 : f32, // fallback value (1.0 for alpha, 0.0 for CMYK black)\n\t_pad0 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : MergerUniforms;\n@group(1) @binding(0) var tex1 : texture_2d<f32>;\n@group(1) @binding(1) var tex2 : texture_2d<f32>;\n@group(1) @binding(2) var tex3 : texture_2d<f32>;\n@group(1) @binding(3) var tex4 : texture_2d<f32>;\n@group(1) @binding(4) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hue2rgb(p: f32, q: f32, t_in: f32) -> f32 {\n\tvar t = t_in;\n\tif (t < 0.0) { t = t + 1.0; }\n\tif (t > 1.0) { t = t - 1.0; }\n\tif (t < 1.0 / 6.0) { return p + (q - p) * 6.0 * t; }\n\tif (t < 1.0 / 2.0) { return q; }\n\tif (t < 2.0 / 3.0) { return p + (q - p) * (2.0 / 3.0 - t) * 6.0; }\n\treturn p;\n}\n\nfn hsl2rgb(h: f32, s: f32, l: f32) -> vec3<f32> {\n\tif (s <= 0.00001) {\n\t\treturn vec3<f32>(l, l, l);\n\t}\n\tlet q = select(l + s - l * s, l * (1.0 + s), l < 0.5);\n\tlet p = 2.0 * l - q;\n\tlet r = hue2rgb(p, q, h + 1.0 / 3.0);\n\tlet g = hue2rgb(p, q, h);\n\tlet b = hue2rgb(p, q, h - 1.0 / 3.0);\n\treturn vec3<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0));\n}\n\nfn inv_lab_f(t: f32) -> f32 {\n\tlet t3 = t * t * t;\n\treturn select((t - 16.0 / 116.0) / 7.787, t3, t3 > 0.008856);\n}\n\nfn lin2srgb(v: f32) -> f32 {\n\tlet c = clamp(v, 0.0, 1.0);\n\treturn select(c * 12.92, 1.055 * pow(c, 1.0 / 2.4) - 0.055, c > 0.0031308);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tlet c1 = textureSample(tex1, samp, in.uv);\n\tlet c2 = textureSample(tex2, samp, in.uv);\n\tlet c3 = textureSample(tex3, samp, in.uv);\n\tlet c4 = textureSample(tex4, samp, in.uv);\n\n\tlet v1 = c1.r;\n\tlet v2 = c2.r;\n\tlet v3 = c3.r;\n\tlet v4 = select(u.defaultCh4, c4.r, u.hasCh4 > 0.5);\n\n\tlet cs = u32(u.colorSpace + 0.5);\n\n\tif (cs == 0u) { // RGBA\n\t\treturn vec4<f32>(clamp(v1, 0.0, 1.0), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0), clamp(v4, 0.0, 1.0));\n\t} else if (cs == 1u) { // HSLA\n\t\tlet rgb = hsl2rgb(fract(v1), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0));\n\t\treturn vec4<f32>(rgb, clamp(v4, 0.0, 1.0));\n\t} else if (cs == 2u) { // CMYK\n\t\tlet C = clamp(v1, 0.0, 1.0);\n\t\tlet M = clamp(v2, 0.0, 1.0);\n\t\tlet Y = clamp(v3, 0.0, 1.0);\n\t\tlet K = clamp(v4, 0.0, 1.0);\n\t\tlet r = (1.0 - C) * (1.0 - K);\n\t\tlet g = (1.0 - M) * (1.0 - K);\n\t\tlet b = (1.0 - Y) * (1.0 - K);\n\t\treturn vec4<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0), 1.0);\n\t} else { // LAB\n\t\tlet L_norm = clamp(v1, 0.0, 1.0);\n\t\tlet a_norm = clamp(v2, 0.0, 1.0);\n\t\tlet b_norm = clamp(v3, 0.0, 1.0);\n\n\t\tlet L_star = L_norm * 100.0;\n\t\tlet a_star = a_norm * 255.0 - 128.0;\n\t\tlet b_star = b_norm * 255.0 - 128.0;\n\n\t\tlet fy = (L_star + 16.0) / 116.0;\n\t\tlet fx = fy + a_star / 500.0;\n\t\tlet fz = fy - b_star / 200.0;\n\n\t\tlet x = inv_lab_f(fx);\n\t\tlet y = inv_lab_f(fy);\n\t\tlet z = inv_lab_f(fz);\n\n\t\tlet X = x * 0.95047;\n\t\tlet Y = y * 1.00000;\n\t\tlet Z = z * 1.08883;\n\n\t\tlet lr = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n\t\tlet lg = -0.9692660 * X + 1.8760108 * Y + 0.0415560 * Z;\n\t\tlet lb = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n\n\t\treturn vec4<f32>(lin2srgb(lr), lin2srgb(lg), lin2srgb(lb), clamp(v4, 0.0, 1.0));\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst uniformData = new Float32Array(4);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\t\ttextureLayout: texturesLayout(device, 4),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getPipeline(device, format) {\n\tconst resources = getDeviceLayouts(device);\n\tconst key = `merger_${format}`;\n\tlet pipeline = resources.pipelineCache.get(key);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"ChannelMergerShader\",\n\t\t\tcode: WGSL_CHANNEL_MERGER\n\t\t});\n\t\tconst layout = device.createPipelineLayout({ bindGroupLayouts: [resources.uniformLayout, resources.textureLayout] });\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: \"ChannelMergerPipeline\",\n\t\t\tlayout,\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tresources.pipelineCache.set(key, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tresources\n\t};\n}\nconst ChannelMergerWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ChannelMerger\" || !op) return;\n\tconst ch1Media = op.channel1Media ?? props.virtualMedia.children?.[0];\n\tconst ch2Media = op.channel2Media;\n\tconst ch3Media = op.channel3Media;\n\tconst ch4Media = op.channel4Media;\n\tif (!ch1Media || !ch2Media || !ch3Media) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tex1, view: view1 } = await drawChildToTexture(args, ch1Media, { props: {\n\t\t...props,\n\t\tvirtualMedia: ch1Media,\n\t\trenderId: `${props.renderId}-ch1`\n\t} });\n\targs.pass.end();\n\tconst { texture: tex2, view: view2 } = await drawChildToTexture(args, ch2Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch2Media,\n\t\t\trenderId: `${props.renderId}-ch2`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tex1]\n\t\t},\n\t\texclude: [tex1]\n\t});\n\targs.pass.end();\n\tconst { texture: tex3, view: view3 } = await drawChildToTexture(args, ch3Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch3Media,\n\t\t\trenderId: `${props.renderId}-ch3`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2\n\t\t\t]\n\t\t},\n\t\texclude: [tex1, tex2]\n\t});\n\targs.pass.end();\n\tconst tex4 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\ttargetTexture,\n\t\ttex1,\n\t\ttex2,\n\t\ttex3\n\t]);\n\tconst view4 = tex4.createView();\n\tctx.renderer.beginFrame(encoder, view4, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tconst hasCh4 = ch4Media ? 1 : 0;\n\tif (ch4Media) {\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait drawChild(ch4Media, {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch4Media,\n\t\t\trenderId: `${props.renderId}-ch4`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2,\n\t\t\t\ttex3,\n\t\t\t\ttex4\n\t\t\t]\n\t\t}, view4, tex4, width, height);\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\targs.pass.end();\n\t}\n\tconst colorSpace = op.colorSpace ?? \"RGBA\";\n\tconst defaultCh4 = op.defaultChannel4 ?? (colorSpace === \"CMYK\" ? 0 : 1);\n\tuniformData[0] = COLOR_SPACE_MAP[colorSpace] ?? 0;\n\tuniformData[1] = hasCh4;\n\tuniformData[2] = defaultCh4;\n\tuniformData[3] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst { pipeline, resources } = getPipeline(ctx.device, targetTexture.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.textureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: view1\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: view2\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: view3\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: view4\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst finalPass = beginTargetPass(args);\n\tfinalPass.setPipeline(pipeline);\n\tfinalPass.setBindGroup(0, uniformBindGroup);\n\tfinalPass.setBindGroup(1, textureBindGroup);\n\tfinalPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURenderer });\n\n//#endregion\nexport { ChannelMergerWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-CFuJvvvy.mjs.map"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as defineRenderer } from "./renderer-
|
|
2
|
-
import { i as beginTargetPass, l as fragmentBindGroupLayout, o as drawChildToTexture } from "./gpu-
|
|
1
|
+
import { n as defineRenderer } from "./renderer-BOg8i8eF.mjs";
|
|
2
|
+
import { i as beginTargetPass, l as fragmentBindGroupLayout, o as drawChildToTexture } from "./gpu-DHa-3Dou.mjs";
|
|
3
3
|
|
|
4
4
|
//#region ../../nodes/node-mesh-warp/dist/renderers-OcO6N-y5.mjs
|
|
5
5
|
function createUniformGrid(cols, rows) {
|
|
@@ -223,4 +223,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: MeshWarpWebGPURenderer
|
|
|
223
223
|
|
|
224
224
|
//#endregion
|
|
225
225
|
export { renderers_default as t };
|
|
226
|
-
//# sourceMappingURL=renderer-
|
|
226
|
+
//# sourceMappingURL=renderer-CtpEzVBn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-JHByuUNb.mjs","names":[],"sources":["../../../nodes/node-mesh-warp/dist/renderers-OcO6N-y5.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { beginTargetPass, drawChildToTexture, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/shared/utils.ts\nfunction createUniformGrid(cols, rows) {\n\tconst points = [];\n\tfor (let r = 0; r < rows; r++) {\n\t\tconst y = r / (rows - 1) * 100;\n\t\tfor (let c = 0; c < cols; c++) {\n\t\t\tconst x = c / (cols - 1) * 100;\n\t\t\tpoints.push({\n\t\t\t\tx,\n\t\t\t\ty\n\t\t\t});\n\t\t}\n\t}\n\treturn points;\n}\nfunction interpolateGridPoint(u, v, oldPoints, oldCols, oldRows) {\n\tconst px = u * (oldCols - 1);\n\tconst py = v * (oldRows - 1);\n\tconst x0 = Math.floor(px);\n\tconst x1 = Math.min(oldCols - 1, x0 + 1);\n\tconst y0 = Math.floor(py);\n\tconst y1 = Math.min(oldRows - 1, y0 + 1);\n\tconst tx = px - x0;\n\tconst ty = py - y0;\n\tconst p00 = oldPoints[y0 * oldCols + x0];\n\tconst p10 = oldPoints[y0 * oldCols + x1];\n\tconst p01 = oldPoints[y1 * oldCols + x0];\n\tconst p11 = oldPoints[y1 * oldCols + x1];\n\tif (!p00 || !p10 || !p01 || !p11) return {\n\t\tx: u * 100,\n\t\ty: v * 100\n\t};\n\treturn {\n\t\tx: (1 - tx) * (1 - ty) * p00.x + tx * (1 - ty) * p10.x + (1 - tx) * ty * p01.x + tx * ty * p11.x,\n\t\ty: (1 - tx) * (1 - ty) * p00.y + tx * (1 - ty) * p10.y + (1 - tx) * ty * p01.y + tx * ty * p11.y\n\t};\n}\nfunction resizeGrid(oldPoints, oldCols, oldRows, newCols, newRows) {\n\tif (!oldPoints || oldPoints.length !== oldCols * oldRows) return createUniformGrid(newCols, newRows);\n\tconst points = [];\n\tfor (let r = 0; r < newRows; r++) {\n\t\tconst v = r / (newRows - 1);\n\t\tfor (let c = 0; c < newCols; c++) {\n\t\t\tconst u = c / (newCols - 1);\n\t\t\tpoints.push(interpolateGridPoint(u, v, oldPoints, oldCols, oldRows));\n\t\t}\n\t}\n\treturn points;\n}\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst meshWarpWgsl = `\nstruct MeshUniforms {\n\tgridSize : vec2<f32>,\n\tlayerSize : vec2<f32>,\n\tmatrix_col0 : vec4<f32>,\n\tmatrix_col1 : vec4<f32>,\n\tpoints : array<vec4<f32>, 144>,\n};\n\n@group(0) @binding(0) var<uniform> u : MeshUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\nstruct VSOut {\n\t@builtin(position) pos : vec4<f32>,\n\t@location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n\tlet cols = u32(u.gridSize.x);\n\tlet rows = u32(u.gridSize.y);\n\t\n\tlet cellsCol = cols - 1u;\n\tlet cellsRow = rows - 1u;\n\tlet totalCells = cellsCol * cellsRow;\n\t\n\tlet cellIndex = vi / 6u;\n\tlet vertexInCell = vi % 6u;\n\t\n\tif (cellIndex >= totalCells) {\n\t\treturn VSOut(vec4<f32>(0.0), vec4<f32>(0.0).xy);\n\t}\n\t\n\tlet cellC = cellIndex % cellsCol;\n\tlet cellR = cellIndex / cellsCol;\n\t\n\tvar colOffset = 0u;\n\tvar rowOffset = 0u;\n\t\n\t// Mapping vertex index in cell to quad corner offset\n\t// Triangle 1: TL (0,0), TR (1,0), BL (0,1)\n\t// Triangle 2: TR (1,0), BR (1,1), BL (0,1)\n\tif (vertexInCell == 1u) { // TR\n\t\tcolOffset = 1u;\n\t\trowOffset = 0u;\n\t} else if (vertexInCell == 2u) { // BL\n\t\tcolOffset = 0u;\n\t\trowOffset = 1u;\n\t} else if (vertexInCell == 3u) { // TR\n\t\tcolOffset = 1u;\n\t\trowOffset = 0u;\n\t} else if (vertexInCell == 4u) { // BR\n\t\tcolOffset = 1u;\n\t\trowOffset = 1u;\n\t} else if (vertexInCell == 5u) { // BL\n\t\tcolOffset = 0u;\n\t\trowOffset = 1u;\n\t}\n\t// Vertex 0 is TL (colOffset=0, rowOffset=0)\n\t\n\tlet gridC = cellC + colOffset;\n\tlet gridR = cellR + rowOffset;\n\t\n\tlet pointIndex = gridR * cols + gridC;\n\tlet warpedPoint = u.points[pointIndex].xy;\n\t\n\tlet lx = (warpedPoint.x / 100.0) * u.layerSize.x;\n\tlet ly = (warpedPoint.y / 100.0) * u.layerSize.y;\n\t\n\tlet tx = u.matrix_col0.x * lx + u.matrix_col0.y * ly + u.matrix_col0.z;\n\tlet ty = u.matrix_col1.x * lx + u.matrix_col1.y * ly + u.matrix_col1.z;\n\t\n\tlet targetW = u.matrix_col0.w;\n\tlet targetH = u.matrix_col1.w;\n\t\n\tlet x_clip = (tx / targetW) * 2.0 - 1.0;\n\tlet y_clip = 1.0 - (ty / targetH) * 2.0;\n\t\n\tlet u_coord = f32(gridC) / f32(cellsCol);\n\tlet v_coord = f32(gridR) / f32(cellsRow);\n\t\n\treturn VSOut(vec4<f32>(x_clip, y_clip, 0.0, 1.0), vec2<f32>(u_coord, v_coord));\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\treturn color;\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getMeshWarpResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (!res) {\n\t\tconst warpUniformLayout = device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] });\n\t\tconst warpTextureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"mesh_warp.wgsl\",\n\t\t\tcode: meshWarpWgsl\n\t\t});\n\t\tres = {\n\t\t\twarpPipeline: device.createRenderPipeline({\n\t\t\t\tlabel: \"MeshWarpPipeline\",\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [warpUniformLayout, warpTextureLayout] }),\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: [{\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tblend: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tsrcFactor: \"src-alpha\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talpha: {\n\t\t\t\t\t\t\t\tsrcFactor: \"one\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-list\" }\n\t\t\t}),\n\t\t\twarpUniformLayout,\n\t\t\twarpTextureLayout\n\t\t};\n\t\tdeviceResourceCache.set(device, res);\n\t}\n\treturn res;\n}\nconst MeshWarpWebGPURenderer = async (args) => {\n\tconst { ctx, props, targetWidth, targetHeight } = args;\n\tconst { virtualMedia } = props;\n\tconst op = virtualMedia?.operation;\n\tif (!op || op.op !== \"MeshWarp\") return;\n\tconst childMedia = virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tconst sourceWidth = op.originalWidth ?? childMedia.metadata?.width ?? props.containerWidth ?? targetWidth;\n\tconst sourceHeight = op.originalHeight ?? childMedia.metadata?.height ?? props.containerHeight ?? targetHeight;\n\targs.pass.end();\n\tconst { texture: childTex } = await drawChildToTexture(args, childMedia, {\n\t\twidth: sourceWidth,\n\t\theight: sourceHeight,\n\t\tprops: {\n\t\t\t...props,\n\t\t\tcontainerWidth: sourceWidth,\n\t\t\tcontainerHeight: sourceHeight\n\t\t}\n\t});\n\tconst cols = Number(op.cols) || 3;\n\tconst rows = Number(op.rows) || 3;\n\tconst points = op.points || [];\n\tconst finalPoints = points.length === cols * rows ? points : createUniformGrid(cols, rows);\n\tconst maxPoints = 144;\n\tconst uniformData = new Float32Array(12 + maxPoints * 4);\n\tuniformData[0] = cols;\n\tuniformData[1] = rows;\n\tuniformData[2] = props.containerWidth ?? sourceWidth;\n\tuniformData[3] = props.containerHeight ?? sourceHeight;\n\tconst matrix = ctx.renderer.getCurrentTransform();\n\tuniformData[4] = matrix.a;\n\tuniformData[5] = matrix.c;\n\tuniformData[6] = matrix.e;\n\tuniformData[7] = targetWidth;\n\tuniformData[8] = matrix.b;\n\tuniformData[9] = matrix.d;\n\tuniformData[10] = matrix.f;\n\tuniformData[11] = targetHeight;\n\tfor (let i = 0; i < maxPoints; i++) {\n\t\tconst pt = finalPoints[i] || {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tuniformData[12 + i * 4] = pt.x;\n\t\tuniformData[12 + i * 4 + 1] = pt.y;\n\t}\n\tconst { warpPipeline: pipeline, warpUniformLayout: uLayout, warpTextureLayout: tLayout } = getMeshWarpResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, childTex, sampler);\n\tconst outPass = beginTargetPass(args);\n\toutPass.setPipeline(pipeline);\n\toutPass.setBindGroup(0, uniformBindGroup);\n\toutPass.setBindGroup(1, textureBindGroup);\n\tconst vertexCount = (cols - 1) * (rows - 1) * 6;\n\toutPass.draw(vertexCount);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: MeshWarpWebGPURenderer });\n\n//#endregion\nexport { resizeGrid as i, createUniformGrid as n, interpolateGridPoint as r, renderers_default as t };\n//# sourceMappingURL=renderers-OcO6N-y5.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-CtpEzVBn.mjs","names":[],"sources":["../../../nodes/node-mesh-warp/dist/renderers-OcO6N-y5.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { beginTargetPass, drawChildToTexture, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/shared/utils.ts\nfunction createUniformGrid(cols, rows) {\n\tconst points = [];\n\tfor (let r = 0; r < rows; r++) {\n\t\tconst y = r / (rows - 1) * 100;\n\t\tfor (let c = 0; c < cols; c++) {\n\t\t\tconst x = c / (cols - 1) * 100;\n\t\t\tpoints.push({\n\t\t\t\tx,\n\t\t\t\ty\n\t\t\t});\n\t\t}\n\t}\n\treturn points;\n}\nfunction interpolateGridPoint(u, v, oldPoints, oldCols, oldRows) {\n\tconst px = u * (oldCols - 1);\n\tconst py = v * (oldRows - 1);\n\tconst x0 = Math.floor(px);\n\tconst x1 = Math.min(oldCols - 1, x0 + 1);\n\tconst y0 = Math.floor(py);\n\tconst y1 = Math.min(oldRows - 1, y0 + 1);\n\tconst tx = px - x0;\n\tconst ty = py - y0;\n\tconst p00 = oldPoints[y0 * oldCols + x0];\n\tconst p10 = oldPoints[y0 * oldCols + x1];\n\tconst p01 = oldPoints[y1 * oldCols + x0];\n\tconst p11 = oldPoints[y1 * oldCols + x1];\n\tif (!p00 || !p10 || !p01 || !p11) return {\n\t\tx: u * 100,\n\t\ty: v * 100\n\t};\n\treturn {\n\t\tx: (1 - tx) * (1 - ty) * p00.x + tx * (1 - ty) * p10.x + (1 - tx) * ty * p01.x + tx * ty * p11.x,\n\t\ty: (1 - tx) * (1 - ty) * p00.y + tx * (1 - ty) * p10.y + (1 - tx) * ty * p01.y + tx * ty * p11.y\n\t};\n}\nfunction resizeGrid(oldPoints, oldCols, oldRows, newCols, newRows) {\n\tif (!oldPoints || oldPoints.length !== oldCols * oldRows) return createUniformGrid(newCols, newRows);\n\tconst points = [];\n\tfor (let r = 0; r < newRows; r++) {\n\t\tconst v = r / (newRows - 1);\n\t\tfor (let c = 0; c < newCols; c++) {\n\t\t\tconst u = c / (newCols - 1);\n\t\t\tpoints.push(interpolateGridPoint(u, v, oldPoints, oldCols, oldRows));\n\t\t}\n\t}\n\treturn points;\n}\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst meshWarpWgsl = `\nstruct MeshUniforms {\n\tgridSize : vec2<f32>,\n\tlayerSize : vec2<f32>,\n\tmatrix_col0 : vec4<f32>,\n\tmatrix_col1 : vec4<f32>,\n\tpoints : array<vec4<f32>, 144>,\n};\n\n@group(0) @binding(0) var<uniform> u : MeshUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\nstruct VSOut {\n\t@builtin(position) pos : vec4<f32>,\n\t@location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n\tlet cols = u32(u.gridSize.x);\n\tlet rows = u32(u.gridSize.y);\n\t\n\tlet cellsCol = cols - 1u;\n\tlet cellsRow = rows - 1u;\n\tlet totalCells = cellsCol * cellsRow;\n\t\n\tlet cellIndex = vi / 6u;\n\tlet vertexInCell = vi % 6u;\n\t\n\tif (cellIndex >= totalCells) {\n\t\treturn VSOut(vec4<f32>(0.0), vec4<f32>(0.0).xy);\n\t}\n\t\n\tlet cellC = cellIndex % cellsCol;\n\tlet cellR = cellIndex / cellsCol;\n\t\n\tvar colOffset = 0u;\n\tvar rowOffset = 0u;\n\t\n\t// Mapping vertex index in cell to quad corner offset\n\t// Triangle 1: TL (0,0), TR (1,0), BL (0,1)\n\t// Triangle 2: TR (1,0), BR (1,1), BL (0,1)\n\tif (vertexInCell == 1u) { // TR\n\t\tcolOffset = 1u;\n\t\trowOffset = 0u;\n\t} else if (vertexInCell == 2u) { // BL\n\t\tcolOffset = 0u;\n\t\trowOffset = 1u;\n\t} else if (vertexInCell == 3u) { // TR\n\t\tcolOffset = 1u;\n\t\trowOffset = 0u;\n\t} else if (vertexInCell == 4u) { // BR\n\t\tcolOffset = 1u;\n\t\trowOffset = 1u;\n\t} else if (vertexInCell == 5u) { // BL\n\t\tcolOffset = 0u;\n\t\trowOffset = 1u;\n\t}\n\t// Vertex 0 is TL (colOffset=0, rowOffset=0)\n\t\n\tlet gridC = cellC + colOffset;\n\tlet gridR = cellR + rowOffset;\n\t\n\tlet pointIndex = gridR * cols + gridC;\n\tlet warpedPoint = u.points[pointIndex].xy;\n\t\n\tlet lx = (warpedPoint.x / 100.0) * u.layerSize.x;\n\tlet ly = (warpedPoint.y / 100.0) * u.layerSize.y;\n\t\n\tlet tx = u.matrix_col0.x * lx + u.matrix_col0.y * ly + u.matrix_col0.z;\n\tlet ty = u.matrix_col1.x * lx + u.matrix_col1.y * ly + u.matrix_col1.z;\n\t\n\tlet targetW = u.matrix_col0.w;\n\tlet targetH = u.matrix_col1.w;\n\t\n\tlet x_clip = (tx / targetW) * 2.0 - 1.0;\n\tlet y_clip = 1.0 - (ty / targetH) * 2.0;\n\t\n\tlet u_coord = f32(gridC) / f32(cellsCol);\n\tlet v_coord = f32(gridR) / f32(cellsRow);\n\t\n\treturn VSOut(vec4<f32>(x_clip, y_clip, 0.0, 1.0), vec2<f32>(u_coord, v_coord));\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\treturn color;\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getMeshWarpResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (!res) {\n\t\tconst warpUniformLayout = device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] });\n\t\tconst warpTextureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"mesh_warp.wgsl\",\n\t\t\tcode: meshWarpWgsl\n\t\t});\n\t\tres = {\n\t\t\twarpPipeline: device.createRenderPipeline({\n\t\t\t\tlabel: \"MeshWarpPipeline\",\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [warpUniformLayout, warpTextureLayout] }),\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: [{\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tblend: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tsrcFactor: \"src-alpha\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talpha: {\n\t\t\t\t\t\t\t\tsrcFactor: \"one\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-list\" }\n\t\t\t}),\n\t\t\twarpUniformLayout,\n\t\t\twarpTextureLayout\n\t\t};\n\t\tdeviceResourceCache.set(device, res);\n\t}\n\treturn res;\n}\nconst MeshWarpWebGPURenderer = async (args) => {\n\tconst { ctx, props, targetWidth, targetHeight } = args;\n\tconst { virtualMedia } = props;\n\tconst op = virtualMedia?.operation;\n\tif (!op || op.op !== \"MeshWarp\") return;\n\tconst childMedia = virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tconst sourceWidth = op.originalWidth ?? childMedia.metadata?.width ?? props.containerWidth ?? targetWidth;\n\tconst sourceHeight = op.originalHeight ?? childMedia.metadata?.height ?? props.containerHeight ?? targetHeight;\n\targs.pass.end();\n\tconst { texture: childTex } = await drawChildToTexture(args, childMedia, {\n\t\twidth: sourceWidth,\n\t\theight: sourceHeight,\n\t\tprops: {\n\t\t\t...props,\n\t\t\tcontainerWidth: sourceWidth,\n\t\t\tcontainerHeight: sourceHeight\n\t\t}\n\t});\n\tconst cols = Number(op.cols) || 3;\n\tconst rows = Number(op.rows) || 3;\n\tconst points = op.points || [];\n\tconst finalPoints = points.length === cols * rows ? points : createUniformGrid(cols, rows);\n\tconst maxPoints = 144;\n\tconst uniformData = new Float32Array(12 + maxPoints * 4);\n\tuniformData[0] = cols;\n\tuniformData[1] = rows;\n\tuniformData[2] = props.containerWidth ?? sourceWidth;\n\tuniformData[3] = props.containerHeight ?? sourceHeight;\n\tconst matrix = ctx.renderer.getCurrentTransform();\n\tuniformData[4] = matrix.a;\n\tuniformData[5] = matrix.c;\n\tuniformData[6] = matrix.e;\n\tuniformData[7] = targetWidth;\n\tuniformData[8] = matrix.b;\n\tuniformData[9] = matrix.d;\n\tuniformData[10] = matrix.f;\n\tuniformData[11] = targetHeight;\n\tfor (let i = 0; i < maxPoints; i++) {\n\t\tconst pt = finalPoints[i] || {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tuniformData[12 + i * 4] = pt.x;\n\t\tuniformData[12 + i * 4 + 1] = pt.y;\n\t}\n\tconst { warpPipeline: pipeline, warpUniformLayout: uLayout, warpTextureLayout: tLayout } = getMeshWarpResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, childTex, sampler);\n\tconst outPass = beginTargetPass(args);\n\toutPass.setPipeline(pipeline);\n\toutPass.setBindGroup(0, uniformBindGroup);\n\toutPass.setBindGroup(1, textureBindGroup);\n\tconst vertexCount = (cols - 1) * (rows - 1) * 6;\n\toutPass.draw(vertexCount);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: MeshWarpWebGPURenderer });\n\n//#endregion\nexport { resizeGrid as i, createUniformGrid as n, interpolateGridPoint as r, renderers_default as t };\n//# sourceMappingURL=renderers-OcO6N-y5.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./chunk-W71TSjRM.mjs";
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
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-
|
|
2
|
+
import { n as defineRenderer } from "./renderer-BOg8i8eF.mjs";
|
|
3
|
+
import "./dist-B-OPY7Cs.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-DHa-3Dou.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-ascii/dist/renderers-Cc5sWRRu.mjs
|
|
7
7
|
const OP = "Ascii";
|
|
@@ -220,4 +220,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: AsciiWebGPURenderer });
|
|
|
220
220
|
|
|
221
221
|
//#endregion
|
|
222
222
|
export { AsciiWebGPURenderer, renderers_default as default };
|
|
223
|
-
//# sourceMappingURL=renderer-
|
|
223
|
+
//# sourceMappingURL=renderer-D3QPNBEj.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-BaIJIfJ6.mjs","names":[],"sources":["../../../nodes/node-ascii/dist/renderers-Cc5sWRRu.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 = \"Ascii\";\nconst UNIFORM_FLOATS = 16;\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>, 4> };\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); }\nconst GLYPH_BITS = array<u32, 10>(0u, 4194304u, 131200u, 14336u, 459200u, 145536u, 332096u, 11512810u, 27070835u, 15652782u);\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 cellSize = u.v[1].x;\n\tlet colorMode = u32(u.v[1].y + 0.5);\n\tlet fg = u.v[2];\n\tlet bg = u.v[3];\n\tlet contrast = u.v[1].z;\n\tlet invert = u.v[1].w;\n\n\tlet R = res();\n\tlet cs = max(cellSize, 2.0);\n\tlet cp = floor(in.uv * R / cs);\n\tlet col = sampleS((cp + 0.5) * cs / R);\n\tvar l = clamp((luma(col.rgb) - 0.5) * contrast + 0.5, 0.0, 1.0) * col.a;\n\tif (invert > 0.5) { l = 1.0 - l; }\n\tlet idx = min(u32(l * 9.999), 9u);\n\tlet f = in.uv * R / cs - cp;\n\tlet gx = i32(floor(f.x * 6.0));\n\tlet gy = i32(floor(f.y * 6.0));\n\tvar on = 0.0;\n\tif (gx < 5 && gy < 5) {\n\t\ton = f32((GLYPH_BITS[idx] >> u32(gy * 5 + gx)) & 1u);\n\t}\n\tvar fgc = fg.rgb;\n\tif (colorMode == 1u) { fgc = col.rgb * 1.25; }\n\tif (colorMode == 2u) { fgc = vec3<f32>(0.25, 1.0, 0.45) * (0.4 + 0.6 * l); }\n\treturn vec4<f32>(mix(bg.rgb, fgc, on), 1.0);\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}\nfunction hexToRgba(hex) {\n\tlet h = hex.trim().replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = [...h].map((c) => c + c).join(\"\");\n\tconst n = (i) => Number.parseInt(h.slice(i, i + 2), 16) / 255;\n\treturn [\n\t\tn(0),\n\t\tn(2),\n\t\tn(4),\n\t\th.length >= 8 ? n(6) : 1\n\t];\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] = num(raw.cellSize, 10);\n\tdata[5] = Math.max(0, [\n\t\t\"mono\",\n\t\t\"source\",\n\t\t\"green\"\n\t].indexOf(String(raw.colorMode ?? \"mono\")));\n\tdata.set(hexToRgba(String(raw.fg ?? \"#e8e8e8\")), 8);\n\tdata.set(hexToRgba(String(raw.bg ?? \"#0b0b0b\")), 12);\n\tdata[6] = num(raw.contrast, 1.2);\n\tdata[7] = raw.invert === void 0 ? 0 : raw.invert ? 1 : 0;\n}\nconst AsciiWebGPURenderer = 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: AsciiWebGPURenderer });\n\n//#endregion\nexport { AsciiWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-Cc5sWRRu.mjs.map"],"mappings":";;;;;;AAIA,MAAM,KAAK;AACX,MAAM,iBAAiB;;AAEvB,MAAM,SAAS,CAAC;;;;;EAKd,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ErB;AACF,MAAM,YAAY,WAAW,YAAY;CACxC,QAAQ,wBAAwB,QAAQ;EACvC;EACA;EACA;EACA;EACA,EAAE,GAAG,GAAG,SAAS;CAClB,2BAA2B,IAAI,KAAK;CACpC,SAAS,OAAO,cAAc;EAC7B,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;EACd,CAAC;CACF,EAAE;AACH,SAAS,aAAa,QAAQ,QAAQ;CACrC,MAAM,IAAI,UAAU,OAAO;CAC3B,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO;AAClC,KAAI,CAAC,MAAM;AACV,SAAO,OAAO,KAAK,MAAM,MAAM;GAC9B,MAAM,SAAS,OAAO,mBAAmB;IACxC;IACA,OAAO,GAAG,GAAG,GAAG,EAAE;IAClB,CAAC;AACF,UAAO,OAAO,qBAAqB;IAClC,OAAO,GAAG,GAAG,GAAG;IAChB,QAAQ,OAAO,qBAAqB,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;IACrE,QAAQ;KACP;KACA,YAAY;KACZ;IACD,UAAU;KACT;KACA,YAAY;KACZ,SAAS,CAAC,EAAE,QAAQ,CAAC;KACrB;IACD,WAAW,EAAE,UAAU,kBAAkB;IACzC,CAAC;IACD;AACF,IAAE,UAAU,IAAI,QAAQ,KAAK;;AAE9B,QAAO;;AAER,SAAS,IAAI,GAAG,UAAU;CACzB,MAAM,IAAI,OAAO,MAAM,WAAW,IAAI,OAAO,EAAE;AAC/C,QAAO,OAAO,SAAS,EAAE,GAAG,IAAI;;AAEjC,SAAS,UAAU,KAAK;CACvB,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG;AACnC,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EAAG,KAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,KAAK,GAAG;CAC3E,MAAM,KAAK,MAAM,OAAO,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG;AAC1D,QAAO;EACN,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,UAAU,IAAI,EAAE,EAAE,GAAG;EACvB;;;AAGF,SAAS,KAAK,KAAK,MAAM,MAAM,OAAO;AACrC,MAAK,KAAK,EAAE;AACZ,MAAK,KAAK;AACV,MAAK,KAAK;AACV,MAAK,KAAK,IAAI,IAAI,UAAU,GAAG;AAC/B,MAAK,KAAK,KAAK,IAAI,GAAG;EACrB;EACA;EACA;EACA,CAAC,QAAQ,OAAO,IAAI,aAAa,OAAO,CAAC,CAAC;AAC3C,MAAK,IAAI,UAAU,OAAO,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE;AACnD,MAAK,IAAI,UAAU,OAAO,IAAI,MAAM,UAAU,CAAC,EAAE,GAAG;AACpD,MAAK,KAAK,IAAI,IAAI,UAAU,IAAI;AAChC,MAAK,KAAK,IAAI,WAAW,KAAK,IAAI,IAAI,IAAI,SAAS,IAAI;;AAExD,MAAM,sBAAsB,OAAO,SAAS;CAC3C,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,GAAI;CACnB,MAAM,QAAQ,MAAM,cAAc,WAAW;AAC7C,KAAI,CAAC,MAAO;AACZ,MAAK,KAAK;CACV,MAAM,MAAM,MAAM,OAAO;CACzB,MAAM,QAAQ,KAAK,MAAM,MAAM,oBAAoB,MAAM,SAAS,EAAE;CACpE,MAAM,MAAM,GAAG,QAAQ,kBAAkB,GAAG,OAAO,gBAAgB;EAClE;EACA;EACA,MAAM,QAAQ;EACd,CAAC,GAAG;CACL,MAAM,OAAO,IAAI,aAAa,eAAe;AAC7C,MAAK,KAAK,MAAM,QAAQ,KAAK,MAAM;CACnC,MAAM,EAAE,SAAS,aAAa,MAAM,mBAAmB,MAAM,MAAM;CACnE,MAAM,SAAS,IAAI;CACnB,MAAM,IAAI,UAAU,OAAO;CAC3B,MAAM,YAAY,aAAa,QAAQ,IAAI,SAAS,OAAO;CAC3D,MAAM,MAAM,IAAI,SAAS,mBAAmB,KAAK;CACjD,IAAI,OAAO;AACX,MAAK,MAAM,YAAY,WAAW;EACjC,MAAM,MAAM,IAAI,SAAS,oBAAoB,aAAa,cAAc;GACvE;GACA;GACA;GACA,GAAG,MAAM,mBAAmB,EAAE;GAC9B,CAAC;AACF,qBAAmB,SAAS,IAAI,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB;GAC/E,QAAQ,EAAE;GACV,SAAS;IACR;KACC,SAAS;KACT,UAAU,EAAE,QAAQ,KAAK;KACzB;IACD;KACC,SAAS;KACT,UAAU,SAAS,YAAY;KAC/B;IACD;KACC,SAAS;KACT,UAAU,KAAK,YAAY;KAC3B;IACD;KACC,SAAS;KACT,UAAU,EAAE;KACZ;IACD;GACD,CAAC,CAAC,CAAC;AACJ,SAAO;;AAER,qBAAoB,MAAM,KAAK;;AAKhC,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"renderer-D3QPNBEj.mjs","names":[],"sources":["../../../nodes/node-ascii/dist/renderers-Cc5sWRRu.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 = \"Ascii\";\nconst UNIFORM_FLOATS = 16;\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>, 4> };\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); }\nconst GLYPH_BITS = array<u32, 10>(0u, 4194304u, 131200u, 14336u, 459200u, 145536u, 332096u, 11512810u, 27070835u, 15652782u);\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 cellSize = u.v[1].x;\n\tlet colorMode = u32(u.v[1].y + 0.5);\n\tlet fg = u.v[2];\n\tlet bg = u.v[3];\n\tlet contrast = u.v[1].z;\n\tlet invert = u.v[1].w;\n\n\tlet R = res();\n\tlet cs = max(cellSize, 2.0);\n\tlet cp = floor(in.uv * R / cs);\n\tlet col = sampleS((cp + 0.5) * cs / R);\n\tvar l = clamp((luma(col.rgb) - 0.5) * contrast + 0.5, 0.0, 1.0) * col.a;\n\tif (invert > 0.5) { l = 1.0 - l; }\n\tlet idx = min(u32(l * 9.999), 9u);\n\tlet f = in.uv * R / cs - cp;\n\tlet gx = i32(floor(f.x * 6.0));\n\tlet gy = i32(floor(f.y * 6.0));\n\tvar on = 0.0;\n\tif (gx < 5 && gy < 5) {\n\t\ton = f32((GLYPH_BITS[idx] >> u32(gy * 5 + gx)) & 1u);\n\t}\n\tvar fgc = fg.rgb;\n\tif (colorMode == 1u) { fgc = col.rgb * 1.25; }\n\tif (colorMode == 2u) { fgc = vec3<f32>(0.25, 1.0, 0.45) * (0.4 + 0.6 * l); }\n\treturn vec4<f32>(mix(bg.rgb, fgc, on), 1.0);\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}\nfunction hexToRgba(hex) {\n\tlet h = hex.trim().replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = [...h].map((c) => c + c).join(\"\");\n\tconst n = (i) => Number.parseInt(h.slice(i, i + 2), 16) / 255;\n\treturn [\n\t\tn(0),\n\t\tn(2),\n\t\tn(4),\n\t\th.length >= 8 ? n(6) : 1\n\t];\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] = num(raw.cellSize, 10);\n\tdata[5] = Math.max(0, [\n\t\t\"mono\",\n\t\t\"source\",\n\t\t\"green\"\n\t].indexOf(String(raw.colorMode ?? \"mono\")));\n\tdata.set(hexToRgba(String(raw.fg ?? \"#e8e8e8\")), 8);\n\tdata.set(hexToRgba(String(raw.bg ?? \"#0b0b0b\")), 12);\n\tdata[6] = num(raw.contrast, 1.2);\n\tdata[7] = raw.invert === void 0 ? 0 : raw.invert ? 1 : 0;\n}\nconst AsciiWebGPURenderer = 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: AsciiWebGPURenderer });\n\n//#endregion\nexport { AsciiWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-Cc5sWRRu.mjs.map"],"mappings":"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"}
|