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
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import{a as et,b as rt,c as yt}from"./chunk-JAAFSVAG.mjs";import{c as mt,d as pt,e as A}from"./chunk-CSLSWUUT.mjs";import{b as tt}from"./chunk-P4Y3PMJF.mjs";import{e as ft}from"./chunk-GXFYRMJZ.mjs";import{B as gt,c as dt,e as xt,y as U,z as C}from"./chunk-64L4GUOF.mjs";import{a as D}from"./chunk-354GX6IB.mjs";import{g as b}from"./chunk-Y4NIR77Z.mjs";b();function Nt(s,t=180,e=12,r=1,i=0){if(s<=0)return 0;let a=Math.sqrt(Math.max(1e-4,t)/Math.max(1e-4,r)),o=e/(2*Math.sqrt(Math.max(1e-4,t*r)));if(o<1){let l=a*Math.sqrt(1-o*o),n=Math.exp(-o*a*s),u=-1,c=(i-o*a*-1)/Math.max(1e-6,l),m=n*(u*Math.cos(l*s)+c*Math.sin(l*s));return Math.min(2,Math.max(-1,1+m))}else if(Math.abs(o-1)<1e-4){let l=Math.exp(-a*s);return 1+(-1+(i-a)*s)*l}else{let l=-a*(o-Math.sqrt(o*o-1)),n=-a*(o+Math.sqrt(o*o-1)),u=(i+n)/Math.max(1e-6,l-n),c=-1-u;return 1+(u*Math.exp(l*s)+c*Math.exp(n*s))}}function jt(s,t=0){if(s===0)return[1,0,0,1];let e=s*Math.PI/180,r=t*Math.PI/180,i=Math.cos(r),a=Math.sin(r),o=Math.tan(e),l=1-o*i*a,n=o*i*i,u=-o*a*a,c=1+o*a*i;return[l,n,u,c]}function Ht(s,t){let e=t.anchorX,r=t.anchorY;switch(t.preset){case"center":e=.5,r=.5;break;case"baseline":e=.5,r=s.height>0?s.ascender/s.height:.8;break;case"bottom_left":e=0,r=1;break;case"bottom_center":e=.5,r=1;break;case"bottom_right":e=1,r=1;break;case"top_left":e=0,r=0;break;case"top_center":e=.5,r=0;break;case"top_right":e=1,r=0;break;default:e=.5,r=.5;break}let i=(e-.5)*s.width+t.offsetX,a=(r-.5)*s.height+t.offsetY;return{px:i,py:a}}function Yt(s,t,e,r=0){if(e===0||t<=1)return 0;let i=r*(t-1);return(s-i)*e}function Xt(s,t){try{let e={textIndex:t.charIndex,textTotal:Math.max(1,t.totalChars),wordIndex:t.wordIndex,wordTotal:Math.max(1,t.totalWords),lineIndex:t.lineIndex,lineTotal:Math.max(1,t.totalLines),time:t.time,frame:t.frame,fps:t.fps,sin:Math.sin,cos:Math.cos,tan:Math.tan,exp:Math.exp,log:Math.log,abs:Math.abs,min:Math.min,max:Math.max,sqrt:Math.sqrt,pow:Math.pow,floor:Math.floor,ceil:Math.ceil,round:Math.round,PI:Math.PI,clamp:(l,n,u)=>Math.max(n,Math.min(u,l)),noise:l=>{let n=Math.sin(l*12.9898+t.frame*.1)*43758.5453;return(n-Math.floor(n))*2-1},signals:t.signals??{}},r=Object.keys(e),i=Object.values(e),a=new Function(...r,`return (${s});`),o=Number(a(...i));return Number.isFinite(o)?Math.max(-1,Math.min(1,o)):0}catch{return 0}}function Qt(s,t,e){let r=Math.max(1,t),i=r>1?s/(r-1):0,a=e.totalAngle*Math.PI/180,o=i*a,l=0,n=0,u=0,c=0,m=0,h=0,d=1;switch(e.mode){case"cylinder":{let y=e.totalAngle<360?(i-.5)*a:o;e.axis==="y"?(l=e.radius*Math.sin(y),u=e.radius*Math.cos(y)-e.radius,m=y*180/Math.PI):e.axis==="x"?(n=e.radius*Math.sin(y),u=e.radius*Math.cos(y)-e.radius,c=y*180/Math.PI):(l=e.radius*Math.sin(y),n=e.radius*Math.cos(y),h=y*180/Math.PI);let g=Math.cos(y);d=Math.max(.25,(g+1)*.5);break}case"vortex":{let g=-Math.PI/2+o,P=e.radius*(1-i*.35);l=P*Math.cos(g),n=P*Math.sin(g),u=-s*e.pitch||0;let v=-.35*e.radius/(a||1),M=v*Math.cos(g)-P*Math.sin(g),G=v*Math.sin(g)+P*Math.cos(g);h=Math.atan2(G,M)*180/Math.PI,d=Math.max(.65,1-i*.35);break}case"helix":{if(e.axis==="x"){let y=e.pitch>10?e.pitch:28;l=(s-(r-1)/2)*y,n=e.radius*Math.sin(o),u=e.radius*Math.cos(o)-e.radius,c=Math.sin(o)*22,d=.75+.25*((Math.cos(o)+1)*.5)}else{let y=(i-.5)*a;l=e.radius*Math.sin(y),n=(s-(r-1)/2)*e.pitch,u=e.radius*Math.cos(y)-e.radius,m=y*180/Math.PI;let g=Math.cos(y);d=Math.max(.65,(g+1)*.5)}break}default:{u=0;break}}let p=Math.max(100,e.perspective??1200),f=p-u,x=f>1?p/f:1;return{x:l*x,y:n*x,z:u,rotX:c,rotY:m,rotZ:h,scaleMult:Math.max(.1,x),depthOpacity:d}}function Kt(s,t,e,r,i){let o=(t>0?Math.max(t,e):e)+r.repeatGap;if(o<=0)return s;let l=r.velocity*i;if(r.snap?.enabled){let n=r.snap.stopIndex??0,u=r.snap.granularity==="character"?40:120,c=n*u,m=Math.min(1,i*1.5);l=l*(1-m)+c*m}if((r.direction==="right"||r.direction==="down")&&(l=-l),r.loop){let n=(s-l)%o;return n<-e?n+o:n}return s-l}function Zt(s,t,e,r,i,a){let o=Math.max(1,t),l=o>1?s/(o-1):.5,n=Math.max(20,e.minFreqHz),u=Math.max(n+100,e.maxFreqHz),c=n*(u/n)**l,m=0,h=ft.getChannelSamples(e.signalChannel,"primary");if(h&&h.length>0){let p=a>0?a:24,f=Math.max(0,Math.min(h.length-1,Math.round(i/p*24)));m=Number(h[f])||0}else if(r){let p=r[e.signalChannel];if(typeof p=="number")m=p;else if(typeof p=="function")m=Number(p(i,a,c))||0;else if(typeof p=="object"&&p!==null){let f=p;if(typeof f.get=="function")m=Number(f.get({frame:i,fps:a,freq:c}))||0;else if(Array.isArray(f.samples)||ArrayBuffer.isView(f.samples)){let x=f.samples,y=Math.floor(l*(x.length-1));m=Number(x[y])||0}}}let d=Math.max(0,Math.min(1,m));return e.minScale+d*(e.maxScale-e.minScale)}b();function ee(s,t,e,r,i,a=0,o=0){let l=t+r,n=e+r;if(n<=l)return 0;let u=(s-l)/(n-l),c=0;switch(i){case"square":c=u>=0&&u<=1?1:0;break;case"ramp_up":c=Math.max(0,Math.min(1,u));break;case"ramp_down":c=1-Math.max(0,Math.min(1,u));break;case"triangle":{u<0||u>1?c=0:u<.5?c=u*2:c=(1-u)*2;break}case"round":{u<0||u>1?c=0:c=.5-.5*Math.cos(u*2*Math.PI);break}case"smooth":{u<=0?c=0:u>=1?c=1:c=u*u*(3-2*u);break}}if(c>0&&c<1){if(a!==0&&c>.5){let m=(c-.5)*2,h=a>0?1+a*3:1/(1-a*3);c=.5+.5*m**h}if(o!==0&&c<=.5){let m=c*2,h=o>0?1+o*3:1/(1-o*3);c=.5*m**h}}return Math.max(0,Math.min(1,c))}function re(s,t,e,r){let i=(t*(1-r)+r)*12.9898+e+s*78.233,a=Math.sin(i)*43758.5453;return(a-Math.floor(a))*2-1}function ie(s,t){let e=t,r=()=>(e=(e*9301+49297)%233280,e/233280),i=Array.from({length:s},(a,o)=>o);for(let a=i.length-1;a>0;a--){let o=Math.floor(r()*(a+1)),l=i[a];i[a]=i[o],i[o]=l}return i}function ne(s,t,e){switch(e){case"add":return Math.max(0,Math.min(1,s+t));case"subtract":return Math.max(0,Math.min(1,s-t));case"intersect":return s*t;case"min":return Math.min(s,t);case"max":return Math.max(s,t);case"difference":return Math.abs(s-t)}}b();var Pt={ascii:"!@#$%^&*()_+{}[]:;<>,.?",alphanumeric:"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",matrix:"010101<>[]{}+=*~#%&!?/\\:;|X0123456789",binary:"01",hex:"0123456789ABCDEF"};function kt(s,t){return s==="custom"&&t&&t.length>0?t:Pt[s]??Pt.alphanumeric}function se(s,t,e,r,i={mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7},a={enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25},o=2,l="character",n){if(n===void 0&&t<e)return{visibleChars:0,currentDisplayString:"",isCursorVisible:!1};let u=n!==void 0?Math.max(0,Math.min(1,n)):Math.min(1,(t-e)/Math.max(1,r)),c=n!==void 0?u*r:t-e,m=s.length,h=Math.floor(u*m);if(l==="word"){let f=s.split(/(\s+)/),x=[];f.forEach((g,P)=>{g.trim().length>0&&x.push(P)});let y=Math.min(x.length,Math.floor(u*(x.length+1)));if(y<=0)h=0;else{let g=x[Math.min(x.length-1,y-1)];h=f.slice(0,g+1).join("").length}}else if(l==="line"){let f=s.split(`
|
|
2
|
+
`),x=Math.min(f.length,Math.floor(u*(f.length+1)));h=f.slice(0,x).join(`
|
|
3
|
+
`).length}else if(i.mode==="human"&&u<1){let f=0,x=0,y=r/Math.max(1,m);for(let g=0;g<m;g++){let P=s[g],v=1,M=i.commaPauseMultiplier??3,G=i.sentencePauseMultiplier??5.5,B=i.paragraphPauseMultiplier??7,R=i.jitter??.35;P===","||P===";"?v=M:P==="."||P==="!"||P==="?"?v=G:P===`
|
|
4
|
+
`&&(v=B);let L=1+Math.sin(g*17.3+42)*.5*R,w=y*v*L;if(x+=w,x<=c)f=g+1;else break}h=Math.min(m,f)}let d=s.slice(0,h);if(a.enabled&&h<m&&h>0){let f=kt(a.charset,a.customCharset),x=Math.min(h,Math.max(1,a.scrambleFramesPerChar>4?3:2)),y="";for(let g=0;g<x;g++){let P=Math.floor(Math.abs(Math.sin(t*7+g*13))*f.length)%f.length;y+=f[P]}d=d.slice(0,d.length-x)+y}let p=!0;if(o>0){let f=Math.max(1,Math.round(30/(2*o)));p=Math.floor(c/f)%2===0}return{visibleChars:h,currentDisplayString:d,isCursorVisible:p}}b();b();var bt=`
|
|
5
|
+
struct CompositeUniforms {
|
|
6
|
+
blendMode : u32,
|
|
7
|
+
padding1 : u32,
|
|
8
|
+
padding2 : u32,
|
|
9
|
+
padding3 : u32,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
@group(0) @binding(0) var<uniform> u : CompositeUniforms;
|
|
13
|
+
@group(1) @binding(0) var baseTex : texture_2d<f32>;
|
|
14
|
+
@group(1) @binding(1) var overlayTex : texture_2d<f32>;
|
|
15
|
+
@group(1) @binding(2) var samp : sampler;
|
|
16
|
+
|
|
17
|
+
struct VSOut {
|
|
18
|
+
@builtin(position) pos : vec4<f32>,
|
|
19
|
+
@location(0) uv : vec2<f32>,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
|
|
23
|
+
var pos = array<vec2<f32>, 4>(
|
|
24
|
+
vec2<f32>(-1.0, 1.0),
|
|
25
|
+
vec2<f32>(1.0, 1.0),
|
|
26
|
+
vec2<f32>(-1.0, -1.0),
|
|
27
|
+
vec2<f32>(1.0, -1.0)
|
|
28
|
+
);
|
|
29
|
+
var uv = array<vec2<f32>, 4>(
|
|
30
|
+
vec2<f32>(0.0, 0.0),
|
|
31
|
+
vec2<f32>(1.0, 0.0),
|
|
32
|
+
vec2<f32>(0.0, 1.0),
|
|
33
|
+
vec2<f32>(1.0, 1.0)
|
|
34
|
+
);
|
|
35
|
+
return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fn lum(c: vec3<f32>) -> f32 {
|
|
39
|
+
return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
fn clip_color(c: vec3<f32>) -> vec3<f32> {
|
|
43
|
+
let l = lum(c);
|
|
44
|
+
let n = min(min(c.r, c.g), c.b);
|
|
45
|
+
let x = max(max(c.r, c.g), c.b);
|
|
46
|
+
var res = c;
|
|
47
|
+
if (n < 0.0) {
|
|
48
|
+
res = l + (((res - l) * l) / (l - n));
|
|
49
|
+
}
|
|
50
|
+
if (x > 1.0) {
|
|
51
|
+
res = l + (((res - l) * (1.0 - l)) / (x - l));
|
|
52
|
+
}
|
|
53
|
+
return res;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
|
|
57
|
+
let diff = l - lum(c);
|
|
58
|
+
return clip_color(c + vec3<f32>(diff));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
fn sat(c: vec3<f32>) -> f32 {
|
|
62
|
+
return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
|
|
66
|
+
let c_min = min(min(c.r, c.g), c.b);
|
|
67
|
+
let c_max = max(max(c.r, c.g), c.b);
|
|
68
|
+
if (c_max <= c_min) {
|
|
69
|
+
return vec3<f32>(0.0);
|
|
70
|
+
}
|
|
71
|
+
return (c - vec3<f32>(c_min)) * s / (c_max - c_min);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
75
|
+
let d = textureSample(baseTex, samp, in.uv);
|
|
76
|
+
let s = textureSample(overlayTex, samp, in.uv);
|
|
77
|
+
let sa = s.a;
|
|
78
|
+
let da = d.a;
|
|
79
|
+
|
|
80
|
+
switch (u.blendMode) {
|
|
81
|
+
case 16u: { return d * sa; } // mask-in / destination-in
|
|
82
|
+
case 17u: { return d * (1.0 - sa); } // mask-out / destination-out
|
|
83
|
+
case 18u: { return s * da; } // source-in
|
|
84
|
+
case 19u: { return s * (1.0 - da); } // source-out
|
|
85
|
+
case 20u: { return s * da + d * (1.0 - sa); } // source-atop
|
|
86
|
+
case 21u: { return d + s * (1.0 - da); } // destination-over
|
|
87
|
+
case 22u: { return d * sa + s * (1.0 - da); } // destination-atop
|
|
88
|
+
case 23u: { return s + d; } // lighter
|
|
89
|
+
case 24u: { return s; } // copy
|
|
90
|
+
case 25u: { return s * (1.0 - da) + d * (1.0 - sa); } // xor
|
|
91
|
+
// Luma mattes: the overlay's brightness (premultiplied, so transparent = black) masks the base.
|
|
92
|
+
case 26u: { return d * clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0); } // luma-in
|
|
93
|
+
case 27u: { return d * (1.0 - clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0)); } // luma-out
|
|
94
|
+
default: {
|
|
95
|
+
if (sa <= 0.0) { return d; }
|
|
96
|
+
if (da <= 0.0) { return s; }
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
let s_rgb = select(s.rgb / sa, vec3<f32>(0.0), sa < 0.001);
|
|
101
|
+
let d_rgb = select(d.rgb / da, vec3<f32>(0.0), da < 0.001);
|
|
102
|
+
|
|
103
|
+
var b_rgb = s_rgb;
|
|
104
|
+
|
|
105
|
+
switch (u.blendMode) {
|
|
106
|
+
case 1u: { b_rgb = s_rgb * d_rgb; } // multiply
|
|
107
|
+
case 2u: { b_rgb = s_rgb + d_rgb - s_rgb * d_rgb; } // screen
|
|
108
|
+
case 3u: { // overlay
|
|
109
|
+
b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, d_rgb < vec3<f32>(0.5));
|
|
110
|
+
}
|
|
111
|
+
case 4u: { b_rgb = min(s_rgb, d_rgb); } // darken
|
|
112
|
+
case 5u: { b_rgb = max(s_rgb, d_rgb); } // lighten
|
|
113
|
+
case 6u: { // color-dodge
|
|
114
|
+
b_rgb = select(min(d_rgb / (1.0 - s_rgb), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb == vec3<f32>(1.0));
|
|
115
|
+
}
|
|
116
|
+
case 7u: { // color-burn
|
|
117
|
+
b_rgb = select(1.0 - min((1.0 - d_rgb) / s_rgb, vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb == vec3<f32>(0.0));
|
|
118
|
+
}
|
|
119
|
+
case 8u: { // hard-light
|
|
120
|
+
b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, s_rgb < vec3<f32>(0.5));
|
|
121
|
+
}
|
|
122
|
+
case 9u: { // soft-light
|
|
123
|
+
b_rgb = select(
|
|
124
|
+
d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
|
|
125
|
+
d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
|
|
126
|
+
s_rgb <= vec3<f32>(0.5)
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
case 10u: { b_rgb = abs(d_rgb - s_rgb); } // difference
|
|
130
|
+
case 11u: { b_rgb = s_rgb + d_rgb - 2.0 * s_rgb * d_rgb; } // exclusion
|
|
131
|
+
case 12u: { b_rgb = set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb)); } // hue
|
|
132
|
+
case 13u: { b_rgb = set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb)); } // saturation
|
|
133
|
+
case 14u: { b_rgb = set_lum(s_rgb, lum(d_rgb)); } // color
|
|
134
|
+
case 15u: { b_rgb = set_lum(d_rgb, lum(s_rgb)); } // luminosity
|
|
135
|
+
case 16u: { return d * s.a; } // mask-in
|
|
136
|
+
case 17u: { return d * (1.0 - s.a); } // mask-out
|
|
137
|
+
default: { b_rgb = s_rgb; } // normal
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
let out_a = sa + da * (1.0 - sa);
|
|
141
|
+
let out_rgb = (1.0 - da) * s.rgb + (1.0 - sa) * d.rgb + sa * da * b_rgb;
|
|
142
|
+
|
|
143
|
+
return vec4<f32>(out_rgb, out_a);
|
|
144
|
+
}
|
|
145
|
+
`;var _t=`
|
|
146
|
+
struct MotionBlur2DUniforms {
|
|
147
|
+
vel: vec2<f32>,
|
|
148
|
+
_pad: vec2<f32>,
|
|
149
|
+
shutterFraction: f32,
|
|
150
|
+
samples: f32,
|
|
151
|
+
viewportWidth: f32,
|
|
152
|
+
viewportHeight: f32,
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
@group(0) @binding(0) var<uniform> u: MotionBlur2DUniforms;
|
|
156
|
+
@group(1) @binding(0) var sourceTexture: texture_2d<f32>;
|
|
157
|
+
@group(1) @binding(1) var colorSampler: sampler;
|
|
158
|
+
|
|
159
|
+
@vertex
|
|
160
|
+
fn vs(@builtin(vertex_index) vertexIndex: u32) -> @builtin(position) vec4<f32> {
|
|
161
|
+
var pos = array<vec2<f32>, 3>(
|
|
162
|
+
vec2<f32>(-1.0, -3.0),
|
|
163
|
+
vec2<f32>( 3.0, 1.0),
|
|
164
|
+
vec2<f32>(-1.0, 1.0)
|
|
165
|
+
);
|
|
166
|
+
return vec4<f32>(pos[vertexIndex], 0.0, 1.0);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@fragment
|
|
170
|
+
fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
171
|
+
let uv = pos.xy / vec2<f32>(u.viewportWidth, u.viewportHeight);
|
|
172
|
+
let sampleCount = u32(max(u.samples, 1.0));
|
|
173
|
+
let velUV = u.vel * u.shutterFraction;
|
|
174
|
+
let halfSamples = f32(sampleCount) * 0.5;
|
|
175
|
+
|
|
176
|
+
var accum = vec4<f32>(0.0);
|
|
177
|
+
var totalWeight = 0.0;
|
|
178
|
+
|
|
179
|
+
for (var i = 0u; i < sampleCount; i = i + 1u) {
|
|
180
|
+
let t = (f32(i) - halfSamples) / max(halfSamples, 1.0);
|
|
181
|
+
let sampleUV = clamp(uv + velUV * t, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
182
|
+
let w = exp(-2.5 * t * t);
|
|
183
|
+
accum += textureSampleLevel(sourceTexture, colorSampler, sampleUV, 0.0) * w;
|
|
184
|
+
totalWeight += w;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return accum / max(totalWeight, 0.0001);
|
|
188
|
+
}
|
|
189
|
+
`,it=class{textures=[];texturesByKey=new Map;index=0;getTexture(t,e,r,i,a){let o=new Set(Array.isArray(a)?a:a?[a]:[]),l=`${e}x${r}:${i}`,n=this.texturesByKey.get(l);if(n)for(let c=0;c<n.length;c++){let m=n[c];if(!o.has(m)){n.splice(c,1),n.unshift(m);let h=this.textures.indexOf(m);return h>=this.index&&(this.textures.splice(h,1),this.textures.splice(this.index,0,m),this.index++),m}}let u=t.createTexture({size:[e,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(l)||this.texturesByKey.set(l,[]),this.texturesByKey.get(l).unshift(u),this.textures.splice(this.index,0,u),this.index++,u}reset(){this.index=0}destroy(){for(let t of this.textures)t.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Rt={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25,"luma-in":26,"luma-out":27},E=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new C;motionBlurUniformBindGroupCache=new C;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(t,e){this.device=t,this.compositePool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new it,this.compositeUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=t.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=t.createShaderModule({label:"composite.wgsl",code:bt});this.compositePipeline=t.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}});let a=t.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),o=t.createShaderModule({label:"motion-blur-2d.wgsl",code:_t});this.motionBlurPipeline=t.createRenderPipeline({label:"MotionBlurPipeline",layout:a,vertex:{module:o,entryPoint:"vs"},fragment:{module:o,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(t,e,r,i,a){return this.texturePool.getTexture(t,e,r,i,a)}getBuffer(t,e){return this.compositePool.getBuffer(t,e)}composite(t,e,r,i,a,o,l,n){let u=r.getSampler(this.device),c=[i,a];n&&(Array.isArray(n)?c.push(...n):c.push(n));let m=this.texturePool.getTexture(this.device,i.width,i.height,l,c);this.compositeData[0]=Rt[o]??0;let h=this.compositePool.getBuffer(this.device,this.compositeData),d=t.beginRenderPass({colorAttachments:[{view:m.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});d.setPipeline(this.compositePipeline);let p=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,h);d.setBindGroup(0,p);let f=e.getCompositeBindGroup(this.device,this.dualTextureLayout,i,a,u);return d.setBindGroup(1,f),d.draw(4),d.end(),m}applyMotionBlur(t,e,r,i,a,o,l=180,n=16,u,c){if(Math.abs(a)<.1&&Math.abs(o)<.1||l<=0)return i;let m=r.getSampler(this.device),h=[i];c&&(Array.isArray(c)?h.push(...c):h.push(c));let d=this.texturePool.getTexture(this.device,i.width,i.height,u,h);this.motionBlurData[0]=a/i.width,this.motionBlurData[1]=o/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=l/360,this.motionBlurData[5]=n,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let p=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),f=t.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});f.setPipeline(this.motionBlurPipeline);let x=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,p);return f.setBindGroup(0,x),f.setBindGroup(1,e.getBindGroup(this.device,this.singleTextureLayout,i,m)),f.draw(3),f.end(),d}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};b();b();var I=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(t,e,r,i){let a=this.cache.get(r);a||(a=new Map,this.cache.set(r,a));let o=a.get(e);return o||(o=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),a.set(e,o)),o}getCompositeBindGroup(t,e,r,i,a){let o=this.dualCache.get(r);o||(o=new WeakMap,this.dualCache.set(r,o));let l=o.get(i);l||(l=new Map,o.set(i,l));let n=l.get(e);return n||(n=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:a}]}),l.set(e,n)),n}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};b();var V=class{scissorStack=[];stencilStack=[];pushScissor(t,e,r){this.scissorStack.push({rect:t,surfaceWidth:e,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(t){this.scissorStack=[...t]}clearScissors(){this.scissorStack=[]}getCurrentScissor(t,e){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(t!==void 0&&e!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==t||r.surfaceHeight!==e)))return r.rect}pushStencilClip(t){this.stencilStack.push(t)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(t,e,r){let i=this.getCurrentScissor(e,r);if(!i){t.setScissorRect(0,0,Math.max(1,Math.floor(e)),Math.max(1,Math.floor(r)));return}let a=Math.max(0,Math.floor(i.x)),o=Math.max(0,Math.floor(i.y)),l=Math.min(e,Math.ceil(i.x+i.width)),n=Math.min(r,Math.ceil(i.y+i.height)),u=Math.max(0,l-a),c=Math.max(0,n-o);if(!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(u)||!Number.isFinite(c)||u<=0||c<=0)t.setScissorRect(0,0,1,1);else{let m=Math.min(u,Math.max(0,e-a)),h=Math.min(c,Math.max(0,r-o));m<=0||h<=0?t.setScissorRect(0,0,1,1):t.setScissorRect(Math.floor(a),Math.floor(o),Math.floor(m),Math.floor(h))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};b();function vt(s,t,e,r,i=24){let a=[],o=s;for(let l=1;l<=i;l++){let n=l/i,u=1-n,c=u*u,m=c*u,h=n*n,d=h*n,p={x:m*s.x+3*c*n*t.x+3*u*h*e.x+d*r.x,y:m*s.y+3*c*n*t.y+3*u*h*e.y+d*r.y};a.push({p0:o,p1:p}),o=p}return a}function Mt(s,t,e,r=16){let i=[],a=s;for(let o=1;o<=r;o++){let l=o/r,n=1-l,u=n*n,c=l*l,m={x:u*s.x+2*n*l*t.x+c*e.x,y:u*s.y+2*n*l*t.y+c*e.y};i.push({p0:a,p1:m}),a=m}return i}function Lt(s,t,e,r,i,a,o){let l=Math.abs(t),n=Math.abs(e);if(l<1e-9||n<1e-9)return[{p0:s,p1:o}];if(Math.hypot(o.x-s.x,o.y-s.y)<1e-9)return[];let u=r*Math.PI/180,c=Math.cos(u),m=Math.sin(u),h=(s.x-o.x)/2,d=(s.y-o.y)/2,p=c*h+m*d,f=-m*h+c*d,x=p*p/(l*l)+f*f/(n*n);x>1&&(l*=Math.sqrt(x),n*=Math.sqrt(x));let y=l*l*n*n-l*l*f*f-n*n*p*p,g=l*l*f*f+n*n*p*p,P=(i===a?-1:1)*Math.sqrt(Math.max(0,y/g)),v=P*l*f/n,M=-P*n*p/l,G=c*v-m*M+(s.x+o.x)/2,B=m*v+c*M+(s.y+o.y)/2,R=(k,F,O,$)=>Math.atan2(k*$-F*O,k*O+F*$),L=R(1,0,(p-v)/l,(f-M)/n),w=R((p-v)/l,(f-M)/n,(-p-v)/l,(-f-M)/n);!a&&w>0&&(w-=2*Math.PI),a&&w<0&&(w+=2*Math.PI);let J=Math.max(4,Math.ceil(Math.abs(w)/(2*Math.PI)*64)),ut=[],ct=s;for(let k=1;k<=J;k++){let F=L+w*k/J,O=l*Math.cos(F),$=n*Math.sin(F),ht=k===J?o:{x:c*O-m*$+G,y:m*O+c*$+B};ut.push({p0:ct,p1:ht}),ct=ht}return ut}function z(s){let t=[];if(!s||typeof s!="string")return t;let e=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(s))!==null;)i[1]?e.push(i[1]):i[2]&&e.push(parseFloat(i[2]));let a=0,o={x:0,y:0},l={x:0,y:0},n=null,u=null;for(;a<e.length;){let c=e[a++];if(typeof c!="string")continue;let m=c,h=m===m.toLowerCase(),d=m.toUpperCase(),p=()=>a<e.length&&typeof e[a]=="number"?e[a++]:0;switch(d){case"M":{let f=!0;for(;a<e.length&&typeof e[a]=="number";){let x=p(),y=p();h&&(x+=o.x,y+=o.y),f?(o={x,y},l={x,y},f=!1):(t.push({p0:o,p1:{x,y}}),o={x,y})}n=null,u=null;break}case"L":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p();h&&(f+=o.x,x+=o.y),t.push({p0:o,p1:{x:f,y:x}}),o={x:f,y:x}}n=null,u=null;break}case"H":{for(;a<e.length&&typeof e[a]=="number";){let f=p();h&&(f+=o.x);let x={x:f,y:o.y};t.push({p0:o,p1:x}),o=x}n=null,u=null;break}case"V":{for(;a<e.length&&typeof e[a]=="number";){let f=p();h&&(f+=o.y);let x={x:o.x,y:f};t.push({p0:o,p1:x}),o=x}n=null,u=null;break}case"C":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p(),P=p(),v=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y,P+=o.x,v+=o.y);let M={x:f,y:x},G={x:y,y:g},B={x:P,y:v};t.push(...vt(o,M,G,B)),o=B,n=G}u=null;break}case"S":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y);let P;n?P={x:2*o.x-n.x,y:2*o.y-n.y}:P={x:o.x,y:o.y};let v={x:f,y:x},M={x:y,y:g};t.push(...vt(o,P,v,M)),o=M,n=v}u=null;break}case"Q":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y);let P={x:f,y:x},v={x:y,y:g};t.push(...Mt(o,P,v)),o=v,u=P}n=null;break}case"T":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p();h&&(f+=o.x,x+=o.y);let y;u?y={x:2*o.x-u.x,y:2*o.y-u.y}:y={x:o.x,y:o.y};let g={x:f,y:x};t.push(...Mt(o,y,g)),o=g,u=y}n=null;break}case"A":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p()!==0,P=p()!==0,v=p(),M=p();h&&(v+=o.x,M+=o.y);let G={x:v,y:M};t.push(...Lt(o,f,x,y,g,P,G)),o=G}n=null,u=null;break}case"Z":{Math.hypot(o.x-l.x,o.y-l.y)>1e-5&&t.push({p0:o,p1:l}),o=l,n=null,u=null;break}default:break}}return t}function W(s,t,e,r=0){if(s.length===0)return[];let i=[],a=0;for(let c of s){let m=Math.hypot(c.p1.x-c.p0.x,c.p1.y-c.p0.y);i.push(m),a+=m}if(a<1e-6)return[];let o=Math.abs(r)>1?r%360/360:r,l=(t+o)%1,n=(e+o)%1;l<0&&(l+=1),n<0&&(n+=1);let u=(c,m)=>{if(c>=m)return[];let h=[],d=0;for(let p=0;p<s.length;p++){let f=s[p],x=i[p],y=d,g=d+x;if(d=g,g<=c||y>=m||x<1e-6)continue;let P=Math.max(0,(c-y)/x),v=Math.min(1,(m-y)/x);if(v>P){let M={x:f.p0.x+(f.p1.x-f.p0.x)*P,y:f.p0.y+(f.p1.y-f.p0.y)*P},G={x:f.p0.x+(f.p1.x-f.p0.x)*v,y:f.p0.y+(f.p1.y-f.p0.y)*v};h.push({p0:M,p1:G})}}return h};if(t===0&&e===1&&r===0)return[...s];if(Math.abs(l-n)<1e-5)return[];if(l<=n)return u(l*a,n*a);{let c=u(l*a,a),m=u(0,n*a);return[...c,...m]}}function nt(s,t,e=0){if(s.length===0||t.length===0)return s;let r=0;for(let d of t)r+=d;if(r<1e-5)return s;let i=0,a=[];for(let d of s){let p=Math.hypot(d.p1.x-d.p0.x,d.p1.y-d.p0.y);a.push(p),i+=p}let o=[],l=(e%r+r)%r,n=0,u=!0,c=l;for(;c>t[n];)c-=t[n],n=(n+1)%t.length,u=!u;let m=t[n]-c,h=0;for(;h<i;){let d=Math.min(m,i-h);if(u&&d>1e-4){let p=W(s,h/i,(h+d)/i);o.push(...p)}h+=d,n=(n+1)%t.length,u=!u,m=t[n]}return o}function Gt(s,t,e=0,r=0,i=0,a=0){let o=Math.min(s/2,t/2),l=Math.min(e,o),n=Math.min(r,o),u=Math.min(i,o),c=Math.min(a,o);return l===0&&n===0&&u===0&&c===0?`M 0 0 L ${s} 0 L ${s} ${t} L 0 ${t} Z`:[`M ${l} 0`,`L ${s-n} 0`,n>0?`Q ${s} 0 ${s} ${n}`:`L ${s} 0`,`L ${s} ${t-u}`,u>0?`Q ${s} ${t} ${s-u} ${t}`:`L ${s} ${t}`,`L ${c} ${t}`,c>0?`Q 0 ${t} 0 ${t-c}`:`L 0 ${t}`,`L 0 ${l}`,l>0?`Q 0 0 ${l} 0`:"L 0 0","Z"].join(" ")}function Ft(s,t){let e=Math.min(s,t)/2,r=s/2,i=t/2,a=e*.5522847498;return[`M ${r} ${i-e}`,`C ${r+a} ${i-e} ${r+e} ${i-a} ${r+e} ${i}`,`C ${r+e} ${i+a} ${r+a} ${i+e} ${r} ${i+e}`,`C ${r-a} ${i+e} ${r-e} ${i+a} ${r-e} ${i}`,`C ${r-e} ${i-a} ${r-a} ${i-e} ${r} ${i-e}`,"Z"].join(" ")}function Ot(s,t){let e=s/2,r=t/2,i=e,a=r,o=e*.5522847498,l=r*.5522847498;return[`M ${i} ${a-r}`,`C ${i+o} ${a-r} ${i+e} ${a-l} ${i+e} ${a}`,`C ${i+e} ${a+l} ${i+o} ${a+r} ${i} ${a+r}`,`C ${i-o} ${a+r} ${i-e} ${a+l} ${i-e} ${a}`,`C ${i-e} ${a-l} ${i-o} ${a-r} ${i} ${a-r}`,"Z"].join(" ")}function $t(s,t,e=5){let r=Math.max(3,e),i=Math.min(s,t)/2,a=s/2,o=t/2,l=[];for(let n=0;n<r;n++){let u=-Math.PI/2+n*2*Math.PI/r;l.push({x:a+i*Math.cos(u),y:o+i*Math.sin(u)})}return l.map((n,u)=>`${u===0?"M":"L"} ${n.x} ${n.y}`).join(" ")+" Z"}function At(s,t,e=5,r=.5){let i=Math.max(3,e),a=Math.min(s,t)/2,o=a*Math.max(.01,Math.min(.99,r)),l=s/2,n=t/2,u=[];for(let c=0;c<i*2;c++){let m=-Math.PI/2+c*Math.PI/i,h=c%2===0?a:o;u.push({x:l+h*Math.cos(m),y:n+h*Math.sin(m)})}return u.map((c,m)=>`${m===0?"M":"L"} ${c.x} ${c.y}`).join(" ")+" Z"}function Et(s,t,e=40,r=40,i=20){let a=Math.min(e,t),o=Math.min(r,s),l=Math.min(i,a),n=t/2;return[`M 0 ${n-l/2}`,`L ${s-o} ${n-l/2}`,`L ${s-o} ${n-a/2}`,`L ${s} ${n}`,`L ${s-o} ${n+a/2}`,`L ${s-o} ${n+l/2}`,`L 0 ${n+l/2}`,"Z"].join(" ")}function ot(s){let{shapeType:t,width:e,height:r}=s;switch(t){case"rect":return Gt(e,r,s.cornerRadius??0,s.cornerRadius??0,s.cornerRadius??0,s.cornerRadius??0);case"circle":return Ft(e,r);case"ellipse":return Ot(e,r);case"polygon":return $t(e,r,s.polygonSides??5);case"star":return At(e,r,s.starPoints??5,s.starInnerRadiusRatio??.5);case"arrow":return Et(e,r,s.arrowHeadWidth??40,s.arrowHeadLength??40,s.arrowShaftWidth??20);case"path":return s.path??"";default:return""}}function St(s){if(s.length<3)return[];if(s.length===3)return[s[0],s[1],s[2]];let t=[...s],e=t[t.length-1],r=t[0];if(Math.hypot(e.x-r.x,e.y-r.y)<1e-5&&t.pop(),t.length<3)return[];let i=0;for(let m=0;m<t.length;m++){let h=(m+1)%t.length;i+=t[m].x*t[h].y-t[h].x*t[m].y}i<0&&t.reverse();let a=(m,h,d,p)=>{let f=(d.x-h.x)*(m.y-h.y)-(d.y-h.y)*(m.x-h.x),x=(p.x-d.x)*(m.y-d.y)-(p.y-d.y)*(m.x-d.x),y=(h.x-p.x)*(m.y-p.y)-(h.y-p.y)*(m.x-p.x);return f>=-1e-6&&x>=-1e-6&&y>=-1e-6},o=(m,h,d,p)=>{if((h.x-m.x)*(d.y-m.y)-(h.y-m.y)*(d.x-m.x)<=1e-7)return!1;for(let x of p)if(!(x===m||x===h||x===d)&&a(x,m,h,d))return!1;return!0},l=[],n=[...t],u=0,c=n.length*n.length*2;for(;n.length>3&&u<c;){u++;let m=!1;for(let h=0;h<n.length;h++){let d=n[(h-1+n.length)%n.length],p=n[h],f=n[(h+1)%n.length];if(o(d,p,f,n)){l.push(d,p,f),n.splice(h,1),m=!0;break}}m||(l.push(n[0],n[1],n[2]),n.splice(1,1))}return n.length===3&&l.push(n[0],n[1],n[2]),l}function Ut(s){let{shapeType:t,width:e,height:r}=s;if(t==="rect"){let i=s.cornerRadius??0;if(i<=0)return new Float32Array([0,0,e,0,e,r,0,0,e,r,0,r]);let a=Gt(e,r,i,i,i,i),l=z(a).map(c=>c.p0),n=St(l),u=new Float32Array(n.length*2);for(let c=0;c<n.length;c++)u[c*2]=n[c].x,u[c*2+1]=n[c].y;return u}if(t==="circle"||t==="ellipse"){let i=e/2,a=r/2,o=t==="circle"?Math.min(e,r)/2:e/2,l=t==="circle"?o:r/2,n=48,u=new Float32Array(n*3*2),c=0;for(let m=0;m<n;m++){let h=m*2*Math.PI/n,d=(m+1)*2*Math.PI/n;u[c++]=i,u[c++]=a,u[c++]=i+o*Math.cos(h),u[c++]=a+l*Math.sin(h),u[c++]=i+o*Math.cos(d),u[c++]=a+l*Math.sin(d)}return u}if(t==="polygon"){let i=Math.max(3,s.polygonSides??5),a=Math.min(e,r)/2,o=e/2,l=r/2,n=new Float32Array(i*3*2),u=0;for(let c=0;c<i;c++){let m=-Math.PI/2+c*2*Math.PI/i,h=-Math.PI/2+(c+1)*2*Math.PI/i;n[u++]=o,n[u++]=l,n[u++]=o+a*Math.cos(m),n[u++]=l+a*Math.sin(m),n[u++]=o+a*Math.cos(h),n[u++]=l+a*Math.sin(h)}return n}if(t==="star"){let i=Math.max(3,s.starPoints??5),a=Math.min(e,r)/2,o=a*Math.max(.01,Math.min(.99,s.starInnerRadiusRatio??.5)),l=e/2,n=r/2,u=i*2,c=new Float32Array(u*3*2),m=0;for(let h=0;h<u;h++){let d=-Math.PI/2+h*Math.PI/i,p=-Math.PI/2+(h+1)*Math.PI/i,f=h%2===0?a:o,x=(h+1)%2===0?a:o;c[m++]=l,c[m++]=n,c[m++]=l+f*Math.cos(d),c[m++]=n+f*Math.sin(d),c[m++]=l+x*Math.cos(p),c[m++]=n+x*Math.sin(p)}return c}if(t==="arrow"){let i=Math.min(s.arrowHeadWidth??40,r),a=Math.min(s.arrowHeadLength??40,e),o=Math.min(s.arrowShaftWidth??20,i),l=r/2,n=0,u=e-a,c=e,m=l-o/2,h=l+o/2,d=l-i/2,p=l+i/2;return new Float32Array([n,m,u,m,u,h,n,m,u,h,n,h,u,d,c,l,u,p])}if(t==="path"&&s.path){let i=z(s.path);if(i.length===0)return new Float32Array(0);let a=i.map(n=>n.p0),o=St(a),l=new Float32Array(o.length*2);for(let n=0;n<o.length;n++)l[n*2]=o[n].x,l[n*2+1]=o[n].y;return l}return new Float32Array(0)}b();b();var wt=`
|
|
190
|
+
struct Uniforms {
|
|
191
|
+
transformCol0 : vec4<f32>,
|
|
192
|
+
transformCol1 : vec4<f32>,
|
|
193
|
+
transformCol2 : vec4<f32>,
|
|
194
|
+
params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = strokeWidth
|
|
195
|
+
color : vec4<f32>,
|
|
196
|
+
style : vec4<f32>, // x = capType (0 = round, 1 = butt, 2 = square)
|
|
197
|
+
p0 : vec2<f32>,
|
|
198
|
+
p1 : vec2<f32>,
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
202
|
+
|
|
203
|
+
struct VSOut {
|
|
204
|
+
@builtin(position) pos : vec4<f32>,
|
|
205
|
+
@location(0) localPos : vec2<f32>,
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
@vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
|
|
209
|
+
let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
|
|
210
|
+
let p = transform * vec3<f32>(xy, 1.0);
|
|
211
|
+
|
|
212
|
+
let surfaceSize = u.params.yz;
|
|
213
|
+
let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
|
|
214
|
+
let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
|
|
215
|
+
|
|
216
|
+
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capType: f32) -> f32 {
|
|
220
|
+
let ba = b - a;
|
|
221
|
+
let len = length(ba);
|
|
222
|
+
if (len < 1e-6) {
|
|
223
|
+
return length(p - a) - radius;
|
|
224
|
+
}
|
|
225
|
+
let dir = ba / len;
|
|
226
|
+
let normal = vec2<f32>(-dir.y, dir.x);
|
|
227
|
+
let pa = p - a;
|
|
228
|
+
|
|
229
|
+
let proj = dot(pa, dir);
|
|
230
|
+
let perp = abs(dot(pa, normal));
|
|
231
|
+
|
|
232
|
+
if (capType > 0.5 && capType < 1.5) {
|
|
233
|
+
// Butt cap: terminates strictly at endpoints a and b
|
|
234
|
+
let dx = max(-proj, proj - len);
|
|
235
|
+
let dy = perp - radius;
|
|
236
|
+
let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
|
|
237
|
+
let inside = min(max(dx, dy), 0.0);
|
|
238
|
+
return outside + inside;
|
|
239
|
+
} else if (capType >= 1.5) {
|
|
240
|
+
// Square cap: extends past endpoints a and b by radius
|
|
241
|
+
let dx = max(-proj - radius, proj - (len + radius));
|
|
242
|
+
let dy = perp - radius;
|
|
243
|
+
let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
|
|
244
|
+
let inside = min(max(dx, dy), 0.0);
|
|
245
|
+
return outside + inside;
|
|
246
|
+
} else {
|
|
247
|
+
// Round cap (default)
|
|
248
|
+
let h = clamp(proj / len, 0.0, 1.0);
|
|
249
|
+
return length(pa - ba * h) - radius;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
254
|
+
let radius = u.params.w * 0.5;
|
|
255
|
+
let d = sdSegmentWithCap(in.localPos, u.p0, u.p1, radius, u.style.x);
|
|
256
|
+
|
|
257
|
+
let fw = max(fwidth(d), 1e-5);
|
|
258
|
+
let edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
|
|
259
|
+
let alpha = u.color.a * u.params.x * edgeAlpha;
|
|
260
|
+
if (alpha <= 0.0) {
|
|
261
|
+
discard;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return vec4<f32>(u.color.rgb * alpha, alpha);
|
|
265
|
+
}
|
|
266
|
+
`;b();var at={color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};function T(s){return s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]})}function _(s,t){let{module:e}=t;return s.createRenderPipeline({label:t.label,layout:s.createPipelineLayout({bindGroupLayouts:[t.uniformLayout]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:t.format,blend:t.blend??at}]},primitive:{topology:t.topology}})}var q=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;scratchData=new Float32Array(28);constructor(t,e){this.device=t,this.uniformPool=new U(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"path.wgsl",code:wt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"PathPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"}),this.maxPipeline=_(t,{label:"PathPipeline.max",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(t,e,r,i,a,o,l,n){let u=z(r);if(u.length===0||((n?.trimStart!==void 0||n?.trimEnd!==void 0||n?.trimOffset!==void 0)&&(u=W(u,n.trimStart??0,n.trimEnd??1,n.trimOffset??0)),n?.strokeDashArray&&n.strokeDashArray.length>0&&(u=nt(u,n.strokeDashArray,n.strokeDashOffset??0)),u.length===0))return;let c=D(i),m=n?.opacity??1,h=0;n?.strokeLineCap==="butt"?h=1:n?.strokeLineCap==="square"&&(h=2);for(let d of u)this.drawSegment(t,e,d.p0,d.p1,c,a,h,o,l,m,n)}drawSegments(t,e,r,i,a,o,l,n){let u=r;if((n?.trimStart!==void 0||n?.trimEnd!==void 0||n?.trimOffset!==void 0)&&(u=W(u,n.trimStart??0,n.trimEnd??1,n.trimOffset??0)),n?.strokeDashArray&&n.strokeDashArray.length>0&&(u=nt(u,n.strokeDashArray,n.strokeDashOffset??0)),u.length===0)return;let c=D(i),m=n?.opacity??1,h=0;n?.strokeLineCap==="butt"?h=1:n?.strokeLineCap==="square"&&(h=2);for(let d of u)this.drawSegment(t,e,d.p0,d.p1,c,a,h,o,l,m,n)}drawSegment(t,e,r,i,a,o,l,n,u,c,m){let h=this.scratchData;e.packIntoBuffer(h,c,n,u,m?.transform),h[15]=o,h[16]=a.r,h[17]=a.g,h[18]=a.b,h[19]=a.a,h[20]=l,h[21]=0,h[22]=0,h[23]=0,h[24]=r.x,h[25]=r.y,h[26]=i.x,h[27]=i.y;let d=this.uniformPool.getBuffer(this.device,h),p=i.x-r.x,f=i.y-r.y,x=Math.sqrt(p*p+f*f);if(x<1e-6)return;let y=o*.5+2,g=p/x*y,P=f/x*y,v=-P,M=g,G=new Float32Array([r.x-g-v,r.y-P-M,r.x-g+v,r.y-P+M,i.x+g-v,i.y+P-M,i.x+g+v,i.y+P+M]),B=this.vertexPool.getBuffer(this.device,G),L=m?.blendMode==="max"?this.maxPipeline:this.pipeline;t.setPipeline(L);let w=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,d);t.setBindGroup(0,w),t.setVertexBuffer(0,B),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};b();b();var Ct=`
|
|
267
|
+
struct Uniforms {
|
|
268
|
+
transformCol0 : vec4<f32>,
|
|
269
|
+
transformCol1 : vec4<f32>,
|
|
270
|
+
transformCol2 : vec4<f32>,
|
|
271
|
+
params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = blurAmount
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
275
|
+
@group(1) @binding(0) var tex : texture_2d<f32>;
|
|
276
|
+
@group(1) @binding(1) var samp : sampler;
|
|
277
|
+
|
|
278
|
+
struct VSOut {
|
|
279
|
+
@builtin(position) pos : vec4<f32>,
|
|
280
|
+
@location(0) uv : vec2<f32>,
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
@vertex fn vs(@location(0) xy : vec2<f32>, @location(1) uv : vec2<f32>) -> VSOut {
|
|
284
|
+
let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
|
|
285
|
+
let p = transform * vec3<f32>(xy, 1.0);
|
|
286
|
+
|
|
287
|
+
let surfaceSize = u.params.yz;
|
|
288
|
+
let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
|
|
289
|
+
let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
|
|
290
|
+
|
|
291
|
+
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), uv);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
295
|
+
let opacity = u.params.x;
|
|
296
|
+
let blurAmount = u.params.w;
|
|
297
|
+
|
|
298
|
+
if (blurAmount > 0.01) {
|
|
299
|
+
let fdx = dpdx(in.uv);
|
|
300
|
+
let fdy = dpdy(in.uv);
|
|
301
|
+
let fw = max(max(abs(fdx), abs(fdy)), vec2<f32>(0.000001));
|
|
302
|
+
let step = fw * blurAmount * 0.3;
|
|
303
|
+
|
|
304
|
+
var color = vec4<f32>(0.0);
|
|
305
|
+
var totalWeight = 0.0;
|
|
306
|
+
for (var y_offset = -1.0; y_offset <= 1.0; y_offset = y_offset + 1.0) {
|
|
307
|
+
for (var x_offset = -1.0; x_offset <= 1.0; x_offset = x_offset + 1.0) {
|
|
308
|
+
let offset = vec2<f32>(x_offset, y_offset) * step;
|
|
309
|
+
let sampleColor = textureSample(tex, samp, in.uv + offset);
|
|
310
|
+
color = color + sampleColor;
|
|
311
|
+
totalWeight = totalWeight + 1.0;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return (color / totalWeight) * opacity;
|
|
315
|
+
} else {
|
|
316
|
+
let color = textureSample(tex, samp, in.uv);
|
|
317
|
+
return color * opacity;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
`;var N=class{buffers=[];index=0;size;usage;constructor(t,e){this.size=t,this.usage=e}getBuffer(t,e){if(this.index>=this.buffers.length){let i=t.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return t.queue.writeBuffer(r,0,e),r}reset(){this.index=0}destroy(){for(let t of this.buffers)t.destroy();this.buffers=[]}},j=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(t,e){this.device=t,this.uniformPool=new N(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new N(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"quad.wgsl",code:Ct});this.uniformLayout=T(t),this.textureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=t.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=t.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:e,blend:at}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l,n,u,c){let m=c?.opacity??1;r.packIntoBuffer(this.uniformData,m,n,u,c?.transform);let h=this.uniformPool.getBuffer(this.device,this.uniformData),d=o.x/i.width,p=o.y/i.height,f=(o.x+o.width)/i.width,x=(o.y+o.height)/i.height;this.vertexData[0]=l.x,this.vertexData[1]=l.y,this.vertexData[2]=d,this.vertexData[3]=p,this.vertexData[4]=l.x+l.width,this.vertexData[5]=l.y,this.vertexData[6]=f,this.vertexData[7]=p,this.vertexData[8]=l.x,this.vertexData[9]=l.y+l.height,this.vertexData[10]=d,this.vertexData[11]=x,this.vertexData[12]=l.x+l.width,this.vertexData[13]=l.y+l.height,this.vertexData[14]=f,this.vertexData[15]=x;let y=this.vertexPool.getBuffer(this.device,this.vertexData),g=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h),P=e.getBindGroup(this.device,this.textureLayout,i,a);t.setPipeline(this.pipeline),t.setBindGroup(0,g),t.setBindGroup(1,P),t.setVertexBuffer(0,y),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};b();var H=class{samplers=new Map;lru=[];maxCapacity;constructor(t=32){this.maxCapacity=t}getSampler(t,e={}){let r=Math.max(1,Math.min(16,e.maxAnisotropy??4)),i=`${e.magFilter??"linear"}:${e.minFilter??"linear"}:${e.mipmapFilter??"linear"}:${e.addressModeU??"clamp-to-edge"}:${e.addressModeV??"clamp-to-edge"}:${r}`,a=this.samplers.get(i);if(a)this.lru=this.lru.filter(o=>o!==i);else{if(a=t.createSampler({magFilter:e.magFilter??"linear",minFilter:e.minFilter??"linear",mipmapFilter:e.mipmapFilter??"linear",addressModeU:e.addressModeU??"clamp-to-edge",addressModeV:e.addressModeV??"clamp-to-edge",maxAnisotropy:r}),this.samplers.size>=this.maxCapacity){let o=this.lru.pop();o&&this.samplers.delete(o)}this.samplers.set(i,a)}return this.lru.unshift(i),a}destroy(){this.samplers.clear(),this.lru=[]}};b();b();var Y=`
|
|
321
|
+
struct GradientUniforms {
|
|
322
|
+
info : vec4<f32>, // x = type (0 none, 1 linear, 2 radial, 3 conic), y = stop count
|
|
323
|
+
geom : vec4<f32>, // linear: cx, cy, dir.x / len, dir.y / len; radial: cx, cy, rx, ry; conic: cx, cy, from (rad)
|
|
324
|
+
offsets : array<vec4<f32>, 2>,
|
|
325
|
+
stops : array<vec4<f32>, 8>, // OKLab + alpha
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
fn gradientOklabToSrgb(lab: vec3<f32>) -> vec3<f32> {
|
|
329
|
+
let l = pow(lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z, 3.0);
|
|
330
|
+
let m = pow(lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z, 3.0);
|
|
331
|
+
let s = pow(lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z, 3.0);
|
|
332
|
+
let lin = clamp(vec3<f32>(
|
|
333
|
+
4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
|
|
334
|
+
-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
|
|
335
|
+
-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,
|
|
336
|
+
), vec3<f32>(0.0), vec3<f32>(1.0));
|
|
337
|
+
let lo = lin * 12.92;
|
|
338
|
+
let hi = 1.055 * pow(lin, vec3<f32>(1.0 / 2.4)) - 0.055;
|
|
339
|
+
return select(hi, lo, lin <= vec3<f32>(0.0031308));
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/// Position along the gradient (0..1, unclamped for linear/radial) at local point p.
|
|
343
|
+
fn gradientT(g: GradientUniforms, p: vec2<f32>) -> f32 {
|
|
344
|
+
let d = p - g.geom.xy;
|
|
345
|
+
let kind = g.info.x;
|
|
346
|
+
if (kind < 1.5) {
|
|
347
|
+
return dot(d, g.geom.zw) + 0.5;
|
|
348
|
+
}
|
|
349
|
+
if (kind < 2.5) {
|
|
350
|
+
return length(d / max(g.geom.zw, vec2<f32>(1e-4)));
|
|
351
|
+
}
|
|
352
|
+
let a = atan2(d.x, -d.y) - g.geom.z;
|
|
353
|
+
return fract(a / 6.28318530718);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/// Straight sRGB color + alpha of the gradient at local point p.
|
|
357
|
+
fn evalGradient(g: GradientUniforms, p: vec2<f32>) -> vec4<f32> {
|
|
358
|
+
var offs = g.offsets;
|
|
359
|
+
var stops = g.stops;
|
|
360
|
+
let n = i32(g.info.y);
|
|
361
|
+
let t = gradientT(g, p);
|
|
362
|
+
var lab = stops[0];
|
|
363
|
+
if (t > offs[0].x) {
|
|
364
|
+
lab = stops[n - 1];
|
|
365
|
+
for (var i = 1; i < 8; i++) {
|
|
366
|
+
if (i >= n) {
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
let b = offs[i / 4][i % 4];
|
|
370
|
+
if (t <= b) {
|
|
371
|
+
let a = offs[(i - 1) / 4][(i - 1) % 4];
|
|
372
|
+
let f = select(1.0, (t - a) / (b - a), b - a > 1e-5);
|
|
373
|
+
lab = mix(stops[i - 1], stops[i], clamp(f, 0.0, 1.0));
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return vec4<f32>(gradientOklabToSrgb(lab.xyz), lab.w);
|
|
379
|
+
}
|
|
380
|
+
`;b();var Bt=`
|
|
381
|
+
${Y}
|
|
382
|
+
|
|
383
|
+
struct Uniforms {
|
|
384
|
+
transformCol0 : vec4<f32>,
|
|
385
|
+
transformCol1 : vec4<f32>,
|
|
386
|
+
transformCol2 : vec4<f32>,
|
|
387
|
+
params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = unused
|
|
388
|
+
color : vec4<f32>, // solid color (gradient.info.x = 0)
|
|
389
|
+
gradient : GradientUniforms,
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
393
|
+
|
|
394
|
+
struct VSOut {
|
|
395
|
+
@builtin(position) pos : vec4<f32>,
|
|
396
|
+
@location(0) localPos : vec2<f32>,
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
@vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
|
|
400
|
+
let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
|
|
401
|
+
let p = transform * vec3<f32>(xy, 1.0);
|
|
402
|
+
|
|
403
|
+
let surfaceSize = u.params.yz;
|
|
404
|
+
let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
|
|
405
|
+
let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
|
|
406
|
+
|
|
407
|
+
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
411
|
+
var outColor = u.color;
|
|
412
|
+
if (u.gradient.info.x > 0.5) {
|
|
413
|
+
outColor = evalGradient(u.gradient, in.localPos);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
let alpha = outColor.a * u.params.x;
|
|
417
|
+
if (alpha <= 0.0) {
|
|
418
|
+
discard;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return vec4<f32>(outColor.rgb * alpha, alpha);
|
|
422
|
+
}
|
|
423
|
+
`;b();var It={linear:1,radial:2,conic:3};function X(s){return typeof s=="string"&&s.includes("gradient(")?mt(s):null}function Q(s,t,e,r){if(e.fill(0,r,r+48),!s)return;let i=pt(s.stops),a=Math.max(t.width,.001),o=Math.max(t.height,.001),l=t.x+s.center[0]*a,n=t.y+s.center[1]*o;if(e[r]=It[s.type],e[r+1]=i.length,e[r+4]=s.type==="linear"?t.x+a/2:l,e[r+5]=s.type==="linear"?t.y+o/2:n,s.type==="linear"){let u=s.angle*Math.PI/180,c=Math.sin(u),m=-Math.cos(u),h=Math.abs(a*c)+Math.abs(o*m);e[r+6]=c/h,e[r+7]=m/h}else if(s.type==="radial"){let u,c;s.radius?[u,c]=s.radius:[u,c]=Vt(s,l-t.x,t.x+a-l,n-t.y,t.y+o-n),e[r+6]=u,e[r+7]=c}else e[r+6]=s.from*Math.PI/180;i.forEach((u,c)=>{e[r+8+c]=u.offset}),A(i).forEach((u,c)=>{e.set(u,r+16+c*4)})}function Vt(s,t,e,r,i){let a=s.extent??"farthest-corner",o=a.startsWith("farthest"),l=o?Math.max(t,e):Math.min(t,e),n=o?Math.max(r,i):Math.min(r,i),u=s.shape==="circle";if(a.endsWith("side")){if(!u)return[l,n];let c=o?Math.max(l,n):Math.min(l,n);return[c,c]}if(u){let c=Math.hypot(l,n);return[c,c]}return[l*Math.SQRT2,n*Math.SQRT2]}var K=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(68);constructor(t,e){this.device=t,this.uniformPool=new U(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"shape-fill.wgsl",code:Bt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"ShapeFillPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-list"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l,n){if(r.length<6||i.type==="none")return;let u=n?.opacity??1;e.packIntoBuffer(this.uniformData,u,o,l,n?.transform),this.uniformData[15]=0;let c=X(i.color);if(c)this.uniformData.fill(0,16,20),Q(c,a,this.uniformData,20);else{let d=D(i.color??"#ffffff");this.uniformData[16]=d.r,this.uniformData[17]=d.g,this.uniformData[18]=d.b,this.uniformData[19]=d.a,this.packTwoColorGradient(i,a,d)}let m=this.uniformPool.getBuffer(this.device,this.uniformData),h=this.vertexPool.getBuffer(this.device,r);t.setPipeline(this.pipeline),t.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:m}}]})),t.setVertexBuffer(0,h),t.draw(r.length/2)}packTwoColorGradient(t,e,r){if(this.uniformData.fill(0,20,68),t.type!=="linear"&&t.type!=="radial")return;let a=D(t.color2??t.color??"#ffffff"),o=this.uniformData;if(t.type==="linear"){let n=t.startX??e.x,u=t.startY??e.y,c=t.endX??e.x+e.width,m=t.endY??e.y+e.height,h=c-n,d=m-u,p=Math.max(h*h+d*d,1e-6);o.set([1,2,0,0,(n+c)/2,(u+m)/2,h/p,d/p],20)}else{let n=t.radius??Math.max(e.width,e.height)/2;o.set([2,2,0,0,t.cx??e.x+e.width/2,t.cy??e.y+e.height/2,n,n],20)}o[28]=0,o[29]=1;let l=A([{offset:0,color:[r.r,r.g,r.b,r.a]},{offset:1,color:[a.r,a.g,a.b,a.a]}]);o.set(l[0],36),o.set(l[1],40)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};b();b();var Dt=`
|
|
424
|
+
${Y}
|
|
425
|
+
|
|
426
|
+
struct Uniforms {
|
|
427
|
+
transformCol0 : vec4<f32>,
|
|
428
|
+
transformCol1 : vec4<f32>,
|
|
429
|
+
transformCol2 : vec4<f32>,
|
|
430
|
+
params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = cornerRadius
|
|
431
|
+
color : vec4<f32>,
|
|
432
|
+
rect : vec4<f32>, // x, y, width, height
|
|
433
|
+
gradient : GradientUniforms, // info.x = 0: solid \`color\`
|
|
434
|
+
};
|
|
435
|
+
|
|
436
|
+
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
437
|
+
|
|
438
|
+
struct VSOut {
|
|
439
|
+
@builtin(position) pos : vec4<f32>,
|
|
440
|
+
@location(0) localPos : vec2<f32>,
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
@vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
|
|
444
|
+
let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
|
|
445
|
+
let p = transform * vec3<f32>(xy, 1.0);
|
|
446
|
+
|
|
447
|
+
let surfaceSize = u.params.yz;
|
|
448
|
+
let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
|
|
449
|
+
let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
|
|
450
|
+
|
|
451
|
+
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
|
|
455
|
+
let q = abs(p) - b + r;
|
|
456
|
+
return min(max(q.x, q.y), 0.0) + length(max(q, vec2<f32>(0.0))) - r;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
460
|
+
let center = u.rect.xy + u.rect.zw * 0.5;
|
|
461
|
+
let halfSize = u.rect.zw * 0.5;
|
|
462
|
+
let radius = u.params.w;
|
|
463
|
+
|
|
464
|
+
let d = sdRoundedRect(in.localPos - center, halfSize, radius);
|
|
465
|
+
// Rounded shapes: one device pixel of coverage centred on the edge (the
|
|
466
|
+
// quad has room for its outer half). Square ones keep their exact edge.
|
|
467
|
+
let fw = max(fwidth(d), 1e-4);
|
|
468
|
+
var edgeAlpha = 1.0 - smoothstep(0.0, 1.0, d);
|
|
469
|
+
if (radius > 0.0) {
|
|
470
|
+
edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
|
|
471
|
+
}
|
|
472
|
+
var fill = u.color;
|
|
473
|
+
if (u.gradient.info.x > 0.5) {
|
|
474
|
+
fill = evalGradient(u.gradient, in.localPos);
|
|
475
|
+
}
|
|
476
|
+
let alpha = fill.a * u.params.x * edgeAlpha;
|
|
477
|
+
if (alpha <= 0.0) {
|
|
478
|
+
discard;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
return vec4<f32>(fill.rgb * alpha, alpha);
|
|
482
|
+
}
|
|
483
|
+
`;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:Dt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l=0,n){let u=X(i),c=u?{r:0,g:0,b:0,a:1}:D(i),m=n?.opacity??1;e.packIntoBuffer(this.uniformData,m,a,o,n?.transform),this.uniformData[15]=l,this.uniformData[16]=c.r,this.uniformData[17]=c.g,this.uniformData[18]=c.b,this.uniformData[19]=c.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,Q(u,r,this.uniformData,24);let h=this.uniformPool.getBuffer(this.device,this.uniformData),d=0;if(l>0){let v=n?.transform?e.getCurrent().multiply(n.transform):e.getCurrent(),M=Math.min(Math.hypot(v.a,v.b),Math.hypot(v.c,v.d));d=2/Math.max(M,.001)}let p=r.x-d,f=r.y-d,x=r.x+r.width+d,y=r.y+r.height+d;this.vertexData[0]=p,this.vertexData[1]=f,this.vertexData[2]=x,this.vertexData[3]=f,this.vertexData[4]=p,this.vertexData[5]=y,this.vertexData[6]=x,this.vertexData[7]=y;let g=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let P=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h);t.setBindGroup(0,P),t.setVertexBuffer(0,g),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};function zt(s){if(Array.isArray(s)){let r=s[3]??1;return[s[0]*r,s[1]*r,s[2]*r,r]}if("r"in s){let r=s.a??1;return{r:s.r*r,g:s.g*r,b:s.b*r,a:r}}let t=Array.from(s),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var Tt=new WeakMap;function Dr(s,t){let e=Tt.get(s);return(!e||e.format!==t||e.isDestroyed)&&(e=new lt(s,t),Tt.set(s,e)),e.resetPools(),e}var lt=class{device;transformStack=new yt;clipStack=new V;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new I;samplerCache=new H;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new j(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new q(t,e),this.effectPipeline=new E(t,e),this.slugPipeline=new gt(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,a,o="clear"){this.surfaceWidth=i,this.surfaceHeight=a,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let l=t.beginRenderPass({colorAttachments:[{view:e,clearValue:zt(r),loadOp:o,storeOp:"store"}]});return this.clipStack.applyScissorToPass(l,i,a),l}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),et.flushRetired(this.device),et.prune(this.device)}drawTexture(t,e,r,i){let a=this.samplerCache.getSampler(this.device),o={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,a,o,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,a){let o=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,o,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawRect(t,e,r,i=0,a){let o=0,l=a;typeof i=="object"&&i!==null?(l=i,o=0):typeof i=="number"&&(o=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,o,l)}drawPath(t,e,r,i,a){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawShapeFill(t,e,r,i,a){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawShape(t,e,r,i,a){let o={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let l=Ut(e);if(l.length>0&&(this.drawShapeFill(t,l,r,o,a),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let n=ot(e);if(n){let u=this.transformStack.getCurrent(),c=1/rt(a?.transform?u.multiply(a.transform):u);this.drawPath(t,n,r.color,c,{...a,strokeLineCap:"round"})}}}if(i&&i.width&&i.width>0&&i.color){let l=ot(e);l&&this.drawPath(t,l,i.color,i.width,{...a,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,a){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,a)}applyMotionBlur(t,e,r,i,a=180,o=16,l){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,a,o,this.format,l)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorIntersect(t){let e=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(!e){this.pushScissor(t);return}let r=Math.max(t.x,e.x),i=Math.max(t.y,e.y),a=Math.min(t.x+t.width,e.x+e.width),o=Math.min(t.y+t.height,e.y+e.height);this.pushScissor({x:r,y:i,width:Math.max(0,a-r),height:Math.max(0,o-i)})}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(m=>m.x),a=r.map(m=>m.y),o=Math.min(...i),l=Math.min(...a),n=Math.max(...i)-o,u=Math.max(...a)-l,c=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(c){let m=Math.max(o,c.x),h=Math.max(l,c.y),d=Math.min(o+n,c.x+c.width),p=Math.min(l+u,c.y+c.height);o=m,l=h,n=Math.max(0,d-m),u=Math.max(0,p-h)}this.clipStack.pushScissor({x:o,y:l,width:n,height:u},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};b();function Wt(s){return xt(s)??dt(s)??tt(s)}function $r(s){let t=Wt(s);return typeof t=="string"?t:tt(s)}export{Nt as a,jt as b,Ht as c,Yt as d,Xt as e,Qt as f,Kt as g,Zt as h,ee as i,re as j,ie as k,ne as l,kt as m,se as n,E as o,Lt as p,z as q,ot as r,at as s,H as t,Dr as u,lt as v,Wt as w,$r as x};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as g}from"./chunk-UZTA2EUU.mjs";import{b as c,e as s}from"./chunk-GXFYRMJZ.mjs";import{g as f}from"./chunk-
|
|
1
|
+
import{a as g}from"./chunk-UZTA2EUU.mjs";import{b as c,e as s}from"./chunk-GXFYRMJZ.mjs";import{g as f}from"./chunk-77MT33VR.mjs";import{c as t,d as a}from"./chunk-ULOFDFHJ.mjs";import{g as d}from"./chunk-Y4NIR77Z.mjs";d();d();var l=async(n,m,p,e)=>{if(!e?.device||!n||n.length===0||n[0].length===0)return;let r=p.operation||{},i=r.nodeId||r.id||"audio-signal-extractor",v=e.fps??24,y=a(r.extractionMode,""),b=a(r.curve,""),I={extractionMode:y||void 0,attackMs:t(r.attackMs,10),releaseMs:t(r.releaseMs,120),sensitivity:t(r.sensitivity,1),noiseFloorDb:t(r.noiseFloorDb,-45),dynamicRangeDb:t(r.dynamicRangeDb,36),smoothing:t(r.smoothing,.15),curve:b||void 0,beatThreshold:t(r.beatThreshold,.55),beatDecayMs:t(r.beatDecayMs,80)},o=await c.extractFeatures(e.device,n,m,v,I,512);s.registerBuffer(e.device,i,o.primaryBuffer,e.renderId),s.registerBuffer(e.device,`${i}_beat`,o.beatBuffer,e.renderId),s.registerBuffer(e.device,`${i}_bass`,o.bassBuffer,e.renderId),s.registerBuffer(e.device,`${i}_energy`,o.energyBuffer,e.renderId),s.registerTexture(e.device,i,o.texture,o.textureView,e.renderId),s.registerTexture(e.device,`${i}_beat`,o.texture,o.textureView,e.renderId),s.registerTexture(e.device,`${i}_bass`,o.texture,o.textureView,e.renderId),s.registerTexture(e.device,`${i}_energy`,o.texture,o.textureView,e.renderId);let u=`signal_${i.replace(/[^a-zA-Z0-9]/g,"_")}`,A=`
|
|
2
2
|
fn ${u}(t: f32, x: f32, y: f32, z: f32, i: u32, n: u32, frame: u32, color: vec4f, t_elapsed: f32, duration: f32) -> f32 {
|
|
3
3
|
return 0.0f;
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as h}from"./chunk-SE2C623Z.mjs";import{f as g,g as I}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-SE2C623Z.mjs";import{f as g,g as I}from"./chunk-77MT33VR.mjs";import{c as m,d as c}from"./chunk-ULOFDFHJ.mjs";import{g as i}from"./chunk-Y4NIR77Z.mjs";i();i();var w=["fadeInDuration","fadeOutDuration"],E=()=>`
|
|
2
2
|
struct Uniforms {
|
|
3
3
|
sampleRate : f32,
|
|
4
4
|
fadeInDuration : f32,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as F,d as L,e as N,f as W,g as C,h as V,
|
|
1
|
+
import{a as F,d as L,e as N,f as W,g as C,h as V,k as B,l as H,m as $,n as E}from"./chunk-3QTHW2CD.mjs";import{c as U,g as D}from"./chunk-77MT33VR.mjs";import{g as p}from"./chunk-Y4NIR77Z.mjs";p();p();var fe=`
|
|
2
2
|
struct TileOffsetUniforms {
|
|
3
3
|
offsetX : f32,
|
|
4
4
|
offsetY : f32,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as w,h as G,i as P}from"./chunk-
|
|
1
|
+
import{d as w,h as G,i as P}from"./chunk-3QTHW2CD.mjs";import{g as b}from"./chunk-77MT33VR.mjs";import{g as u}from"./chunk-Y4NIR77Z.mjs";u();u();u();function W(e,r){let n=[];for(let i=0;i<r;i++){let c=i/(r-1)*100;for(let l=0;l<e;l++){let o=l/(e-1)*100;n.push({x:o,y:c})}}return n}var F=`
|
|
2
2
|
struct MeshUniforms {
|
|
3
3
|
gridSize : vec2<f32>,
|
|
4
4
|
layerSize : vec2<f32>,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as X,d as f,e as _,f as P,g as Y,h as D,
|
|
1
|
+
import{a as X,d as f,e as _,f as P,g as Y,h as D,k as U,l as V,n as B}from"./chunk-3QTHW2CD.mjs";import{e as d}from"./chunk-GXFYRMJZ.mjs";import{g as R}from"./chunk-77MT33VR.mjs";import{g}from"./chunk-Y4NIR77Z.mjs";g();g();var j=0,Q=500;function q(t,e,r){return Math.min(r,Math.max(e,t))}var z=`
|
|
2
2
|
struct DisplacementUniforms {
|
|
3
3
|
strengthX : f32,
|
|
4
4
|
strengthY : f32,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as N,d as K,e as $,f as z,g as E,h as j,
|
|
1
|
+
import{a as N,d as K,e as $,f as z,g as E,h as j,k as Q,l as J,m as X,n as Z}from"./chunk-3QTHW2CD.mjs";import{c as F,g as W}from"./chunk-77MT33VR.mjs";import{a as w}from"./chunk-354GX6IB.mjs";import{g as S}from"./chunk-Y4NIR77Z.mjs";S();S();var Me=`
|
|
2
2
|
struct HalftoneUniforms {
|
|
3
3
|
mode : f32, // 0 = Monochrome, 1 = CMYK
|
|
4
4
|
dotShape : f32, // 0 = Circle, 1 = Diamond, 2 = Line, 3 = Square
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as B,d as y,g as V,h as N,
|
|
1
|
+
import{a as B,d as y,g as V,h as N,k as O,l as W,n as _}from"./chunk-3QTHW2CD.mjs";import{e as b}from"./chunk-GXFYRMJZ.mjs";import{a as C}from"./chunk-354GX6IB.mjs";import{g}from"./chunk-Y4NIR77Z.mjs";g();g();var A=new WeakMap,K=`
|
|
2
2
|
struct GradientStop {
|
|
3
3
|
pos : vec4<f32>,
|
|
4
4
|
col : vec4<f32>,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as z,d as x,e as Y,g as X,h as G,
|
|
1
|
+
import{a as z,d as x,e as Y,g as X,h as G,k as F,l as O,n as k}from"./chunk-3QTHW2CD.mjs";import{e as U}from"./chunk-GXFYRMJZ.mjs";import{e as s,g as N}from"./chunk-77MT33VR.mjs";import{a as W}from"./chunk-354GX6IB.mjs";import{g as S}from"./chunk-Y4NIR77Z.mjs";S();S();var ve=`
|
|
2
2
|
struct RefractionCausticsUniforms {
|
|
3
3
|
// vec4 0
|
|
4
4
|
_pad0 : f32,
|