framefields 2.10.0-canary.0 → 2.11.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 +0 -4
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-YpBRdI7r.mjs → audio-BuCVk1IQ.mjs} +31 -5
- package/dist/audio-BuCVk1IQ.mjs.map +1 -0
- package/dist/audio-CYZkDwae.d.mts +62 -0
- package/dist/audio-CYZkDwae.d.mts.map +1 -0
- package/dist/cli/check-worker.mjs +45 -45
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-BwtxciN4.mjs → dist-CNGv-JTX.mjs} +1 -1
- package/dist/{dist-C4Vxgm0Q.mjs → dist-CWLLnigL.mjs} +447 -284
- package/dist/dist-CWLLnigL.mjs.map +1 -0
- package/dist/dist-CySGkG54.mjs.map +1 -1
- package/dist/{dist-2_lT3Dwc.mjs → dist-Dg9LMWoX.mjs} +2 -2
- package/dist/{dist-2_lT3Dwc.mjs.map → dist-Dg9LMWoX.mjs.map} +1 -1
- package/dist/{dist-Cu1fZ9Uy.mjs → dist-EQX3TUUl.mjs} +3 -3
- package/dist/{dist-Cu1fZ9Uy.mjs.map → dist-EQX3TUUl.mjs.map} +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-DiWYouOK.mjs → effects-DKLbLXF7.mjs} +2 -2
- package/dist/{effects-DiWYouOK.mjs.map → effects-DKLbLXF7.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-BnV-GB1o.mjs → fonts-gPbGbShD.mjs} +2 -2
- package/dist/{fonts-BnV-GB1o.mjs.map → fonts-gPbGbShD.mjs.map} +1 -1
- package/dist/{gpu-Bw35AMwY.mjs → gpu-CpkJJLQP.mjs} +3 -11
- package/dist/gpu-CpkJJLQP.mjs.map +1 -0
- package/dist/{index-h7m8QgcL.d.mts → index-Bly-7YM1.d.mts} +2 -2
- package/dist/{index-h7m8QgcL.d.mts.map → index-Bly-7YM1.d.mts.map} +1 -1
- package/dist/{index-B7WqFBZA.d.mts → index-BuiZzc6i.d.mts} +22 -33
- package/dist/index-BuiZzc6i.d.mts.map +1 -0
- package/dist/{index-DQa7mhzq.d.mts → index-C8YwZ6k1.d.mts} +2 -2
- package/dist/{index-DQa7mhzq.d.mts.map → index-C8YwZ6k1.d.mts.map} +1 -1
- package/dist/{index-WwuuX8ZJ.d.mts → index-CEU_Zsb9.d.mts} +22 -24
- package/dist/index-CEU_Zsb9.d.mts.map +1 -0
- package/dist/index-COYNQ_mf.d.mts.map +1 -1
- package/dist/{index-Dyt4yS-x.d.mts → index-Cro-818i.d.mts} +10 -84
- package/dist/index-Cro-818i.d.mts.map +1 -0
- package/dist/{index-CDQrdZ0J.d.mts → index-D2i9J9Zq.d.mts} +2 -2
- package/dist/{index-CDQrdZ0J.d.mts.map → index-D2i9J9Zq.d.mts.map} +1 -1
- package/dist/{index-Bbv0VtxJ.d.mts → index-jSDEM-uE.d.mts} +5 -5
- package/dist/{index-Bbv0VtxJ.d.mts.map → index-jSDEM-uE.d.mts.map} +1 -1
- package/dist/index.d.mts +11 -11
- package/dist/index.mjs +52 -52
- package/dist/preview/index.d.mts +1 -1
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-BW7ilNWk.mjs → preview-BToKUTtZ.mjs} +2 -2
- package/dist/{preview-BW7ilNWk.mjs.map → preview-BToKUTtZ.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-LBP7E7SJ.mjs → chunk-26XWIHW3.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZA5LWHRM.mjs → chunk-4AGQN53P.mjs} +1 -1
- package/dist/preview-engine/chunk-4FY4TNST.mjs +1 -0
- package/dist/preview-engine/{chunk-6O55UROD.mjs → chunk-54Q5CKSV.mjs} +2 -2
- package/dist/preview-engine/{chunk-6BE3IL7L.mjs → chunk-5KSBS3AL.mjs} +1 -1
- package/dist/preview-engine/{chunk-RAW2I27S.mjs → chunk-65NANVQL.mjs} +1 -1
- package/dist/preview-engine/{chunk-HKYENGC5.mjs → chunk-6LTINEA4.mjs} +1 -1
- package/dist/preview-engine/{chunk-6SLCECHG.mjs → chunk-7GMHSTRP.mjs} +1 -1
- package/dist/preview-engine/chunk-7LDSMOO3.mjs +1 -0
- package/dist/preview-engine/{chunk-4DSOZ5QG.mjs → chunk-ACBBBOUM.mjs} +1 -1
- package/dist/preview-engine/chunk-AGAZJZWI.mjs +1 -0
- package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-BJXNKMSY.mjs} +6 -20
- package/dist/preview-engine/{chunk-HO7FXISJ.mjs → chunk-BRV7TQDV.mjs} +1 -1
- package/dist/preview-engine/chunk-BXPM5SJ3.mjs +1 -0
- package/dist/preview-engine/{chunk-5SLBE2FX.mjs → chunk-C4M3B2Q2.mjs} +1 -1
- package/dist/preview-engine/{chunk-Y2SWIWIU.mjs → chunk-CCORQLMR.mjs} +1 -1
- package/dist/preview-engine/{chunk-4BWBX2HM.mjs → chunk-CIVEZJYF.mjs} +1 -1
- package/dist/preview-engine/chunk-CIVJXFWH.mjs +4 -0
- package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
- package/dist/preview-engine/chunk-D73ZKPFN.mjs +138 -0
- package/dist/preview-engine/{chunk-6LBFSGCI.mjs → chunk-DNNGWS2C.mjs} +1 -1
- package/dist/preview-engine/{chunk-IVAA5X5H.mjs → chunk-EAWJXW4J.mjs} +1 -1
- package/dist/preview-engine/{chunk-HGWT3RVQ.mjs → chunk-EPRINA4V.mjs} +10 -10
- package/dist/preview-engine/{chunk-ML7WO27M.mjs → chunk-EXEO245X.mjs} +1 -1
- package/dist/preview-engine/{chunk-VRJBOFFY.mjs → chunk-FQL4IJZN.mjs} +1 -1
- package/dist/preview-engine/{chunk-7A3BNAWY.mjs → chunk-GHTG5XV6.mjs} +25 -84
- package/dist/preview-engine/{chunk-NCQHOGZK.mjs → chunk-GN3NDRLI.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
- package/dist/preview-engine/{chunk-OOUDE4XL.mjs → chunk-IBPYV6HF.mjs} +1 -1
- package/dist/preview-engine/{chunk-5Y7SO37Q.mjs → chunk-IKVJ4MW5.mjs} +1 -1
- package/dist/preview-engine/{chunk-L2NTIWW5.mjs → chunk-JDB7PMRI.mjs} +1 -1
- package/dist/preview-engine/{chunk-D7OMXGIZ.mjs → chunk-JSYG6OWZ.mjs} +1 -1
- package/dist/preview-engine/chunk-KOVN277Z.mjs +1 -0
- package/dist/preview-engine/{chunk-57WXGYEV.mjs → chunk-KVOFO273.mjs} +1 -1
- package/dist/preview-engine/{chunk-EKEKYGXE.mjs → chunk-LFNCWMKS.mjs} +1 -1
- package/dist/preview-engine/{chunk-4RLKHFV6.mjs → chunk-LMXMBX4J.mjs} +1 -1
- package/dist/preview-engine/chunk-M4QANUJI.mjs +480 -0
- package/dist/preview-engine/{chunk-4FACCLLE.mjs → chunk-NOKPBMIP.mjs} +1 -1
- package/dist/preview-engine/{chunk-FW2UDDUT.mjs → chunk-O63FLYWC.mjs} +1 -1
- package/dist/preview-engine/chunk-OELPPLML.mjs +107 -0
- package/dist/preview-engine/{chunk-JSKEVYKD.mjs → chunk-OLB4TQLQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-7HW7GA76.mjs → chunk-PKNUTHPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-OD4CSXZL.mjs → chunk-QF4JWVO3.mjs} +15 -15
- package/dist/preview-engine/{chunk-K3TJJXVC.mjs → chunk-RDWLLITE.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
- package/dist/preview-engine/{chunk-LTR5FXGU.mjs → chunk-TEWRQKX3.mjs} +1 -1
- package/dist/preview-engine/{chunk-YS3ROS25.mjs → chunk-UGB6JKVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-RMHL4XZ3.mjs → chunk-UI3VH33L.mjs} +1 -1
- package/dist/preview-engine/{chunk-JFBSNFN6.mjs → chunk-UMJ3VGKN.mjs} +1 -1
- package/dist/preview-engine/{chunk-YXCTOCQ2.mjs → chunk-VFQH5KVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-HPQDCC4S.mjs → chunk-VQA4DYZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-C2GX5L5S.mjs → chunk-VZLIRYAL.mjs} +1 -1
- package/dist/preview-engine/{chunk-CHXR5XZK.mjs → chunk-WFMUDL55.mjs} +1 -1
- package/dist/preview-engine/chunk-XF6DYP6B.mjs +1974 -0
- package/dist/preview-engine/chunk-XYGDTPO7.mjs +39 -0
- package/dist/preview-engine/chunk-YGKO4NIU.mjs +1 -0
- package/dist/preview-engine/{chunk-XCQ7KN4S.mjs → chunk-YHMBGJP6.mjs} +1 -1
- package/dist/preview-engine/{chunk-4N25ZU43.mjs → chunk-YKM7JDQY.mjs} +1 -1
- package/dist/preview-engine/{chunk-WVIDORLK.mjs → chunk-YVZTRH4Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-FH72KTSM.mjs → chunk-Z24UEN4P.mjs} +1 -1
- package/dist/preview-engine/{chunk-V5HU6NIW.mjs → chunk-ZF2MEFKO.mjs} +1 -1
- package/dist/preview-engine/{chunk-NTTEGJD6.mjs → chunk-ZIXPWP2B.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-2NGIILMI.mjs +1 -0
- package/dist/preview-engine/{renderers-4MW4NW6O.mjs → renderers-33FCFHDR.mjs} +1 -1
- package/dist/preview-engine/renderers-466Z77BH.mjs +1 -0
- package/dist/preview-engine/{renderers-Q5YCUPYE.mjs → renderers-4IBFDW2S.mjs} +1 -1
- package/dist/preview-engine/renderers-4KRENGZA.mjs +1 -0
- package/dist/preview-engine/renderers-4W52BQEU.mjs +1 -0
- package/dist/preview-engine/{renderers-36P2TKPC.mjs → renderers-53EI26GL.mjs} +1 -1
- package/dist/preview-engine/renderers-55PRAS7G.mjs +1 -0
- package/dist/preview-engine/renderers-5LLYINHW.mjs +1 -0
- package/dist/preview-engine/{renderers-U4S577ON.mjs → renderers-5XLGCEOA.mjs} +1 -1
- package/dist/preview-engine/renderers-63N3Y2XO.mjs +1 -0
- package/dist/preview-engine/{renderers-PGZDFDSC.mjs → renderers-6LNDAO4B.mjs} +1 -1
- package/dist/preview-engine/renderers-6ROVFDIN.mjs +1 -0
- package/dist/preview-engine/{renderers-JZYHX4XI.mjs → renderers-6YVZUQOH.mjs} +1 -1
- package/dist/preview-engine/{renderers-HXNSDJBY.mjs → renderers-77PDUMYI.mjs} +1 -1
- package/dist/preview-engine/renderers-7CAHX35U.mjs +1 -0
- package/dist/preview-engine/renderers-A4RVLPMG.mjs +1 -0
- package/dist/preview-engine/renderers-A53P4J6O.mjs +1 -0
- package/dist/preview-engine/{renderers-LF6U4MR5.mjs → renderers-ACUJMDEK.mjs} +1 -1
- package/dist/preview-engine/renderers-AFJ3373L.mjs +1 -0
- package/dist/preview-engine/renderers-ATFWTA3U.mjs +1 -0
- package/dist/preview-engine/{renderers-37Y5LR2S.mjs → renderers-BOBVXYAA.mjs} +1 -1
- package/dist/preview-engine/renderers-BPYJXHBU.mjs +1 -0
- package/dist/preview-engine/{renderers-G2FL3IFD.mjs → renderers-C7SI3NIE.mjs} +1 -1
- package/dist/preview-engine/{renderers-CMBI4JOC.mjs → renderers-CCRZNGVK.mjs} +1 -1
- package/dist/preview-engine/{renderers-6RRWA33X.mjs → renderers-CYJAVWHT.mjs} +1 -1
- package/dist/preview-engine/renderers-D3ZF7FXT.mjs +1 -0
- package/dist/preview-engine/renderers-D7YN6B4B.mjs +1 -0
- package/dist/preview-engine/renderers-DBLASKF5.mjs +1 -0
- package/dist/preview-engine/renderers-DC5ZYYHM.mjs +1 -0
- package/dist/preview-engine/{renderers-OPRXVIGT.mjs → renderers-EN7LXJLG.mjs} +1 -1
- package/dist/preview-engine/{renderers-ZQVKE5AO.mjs → renderers-FY2HOQCS.mjs} +1 -1
- package/dist/preview-engine/{renderers-CQIPHCIW.mjs → renderers-GQM3KMV3.mjs} +1 -1
- package/dist/preview-engine/{renderers-TKHQRERE.mjs → renderers-H6PBHEYU.mjs} +1 -1
- package/dist/preview-engine/{renderers-YJ4PJEPG.mjs → renderers-HKLCB4U6.mjs} +1 -1
- package/dist/preview-engine/{renderers-JALV3B3A.mjs → renderers-HSFQIILN.mjs} +1 -1
- package/dist/preview-engine/{renderers-OZKPOUMW.mjs → renderers-I6QKZ7CH.mjs} +1 -1
- package/dist/preview-engine/{renderers-JMSAW7VY.mjs → renderers-IHGAWLUF.mjs} +1 -1
- package/dist/preview-engine/renderers-J6ZEXW5L.mjs +1 -0
- package/dist/preview-engine/renderers-JV4MF46Q.mjs +1 -0
- package/dist/preview-engine/{renderers-RQ3JZE3L.mjs → renderers-KCGK33Y2.mjs} +1 -1
- package/dist/preview-engine/renderers-KQKH4ZIX.mjs +1 -0
- package/dist/preview-engine/renderers-MDHPQY6D.mjs +1 -0
- package/dist/preview-engine/renderers-MEITHN4N.mjs +1 -0
- package/dist/preview-engine/renderers-MN3HSBTJ.mjs +1 -0
- package/dist/preview-engine/{renderers-EILFSWSJ.mjs → renderers-MOEC2XZZ.mjs} +1 -1
- package/dist/preview-engine/renderers-NTG3QGNH.mjs +1 -0
- package/dist/preview-engine/{renderers-UBIFSF37.mjs → renderers-OGOW3NA4.mjs} +1 -1
- package/dist/preview-engine/renderers-OU4SFMB2.mjs +1 -0
- package/dist/preview-engine/{renderers-4SNAK77B.mjs → renderers-P2HORBZ6.mjs} +1 -1
- package/dist/preview-engine/renderers-P6TIBJIG.mjs +1 -0
- package/dist/preview-engine/renderers-POJWQ7L3.mjs +1 -0
- package/dist/preview-engine/{renderers-NQC4DPX4.mjs → renderers-PPZK6VEW.mjs} +1 -1
- package/dist/preview-engine/renderers-RJ7S6VHD.mjs +1 -0
- package/dist/preview-engine/renderers-RJJAJZYN.mjs +1 -0
- package/dist/preview-engine/{renderers-KICDB5Y6.mjs → renderers-RN2MHIFK.mjs} +1 -1
- package/dist/preview-engine/renderers-UEQ733VK.mjs +1 -0
- package/dist/preview-engine/{renderers-XZ3XDQIN.mjs → renderers-UG2C3C7T.mjs} +1 -1
- package/dist/preview-engine/renderers-ULO2AW2U.mjs +1 -0
- package/dist/preview-engine/renderers-UPVHGHCK.mjs +1 -0
- package/dist/preview-engine/renderers-UZHSNNIM.mjs +1 -0
- package/dist/preview-engine/renderers-V5KWZL2C.mjs +1 -0
- package/dist/preview-engine/{renderers-5K3BSBI6.mjs → renderers-VIGZYJYX.mjs} +1 -1
- package/dist/preview-engine/{renderers-6RYIPQ7W.mjs → renderers-VVP5WQOY.mjs} +1 -1
- package/dist/preview-engine/renderers-WL372W36.mjs +228 -0
- package/dist/preview-engine/{renderers-AUYCQNSS.mjs → renderers-WSABL3QO.mjs} +1 -1
- package/dist/preview-engine/{renderers-4WFRXGMR.mjs → renderers-X6CORAES.mjs} +1 -1
- package/dist/preview-engine/renderers-YMXKYOHQ.mjs +1 -0
- package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/{src-GPF7RIBU.mjs → src-4IUYUKIZ.mjs} +1 -1
- package/dist/{program-BUjUTdxq.mjs → program-Bc860ko5.mjs} +15 -42
- package/dist/program-Bc860ko5.mjs.map +1 -0
- package/dist/renderer/index.d.mts +1 -1
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--Ymc_4XJ.mjs +5 -0
- package/dist/{renderer-BvRaVByi.mjs → renderer-1uoKiILq.mjs} +3 -3
- package/dist/{renderer-BvRaVByi.mjs.map → renderer-1uoKiILq.mjs.map} +1 -1
- package/dist/{renderer-muB4slsV.mjs → renderer-4ZUv3X1I.mjs} +4 -4
- package/dist/{renderer-muB4slsV.mjs.map → renderer-4ZUv3X1I.mjs.map} +1 -1
- package/dist/{renderer-BT4im6c0.mjs → renderer-50JEMaVo.mjs} +4 -4
- package/dist/{renderer-BT4im6c0.mjs.map → renderer-50JEMaVo.mjs.map} +1 -1
- package/dist/{renderer-CsRuEpR2.mjs → renderer-7ow5Acsg.mjs} +3 -3
- package/dist/{renderer-CsRuEpR2.mjs.map → renderer-7ow5Acsg.mjs.map} +1 -1
- package/dist/{renderer-DJuVX3c5.d.mts → renderer-88C3QpKL.d.mts} +2 -2
- package/dist/{renderer-DJuVX3c5.d.mts.map → renderer-88C3QpKL.d.mts.map} +1 -1
- package/dist/{renderer-jBKpX3Xg.mjs → renderer-B-CMRUag.mjs} +3 -3
- package/dist/{renderer-jBKpX3Xg.mjs.map → renderer-B-CMRUag.mjs.map} +1 -1
- package/dist/renderer-B-OdV-eq.mjs +5 -0
- package/dist/{renderer-CeNAgCE2.mjs → renderer-B1LD29TV.mjs} +3 -3
- package/dist/{renderer-CeNAgCE2.mjs.map → renderer-B1LD29TV.mjs.map} +1 -1
- package/dist/{renderer-BFmVDdVs.mjs → renderer-B1esRxGy.mjs} +4 -4
- package/dist/{renderer-BFmVDdVs.mjs.map → renderer-B1esRxGy.mjs.map} +1 -1
- package/dist/{renderer-Chfo4G9t.mjs → renderer-B3Dme2es.mjs} +4 -4
- package/dist/{renderer-Chfo4G9t.mjs.map → renderer-B3Dme2es.mjs.map} +1 -1
- package/dist/renderer-B65fwoA2.mjs +5 -0
- package/dist/{renderer-B3WHDQeB.mjs → renderer-B6Oeahe_.mjs} +3 -3
- package/dist/{renderer-B3WHDQeB.mjs.map → renderer-B6Oeahe_.mjs.map} +1 -1
- package/dist/renderer-B92Ahkcv.mjs +5 -0
- package/dist/renderer-B9z2AK31.mjs +5 -0
- package/dist/{renderer-Bm91Xv6l.mjs → renderer-BDZC3o3N.mjs} +4 -4
- package/dist/{renderer-Bm91Xv6l.mjs.map → renderer-BDZC3o3N.mjs.map} +1 -1
- package/dist/renderer-BIF3Dg3Z.mjs +5 -0
- package/dist/{renderer-D7lApyWZ.mjs → renderer-BJ-7WRgO.mjs} +3 -3
- package/dist/{renderer-D7lApyWZ.mjs.map → renderer-BJ-7WRgO.mjs.map} +1 -1
- package/dist/renderer-BJUVaIAT.mjs +5 -0
- package/dist/renderer-BKRDMbI-.mjs +5 -0
- package/dist/{renderer-BSW4CGZF.mjs → renderer-BNHcwxw9.mjs} +3 -3
- package/dist/{renderer-BSW4CGZF.mjs.map → renderer-BNHcwxw9.mjs.map} +1 -1
- package/dist/{renderer-7w9PZmWJ.mjs → renderer-BNJ6Jk7-.mjs} +3 -3
- package/dist/{renderer-7w9PZmWJ.mjs.map → renderer-BNJ6Jk7-.mjs.map} +1 -1
- package/dist/{renderer-DsPLMzy1.mjs → renderer-BOrMBwQS.mjs} +2 -2
- package/dist/{renderer-DsPLMzy1.mjs.map → renderer-BOrMBwQS.mjs.map} +1 -1
- package/dist/{renderer-Br_aJ_b7.mjs → renderer-BQetXCcZ.mjs} +3 -3
- package/dist/{renderer-Br_aJ_b7.mjs.map → renderer-BQetXCcZ.mjs.map} +1 -1
- package/dist/{renderer-CtulmkqT.mjs → renderer-BSELd5vU.mjs} +3 -3
- package/dist/{renderer-CtulmkqT.mjs.map → renderer-BSELd5vU.mjs.map} +1 -1
- package/dist/renderer-BSwhyVWa.mjs +5 -0
- package/dist/{renderer-Ch1qZ2PT.mjs → renderer-BURhYcpA.mjs} +3 -3
- package/dist/{renderer-Ch1qZ2PT.mjs.map → renderer-BURhYcpA.mjs.map} +1 -1
- package/dist/renderer-BUqSZn2X.mjs +5 -0
- package/dist/{renderer-tcypOFaB.d.mts → renderer-BVKOQarx.d.mts} +4 -22
- package/dist/renderer-BVKOQarx.d.mts.map +1 -0
- package/dist/{renderer-BG_cnGbF.mjs → renderer-BaIJIfJ6.mjs} +4 -4
- package/dist/{renderer-BG_cnGbF.mjs.map → renderer-BaIJIfJ6.mjs.map} +1 -1
- package/dist/renderer-BbmvjqK9.mjs +3 -0
- package/dist/{renderer-CybBR8AL.mjs → renderer-Bbxh4N8Y.mjs} +73 -73
- package/dist/{renderer-CybBR8AL.mjs.map → renderer-Bbxh4N8Y.mjs.map} +1 -1
- package/dist/{renderer-B84T5I98.mjs → renderer-Bf4-N7k7.mjs} +4 -4
- package/dist/{renderer-B84T5I98.mjs.map → renderer-Bf4-N7k7.mjs.map} +1 -1
- package/dist/{renderer-7c0ecb-L.mjs → renderer-BhsrlGKp.mjs} +21 -74
- package/dist/renderer-BhsrlGKp.mjs.map +1 -0
- package/dist/{renderer-BhNZn2DU.mjs → renderer-Bo7shNdU.mjs} +4 -4
- package/dist/{renderer-BhNZn2DU.mjs.map → renderer-Bo7shNdU.mjs.map} +1 -1
- package/dist/renderer-Bpe4k_x6.mjs +5 -0
- package/dist/{renderer-Dswrn-yi.mjs → renderer-BwrfKKqw.mjs} +3 -3
- package/dist/{renderer-Dswrn-yi.mjs.map → renderer-BwrfKKqw.mjs.map} +1 -1
- package/dist/{renderer-DCMoBppL.mjs → renderer-Bx14Wnxl.mjs} +4 -58
- package/dist/renderer-Bx14Wnxl.mjs.map +1 -0
- package/dist/{renderer-DxkvDAA6.mjs → renderer-Bxjb0HYU.mjs} +3 -3
- package/dist/{renderer-DxkvDAA6.mjs.map → renderer-Bxjb0HYU.mjs.map} +1 -1
- package/dist/{renderer-D7DlNOVi.mjs → renderer-ByjaseAo.mjs} +4 -4
- package/dist/{renderer-D7DlNOVi.mjs.map → renderer-ByjaseAo.mjs.map} +1 -1
- package/dist/renderer-C1NjG0CJ.mjs +5 -0
- package/dist/renderer-C7Puyst9.mjs +5 -0
- package/dist/{renderer-DrExCXnp.mjs → renderer-C9BSXyrq.mjs} +3 -3
- package/dist/{renderer-DrExCXnp.mjs.map → renderer-C9BSXyrq.mjs.map} +1 -1
- package/dist/{renderer-Bb_HHUQ0.mjs → renderer-CAWnCsQc.mjs} +4 -4
- package/dist/{renderer-Bb_HHUQ0.mjs.map → renderer-CAWnCsQc.mjs.map} +1 -1
- package/dist/renderer-CGA_7320.mjs +5 -0
- package/dist/{renderer-CO1PwItH.mjs → renderer-CLAvn9c6.mjs} +3 -3
- package/dist/{renderer-CO1PwItH.mjs.map → renderer-CLAvn9c6.mjs.map} +1 -1
- package/dist/renderer-CLnFkXO7.mjs +5 -0
- package/dist/renderer-CMQIT1Kh.mjs +5 -0
- package/dist/{renderer-CTSvHf6g.mjs → renderer-COcKhouz.mjs} +4 -4
- package/dist/{renderer-CTSvHf6g.mjs.map → renderer-COcKhouz.mjs.map} +1 -1
- package/dist/renderer-CQ1rwjIh.mjs +5 -0
- package/dist/{renderer-H4CZt3Z5.mjs → renderer-CR0mDPYY.mjs} +2 -2
- package/dist/renderer-CT8h0boY.mjs +5 -0
- package/dist/{renderer-D_rEtJAH.mjs → renderer-CU8v-LxD.mjs} +4 -4
- package/dist/{renderer-D_rEtJAH.mjs.map → renderer-CU8v-LxD.mjs.map} +1 -1
- package/dist/renderer-Cb0lszt3.mjs +5 -0
- package/dist/renderer-Ci7oLye9.mjs +5 -0
- package/dist/renderer-CjqXB3CZ.mjs +5 -0
- package/dist/{renderer-BeJoW-nG.mjs → renderer-Co6UFbZB.mjs} +4 -4
- package/dist/{renderer-BeJoW-nG.mjs.map → renderer-Co6UFbZB.mjs.map} +1 -1
- package/dist/renderer-CqTV04zQ.mjs +5 -0
- package/dist/{renderer-DKptrHeL.mjs → renderer-CrR8Mpxq.mjs} +4 -4
- package/dist/{renderer-DKptrHeL.mjs.map → renderer-CrR8Mpxq.mjs.map} +1 -1
- package/dist/renderer-CtWeRtHK.mjs +5 -0
- package/dist/{renderer-CDfCaqV4.mjs → renderer-CxGx1Lhi.mjs} +3 -3
- package/dist/{renderer-CDfCaqV4.mjs.map → renderer-CxGx1Lhi.mjs.map} +1 -1
- package/dist/{renderer-DlbSqOJR.mjs → renderer-Cz-n883J.mjs} +4 -4
- package/dist/{renderer-DlbSqOJR.mjs.map → renderer-Cz-n883J.mjs.map} +1 -1
- package/dist/renderer-CzolnwCo.mjs +5 -0
- package/dist/{renderer-DtCmG-tT.mjs → renderer-D-QVGphn.mjs} +4 -4
- package/dist/{renderer-DtCmG-tT.mjs.map → renderer-D-QVGphn.mjs.map} +1 -1
- package/dist/{renderer-oiDoNzhv.mjs → renderer-D06HxSXO.mjs} +2 -2
- package/dist/{renderer-B8i4d1Rc.mjs → renderer-D0aAZHC7.mjs} +3 -3
- package/dist/{renderer-B8i4d1Rc.mjs.map → renderer-D0aAZHC7.mjs.map} +1 -1
- package/dist/{renderer-JASAZUyY.mjs → renderer-D4f8f66C.mjs} +4 -4
- package/dist/{renderer-JASAZUyY.mjs.map → renderer-D4f8f66C.mjs.map} +1 -1
- package/dist/renderer-D6qhcx_C.mjs +5 -0
- package/dist/{renderer-BdRwbLLV.mjs → renderer-DAn9xiQT.mjs} +4 -4
- package/dist/{renderer-BdRwbLLV.mjs.map → renderer-DAn9xiQT.mjs.map} +1 -1
- package/dist/renderer-DDfEf0jt.mjs +5 -0
- package/dist/renderer-DDpa8ztp.mjs +5 -0
- package/dist/{renderer-DjiebKHO.mjs → renderer-DE9Jik9K.mjs} +3 -3
- package/dist/{renderer-DjiebKHO.mjs.map → renderer-DE9Jik9K.mjs.map} +1 -1
- package/dist/{renderer-kFx1_MmK.mjs → renderer-DFJWPqOJ.mjs} +3 -3
- package/dist/{renderer-kFx1_MmK.mjs.map → renderer-DFJWPqOJ.mjs.map} +1 -1
- package/dist/{renderer-R2kLaNuR.mjs → renderer-DLPhfwbR.mjs} +3 -3
- package/dist/{renderer-R2kLaNuR.mjs.map → renderer-DLPhfwbR.mjs.map} +1 -1
- package/dist/{renderer-CLRrcT_3.mjs → renderer-DOkbn1ot.mjs} +4 -4
- package/dist/{renderer-CLRrcT_3.mjs.map → renderer-DOkbn1ot.mjs.map} +1 -1
- package/dist/{renderer-1KgHl_ls.mjs → renderer-DaXQgGg3.mjs} +4 -4
- package/dist/{renderer-1KgHl_ls.mjs.map → renderer-DaXQgGg3.mjs.map} +1 -1
- package/dist/renderer-DbQBqzmx.mjs +5 -0
- package/dist/{renderer-BOg8i8eF.mjs → renderer-DcvjSolU.mjs} +2 -11
- package/dist/{renderer-BOg8i8eF.mjs.map → renderer-DcvjSolU.mjs.map} +1 -1
- package/dist/renderer-DfUcwMKa.mjs +5 -0
- package/dist/renderer-DgIjNANM.mjs +6 -0
- package/dist/{renderer-Dd2XrdqA.mjs → renderer-DgPn_SOC.mjs} +3 -3
- package/dist/{renderer-Dd2XrdqA.mjs.map → renderer-DgPn_SOC.mjs.map} +1 -1
- package/dist/{renderer-BTLZBD63.mjs → renderer-DkqZmfm8.mjs} +4 -4
- package/dist/{renderer-BTLZBD63.mjs.map → renderer-DkqZmfm8.mjs.map} +1 -1
- package/dist/{renderer-Dak_wVh9.mjs → renderer-Dpl6poqD.mjs} +2 -2
- package/dist/{renderer-Dak_wVh9.mjs.map → renderer-Dpl6poqD.mjs.map} +1 -1
- package/dist/renderer-Dsh6Tgu0.mjs +3 -0
- package/dist/renderer-DuIwR9GT.mjs +5 -0
- package/dist/renderer-Dv4u2c14.mjs +5 -0
- package/dist/{renderer-DxiF4O6X.mjs → renderer-DwK9jsER.mjs} +4 -4
- package/dist/{renderer-DxiF4O6X.mjs.map → renderer-DwK9jsER.mjs.map} +1 -1
- package/dist/{renderer-BnN3JH9u.mjs → renderer-HDj9Zb-O.mjs} +6 -19
- package/dist/renderer-HDj9Zb-O.mjs.map +1 -0
- package/dist/renderer-IE1yu3lZ.mjs +5 -0
- package/dist/{renderer-BIToh0CA.mjs → renderer-JHByuUNb.mjs} +3 -3
- package/dist/{renderer-BIToh0CA.mjs.map → renderer-JHByuUNb.mjs.map} +1 -1
- package/dist/{renderer--f8JHHyT.mjs → renderer-KKk7myX1.mjs} +4 -4
- package/dist/{renderer--f8JHHyT.mjs.map → renderer-KKk7myX1.mjs.map} +1 -1
- package/dist/renderer-PY_wnEN0.mjs +5 -0
- package/dist/{renderer-Bif8bwCq.mjs → renderer-Ros7XQg2.mjs} +3 -3
- package/dist/{renderer-Bif8bwCq.mjs.map → renderer-Ros7XQg2.mjs.map} +1 -1
- package/dist/{renderer-DkAFIpzB.mjs → renderer-RvI3qRUI.mjs} +4 -4
- package/dist/{renderer-DkAFIpzB.mjs.map → renderer-RvI3qRUI.mjs.map} +1 -1
- package/dist/{renderer-FFLnACY-.mjs → renderer-Rw87u1Cr.mjs} +4 -4
- package/dist/{renderer-FFLnACY-.mjs.map → renderer-Rw87u1Cr.mjs.map} +1 -1
- package/dist/{renderer-DMtzPqYo.mjs → renderer-TKZCA0B9.mjs} +69 -208
- package/dist/renderer-TKZCA0B9.mjs.map +1 -0
- package/dist/{renderer-Bo5GwErU.mjs → renderer-V4dhrf_h.mjs} +4 -4
- package/dist/{renderer-Bo5GwErU.mjs.map → renderer-V4dhrf_h.mjs.map} +1 -1
- package/dist/{renderer-CWmlfdLb.mjs → renderer-_9gbYS-3.mjs} +4 -4
- package/dist/{renderer-CWmlfdLb.mjs.map → renderer-_9gbYS-3.mjs.map} +1 -1
- package/dist/{renderer-Dih1rtT6.mjs → renderer-celhuAL7.mjs} +3 -3
- package/dist/{renderer-Dih1rtT6.mjs.map → renderer-celhuAL7.mjs.map} +1 -1
- package/dist/{renderer-Ck-NLzz0.mjs → renderer-eMCTAa9e.mjs} +3 -3
- package/dist/{renderer-Ck-NLzz0.mjs.map → renderer-eMCTAa9e.mjs.map} +1 -1
- package/dist/{renderer-D1tDMuD0.mjs → renderer-fs8f1QeE.mjs} +4 -4
- package/dist/{renderer-D1tDMuD0.mjs.map → renderer-fs8f1QeE.mjs.map} +1 -1
- package/dist/{renderer-DAfCcnCz.mjs → renderer-fwKnV9zs.mjs} +4 -4
- package/dist/{renderer-DAfCcnCz.mjs.map → renderer-fwKnV9zs.mjs.map} +1 -1
- package/dist/{renderer-DBfx6QX1.mjs → renderer-g_1t2je9.mjs} +2 -2
- package/dist/renderer-gv24VyzO.mjs +5 -0
- package/dist/{renderer-DAug14gu.mjs → renderer-h62QaJYz.mjs} +3 -3
- package/dist/{renderer-DAug14gu.mjs.map → renderer-h62QaJYz.mjs.map} +1 -1
- package/dist/{renderer-CKlNHDKI.mjs → renderer-jnAIhWn_.mjs} +4 -4
- package/dist/{renderer-CKlNHDKI.mjs.map → renderer-jnAIhWn_.mjs.map} +1 -1
- package/dist/{renderer-CwAuWLWm.mjs → renderer-lHNTgiOM.mjs} +3 -3
- package/dist/{renderer-CwAuWLWm.mjs.map → renderer-lHNTgiOM.mjs.map} +1 -1
- package/dist/renderer-nN6lPZf9.mjs +5 -0
- package/dist/{renderer-CanNjQuL.mjs → renderer-o68mVeyk.mjs} +3 -3
- package/dist/{renderer-CanNjQuL.mjs.map → renderer-o68mVeyk.mjs.map} +1 -1
- package/dist/{renderer-vPxMXiv8.mjs → renderer-pNmI-A9o.mjs} +4 -4
- package/dist/{renderer-vPxMXiv8.mjs.map → renderer-pNmI-A9o.mjs.map} +1 -1
- package/dist/{renderer-CxabOSkk.mjs → renderer-q7q6k_cD.mjs} +3 -3
- package/dist/{renderer-CxabOSkk.mjs.map → renderer-q7q6k_cD.mjs.map} +1 -1
- package/dist/{renderer-vpsU_4XW.mjs → renderer-riIFosX6.mjs} +4 -4
- package/dist/{renderer-vpsU_4XW.mjs.map → renderer-riIFosX6.mjs.map} +1 -1
- package/dist/{renderer-w7mlMSC-.mjs → renderer-sfqZK6L5.mjs} +4 -4
- package/dist/{renderer-w7mlMSC-.mjs.map → renderer-sfqZK6L5.mjs.map} +1 -1
- package/dist/{renderer-fWW0bsVl.mjs → renderer-ynFRJh7G.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-OgyUiyrr.mjs → renderers-CP8CFWDs-DRoslK4F.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-OgyUiyrr.mjs.map → renderers-CP8CFWDs-DRoslK4F.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 +6 -6
- package/dist/signals/index.mjs +5 -5
- package/dist/{src-C3f3zXYg.mjs → src-BYp6r-cS.mjs} +28 -248
- package/dist/src-BYp6r-cS.mjs.map +1 -0
- package/dist/{src-BU6vm9sP-DFJ3phW0.mjs → src-Bnr8DUC--BRDqRF6I.mjs} +9 -74
- package/dist/src-Bnr8DUC--BRDqRF6I.mjs.map +1 -0
- package/package.json +59 -59
- package/dist/audio-1X5qNNmk.d.mts +0 -38
- package/dist/audio-1X5qNNmk.d.mts.map +0 -1
- package/dist/audio-YpBRdI7r.mjs.map +0 -1
- package/dist/dist-C4Vxgm0Q.mjs.map +0 -1
- package/dist/gpu-Bw35AMwY.mjs.map +0 -1
- package/dist/index-B7WqFBZA.d.mts.map +0 -1
- package/dist/index-Dyt4yS-x.d.mts.map +0 -1
- package/dist/index-WwuuX8ZJ.d.mts.map +0 -1
- package/dist/preview-engine/chunk-44V4V5LD.mjs +0 -1
- package/dist/preview-engine/chunk-4TPXZNVR.mjs +0 -483
- package/dist/preview-engine/chunk-4YT5YJIF.mjs +0 -1
- package/dist/preview-engine/chunk-77MT33VR.mjs +0 -1
- package/dist/preview-engine/chunk-A6OAPDIA.mjs +0 -1
- package/dist/preview-engine/chunk-ADLIF544.mjs +0 -39
- package/dist/preview-engine/chunk-CSLSWUUT.mjs +0 -1
- package/dist/preview-engine/chunk-GTMZOMAN.mjs +0 -1
- package/dist/preview-engine/chunk-JAAFSVAG.mjs +0 -1
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
- package/dist/preview-engine/chunk-PIHG6HJO.mjs +0 -1
- package/dist/preview-engine/chunk-T6L3DO3H.mjs +0 -1
- package/dist/preview-engine/chunk-ZGEKF34E.mjs +0 -1974
- package/dist/preview-engine/renderers-33PIDDZC.mjs +0 -1
- package/dist/preview-engine/renderers-3AZ3HY53.mjs +0 -1
- package/dist/preview-engine/renderers-3FGKW52B.mjs +0 -1
- package/dist/preview-engine/renderers-4A2FBS3Y.mjs +0 -1
- package/dist/preview-engine/renderers-65DU2F5W.mjs +0 -1
- package/dist/preview-engine/renderers-6CTPYQR6.mjs +0 -1
- package/dist/preview-engine/renderers-AWODRI3B.mjs +0 -1
- package/dist/preview-engine/renderers-BO6HHGMZ.mjs +0 -1
- package/dist/preview-engine/renderers-BSXYDEV7.mjs +0 -1
- package/dist/preview-engine/renderers-DU7KPFVV.mjs +0 -1
- package/dist/preview-engine/renderers-ECW2CGNU.mjs +0 -1
- package/dist/preview-engine/renderers-EEX22FUO.mjs +0 -1
- package/dist/preview-engine/renderers-GCQKGJ7W.mjs +0 -1
- package/dist/preview-engine/renderers-HZBXLDKG.mjs +0 -1
- package/dist/preview-engine/renderers-IOXNQPQK.mjs +0 -1
- package/dist/preview-engine/renderers-IR44E4ZZ.mjs +0 -1
- package/dist/preview-engine/renderers-JZZ3ODOZ.mjs +0 -1
- package/dist/preview-engine/renderers-K37YL3Z7.mjs +0 -1
- package/dist/preview-engine/renderers-KUJQV3K6.mjs +0 -1
- package/dist/preview-engine/renderers-KXVKLSSX.mjs +0 -1
- package/dist/preview-engine/renderers-N4RVFX3G.mjs +0 -1
- package/dist/preview-engine/renderers-NZWWEAYA.mjs +0 -1
- package/dist/preview-engine/renderers-P4JJEDZB.mjs +0 -1
- package/dist/preview-engine/renderers-Q4572F5C.mjs +0 -1
- package/dist/preview-engine/renderers-QAX2QWWQ.mjs +0 -1
- package/dist/preview-engine/renderers-SRFIEVWL.mjs +0 -1
- package/dist/preview-engine/renderers-SYC6WFTM.mjs +0 -1
- package/dist/preview-engine/renderers-UH4WN3QN.mjs +0 -1
- package/dist/preview-engine/renderers-V4FFCAS7.mjs +0 -1
- package/dist/preview-engine/renderers-VGDEOZUU.mjs +0 -1
- package/dist/preview-engine/renderers-VJJKBX5K.mjs +0 -1
- package/dist/preview-engine/renderers-VJOKVDYW.mjs +0 -1
- package/dist/preview-engine/renderers-VUUWZUOH.mjs +0 -1
- package/dist/preview-engine/renderers-WG756VF3.mjs +0 -228
- package/dist/preview-engine/renderers-WOP5GOZP.mjs +0 -1
- package/dist/preview-engine/renderers-Y4MGN2FR.mjs +0 -1
- package/dist/preview-engine/renderers-YAMYH7IK.mjs +0 -1
- package/dist/preview-engine/renderers-ZNLSAWW3.mjs +0 -1
- package/dist/program-BUjUTdxq.mjs.map +0 -1
- package/dist/renderer-6sNr6ZRJ.mjs +0 -6
- package/dist/renderer-7c0ecb-L.mjs.map +0 -1
- package/dist/renderer-BDHGxD6p.mjs +0 -5
- package/dist/renderer-BT9dvpk2.mjs +0 -5
- package/dist/renderer-Bd-NuU3M.mjs +0 -3
- package/dist/renderer-BfaRh0qy.mjs +0 -5
- package/dist/renderer-BlwXKV7Y.mjs +0 -5
- package/dist/renderer-BnN3JH9u.mjs.map +0 -1
- package/dist/renderer-C40yZK3x.mjs +0 -5
- package/dist/renderer-C5MjQ7L8.mjs +0 -5
- package/dist/renderer-C8LjKYnS.mjs +0 -5
- package/dist/renderer-C9q9H_qa.mjs +0 -5
- package/dist/renderer-CC4fhNup.mjs +0 -3
- package/dist/renderer-CF9ta9Rm.mjs +0 -5
- package/dist/renderer-CO205Gr9.mjs +0 -5
- package/dist/renderer-CSm8UXLP.mjs +0 -5
- package/dist/renderer-CSy8HRtF.mjs +0 -5
- package/dist/renderer-CdNRWDsA.mjs +0 -5
- package/dist/renderer-CkAjiGRB.mjs +0 -5
- package/dist/renderer-CmryuPBm.mjs +0 -5
- package/dist/renderer-CnEwne4L.mjs +0 -5
- package/dist/renderer-D4QDoqOG.mjs +0 -5
- package/dist/renderer-D7cS2a8z.mjs +0 -5
- package/dist/renderer-D85CNC-b.mjs +0 -5
- package/dist/renderer-DC9IoJNz.mjs +0 -5
- package/dist/renderer-DCMoBppL.mjs.map +0 -1
- package/dist/renderer-DIDh0gFm.mjs +0 -5
- package/dist/renderer-DLmJ9GWE.mjs +0 -5
- package/dist/renderer-DM7PUWP9.mjs +0 -5
- package/dist/renderer-DMtzPqYo.mjs.map +0 -1
- package/dist/renderer-DPWFDxIO.mjs +0 -5
- package/dist/renderer-DUCByhAk.mjs +0 -5
- package/dist/renderer-DVOtnCKH.mjs +0 -5
- package/dist/renderer-DVrN2bW8.mjs +0 -5
- package/dist/renderer-DdOVwfG4.mjs +0 -5
- package/dist/renderer-DtCe9ouu.mjs +0 -5
- package/dist/renderer-Mg0kr9Fm.mjs +0 -5
- package/dist/renderer-T35PsSw5.mjs +0 -5
- package/dist/renderer-iSZ5NT-J.mjs +0 -5
- package/dist/renderer-nEmMjQ1a.mjs +0 -5
- package/dist/renderer-pG1nyfjE.mjs +0 -5
- package/dist/renderer-tcypOFaB.d.mts.map +0 -1
- package/dist/renderer-vbb9e3E3.mjs +0 -5
- package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +0 -1
- package/dist/src-C3f3zXYg.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "../index-COYNQ_mf.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { Y as initHeadlessWebGPU, g as GpuAdapterDescription, q as describeGpu } from "../index-BuiZzc6i.mjs";
|
|
3
3
|
import { C as formatQaReport, D as stitchChunks, E as resetRenderCaches, S as VideoQaStats, T as renderSemaphore, _ as RenderProgress, a as renderFrameGrid, b as VideoQaOptions, c as ChunkPlan, d as FrameRange, f as HeadlessMediaRenderer, g as QaSegment, h as QaIssue, i as computeGridLayout, l as ChunkPlanOptions, m as PlannedChunk, n as FrameGridRenderable, o as resolveSamplePoints, p as HeadlessWebGPURenderer, r as FrameSamplePoint, s as AudioQaStats, t as FrameGridOptions, u as FrameCostSample, v as StitchOptions, w as planChunks, x as VideoQaReport, y as StitchResult } from "../index-gOVtTm-P.mjs";
|
|
4
4
|
export { AudioQaStats, ChunkPlan, ChunkPlanOptions, FrameCostSample, FrameGridOptions, FrameGridRenderable, FrameRange, FrameSamplePoint, GpuAdapterDescription, HeadlessMediaRenderer, HeadlessWebGPURenderer, PlannedChunk, QaIssue, QaSegment, RenderProgress, StitchOptions, StitchResult, VideoQaOptions, VideoQaReport, VideoQaStats, computeGridLayout, describeGpu, formatQaReport, initHeadlessWebGPU, planChunks, renderFrameGrid, renderSemaphore, resetRenderCaches, resolveSamplePoints, stitchChunks };
|
package/dist/renderer/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../chunk-W71TSjRM.mjs";
|
|
2
|
-
import { R as initHeadlessWebGPU, x as describeGpu } from "../dist-
|
|
3
|
-
import { a as resetRenderCaches, c as HeadlessWebGPURenderer, i as planChunks, l as formatQaReport, n as renderFrameGrid, o as stitchChunks, r as resolveSamplePoints, s as HeadlessMediaRenderer, t as computeGridLayout, u as renderSemaphore } from "../renderer-
|
|
2
|
+
import { R as initHeadlessWebGPU, x as describeGpu } from "../dist-CWLLnigL.mjs";
|
|
3
|
+
import { a as resetRenderCaches, c as HeadlessWebGPURenderer, i as planChunks, l as formatQaReport, n as renderFrameGrid, o as stitchChunks, r as resolveSamplePoints, s as HeadlessMediaRenderer, t as computeGridLayout, u as renderSemaphore } from "../renderer-Bbxh4N8Y.mjs";
|
|
4
4
|
|
|
5
5
|
export { HeadlessMediaRenderer, HeadlessWebGPURenderer, computeGridLayout, describeGpu, formatQaReport, initHeadlessWebGPU, planChunks, renderFrameGrid, renderSemaphore, resetRenderCaches, resolveSamplePoints, stitchChunks };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as defineRenderer } from "./renderer-
|
|
2
|
-
import { a as createFullscreenPipeline, i as beginTargetPass, l as fragmentBindGroupLayout, o as drawChildToTexture, r as STRAIGHT_ALPHA_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-
|
|
1
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
2
|
+
import { a as createFullscreenPipeline, i as beginTargetPass, l as fragmentBindGroupLayout, o as drawChildToTexture, r as STRAIGHT_ALPHA_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-CpkJJLQP.mjs";
|
|
3
3
|
|
|
4
4
|
//#region ../../nodes/node-liquify/dist/renderers-C4bNr5l9.mjs
|
|
5
5
|
const MAX_OPERATIONS = 1024;
|
|
@@ -184,4 +184,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: LiquifyWebGPURenderer }
|
|
|
184
184
|
|
|
185
185
|
//#endregion
|
|
186
186
|
export { renderers_default as n, LiquifyWebGPURenderer as t };
|
|
187
|
-
//# sourceMappingURL=renderer-
|
|
187
|
+
//# sourceMappingURL=renderer-1uoKiILq.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-1uoKiILq.mjs","names":[],"sources":["../../../nodes/node-liquify/dist/renderers-C4bNr5l9.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, STRAIGHT_ALPHA_BLEND, beginTargetPass, createFullscreenPipeline, drawChildToTexture, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst MAX_OPERATIONS = 1024;\nconst LIQUIFY_SHADER = `\nstruct LiquifyOpData {\n\topType : f32, // 0=Push, 1=Pull, 2=Bloat, 3=Pucker, 4=TwirlCW, 5=TwirlCCW\n\tx : f32,\n\ty : f32,\n\tradius : f32,\n\tstrength : f32,\n\tdx : f32,\n\tdy : f32,\n\t_pad : f32,\n};\n\nstruct LiquifyUniforms {\n\topCount : f32,\n\taspectRatio : f32,\n\topacity : f32,\n\t_pad0 : f32,\n\tops : array<LiquifyOpData, 1024>,\n};\n\n@group(0) @binding(0) var<uniform> u : LiquifyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nconst PI = 3.141592653589793;\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tvar currentUV = in.uv;\n\tlet count = u32(u.opCount);\n\tlet aspect = u.aspectRatio;\n\n\tfor (var i = 0u; i < count && i < 1024u; i = i + 1u) {\n\t\tlet op = u.ops[i];\n\t\tlet center = vec2<f32>(op.x, op.y);\n\t\tlet delta = currentUV - center;\n\t\tlet deltaAspect = vec2<f32>(delta.x * aspect, delta.y);\n\t\tlet dist = length(deltaAspect);\n\n\t\tif (dist < op.radius && op.radius > 0.0001) {\n\t\t\tlet t = dist / op.radius;\n\t\t\tlet falloff = (1.0 - t * t) * (1.0 - t * t);\n\t\t\tlet s = op.strength;\n\n\t\t\tif (op.opType < 0.5) {\n\t\t\t\t// 0 = Push\n\t\t\t\tlet shift = vec2<f32>(op.dx, op.dy) * s * falloff;\n\t\t\t\tcurrentUV = currentUV - shift;\n\t\t\t} else if (op.opType < 1.5) {\n\t\t\t\t// 1 = Pull\n\t\t\t\tlet shift = vec2<f32>(op.dx, op.dy) * s * falloff;\n\t\t\t\tcurrentUV = currentUV + shift;\n\t\t\t} else if (op.opType < 2.5) {\n\t\t\t\t// 2 = Bloat\n\t\t\t\tlet factor = 1.0 - s * falloff * 0.45;\n\t\t\t\tcurrentUV = center + delta * factor;\n\t\t\t} else if (op.opType < 3.5) {\n\t\t\t\t// 3 = Pucker\n\t\t\t\tlet factor = 1.0 + s * falloff * 0.45;\n\t\t\t\tcurrentUV = center + delta * factor;\n\t\t\t} else if (op.opType < 4.5) {\n\t\t\t\t// 4 = TwirlCW\n\t\t\t\tlet angle = -s * PI * falloff;\n\t\t\t\tlet cosA = cos(angle);\n\t\t\t\tlet sinA = sin(angle);\n\t\t\t\tlet rotated = vec2<f32>(delta.x * cosA - delta.y * sinA, delta.x * sinA + delta.y * cosA);\n\t\t\t\tcurrentUV = center + rotated;\n\t\t\t} else {\n\t\t\t\t// 5 = TwirlCCW\n\t\t\t\tlet angle = s * PI * falloff;\n\t\t\t\tlet cosA = cos(angle);\n\t\t\t\tlet sinA = sin(angle);\n\t\t\t\tlet rotated = vec2<f32>(delta.x * cosA - delta.y * sinA, delta.x * sinA + delta.y * cosA);\n\t\t\t\tcurrentUV = center + rotated;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet clampedUV = clamp(currentUV, vec2<f32>(0.0), vec2<f32>(1.0));\n\tlet sampledColor = textureSampleLevel(tex, samp, clampedUV, 0.0);\n\treturn sampledColor;\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nfunction getLiquifyResources(device, format) {\n\tlet layouts = deviceResourceCache.get(device);\n\tif (!layouts) {\n\t\tlayouts = {\n\t\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"], \"LiquifyUniformLayout\"),\n\t\t\tsingleTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"], \"LiquifyTextureLayout\"),\n\t\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t\t};\n\t\tdeviceResourceCache.set(device, layouts);\n\t}\n\tconst cacheKey = format;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"liquify.wgsl\",\n\t\t\tcode: LIQUIFY_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `LiquifyPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [layouts.uniformLayout, layouts.singleTextureLayout],\n\t\t\tformat,\n\t\t\tblend: STRAIGHT_ALPHA_BLEND\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tliquifyPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout\n\t};\n}\nconst TYPE_ENUM_MAP = {\n\tPush: 0,\n\tPull: 1,\n\tBloat: 2,\n\tPucker: 3,\n\tTwirlCW: 4,\n\tTwirlCCW: 5\n};\nconst LiquifyWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Liquify\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst aspectRatio = height > 0 ? width / height : 1;\n\tconst { texture: childTexture } = await drawChildToTexture(args, childMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: childMedia,\n\t\tcontainerWidth: width,\n\t\tcontainerHeight: height\n\t} });\n\tconst operations = op.operations || [];\n\tconst opCount = Math.min(operations.length, MAX_OPERATIONS);\n\tconst uniformData = new Float32Array(4 + MAX_OPERATIONS * 8);\n\tuniformData[0] = opCount;\n\tuniformData[1] = aspectRatio;\n\tuniformData[2] = 1;\n\tuniformData[3] = 0;\n\tfor (let i = 0; i < opCount; i++) {\n\t\tconst item = operations[i];\n\t\tif (!item) continue;\n\t\tconst offset = 4 + i * 8;\n\t\tuniformData[offset + 0] = TYPE_ENUM_MAP[item.type] ?? 2;\n\t\tuniformData[offset + 1] = item.x;\n\t\tuniformData[offset + 2] = item.y;\n\t\tuniformData[offset + 3] = item.radius ?? .15;\n\t\tuniformData[offset + 4] = item.strength ?? .5;\n\t\tuniformData[offset + 5] = item.dx ?? 0;\n\t\tuniformData[offset + 6] = item.dy ?? 0;\n\t\tuniformData[offset + 7] = 0;\n\t}\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst resources = getLiquifyResources(ctx.device, ctx.renderer.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, resources.singleTextureLayout, childTexture, sampler);\n\tconst outPass = beginTargetPass(args);\n\toutPass.setPipeline(resources.liquifyPipeline);\n\toutPass.setBindGroup(0, uniformBindGroup);\n\toutPass.setBindGroup(1, textureBindGroup);\n\toutPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: LiquifyWebGPURenderer });\n\n//#endregion\nexport { LiquifyWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-C4bNr5l9.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./chunk-W71TSjRM.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { zn as signalRegistry } from "./dist-
|
|
4
|
-
import { a as createFullscreenPipeline,
|
|
2
|
+
import { c as resolveSignalField, n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
3
|
+
import { zn as signalRegistry } from "./dist-CWLLnigL.mjs";
|
|
4
|
+
import { a as createFullscreenPipeline, f as signalTiming, l as fragmentBindGroupLayout, p as texturesLayout, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-CpkJJLQP.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-procedural-vfx/dist/renderers-DiW7Lt7Y.mjs
|
|
7
7
|
const VFX_SHADER = `
|
|
@@ -538,4 +538,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: ProceduralVFXWebGPURend
|
|
|
538
538
|
|
|
539
539
|
//#endregion
|
|
540
540
|
export { ProceduralVFXWebGPURenderer, renderers_default as default };
|
|
541
|
-
//# sourceMappingURL=renderer-
|
|
541
|
+
//# sourceMappingURL=renderer-4ZUv3X1I.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-muB4slsV.mjs","names":[],"sources":["../../../nodes/node-procedural-vfx/dist/renderers-DiW7Lt7Y.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveSignalField } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst VFX_SHADER = `\nstruct VFXUniforms {\n effectType : f32,\n outputType : f32,\n time : f32,\n _pad0 : f32,\n\n density : f32,\n scale : f32,\n speed : f32,\n intensity : f32,\n\n seed : f32,\n hasSigDensity : f32,\n hasSigScale : f32,\n hasSigSpeed : f32,\n\n hasSigIntensity : f32,\n hasSigSeed : f32,\n _pad1 : f32,\n _pad2 : f32,\n\n colorStart : vec4<f32>,\n colorEnd : vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u : VFXUniforms;\n\n@group(1) @binding(0) var densityTex : texture_2d<f32>;\n@group(1) @binding(1) var scaleTex : texture_2d<f32>;\n@group(1) @binding(2) var speedTex : texture_2d<f32>;\n@group(1) @binding(3) var intensityTex : texture_2d<f32>;\n@group(1) @binding(4) var seedTex : texture_2d<f32>;\n@group(1) @binding(5) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n// ---- hashing & noise primitives -------------------------------------------\nfn hash21(p: vec2<f32>) -> vec2<f32> {\n let p3 = fract(vec3<f32>(p.xyx) * vec3<f32>(0.1031, 0.1030, 0.0973));\n let p4 = p3 + dot(p3, p3.yzx + 33.33);\n return fract((p4.xx + p4.yz) * p4.zy);\n}\n\nfn hash1(n: f32) -> f32 {\n return fract(sin(n) * 43758.5453);\n}\n\nfn valueNoise(p: vec2<f32>) -> f32 {\n let i = floor(p);\n let f = fract(p);\n let u = f * f * (3.0 - 2.0 * f);\n let a = hash1(dot(i, vec2<f32>(127.1, 311.7)));\n let b = hash1(dot(i + vec2<f32>(1.0, 0.0), vec2<f32>(127.1, 311.7)));\n let c = hash1(dot(i + vec2<f32>(0.0, 1.0), vec2<f32>(127.1, 311.7)));\n let d = hash1(dot(i + vec2<f32>(1.0, 1.0), vec2<f32>(127.1, 311.7)));\n return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);\n}\n\nfn fbm(p: vec2<f32>, octaves: i32) -> f32 {\n var value = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n for (var i = 0; i < 8; i++) {\n if (i >= octaves) { break; }\n value += amp * valueNoise(p * freq);\n freq *= 2.0;\n amp *= 0.5;\n }\n return value;\n}\n\nfn get_field(val: f32, hasSig: f32, tex: texture_2d<f32>, samp: sampler) -> f32 {\n if (hasSig > 0.5) {\n return textureSampleLevel(tex, samp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n return val;\n}\n\n// ---- effect synthesizers (return straight-alpha RGBA) ----------------------\nfn fxSmoke(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let sp = p * scl;\n // Domain-warped FBM gives structured puffs instead of a solid fill.\n let q = vec2<f32>(fbm(sp + time * 0.10, 4), fbm(sp + vec2<f32>(5.2, 1.3) + time * 0.08, 4));\n let f = fbm(sp + 4.0 * q + vec2<f32>(1.7, 9.2) + time * 0.05, 4); // ~[0, 0.94]\n // Billowing plume: denser at the base (bottom, p.y=0), dissipating toward the top.\n let vgrad = 1.0 - smoothstep(0.45, 0.9, p.y);\n let n = f * 2.0 - 1.0; // remap to [-1, 1]\n // Thresholded so only bright fbm patches are opaque -> reads as puffs, not solid.\n let cov = smoothstep(0.28, 0.6, n) * dens * (0.25 + 0.75 * vgrad);\n let alpha = cov * inten;\n let col = mix(cB * 0.35, cA, clamp(f + vgrad * 0.5, 0.0, 1.0));\n return vec4<f32>(col, clamp(alpha, 0.0, 1.0));\n}\n\nfn fxFire(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let pn = vec2<f32>(p.x * 1.5, p.y) * scl;\n let n = fbm(pn * 6.0 + vec2<f32>(time * 2.0, time * 3.0), 4);\n // Heat concentrated near base, flickering upward\n let heat = n * smoothstep(1.0, 0.0 + (1.0 - dens) * 0.3, p.y);\n // Channeled vertical columns\n let columns = smoothstep(0.45, 0.9, n + 0.4 * sin(p.x * (20.0 + 40.0 * dens) * scl + time * 8.0));\n let d = clamp(heat * inten + columns * 0.3 * inten, 0.0, 1.0);\n // Fire color ramp mapped dynamically to cA and cB\n let dark = cB * 0.15;\n let orange = cB;\n let yellow = mix(cB, cA, 0.5);\n let white = cA;\n var col = mix(dark, orange, smoothstep(0.0, 0.4, d));\n col = mix(col, yellow, smoothstep(0.4, 0.75, d));\n col = mix(col, white, smoothstep(0.75, 1.0, d));\n let alpha = smoothstep(0.0, 0.3, d) * inten;\n return vec4<f32>(col, clamp(alpha, 0.0, 1.0));\n}\n\nfn fxRain(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (60.0 * dens + 4.0) * scl;\n let gx = floor(p.x * n);\n let h = hash1(gx);\n let speed = 0.8 + h;\n let yFrac = fract(p.y * 8.0 - time * speed);\n let dropY = abs(yFrac - 0.5);\n let reveal = step(0.35, yFrac);\n let st = smoothstep(0.18, 0.02, dropY);\n let d = st * reveal;\n let g = smoothstep(0.18, 0.02, abs(fract(p.x * n) + h * 0.2 - 0.5));\n let a = d * g * inten;\n let col = mix(cA, cB, h);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxSnow(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (50.0 * dens + 6.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let center = vec2<f32>(0.5, 0.5) + 0.3 * hash21(cell + 7.0);\n let sway = 0.1 * sin(time * 1.2 + cell.y * 3.0);\n // Fall downward (toward p.y=0, the bottom): subtract an advancing phase.\n let fall = fract(time * (0.25 + 0.45 * h.y) + h.x);\n let pos = vec2<f32>(f.x - center.x - sway, f.y - center.y) - vec2<f32>(0.0, fall);\n let d = length(pos);\n let size = 0.05 + 0.07 * h.x;\n let a = smoothstep(size, size * 0.4, d) * inten;\n let col = mix(cA, cB, h.x);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxDust(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (90.0 * dens + 6.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let center = h;\n let drift = fract(time * 0.05 * (0.5 + h.y) + cell.x * 0.01);\n let pos = vec2<f32>(f.x - center.x, f.y - center.y) + vec2<f32>((drift - 0.5) * 0.03, 0.0);\n let d = length(pos);\n let a = smoothstep(0.12, 0.0, d) * smoothstep(0.0, 0.3, dens) * inten * 0.6;\n let col = mix(cA, cB, h.y);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxEmbers(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (50.0 * dens + 4.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let sway = 0.12 * sin(time * 2.0 + cell.y * 2.0);\n let rise = fract(time * 0.18 * (0.7 + h.y) + cell.y * 0.12);\n // Rising: as rise grows, move toward p.y=1 (top).\n let pos = vec2<f32>(f.x - 0.5 - sway, f.y + rise * 1.2);\n let d = length(pos);\n let a = smoothstep(0.12, 0.0, d) * (1.0 - rise) * inten;\n let col = mix(cA, cB, clamp(rise, 0.0, 1.0));\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxSparks(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Burst radiating from a low-center source; travel grows over time so it expands outward.\n let src = vec2<f32>(0.5, 0.15);\n let dir = p - src;\n let dist = length(dir);\n let ang = atan2(dir.y, dir.x);\n let n = (20.0 * dens + 5.0) * scl;\n let seg = floor(ang * n);\n let tFrame = floor(time * 3.0);\n let timeVal = tFrame - 10000.0 * floor(tFrame / 10000.0);\n let h = hash1(seg + timeVal * 97.0);\n let launch = fract(0.5 + h + time * 0.5);\n let travel = launch * 0.8;\n let trail = smoothstep(0.9, 0.4, dist - travel);\n let w = 0.02 + 0.02 * h;\n let blast = smoothstep(0.0, w * 2.0, dist - travel) * trail;\n let streak = smoothstep(w, 0.0, abs(dist - travel)) * trail;\n let a = clamp(max(streak, blast * 0.4), 0.0, 1.0) * inten;\n let col = mix(cA, cB, clamp(h, 0.0, 1.0));\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxMagic(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let center = vec2<f32>(0.5, 0.5);\n let dv = p - center;\n let r = length(dv);\n let ang = atan2(dv.y, dv.x);\n let swirl = fbm(vec2<f32>(r * 8.0 * scl + time * 0.5, ang * 3.0 + time * 0.8), 4);\n let halo = smoothstep(0.5, 0.1, r) * 0.4 * dens;\n let wisp = smoothstep(1.0 - dens * 0.8, 1.5 - dens * 0.8, swirl) * (0.5 + 0.5 * sin(r * 20.0 * scl - time * 3.0));\n let a = clamp((halo + wisp * 0.8) * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(swirl, 0.0, 1.0));\n return vec4<f32>(col * 0.8 + vec3<f32>(1.0) * halo * 0.4, a);\n}\n\nfn fxLensFlare(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let center = vec2<f32>(0.5, 0.5);\n let dv = p - center;\n let r = length(dv) * scl;\n let ang = atan2(dv.y, dv.x);\n // Radial streak\n let streakCount = 2.0 * floor(1.0 + dens * 3.0);\n let streak = smoothstep(0.35, 0.6, fract(ang / 3.14159 * streakCount + 0.5)) * pow(1.0 - r, 3.0);\n // Concentric halos / chromatic rings\n let rings = (0.5 + 0.5 * sin(r * 40.0 - time * 2.0)) * dens;\n let core = smoothstep(0.25, 0.0, r);\n let chroma = mix(cA, cB, 0.5 + 0.5 * cos(ang * 3.0 + r * 30.0));\n let a = clamp((core * 0.9 + streak * 0.5 * dens + rings * 0.15 * (1.0 - r)) * inten, 0.0, 1.0);\n return vec4<f32>(chroma, a);\n}\n\nfn fxLightning(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Periodic bolt striking vertically, flickering briefly\n let period = mix(4.0, 0.6, clamp(dens, 0.0, 1.0));\n let cycle = fract(time / period);\n let flashWindow = mix(0.05, 0.35, clamp(dens, 0.0, 1.0));\n let flash = smoothstep(flashWindow, 0.0, cycle);\n \n let tFlicker = floor(time * 60.0);\n let flickerVal = tFlicker - 10000.0 * floor(tFlicker / 10000.0);\n let flicker = step(hash1(flickerVal * 1.7), 0.8); // rapid on/off shimmer\n\n // Jitter a vertical bolt with per-row hashes and interpolate between rows\n let rows = 18.0 * scl;\n let rg = p.y * rows;\n let row = floor(rg);\n let fr = fract(rg);\n \n let tLightning = floor(time * 24.0);\n let lightningVal = tLightning - 10000.0 * floor(tLightning / 10000.0);\n let x0 = 0.3 + 0.4 * hash1(row * 13.7 + lightningVal * 3.1);\n let x1 = 0.3 + 0.4 * hash1((row + 1.0) * 13.7 + lightningVal * 3.1);\n let boltX = mix(x0, x1, fr);\n\n // Secondary tiny forks\n let forkDrift = (hash1(row * 7.3) - 0.5) * 0.12 * smoothstep(0.0, 0.6, 1.0 - p.y);\n let boltDist = abs(p.x - (boltX + forkDrift)) * scl;\n let core = smoothstep(0.012, 0.0, boltDist);\n let glow = smoothstep(0.07, 0.0, boltDist) * 0.5;\n let a = clamp((core + glow) * flash * flicker * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(boltDist * 8.0, 0.0, 1.0) + 0.3 * flash);\n // Soft ambient flash behind the bolt\n let amb = smoothstep(0.35, 0.0, length(p - vec2<f32>(boltX, p.y)) * scl) * flash * 0.15;\n return vec4<f32>(col * (1.0 + amb), clamp(a + amb, 0.0, 1.0));\n}\n\nfn fxEnergyBeam(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let src = vec2<f32>(0.15, 0.5);\n let dirv = vec2<f32>(1.0, 0.0);\n let w = p - src;\n let along = dot(w, dirv) * scl;\n let perp = dot(w, vec2<f32>(-dirv.y, dirv.x)) * scl;\n let beamWidth = 0.01 + 0.03 * dens;\n let glowWidth = 0.05 + 0.1 * dens;\n let core = smoothstep(beamWidth, 0.0, abs(perp));\n let glow = smoothstep(glowWidth, 0.0, abs(perp)) * 0.4 * dens;\n let falloff = smoothstep(0.0, 1.0, along);\n let pulse = 0.7 + 0.3 * sin(along * 30.0 - time * 10.0);\n let a = clamp((core + glow) * falloff * pulse * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(along, 0.0, 1.0));\n return vec4<f32>(col * (1.0 + glow * 2.0), a);\n}\n\nfn fxAurora(p: vec2<f32>, seedOff: f32, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Northern lights: curtains hanging from a wavy band across the upper sky,\n // rippling sideways, with fine vertical rays. cA at the base, cB at the top.\n var acc = vec3<f32>(0.0);\n var keep = 1.0;\n for (var k = 0; k < 3; k++) {\n let fk = f32(k);\n let x = p.x * (1.0 + fk * 0.35) * scl * 1.5 + seedOff * 13.0 + fk * 3.1;\n // Curtain base line, a slow wave across the frame.\n let base = 0.42 + fk * 0.06 + 0.12 * (fbm(vec2<f32>(x * 1.3, time * 0.05 + fk), 3) - 0.5)\n + 0.05 * sin(x * 4.0 + time * 0.3 + fk);\n let h = 0.38 + 0.2 * fbm(vec2<f32>(x * 2.0 + 7.0, time * 0.04), 3);\n let d = base - p.y; // 0 at the base, rising upward\n let body = smoothstep(-0.06, 0.035, d) * pow(1.0 - smoothstep(0.0, h, d), 1.5);\n // Vertical rays drifting sideways.\n let rn = fbm(vec2<f32>(x * 40.0 + time * 0.3, d * 2.0 - time * 0.1), 3);\n let rays = 0.25 + 1.2 * rn * rn;\n let fold = 0.6 + 0.4 * sin(x * 9.0 + time * 0.5 + fbm(vec2<f32>(x * 3.0, time * 0.1), 2) * 6.0);\n let a = body * rays * fold * (1.0 - fk * 0.25);\n let col = mix(cA, cB, clamp(d / max(h, 1e-3), 0.0, 1.0));\n acc += col * a;\n keep *= 1.0 - clamp(a, 0.0, 1.0);\n }\n let alpha = 1.0 - keep;\n let a = clamp(alpha * (0.35 + 0.65 * dens) * inten * 1.4, 0.0, 1.0);\n return vec4<f32>(acc / max(alpha, 1e-3) * min(alpha * 2.0, 1.0), a);\n}\n\n// ---- main dispatch ---------------------------------------------------------\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n let density = get_field(u.density, u.hasSigDensity, densityTex, signalSamp);\n let scale = get_field(u.scale, u.hasSigScale, scaleTex, signalSamp);\n let speed = get_field(u.speed, u.hasSigSpeed, speedTex, signalSamp);\n let intensity = get_field(u.intensity, u.hasSigIntensity, intensityTex, signalSamp);\n let seed = get_field(u.seed, u.hasSigSeed, seedTex, signalSamp);\n\n let isVideo = u.outputType > 0.5;\n let time = select(0.0, u.time * max(speed, 1e-4), isVideo);\n let seedOff = fract(seed * 1.618033);\n\n // Aspect correction\n let uv = in.uv;\n let p = vec2<f32>(uv.x, uv.y);\n\n // Move to a seed-scrambled space so different seeds look different\n let sp = p + vec2<f32>(seedOff * 17.0, seedOff * 31.0);\n\n var eff = vec4<f32>(0.0, 0.0, 0.0, 0.0);\n let cA = u.colorStart.rgb;\n let cB = u.colorEnd.rgb;\n let scl = max(scale, 1e-4);\n let factor = scl * 100.0;\n\n if (u.effectType < 0.5) {\n eff = fxSmoke(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 1.5) {\n eff = fxFire(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 2.5) {\n eff = fxRain(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 3.5) {\n eff = fxSparks(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 4.5) {\n eff = fxSnow(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 5.5) {\n eff = fxDust(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 6.5) {\n eff = fxLightning(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 7.5) {\n eff = fxMagic(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 8.5) {\n eff = fxLensFlare(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 9.5) {\n eff = fxEmbers(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 10.5) {\n eff = fxEnergyBeam(sp, time, factor, density, intensity, cA, cB);\n } else {\n eff = fxAurora(p, seedOff, time, factor, density, intensity, cA, cB);\n }\n\n // Straight alpha is fine for compositing onto a transparent canvas.\n let a = clamp(eff.a, 0.0, 1.0);\n return vec4<f32>(clamp(eff.rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * a, a);\n}\n`;\nconst vfxUniformData = new Float32Array(24);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsignalsLayout: texturesLayout(device, 5),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getVFXResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `procedural_vfx_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst vfxModule = device.createShaderModule({\n\t\t\tlabel: `procedural_vfx_${format}.wgsl`,\n\t\t\tcode: VFX_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ProceduralVFXPipeline_${format}`,\n\t\t\tmodule: vfxModule,\n\t\t\tlayouts: [layouts.uniformLayout, layouts.signalsLayout],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tvfxPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsignalsLayout: layouts.signalsLayout\n\t};\n}\nfunction hexToRgba(hex) {\n\tlet h = hex.replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = h.split(\"\").map((c) => c + c).join(\"\");\n\tconst r = parseInt(h.substring(0, 2), 16) / 255;\n\tconst g = parseInt(h.substring(2, 4), 16) / 255;\n\tconst b = parseInt(h.substring(4, 6), 16) / 255;\n\tlet a = 1;\n\tif (h.length === 8) a = parseInt(h.substring(6, 8), 16) / 255;\n\treturn [\n\t\tr,\n\t\tg,\n\t\tb,\n\t\ta\n\t];\n}\nconst VFX_EFFECT_INDEX = {\n\tSmoke: 0,\n\tFire: 1,\n\tRain: 2,\n\tSparks: 3,\n\tSnow: 4,\n\tDust: 5,\n\tLightning: 6,\n\tMagic: 7,\n\tLensFlare: 8,\n\tEmbers: 9,\n\tEnergyBeam: 10,\n\tAurora: 11\n};\nconst ProceduralVFXWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ProceduralVFX\" || !op) return;\n\tconst { vfxPipeline: pipeline, uniformLayout: uLayout, signalsLayout: sigLayout } = getVFXResources(ctx.device, ctx.renderer.format);\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst densityInfo = resolveSignalField(op, \"density\", .6);\n\tconst scaleInfo = resolveSignalField(op, \"scale\", .01);\n\tconst speedInfo = resolveSignalField(op, \"speed\", 1);\n\tconst intensityInfo = resolveSignalField(op, \"intensity\", .8);\n\tconst seedInfo = resolveSignalField(op, \"seed\", 1234);\n\tconst effectIndex = VFX_EFFECT_INDEX[op.effectType ?? \"Smoke\"] ?? 0;\n\tconst outputTypeVal = op.outputType === \"Video\" ? 1 : 0;\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst colorStartVal = hexToRgba(op.colorStart ?? \"#ffffff\");\n\tconst colorEndVal = hexToRgba(op.colorEnd ?? \"#ff5500\");\n\tvfxUniformData[0] = effectIndex;\n\tvfxUniformData[1] = outputTypeVal;\n\tvfxUniformData[2] = elapsedSeconds;\n\tvfxUniformData[3] = 0;\n\tvfxUniformData[4] = densityInfo.value;\n\tvfxUniformData[5] = scaleInfo.value;\n\tvfxUniformData[6] = speedInfo.value;\n\tvfxUniformData[7] = intensityInfo.value;\n\tvfxUniformData[8] = seedInfo.value;\n\tvfxUniformData[9] = densityInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[10] = scaleInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[11] = speedInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[12] = intensityInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[13] = seedInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[14] = 0;\n\tvfxUniformData[15] = 0;\n\tvfxUniformData[16] = colorStartVal[0];\n\tvfxUniformData[17] = colorStartVal[1];\n\tvfxUniformData[18] = colorStartVal[2];\n\tvfxUniformData[19] = colorStartVal[3];\n\tvfxUniformData[20] = colorEndVal[0];\n\tvfxUniformData[21] = colorEndVal[1];\n\tvfxUniformData[22] = colorEndVal[2];\n\tvfxUniformData[23] = colorEndVal[3];\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(vfxUniformData);\n\tconst signalFields = [\n\t\t{\n\t\t\tname: \"density\",\n\t\t\tinfo: densityInfo\n\t\t},\n\t\t{\n\t\t\tname: \"scale\",\n\t\t\tinfo: scaleInfo\n\t\t},\n\t\t{\n\t\t\tname: \"speed\",\n\t\t\tinfo: speedInfo\n\t\t},\n\t\t{\n\t\t\tname: \"intensity\",\n\t\t\tinfo: intensityInfo\n\t\t},\n\t\t{\n\t\t\tname: \"seed\",\n\t\t\tinfo: seedInfo\n\t\t}\n\t];\n\tconst signalViews = [];\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tfor (const f of signalFields) if (!!(f.info.hasSignal && f.info.sd)) {\n\t\tconst view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd?.nodeId ?? `procedural_vfx_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, targetWidth, targetHeight, props.renderId, frame, fps);\n\t\tsignalViews.push(view);\n\t} else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));\n\tpass.setPipeline(pipeline);\n\tpass.setBindGroup(0, ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t}));\n\tpass.setBindGroup(1, ctx.device.createBindGroup({\n\t\tlayout: sigLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: signalViews[0]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: signalViews[1]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: signalViews[2]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: signalViews[3]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: signalViews[4]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t}));\n\tpass.draw(4);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ProceduralVFXWebGPURenderer });\n\n//#endregion\nexport { ProceduralVFXWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-DiW7Lt7Y.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-4ZUv3X1I.mjs","names":[],"sources":["../../../nodes/node-procedural-vfx/dist/renderers-DiW7Lt7Y.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveSignalField } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, fragmentBindGroupLayout, perDevice, signalTiming, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst VFX_SHADER = `\nstruct VFXUniforms {\n effectType : f32,\n outputType : f32,\n time : f32,\n _pad0 : f32,\n\n density : f32,\n scale : f32,\n speed : f32,\n intensity : f32,\n\n seed : f32,\n hasSigDensity : f32,\n hasSigScale : f32,\n hasSigSpeed : f32,\n\n hasSigIntensity : f32,\n hasSigSeed : f32,\n _pad1 : f32,\n _pad2 : f32,\n\n colorStart : vec4<f32>,\n colorEnd : vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u : VFXUniforms;\n\n@group(1) @binding(0) var densityTex : texture_2d<f32>;\n@group(1) @binding(1) var scaleTex : texture_2d<f32>;\n@group(1) @binding(2) var speedTex : texture_2d<f32>;\n@group(1) @binding(3) var intensityTex : texture_2d<f32>;\n@group(1) @binding(4) var seedTex : texture_2d<f32>;\n@group(1) @binding(5) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n// ---- hashing & noise primitives -------------------------------------------\nfn hash21(p: vec2<f32>) -> vec2<f32> {\n let p3 = fract(vec3<f32>(p.xyx) * vec3<f32>(0.1031, 0.1030, 0.0973));\n let p4 = p3 + dot(p3, p3.yzx + 33.33);\n return fract((p4.xx + p4.yz) * p4.zy);\n}\n\nfn hash1(n: f32) -> f32 {\n return fract(sin(n) * 43758.5453);\n}\n\nfn valueNoise(p: vec2<f32>) -> f32 {\n let i = floor(p);\n let f = fract(p);\n let u = f * f * (3.0 - 2.0 * f);\n let a = hash1(dot(i, vec2<f32>(127.1, 311.7)));\n let b = hash1(dot(i + vec2<f32>(1.0, 0.0), vec2<f32>(127.1, 311.7)));\n let c = hash1(dot(i + vec2<f32>(0.0, 1.0), vec2<f32>(127.1, 311.7)));\n let d = hash1(dot(i + vec2<f32>(1.0, 1.0), vec2<f32>(127.1, 311.7)));\n return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);\n}\n\nfn fbm(p: vec2<f32>, octaves: i32) -> f32 {\n var value = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n for (var i = 0; i < 8; i++) {\n if (i >= octaves) { break; }\n value += amp * valueNoise(p * freq);\n freq *= 2.0;\n amp *= 0.5;\n }\n return value;\n}\n\nfn get_field(val: f32, hasSig: f32, tex: texture_2d<f32>, samp: sampler) -> f32 {\n if (hasSig > 0.5) {\n return textureSampleLevel(tex, samp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n return val;\n}\n\n// ---- effect synthesizers (return straight-alpha RGBA) ----------------------\nfn fxSmoke(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let sp = p * scl;\n // Domain-warped FBM gives structured puffs instead of a solid fill.\n let q = vec2<f32>(fbm(sp + time * 0.10, 4), fbm(sp + vec2<f32>(5.2, 1.3) + time * 0.08, 4));\n let f = fbm(sp + 4.0 * q + vec2<f32>(1.7, 9.2) + time * 0.05, 4); // ~[0, 0.94]\n // Billowing plume: denser at the base (bottom, p.y=0), dissipating toward the top.\n let vgrad = 1.0 - smoothstep(0.45, 0.9, p.y);\n let n = f * 2.0 - 1.0; // remap to [-1, 1]\n // Thresholded so only bright fbm patches are opaque -> reads as puffs, not solid.\n let cov = smoothstep(0.28, 0.6, n) * dens * (0.25 + 0.75 * vgrad);\n let alpha = cov * inten;\n let col = mix(cB * 0.35, cA, clamp(f + vgrad * 0.5, 0.0, 1.0));\n return vec4<f32>(col, clamp(alpha, 0.0, 1.0));\n}\n\nfn fxFire(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let pn = vec2<f32>(p.x * 1.5, p.y) * scl;\n let n = fbm(pn * 6.0 + vec2<f32>(time * 2.0, time * 3.0), 4);\n // Heat concentrated near base, flickering upward\n let heat = n * smoothstep(1.0, 0.0 + (1.0 - dens) * 0.3, p.y);\n // Channeled vertical columns\n let columns = smoothstep(0.45, 0.9, n + 0.4 * sin(p.x * (20.0 + 40.0 * dens) * scl + time * 8.0));\n let d = clamp(heat * inten + columns * 0.3 * inten, 0.0, 1.0);\n // Fire color ramp mapped dynamically to cA and cB\n let dark = cB * 0.15;\n let orange = cB;\n let yellow = mix(cB, cA, 0.5);\n let white = cA;\n var col = mix(dark, orange, smoothstep(0.0, 0.4, d));\n col = mix(col, yellow, smoothstep(0.4, 0.75, d));\n col = mix(col, white, smoothstep(0.75, 1.0, d));\n let alpha = smoothstep(0.0, 0.3, d) * inten;\n return vec4<f32>(col, clamp(alpha, 0.0, 1.0));\n}\n\nfn fxRain(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (60.0 * dens + 4.0) * scl;\n let gx = floor(p.x * n);\n let h = hash1(gx);\n let speed = 0.8 + h;\n let yFrac = fract(p.y * 8.0 - time * speed);\n let dropY = abs(yFrac - 0.5);\n let reveal = step(0.35, yFrac);\n let st = smoothstep(0.18, 0.02, dropY);\n let d = st * reveal;\n let g = smoothstep(0.18, 0.02, abs(fract(p.x * n) + h * 0.2 - 0.5));\n let a = d * g * inten;\n let col = mix(cA, cB, h);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxSnow(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (50.0 * dens + 6.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let center = vec2<f32>(0.5, 0.5) + 0.3 * hash21(cell + 7.0);\n let sway = 0.1 * sin(time * 1.2 + cell.y * 3.0);\n // Fall downward (toward p.y=0, the bottom): subtract an advancing phase.\n let fall = fract(time * (0.25 + 0.45 * h.y) + h.x);\n let pos = vec2<f32>(f.x - center.x - sway, f.y - center.y) - vec2<f32>(0.0, fall);\n let d = length(pos);\n let size = 0.05 + 0.07 * h.x;\n let a = smoothstep(size, size * 0.4, d) * inten;\n let col = mix(cA, cB, h.x);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxDust(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (90.0 * dens + 6.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let center = h;\n let drift = fract(time * 0.05 * (0.5 + h.y) + cell.x * 0.01);\n let pos = vec2<f32>(f.x - center.x, f.y - center.y) + vec2<f32>((drift - 0.5) * 0.03, 0.0);\n let d = length(pos);\n let a = smoothstep(0.12, 0.0, d) * smoothstep(0.0, 0.3, dens) * inten * 0.6;\n let col = mix(cA, cB, h.y);\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxEmbers(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let n = (50.0 * dens + 4.0) * scl;\n let cell = floor(p * n);\n let f = fract(p * n);\n let h = hash21(cell);\n let sway = 0.12 * sin(time * 2.0 + cell.y * 2.0);\n let rise = fract(time * 0.18 * (0.7 + h.y) + cell.y * 0.12);\n // Rising: as rise grows, move toward p.y=1 (top).\n let pos = vec2<f32>(f.x - 0.5 - sway, f.y + rise * 1.2);\n let d = length(pos);\n let a = smoothstep(0.12, 0.0, d) * (1.0 - rise) * inten;\n let col = mix(cA, cB, clamp(rise, 0.0, 1.0));\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxSparks(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Burst radiating from a low-center source; travel grows over time so it expands outward.\n let src = vec2<f32>(0.5, 0.15);\n let dir = p - src;\n let dist = length(dir);\n let ang = atan2(dir.y, dir.x);\n let n = (20.0 * dens + 5.0) * scl;\n let seg = floor(ang * n);\n let tFrame = floor(time * 3.0);\n let timeVal = tFrame - 10000.0 * floor(tFrame / 10000.0);\n let h = hash1(seg + timeVal * 97.0);\n let launch = fract(0.5 + h + time * 0.5);\n let travel = launch * 0.8;\n let trail = smoothstep(0.9, 0.4, dist - travel);\n let w = 0.02 + 0.02 * h;\n let blast = smoothstep(0.0, w * 2.0, dist - travel) * trail;\n let streak = smoothstep(w, 0.0, abs(dist - travel)) * trail;\n let a = clamp(max(streak, blast * 0.4), 0.0, 1.0) * inten;\n let col = mix(cA, cB, clamp(h, 0.0, 1.0));\n return vec4<f32>(col, clamp(a, 0.0, 1.0));\n}\n\nfn fxMagic(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let center = vec2<f32>(0.5, 0.5);\n let dv = p - center;\n let r = length(dv);\n let ang = atan2(dv.y, dv.x);\n let swirl = fbm(vec2<f32>(r * 8.0 * scl + time * 0.5, ang * 3.0 + time * 0.8), 4);\n let halo = smoothstep(0.5, 0.1, r) * 0.4 * dens;\n let wisp = smoothstep(1.0 - dens * 0.8, 1.5 - dens * 0.8, swirl) * (0.5 + 0.5 * sin(r * 20.0 * scl - time * 3.0));\n let a = clamp((halo + wisp * 0.8) * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(swirl, 0.0, 1.0));\n return vec4<f32>(col * 0.8 + vec3<f32>(1.0) * halo * 0.4, a);\n}\n\nfn fxLensFlare(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let center = vec2<f32>(0.5, 0.5);\n let dv = p - center;\n let r = length(dv) * scl;\n let ang = atan2(dv.y, dv.x);\n // Radial streak\n let streakCount = 2.0 * floor(1.0 + dens * 3.0);\n let streak = smoothstep(0.35, 0.6, fract(ang / 3.14159 * streakCount + 0.5)) * pow(1.0 - r, 3.0);\n // Concentric halos / chromatic rings\n let rings = (0.5 + 0.5 * sin(r * 40.0 - time * 2.0)) * dens;\n let core = smoothstep(0.25, 0.0, r);\n let chroma = mix(cA, cB, 0.5 + 0.5 * cos(ang * 3.0 + r * 30.0));\n let a = clamp((core * 0.9 + streak * 0.5 * dens + rings * 0.15 * (1.0 - r)) * inten, 0.0, 1.0);\n return vec4<f32>(chroma, a);\n}\n\nfn fxLightning(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Periodic bolt striking vertically, flickering briefly\n let period = mix(4.0, 0.6, clamp(dens, 0.0, 1.0));\n let cycle = fract(time / period);\n let flashWindow = mix(0.05, 0.35, clamp(dens, 0.0, 1.0));\n let flash = smoothstep(flashWindow, 0.0, cycle);\n \n let tFlicker = floor(time * 60.0);\n let flickerVal = tFlicker - 10000.0 * floor(tFlicker / 10000.0);\n let flicker = step(hash1(flickerVal * 1.7), 0.8); // rapid on/off shimmer\n\n // Jitter a vertical bolt with per-row hashes and interpolate between rows\n let rows = 18.0 * scl;\n let rg = p.y * rows;\n let row = floor(rg);\n let fr = fract(rg);\n \n let tLightning = floor(time * 24.0);\n let lightningVal = tLightning - 10000.0 * floor(tLightning / 10000.0);\n let x0 = 0.3 + 0.4 * hash1(row * 13.7 + lightningVal * 3.1);\n let x1 = 0.3 + 0.4 * hash1((row + 1.0) * 13.7 + lightningVal * 3.1);\n let boltX = mix(x0, x1, fr);\n\n // Secondary tiny forks\n let forkDrift = (hash1(row * 7.3) - 0.5) * 0.12 * smoothstep(0.0, 0.6, 1.0 - p.y);\n let boltDist = abs(p.x - (boltX + forkDrift)) * scl;\n let core = smoothstep(0.012, 0.0, boltDist);\n let glow = smoothstep(0.07, 0.0, boltDist) * 0.5;\n let a = clamp((core + glow) * flash * flicker * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(boltDist * 8.0, 0.0, 1.0) + 0.3 * flash);\n // Soft ambient flash behind the bolt\n let amb = smoothstep(0.35, 0.0, length(p - vec2<f32>(boltX, p.y)) * scl) * flash * 0.15;\n return vec4<f32>(col * (1.0 + amb), clamp(a + amb, 0.0, 1.0));\n}\n\nfn fxEnergyBeam(p: vec2<f32>, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n let src = vec2<f32>(0.15, 0.5);\n let dirv = vec2<f32>(1.0, 0.0);\n let w = p - src;\n let along = dot(w, dirv) * scl;\n let perp = dot(w, vec2<f32>(-dirv.y, dirv.x)) * scl;\n let beamWidth = 0.01 + 0.03 * dens;\n let glowWidth = 0.05 + 0.1 * dens;\n let core = smoothstep(beamWidth, 0.0, abs(perp));\n let glow = smoothstep(glowWidth, 0.0, abs(perp)) * 0.4 * dens;\n let falloff = smoothstep(0.0, 1.0, along);\n let pulse = 0.7 + 0.3 * sin(along * 30.0 - time * 10.0);\n let a = clamp((core + glow) * falloff * pulse * inten, 0.0, 1.0);\n let col = mix(cA, cB, clamp(along, 0.0, 1.0));\n return vec4<f32>(col * (1.0 + glow * 2.0), a);\n}\n\nfn fxAurora(p: vec2<f32>, seedOff: f32, time: f32, scl: f32, dens: f32, inten: f32, cA: vec3<f32>, cB: vec3<f32>) -> vec4<f32> {\n // Northern lights: curtains hanging from a wavy band across the upper sky,\n // rippling sideways, with fine vertical rays. cA at the base, cB at the top.\n var acc = vec3<f32>(0.0);\n var keep = 1.0;\n for (var k = 0; k < 3; k++) {\n let fk = f32(k);\n let x = p.x * (1.0 + fk * 0.35) * scl * 1.5 + seedOff * 13.0 + fk * 3.1;\n // Curtain base line, a slow wave across the frame.\n let base = 0.42 + fk * 0.06 + 0.12 * (fbm(vec2<f32>(x * 1.3, time * 0.05 + fk), 3) - 0.5)\n + 0.05 * sin(x * 4.0 + time * 0.3 + fk);\n let h = 0.38 + 0.2 * fbm(vec2<f32>(x * 2.0 + 7.0, time * 0.04), 3);\n let d = base - p.y; // 0 at the base, rising upward\n let body = smoothstep(-0.06, 0.035, d) * pow(1.0 - smoothstep(0.0, h, d), 1.5);\n // Vertical rays drifting sideways.\n let rn = fbm(vec2<f32>(x * 40.0 + time * 0.3, d * 2.0 - time * 0.1), 3);\n let rays = 0.25 + 1.2 * rn * rn;\n let fold = 0.6 + 0.4 * sin(x * 9.0 + time * 0.5 + fbm(vec2<f32>(x * 3.0, time * 0.1), 2) * 6.0);\n let a = body * rays * fold * (1.0 - fk * 0.25);\n let col = mix(cA, cB, clamp(d / max(h, 1e-3), 0.0, 1.0));\n acc += col * a;\n keep *= 1.0 - clamp(a, 0.0, 1.0);\n }\n let alpha = 1.0 - keep;\n let a = clamp(alpha * (0.35 + 0.65 * dens) * inten * 1.4, 0.0, 1.0);\n return vec4<f32>(acc / max(alpha, 1e-3) * min(alpha * 2.0, 1.0), a);\n}\n\n// ---- main dispatch ---------------------------------------------------------\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n let density = get_field(u.density, u.hasSigDensity, densityTex, signalSamp);\n let scale = get_field(u.scale, u.hasSigScale, scaleTex, signalSamp);\n let speed = get_field(u.speed, u.hasSigSpeed, speedTex, signalSamp);\n let intensity = get_field(u.intensity, u.hasSigIntensity, intensityTex, signalSamp);\n let seed = get_field(u.seed, u.hasSigSeed, seedTex, signalSamp);\n\n let isVideo = u.outputType > 0.5;\n let time = select(0.0, u.time * max(speed, 1e-4), isVideo);\n let seedOff = fract(seed * 1.618033);\n\n // Aspect correction\n let uv = in.uv;\n let p = vec2<f32>(uv.x, uv.y);\n\n // Move to a seed-scrambled space so different seeds look different\n let sp = p + vec2<f32>(seedOff * 17.0, seedOff * 31.0);\n\n var eff = vec4<f32>(0.0, 0.0, 0.0, 0.0);\n let cA = u.colorStart.rgb;\n let cB = u.colorEnd.rgb;\n let scl = max(scale, 1e-4);\n let factor = scl * 100.0;\n\n if (u.effectType < 0.5) {\n eff = fxSmoke(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 1.5) {\n eff = fxFire(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 2.5) {\n eff = fxRain(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 3.5) {\n eff = fxSparks(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 4.5) {\n eff = fxSnow(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 5.5) {\n eff = fxDust(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 6.5) {\n eff = fxLightning(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 7.5) {\n eff = fxMagic(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 8.5) {\n eff = fxLensFlare(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 9.5) {\n eff = fxEmbers(sp, time, factor, density, intensity, cA, cB);\n } else if (u.effectType < 10.5) {\n eff = fxEnergyBeam(sp, time, factor, density, intensity, cA, cB);\n } else {\n eff = fxAurora(p, seedOff, time, factor, density, intensity, cA, cB);\n }\n\n // Straight alpha is fine for compositing onto a transparent canvas.\n let a = clamp(eff.a, 0.0, 1.0);\n return vec4<f32>(clamp(eff.rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * a, a);\n}\n`;\nconst vfxUniformData = new Float32Array(24);\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsignalsLayout: texturesLayout(device, 5),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getVFXResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `procedural_vfx_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst vfxModule = device.createShaderModule({\n\t\t\tlabel: `procedural_vfx_${format}.wgsl`,\n\t\t\tcode: VFX_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `ProceduralVFXPipeline_${format}`,\n\t\t\tmodule: vfxModule,\n\t\t\tlayouts: [layouts.uniformLayout, layouts.signalsLayout],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tvfxPipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsignalsLayout: layouts.signalsLayout\n\t};\n}\nfunction hexToRgba(hex) {\n\tlet h = hex.replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = h.split(\"\").map((c) => c + c).join(\"\");\n\tconst r = parseInt(h.substring(0, 2), 16) / 255;\n\tconst g = parseInt(h.substring(2, 4), 16) / 255;\n\tconst b = parseInt(h.substring(4, 6), 16) / 255;\n\tlet a = 1;\n\tif (h.length === 8) a = parseInt(h.substring(6, 8), 16) / 255;\n\treturn [\n\t\tr,\n\t\tg,\n\t\tb,\n\t\ta\n\t];\n}\nconst VFX_EFFECT_INDEX = {\n\tSmoke: 0,\n\tFire: 1,\n\tRain: 2,\n\tSparks: 3,\n\tSnow: 4,\n\tDust: 5,\n\tLightning: 6,\n\tMagic: 7,\n\tLensFlare: 8,\n\tEmbers: 9,\n\tEnergyBeam: 10,\n\tAurora: 11\n};\nconst ProceduralVFXWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ProceduralVFX\" || !op) return;\n\tconst { vfxPipeline: pipeline, uniformLayout: uLayout, signalsLayout: sigLayout } = getVFXResources(ctx.device, ctx.renderer.format);\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst densityInfo = resolveSignalField(op, \"density\", .6);\n\tconst scaleInfo = resolveSignalField(op, \"scale\", .01);\n\tconst speedInfo = resolveSignalField(op, \"speed\", 1);\n\tconst intensityInfo = resolveSignalField(op, \"intensity\", .8);\n\tconst seedInfo = resolveSignalField(op, \"seed\", 1234);\n\tconst effectIndex = VFX_EFFECT_INDEX[op.effectType ?? \"Smoke\"] ?? 0;\n\tconst outputTypeVal = op.outputType === \"Video\" ? 1 : 0;\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst colorStartVal = hexToRgba(op.colorStart ?? \"#ffffff\");\n\tconst colorEndVal = hexToRgba(op.colorEnd ?? \"#ff5500\");\n\tvfxUniformData[0] = effectIndex;\n\tvfxUniformData[1] = outputTypeVal;\n\tvfxUniformData[2] = elapsedSeconds;\n\tvfxUniformData[3] = 0;\n\tvfxUniformData[4] = densityInfo.value;\n\tvfxUniformData[5] = scaleInfo.value;\n\tvfxUniformData[6] = speedInfo.value;\n\tvfxUniformData[7] = intensityInfo.value;\n\tvfxUniformData[8] = seedInfo.value;\n\tvfxUniformData[9] = densityInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[10] = scaleInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[11] = speedInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[12] = intensityInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[13] = seedInfo.hasSignal ? 1 : 0;\n\tvfxUniformData[14] = 0;\n\tvfxUniformData[15] = 0;\n\tvfxUniformData[16] = colorStartVal[0];\n\tvfxUniformData[17] = colorStartVal[1];\n\tvfxUniformData[18] = colorStartVal[2];\n\tvfxUniformData[19] = colorStartVal[3];\n\tvfxUniformData[20] = colorEndVal[0];\n\tvfxUniformData[21] = colorEndVal[1];\n\tvfxUniformData[22] = colorEndVal[2];\n\tvfxUniformData[23] = colorEndVal[3];\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(vfxUniformData);\n\tconst signalFields = [\n\t\t{\n\t\t\tname: \"density\",\n\t\t\tinfo: densityInfo\n\t\t},\n\t\t{\n\t\t\tname: \"scale\",\n\t\t\tinfo: scaleInfo\n\t\t},\n\t\t{\n\t\t\tname: \"speed\",\n\t\t\tinfo: speedInfo\n\t\t},\n\t\t{\n\t\t\tname: \"intensity\",\n\t\t\tinfo: intensityInfo\n\t\t},\n\t\t{\n\t\t\tname: \"seed\",\n\t\t\tinfo: seedInfo\n\t\t}\n\t];\n\tconst signalViews = [];\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tfor (const f of signalFields) if (!!(f.info.hasSignal && f.info.sd)) {\n\t\tconst view = signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, f.info.sd?.nodeId ?? `procedural_vfx_${f.name}_sig`, elapsedSeconds, durationSeconds, f.info.sd, targetWidth, targetHeight, props.renderId, frame, fps);\n\t\tsignalViews.push(view);\n\t} else signalViews.push(signalRegistry.getDummy1x1TextureView(ctx.device));\n\tpass.setPipeline(pipeline);\n\tpass.setBindGroup(0, ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t}));\n\tpass.setBindGroup(1, ctx.device.createBindGroup({\n\t\tlayout: sigLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: signalViews[0]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: signalViews[1]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: signalViews[2]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: signalViews[3]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: signalViews[4]\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t}));\n\tpass.draw(4);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ProceduralVFXWebGPURenderer });\n\n//#endregion\nexport { ProceduralVFXWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-DiW7Lt7Y.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./chunk-W71TSjRM.mjs";
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
3
|
-
import "./dist-
|
|
4
|
-
import { i as beginTargetPass, l as fragmentBindGroupLayout,
|
|
2
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
3
|
+
import "./dist-CWLLnigL.mjs";
|
|
4
|
+
import { i as beginTargetPass, l as fragmentBindGroupLayout, o as drawChildToTexture, p as texturesLayout, t as FULLSCREEN_QUAD_WGSL } from "./gpu-CpkJJLQP.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs
|
|
7
7
|
const COLOR_SPACE_MAP = {
|
|
@@ -290,4 +290,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURend
|
|
|
290
290
|
|
|
291
291
|
//#endregion
|
|
292
292
|
export { ChannelMergerWebGPURenderer, renderers_default as default };
|
|
293
|
-
//# sourceMappingURL=renderer-
|
|
293
|
+
//# sourceMappingURL=renderer-50JEMaVo.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-BT4im6c0.mjs","names":[],"sources":["../../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, beginTargetPass, drawChildToTexture, fragmentBindGroupLayout, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLOR_SPACE_MAP = {\n\tRGBA: 0,\n\tHSLA: 1,\n\tCMYK: 2,\n\tLAB: 3\n};\nconst WGSL_CHANNEL_MERGER = `\nstruct MergerUniforms {\n\tcolorSpace : f32, // 0=RGBA, 1=HSLA, 2=CMYK, 3=LAB\n\thasCh4 : f32, // 0 or 1\n\tdefaultCh4 : f32, // fallback value (1.0 for alpha, 0.0 for CMYK black)\n\t_pad0 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : MergerUniforms;\n@group(1) @binding(0) var tex1 : texture_2d<f32>;\n@group(1) @binding(1) var tex2 : texture_2d<f32>;\n@group(1) @binding(2) var tex3 : texture_2d<f32>;\n@group(1) @binding(3) var tex4 : texture_2d<f32>;\n@group(1) @binding(4) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hue2rgb(p: f32, q: f32, t_in: f32) -> f32 {\n\tvar t = t_in;\n\tif (t < 0.0) { t = t + 1.0; }\n\tif (t > 1.0) { t = t - 1.0; }\n\tif (t < 1.0 / 6.0) { return p + (q - p) * 6.0 * t; }\n\tif (t < 1.0 / 2.0) { return q; }\n\tif (t < 2.0 / 3.0) { return p + (q - p) * (2.0 / 3.0 - t) * 6.0; }\n\treturn p;\n}\n\nfn hsl2rgb(h: f32, s: f32, l: f32) -> vec3<f32> {\n\tif (s <= 0.00001) {\n\t\treturn vec3<f32>(l, l, l);\n\t}\n\tlet q = select(l + s - l * s, l * (1.0 + s), l < 0.5);\n\tlet p = 2.0 * l - q;\n\tlet r = hue2rgb(p, q, h + 1.0 / 3.0);\n\tlet g = hue2rgb(p, q, h);\n\tlet b = hue2rgb(p, q, h - 1.0 / 3.0);\n\treturn vec3<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0));\n}\n\nfn inv_lab_f(t: f32) -> f32 {\n\tlet t3 = t * t * t;\n\treturn select((t - 16.0 / 116.0) / 7.787, t3, t3 > 0.008856);\n}\n\nfn lin2srgb(v: f32) -> f32 {\n\tlet c = clamp(v, 0.0, 1.0);\n\treturn select(c * 12.92, 1.055 * pow(c, 1.0 / 2.4) - 0.055, c > 0.0031308);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tlet c1 = textureSample(tex1, samp, in.uv);\n\tlet c2 = textureSample(tex2, samp, in.uv);\n\tlet c3 = textureSample(tex3, samp, in.uv);\n\tlet c4 = textureSample(tex4, samp, in.uv);\n\n\tlet v1 = c1.r;\n\tlet v2 = c2.r;\n\tlet v3 = c3.r;\n\tlet v4 = select(u.defaultCh4, c4.r, u.hasCh4 > 0.5);\n\n\tlet cs = u32(u.colorSpace + 0.5);\n\n\tif (cs == 0u) { // RGBA\n\t\treturn vec4<f32>(clamp(v1, 0.0, 1.0), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0), clamp(v4, 0.0, 1.0));\n\t} else if (cs == 1u) { // HSLA\n\t\tlet rgb = hsl2rgb(fract(v1), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0));\n\t\treturn vec4<f32>(rgb, clamp(v4, 0.0, 1.0));\n\t} else if (cs == 2u) { // CMYK\n\t\tlet C = clamp(v1, 0.0, 1.0);\n\t\tlet M = clamp(v2, 0.0, 1.0);\n\t\tlet Y = clamp(v3, 0.0, 1.0);\n\t\tlet K = clamp(v4, 0.0, 1.0);\n\t\tlet r = (1.0 - C) * (1.0 - K);\n\t\tlet g = (1.0 - M) * (1.0 - K);\n\t\tlet b = (1.0 - Y) * (1.0 - K);\n\t\treturn vec4<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0), 1.0);\n\t} else { // LAB\n\t\tlet L_norm = clamp(v1, 0.0, 1.0);\n\t\tlet a_norm = clamp(v2, 0.0, 1.0);\n\t\tlet b_norm = clamp(v3, 0.0, 1.0);\n\n\t\tlet L_star = L_norm * 100.0;\n\t\tlet a_star = a_norm * 255.0 - 128.0;\n\t\tlet b_star = b_norm * 255.0 - 128.0;\n\n\t\tlet fy = (L_star + 16.0) / 116.0;\n\t\tlet fx = fy + a_star / 500.0;\n\t\tlet fz = fy - b_star / 200.0;\n\n\t\tlet x = inv_lab_f(fx);\n\t\tlet y = inv_lab_f(fy);\n\t\tlet z = inv_lab_f(fz);\n\n\t\tlet X = x * 0.95047;\n\t\tlet Y = y * 1.00000;\n\t\tlet Z = z * 1.08883;\n\n\t\tlet lr = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n\t\tlet lg = -0.9692660 * X + 1.8760108 * Y + 0.0415560 * Z;\n\t\tlet lb = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n\n\t\treturn vec4<f32>(lin2srgb(lr), lin2srgb(lg), lin2srgb(lb), clamp(v4, 0.0, 1.0));\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst uniformData = new Float32Array(4);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\t\ttextureLayout: texturesLayout(device, 4),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getPipeline(device, format) {\n\tconst resources = getDeviceLayouts(device);\n\tconst key = `merger_${format}`;\n\tlet pipeline = resources.pipelineCache.get(key);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"ChannelMergerShader\",\n\t\t\tcode: WGSL_CHANNEL_MERGER\n\t\t});\n\t\tconst layout = device.createPipelineLayout({ bindGroupLayouts: [resources.uniformLayout, resources.textureLayout] });\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: \"ChannelMergerPipeline\",\n\t\t\tlayout,\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tresources.pipelineCache.set(key, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tresources\n\t};\n}\nconst ChannelMergerWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ChannelMerger\" || !op) return;\n\tconst ch1Media = op.channel1Media ?? props.virtualMedia.children?.[0];\n\tconst ch2Media = op.channel2Media;\n\tconst ch3Media = op.channel3Media;\n\tconst ch4Media = op.channel4Media;\n\tif (!ch1Media || !ch2Media || !ch3Media) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tex1, view: view1 } = await drawChildToTexture(args, ch1Media, { props: {\n\t\t...props,\n\t\tvirtualMedia: ch1Media,\n\t\trenderId: `${props.renderId}-ch1`\n\t} });\n\targs.pass.end();\n\tconst { texture: tex2, view: view2 } = await drawChildToTexture(args, ch2Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch2Media,\n\t\t\trenderId: `${props.renderId}-ch2`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tex1]\n\t\t},\n\t\texclude: [tex1]\n\t});\n\targs.pass.end();\n\tconst { texture: tex3, view: view3 } = await drawChildToTexture(args, ch3Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch3Media,\n\t\t\trenderId: `${props.renderId}-ch3`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2\n\t\t\t]\n\t\t},\n\t\texclude: [tex1, tex2]\n\t});\n\targs.pass.end();\n\tconst tex4 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\ttargetTexture,\n\t\ttex1,\n\t\ttex2,\n\t\ttex3\n\t]);\n\tconst view4 = tex4.createView();\n\tctx.renderer.beginFrame(encoder, view4, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tconst hasCh4 = ch4Media ? 1 : 0;\n\tif (ch4Media) {\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait drawChild(ch4Media, {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch4Media,\n\t\t\trenderId: `${props.renderId}-ch4`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2,\n\t\t\t\ttex3,\n\t\t\t\ttex4\n\t\t\t]\n\t\t}, view4, tex4, width, height);\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\targs.pass.end();\n\t}\n\tconst colorSpace = op.colorSpace ?? \"RGBA\";\n\tconst defaultCh4 = op.defaultChannel4 ?? (colorSpace === \"CMYK\" ? 0 : 1);\n\tuniformData[0] = COLOR_SPACE_MAP[colorSpace] ?? 0;\n\tuniformData[1] = hasCh4;\n\tuniformData[2] = defaultCh4;\n\tuniformData[3] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst { pipeline, resources } = getPipeline(ctx.device, targetTexture.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.textureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: view1\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: view2\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: view3\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: view4\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst finalPass = beginTargetPass(args);\n\tfinalPass.setPipeline(pipeline);\n\tfinalPass.setBindGroup(0, uniformBindGroup);\n\tfinalPass.setBindGroup(1, textureBindGroup);\n\tfinalPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURenderer });\n\n//#endregion\nexport { ChannelMergerWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-CFuJvvvy.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-50JEMaVo.mjs","names":[],"sources":["../../../nodes/node-channel-merger/dist/renderers-CFuJvvvy.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, beginTargetPass, drawChildToTexture, fragmentBindGroupLayout, texturesLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst COLOR_SPACE_MAP = {\n\tRGBA: 0,\n\tHSLA: 1,\n\tCMYK: 2,\n\tLAB: 3\n};\nconst WGSL_CHANNEL_MERGER = `\nstruct MergerUniforms {\n\tcolorSpace : f32, // 0=RGBA, 1=HSLA, 2=CMYK, 3=LAB\n\thasCh4 : f32, // 0 or 1\n\tdefaultCh4 : f32, // fallback value (1.0 for alpha, 0.0 for CMYK black)\n\t_pad0 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : MergerUniforms;\n@group(1) @binding(0) var tex1 : texture_2d<f32>;\n@group(1) @binding(1) var tex2 : texture_2d<f32>;\n@group(1) @binding(2) var tex3 : texture_2d<f32>;\n@group(1) @binding(3) var tex4 : texture_2d<f32>;\n@group(1) @binding(4) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn hue2rgb(p: f32, q: f32, t_in: f32) -> f32 {\n\tvar t = t_in;\n\tif (t < 0.0) { t = t + 1.0; }\n\tif (t > 1.0) { t = t - 1.0; }\n\tif (t < 1.0 / 6.0) { return p + (q - p) * 6.0 * t; }\n\tif (t < 1.0 / 2.0) { return q; }\n\tif (t < 2.0 / 3.0) { return p + (q - p) * (2.0 / 3.0 - t) * 6.0; }\n\treturn p;\n}\n\nfn hsl2rgb(h: f32, s: f32, l: f32) -> vec3<f32> {\n\tif (s <= 0.00001) {\n\t\treturn vec3<f32>(l, l, l);\n\t}\n\tlet q = select(l + s - l * s, l * (1.0 + s), l < 0.5);\n\tlet p = 2.0 * l - q;\n\tlet r = hue2rgb(p, q, h + 1.0 / 3.0);\n\tlet g = hue2rgb(p, q, h);\n\tlet b = hue2rgb(p, q, h - 1.0 / 3.0);\n\treturn vec3<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0));\n}\n\nfn inv_lab_f(t: f32) -> f32 {\n\tlet t3 = t * t * t;\n\treturn select((t - 16.0 / 116.0) / 7.787, t3, t3 > 0.008856);\n}\n\nfn lin2srgb(v: f32) -> f32 {\n\tlet c = clamp(v, 0.0, 1.0);\n\treturn select(c * 12.92, 1.055 * pow(c, 1.0 / 2.4) - 0.055, c > 0.0031308);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tlet c1 = textureSample(tex1, samp, in.uv);\n\tlet c2 = textureSample(tex2, samp, in.uv);\n\tlet c3 = textureSample(tex3, samp, in.uv);\n\tlet c4 = textureSample(tex4, samp, in.uv);\n\n\tlet v1 = c1.r;\n\tlet v2 = c2.r;\n\tlet v3 = c3.r;\n\tlet v4 = select(u.defaultCh4, c4.r, u.hasCh4 > 0.5);\n\n\tlet cs = u32(u.colorSpace + 0.5);\n\n\tif (cs == 0u) { // RGBA\n\t\treturn vec4<f32>(clamp(v1, 0.0, 1.0), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0), clamp(v4, 0.0, 1.0));\n\t} else if (cs == 1u) { // HSLA\n\t\tlet rgb = hsl2rgb(fract(v1), clamp(v2, 0.0, 1.0), clamp(v3, 0.0, 1.0));\n\t\treturn vec4<f32>(rgb, clamp(v4, 0.0, 1.0));\n\t} else if (cs == 2u) { // CMYK\n\t\tlet C = clamp(v1, 0.0, 1.0);\n\t\tlet M = clamp(v2, 0.0, 1.0);\n\t\tlet Y = clamp(v3, 0.0, 1.0);\n\t\tlet K = clamp(v4, 0.0, 1.0);\n\t\tlet r = (1.0 - C) * (1.0 - K);\n\t\tlet g = (1.0 - M) * (1.0 - K);\n\t\tlet b = (1.0 - Y) * (1.0 - K);\n\t\treturn vec4<f32>(clamp(r, 0.0, 1.0), clamp(g, 0.0, 1.0), clamp(b, 0.0, 1.0), 1.0);\n\t} else { // LAB\n\t\tlet L_norm = clamp(v1, 0.0, 1.0);\n\t\tlet a_norm = clamp(v2, 0.0, 1.0);\n\t\tlet b_norm = clamp(v3, 0.0, 1.0);\n\n\t\tlet L_star = L_norm * 100.0;\n\t\tlet a_star = a_norm * 255.0 - 128.0;\n\t\tlet b_star = b_norm * 255.0 - 128.0;\n\n\t\tlet fy = (L_star + 16.0) / 116.0;\n\t\tlet fx = fy + a_star / 500.0;\n\t\tlet fz = fy - b_star / 200.0;\n\n\t\tlet x = inv_lab_f(fx);\n\t\tlet y = inv_lab_f(fy);\n\t\tlet z = inv_lab_f(fz);\n\n\t\tlet X = x * 0.95047;\n\t\tlet Y = y * 1.00000;\n\t\tlet Z = z * 1.08883;\n\n\t\tlet lr = 3.2404542 * X - 1.5371385 * Y - 0.4985314 * Z;\n\t\tlet lg = -0.9692660 * X + 1.8760108 * Y + 0.0415560 * Z;\n\t\tlet lb = 0.0556434 * X - 0.2040259 * Y + 1.0572252 * Z;\n\n\t\treturn vec4<f32>(lin2srgb(lr), lin2srgb(lg), lin2srgb(lb), clamp(v4, 0.0, 1.0));\n\t}\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst uniformData = new Float32Array(4);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\t\ttextureLayout: texturesLayout(device, 4),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getPipeline(device, format) {\n\tconst resources = getDeviceLayouts(device);\n\tconst key = `merger_${format}`;\n\tlet pipeline = resources.pipelineCache.get(key);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"ChannelMergerShader\",\n\t\t\tcode: WGSL_CHANNEL_MERGER\n\t\t});\n\t\tconst layout = device.createPipelineLayout({ bindGroupLayouts: [resources.uniformLayout, resources.textureLayout] });\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: \"ChannelMergerPipeline\",\n\t\t\tlayout,\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tresources.pipelineCache.set(key, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tresources\n\t};\n}\nconst ChannelMergerWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ChannelMerger\" || !op) return;\n\tconst ch1Media = op.channel1Media ?? props.virtualMedia.children?.[0];\n\tconst ch2Media = op.channel2Media;\n\tconst ch3Media = op.channel3Media;\n\tconst ch4Media = op.channel4Media;\n\tif (!ch1Media || !ch2Media || !ch3Media) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tex1, view: view1 } = await drawChildToTexture(args, ch1Media, { props: {\n\t\t...props,\n\t\tvirtualMedia: ch1Media,\n\t\trenderId: `${props.renderId}-ch1`\n\t} });\n\targs.pass.end();\n\tconst { texture: tex2, view: view2 } = await drawChildToTexture(args, ch2Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch2Media,\n\t\t\trenderId: `${props.renderId}-ch2`,\n\t\t\texcludeTextures: [...props.excludeTextures || [], tex1]\n\t\t},\n\t\texclude: [tex1]\n\t});\n\targs.pass.end();\n\tconst { texture: tex3, view: view3 } = await drawChildToTexture(args, ch3Media, {\n\t\tprops: {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch3Media,\n\t\t\trenderId: `${props.renderId}-ch3`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2\n\t\t\t]\n\t\t},\n\t\texclude: [tex1, tex2]\n\t});\n\targs.pass.end();\n\tconst tex4 = ctx.renderer.getTemporaryTexture(width, height, [\n\t\t...props.excludeTextures || [],\n\t\ttargetTexture,\n\t\ttex1,\n\t\ttex2,\n\t\ttex3\n\t]);\n\tconst view4 = tex4.createView();\n\tctx.renderer.beginFrame(encoder, view4, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tconst hasCh4 = ch4Media ? 1 : 0;\n\tif (ch4Media) {\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait drawChild(ch4Media, {\n\t\t\t...props,\n\t\t\tvirtualMedia: ch4Media,\n\t\t\trenderId: `${props.renderId}-ch4`,\n\t\t\texcludeTextures: [\n\t\t\t\t...props.excludeTextures || [],\n\t\t\t\ttex1,\n\t\t\t\ttex2,\n\t\t\t\ttex3,\n\t\t\t\ttex4\n\t\t\t]\n\t\t}, view4, tex4, width, height);\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\targs.pass.end();\n\t}\n\tconst colorSpace = op.colorSpace ?? \"RGBA\";\n\tconst defaultCh4 = op.defaultChannel4 ?? (colorSpace === \"CMYK\" ? 0 : 1);\n\tuniformData[0] = COLOR_SPACE_MAP[colorSpace] ?? 0;\n\tuniformData[1] = hasCh4;\n\tuniformData[2] = defaultCh4;\n\tuniformData[3] = 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst { pipeline, resources } = getPipeline(ctx.device, targetTexture.format);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst textureBindGroup = ctx.device.createBindGroup({\n\t\tlayout: resources.textureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: view1\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: view2\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: view3\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: view4\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tconst finalPass = beginTargetPass(args);\n\tfinalPass.setPipeline(pipeline);\n\tfinalPass.setBindGroup(0, uniformBindGroup);\n\tfinalPass.setBindGroup(1, textureBindGroup);\n\tfinalPass.draw(4, 1, 0, 0);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: ChannelMergerWebGPURenderer });\n\n//#endregion\nexport { ChannelMergerWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-CFuJvvvy.mjs.map"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as createFullscreenPipeline, c as drawTextureToTarget,
|
|
1
|
+
import { s as resolveHandleParam } from "./renderer-DcvjSolU.mjs";
|
|
2
|
+
import { a as createFullscreenPipeline, c as drawTextureToTarget, d as signalTextureView, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL } from "./gpu-CpkJJLQP.mjs";
|
|
3
3
|
|
|
4
4
|
//#region ../../nodes/node-color-balance/dist/renderers-BaZtHi33.mjs
|
|
5
5
|
const deviceResourceCache = /* @__PURE__ */ new WeakMap();
|
|
@@ -307,4 +307,4 @@ var renderers_default = { WebGPURenderer: ColorBalanceWebGPURenderer };
|
|
|
307
307
|
|
|
308
308
|
//#endregion
|
|
309
309
|
export { renderers_default as n, ColorBalanceWebGPURenderer as t };
|
|
310
|
-
//# sourceMappingURL=renderer-
|
|
310
|
+
//# sourceMappingURL=renderer-7ow5Acsg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-CsRuEpR2.mjs","names":[],"sources":["../../../nodes/node-color-balance/dist/renderers-BaZtHi33.mjs"],"sourcesContent":["import { resolveHandleParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, signalTextureView, signalTiming } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst WGSL_COLOR_BALANCE_SHADER = `\nstruct ColorBalanceUniforms {\n\tshadows : vec4<f32>,\n\tmidtones : vec4<f32>,\n\thighlights : vec4<f32>,\n\tpreserveLuminosity : f32,\n\thasShadowsCyanRedSig : f32,\n\thasShadowsMagentaGreenSig : f32,\n\thasShadowsYellowBlueSig : f32,\n\n\thasMidtonesCyanRedSig : f32,\n\thasMidtonesMagentaGreenSig : f32,\n\thasMidtonesYellowBlueSig : f32,\n\thasHighlightsCyanRedSig : f32,\n\n\thasHighlightsMagentaGreenSig : f32,\n\thasHighlightsYellowBlueSig : f32,\n\t_pad0 : f32,\n\t_pad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ColorBalanceUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var shadowsCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(1) var shadowsMagentaGreenSigTex : texture_2d<f32>;\n@group(2) @binding(2) var shadowsYellowBlueSigTex : texture_2d<f32>;\n@group(2) @binding(3) var midtonesCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(4) var midtonesMagentaGreenSigTex: texture_2d<f32>;\n@group(2) @binding(5) var midtonesYellowBlueSigTex : texture_2d<f32>;\n@group(2) @binding(6) var highlightsCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(7) var highlightsMagentaGreenSigTex: texture_2d<f32>;\n@group(2) @binding(8) var highlightsYellowBlueSigTex: texture_2d<f32>;\n@group(2) @binding(9) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn get_luminance(c: vec3<f32>) -> f32 {\n\treturn dot(c, vec3<f32>(0.2126, 0.7152, 0.0722));\n}\n\nfn set_luminance(c: vec3<f32>, l: f32) -> vec3<f32> {\n\tlet d = l - get_luminance(c);\n\tvar res = c + vec3<f32>(d);\n\tlet min_c = min(res.r, min(res.g, res.b));\n\tlet max_c = max(res.r, max(res.g, res.b));\n\tif (min_c < 0.0) {\n\t\tres = l + ((res - vec3<f32>(l)) * l) / max(l - min_c, 1e-5);\n\t}\n\tif (max_c > 1.0) {\n\t\tres = l + ((res - vec3<f32>(l)) * (1.0 - l)) / max(max_c - l, 1e-5);\n\t}\n\treturn clamp(res, vec3<f32>(0.0), vec3<f32>(1.0));\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (color.a <= 0.00001) {\n\t\treturn color;\n\t}\n\n\tlet alpha = color.a;\n\tlet rgb = color.rgb / max(alpha, 0.0001);\n\n\tvar sShift = u.shadows.rgb;\n\tif (u.hasShadowsCyanRedSig > 0.5) {\n\t\tsShift.r = clamp(textureSampleLevel(shadowsCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasShadowsMagentaGreenSig > 0.5) {\n\t\tsShift.g = clamp(textureSampleLevel(shadowsMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasShadowsYellowBlueSig > 0.5) {\n\t\tsShift.b = clamp(textureSampleLevel(shadowsYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tvar mShift = u.midtones.rgb;\n\tif (u.hasMidtonesCyanRedSig > 0.5) {\n\t\tmShift.r = clamp(textureSampleLevel(midtonesCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasMidtonesMagentaGreenSig > 0.5) {\n\t\tmShift.g = clamp(textureSampleLevel(midtonesMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasMidtonesYellowBlueSig > 0.5) {\n\t\tmShift.b = clamp(textureSampleLevel(midtonesYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tvar hShift = u.highlights.rgb;\n\tif (u.hasHighlightsCyanRedSig > 0.5) {\n\t\thShift.r = clamp(textureSampleLevel(highlightsCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasHighlightsMagentaGreenSig > 0.5) {\n\t\thShift.g = clamp(textureSampleLevel(highlightsMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasHighlightsYellowBlueSig > 0.5) {\n\t\thShift.b = clamp(textureSampleLevel(highlightsYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tlet origLum = get_luminance(rgb);\n\n\t// Tonal range weighting curves\n\tlet wShadows = clamp((1.0 - origLum) * (1.0 - origLum * 1.5), 0.0, 1.0);\n\tlet wMidtones = clamp(1.0 - 4.0 * (origLum - 0.5) * (origLum - 0.5), 0.0, 1.0);\n\tlet wHighlights = clamp(origLum * (origLum * 1.5 - 0.5), 0.0, 1.0);\n\n\tlet delta = wShadows * sShift + wMidtones * mShift + wHighlights * hShift;\n\tvar adjustedRgb = clamp(rgb + delta, vec3<f32>(0.0), vec3<f32>(1.0));\n\n\tif (u.preserveLuminosity > 0.5) {\n\t\tadjustedRgb = set_luminance(adjustedRgb, origLum);\n\t}\n\n\treturn vec4<f32>(adjustedRgb * alpha, alpha);\n}\n`;\nfunction getColorBalanceResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"], \"ColorBalanceUniformLayout\");\n\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"], \"ColorBalanceTextureLayout\");\n\tconst signalTextureLayout = fragmentBindGroupLayout(device, [\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], \"ColorBalanceSignalTextureLayout\");\n\tres = {\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tlabel: \"ColorBalancePipeline\",\n\t\t\tmodule: device.createShaderModule({\n\t\t\t\tlabel: \"ColorBalanceShaderModule\",\n\t\t\t\tcode: WGSL_COLOR_BALANCE_SHADER\n\t\t\t}),\n\t\t\tlayouts: [\n\t\t\t\tuniformLayout,\n\t\t\t\ttextureLayout,\n\t\t\t\tsignalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t}),\n\t\tuniformLayout,\n\t\ttextureLayout,\n\t\tsignalTextureLayout\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nconst uniformBufferData = new Float32Array(24);\nconst ColorBalanceWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ColorBalance\" || !props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst childMedia = props.virtualMedia.children[0];\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = (props.virtualMedia?.metadata)?.id || (op.inputs ? Object.keys(op.inputs)[0] : null) || props.renderId || \"colorbalance_node\";\n\tconst resolveField = (handleId, fallbackVal, clampMin = -100, clampMax = 100) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);\n\tconst resolveVal = (val) => {\n\t\tif (val !== void 0 && val !== null) {\n\t\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\t\tif (\"get\" in val && typeof val.get === \"function\") val = val.get({\n\t\t\t\t\tframe: compositionFrame,\n\t\t\t\t\tfps\n\t\t\t\t});\n\t\t\t\telse if (\"value\" in val) val = val.value;\n\t\t\t} else if (typeof val === \"function\") val = val(compositionFrame, fps);\n\t\t}\n\t\tconst n = Number(val ?? 0);\n\t\treturn isNaN(n) ? 0 : n;\n\t};\n\tconst sCR = resolveField(op.shadows_cyanRedHandleId, resolveVal(op.shadows?.cyanRed));\n\tconst sMG = resolveField(op.shadows_magentaGreenHandleId, resolveVal(op.shadows?.magentaGreen));\n\tconst sYB = resolveField(op.shadows_yellowBlueHandleId, resolveVal(op.shadows?.yellowBlue));\n\tconst mCR = resolveField(op.midtones_cyanRedHandleId, resolveVal(op.midtones?.cyanRed));\n\tconst mMG = resolveField(op.midtones_magentaGreenHandleId, resolveVal(op.midtones?.magentaGreen));\n\tconst mYB = resolveField(op.midtones_yellowBlueHandleId, resolveVal(op.midtones?.yellowBlue));\n\tconst hCR = resolveField(op.highlights_cyanRedHandleId, resolveVal(op.highlights?.cyanRed));\n\tconst hMG = resolveField(op.highlights_magentaGreenHandleId, resolveVal(op.highlights?.magentaGreen));\n\tconst hYB = resolveField(op.highlights_yellowBlueHandleId, resolveVal(op.highlights?.yellowBlue));\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getColorBalanceResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, `${nodeId}_${suffix}`);\n\tconst sCRView = getSignalView(sCR, \"shadows_cyanRed_sig\");\n\tconst sMGView = getSignalView(sMG, \"shadows_magentaGreen_sig\");\n\tconst sYBView = getSignalView(sYB, \"shadows_yellowBlue_sig\");\n\tconst mCRView = getSignalView(mCR, \"midtones_cyanRed_sig\");\n\tconst mMGView = getSignalView(mMG, \"midtones_magentaGreen_sig\");\n\tconst mYBView = getSignalView(mYB, \"midtones_yellowBlue_sig\");\n\tconst hCRView = getSignalView(hCR, \"highlights_cyanRed_sig\");\n\tconst hMGView = getSignalView(hMG, \"highlights_magentaGreen_sig\");\n\tconst hYBView = getSignalView(hYB, \"highlights_yellowBlue_sig\");\n\tconst preserveLum = op.preserveLuminosity === false ? 0 : 1;\n\tuniformBufferData[0] = sCR.val / 100;\n\tuniformBufferData[1] = sMG.val / 100;\n\tuniformBufferData[2] = sYB.val / 100;\n\tuniformBufferData[3] = 0;\n\tuniformBufferData[4] = mCR.val / 100;\n\tuniformBufferData[5] = mMG.val / 100;\n\tuniformBufferData[6] = mYB.val / 100;\n\tuniformBufferData[7] = 0;\n\tuniformBufferData[8] = hCR.val / 100;\n\tuniformBufferData[9] = hMG.val / 100;\n\tuniformBufferData[10] = hYB.val / 100;\n\tuniformBufferData[11] = 0;\n\tuniformBufferData[12] = preserveLum;\n\tuniformBufferData[13] = sCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[14] = sMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[15] = sYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[16] = mCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[17] = mMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[18] = mYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[19] = hCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[20] = hMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[21] = hYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[22] = 0;\n\tuniformBufferData[23] = 0;\n\tconst buffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst sigBindGroup = ctx.device.createBindGroup({\n\t\tlayout: signalTextureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: sCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: sMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: sYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: mCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: mMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: mYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tresource: hCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 7,\n\t\t\t\tresource: hMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 8,\n\t\t\t\tresource: hYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 9,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, tmpTex, sampler),\n\t\tsigBindGroup\n\t]);\n\tdrawTextureToTarget(args, outTex, props.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = { WebGPURenderer: ColorBalanceWebGPURenderer };\n\n//#endregion\nexport { ColorBalanceWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-BaZtHi33.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-7ow5Acsg.mjs","names":[],"sources":["../../../nodes/node-color-balance/dist/renderers-BaZtHi33.mjs"],"sourcesContent":["import { resolveHandleParam } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, signalTextureView, signalTiming } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst WGSL_COLOR_BALANCE_SHADER = `\nstruct ColorBalanceUniforms {\n\tshadows : vec4<f32>,\n\tmidtones : vec4<f32>,\n\thighlights : vec4<f32>,\n\tpreserveLuminosity : f32,\n\thasShadowsCyanRedSig : f32,\n\thasShadowsMagentaGreenSig : f32,\n\thasShadowsYellowBlueSig : f32,\n\n\thasMidtonesCyanRedSig : f32,\n\thasMidtonesMagentaGreenSig : f32,\n\thasMidtonesYellowBlueSig : f32,\n\thasHighlightsCyanRedSig : f32,\n\n\thasHighlightsMagentaGreenSig : f32,\n\thasHighlightsYellowBlueSig : f32,\n\t_pad0 : f32,\n\t_pad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : ColorBalanceUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var shadowsCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(1) var shadowsMagentaGreenSigTex : texture_2d<f32>;\n@group(2) @binding(2) var shadowsYellowBlueSigTex : texture_2d<f32>;\n@group(2) @binding(3) var midtonesCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(4) var midtonesMagentaGreenSigTex: texture_2d<f32>;\n@group(2) @binding(5) var midtonesYellowBlueSigTex : texture_2d<f32>;\n@group(2) @binding(6) var highlightsCyanRedSigTex : texture_2d<f32>;\n@group(2) @binding(7) var highlightsMagentaGreenSigTex: texture_2d<f32>;\n@group(2) @binding(8) var highlightsYellowBlueSigTex: texture_2d<f32>;\n@group(2) @binding(9) var signalSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn get_luminance(c: vec3<f32>) -> f32 {\n\treturn dot(c, vec3<f32>(0.2126, 0.7152, 0.0722));\n}\n\nfn set_luminance(c: vec3<f32>, l: f32) -> vec3<f32> {\n\tlet d = l - get_luminance(c);\n\tvar res = c + vec3<f32>(d);\n\tlet min_c = min(res.r, min(res.g, res.b));\n\tlet max_c = max(res.r, max(res.g, res.b));\n\tif (min_c < 0.0) {\n\t\tres = l + ((res - vec3<f32>(l)) * l) / max(l - min_c, 1e-5);\n\t}\n\tif (max_c > 1.0) {\n\t\tres = l + ((res - vec3<f32>(l)) * (1.0 - l)) / max(max_c - l, 1e-5);\n\t}\n\treturn clamp(res, vec3<f32>(0.0), vec3<f32>(1.0));\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (color.a <= 0.00001) {\n\t\treturn color;\n\t}\n\n\tlet alpha = color.a;\n\tlet rgb = color.rgb / max(alpha, 0.0001);\n\n\tvar sShift = u.shadows.rgb;\n\tif (u.hasShadowsCyanRedSig > 0.5) {\n\t\tsShift.r = clamp(textureSampleLevel(shadowsCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasShadowsMagentaGreenSig > 0.5) {\n\t\tsShift.g = clamp(textureSampleLevel(shadowsMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasShadowsYellowBlueSig > 0.5) {\n\t\tsShift.b = clamp(textureSampleLevel(shadowsYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tvar mShift = u.midtones.rgb;\n\tif (u.hasMidtonesCyanRedSig > 0.5) {\n\t\tmShift.r = clamp(textureSampleLevel(midtonesCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasMidtonesMagentaGreenSig > 0.5) {\n\t\tmShift.g = clamp(textureSampleLevel(midtonesMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasMidtonesYellowBlueSig > 0.5) {\n\t\tmShift.b = clamp(textureSampleLevel(midtonesYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tvar hShift = u.highlights.rgb;\n\tif (u.hasHighlightsCyanRedSig > 0.5) {\n\t\thShift.r = clamp(textureSampleLevel(highlightsCyanRedSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasHighlightsMagentaGreenSig > 0.5) {\n\t\thShift.g = clamp(textureSampleLevel(highlightsMagentaGreenSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\tif (u.hasHighlightsYellowBlueSig > 0.5) {\n\t\thShift.b = clamp(textureSampleLevel(highlightsYellowBlueSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r, -100.0, 100.0) / 100.0;\n\t}\n\n\tlet origLum = get_luminance(rgb);\n\n\t// Tonal range weighting curves\n\tlet wShadows = clamp((1.0 - origLum) * (1.0 - origLum * 1.5), 0.0, 1.0);\n\tlet wMidtones = clamp(1.0 - 4.0 * (origLum - 0.5) * (origLum - 0.5), 0.0, 1.0);\n\tlet wHighlights = clamp(origLum * (origLum * 1.5 - 0.5), 0.0, 1.0);\n\n\tlet delta = wShadows * sShift + wMidtones * mShift + wHighlights * hShift;\n\tvar adjustedRgb = clamp(rgb + delta, vec3<f32>(0.0), vec3<f32>(1.0));\n\n\tif (u.preserveLuminosity > 0.5) {\n\t\tadjustedRgb = set_luminance(adjustedRgb, origLum);\n\t}\n\n\treturn vec4<f32>(adjustedRgb * alpha, alpha);\n}\n`;\nfunction getColorBalanceResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"], \"ColorBalanceUniformLayout\");\n\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"], \"ColorBalanceTextureLayout\");\n\tconst signalTextureLayout = fragmentBindGroupLayout(device, [\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], \"ColorBalanceSignalTextureLayout\");\n\tres = {\n\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\tlabel: \"ColorBalancePipeline\",\n\t\t\tmodule: device.createShaderModule({\n\t\t\t\tlabel: \"ColorBalanceShaderModule\",\n\t\t\t\tcode: WGSL_COLOR_BALANCE_SHADER\n\t\t\t}),\n\t\t\tlayouts: [\n\t\t\t\tuniformLayout,\n\t\t\t\ttextureLayout,\n\t\t\t\tsignalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t}),\n\t\tuniformLayout,\n\t\ttextureLayout,\n\t\tsignalTextureLayout\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nconst uniformBufferData = new Float32Array(24);\nconst ColorBalanceWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"ColorBalance\" || !props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 30;\n\tconst childMedia = props.virtualMedia.children[0];\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = (props.virtualMedia?.metadata)?.id || (op.inputs ? Object.keys(op.inputs)[0] : null) || props.renderId || \"colorbalance_node\";\n\tconst resolveField = (handleId, fallbackVal, clampMin = -100, clampMax = 100) => resolveHandleParam(op.inputs, handleId, fallbackVal, clampMin, clampMax);\n\tconst resolveVal = (val) => {\n\t\tif (val !== void 0 && val !== null) {\n\t\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\t\tif (\"get\" in val && typeof val.get === \"function\") val = val.get({\n\t\t\t\t\tframe: compositionFrame,\n\t\t\t\t\tfps\n\t\t\t\t});\n\t\t\t\telse if (\"value\" in val) val = val.value;\n\t\t\t} else if (typeof val === \"function\") val = val(compositionFrame, fps);\n\t\t}\n\t\tconst n = Number(val ?? 0);\n\t\treturn isNaN(n) ? 0 : n;\n\t};\n\tconst sCR = resolveField(op.shadows_cyanRedHandleId, resolveVal(op.shadows?.cyanRed));\n\tconst sMG = resolveField(op.shadows_magentaGreenHandleId, resolveVal(op.shadows?.magentaGreen));\n\tconst sYB = resolveField(op.shadows_yellowBlueHandleId, resolveVal(op.shadows?.yellowBlue));\n\tconst mCR = resolveField(op.midtones_cyanRedHandleId, resolveVal(op.midtones?.cyanRed));\n\tconst mMG = resolveField(op.midtones_magentaGreenHandleId, resolveVal(op.midtones?.magentaGreen));\n\tconst mYB = resolveField(op.midtones_yellowBlueHandleId, resolveVal(op.midtones?.yellowBlue));\n\tconst hCR = resolveField(op.highlights_cyanRedHandleId, resolveVal(op.highlights?.cyanRed));\n\tconst hMG = resolveField(op.highlights_magentaGreenHandleId, resolveVal(op.highlights?.magentaGreen));\n\tconst hYB = resolveField(op.highlights_yellowBlueHandleId, resolveVal(op.highlights?.yellowBlue));\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tconst { pipeline, uniformLayout, textureLayout, signalTextureLayout } = getColorBalanceResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst { elapsedSeconds, durationSeconds } = signalTiming(props, frame, fps);\n\tconst signalContext = {\n\t\targs,\n\t\twidth,\n\t\theight,\n\t\tframe,\n\t\tfps,\n\t\telapsedSeconds,\n\t\tdurationSeconds\n\t};\n\tconst getSignalView = (res, suffix) => signalTextureView(signalContext, res, `${nodeId}_${suffix}`);\n\tconst sCRView = getSignalView(sCR, \"shadows_cyanRed_sig\");\n\tconst sMGView = getSignalView(sMG, \"shadows_magentaGreen_sig\");\n\tconst sYBView = getSignalView(sYB, \"shadows_yellowBlue_sig\");\n\tconst mCRView = getSignalView(mCR, \"midtones_cyanRed_sig\");\n\tconst mMGView = getSignalView(mMG, \"midtones_magentaGreen_sig\");\n\tconst mYBView = getSignalView(mYB, \"midtones_yellowBlue_sig\");\n\tconst hCRView = getSignalView(hCR, \"highlights_cyanRed_sig\");\n\tconst hMGView = getSignalView(hMG, \"highlights_magentaGreen_sig\");\n\tconst hYBView = getSignalView(hYB, \"highlights_yellowBlue_sig\");\n\tconst preserveLum = op.preserveLuminosity === false ? 0 : 1;\n\tuniformBufferData[0] = sCR.val / 100;\n\tuniformBufferData[1] = sMG.val / 100;\n\tuniformBufferData[2] = sYB.val / 100;\n\tuniformBufferData[3] = 0;\n\tuniformBufferData[4] = mCR.val / 100;\n\tuniformBufferData[5] = mMG.val / 100;\n\tuniformBufferData[6] = mYB.val / 100;\n\tuniformBufferData[7] = 0;\n\tuniformBufferData[8] = hCR.val / 100;\n\tuniformBufferData[9] = hMG.val / 100;\n\tuniformBufferData[10] = hYB.val / 100;\n\tuniformBufferData[11] = 0;\n\tuniformBufferData[12] = preserveLum;\n\tuniformBufferData[13] = sCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[14] = sMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[15] = sYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[16] = mCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[17] = mMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[18] = mYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[19] = hCR.hasStaticSig ? 1 : 0;\n\tuniformBufferData[20] = hMG.hasStaticSig ? 1 : 0;\n\tuniformBufferData[21] = hYB.hasStaticSig ? 1 : 0;\n\tuniformBufferData[22] = 0;\n\tuniformBufferData[23] = 0;\n\tconst buffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst sigBindGroup = ctx.device.createBindGroup({\n\t\tlayout: signalTextureLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: sCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: sMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: sYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: mCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: mMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: mYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tresource: hCRView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 7,\n\t\t\t\tresource: hMGView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 8,\n\t\t\t\tresource: hYBView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 9,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t});\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uniformLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, tmpTex, sampler),\n\t\tsigBindGroup\n\t]);\n\tdrawTextureToTarget(args, outTex, props.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = { WebGPURenderer: ColorBalanceWebGPURenderer };\n\n//#endregion\nexport { ColorBalanceWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-BaZtHi33.mjs.map"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as NodeRendererPlugin } from "./renderer-
|
|
1
|
+
import { n as NodeRendererPlugin } from "./renderer-BVKOQarx.mjs";
|
|
2
2
|
|
|
3
3
|
//#region ../../nodes/node-audio-signal-extractor/dist/renderer.d.mts
|
|
4
4
|
//#region src/renderers/index.d.ts
|
|
@@ -7,4 +7,4 @@ declare const _default: Readonly<NodeRendererPlugin>;
|
|
|
7
7
|
|
|
8
8
|
//#endregion
|
|
9
9
|
export { _default as t };
|
|
10
|
-
//# sourceMappingURL=renderer-
|
|
10
|
+
//# sourceMappingURL=renderer-88C3QpKL.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-88C3QpKL.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderer.d.mts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;AAAkF,cAGpEC,QAAsE,EAA5DE,QAASH,CAAAA,kBAAD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Xt as isSignal, xn as resolveNumber } from "./dist-Bf2_efYP.mjs";
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
3
|
-
import { g as WebGPUAudioProcessor } from "./dist-
|
|
2
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
3
|
+
import { g as WebGPUAudioProcessor } from "./dist-CWLLnigL.mjs";
|
|
4
4
|
|
|
5
5
|
//#region ../../nodes/node-stereo-panning/dist/renderers-Dc15sLt-.mjs
|
|
6
6
|
const PARAM_ORDER = ["pan"];
|
|
@@ -96,4 +96,4 @@ var renderers_default = defineRenderer({ audioProcessor: stereoPanningAudioProce
|
|
|
96
96
|
|
|
97
97
|
//#endregion
|
|
98
98
|
export { renderers_default as t };
|
|
99
|
-
//# sourceMappingURL=renderer-
|
|
99
|
+
//# sourceMappingURL=renderer-B-CMRUag.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-B-CMRUag.mjs","names":[],"sources":["../../../nodes/node-stereo-panning/dist/renderers-Dc15sLt-.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { isSignal, resolveNumber } from \"@framefields/node-sdk\";\nimport { WebGPUAudioProcessor } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst PARAM_ORDER = [\"pan\"];\nconst PANNING_SHADER_TEMPLATE = () => `\nstruct Uniforms {\n sampleRate : f32,\n pan : f32,\n hasPanSig : f32,\n baseTime : f32,\n frame : f32,\n numSamples : f32,\n numChannels : f32,\n pad1 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : Uniforms;\n@group(0) @binding(1) var<storage, read> inputChannels : array<f32>;\n@group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;\n@group(0) @binding(3) var<storage, read_write> state : array<f32>;\n@group(0) @binding(4) var<storage, read> panSignal : array<f32>;\n\n@compute @workgroup_size(1)\nfn main(@builtin(global_invocation_id) gid : vec3<u32>) {\n if (gid.x != 0u) { return; }\n\n let numSamples = u32(u.numSamples);\n let numChannels = u32(u.numChannels);\n\n for (var index = 0u; index < numSamples; index = index + 1u) {\n var currentPan = u.pan;\n if (u.hasPanSig > 0.5f) {\n currentPan = panSignal[index];\n }\n let clampedPan = max(-1.0f, min(1.0f, currentPan));\n var leftGain = 1.0f;\n var rightGain = 1.0f;\n\n if (clampedPan < 0.0f) {\n rightGain = 1.0f + clampedPan;\n } else if (clampedPan > 0.0f) {\n leftGain = 1.0f - clampedPan;\n }\n\n if (numChannels > 1u) {\n outputChannels[index] = inputChannels[index] * leftGain;\n outputChannels[numSamples + index] = inputChannels[numSamples + index] * rightGain;\n } else {\n outputChannels[index] = inputChannels[index] * leftGain;\n }\n }\n\n // Dummy reference to prevent state binding from being optimized out\n state[0] = state[0];\n}\n`;\nconst stereoPanningAudioProcessor = async (channels, sampleRate, node, ctx) => {\n\tif (!ctx?.device) throw new Error(\"GPUDevice is required for WebGPU Stereo Panning.\");\n\tconst op = node.operation || {};\n\tconst inputs = op.inputs || {};\n\tconst pan = resolveNumber(op.pan, 0);\n\tconst clampedPan = Math.max(-1, Math.min(1, pan));\n\tconst isHandleConnected = (handleIdKey) => {\n\t\tconst handleId = op[handleIdKey];\n\t\tif (typeof handleId !== \"string\" || !handleId) return false;\n\t\tconst input = inputs[handleId];\n\t\treturn Boolean(input?.connectionValid && input.outputItem && (input.outputItem.type === \"Signal\" || input.outputItem.type === \"Number\"));\n\t};\n\tconst hasPanSig = isSignal(op.pan) || isSignal(op.signals?.pan) || isHandleConnected(\"panHandleId\") ? 1 : 0;\n\tif (channels.length === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tif (channels.length === 1) {\n\t\tconst rightChannel = new Float32Array(numSamples);\n\t\trightChannel.set(channels[0]);\n\t\tchannels.push(rightChannel);\n\t}\n\tconst numChannels = channels.length;\n\tconst nodeId = op.id || \"stereo-panning\";\n\tconst frame = ctx.frame ?? 0;\n\tconst fps = ctx.fps ?? 24;\n\tawait WebGPUAudioProcessor.process(ctx.device, nodeId, channels, sampleRate, node, frame, fps, PANNING_SHADER_TEMPLATE, () => [\n\t\tsampleRate,\n\t\tclampedPan,\n\t\thasPanSig,\n\t\t0,\n\t\tframe,\n\t\tnumSamples,\n\t\tnumChannels,\n\t\t0\n\t], 8, 1, ctx?.renderId, true, ctx?.elapsedMs, ctx?.durationMs, void 0, void 0, PARAM_ORDER);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: stereoPanningAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-Dc15sLt-.mjs.map"],"mappings":";;;;;AAKA,MAAM,cAAc,CAAC,MAAM;AAC3B,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDtC,MAAM,8BAA8B,OAAO,UAAU,YAAY,MAAM,QAAQ;AAC9E,KAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,mDAAmD;CACrF,MAAM,KAAK,KAAK,aAAa,EAAE;CAC/B,MAAM,SAAS,GAAG,UAAU,EAAE;CAC9B,MAAM,MAAM,cAAc,GAAG,KAAK,EAAE;CACpC,MAAM,aAAa,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;CACjD,MAAM,qBAAqB,gBAAgB;EAC1C,MAAM,WAAW,GAAG;AACpB,MAAI,OAAO,aAAa,YAAY,CAAC,SAAU,QAAO;EACtD,MAAM,QAAQ,OAAO;AACrB,SAAO,QAAQ,OAAO,mBAAmB,MAAM,eAAe,MAAM,WAAW,SAAS,YAAY,MAAM,WAAW,SAAS,UAAU;;CAEzI,MAAM,YAAY,SAAS,GAAG,IAAI,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,kBAAkB,cAAc,GAAG,IAAI;AAC1G,KAAI,SAAS,WAAW,EAAG;CAC3B,MAAM,aAAa,SAAS,GAAG;AAC/B,KAAI,eAAe,EAAG;AACtB,KAAI,SAAS,WAAW,GAAG;EAC1B,MAAM,eAAe,IAAI,aAAa,WAAW;AACjD,eAAa,IAAI,SAAS,GAAG;AAC7B,WAAS,KAAK,aAAa;;CAE5B,MAAM,cAAc,SAAS;CAC7B,MAAM,SAAS,GAAG,MAAM;CACxB,MAAM,QAAQ,IAAI,SAAS;CAC3B,MAAM,MAAM,IAAI,OAAO;AACvB,OAAM,qBAAqB,QAAQ,IAAI,QAAQ,QAAQ,UAAU,YAAY,MAAM,OAAO,KAAK,+BAA+B;EAC7H;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,GAAG,GAAG,KAAK,UAAU,MAAM,KAAK,WAAW,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,YAAY;;AAK5F,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,6BAA6B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as defineRenderer } from "./renderer-
|
|
2
|
-
import { q as parseColor } from "./dist-
|
|
1
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
2
|
+
import { q as parseColor } from "./dist-CWLLnigL.mjs";
|
|
3
3
|
|
|
4
4
|
//#region ../../nodes/node-paint/dist/renderers-Cp52luA9.mjs
|
|
5
5
|
const PaintWebGPURenderer = async (args) => {
|
|
@@ -142,4 +142,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: PaintWebGPURenderer });
|
|
|
142
142
|
|
|
143
143
|
//#endregion
|
|
144
144
|
export { renderers_default as t };
|
|
145
|
-
//# sourceMappingURL=renderer-
|
|
145
|
+
//# sourceMappingURL=renderer-B1LD29TV.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-
|
|
1
|
+
{"version":3,"file":"renderer-B1LD29TV.mjs","names":[],"sources":["../../../nodes/node-paint/dist/renderers-Cp52luA9.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { parseColor } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst PaintWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetView, targetTexture, targetWidth, targetHeight, encoder, props, drawChild } = args;\n\tconst { virtualMedia } = props;\n\tif (virtualMedia.operation?.op !== \"Paint\") return;\n\tconst childMedia = virtualMedia?.children?.[0];\n\tconst containerW = props.containerWidth ?? childMedia?.metadata?.width ?? targetWidth;\n\tconst containerH = props.containerHeight ?? childMedia?.metadata?.height ?? targetHeight;\n\tconst config = virtualMedia.operation;\n\tconst isMaskMode = config.mode === \"mask\";\n\tconst strokes = config.strokes ?? [];\n\tpass.end();\n\tctx.renderer.pushIdentity();\n\tconst baseTex = ctx.renderer.getTemporaryTexture(containerW, containerH, [...props.excludeTextures || [], targetTexture]);\n\tconst baseView = baseTex.createView();\n\tif (isMaskMode) ctx.renderer.beginFrame(encoder, baseView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 1\n\t}, containerW, containerH, \"clear\").end();\n\telse if (childMedia) await drawChild(childMedia, props, baseView, baseTex, containerW, containerH);\n\telse {\n\t\tconst basePass = ctx.renderer.beginFrame(encoder, baseView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, containerW, containerH, \"clear\");\n\t\tif (config.backgroundColor) ctx.renderer.drawRect(basePass, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: containerW,\n\t\t\theight: containerH\n\t\t}, config.backgroundColor);\n\t\tbasePass.end();\n\t}\n\tlet finalTex = baseTex;\n\tif (strokes.length > 0) {\n\t\tconst origW = childMedia?.metadata?.width ?? containerW;\n\t\tconst origH = childMedia?.metadata?.height ?? containerH;\n\t\tconst scaleX = origW > 0 ? containerW / origW : 1;\n\t\tconst scaleY = origH > 0 ? containerH / origH : 1;\n\t\tlet scalePushed = false;\n\t\tif (scaleX !== 1 || scaleY !== 1) {\n\t\t\tctx.renderer.pushTransform(new DOMMatrix().scale(scaleX, scaleY));\n\t\t\tscalePushed = true;\n\t\t}\n\t\tconst paintTex = ctx.renderer.getTemporaryTexture(containerW, containerH, [\n\t\t\tbaseTex,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tconst paintView = paintTex.createView();\n\t\tctx.renderer.beginFrame(encoder, paintView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, containerW, containerH, \"clear\").end();\n\t\tconst allStrokes = strokes;\n\t\tlet currentLayer = paintTex;\n\t\tlet currentPass = null;\n\t\tfor (const stroke of allStrokes) if (stroke.tool === \"brush\") {\n\t\t\tif (!currentPass) currentPass = ctx.renderer.beginFrame(encoder, currentLayer.createView(), {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, containerW, containerH, \"load\");\n\t\t\tconst parsedColor = parseColor(stroke.color);\n\t\t\tconst drawColor = isMaskMode ? {\n\t\t\t\tr: parsedColor.a,\n\t\t\t\tg: parsedColor.a,\n\t\t\t\tb: parsedColor.a,\n\t\t\t\ta: parsedColor.a\n\t\t\t} : {\n\t\t\t\tr: parsedColor.r * parsedColor.a,\n\t\t\t\tg: parsedColor.g * parsedColor.a,\n\t\t\t\tb: parsedColor.b * parsedColor.a,\n\t\t\t\ta: parsedColor.a\n\t\t\t};\n\t\t\tctx.renderer.drawPath(currentPass, stroke.path, drawColor, stroke.size, {\n\t\t\t\topacity: stroke.opacity ?? 1,\n\t\t\t\tblendMode: \"max\"\n\t\t\t});\n\t\t} else if (stroke.tool === \"eraser\") {\n\t\t\tif (currentPass) {\n\t\t\t\tcurrentPass.end();\n\t\t\t\tcurrentPass = null;\n\t\t\t}\n\t\t\tconst maskTex = ctx.renderer.getTemporaryTexture(containerW, containerH, [\n\t\t\t\tbaseTex,\n\t\t\t\tpaintTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...props.excludeTextures || []\n\t\t\t]);\n\t\t\tconst maskView = maskTex.createView();\n\t\t\tconst maskPass = ctx.renderer.beginFrame(encoder, maskView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, containerW, containerH, \"clear\");\n\t\t\tctx.renderer.drawPath(maskPass, stroke.path, \"#ffffff\", stroke.size, { blendMode: \"max\" });\n\t\t\tmaskPass.end();\n\t\t\tcurrentLayer = ctx.renderer.composite(encoder, currentLayer, maskTex, \"mask-out\", [\n\t\t\t\tbaseTex,\n\t\t\t\tpaintTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...props.excludeTextures || []\n\t\t\t]);\n\t\t}\n\t\tif (currentPass) currentPass.end();\n\t\tfinalTex = ctx.renderer.composite(encoder, baseTex, currentLayer, \"normal\", [\n\t\t\tbaseTex,\n\t\t\tcurrentLayer,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tif (scalePushed) ctx.renderer.popTransform();\n\t}\n\tctx.renderer.popTransform();\n\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"load\");\n\tctx.renderer.drawTexture(finalPass, finalTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: containerW,\n\t\theight: containerH\n\t});\n\targs.pass = finalPass;\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: PaintWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-Cp52luA9.mjs.map"],"mappings":";;;;AAIA,MAAM,sBAAsB,OAAO,SAAS;CAC3C,MAAM,EAAE,KAAK,MAAM,YAAY,eAAe,aAAa,cAAc,SAAS,OAAO,cAAc;CACvG,MAAM,EAAE,iBAAiB;AACzB,KAAI,aAAa,WAAW,OAAO,QAAS;CAC5C,MAAM,aAAa,cAAc,WAAW;CAC5C,MAAM,aAAa,MAAM,kBAAkB,YAAY,UAAU,SAAS;CAC1E,MAAM,aAAa,MAAM,mBAAmB,YAAY,UAAU,UAAU;CAC5E,MAAM,SAAS,aAAa;CAC5B,MAAM,aAAa,OAAO,SAAS;CACnC,MAAM,UAAU,OAAO,WAAW,EAAE;AACpC,MAAK,KAAK;AACV,KAAI,SAAS,cAAc;CAC3B,MAAM,UAAU,IAAI,SAAS,oBAAoB,YAAY,YAAY,CAAC,GAAG,MAAM,mBAAmB,EAAE,EAAE,cAAc,CAAC;CACzH,MAAM,WAAW,QAAQ,YAAY;AACrC,KAAI,WAAY,KAAI,SAAS,WAAW,SAAS,UAAU;EAC1D,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,EAAE,YAAY,YAAY,QAAQ,CAAC,KAAK;UAChC,WAAY,OAAM,UAAU,YAAY,OAAO,UAAU,SAAS,YAAY,WAAW;MAC7F;EACJ,MAAM,WAAW,IAAI,SAAS,WAAW,SAAS,UAAU;GAC3D,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,EAAE,YAAY,YAAY,QAAQ;AACnC,MAAI,OAAO,gBAAiB,KAAI,SAAS,SAAS,UAAU;GAC3D,GAAG;GACH,GAAG;GACH,OAAO;GACP,QAAQ;GACR,EAAE,OAAO,gBAAgB;AAC1B,WAAS,KAAK;;CAEf,IAAI,WAAW;AACf,KAAI,QAAQ,SAAS,GAAG;EACvB,MAAM,QAAQ,YAAY,UAAU,SAAS;EAC7C,MAAM,QAAQ,YAAY,UAAU,UAAU;EAC9C,MAAM,SAAS,QAAQ,IAAI,aAAa,QAAQ;EAChD,MAAM,SAAS,QAAQ,IAAI,aAAa,QAAQ;EAChD,IAAI,cAAc;AAClB,MAAI,WAAW,KAAK,WAAW,GAAG;AACjC,OAAI,SAAS,cAAc,IAAI,WAAW,CAAC,MAAM,QAAQ,OAAO,CAAC;AACjE,iBAAc;;EAEf,MAAM,WAAW,IAAI,SAAS,oBAAoB,YAAY,YAAY;GACzE;GACA;GACA,GAAG,MAAM,mBAAmB,EAAE;GAC9B,CAAC;EACF,MAAM,YAAY,SAAS,YAAY;AACvC,MAAI,SAAS,WAAW,SAAS,WAAW;GAC3C,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,EAAE,YAAY,YAAY,QAAQ,CAAC,KAAK;EACzC,MAAM,aAAa;EACnB,IAAI,eAAe;EACnB,IAAI,cAAc;AAClB,OAAK,MAAM,UAAU,WAAY,KAAI,OAAO,SAAS,SAAS;AAC7D,OAAI,CAAC,YAAa,eAAc,IAAI,SAAS,WAAW,SAAS,aAAa,YAAY,EAAE;IAC3F,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE,YAAY,YAAY,OAAO;GAClC,MAAM,cAAc,WAAW,OAAO,MAAM;GAC5C,MAAM,YAAY,aAAa;IAC9B,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG;IACH,GAAG,YAAY,IAAI,YAAY;IAC/B,GAAG,YAAY,IAAI,YAAY;IAC/B,GAAG,YAAY,IAAI,YAAY;IAC/B,GAAG,YAAY;IACf;AACD,OAAI,SAAS,SAAS,aAAa,OAAO,MAAM,WAAW,OAAO,MAAM;IACvE,SAAS,OAAO,WAAW;IAC3B,WAAW;IACX,CAAC;aACQ,OAAO,SAAS,UAAU;AACpC,OAAI,aAAa;AAChB,gBAAY,KAAK;AACjB,kBAAc;;GAEf,MAAM,UAAU,IAAI,SAAS,oBAAoB,YAAY,YAAY;IACxE;IACA;IACA;IACA,GAAG,MAAM,mBAAmB,EAAE;IAC9B,CAAC;GACF,MAAM,WAAW,QAAQ,YAAY;GACrC,MAAM,WAAW,IAAI,SAAS,WAAW,SAAS,UAAU;IAC3D,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE,YAAY,YAAY,QAAQ;AACnC,OAAI,SAAS,SAAS,UAAU,OAAO,MAAM,WAAW,OAAO,MAAM,EAAE,WAAW,OAAO,CAAC;AAC1F,YAAS,KAAK;AACd,kBAAe,IAAI,SAAS,UAAU,SAAS,cAAc,SAAS,YAAY;IACjF;IACA;IACA;IACA,GAAG,MAAM,mBAAmB,EAAE;IAC9B,CAAC;;AAEH,MAAI,YAAa,aAAY,KAAK;AAClC,aAAW,IAAI,SAAS,UAAU,SAAS,SAAS,cAAc,UAAU;GAC3E;GACA;GACA;GACA,GAAG,MAAM,mBAAmB,EAAE;GAC9B,CAAC;AACF,MAAI,YAAa,KAAI,SAAS,cAAc;;AAE7C,KAAI,SAAS,cAAc;CAC3B,MAAM,YAAY,IAAI,SAAS,WAAW,SAAS,YAAY;EAC9D,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,EAAE,aAAa,cAAc,OAAO;AACrC,KAAI,SAAS,YAAY,WAAW,UAAU;EAC7C,GAAG;EACH,GAAG;EACH,OAAO;EACP,QAAQ;EACR,CAAC;AACF,MAAK,OAAO;;AAKb,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as defineRenderer } from "./renderer-
|
|
2
|
-
import { W as lutStore, zn as signalRegistry } from "./dist-
|
|
3
|
-
import { a as createFullscreenPipeline, c as drawTextureToTarget,
|
|
1
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
2
|
+
import { W as lutStore, zn as signalRegistry } from "./dist-CWLLnigL.mjs";
|
|
3
|
+
import { a as createFullscreenPipeline, c as drawTextureToTarget, f as signalTiming, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-CpkJJLQP.mjs";
|
|
4
4
|
|
|
5
5
|
//#region ../../nodes/node-apply-lut/dist/renderers-BrWmp6fW.mjs
|
|
6
6
|
const LUT_3D_SHADER = `
|
|
@@ -219,4 +219,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: LutWebGPURenderer });
|
|
|
219
219
|
|
|
220
220
|
//#endregion
|
|
221
221
|
export { renderers_default as t };
|
|
222
|
-
//# sourceMappingURL=renderer-
|
|
222
|
+
//# sourceMappingURL=renderer-B1esRxGy.mjs.map
|