framefields 2.13.0 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/audio/index.d.mts +5 -5
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-CHV33Od9.d.mts → audio-CdCuGK5d.d.mts} +3 -3
- package/dist/{audio-CHV33Od9.d.mts.map → audio-CdCuGK5d.d.mts.map} +1 -1
- package/dist/{audio-DHzLQ_RG.mjs → audio-DFwRbID_.mjs} +3 -3
- package/dist/{audio-DHzLQ_RG.mjs.map → audio-DFwRbID_.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +43 -43
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/components/index.d.mts +13 -13
- package/dist/components/index.mjs +42 -42
- package/dist/{dist-D3BeAZ7X.mjs → dist--Uu5bQ_6.mjs} +870 -348
- package/dist/dist--Uu5bQ_6.mjs.map +1 -0
- package/dist/{dist-CUNvNDS3.mjs → dist-B8Nby2CU.mjs} +18 -4
- package/dist/dist-B8Nby2CU.mjs.map +1 -0
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +34 -34
- package/dist/{effects-BiDgCK1L.mjs → effects-WMgv8ZaD.mjs} +2 -2
- package/dist/{effects-BiDgCK1L.mjs.map → effects-WMgv8ZaD.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-DeDPWdvJ.mjs → fonts-OW3yAfO5.mjs} +2 -2
- package/dist/{fonts-DeDPWdvJ.mjs.map → fonts-OW3yAfO5.mjs.map} +1 -1
- package/dist/{gpu-CWjgql4C.mjs → gpu-R4T2Tndu.mjs} +2 -2
- package/dist/{gpu-CWjgql4C.mjs.map → gpu-R4T2Tndu.mjs.map} +1 -1
- package/dist/{index-E2IXX0Cz.d.mts → index-9xte4JgL.d.mts} +110 -61
- package/dist/index-9xte4JgL.d.mts.map +1 -0
- package/dist/{index-YB9j9KUx.d.mts → index-B0Vq8Bwf.d.mts} +3 -3
- package/dist/{index-YB9j9KUx.d.mts.map → index-B0Vq8Bwf.d.mts.map} +1 -1
- package/dist/{index-BFTtXosj.d.mts → index-BVd6nXd5.d.mts} +2 -2
- package/dist/index-BVd6nXd5.d.mts.map +1 -0
- package/dist/{index-CnZhBlob.d.mts → index-Bv7gxGK1.d.mts} +2 -2
- package/dist/{index-CnZhBlob.d.mts.map → index-Bv7gxGK1.d.mts.map} +1 -1
- package/dist/{index-a6JrbAK0.d.mts → index-C-V6CAhP.d.mts} +32 -2
- package/dist/index-C-V6CAhP.d.mts.map +1 -0
- package/dist/{index-DQ1U3HC3.d.mts → index-C7-p9zwU.d.mts} +3 -3
- package/dist/{index-DQ1U3HC3.d.mts.map → index-C7-p9zwU.d.mts.map} +1 -1
- package/dist/{index-rtCXNxGO.d.mts → index-CEKxvGY-.d.mts} +2 -2
- package/dist/{index-rtCXNxGO.d.mts.map → index-CEKxvGY-.d.mts.map} +1 -1
- package/dist/{index-X2u96TEo.d.mts → index-CRaydvLi.d.mts} +29 -11
- package/dist/index-CRaydvLi.d.mts.map +1 -0
- package/dist/{index-DBh3WphX.d.mts → index-D1FqV1eu.d.mts} +2 -2
- package/dist/{index-DBh3WphX.d.mts.map → index-D1FqV1eu.d.mts.map} +1 -1
- package/dist/{index-Dibc_xpC.d.mts → index-DoP6EiHj.d.mts} +5 -5
- package/dist/{index-Dibc_xpC.d.mts.map → index-DoP6EiHj.d.mts.map} +1 -1
- package/dist/{index-D68eGFNE.d.mts → index-GA9_Z8Fn.d.mts} +2 -2
- package/dist/{index-D68eGFNE.d.mts.map → index-GA9_Z8Fn.d.mts.map} +1 -1
- package/dist/index.d.mts +14 -14
- package/dist/index.mjs +50 -50
- package/dist/preview/index.d.mts +5 -5
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-PDz7o2xg.mjs → preview-D7BGmE1E.mjs} +3 -3
- package/dist/{preview-PDz7o2xg.mjs.map → preview-D7BGmE1E.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-IEEV5RB3.mjs → chunk-3C2XT64C.mjs} +1 -1
- package/dist/preview-engine/chunk-52X7SURQ.mjs +494 -0
- package/dist/preview-engine/{chunk-XYCR3STG.mjs → chunk-5DZTPUMH.mjs} +198 -92
- package/dist/preview-engine/{chunk-4P3MMJWD.mjs → chunk-FZ4RD7HV.mjs} +1 -1
- package/dist/preview-engine/chunk-GNDE3OXQ.mjs +5 -0
- package/dist/preview-engine/chunk-OBIJIQCZ.mjs +1 -0
- package/dist/preview-engine/{chunk-SMHEMYCV.mjs → chunk-UBY2UYEL.mjs} +1 -1
- package/dist/preview-engine/{chunk-UFPA36D2.mjs → chunk-UPZURPJY.mjs} +31 -31
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/renderers-DLJOA3BM.mjs +228 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Bn6ko_I4.mjs → program-tFKCWU2j.mjs} +109 -12
- package/dist/program-tFKCWU2j.mjs.map +1 -0
- package/dist/renderer/index.d.mts +4 -4
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-BCTUqJG7.mjs → renderer-03mYJLgX.mjs} +3 -3
- package/dist/{renderer-BCTUqJG7.mjs.map → renderer-03mYJLgX.mjs.map} +1 -1
- package/dist/{renderer-CyUiXLRa.mjs → renderer-0rveCDm-.mjs} +3 -3
- package/dist/{renderer-CyUiXLRa.mjs.map → renderer-0rveCDm-.mjs.map} +1 -1
- package/dist/{renderer-BUj7jE6t.mjs → renderer-2PjR3w-q.mjs} +3 -3
- package/dist/{renderer-BUj7jE6t.mjs.map → renderer-2PjR3w-q.mjs.map} +1 -1
- package/dist/{renderer-BqUAyzCZ.mjs → renderer-47y12Z37.mjs} +2 -2
- package/dist/{renderer-BqUAyzCZ.mjs.map → renderer-47y12Z37.mjs.map} +1 -1
- package/dist/renderer-6_bzbbXt.mjs +5 -0
- package/dist/renderer-8M-9G6F_.mjs +5 -0
- package/dist/{renderer-CwlY8Tb-.mjs → renderer-B0yVUOPP.mjs} +2 -2
- package/dist/{renderer-CwlY8Tb-.mjs.map → renderer-B0yVUOPP.mjs.map} +1 -1
- package/dist/renderer-B5OzKvF8.mjs +5 -0
- package/dist/{renderer-CgK7Q1G8.mjs → renderer-B7G1KohJ.mjs} +2 -2
- package/dist/renderer-BBCZ2qbE.mjs +5 -0
- package/dist/{renderer-CuPAQjDK.mjs → renderer-BBMtmxks.mjs} +3 -3
- package/dist/{renderer-CuPAQjDK.mjs.map → renderer-BBMtmxks.mjs.map} +1 -1
- package/dist/renderer-BChbxCux.mjs +5 -0
- package/dist/{renderer-C-GTxnfv.mjs → renderer-BDzn1AKF.mjs} +2 -2
- package/dist/{renderer-C-GTxnfv.mjs.map → renderer-BDzn1AKF.mjs.map} +1 -1
- package/dist/renderer-BGeMPr8C.mjs +5 -0
- package/dist/{renderer-RzkU_O1i.mjs → renderer-BGp0An5A.mjs} +3 -3
- package/dist/{renderer-RzkU_O1i.mjs.map → renderer-BGp0An5A.mjs.map} +1 -1
- package/dist/{renderer-BZgJj8Cl.mjs → renderer-BH7UCMPQ.mjs} +2 -2
- package/dist/{renderer-BZgJj8Cl.mjs.map → renderer-BH7UCMPQ.mjs.map} +1 -1
- package/dist/{renderer-aRk849b3.d.mts → renderer-BHYJlK6H.d.mts} +2 -2
- package/dist/{renderer-aRk849b3.d.mts.map → renderer-BHYJlK6H.d.mts.map} +1 -1
- package/dist/{renderer-Cu3iKMSJ.mjs → renderer-BJ8ea92W.mjs} +3 -3
- package/dist/{renderer-Cu3iKMSJ.mjs.map → renderer-BJ8ea92W.mjs.map} +1 -1
- package/dist/{renderer-Dp5ChuOs.mjs → renderer-BOSZAdgF.mjs} +2 -2
- package/dist/{renderer-Dp5ChuOs.mjs.map → renderer-BOSZAdgF.mjs.map} +1 -1
- package/dist/renderer-BPQ8Pkjb.mjs +5 -0
- package/dist/renderer-BTRpA3HD.mjs +5 -0
- package/dist/{renderer-vll8LX0I.mjs → renderer-BVIXKfbC.mjs} +132 -116
- package/dist/renderer-BVIXKfbC.mjs.map +1 -0
- package/dist/{renderer-DpZballM.mjs → renderer-BVU22lBS.mjs} +2 -2
- package/dist/{renderer-DpZballM.mjs.map → renderer-BVU22lBS.mjs.map} +1 -1
- package/dist/renderer-BVsECSn-.mjs +5 -0
- package/dist/{renderer-DwGlDNOV.mjs → renderer-BWSRryIA.mjs} +2 -2
- package/dist/{renderer-DwGlDNOV.mjs.map → renderer-BWSRryIA.mjs.map} +1 -1
- package/dist/{renderer-BMpmmYOq.mjs → renderer-BacY4nh8.mjs} +2 -2
- package/dist/{renderer-BMpmmYOq.mjs.map → renderer-BacY4nh8.mjs.map} +1 -1
- package/dist/{renderer-CZ5mwBW1.mjs → renderer-Baw6Utxi.mjs} +2 -2
- package/dist/{renderer-CZ5mwBW1.mjs.map → renderer-Baw6Utxi.mjs.map} +1 -1
- package/dist/{renderer-NBMmvqWl.mjs → renderer-Bcu3UrI-.mjs} +3 -3
- package/dist/{renderer-NBMmvqWl.mjs.map → renderer-Bcu3UrI-.mjs.map} +1 -1
- package/dist/{renderer-DxB_OfLs.mjs → renderer-BeNl_6EG.mjs} +2 -2
- package/dist/{renderer-DxB_OfLs.mjs.map → renderer-BeNl_6EG.mjs.map} +1 -1
- package/dist/{renderer-BHPgkoEL.mjs → renderer-BfZNIiSv.mjs} +2 -2
- package/dist/{renderer-BHPgkoEL.mjs.map → renderer-BfZNIiSv.mjs.map} +1 -1
- package/dist/renderer-Bgos68gc.mjs +6 -0
- package/dist/{renderer-CnL8Cmmr.mjs → renderer-BjDddtw9.mjs} +2 -2
- package/dist/renderer-BjHOvoqO.mjs +5 -0
- package/dist/renderer-BjXMPPlV.mjs +5 -0
- package/dist/{renderer-FPiLBwj5.mjs → renderer-BpVOk9ux.mjs} +2 -2
- package/dist/{renderer-FPiLBwj5.mjs.map → renderer-BpVOk9ux.mjs.map} +1 -1
- package/dist/{renderer-DJPZs_zV.mjs → renderer-Bpm145BW.mjs} +3 -3
- package/dist/{renderer-DJPZs_zV.mjs.map → renderer-Bpm145BW.mjs.map} +1 -1
- package/dist/{renderer-45ifiDkn.mjs → renderer-Brmbl12Y.mjs} +3 -3
- package/dist/{renderer-45ifiDkn.mjs.map → renderer-Brmbl12Y.mjs.map} +1 -1
- package/dist/renderer-Byobxqkv.mjs +5 -0
- package/dist/{renderer-DOZPZTxe.mjs → renderer-C20efMI0.mjs} +3 -3
- package/dist/{renderer-DOZPZTxe.mjs.map → renderer-C20efMI0.mjs.map} +1 -1
- package/dist/{renderer-puQhVfDS.mjs → renderer-C5AoaymD.mjs} +3 -3
- package/dist/{renderer-puQhVfDS.mjs.map → renderer-C5AoaymD.mjs.map} +1 -1
- package/dist/{renderer-B-LUGB9h.mjs → renderer-CCxk-RJR.mjs} +2 -2
- package/dist/{renderer-B-LUGB9h.mjs.map → renderer-CCxk-RJR.mjs.map} +1 -1
- package/dist/{renderer-BKi6jDi_.mjs → renderer-CKo7VR8x.mjs} +3 -3
- package/dist/{renderer-BKi6jDi_.mjs.map → renderer-CKo7VR8x.mjs.map} +1 -1
- package/dist/renderer-CKrsg3EG.mjs +5 -0
- package/dist/{renderer--Q0pM9Vh.mjs → renderer-COgwYqev.mjs} +3 -3
- package/dist/{renderer--Q0pM9Vh.mjs.map → renderer-COgwYqev.mjs.map} +1 -1
- package/dist/{renderer-B5b-ehRb.mjs → renderer-CP108ABB.mjs} +2 -2
- package/dist/{renderer-B5b-ehRb.mjs.map → renderer-CP108ABB.mjs.map} +1 -1
- package/dist/{renderer-BPOh9x5X.mjs → renderer-CP8wLzTU.mjs} +2 -2
- package/dist/{renderer-BPOh9x5X.mjs.map → renderer-CP8wLzTU.mjs.map} +1 -1
- package/dist/{renderer-BPiWsrC2.mjs → renderer-CT3zkfbf.mjs} +2 -2
- package/dist/{renderer-BPiWsrC2.mjs.map → renderer-CT3zkfbf.mjs.map} +1 -1
- package/dist/{renderer-CQFMyC_c.mjs → renderer-Ca1KjNCO.mjs} +2 -2
- package/dist/{renderer-CQFMyC_c.mjs.map → renderer-Ca1KjNCO.mjs.map} +1 -1
- package/dist/renderer-Cj875NuH.mjs +5 -0
- package/dist/{renderer-CMnlgAGs.mjs → renderer-Cm0tsbQH.mjs} +2 -2
- package/dist/{renderer-CMnlgAGs.mjs.map → renderer-Cm0tsbQH.mjs.map} +1 -1
- package/dist/renderer-CnmzJoMv.mjs +5 -0
- package/dist/{renderer-BtgqTg2K.mjs → renderer-Cqb7PGrI.mjs} +2 -2
- package/dist/{renderer-C9dqx3U7.mjs → renderer-CrxwW6VQ.mjs} +3 -3
- package/dist/{renderer-C9dqx3U7.mjs.map → renderer-CrxwW6VQ.mjs.map} +1 -1
- package/dist/renderer-CtklDaMg.mjs +5 -0
- package/dist/{renderer-dRXP2dJU.mjs → renderer-Cw6_NL2i.mjs} +3 -3
- package/dist/{renderer-dRXP2dJU.mjs.map → renderer-Cw6_NL2i.mjs.map} +1 -1
- package/dist/{renderer-C_1eqfI0.mjs → renderer-D-KHHWQD.mjs} +3 -3
- package/dist/{renderer-C_1eqfI0.mjs.map → renderer-D-KHHWQD.mjs.map} +1 -1
- package/dist/{renderer-CxSFvKd1.mjs → renderer-D-RhYvVl.mjs} +2 -2
- package/dist/{renderer-CxSFvKd1.mjs.map → renderer-D-RhYvVl.mjs.map} +1 -1
- package/dist/renderer-D1tK3in_.mjs +5 -0
- package/dist/{renderer-Nnu32rqg.mjs → renderer-D2wNFNRf.mjs} +2 -2
- package/dist/{renderer-Nnu32rqg.mjs.map → renderer-D2wNFNRf.mjs.map} +1 -1
- package/dist/renderer-D2yc9P61.mjs +5 -0
- package/dist/renderer-D4v-JvSr.mjs +5 -0
- package/dist/renderer-D7WRWDwB.mjs +5 -0
- package/dist/{renderer-DXFJv_e6.mjs → renderer-DA8YEo_d.mjs} +3 -3
- package/dist/{renderer-DXFJv_e6.mjs.map → renderer-DA8YEo_d.mjs.map} +1 -1
- package/dist/{renderer-CYwVNbUh.mjs → renderer-DEjo6dw_.mjs} +2 -2
- package/dist/{renderer-CYwVNbUh.mjs.map → renderer-DEjo6dw_.mjs.map} +1 -1
- package/dist/renderer-DGvA0tdB.mjs +5 -0
- package/dist/{renderer-Br8km655.mjs → renderer-DIEeHiQA.mjs} +2 -2
- package/dist/{renderer-Br8km655.mjs.map → renderer-DIEeHiQA.mjs.map} +1 -1
- package/dist/{renderer-SJyp9-62.mjs → renderer-DNxWOz8Q.mjs} +2 -2
- package/dist/{renderer-SJyp9-62.mjs.map → renderer-DNxWOz8Q.mjs.map} +1 -1
- package/dist/renderer-DO7v5Sdm.mjs +5 -0
- package/dist/renderer-DRVvt7-V.mjs +5 -0
- package/dist/{renderer-DGb_wgTW.mjs → renderer-DVPgWHZw.mjs} +3 -3
- package/dist/{renderer-DGb_wgTW.mjs.map → renderer-DVPgWHZw.mjs.map} +1 -1
- package/dist/{renderer-BjgFpwVK.mjs → renderer-DWq9gYRw.mjs} +3 -3
- package/dist/{renderer-BjgFpwVK.mjs.map → renderer-DWq9gYRw.mjs.map} +1 -1
- package/dist/renderer-DYMCd3jL.mjs +5 -0
- package/dist/{renderer-C1ctHdXl.mjs → renderer-D_j1WKMD.mjs} +3 -3
- package/dist/{renderer-C1ctHdXl.mjs.map → renderer-D_j1WKMD.mjs.map} +1 -1
- package/dist/{renderer-BsMZ5Iaq.mjs → renderer-DcAKDAnS.mjs} +3 -3
- package/dist/{renderer-BsMZ5Iaq.mjs.map → renderer-DcAKDAnS.mjs.map} +1 -1
- package/dist/{renderer-g9SstkTz.mjs → renderer-Dgj46uEU.mjs} +2 -2
- package/dist/{renderer-DRal7Goa.mjs → renderer-DhyMfG1v.mjs} +3 -3
- package/dist/{renderer-DRal7Goa.mjs.map → renderer-DhyMfG1v.mjs.map} +1 -1
- package/dist/{renderer-BO_wuUKA.mjs → renderer-Dj2H5JPR.mjs} +3 -3
- package/dist/{renderer-BO_wuUKA.mjs.map → renderer-Dj2H5JPR.mjs.map} +1 -1
- package/dist/{renderer-BlZgyBSo.mjs → renderer-DkOuQi84.mjs} +3 -3
- package/dist/{renderer-BlZgyBSo.mjs.map → renderer-DkOuQi84.mjs.map} +1 -1
- package/dist/renderer-DmHKw-MM.mjs +5 -0
- package/dist/renderer-DoDsuZ6G.mjs +5 -0
- package/dist/{renderer-BgjPbgbn.mjs → renderer-Dr0tXA4k.mjs} +3 -3
- package/dist/{renderer-BgjPbgbn.mjs.map → renderer-Dr0tXA4k.mjs.map} +1 -1
- package/dist/{renderer-opVuiAQR.mjs → renderer-DtMVitEF.mjs} +2 -2
- package/dist/{renderer-opVuiAQR.mjs.map → renderer-DtMVitEF.mjs.map} +1 -1
- package/dist/{renderer-D-fzEZfX.mjs → renderer-Dwwnx7Dk.mjs} +2 -2
- package/dist/{renderer-D-fzEZfX.mjs.map → renderer-Dwwnx7Dk.mjs.map} +1 -1
- package/dist/{renderer-dGEMVaZ3.mjs → renderer-DzLrvCB2.mjs} +2 -2
- package/dist/{renderer-dGEMVaZ3.mjs.map → renderer-DzLrvCB2.mjs.map} +1 -1
- package/dist/renderer-EpgclS70.mjs +5 -0
- package/dist/{renderer-549d94qG.mjs → renderer-FYOL5Za6.mjs} +3 -3
- package/dist/{renderer-549d94qG.mjs.map → renderer-FYOL5Za6.mjs.map} +1 -1
- package/dist/renderer-GroKiYyK.mjs +5 -0
- package/dist/{renderer-CciiDHuU.mjs → renderer-I0Hh9cLK.mjs} +3 -3
- package/dist/{renderer-CciiDHuU.mjs.map → renderer-I0Hh9cLK.mjs.map} +1 -1
- package/dist/renderer-MQ5K_xIS.mjs +5 -0
- package/dist/{renderer-C7m7Yxgc.mjs → renderer-NRMlYkX6.mjs} +3 -3
- package/dist/{renderer-C7m7Yxgc.mjs.map → renderer-NRMlYkX6.mjs.map} +1 -1
- package/dist/{renderer-BIieU9pY.mjs → renderer-Nnmi8Gt6.mjs} +3 -3
- package/dist/{renderer-BIieU9pY.mjs.map → renderer-Nnmi8Gt6.mjs.map} +1 -1
- package/dist/renderer-U43SflML.mjs +5 -0
- package/dist/renderer-UqOmBgCv.mjs +5 -0
- package/dist/{renderer-KgsVk9c6.mjs → renderer-W1bVNVR6.mjs} +3 -3
- package/dist/{renderer-KgsVk9c6.mjs.map → renderer-W1bVNVR6.mjs.map} +1 -1
- package/dist/renderer-XLULgJM0.mjs +5 -0
- package/dist/{renderer-CE4535aW.mjs → renderer-ZnrEfkYh.mjs} +2 -2
- package/dist/{renderer-CE4535aW.mjs.map → renderer-ZnrEfkYh.mjs.map} +1 -1
- package/dist/{renderer-RAq3LnNy.mjs → renderer-_pC-jB9O.mjs} +2 -2
- package/dist/{renderer-RAq3LnNy.mjs.map → renderer-_pC-jB9O.mjs.map} +1 -1
- package/dist/{renderer-Dz6P-rPI.mjs → renderer-iMiYStcW.mjs} +2 -2
- package/dist/{renderer-Dz6P-rPI.mjs.map → renderer-iMiYStcW.mjs.map} +1 -1
- package/dist/{renderer-S9tVGneU.mjs → renderer-jUKdkmG5.mjs} +69 -69
- package/dist/{renderer-S9tVGneU.mjs.map → renderer-jUKdkmG5.mjs.map} +1 -1
- package/dist/{renderer-_54hiCq0.mjs → renderer-k5d7JSbs.mjs} +3 -3
- package/dist/{renderer-_54hiCq0.mjs.map → renderer-k5d7JSbs.mjs.map} +1 -1
- package/dist/renderer-lNjxY1GG.mjs +5 -0
- package/dist/{renderer-CL-vyXgX.mjs → renderer-nHS3Sius.mjs} +3 -3
- package/dist/{renderer-CL-vyXgX.mjs.map → renderer-nHS3Sius.mjs.map} +1 -1
- package/dist/{renderer-Cp_HOmp7.mjs → renderer-ngmYIIob.mjs} +3 -3
- package/dist/{renderer-Cp_HOmp7.mjs.map → renderer-ngmYIIob.mjs.map} +1 -1
- package/dist/{renderer-LXhEPCmy.mjs → renderer-raxwsiGI.mjs} +3 -3
- package/dist/{renderer-LXhEPCmy.mjs.map → renderer-raxwsiGI.mjs.map} +1 -1
- package/dist/renderer-ukufL7pl.mjs +5 -0
- package/dist/renderer-wb0NCKdF.mjs +5 -0
- package/dist/{renderer-D8gN7aqk.mjs → renderer-zRq0j6Xy.mjs} +3 -3
- package/dist/{renderer-D8gN7aqk.mjs.map → renderer-zRq0j6Xy.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs → renderers-CP8CFWDs-CshljORp.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs.map → renderers-CP8CFWDs-CshljORp.mjs.map} +1 -1
- package/dist/sam/index.d.mts +3 -3
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/dist/{src-BzFGotRc.mjs → src-Dy4gnc6w.mjs} +43 -13
- package/dist/src-Dy4gnc6w.mjs.map +1 -0
- package/package.json +60 -60
- package/dist/dist-CUNvNDS3.mjs.map +0 -1
- package/dist/dist-D3BeAZ7X.mjs.map +0 -1
- package/dist/index-BFTtXosj.d.mts.map +0 -1
- package/dist/index-E2IXX0Cz.d.mts.map +0 -1
- package/dist/index-X2u96TEo.d.mts.map +0 -1
- package/dist/index-a6JrbAK0.d.mts.map +0 -1
- package/dist/preview-engine/chunk-77WWW75O.mjs +0 -5
- package/dist/preview-engine/chunk-7M5LE6EM.mjs +0 -483
- package/dist/preview-engine/chunk-FRJPXWAG.mjs +0 -1
- package/dist/preview-engine/renderers-TTXTV4PC.mjs +0 -228
- package/dist/program-Bn6ko_I4.mjs.map +0 -1
- package/dist/renderer-1aSF5BmY.mjs +0 -5
- package/dist/renderer-B2e4Gr9u.mjs +0 -5
- package/dist/renderer-B6fz4j50.mjs +0 -5
- package/dist/renderer-BEftIYw-.mjs +0 -5
- package/dist/renderer-BHTnO-7e.mjs +0 -5
- package/dist/renderer-BMlnQqTO.mjs +0 -5
- package/dist/renderer-BOzcFezY.mjs +0 -5
- package/dist/renderer-BVbjJIKJ.mjs +0 -5
- package/dist/renderer-BXsHKf4k.mjs +0 -5
- package/dist/renderer-Bks49NVl.mjs +0 -5
- package/dist/renderer-C-t7qFKr.mjs +0 -5
- package/dist/renderer-C24n-6CX.mjs +0 -6
- package/dist/renderer-CCReX-7M.mjs +0 -5
- package/dist/renderer-CIxFQrAm.mjs +0 -5
- package/dist/renderer-CLHBMIqJ.mjs +0 -5
- package/dist/renderer-CMJKi-Ye.mjs +0 -5
- package/dist/renderer-C_H3mHZa.mjs +0 -5
- package/dist/renderer-CfkTdR5B.mjs +0 -5
- package/dist/renderer-CnhkXJ0R.mjs +0 -5
- package/dist/renderer-CqpyVsq_.mjs +0 -5
- package/dist/renderer-CtWgIpTE.mjs +0 -5
- package/dist/renderer-CyuKr5ca.mjs +0 -5
- package/dist/renderer-D9ON_1Hf.mjs +0 -5
- package/dist/renderer-DAnTgh4o.mjs +0 -5
- package/dist/renderer-DWgpivA3.mjs +0 -5
- package/dist/renderer-Dh_qNNwR.mjs +0 -5
- package/dist/renderer-DkCpXPMP.mjs +0 -5
- package/dist/renderer-Dre-6cDR.mjs +0 -5
- package/dist/renderer-Ds5z4_HX.mjs +0 -5
- package/dist/renderer-HGSCOMyP.mjs +0 -5
- package/dist/renderer-KMY8W-cJ.mjs +0 -5
- package/dist/renderer-R21YvXz3.mjs +0 -5
- package/dist/renderer-RtzCz37W.mjs +0 -5
- package/dist/renderer-iMrqAjix.mjs +0 -5
- package/dist/renderer-sMed1u1O.mjs +0 -5
- package/dist/renderer-tsAuo46l.mjs +0 -5
- package/dist/renderer-vll8LX0I.mjs.map +0 -1
- package/dist/src-BzFGotRc.mjs.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "./chunk-DOL2i2sR.mjs";
|
|
2
2
|
import { It as getActiveMediaMetadata, _n as reportRenderDiagnostic, p as DEFAULT_DURATION_MS, rn as mediaSourceTime, vn as resolveBoolean, xn as resolveNumber } from "./dist-C8XSqfTx.mjs";
|
|
3
3
|
import { i as effectReach, n as defineRenderer, r as effectMaxPixelScale, s as resolveFrameNumber, t as audioRegistry, u as solveHomography } from "./renderer-BuvKGwk3.mjs";
|
|
4
|
-
import { B as jointMatrices, F as getPrimitiveGeometry, G as measureMaxCaptionHeight, M as fitSpansToText, N as generateExtrudedTextGeometry,
|
|
5
|
-
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-
|
|
6
|
-
import {
|
|
4
|
+
import { $ as poseNodes, B as jointMatrices, F as getPrimitiveGeometry, G as measureMaxCaptionHeight, J as parseDashArray, M as fitSpansToText, N as generateExtrudedTextGeometry, _t as Light3D, ct as srtLoader, d as ScreenSpaceRelightPipeline, dt as transformScale, it as sampleMorphWeights, l as Renderer3D, mt as Camera3D, n as AudioLatentTrackCache, p as SlugFontCache, pt as resolveMediaSourceUrl, q as parseColor, rt as resolveTextSpans, st as spansText, xt as Vector3Math, yt as Matrix4Math } from "./dist--Uu5bQ_6.mjs";
|
|
5
|
+
import { a as createFullscreenPipeline, l as fragmentBindGroupLayout, n as PREMULTIPLIED_BLEND, t as FULLSCREEN_QUAD_WGSL } from "./gpu-R4T2Tndu.mjs";
|
|
6
|
+
import { i as keyedGain, m as measureText, n as decodeAudioSource, s as resolveLayerDuration } from "./dist-B8Nby2CU.mjs";
|
|
7
7
|
import { o as TemporalDeflickerPipeline } from "./dist-DgZpN6IK.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { F as collectNodeOps, G as initLayout, H as evaluateKeyframes, R as computeLayout, U as evaluateTrackAtFrame } from "./program-tFKCWU2j.mjs";
|
|
9
9
|
import gsapModule from "gsap";
|
|
10
10
|
|
|
11
|
-
//#region ../../nodes/node-compositor/dist/renderers-
|
|
11
|
+
//#region ../../nodes/node-compositor/dist/renderers-IzbDoLXh.mjs
|
|
12
12
|
/**
|
|
13
13
|
* Solves a cubic bezier curve defined by control points (x1, y1) and (x2, y2)
|
|
14
14
|
* for a given progress parameter t in [0, 1].
|
|
@@ -217,6 +217,8 @@ function mappedEase(ease, durationFrames, fps = 24) {
|
|
|
217
217
|
else if (name === "elastic") suffix = "(1, 0.3)";
|
|
218
218
|
return `${easeName}.${dir}${suffix}`;
|
|
219
219
|
}
|
|
220
|
+
/** Props that switch rather than tween: each key is a set from its frame on. */
|
|
221
|
+
const DISCRETE_PROPS = new Set(["hidden", "muted"]);
|
|
220
222
|
function compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames, signals, live, step) {
|
|
221
223
|
const prop = track.prop;
|
|
222
224
|
const source = track.source ?? { type: "keyframe" };
|
|
@@ -283,7 +285,7 @@ function compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames
|
|
|
283
285
|
dropped,
|
|
284
286
|
maxAuthoredFrame
|
|
285
287
|
};
|
|
286
|
-
if (prop
|
|
288
|
+
if (DISCRETE_PROPS.has(prop)) for (const kf of validKeyframes) {
|
|
287
289
|
const absoluteSec = (startFrame + kf.frame) / fps;
|
|
288
290
|
tl.set(stub, {
|
|
289
291
|
[prop]: kf.value,
|
|
@@ -584,10 +586,10 @@ function compileTimeline(renderId, virtualMedia, options) {
|
|
|
584
586
|
signals
|
|
585
587
|
});
|
|
586
588
|
else if (track.keyframes && track.keyframes.length > 0) {
|
|
587
|
-
const
|
|
589
|
+
const first = track.keyframes.reduce((a, b) => b.frame < a.frame ? b : a);
|
|
588
590
|
const seeded = stub;
|
|
589
|
-
if (
|
|
590
|
-
else if (seeded[track.prop] === void 0) seeded[track.prop] = lop[track.prop] ??
|
|
591
|
+
if (!DISCRETE_PROPS.has(track.prop) || first.frame === 0) seeded[track.prop] = first.value;
|
|
592
|
+
else if (seeded[track.prop] === void 0) seeded[track.prop] = lop[track.prop] ?? first.value;
|
|
591
593
|
}
|
|
592
594
|
targetsById[layerId] = stub;
|
|
593
595
|
});
|
|
@@ -1082,6 +1084,21 @@ function has3DTransform(target, lop) {
|
|
|
1082
1084
|
return false;
|
|
1083
1085
|
}
|
|
1084
1086
|
const meshHasAlpha = /* @__PURE__ */ new WeakMap();
|
|
1087
|
+
/**
|
|
1088
|
+
* How far a text node's ink can reach past its layout box, in px: an outside
|
|
1089
|
+
* stroke reaches its full width past the outline (any other alignment, half),
|
|
1090
|
+
* a shadow its offset plus blur. One px of slack covers antialiasing.
|
|
1091
|
+
*/
|
|
1092
|
+
function textInkOutset(target, lop) {
|
|
1093
|
+
const num = (v) => typeof v === "number" && v > 0 ? v : 0;
|
|
1094
|
+
const width = num(target?.strokeWidth ?? lop.strokeWidth);
|
|
1095
|
+
const stroke = Boolean(target?.stroke ?? target?.strokeColor ?? lop.stroke) ? lop.strokeAlign === "outside" ? width : width / 2 : 0;
|
|
1096
|
+
let shadow = 0;
|
|
1097
|
+
const shadows = lop.shadows;
|
|
1098
|
+
if (Array.isArray(shadows)) for (const s of shadows) shadow = Math.max(shadow, Math.max(Math.abs(s.offset?.x ?? 0), Math.abs(s.offset?.y ?? 0)) + 2 * num(s.blurRadius));
|
|
1099
|
+
const reach = stroke + shadow;
|
|
1100
|
+
return reach > 0 ? Math.ceil(reach) + 1 : 0;
|
|
1101
|
+
}
|
|
1085
1102
|
function hasVertexAlpha(mesh) {
|
|
1086
1103
|
const cached = meshHasAlpha.get(mesh);
|
|
1087
1104
|
if (cached !== void 0) return cached;
|
|
@@ -1175,6 +1192,8 @@ const audioTrackLatentCache = /* @__PURE__ */ new Map();
|
|
|
1175
1192
|
const swarmStateMap = /* @__PURE__ */ new WeakMap();
|
|
1176
1193
|
const deviceRenderer3DCache = /* @__PURE__ */ new WeakMap();
|
|
1177
1194
|
/** One Renderer3D per device, target format and MSAA sample count. */
|
|
1195
|
+
/** The command encoder the 3D pools were last recycled for, per device. */
|
|
1196
|
+
const poolEncoder = /* @__PURE__ */ new WeakMap();
|
|
1178
1197
|
function getRenderer3D(device, format, sampleCount) {
|
|
1179
1198
|
let byConfig = deviceRenderer3DCache.get(device);
|
|
1180
1199
|
if (!byConfig) {
|
|
@@ -1327,6 +1346,8 @@ function surfaceProps(target, lop, mat) {
|
|
|
1327
1346
|
out.emissiveIntensity = target?.emissiveIntensity ?? lop.emissiveIntensity ?? mat?.emissiveStrength ?? 1;
|
|
1328
1347
|
}
|
|
1329
1348
|
if (lop.castShadow !== void 0) out.castShadow = lop.castShadow;
|
|
1349
|
+
out.toon = target?.toon ?? lop.toon;
|
|
1350
|
+
out.outline = target?.outline ?? lop.outline;
|
|
1330
1351
|
return out;
|
|
1331
1352
|
}
|
|
1332
1353
|
function computeContainerScissor(matrix, width, height) {
|
|
@@ -1650,8 +1671,13 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1650
1671
|
});
|
|
1651
1672
|
const { targetsById } = compiled;
|
|
1652
1673
|
seekTimeline(compiled, shiftedFrame, fps ?? 24);
|
|
1653
|
-
getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d)
|
|
1654
|
-
getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? "rgba8unorm")
|
|
1674
|
+
const r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
1675
|
+
const relightPipe = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? "rgba8unorm");
|
|
1676
|
+
if (poolEncoder.get(ctx.device) !== encoder) {
|
|
1677
|
+
poolEncoder.set(ctx.device, encoder);
|
|
1678
|
+
r3d.resetPools();
|
|
1679
|
+
relightPipe.resetPools();
|
|
1680
|
+
}
|
|
1655
1681
|
const clearColor = parseColor(vop.backgroundColor);
|
|
1656
1682
|
ctx.renderer.beginFrame(encoder, compView, clearColor, nativeWidth, nativeHeight, "clear").end();
|
|
1657
1683
|
let currentCompTex = compTex;
|
|
@@ -1872,6 +1898,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1872
1898
|
toneMapping: lop.toneMapping,
|
|
1873
1899
|
fog: lop.fog,
|
|
1874
1900
|
floor: lop.floor,
|
|
1901
|
+
outlines: lop.outlines,
|
|
1875
1902
|
...intensity$1 !== void 0 && { intensity: intensity$1 }
|
|
1876
1903
|
};
|
|
1877
1904
|
sceneBloom = lop.bloom === true ? {} : lop.bloom && typeof lop.bloom === "object" ? { ...lop.bloom } : null;
|
|
@@ -1945,11 +1972,11 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1945
1972
|
finalTex: curTex,
|
|
1946
1973
|
finalView: curView
|
|
1947
1974
|
};
|
|
1948
|
-
const r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
1975
|
+
const r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
1949
1976
|
for (const item of pending3DItems) {
|
|
1950
1977
|
if (item.kind !== "mesh") continue;
|
|
1951
|
-
if (item.opts.morphWeights?.length) item.meshBuffers = r3d.morphMesh(encoder, item.mesh, item.opts.morphWeights, item.opts.wireframe);
|
|
1952
|
-
if (item.opts.audioDeform) item.meshBuffers = r3d.deformMesh(encoder, item.mesh, item.opts.audioDeform, item.opts.wireframe, item.meshBuffers);
|
|
1978
|
+
if (item.opts.morphWeights?.length) item.meshBuffers = r3d$1.morphMesh(encoder, item.mesh, item.opts.morphWeights, item.opts.wireframe);
|
|
1979
|
+
if (item.opts.audioDeform) item.meshBuffers = r3d$1.deformMesh(encoder, item.mesh, item.opts.audioDeform, item.opts.wireframe, item.meshBuffers);
|
|
1953
1980
|
}
|
|
1954
1981
|
const itemTextures = pendingTextures();
|
|
1955
1982
|
const scene3dTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [
|
|
@@ -1959,10 +1986,13 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1959
1986
|
...itemTextures
|
|
1960
1987
|
]);
|
|
1961
1988
|
const scene3dView = scene3dTex.createView();
|
|
1989
|
+
const outlineSetting = sceneEnvironment?.outlines;
|
|
1990
|
+
const outlines = outlineSetting === true ? {} : outlineSetting || null;
|
|
1991
|
+
const geometryEnabled = dofEnabled || Boolean(outlines);
|
|
1962
1992
|
let linearDepthTex;
|
|
1963
1993
|
let linearDepthView;
|
|
1964
|
-
if (
|
|
1965
|
-
linearDepthTex = r3d.getOrCreateLinearDepthTexture(nativeWidth, nativeHeight);
|
|
1994
|
+
if (geometryEnabled) {
|
|
1995
|
+
linearDepthTex = r3d$1.getOrCreateLinearDepthTexture(nativeWidth, nativeHeight);
|
|
1966
1996
|
linearDepthView = linearDepthTex.createView();
|
|
1967
1997
|
}
|
|
1968
1998
|
const shadow = [];
|
|
@@ -1980,7 +2010,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1980
2010
|
buffers: item.meshBuffers,
|
|
1981
2011
|
opts: item.opts
|
|
1982
2012
|
};
|
|
1983
|
-
receivers.push(r3d.worldBounds(caster));
|
|
2013
|
+
receivers.push(r3d$1.worldBounds(caster));
|
|
1984
2014
|
if (item.opts.castShadow !== false && item.opts.material !== "unlit") casters.push(caster);
|
|
1985
2015
|
} else if (item.kind === "quad") {
|
|
1986
2016
|
const caster = {
|
|
@@ -1988,11 +2018,11 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
1988
2018
|
texture: item.texture,
|
|
1989
2019
|
opts: item.opts
|
|
1990
2020
|
};
|
|
1991
|
-
receivers.push(r3d.worldBounds(caster));
|
|
2021
|
+
receivers.push(r3d$1.worldBounds(caster));
|
|
1992
2022
|
if (item.opts.castShadow === true) casters.push(caster);
|
|
1993
2023
|
}
|
|
1994
2024
|
if (casters.length > 0) for (const { light, index } of shadowLights) {
|
|
1995
|
-
const result = r3d.renderShadowMap(encoder, light, index, casters, receivers, {
|
|
2025
|
+
const result = r3d$1.renderShadowMap(encoder, light, index, casters, receivers, {
|
|
1996
2026
|
mapSize: shadowMapSize,
|
|
1997
2027
|
layer: shadow.length,
|
|
1998
2028
|
layerCount: shadowLights.length
|
|
@@ -2007,7 +2037,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2007
2037
|
const forward = Vector3Math.subtract(camera.target, camera.eye);
|
|
2008
2038
|
for (const item of pending3DItems) if (isGlass(item)) glass.push(item);
|
|
2009
2039
|
else if (item.kind === "mesh" && item.opts.transparent) {
|
|
2010
|
-
const bounds = r3d.worldBounds({
|
|
2040
|
+
const bounds = r3d$1.worldBounds({
|
|
2011
2041
|
kind: "mesh",
|
|
2012
2042
|
mesh: item.mesh,
|
|
2013
2043
|
opts: item.opts
|
|
@@ -2041,7 +2071,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2041
2071
|
for (let j = i; j < end; j++) {
|
|
2042
2072
|
const item = opaque[j];
|
|
2043
2073
|
if (item.kind !== "mesh") throw new Error("Invalid mesh batch");
|
|
2044
|
-
const matrix = r3d.meshModelMatrix(item.opts);
|
|
2074
|
+
const matrix = r3d$1.meshModelMatrix(item.opts);
|
|
2045
2075
|
data.set(matrix, (j - i) * 32);
|
|
2046
2076
|
data.set(item.opts.normalMatrix ?? Light3D.computeNormalMatrix(matrix), (j - i) * 32 + 16);
|
|
2047
2077
|
}
|
|
@@ -2051,7 +2081,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2051
2081
|
...first.opts,
|
|
2052
2082
|
modelMatrix: Matrix4Math.identity(),
|
|
2053
2083
|
normalMatrix: Matrix4Math.identity(),
|
|
2054
|
-
instanceBuffer: r3d.uploadInstanceData(data),
|
|
2084
|
+
instanceBuffer: r3d$1.uploadInstanceData(data),
|
|
2055
2085
|
instanceCount: end - i,
|
|
2056
2086
|
matrixInstances: true
|
|
2057
2087
|
}
|
|
@@ -2085,17 +2115,17 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2085
2115
|
camera.up[2]
|
|
2086
2116
|
]
|
|
2087
2117
|
};
|
|
2088
|
-
const { pass: reflPass, cameraBindGroup: reflCamBind, lightsBindGroup: reflLightsBind, reflectionTexture: reflTex } = r3d.beginReflectionPass(encoder, nativeWidth, nativeHeight, reflectedCamera, sceneLights, {
|
|
2118
|
+
const { pass: reflPass, cameraBindGroup: reflCamBind, lightsBindGroup: reflLightsBind, reflectionTexture: reflTex } = r3d$1.beginReflectionPass(encoder, nativeWidth, nativeHeight, reflectedCamera, sceneLights, {
|
|
2089
2119
|
environment: sceneEnvironment,
|
|
2090
2120
|
shadow: null
|
|
2091
2121
|
});
|
|
2092
|
-
for (const item of ordered) if (item.kind === "quad") r3d.drawTextureQuad(reflPass, reflCamBind, reflLightsBind, item.texture, item.opts, false);
|
|
2093
|
-
else if (item.kind === "slug") r3d.drawSlugText(reflPass, reflCamBind, reflLightsBind, item.batches, item.opts, item.stackBase, false);
|
|
2094
|
-
else if (item.kind === "mesh") r3d.drawMesh3D(reflPass, reflCamBind, reflLightsBind, item.meshBuffers ?? item.mesh, item.texture, item.opts, false);
|
|
2122
|
+
for (const item of ordered) if (item.kind === "quad") r3d$1.drawTextureQuad(reflPass, reflCamBind, reflLightsBind, item.texture, item.opts, false);
|
|
2123
|
+
else if (item.kind === "slug") r3d$1.drawSlugText(reflPass, reflCamBind, reflLightsBind, item.batches, item.opts, item.stackBase, false);
|
|
2124
|
+
else if (item.kind === "mesh") r3d$1.drawMesh3D(reflPass, reflCamBind, reflLightsBind, item.meshBuffers ?? item.mesh, item.texture, item.opts, false);
|
|
2095
2125
|
reflPass.end();
|
|
2096
|
-
blurredReflectionTex = r3d.blurReflection(encoder, reflTex, floorSpec.roughness ?? .35);
|
|
2126
|
+
blurredReflectionTex = r3d$1.blurReflection(encoder, reflTex, floorSpec.roughness ?? .35);
|
|
2097
2127
|
}
|
|
2098
|
-
const { pass: pass3d, cameraBindGroup, cameraBuffer, lightsBindGroup } = r3d.beginPass(encoder, scene3dView, nativeWidth, nativeHeight, camera, "clear", {
|
|
2128
|
+
const { pass: pass3d, cameraBindGroup, cameraBuffer, lightsBindGroup } = r3d$1.beginPass(encoder, scene3dView, nativeWidth, nativeHeight, camera, "clear", {
|
|
2099
2129
|
r: 0,
|
|
2100
2130
|
g: 0,
|
|
2101
2131
|
b: 0,
|
|
@@ -2104,23 +2134,36 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2104
2134
|
environment: sceneEnvironment,
|
|
2105
2135
|
shadow: shadow.length ? shadow : null
|
|
2106
2136
|
}, Boolean(sceneBloom));
|
|
2107
|
-
if (floorSpec && blurredReflectionTex) r3d.drawFloor(pass3d, cameraBindGroup, lightsBindGroup, blurredReflectionTex, floorSpec,
|
|
2108
|
-
for (const item of ordered) if (item.kind === "quad") r3d.drawTextureQuad(pass3d, cameraBindGroup, lightsBindGroup, item.texture, item.opts,
|
|
2109
|
-
else if (item.kind === "slug") r3d.drawSlugText(pass3d, cameraBindGroup, lightsBindGroup, item.batches, item.opts, item.stackBase,
|
|
2110
|
-
else if (item.kind === "mesh") r3d.drawMesh3D(pass3d, cameraBindGroup, lightsBindGroup, item.meshBuffers ?? item.mesh, item.texture, isGlass(item) ? {
|
|
2137
|
+
if (floorSpec && blurredReflectionTex) r3d$1.drawFloor(pass3d, cameraBindGroup, lightsBindGroup, blurredReflectionTex, floorSpec, geometryEnabled, Boolean(sceneBloom));
|
|
2138
|
+
for (const item of ordered) if (item.kind === "quad") r3d$1.drawTextureQuad(pass3d, cameraBindGroup, lightsBindGroup, item.texture, item.opts, geometryEnabled);
|
|
2139
|
+
else if (item.kind === "slug") r3d$1.drawSlugText(pass3d, cameraBindGroup, lightsBindGroup, item.batches, item.opts, item.stackBase, geometryEnabled);
|
|
2140
|
+
else if (item.kind === "mesh") r3d$1.drawMesh3D(pass3d, cameraBindGroup, lightsBindGroup, item.meshBuffers ?? item.mesh, item.texture, isGlass(item) ? {
|
|
2111
2141
|
...item.opts,
|
|
2112
2142
|
backdrop: curTex
|
|
2113
|
-
} : item.opts,
|
|
2143
|
+
} : item.opts, geometryEnabled);
|
|
2114
2144
|
pass3d.end();
|
|
2115
2145
|
let final3dTex = scene3dTex;
|
|
2146
|
+
if (outlines && linearDepthTex) {
|
|
2147
|
+
if (dofEnabled) r3d$1.resolveGeometry(encoder, linearDepthTex);
|
|
2148
|
+
const outlinedTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [
|
|
2149
|
+
curTex,
|
|
2150
|
+
targetTexture,
|
|
2151
|
+
scene3dTex,
|
|
2152
|
+
linearDepthTex,
|
|
2153
|
+
...curExcludes
|
|
2154
|
+
]);
|
|
2155
|
+
r3d$1.applyOutlines(encoder, scene3dTex, linearDepthTex, outlinedTex.createView(), camera, outlines, sceneEnvironment?.fog);
|
|
2156
|
+
final3dTex = outlinedTex;
|
|
2157
|
+
}
|
|
2116
2158
|
if (dofEnabled && linearDepthTex) {
|
|
2117
2159
|
const dofResultTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [
|
|
2118
2160
|
curTex,
|
|
2119
2161
|
targetTexture,
|
|
2120
2162
|
scene3dTex,
|
|
2163
|
+
final3dTex,
|
|
2121
2164
|
...curExcludes
|
|
2122
2165
|
]);
|
|
2123
|
-
r3d.applyDepthOfField(encoder,
|
|
2166
|
+
r3d$1.applyDepthOfField(encoder, final3dTex, linearDepthTex, dofResultTex.createView(), cameraBuffer);
|
|
2124
2167
|
final3dTex = dofResultTex;
|
|
2125
2168
|
}
|
|
2126
2169
|
if (sceneBloom) {
|
|
@@ -2131,7 +2174,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2131
2174
|
scene3dTex,
|
|
2132
2175
|
...curExcludes
|
|
2133
2176
|
]);
|
|
2134
|
-
r3d.applyBloom(encoder, final3dTex, bloomTex, sceneBloom, r3d.hdrSource());
|
|
2177
|
+
r3d$1.applyBloom(encoder, final3dTex, bloomTex, sceneBloom, r3d$1.hdrSource());
|
|
2135
2178
|
final3dTex = bloomTex;
|
|
2136
2179
|
}
|
|
2137
2180
|
const nextTex = ctx.renderer.composite(encoder, curTex, final3dTex, "normal", [targetTexture, ...curExcludes]);
|
|
@@ -2344,7 +2387,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2344
2387
|
if (durationFrames !== void 0 && shiftedFrame >= startFrame + durationFrames) return;
|
|
2345
2388
|
}
|
|
2346
2389
|
if (kind === "model3d") {
|
|
2347
|
-
const r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
2390
|
+
const r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
2348
2391
|
let modelSrc = lop.modelData ?? lop.src;
|
|
2349
2392
|
if (!modelSrc && lop.text3dOptions) {
|
|
2350
2393
|
const tOpts = lop.text3dOptions;
|
|
@@ -2364,7 +2407,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2364
2407
|
if (!modelSrc) return;
|
|
2365
2408
|
let model;
|
|
2366
2409
|
try {
|
|
2367
|
-
model = typeof modelSrc === "object" && modelSrc !== null && "meshes" in modelSrc ? modelSrc : await r3d.loadModelAsync(modelSrc, lop.modelFormat ?? "auto", {
|
|
2410
|
+
model = typeof modelSrc === "object" && modelSrc !== null && "meshes" in modelSrc ? modelSrc : await r3d$1.loadModelAsync(modelSrc, lop.modelFormat ?? "auto", {
|
|
2368
2411
|
center: lop.center,
|
|
2369
2412
|
normalizeSize: lop.normalizeSize
|
|
2370
2413
|
});
|
|
@@ -2433,7 +2476,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2433
2476
|
else if (m.modelData && "meshes" in m.modelData) vModel = m.modelData;
|
|
2434
2477
|
else if (m.primitive3d) vModel = getPrimitiveGeometry(m.primitive3d);
|
|
2435
2478
|
else if (m.src) try {
|
|
2436
|
-
vModel = r3d.loadModel(m.src, m.modelFormat ?? "auto", {
|
|
2479
|
+
vModel = r3d$1.loadModel(m.src, m.modelFormat ?? "auto", {
|
|
2437
2480
|
center: m.center,
|
|
2438
2481
|
normalizeSize: m.normalizeSize
|
|
2439
2482
|
});
|
|
@@ -2658,7 +2701,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2658
2701
|
if (bCount === 0) continue;
|
|
2659
2702
|
const v = variants[k];
|
|
2660
2703
|
const activeSlice = bCount === bucketCounts[k] ? bucketItems[k] : bucketItems[k].subarray(0, bCount * 16);
|
|
2661
|
-
const instanceBuffer = r3d.uploadInstanceData(activeSlice);
|
|
2704
|
+
const instanceBuffer = r3d$1.uploadInstanceData(activeSlice);
|
|
2662
2705
|
const bounds = Number.isFinite(bucketBounds[k].min[0]) ? bucketBounds[k] : void 0;
|
|
2663
2706
|
for (const mesh of v.meshes) {
|
|
2664
2707
|
const mat = mesh.materialName ? v.materials[mesh.materialName] : void 0;
|
|
@@ -2682,7 +2725,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2682
2725
|
pending3DItems.push({
|
|
2683
2726
|
kind: "mesh",
|
|
2684
2727
|
mesh,
|
|
2685
|
-
texture: mat ? await r3d.materialTexture(mat) : void 0,
|
|
2728
|
+
texture: mat ? await r3d$1.materialTexture(mat) : void 0,
|
|
2686
2729
|
opts: meshOpts
|
|
2687
2730
|
});
|
|
2688
2731
|
}
|
|
@@ -2798,7 +2841,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2798
2841
|
else if (m.modelData && "meshes" in m.modelData) vModel = m.modelData;
|
|
2799
2842
|
else if (m.primitive3d) vModel = getPrimitiveGeometry(m.primitive3d);
|
|
2800
2843
|
else if (m.src) try {
|
|
2801
|
-
vModel = r3d.loadModel(m.src, m.modelFormat ?? "auto", {
|
|
2844
|
+
vModel = r3d$1.loadModel(m.src, m.modelFormat ?? "auto", {
|
|
2802
2845
|
center: m.center,
|
|
2803
2846
|
normalizeSize: m.normalizeSize
|
|
2804
2847
|
});
|
|
@@ -2903,7 +2946,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2903
2946
|
};
|
|
2904
2947
|
let swarmState = swarmStateMap.get(lop);
|
|
2905
2948
|
if (!swarmState || swarmState.device !== ctx.device) {
|
|
2906
|
-
swarmState = r3d.swarm3dPipeline.createState(staticConfig);
|
|
2949
|
+
swarmState = r3d$1.swarm3dPipeline.createState(staticConfig);
|
|
2907
2950
|
swarmStateMap.set(lop, swarmState);
|
|
2908
2951
|
}
|
|
2909
2952
|
const targetF = shiftedFrame ?? 0;
|
|
@@ -2993,7 +3036,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
2993
3036
|
emitterPos
|
|
2994
3037
|
};
|
|
2995
3038
|
};
|
|
2996
|
-
r3d.swarm3dPipeline.advance(swarmState, staticConfig, targetF, fps || 30, frameSampler);
|
|
3039
|
+
r3d$1.swarm3dPipeline.advance(swarmState, staticConfig, targetF, fps || 30, frameSampler);
|
|
2997
3040
|
if (variants.length > 0) {
|
|
2998
3041
|
const sliceCount = swarmState.sliceCount;
|
|
2999
3042
|
for (let vIdx = 0; vIdx < variants.length; vIdx++) {
|
|
@@ -3021,7 +3064,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3021
3064
|
pending3DItems.push({
|
|
3022
3065
|
kind: "mesh",
|
|
3023
3066
|
mesh,
|
|
3024
|
-
texture: mat ? await r3d.materialTexture(mat) : void 0,
|
|
3067
|
+
texture: mat ? await r3d$1.materialTexture(mat) : void 0,
|
|
3025
3068
|
opts: meshOpts
|
|
3026
3069
|
});
|
|
3027
3070
|
}
|
|
@@ -3051,7 +3094,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3051
3094
|
pending3DItems.push({
|
|
3052
3095
|
kind: "mesh",
|
|
3053
3096
|
mesh,
|
|
3054
|
-
texture: mat ? await r3d.materialTexture(mat) : void 0,
|
|
3097
|
+
texture: mat ? await r3d$1.materialTexture(mat) : void 0,
|
|
3055
3098
|
opts: sparkOpts
|
|
3056
3099
|
});
|
|
3057
3100
|
}
|
|
@@ -3260,11 +3303,11 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3260
3303
|
thickness: target?.thickness ?? lop.thickness,
|
|
3261
3304
|
audioDeform: meshAudioDeform
|
|
3262
3305
|
};
|
|
3263
|
-
if (mat) meshOpts.maps = await r3d.materialMaps(mat);
|
|
3306
|
+
if (mat) meshOpts.maps = await r3d$1.materialMaps(mat);
|
|
3264
3307
|
pending3DItems.push({
|
|
3265
3308
|
kind: "mesh",
|
|
3266
3309
|
mesh,
|
|
3267
|
-
texture: mat ? await r3d.materialTexture(mat) : void 0,
|
|
3310
|
+
texture: mat ? await r3d$1.materialTexture(mat) : void 0,
|
|
3268
3311
|
opts: meshOpts
|
|
3269
3312
|
});
|
|
3270
3313
|
}
|
|
@@ -3324,14 +3367,17 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3324
3367
|
padX = Math.max(80, Math.ceil(rect.width * .2));
|
|
3325
3368
|
padY = Math.max(50, Math.ceil(rect.height * .5));
|
|
3326
3369
|
}
|
|
3370
|
+
if (kind === "text" && !isPathText) {
|
|
3371
|
+
const ink = textInkOutset(target, lop);
|
|
3372
|
+
padX = Math.max(padX, ink);
|
|
3373
|
+
padY = Math.max(padY, ink);
|
|
3374
|
+
}
|
|
3327
3375
|
const layerW = isPathText ? targetW : rect.width + padX * 2;
|
|
3328
3376
|
const layerH = isPathText ? targetH : rect.height + padY * 2;
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
const anchorX = lop.anchorX ?? .5;
|
|
3334
|
-
const anchorY = lop.anchorY ?? .5;
|
|
3377
|
+
localX -= padX;
|
|
3378
|
+
localY -= padY;
|
|
3379
|
+
const anchorX = isPathText ? (lop.anchorX ?? .5) * rect.width / layerW : (padX + (lop.anchorX ?? .5) * rect.width) / layerW;
|
|
3380
|
+
const anchorY = isPathText ? (lop.anchorY ?? .5) * rect.height / layerH : (padY + (lop.anchorY ?? .5) * rect.height) / layerH;
|
|
3335
3381
|
const localMatrix = toDOMMatrix(buildLayerMatrix({
|
|
3336
3382
|
x: localX,
|
|
3337
3383
|
y: localY,
|
|
@@ -3341,8 +3387,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3341
3387
|
scale: scale$1,
|
|
3342
3388
|
scaleX,
|
|
3343
3389
|
scaleY,
|
|
3344
|
-
anchorX
|
|
3345
|
-
anchorY
|
|
3390
|
+
anchorX,
|
|
3391
|
+
anchorY
|
|
3346
3392
|
}));
|
|
3347
3393
|
const layerMatrix = parentMatrix.multiply(localMatrix);
|
|
3348
3394
|
const blendMode = lop.blendMode || "normal";
|
|
@@ -3354,8 +3400,8 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3354
3400
|
const rotateZ = target?.rotateZ ?? lop.rotateZ ?? 0;
|
|
3355
3401
|
const translateZ = target?.translateZ ?? lop.translateZ ?? 0;
|
|
3356
3402
|
const perspective = target?.perspective ?? lop.perspective ?? 0;
|
|
3357
|
-
const perspectiveOriginX = target?.perspectiveOriginX ?? lop.perspectiveOriginX ??
|
|
3358
|
-
const perspectiveOriginY = target?.perspectiveOriginY ?? lop.perspectiveOriginY ??
|
|
3403
|
+
const perspectiveOriginX = target?.perspectiveOriginX ?? lop.perspectiveOriginX ?? anchorX;
|
|
3404
|
+
const perspectiveOriginY = target?.perspectiveOriginY ?? lop.perspectiveOriginY ?? anchorY;
|
|
3359
3405
|
const backfaceVisibility = target?.backfaceVisibility ?? lop.backfaceVisibility ?? "visible";
|
|
3360
3406
|
let quad3D = null;
|
|
3361
3407
|
if (is3D) {
|
|
@@ -3469,30 +3515,6 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3469
3515
|
}, { opacity: 1 });
|
|
3470
3516
|
borderPass.end();
|
|
3471
3517
|
}
|
|
3472
|
-
let modelMatrix;
|
|
3473
|
-
if (parent3DMatrix) {
|
|
3474
|
-
let localM = Matrix4Math.identity();
|
|
3475
|
-
const childX = target?.x ?? lop.x ?? 0;
|
|
3476
|
-
const childY = target?.y ?? lop.y ?? 0;
|
|
3477
|
-
const childZ = target?.z ?? lop.z ?? 0;
|
|
3478
|
-
localM = Matrix4Math.multiply(localM, Matrix4Math.translate(childX, childY, childZ));
|
|
3479
|
-
const rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;
|
|
3480
|
-
const ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;
|
|
3481
|
-
const rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);
|
|
3482
|
-
if (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));
|
|
3483
|
-
if (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));
|
|
3484
|
-
if (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));
|
|
3485
|
-
const sx = layerW * scale$1 * scaleX;
|
|
3486
|
-
const sy = layerH * scale$1 * scaleY;
|
|
3487
|
-
const sz = target?.scaleZ ?? lop.scaleZ ?? 1;
|
|
3488
|
-
localM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));
|
|
3489
|
-
const ax = lop.anchorX ?? .5;
|
|
3490
|
-
const ay = lop.anchorY ?? .5;
|
|
3491
|
-
const pivotX = .5 - ax;
|
|
3492
|
-
const pivotY = .5 - ay;
|
|
3493
|
-
if (pivotX !== 0 || pivotY !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.translate(pivotX, pivotY, 0));
|
|
3494
|
-
modelMatrix = Matrix4Math.multiply(parent3DMatrix, localM);
|
|
3495
|
-
}
|
|
3496
3518
|
const quadOpts = {
|
|
3497
3519
|
position: [
|
|
3498
3520
|
localX + layerW * .5,
|
|
@@ -3525,9 +3547,19 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3525
3547
|
ambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,
|
|
3526
3548
|
metallic: target?.metallic ?? lop.metallic,
|
|
3527
3549
|
...surfaceProps(target, lop),
|
|
3528
|
-
...modelMatrix && { modelMatrix },
|
|
3529
3550
|
...reliefOpts(lop.id, localX, localY, layerW, layerH)
|
|
3530
3551
|
};
|
|
3552
|
+
if (parent3DMatrix) {
|
|
3553
|
+
const r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
3554
|
+
quadOpts.modelMatrix = Matrix4Math.multiply(parent3DMatrix, r3d$1.quadModelMatrix({
|
|
3555
|
+
...quadOpts,
|
|
3556
|
+
position: [
|
|
3557
|
+
target?.x ?? lop.x ?? 0,
|
|
3558
|
+
target?.y ?? lop.y ?? 0,
|
|
3559
|
+
target?.z ?? lop.z ?? 0
|
|
3560
|
+
]
|
|
3561
|
+
}));
|
|
3562
|
+
}
|
|
3531
3563
|
pending3DItems.push({
|
|
3532
3564
|
kind: "quad",
|
|
3533
3565
|
texture: activeGroupTex$1,
|
|
@@ -3637,7 +3669,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
3637
3669
|
finalView: activeView
|
|
3638
3670
|
};
|
|
3639
3671
|
}
|
|
3640
|
-
const shouldClip = lop.overflow
|
|
3672
|
+
const shouldClip = (target?.overflow ?? lop.overflow) === "hidden";
|
|
3641
3673
|
const scissorRect = shouldClip ? computeContainerScissor(layerMatrix, layerW, layerH) : null;
|
|
3642
3674
|
const clipRadius = shouldClip ? Math.min(target?.borderRadius ?? lop.borderRadius ?? 0, layerW / 2, layerH / 2) : 0;
|
|
3643
3675
|
if ((kind === "flex" || kind === "block") && (!Array.isArray(lop.effects) || lop.effects.length === 0) && clipRadius <= 0 && !shouldPaintContainerBackground(kind, lop.background) && layerOpacity === 1 && blendMode === "normal" && !lop.borderWidth && !lop.borderColor && (typeof lop.relighting !== "object" || !lop.relighting) && (typeof lop.relight !== "object" || !lop.relight) && (typeof target?.relighting !== "object" || !target?.relighting) && (typeof target?.relight !== "object" || !target?.relight) && (typeof lop.deflicker !== "object" || !lop.deflicker) && (typeof target?.deflicker !== "object" || !target?.deflicker)) {
|
|
@@ -4158,7 +4190,7 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
4158
4190
|
const strokeWidth = target?.strokeWidth ?? lop.strokeWidth ?? 0;
|
|
4159
4191
|
const strokeColor = target?.strokeColor ?? lop.strokeColor ?? lop.stroke ?? "#ffffff";
|
|
4160
4192
|
const strokeLineCap = lop.strokeLineCap ?? "round";
|
|
4161
|
-
const strokeDashArray = lop.strokeDashArray;
|
|
4193
|
+
const strokeDashArray = parseDashArray(lop.strokeDashArray);
|
|
4162
4194
|
const strokeDashOffset = target?.strokeDashOffset ?? lop.strokeDashOffset ?? 0;
|
|
4163
4195
|
const trimStart = target?.trimStart ?? lop.trimStart ?? 0;
|
|
4164
4196
|
const trimEnd = target?.trimEnd ?? lop.trimEnd ?? 1;
|
|
@@ -4348,30 +4380,6 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
4348
4380
|
}, { opacity: 1 });
|
|
4349
4381
|
borderPass.end();
|
|
4350
4382
|
}
|
|
4351
|
-
let modelMatrix;
|
|
4352
|
-
if (parent3DMatrix) {
|
|
4353
|
-
let localM = Matrix4Math.identity();
|
|
4354
|
-
const childX = target?.x ?? lop.x ?? 0;
|
|
4355
|
-
const childY = target?.y ?? lop.y ?? 0;
|
|
4356
|
-
const childZ = target?.z ?? lop.z ?? 0;
|
|
4357
|
-
localM = Matrix4Math.multiply(localM, Matrix4Math.translate(childX, childY, childZ));
|
|
4358
|
-
const rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;
|
|
4359
|
-
const ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;
|
|
4360
|
-
const rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);
|
|
4361
|
-
if (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));
|
|
4362
|
-
if (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));
|
|
4363
|
-
if (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));
|
|
4364
|
-
const sx = layerW * scale$1 * scaleX;
|
|
4365
|
-
const sy = layerH * scale$1 * scaleY;
|
|
4366
|
-
const sz = target?.scaleZ ?? lop.scaleZ ?? 1;
|
|
4367
|
-
localM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));
|
|
4368
|
-
const ax = lop.anchorX ?? .5;
|
|
4369
|
-
const ay = lop.anchorY ?? .5;
|
|
4370
|
-
const pivotX = .5 - ax;
|
|
4371
|
-
const pivotY = .5 - ay;
|
|
4372
|
-
if (pivotX !== 0 || pivotY !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.translate(pivotX, pivotY, 0));
|
|
4373
|
-
modelMatrix = Matrix4Math.multiply(parent3DMatrix, localM);
|
|
4374
|
-
}
|
|
4375
4383
|
const quadOpts = {
|
|
4376
4384
|
position: [
|
|
4377
4385
|
localX + layerW * .5,
|
|
@@ -4404,9 +4412,19 @@ const CompositorWebGPURenderer = async (args) => {
|
|
|
4404
4412
|
ambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,
|
|
4405
4413
|
metallic: target?.metallic ?? lop.metallic,
|
|
4406
4414
|
...surfaceProps(target, lop),
|
|
4407
|
-
...modelMatrix && { modelMatrix },
|
|
4408
4415
|
...reliefOpts(lop.id, localX, localY, layerW, layerH)
|
|
4409
4416
|
};
|
|
4417
|
+
if (parent3DMatrix) {
|
|
4418
|
+
const r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? "rgba8unorm", sampleCount3d);
|
|
4419
|
+
quadOpts.modelMatrix = Matrix4Math.multiply(parent3DMatrix, r3d$1.quadModelMatrix({
|
|
4420
|
+
...quadOpts,
|
|
4421
|
+
position: [
|
|
4422
|
+
target?.x ?? lop.x ?? 0,
|
|
4423
|
+
target?.y ?? lop.y ?? 0,
|
|
4424
|
+
target?.z ?? lop.z ?? 0
|
|
4425
|
+
]
|
|
4426
|
+
}));
|
|
4427
|
+
}
|
|
4410
4428
|
const quadHasContent = layerHasRaster || Boolean(quadOpts.borderWidth && quadOpts.borderWidth > 0 && quadOpts.borderColor);
|
|
4411
4429
|
if (!glyphBatches || quadHasContent) pending3DItems.push({
|
|
4412
4430
|
kind: "quad",
|
|
@@ -4699,17 +4717,15 @@ const compositorLayerAudioProcessor = async (channels, sampleRate, virtualMedia,
|
|
|
4699
4717
|
const muted = resolveBoolean(op.muted, false);
|
|
4700
4718
|
const animation = op.animation;
|
|
4701
4719
|
const fps = ctx?.fps ?? 24;
|
|
4702
|
-
const
|
|
4703
|
-
|
|
4704
|
-
const hasMutedKeys = tracks.some((t) => t.prop === "muted" && t.keyframes && t.keyframes.length > 0);
|
|
4705
|
-
if (!hasVolumeKeys && !hasMutedKeys) return;
|
|
4720
|
+
const keyed = keyedGain(op);
|
|
4721
|
+
if (!keyed.volume && !keyed.muted) return;
|
|
4706
4722
|
const { tl, stub } = compileLayerTimeline(op.id || op.inputHandleId || "layer", animation, volume, muted, fps);
|
|
4707
4723
|
const startTimeSec = (ctx?.elapsedMs ?? 0) / 1e3;
|
|
4708
4724
|
const subChunkSize = 128;
|
|
4709
4725
|
tl.seek(startTimeSec);
|
|
4710
4726
|
let lastVol = stub.volume;
|
|
4711
4727
|
let lastMuted = stub.muted;
|
|
4712
|
-
const
|
|
4728
|
+
const applied = (keyed.volume ? 1 : volume) * (!keyed.muted && muted ? 0 : 1);
|
|
4713
4729
|
for (let i = 0; i < numSamples; i += subChunkSize) {
|
|
4714
4730
|
const nextI = Math.min(numSamples, i + subChunkSize);
|
|
4715
4731
|
const tNext = startTimeSec + nextI / sampleRate;
|
|
@@ -4720,7 +4736,7 @@ const compositorLayerAudioProcessor = async (channels, sampleRate, virtualMedia,
|
|
|
4720
4736
|
const p = (j - i) / (nextI - i);
|
|
4721
4737
|
const currentVol = Math.min(1, Math.max(0, lastVol + (nextVol - lastVol) * p));
|
|
4722
4738
|
const finalGain = (j - i < (nextI - i) / 2 ? lastMuted : nextMuted) ? 0 : currentVol;
|
|
4723
|
-
const relativeGain =
|
|
4739
|
+
const relativeGain = applied === 0 ? 0 : finalGain / applied;
|
|
4724
4740
|
if (relativeGain !== 1) for (let c = 0; c < numChannels; c++) channels[c][j] *= relativeGain;
|
|
4725
4741
|
}
|
|
4726
4742
|
lastVol = nextVol;
|
|
@@ -4732,4 +4748,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: CompositorWebGPURendere
|
|
|
4732
4748
|
|
|
4733
4749
|
//#endregion
|
|
4734
4750
|
export { Transform3DMath, renderers_default as default, has3DTransform };
|
|
4735
|
-
//# sourceMappingURL=renderer-
|
|
4751
|
+
//# sourceMappingURL=renderer-BVIXKfbC.mjs.map
|