framefields 2.14.0 → 2.15.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 +5 -1
- package/dist/audio/index.d.mts +3 -3
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-DFwRbID_.mjs → audio-6TfPlfl4.mjs} +3 -3
- package/dist/{audio-DFwRbID_.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
- package/dist/{audio-CdCuGK5d.d.mts → audio-7oqTUi4G.d.mts} +2 -2
- package/dist/{audio-CdCuGK5d.d.mts.map → audio-7oqTUi4G.d.mts.map} +1 -1
- package/dist/cli/check-worker.mjs +44 -44
- package/dist/cli.mjs +1 -1
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/cloud/index.mjs +1 -1
- package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
- package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
- package/dist/components/index.d.mts +11 -11
- package/dist/components/index.mjs +43 -43
- package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
- package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
- package/dist/{dist-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
- package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
- package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
- package/dist/dist-XqlFM2a8.mjs.map +1 -0
- package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
- package/dist/dist-f1zkl69f.mjs.map +1 -0
- package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
- package/dist/{effects-WMgv8ZaD.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
- package/dist/fonts-BWYcXjyK.mjs.map +1 -0
- package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
- package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
- package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
- package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
- package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
- package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
- package/dist/{index-Bv7gxGK1.d.mts → index-BnB_Ou2y.d.mts} +2 -2
- package/dist/index-BnB_Ou2y.d.mts.map +1 -0
- package/dist/index-C-V6CAhP.d.mts.map +1 -1
- package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
- package/dist/index-CMhkkc56.d.mts.map +1 -0
- package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
- package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
- package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
- package/dist/index-DhL7ckvs.d.mts.map +1 -0
- package/dist/{index-9xte4JgL.d.mts → index-DkAjKnhW.d.mts} +1464 -559
- package/dist/index-DkAjKnhW.d.mts.map +1 -0
- package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
- package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
- package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
- package/dist/index-TCtdSXd7.d.mts.map +1 -0
- package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
- package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
- package/dist/index.d.mts +13 -13
- package/dist/index.mjs +52 -52
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/preview-BeGF1Bb1.mjs +1002 -0
- package/dist/preview-BeGF1Bb1.mjs.map +1 -0
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
- package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
- package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
- package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
- package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
- package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
- package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
- package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
- package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
- package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.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 +2 -2
- package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
- package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
- package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
- package/dist/preview-page/index.html +19 -0
- package/dist/preview-page/main.css +1 -0
- package/dist/preview-page/main.js +327 -0
- package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
- package/dist/program-CMigyfso.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
- package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
- package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
- package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
- package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
- package/dist/renderer-4nXkaAWu.mjs.map +1 -0
- package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
- package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
- package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
- package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
- package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
- package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
- package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
- package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
- package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
- package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
- package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
- package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
- package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
- package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
- package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
- package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
- package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
- package/dist/renderer-BERGAxqA.mjs +5 -0
- package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
- package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
- package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
- package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
- package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
- package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
- package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
- package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
- package/dist/renderer-BQ_YkBMt.mjs +6 -0
- package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
- package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
- package/dist/renderer-BW0Tjsv9.mjs +5 -0
- package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
- package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
- package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
- package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
- package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
- package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
- package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
- package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
- package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
- package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
- package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
- package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
- package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
- package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
- package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
- package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
- package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
- package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
- package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
- package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
- package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
- package/dist/renderer-BzyPdUD1.mjs +5 -0
- package/dist/renderer-C0hM-mtY.mjs +5 -0
- package/dist/renderer-C6cyUTvk.mjs +5 -0
- package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
- package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
- package/dist/renderer-C8zY3pzk.mjs +5 -0
- package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
- package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
- package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
- package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
- package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
- package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
- package/dist/renderer-CEkSOyKu.mjs +5 -0
- package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
- package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
- package/dist/renderer-CJYtfa4x.mjs +5 -0
- package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
- package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
- package/dist/renderer-CKMtHGZh.mjs +5 -0
- package/dist/renderer-CLzicoiy.mjs +5 -0
- package/dist/renderer-CM2A4BHd.mjs +5 -0
- package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
- package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
- package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
- package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
- package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
- package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
- package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
- package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
- package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
- package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
- package/dist/renderer-CZlHjcxr.mjs +5 -0
- package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
- package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
- package/dist/renderer-CbimvSU8.mjs +5 -0
- package/dist/renderer-Ccvc63yd.mjs +5 -0
- package/dist/renderer-Cdp-SGfq.mjs +5 -0
- package/dist/renderer-CeTcSs3e.mjs +5 -0
- package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
- package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
- package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
- package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
- package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
- package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
- package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
- package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
- package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
- package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
- package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
- package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
- package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
- package/dist/renderer-CvNuu52U.mjs +5 -0
- package/dist/renderer-CwciC0oI.mjs +5 -0
- package/dist/renderer-CysLUbIr.mjs +5 -0
- package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
- package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
- package/dist/renderer-D3A22Vxb.mjs +5 -0
- package/dist/renderer-D5SY9EmA.mjs +5 -0
- package/dist/renderer-D8h3ZvaE.mjs +5 -0
- package/dist/renderer-DE-B6N9n.mjs +5 -0
- package/dist/renderer-DETZTI7t.mjs +5 -0
- package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
- package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
- package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
- package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
- package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
- package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
- package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
- package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
- package/dist/renderer-DWnDj0IM.mjs +5 -0
- package/dist/renderer-DcGUIbQF.mjs +5 -0
- package/dist/renderer-Dfq6FoNO.mjs +5 -0
- package/dist/renderer-DhasXW6S.mjs +3 -0
- package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
- package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
- package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
- package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
- package/dist/renderer-DjCvpsV_.mjs +5 -0
- package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
- package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
- package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
- package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
- package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
- package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
- package/dist/renderer-DrAaM6JD.mjs +5 -0
- package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
- package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
- package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
- package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
- package/dist/renderer-Dxlv8LYm.mjs +5 -0
- package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
- package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
- package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
- package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
- package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
- package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
- package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
- package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
- package/dist/renderer-Pb43OO2t.mjs +5 -0
- package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
- package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
- package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
- package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
- package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
- package/dist/renderer-VQbm-cGr.mjs +5 -0
- package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
- package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
- package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
- package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
- package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
- package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
- package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
- package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
- package/dist/renderer-oPMypDM1.mjs +5 -0
- package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
- package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
- package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
- package/dist/renderer-tvYj306A.mjs.map +1 -0
- package/dist/renderer-xvWGpVyp.mjs +5 -0
- package/dist/renderer-zafZbD6Q.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.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 +4 -4
- package/dist/signals/index.mjs +4 -4
- package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
- package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
- package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
- package/dist/src-CoHAjviq.mjs.map +1 -0
- package/dist/storage/index.mjs +1 -1
- package/package.json +63 -60
- package/dist/dist--Uu5bQ_6.mjs.map +0 -1
- package/dist/dist-CiTgmfUw.mjs.map +0 -1
- package/dist/fonts-OW3yAfO5.mjs.map +0 -1
- package/dist/index-9xte4JgL.d.mts.map +0 -1
- package/dist/index-Bv7gxGK1.d.mts.map +0 -1
- package/dist/index-C5sgRLlG.d.mts.map +0 -1
- package/dist/index-C7-p9zwU.d.mts.map +0 -1
- package/dist/index-CRaydvLi.d.mts.map +0 -1
- package/dist/index-D1FqV1eu.d.mts.map +0 -1
- package/dist/preview-D7BGmE1E.mjs +0 -2446
- package/dist/preview-D7BGmE1E.mjs.map +0 -1
- package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
- package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
- package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
- package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
- package/dist/program-tFKCWU2j.mjs.map +0 -1
- package/dist/renderer-6_bzbbXt.mjs +0 -5
- package/dist/renderer-8M-9G6F_.mjs +0 -5
- package/dist/renderer-B5OzKvF8.mjs +0 -5
- package/dist/renderer-BBCZ2qbE.mjs +0 -5
- package/dist/renderer-BChbxCux.mjs +0 -5
- package/dist/renderer-BGeMPr8C.mjs +0 -5
- package/dist/renderer-BPQ8Pkjb.mjs +0 -5
- package/dist/renderer-BTRpA3HD.mjs +0 -5
- package/dist/renderer-BVIXKfbC.mjs.map +0 -1
- package/dist/renderer-BVsECSn-.mjs +0 -5
- package/dist/renderer-Bgos68gc.mjs +0 -6
- package/dist/renderer-BjHOvoqO.mjs +0 -5
- package/dist/renderer-BjXMPPlV.mjs +0 -5
- package/dist/renderer-Byobxqkv.mjs +0 -5
- package/dist/renderer-CKrsg3EG.mjs +0 -5
- package/dist/renderer-Cj875NuH.mjs +0 -5
- package/dist/renderer-CnmzJoMv.mjs +0 -5
- package/dist/renderer-CtklDaMg.mjs +0 -5
- package/dist/renderer-D1tK3in_.mjs +0 -5
- package/dist/renderer-D2yc9P61.mjs +0 -5
- package/dist/renderer-D4v-JvSr.mjs +0 -5
- package/dist/renderer-D5yp74NL.mjs +0 -3
- package/dist/renderer-D7WRWDwB.mjs +0 -5
- package/dist/renderer-DGvA0tdB.mjs +0 -5
- package/dist/renderer-DO7v5Sdm.mjs +0 -5
- package/dist/renderer-DRVvt7-V.mjs +0 -5
- package/dist/renderer-DYMCd3jL.mjs +0 -5
- package/dist/renderer-DmHKw-MM.mjs +0 -5
- package/dist/renderer-DoDsuZ6G.mjs +0 -5
- package/dist/renderer-EpgclS70.mjs +0 -5
- package/dist/renderer-GroKiYyK.mjs +0 -5
- package/dist/renderer-MQ5K_xIS.mjs +0 -5
- package/dist/renderer-U43SflML.mjs +0 -5
- package/dist/renderer-UqOmBgCv.mjs +0 -5
- package/dist/renderer-XLULgJM0.mjs +0 -5
- package/dist/renderer-jUKdkmG5.mjs.map +0 -1
- package/dist/renderer-lNjxY1GG.mjs +0 -5
- package/dist/renderer-ukufL7pl.mjs +0 -5
- package/dist/renderer-wb0NCKdF.mjs +0 -5
- package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
- package/dist/src-Dy4gnc6w.mjs.map +0 -1
|
@@ -180,6 +180,53 @@ declare const Camera3D: {
|
|
|
180
180
|
isBoxInFrustum(min: Vec3, max: Vec3, planes: FrustumPlanes): boolean;
|
|
181
181
|
};
|
|
182
182
|
//#endregion
|
|
183
|
+
//#region src/math3d/cube-lens.d.ts
|
|
184
|
+
/** The picture a cube camera's lens draws. */
|
|
185
|
+
type LensProjection = "perspective" | "equirectangular" | "fisheye";
|
|
186
|
+
/** World direction ↔ cube-space direction (a reflection, its own inverse). */
|
|
187
|
+
declare const CUBE_FLIP: (v: Vec3) => Vec3;
|
|
188
|
+
/**
|
|
189
|
+
* The six cameras that draw a cube map around `eye`: 90° square frusta in
|
|
190
|
+
* layer order. Their faces meet edge to edge, so the cube covers every
|
|
191
|
+
* direction once.
|
|
192
|
+
*/
|
|
193
|
+
declare function cubeFaceCameras(eye: Vec3, near: number, far: number): Camera3DPose[];
|
|
194
|
+
/**
|
|
195
|
+
* Where WebGPU samples a cube for world direction `dir`: the layer and its
|
|
196
|
+
* (u, v), v down. The selection rule of the WebGPU (Vulkan) spec.
|
|
197
|
+
*/
|
|
198
|
+
declare function cubeTexel(dir: Vec3): {
|
|
199
|
+
face: number;
|
|
200
|
+
u: number;
|
|
201
|
+
v: number;
|
|
202
|
+
};
|
|
203
|
+
/** A camera's orthonormal frame: screen right, screen up and forward. */
|
|
204
|
+
declare function cameraBasis(camera: Camera3DPose): {
|
|
205
|
+
right: Vec3;
|
|
206
|
+
up: Vec3;
|
|
207
|
+
forward: Vec3;
|
|
208
|
+
};
|
|
209
|
+
/** What a lens needs to turn an output pixel into a ray. */
|
|
210
|
+
interface CubeLensOptions {
|
|
211
|
+
projection: LensProjection;
|
|
212
|
+
/**
|
|
213
|
+
* Perspective: vertical field of view. Fisheye: the full angle across the
|
|
214
|
+
* frame's height (equidistant, up to 360°). Ignored by equirectangular,
|
|
215
|
+
* which always shows the whole sphere.
|
|
216
|
+
*/
|
|
217
|
+
fov: number;
|
|
218
|
+
/** Optical zoom (perspective and fisheye). */
|
|
219
|
+
zoom: number;
|
|
220
|
+
}
|
|
221
|
+
/** Output pixels per radian at the centre of the view. */
|
|
222
|
+
declare function lensCenterDensity(lens: CubeLensOptions, width: number, height: number): number;
|
|
223
|
+
/**
|
|
224
|
+
* Face size that matches the lens's pixel density at the centre of the view:
|
|
225
|
+
* a face holds `size / 2` pixels per radian at its centre. Rounded up to a
|
|
226
|
+
* power of two (so a moving lens reuses its targets) and clamped.
|
|
227
|
+
*/
|
|
228
|
+
declare function defaultCubeFaceSize(lens: CubeLensOptions, width: number, height: number, maxSize: number): number;
|
|
229
|
+
//#endregion
|
|
183
230
|
//#region src/math3d/environment3d.d.ts
|
|
184
231
|
/**
|
|
185
232
|
* "neutral" (default, Khronos PBR Neutral): colors as authored, highlights
|
|
@@ -187,7 +234,7 @@ declare const Camera3D: {
|
|
|
187
234
|
* hot highlights gracefully. "aces": punchy film contrast, shifts hues.
|
|
188
235
|
*/
|
|
189
236
|
type ToneMapping = "neutral" | "agx" | "aces" | "none";
|
|
190
|
-
type EnvironmentPreset = "studio" | "soft" | "sunset" | "night" | "neutral";
|
|
237
|
+
type EnvironmentPreset = "studio" | "soft" | "warm" | "sunset" | "night" | "neon" | "neutral";
|
|
191
238
|
interface Environment3DFog {
|
|
192
239
|
/** Display color surfaces fade into; match the background for a seamless horizon. */
|
|
193
240
|
color: string;
|
|
@@ -212,8 +259,62 @@ interface Environment3DFloor {
|
|
|
212
259
|
/** Optional overall opacity of the floor plane, 0..1 (default 1; 0 draws only the additive reflection over background). */
|
|
213
260
|
opacity?: number;
|
|
214
261
|
}
|
|
262
|
+
interface Environment3DVolumetricFogNoise {
|
|
263
|
+
/** World-space noise frequency (1 / period in px). Default 0.003. */
|
|
264
|
+
scale?: number;
|
|
265
|
+
/** Density modulation depth 0..1. Default 0.45. */
|
|
266
|
+
strength?: number;
|
|
267
|
+
/** Wind drift velocity [vx, vy, vz] in world px/sec. Default [20, -8, 12]. */
|
|
268
|
+
speed?: [number, number, number];
|
|
269
|
+
/** FBM octaves 1..3. Default 2. */
|
|
270
|
+
octaves?: number;
|
|
271
|
+
}
|
|
272
|
+
interface Environment3DVolumetricFog {
|
|
273
|
+
/** Base extinction/scattering density (typical range 0.002..0.15, default 0.02). */
|
|
274
|
+
density?: number;
|
|
275
|
+
/** In-scattering albedo tint (default: environment horizon color). */
|
|
276
|
+
color?: string;
|
|
277
|
+
/** Henyey-Greenstein forward/back scatter asymmetry g in (-0.95..0.95). Default 0.55. */
|
|
278
|
+
anisotropy?: number;
|
|
279
|
+
/** Exponential height falloff rate (0 = uniform, >0 = ground mist). Default 0.0015. */
|
|
280
|
+
heightFalloff?: number;
|
|
281
|
+
/** Reference world Y height for ground fog (px, y down). Default 540. */
|
|
282
|
+
baseHeight?: number;
|
|
283
|
+
/** Raymarch step count per half-res pixel (8..64, default 28). */
|
|
284
|
+
steps?: number;
|
|
285
|
+
/** Maximum raymarch distance from camera in world px. Default 2800. */
|
|
286
|
+
maxDistance?: number;
|
|
287
|
+
/** Multiplier on direct-light in-scattering / god rays. Default 1.5. */
|
|
288
|
+
lightIntensity?: number;
|
|
289
|
+
/** Multiplier on ambient / sky in-scattering. Default 0.35. */
|
|
290
|
+
ambientIntensity?: number;
|
|
291
|
+
/** Optional 3D procedural FBM turbulence in the fog medium. */
|
|
292
|
+
noise?: boolean | Environment3DVolumetricFogNoise;
|
|
293
|
+
}
|
|
294
|
+
/** Screen-space reflections: glossy surfaces reflect what the camera sees. */
|
|
295
|
+
interface Environment3DSsrOptions {
|
|
296
|
+
/** How fully a found reflection replaces the environment's, 0..1. Default 0.85. */
|
|
297
|
+
intensity?: number;
|
|
298
|
+
/** Roughest surface that traces reflections (0..1); rougher ones keep the environment. Default 0.6. */
|
|
299
|
+
maxRoughness?: number;
|
|
300
|
+
/** How far behind a surface, in world px, a ray still counts as hitting it. Default 120. */
|
|
301
|
+
thickness?: number;
|
|
302
|
+
/** Hi-Z march iterations per ray (16..64). Default 32. */
|
|
303
|
+
steps?: number;
|
|
304
|
+
}
|
|
305
|
+
/** Screen-space diffuse GI: ambient occlusion plus one bounce of visible light. */
|
|
306
|
+
interface Environment3DGiOptions {
|
|
307
|
+
/** Strength of the bounced light, 0..4. Default 1. */
|
|
308
|
+
intensity?: number;
|
|
309
|
+
/** Gather radius in world px. Default 400. */
|
|
310
|
+
radius?: number;
|
|
311
|
+
/** Horizon-scan directions per pixel (4..16). Default 6. */
|
|
312
|
+
samples?: number;
|
|
313
|
+
}
|
|
215
314
|
interface Environment3DOptions {
|
|
216
315
|
preset?: EnvironmentPreset;
|
|
316
|
+
/** Equirectangular panorama for real HDRI IBL: a `.hdr` (Radiance RGBE) or `.exr` (OpenEXR) path, or the file's bytes. */
|
|
317
|
+
hdri?: string | Uint8Array;
|
|
217
318
|
/** Overrides the preset's sky (above), horizon and ground colors. */
|
|
218
319
|
top?: string;
|
|
219
320
|
horizon?: string;
|
|
@@ -231,6 +332,12 @@ interface Environment3DOptions {
|
|
|
231
332
|
fog?: Environment3DFog;
|
|
232
333
|
floor?: Environment3DFloor;
|
|
233
334
|
outlines?: boolean | GeometryOutlineOptions;
|
|
335
|
+
/** Froxel-style volumetric participating media & shadowed light shafts (god rays). */
|
|
336
|
+
volumetricFog?: boolean | Environment3DVolumetricFog;
|
|
337
|
+
/** Screen-space reflections of nearby geometry and emissives on glossy surfaces. */
|
|
338
|
+
ssr?: boolean | Environment3DSsrOptions;
|
|
339
|
+
/** Screen-space diffuse GI: occlusion and color bleeding from visible surfaces. */
|
|
340
|
+
gi?: boolean | Environment3DGiOptions;
|
|
234
341
|
}
|
|
235
342
|
interface PresetDef {
|
|
236
343
|
top: string;
|
|
@@ -240,11 +347,28 @@ interface PresetDef {
|
|
|
240
347
|
}
|
|
241
348
|
declare const ENVIRONMENT_PRESETS: Record<EnvironmentPreset, PresetDef>;
|
|
242
349
|
declare function linearRgb(color: string): [number, number, number];
|
|
350
|
+
interface ResolvedVolumetricFog {
|
|
351
|
+
density: number;
|
|
352
|
+
color: [number, number, number];
|
|
353
|
+
anisotropy: number;
|
|
354
|
+
heightFalloff: number;
|
|
355
|
+
baseHeight: number;
|
|
356
|
+
steps: number;
|
|
357
|
+
maxDistance: number;
|
|
358
|
+
lightIntensity: number;
|
|
359
|
+
ambientIntensity: number;
|
|
360
|
+
noiseScale: number;
|
|
361
|
+
noiseStrength: number;
|
|
362
|
+
noiseSpeed: [number, number, number];
|
|
363
|
+
noiseOctaves: number;
|
|
364
|
+
}
|
|
243
365
|
interface ResolvedEnvironment {
|
|
244
366
|
top: [number, number, number];
|
|
245
367
|
horizon: [number, number, number];
|
|
246
368
|
bottom: [number, number, number];
|
|
247
369
|
softboxes: number;
|
|
370
|
+
intensity: number;
|
|
371
|
+
hdri?: string | Uint8Array;
|
|
248
372
|
rotationRad: number;
|
|
249
373
|
exposureMultiplier: number;
|
|
250
374
|
toneMapping: number;
|
|
@@ -262,12 +386,29 @@ interface ResolvedEnvironment {
|
|
|
262
386
|
fadeDistance: number;
|
|
263
387
|
opacity: number;
|
|
264
388
|
};
|
|
389
|
+
volumetricFog?: ResolvedVolumetricFog;
|
|
390
|
+
ssr?: ResolvedSsr;
|
|
391
|
+
gi?: ResolvedGi;
|
|
265
392
|
}
|
|
393
|
+
interface ResolvedSsr {
|
|
394
|
+
intensity: number;
|
|
395
|
+
maxRoughness: number;
|
|
396
|
+
thickness: number;
|
|
397
|
+
steps: number;
|
|
398
|
+
}
|
|
399
|
+
interface ResolvedGi {
|
|
400
|
+
intensity: number;
|
|
401
|
+
radius: number;
|
|
402
|
+
samples: number;
|
|
403
|
+
}
|
|
404
|
+
declare function resolveSsr(ssr: boolean | Environment3DSsrOptions | undefined): ResolvedSsr | undefined;
|
|
405
|
+
declare function resolveGi(gi: boolean | Environment3DGiOptions | undefined): ResolvedGi | undefined;
|
|
406
|
+
declare function resolveVolumetricFog(vf: boolean | Environment3DVolumetricFog | undefined, defaultColor: [number, number, number]): ResolvedVolumetricFog | undefined;
|
|
266
407
|
/** Linear radiance and shader codes for an environment. */
|
|
267
408
|
declare function resolveEnvironment(opts: Environment3DOptions): ResolvedEnvironment;
|
|
268
409
|
/** Where a shadow-casting light's depth map lives, for the lit shaders. */
|
|
269
410
|
interface ShadowUniformInfo {
|
|
270
|
-
/** Light view-projection (world → shadow clip). */
|
|
411
|
+
/** Light view-projection (world → shadow clip). For omnidirectional point shadows, element [0] stores far plane. */
|
|
271
412
|
matrix: ArrayLike<number>;
|
|
272
413
|
/** Index of the casting light among the packed (non-ambient) lights. */
|
|
273
414
|
lightIndex: number;
|
|
@@ -281,10 +422,20 @@ interface ShadowUniformInfo {
|
|
|
281
422
|
normalOffset: number;
|
|
282
423
|
/** 0 = invisible shadows, 1 = fully dark. */
|
|
283
424
|
darkness: number;
|
|
425
|
+
/** Starting layer index in the shadow depth 2D array texture. */
|
|
426
|
+
baseLayer?: number;
|
|
427
|
+
/** Number of array layers consumed by this shadow entry (1 for directional/spot/rect, 6 for point). */
|
|
428
|
+
layerCount?: number;
|
|
429
|
+
/** Shadow projection mode: 1 = 2D frustum, 2 = 6-face omnidirectional cube. */
|
|
430
|
+
mode?: 1 | 2;
|
|
431
|
+
/** Near plane distance in world px (used by mode=2 omnidirectional point shadows). */
|
|
432
|
+
near?: number;
|
|
433
|
+
/** Far plane distance in world px (used by mode=2 omnidirectional point shadows). */
|
|
434
|
+
far?: number;
|
|
284
435
|
}
|
|
285
436
|
//#endregion
|
|
286
437
|
//#region src/math3d/light3d.d.ts
|
|
287
|
-
type LightKind = "ambient" | "directional" | "point" | "spot";
|
|
438
|
+
type LightKind = "ambient" | "directional" | "point" | "spot" | "rect";
|
|
288
439
|
interface Light3DOptions {
|
|
289
440
|
id?: string;
|
|
290
441
|
lightType?: LightKind;
|
|
@@ -309,7 +460,15 @@ interface Light3DOptions {
|
|
|
309
460
|
decay?: number;
|
|
310
461
|
angle?: number;
|
|
311
462
|
penumbra?: number;
|
|
312
|
-
/**
|
|
463
|
+
/** Area light width in world px (default 240, rect lights only). */
|
|
464
|
+
width?: number;
|
|
465
|
+
/** Area light height in world px (default 140, rect lights only). */
|
|
466
|
+
height?: number;
|
|
467
|
+
/** Emit from both faces of a rect light (default false). */
|
|
468
|
+
twoSided?: boolean;
|
|
469
|
+
/** In-plane roll angle in degrees around the light's forward axis (default 0). */
|
|
470
|
+
rotation?: number;
|
|
471
|
+
/** Directional, spot, point, or rect: render a shadow map. */
|
|
313
472
|
castShadow?: boolean;
|
|
314
473
|
/** Shadow edge blur in shadow-map texels (default 2). */
|
|
315
474
|
shadowSoftness?: number;
|
|
@@ -317,22 +476,40 @@ interface Light3DOptions {
|
|
|
317
476
|
shadowDarkness?: number;
|
|
318
477
|
}
|
|
319
478
|
interface GPULightData {
|
|
320
|
-
/** xyz = position, w = type (0=ambient, 1=directional, 2=point, 3=spot) */
|
|
479
|
+
/** xyz = position, w = type (0=ambient, 1=directional, 2=point, 3=spot, 4=rect) */
|
|
321
480
|
posType: [number, number, number, number];
|
|
322
481
|
/** xyz = normalized direction, w = radius */
|
|
323
482
|
dirRadius: [number, number, number, number];
|
|
324
483
|
/** rgb = linear color, w = intensity */
|
|
325
484
|
colorIntensity: [number, number, number, number];
|
|
326
|
-
/** x = cos(outer), y = cos(inner), z = decay, w =
|
|
485
|
+
/** x = cos(outer), y = cos(inner), z = decay, w = twoSided (rect) */
|
|
327
486
|
spotParams: [number, number, number, number];
|
|
487
|
+
/** xyz = normalized right axis of rect area light, w = halfWidth */
|
|
488
|
+
rectRight: [number, number, number, number];
|
|
489
|
+
/** xyz = normalized up axis of rect area light, w = halfHeight */
|
|
490
|
+
rectUp: [number, number, number, number];
|
|
328
491
|
}
|
|
329
492
|
/** Slots retained in the legacy uniform prefix; actual direct lights use storage. */
|
|
330
493
|
declare const MAX_LIGHTS = 8;
|
|
331
494
|
/**
|
|
332
495
|
* 16 (ambient) + 16 (params) + 8 * 64 (lights), then the physical-shading
|
|
333
|
-
* block appended after them: 8 vec4 (128) + shadow matrix (64) +
|
|
496
|
+
* block appended after them: 8 vec4 (128) + shadow matrix (64) +
|
|
497
|
+
* floorParams (16) + HDRI irradiance SH (9 vec4, 144) + screen indirect (16).
|
|
334
498
|
*/
|
|
335
499
|
declare const LIGHT_UNIFORM_SIZE_BYTES: number;
|
|
500
|
+
/**
|
|
501
|
+
* Which half of a screen-space indirect (SSR / GI) frame a pass draws:
|
|
502
|
+
* `radiance` writes the unfogged scene radiance the traces read; `apply`
|
|
503
|
+
* shades with the traced reflections and bounce light.
|
|
504
|
+
*/
|
|
505
|
+
type ScreenIndirectPass = "radiance" | "apply";
|
|
506
|
+
/** A prefiltered HDRI as the lights uniform describes it. */
|
|
507
|
+
interface HdriUniforms {
|
|
508
|
+
/** Highest mip of the radiance cubemap (roughness 1). */
|
|
509
|
+
maxMip: number;
|
|
510
|
+
/** 9 L2 irradiance SH coefficients, one vec4 (rgb + pad) each. */
|
|
511
|
+
sh: Float32Array;
|
|
512
|
+
}
|
|
336
513
|
interface LightsUniformData {
|
|
337
514
|
ambientColor: [number, number, number, number];
|
|
338
515
|
params: [number, number, number, number];
|
|
@@ -347,6 +524,7 @@ declare function parseColorToRgb(color?: string | [number, number, number] | [nu
|
|
|
347
524
|
b: number;
|
|
348
525
|
a?: number;
|
|
349
526
|
} | unknown): [number, number, number];
|
|
527
|
+
declare const DIRECT_LIGHT_FLOATS = 48;
|
|
350
528
|
declare const Light3D: {
|
|
351
529
|
/**
|
|
352
530
|
* Computes the 3x3 normal matrix (stored in 4x4 layout) from a 4x4 Model matrix.
|
|
@@ -360,15 +538,49 @@ declare const Light3D: {
|
|
|
360
538
|
/**
|
|
361
539
|
* Packs active scene lights into a Float32Array matching WGSL LightsUniforms layout.
|
|
362
540
|
*/
|
|
363
|
-
packLightsUniforms(lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null, isReflectionPass?: boolean): Float32Array;
|
|
541
|
+
packLightsUniforms(lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null, isReflectionPass?: boolean, hdri?: HdriUniforms, screenIndirect?: ScreenIndirectPass): Float32Array;
|
|
364
542
|
/** Packs every direct light for the variable-length GPU storage binding. */
|
|
365
543
|
packDirectLights(lights: Light3DOptions[], shadows?: ShadowUniformInfo[]): Float32Array;
|
|
366
544
|
/** Index (among non-ambient lights) of the light that should cast shadows, or -1. */
|
|
367
545
|
shadowCasterIndex(lights: Light3DOptions[]): number;
|
|
368
546
|
/** Fills params.zw and the appended physical-shading block (offset 136 on). */
|
|
369
|
-
packPhysicalBlock(buffer: Float32Array, lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null, isReflectionPass?: boolean): void;
|
|
547
|
+
packPhysicalBlock(buffer: Float32Array, lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null, isReflectionPass?: boolean, hdri?: HdriUniforms, screenIndirect?: ScreenIndirectPass): void;
|
|
370
548
|
};
|
|
371
549
|
//#endregion
|
|
550
|
+
//#region src/math3d/noise.d.ts
|
|
551
|
+
/**
|
|
552
|
+
* Seeded, deterministic gradient noise (Perlin, improved) and the fractal
|
|
553
|
+
* sums procedural geometry is built from. Same seed, same field: on every
|
|
554
|
+
* machine and every frame.
|
|
555
|
+
*/
|
|
556
|
+
/** mulberry32: a small, fast, well-distributed 32-bit PRNG. Returns [0, 1). */
|
|
557
|
+
declare function createRandom(seed: number): () => number;
|
|
558
|
+
interface Noise {
|
|
559
|
+
/** Gradient noise in about [-1, 1]. */
|
|
560
|
+
noise2(x: number, y: number): number;
|
|
561
|
+
/** Gradient noise in about [-1, 1]. */
|
|
562
|
+
noise3(x: number, y: number, z: number): number;
|
|
563
|
+
}
|
|
564
|
+
/** A gradient noise field whose lattice is shuffled by `seed`. */
|
|
565
|
+
declare function createNoise(seed?: number): Noise;
|
|
566
|
+
type FractalMode = "fbm" | "ridged" | "terrace";
|
|
567
|
+
interface FractalOptions {
|
|
568
|
+
octaves: number;
|
|
569
|
+
persistence: number;
|
|
570
|
+
lacunarity: number;
|
|
571
|
+
mode: FractalMode;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Fractal sum of `octaves` noise layers at (x, y), in [0, 1] before any
|
|
575
|
+
* normalization: "fbm" rolls, "ridged" folds each octave into sharp crests
|
|
576
|
+
* (Musgrave's ridged multifractal: each octave weighted by the last, so
|
|
577
|
+
* detail gathers on ridges, not in valleys). Terracing is applied later,
|
|
578
|
+
* over the normalized field.
|
|
579
|
+
*/
|
|
580
|
+
declare function fractal2(noise: Noise, x: number, y: number, o: FractalOptions): number;
|
|
581
|
+
/** Stepped plateaus: each step flat for most of its width, then a steep riser. */
|
|
582
|
+
declare function terrace(h: number, steps: number): number;
|
|
583
|
+
//#endregion
|
|
372
584
|
//#region src/math3d/path3d.d.ts
|
|
373
585
|
interface Path3DPoint {
|
|
374
586
|
/** Position in 3D world space [x, y, z] */
|
|
@@ -472,6 +684,53 @@ declare class Path3D {
|
|
|
472
684
|
static circle(options: CirclePathOptions): Path3D;
|
|
473
685
|
}
|
|
474
686
|
//#endregion
|
|
687
|
+
//#region src/math3d/relativistic-doppler.d.ts
|
|
688
|
+
/**
|
|
689
|
+
* Relativistic observer: what a camera moving at a fraction `β` of the speed
|
|
690
|
+
* of light sees of a scene at rest.
|
|
691
|
+
*
|
|
692
|
+
* Aberration: a ray arriving at angle θ' from the direction of motion left
|
|
693
|
+
* the scene at θ, with cos θ = (cos θ' − β) / (1 − β cos θ'). The Doppler
|
|
694
|
+
* factor D = γ (1 + β cos θ') scales every frequency, and spectral radiance
|
|
695
|
+
* transforms as L'(λ') = D⁵ L(D λ') (the "searchlight": ahead is brighter).
|
|
696
|
+
*
|
|
697
|
+
* A pixel only stores a colour, so its spectrum is modelled: the colour is a
|
|
698
|
+
* reflectance (three smooth bands that sum to one, held flat past the visible
|
|
699
|
+
* range, so red surfaces stay red into the infrared) lit by daylight (a
|
|
700
|
+
* 5778 K black body). Shifting that spectrum and integrating it against the
|
|
701
|
+
* CIE 1931 observer gives the colour seen. `dopplerColorMatrix(D)` is the
|
|
702
|
+
* resulting linear map on linear sRGB, exactly the identity at D = 1.
|
|
703
|
+
*/
|
|
704
|
+
/**
|
|
705
|
+
* The linear-sRGB matrix (row-major 3×3) that turns a colour at rest into the
|
|
706
|
+
* colour seen at Doppler factor `d` (> 1 towards the direction of motion).
|
|
707
|
+
*/
|
|
708
|
+
declare function dopplerColorMatrix(d: number, beaming?: boolean): number[][];
|
|
709
|
+
/** Largest Doppler factor the lookup table covers (β ≈ 0.99995). */
|
|
710
|
+
declare const DOPPLER_LUT_MAX = 200;
|
|
711
|
+
/** Entries in the lookup table, evenly spaced in ln D. */
|
|
712
|
+
declare const DOPPLER_LUT_SIZE = 256;
|
|
713
|
+
/**
|
|
714
|
+
* `dopplerColorMatrix` sampled at DOPPLER_LUT_SIZE factors evenly spaced in
|
|
715
|
+
* ln D over [1/DOPPLER_LUT_MAX, DOPPLER_LUT_MAX]: three vec4 rows per entry.
|
|
716
|
+
*/
|
|
717
|
+
declare function dopplerLut(beaming: boolean): Float32Array;
|
|
718
|
+
/**
|
|
719
|
+
* How much brighter a neutral surface looks at Doppler factor `d`: the gain
|
|
720
|
+
* an exposure meter would compensate for.
|
|
721
|
+
*/
|
|
722
|
+
declare function dopplerLuminanceGain(d: number, doppler: boolean, beaming: boolean): number;
|
|
723
|
+
/** Lorentz factor of speed β. */
|
|
724
|
+
declare function lorentzFactor(beta: number): number;
|
|
725
|
+
/**
|
|
726
|
+
* Where a ray seen at angle `observedCos` (cosine to the direction of motion)
|
|
727
|
+
* left the scene at rest, and its Doppler factor.
|
|
728
|
+
*/
|
|
729
|
+
declare function aberrate(observedCos: number, beta: number): {
|
|
730
|
+
sourceCos: number;
|
|
731
|
+
doppler: number;
|
|
732
|
+
};
|
|
733
|
+
//#endregion
|
|
475
734
|
//#endregion
|
|
476
735
|
//#region ../webgpu-renderers/dist/text-animations/index.d.mts
|
|
477
736
|
//#region src/text-animations/advanced-types.d.ts
|
|
@@ -2259,6 +2518,8 @@ interface SlugFont {
|
|
|
2259
2518
|
fontFamily?: string;
|
|
2260
2519
|
hasTrueWeight?: boolean;
|
|
2261
2520
|
weight?: number;
|
|
2521
|
+
/** The variable axes this instance was asked for (spans inherit them). */
|
|
2522
|
+
variableAxes?: Record<string, number>;
|
|
2262
2523
|
}
|
|
2263
2524
|
//#endregion
|
|
2264
2525
|
//#region src/slug/slug-pipeline.d.ts
|
|
@@ -2640,6 +2901,18 @@ declare class InputStore {
|
|
|
2640
2901
|
declare const inputStore: InputStore;
|
|
2641
2902
|
//#endregion
|
|
2642
2903
|
//#region src/loaders/types.d.ts
|
|
2904
|
+
/**
|
|
2905
|
+
* One morph target's deltas. Dense: 3 floats per vertex. Sparse (with
|
|
2906
|
+
* `indices`): 3 floats per listed vertex, every other vertex unmoved.
|
|
2907
|
+
*/
|
|
2908
|
+
interface MorphTarget3D {
|
|
2909
|
+
positions?: Float32Array;
|
|
2910
|
+
normals?: Float32Array;
|
|
2911
|
+
/** The moved vertices, ascending; absent for dense deltas. */
|
|
2912
|
+
indices?: Uint32Array;
|
|
2913
|
+
}
|
|
2914
|
+
/** A morph target's position (or normal) deltas as a dense array. */
|
|
2915
|
+
|
|
2643
2916
|
interface Mesh3DData {
|
|
2644
2917
|
id?: string;
|
|
2645
2918
|
name?: string;
|
|
@@ -2647,12 +2920,11 @@ interface Mesh3DData {
|
|
|
2647
2920
|
normals: Float32Array;
|
|
2648
2921
|
uvs: Float32Array;
|
|
2649
2922
|
/** Object-space morph deltas, applied before skinning. */
|
|
2650
|
-
morphTargets?:
|
|
2651
|
-
positions?: Float32Array;
|
|
2652
|
-
normals?: Float32Array;
|
|
2653
|
-
}[];
|
|
2923
|
+
morphTargets?: MorphTarget3D[];
|
|
2654
2924
|
/** Default morph weights for this mesh instance. */
|
|
2655
2925
|
morphWeights?: number[];
|
|
2926
|
+
/** Morph target names (glTF mesh `extras.targetNames`), one per target. */
|
|
2927
|
+
morphTargetNames?: string[];
|
|
2656
2928
|
/** Per-map UVs, with the map's own texture transform already applied. */
|
|
2657
2929
|
mapUvs?: {
|
|
2658
2930
|
normal?: Float32Array;
|
|
@@ -2667,12 +2939,24 @@ interface Mesh3DData {
|
|
|
2667
2939
|
tangents?: Float32Array;
|
|
2668
2940
|
jointIndices?: Float32Array;
|
|
2669
2941
|
jointWeights?: Float32Array;
|
|
2942
|
+
/** A second set of 4 influences per vertex (glTF JOINTS_1 / WEIGHTS_1): up to 8 in all, the weights of both sets summing to 1. */
|
|
2943
|
+
jointIndices1?: Float32Array;
|
|
2944
|
+
jointWeights1?: Float32Array;
|
|
2670
2945
|
materialName?: string;
|
|
2671
2946
|
/** Scene node that places this mesh (Model3DData.nodes); its world matrix applies unless the mesh is skinned. */
|
|
2672
2947
|
node?: number;
|
|
2673
2948
|
/** Skin (Model3DData.skins) whose joints deform this mesh; jointIndices index its `joints`. */
|
|
2674
2949
|
skin?: number;
|
|
2675
2950
|
}
|
|
2951
|
+
/** The maps of a material besides its base color. */
|
|
2952
|
+
type MaterialMapSlot = "normal" | "metallicRoughness" | "occlusion" | "emissive";
|
|
2953
|
+
/** Addressing and filtering of one texture. */
|
|
2954
|
+
interface TextureSampling {
|
|
2955
|
+
wrapU: "repeat" | "clamp" | "mirror";
|
|
2956
|
+
wrapV: "repeat" | "clamp" | "mirror";
|
|
2957
|
+
/** Magnification filter. */
|
|
2958
|
+
filter: "linear" | "nearest";
|
|
2959
|
+
}
|
|
2676
2960
|
interface Material3D {
|
|
2677
2961
|
name: string;
|
|
2678
2962
|
diffuseColor?: [number, number, number, number];
|
|
@@ -2695,13 +2979,22 @@ interface Material3D {
|
|
|
2695
2979
|
textureWrap?: "repeat" | "clamp" | "mirror";
|
|
2696
2980
|
/** Magnification filter (glTF sampler magFilter); "nearest" keeps texels sharp. */
|
|
2697
2981
|
textureFilter?: "linear" | "nearest";
|
|
2982
|
+
/**
|
|
2983
|
+
* How each other map is sampled, when it says (glTF: its own sampler).
|
|
2984
|
+
* A map without an entry samples like the base color map.
|
|
2985
|
+
*/
|
|
2986
|
+
mapSampling?: Partial<Record<MaterialMapSlot, TextureSampling>>;
|
|
2698
2987
|
normalTexture?: string;
|
|
2699
2988
|
twoSided?: boolean;
|
|
2700
2989
|
/** "mask" discards texels below `alphaCutoff`; "blend" draws after the opaque meshes. */
|
|
2701
2990
|
alphaMode?: "opaque" | "mask" | "blend";
|
|
2702
2991
|
alphaCutoff?: number;
|
|
2703
2992
|
/** How the material wants to be lit when the layer leaves `material` unset. */
|
|
2704
|
-
shading?: "lit" | "unlit" | "toon";
|
|
2993
|
+
shading?: "lit" | "unlit" | "toon" | "glass";
|
|
2994
|
+
/** Glass (KHR_materials_transmission): index of refraction (KHR_materials_ior). */
|
|
2995
|
+
ior?: number;
|
|
2996
|
+
/** Glass: thickness in model units (KHR_materials_volume thicknessFactor). */
|
|
2997
|
+
thickness?: number;
|
|
2705
2998
|
/** Toon shading: the color multiplier of the shadowed side. */
|
|
2706
2999
|
shadeColor?: [number, number, number];
|
|
2707
3000
|
/** Linear-ish emissive color 0..1 (glTF emissiveFactor). */
|
|
@@ -2718,6 +3011,29 @@ interface Material3D {
|
|
|
2718
3011
|
occlusionStrength?: number;
|
|
2719
3012
|
/** Encoded emissive color map (multiplies `emissive`). */
|
|
2720
3013
|
emissiveTextureBuffer?: Uint8Array;
|
|
3014
|
+
/** Layered shading lobes from the file's material extensions (display colors, degrees). */
|
|
3015
|
+
surface?: MaterialSurface;
|
|
3016
|
+
}
|
|
3017
|
+
/**
|
|
3018
|
+
* Physical lobes a model file's material asks for, in the units layers use:
|
|
3019
|
+
* KHR_materials_clearcoat / _sheen / _anisotropy / _iridescence, and
|
|
3020
|
+
* subsurface from `extras.framefields.subsurface` (glTF has no skin lobe).
|
|
3021
|
+
*/
|
|
3022
|
+
interface MaterialSurface {
|
|
3023
|
+
clearcoat?: number;
|
|
3024
|
+
clearcoatRoughness?: number;
|
|
3025
|
+
sheen?: number;
|
|
3026
|
+
sheenColor?: [number, number, number];
|
|
3027
|
+
sheenRoughness?: number;
|
|
3028
|
+
anisotropy?: number;
|
|
3029
|
+
/** Degrees. */
|
|
3030
|
+
anisotropyRotation?: number;
|
|
3031
|
+
iridescence?: number;
|
|
3032
|
+
iridescenceIor?: number;
|
|
3033
|
+
/** Film thickness, nm. */
|
|
3034
|
+
iridescenceThickness?: number;
|
|
3035
|
+
subsurface?: number;
|
|
3036
|
+
subsurfaceColor?: [number, number, number];
|
|
2721
3037
|
}
|
|
2722
3038
|
/** A scene-graph node: its rest transform and parent (glTF node semantics). */
|
|
2723
3039
|
interface ModelNode3D {
|
|
@@ -2778,6 +3094,19 @@ interface Model3DData {
|
|
|
2778
3094
|
skins?: Skin3D[];
|
|
2779
3095
|
/** Centering and size normalization, applied above the scene graph instead of baked into vertices. */
|
|
2780
3096
|
rootTransform?: Mat4;
|
|
3097
|
+
/**
|
|
3098
|
+
* Joints the file drives from other joints (scene `extras.framefields.drivers`):
|
|
3099
|
+
* eyelids following the eyes, twist bones, correctives.
|
|
3100
|
+
*/
|
|
3101
|
+
drivers?: {
|
|
3102
|
+
joint: string;
|
|
3103
|
+
from: string;
|
|
3104
|
+
rotate: {
|
|
3105
|
+
x?: number;
|
|
3106
|
+
y?: number;
|
|
3107
|
+
z?: number;
|
|
3108
|
+
};
|
|
3109
|
+
}[];
|
|
2781
3110
|
animations: AnimationClip3D[];
|
|
2782
3111
|
bounds: {
|
|
2783
3112
|
min: Vec3;
|
|
@@ -2797,18 +3126,23 @@ interface LoadModelOptions {
|
|
|
2797
3126
|
mtlText?: string;
|
|
2798
3127
|
}
|
|
2799
3128
|
//#endregion
|
|
2800
|
-
//#region src/loaders/
|
|
3129
|
+
//#region src/loaders/3ds-loader.d.ts
|
|
3130
|
+
|
|
3131
|
+
declare function parseFBX(bufferOrText: ArrayBuffer | Uint8Array | string, options?: LoadModelOptions): Model3DData;
|
|
3132
|
+
declare function loadFBX(srcOrData: string | ArrayBuffer | Uint8Array, options?: LoadModelOptions): Model3DData;
|
|
3133
|
+
//#endregion
|
|
3134
|
+
//#region src/loaders/gltf-loader.d.ts
|
|
2801
3135
|
|
|
2802
3136
|
declare function parseOBJ(objText: string, mtlText?: string, options?: LoadModelOptions): Model3DData;
|
|
2803
3137
|
declare function parseMTL(mtlText: string): Record<string, Material3D>;
|
|
2804
3138
|
declare function loadOBJ(srcOrData: string | ArrayBuffer | Uint8Array, mtlText?: string, options?: LoadModelOptions): Model3DData;
|
|
2805
3139
|
//#endregion
|
|
2806
|
-
//#region src/loaders/
|
|
3140
|
+
//#region src/loaders/off-loader.d.ts
|
|
2807
3141
|
|
|
2808
|
-
declare function parseFBX(bufferOrText: ArrayBuffer | Uint8Array | string, options?: LoadModelOptions): Model3DData;
|
|
2809
|
-
declare function loadFBX(srcOrData: string | ArrayBuffer | Uint8Array, options?: LoadModelOptions): Model3DData;
|
|
2810
3142
|
//#endregion
|
|
2811
|
-
//#region src/loaders/
|
|
3143
|
+
//#region src/loaders/pose.d.ts
|
|
3144
|
+
type Quat = [number, number, number, number];
|
|
3145
|
+
/** Column-major translate · rotate(quaternion) · scale. */
|
|
2812
3146
|
|
|
2813
3147
|
//#endregion
|
|
2814
3148
|
//#region src/lut-store.d.ts
|
|
@@ -2891,12 +3225,18 @@ declare class AudioMeshDeformPipeline {
|
|
|
2891
3225
|
pipeline: GPUComputePipeline;
|
|
2892
3226
|
bindGroupLayout: GPUBindGroupLayout;
|
|
2893
3227
|
private uniformPool;
|
|
2894
|
-
|
|
3228
|
+
/**
|
|
3229
|
+
* One output per dispatch this frame: layers sharing a mesh deform it
|
|
3230
|
+
* differently, and each draw (and motion blur's copy) reads its own.
|
|
3231
|
+
*/
|
|
3232
|
+
private outputs;
|
|
3233
|
+
private outputIndex;
|
|
2895
3234
|
private uniformData;
|
|
2896
3235
|
private uniformUint32;
|
|
2897
3236
|
private uniformFloat32;
|
|
2898
3237
|
constructor(device: GPUDevice);
|
|
2899
|
-
|
|
3238
|
+
/** The next output of this frame, at least `byteLength` bytes. */
|
|
3239
|
+
private nextOutput;
|
|
2900
3240
|
execute(encoder: GPUCommandEncoder, srcVertexBuffer: GPUBuffer, options: DeformDispatchOptions): GPUBuffer;
|
|
2901
3241
|
resetPools(): void;
|
|
2902
3242
|
destroy(): void;
|
|
@@ -2949,6 +3289,9 @@ declare class FloorReflectionPipeline {
|
|
|
2949
3289
|
draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, reflectionTexture: GPUTexture, floor: Environment3DFloor, useMrt?: boolean, useBloom?: boolean): void;
|
|
2950
3290
|
destroy(): void;
|
|
2951
3291
|
}
|
|
3292
|
+
//#endregion
|
|
3293
|
+
//#region src/renderer3d/fracture-geometry.d.ts
|
|
3294
|
+
|
|
2952
3295
|
//#endregion
|
|
2953
3296
|
//#region src/renderer3d/glass-pipeline.d.ts
|
|
2954
3297
|
/**
|
|
@@ -2992,11 +3335,56 @@ declare class GlassPipeline {
|
|
|
2992
3335
|
destroy(): void;
|
|
2993
3336
|
}
|
|
2994
3337
|
//#endregion
|
|
2995
|
-
//#region src/renderer3d/
|
|
2996
|
-
/**
|
|
3338
|
+
//#region src/renderer3d/hdr-environment.d.ts
|
|
3339
|
+
/** A captured panorama, ready for image-based lighting. */
|
|
2997
3340
|
|
|
3341
|
+
//#endregion
|
|
3342
|
+
//#region src/renderer3d/lens-remap-pipeline.d.ts
|
|
3343
|
+
/** An observer moving at `speed` (a fraction of c) through a scene at rest. */
|
|
3344
|
+
interface RelativisticObserver {
|
|
3345
|
+
/** β = v / c, 0 ≤ β < 1. */
|
|
3346
|
+
speed: number;
|
|
3347
|
+
/** Unit direction of motion in world space. */
|
|
3348
|
+
direction: Vec3;
|
|
3349
|
+
/** Shift colours along the spectrum (blue ahead, red behind). */
|
|
3350
|
+
doppler: boolean;
|
|
3351
|
+
/** Brighten ahead and dim behind (relativistic beaming). */
|
|
3352
|
+
beaming: boolean;
|
|
3353
|
+
/**
|
|
3354
|
+
* Exposure for the shifted light: stops, or "auto" to meter the centre of
|
|
3355
|
+
* the view, so what the camera looks at keeps its brightness at rest.
|
|
3356
|
+
*/
|
|
3357
|
+
exposure: number | "auto";
|
|
3358
|
+
}
|
|
3359
|
+
interface LensRemapOptions {
|
|
3360
|
+
projection: LensProjection;
|
|
3361
|
+
/** Degrees; see `CubeLensOptions.fov`. */
|
|
3362
|
+
fov: number;
|
|
3363
|
+
zoom: number;
|
|
3364
|
+
/** The camera's frame: screen right, screen up, forward (world space). */
|
|
3365
|
+
basis: {
|
|
3366
|
+
right: Vec3;
|
|
3367
|
+
up: Vec3;
|
|
3368
|
+
forward: Vec3;
|
|
3369
|
+
};
|
|
3370
|
+
observer?: RelativisticObserver | null;
|
|
3371
|
+
}
|
|
2998
3372
|
//#endregion
|
|
2999
3373
|
//#region src/renderer3d/surface-params.d.ts
|
|
3374
|
+
interface IridescenceOptions {
|
|
3375
|
+
/** Thin-film interference blend intensity 0..1 (default 1 when object is passed). */
|
|
3376
|
+
intensity?: number;
|
|
3377
|
+
/** Thin-film thickness in nanometers 100..1000 (default 400). */
|
|
3378
|
+
thickness?: number;
|
|
3379
|
+
/** Thin-film refractive index 1.05..2.5 (default 1.3). */
|
|
3380
|
+
ior?: number;
|
|
3381
|
+
}
|
|
3382
|
+
interface TriplanarOptions {
|
|
3383
|
+
/** Tiling scale (repeats per 256 world px, or raw UV/px if < 0.05; default 1). */
|
|
3384
|
+
scale?: number;
|
|
3385
|
+
/** Normal blend exponent across projection axes 1..16 (default 4). */
|
|
3386
|
+
sharpness?: number;
|
|
3387
|
+
}
|
|
3000
3388
|
/** Physically based surface inputs every 3D draw (quad, text, mesh) accepts. */
|
|
3001
3389
|
interface SurfaceParams {
|
|
3002
3390
|
toon?: ToonShading;
|
|
@@ -3011,8 +3399,38 @@ interface SurfaceParams {
|
|
|
3011
3399
|
emissiveIntensity?: number;
|
|
3012
3400
|
/** Casts into a `castShadow` light's shadow map (meshes default on, quads off). */
|
|
3013
3401
|
castShadow?: boolean;
|
|
3014
|
-
|
|
3015
|
-
|
|
3402
|
+
/** Secondary dielectric clearcoat/varnish lobe 0..1 (car paint, wet coats, polished lacquer). */
|
|
3403
|
+
clearcoat?: number;
|
|
3404
|
+
/** Roughness of the clearcoat layer 0..1 (default 0.08). */
|
|
3405
|
+
clearcoatRoughness?: number;
|
|
3406
|
+
/** Anisotropic GGX highlight stretch -1..1 (brushed metal, satin, hair; 0 = isotropic). */
|
|
3407
|
+
anisotropy?: number;
|
|
3408
|
+
/** Brush tangent rotation in degrees around the surface normal (default 0). */
|
|
3409
|
+
anisotropyRotation?: number;
|
|
3410
|
+
/** Subsurface wrap diffuse and translucent back-scattering 0..1 (wax, jade, skin, foliage). */
|
|
3411
|
+
subsurface?: number;
|
|
3412
|
+
/** Subsurface scatter & transmission tint color (default "#ff6b4a"). */
|
|
3413
|
+
subsurfaceColor?: string | Color | [number, number, number];
|
|
3414
|
+
/** Charlie cloth / velvet grazing retro-reflection lobe 0..1. */
|
|
3415
|
+
sheen?: number;
|
|
3416
|
+
/** Cloth sheen tint color (default "#ffffff"). */
|
|
3417
|
+
sheenColor?: string | Color | [number, number, number];
|
|
3418
|
+
/** Cloth sheen microfiber roughness 0.05..1 (default 0.5). */
|
|
3419
|
+
sheenRoughness?: number;
|
|
3420
|
+
/** Thin-film spectral iridescence 0..1 or `{ intensity, thickness, ior }`. */
|
|
3421
|
+
iridescence?: number | IridescenceOptions;
|
|
3422
|
+
/** Thin-film thickness in nanometers 100..1000 (default 400). */
|
|
3423
|
+
iridescenceThickness?: number;
|
|
3424
|
+
/** Thin-film refractive index 1.05..2.5 (default 1.3). */
|
|
3425
|
+
iridescenceIor?: number;
|
|
3426
|
+
/** Seamless world-space triplanar texture projection for UV-less or procedural meshes. */
|
|
3427
|
+
triplanar?: boolean | TriplanarOptions;
|
|
3428
|
+
/** World-space triplanar tiling scale (repeats per 256 world px; >0 enables triplanar). */
|
|
3429
|
+
triplanarScale?: number;
|
|
3430
|
+
/** World-space triplanar axis blend sharpness 1..16 (default 4). */
|
|
3431
|
+
triplanarSharpness?: number;
|
|
3432
|
+
}
|
|
3433
|
+
/** Shared model uniforms: PBR, emissive, three art-direction vec4s, and four Substrate multi-lobe vec4s. */
|
|
3016
3434
|
|
|
3017
3435
|
//#endregion
|
|
3018
3436
|
//#region src/renderer3d/mesh3d-pipeline.d.ts
|
|
@@ -3028,6 +3446,8 @@ interface MeshMaterialMaps {
|
|
|
3028
3446
|
occlusionStrength?: number;
|
|
3029
3447
|
/** Multiplies the emissive color. */
|
|
3030
3448
|
emissive?: GPUTexture;
|
|
3449
|
+
/** Each map's own sampler; a map without one samples like the base color. */
|
|
3450
|
+
samplers?: Partial<Record<"normal" | "metallicRoughness" | "occlusion" | "emissive", GPUSampler>>;
|
|
3031
3451
|
}
|
|
3032
3452
|
interface MeshGlass {
|
|
3033
3453
|
/** Index of refraction (1.5 glass, 1.33 water). */
|
|
@@ -3039,6 +3459,38 @@ interface MeshGlass {
|
|
|
3039
3459
|
/** Frosted blur, 0–1. */
|
|
3040
3460
|
frost: number;
|
|
3041
3461
|
}
|
|
3462
|
+
/**
|
|
3463
|
+
* Procedural wind: vertices bend downwind by how far they sit above the
|
|
3464
|
+
* mesh's base, swaying in a traveling wave (instances sway out of phase).
|
|
3465
|
+
*/
|
|
3466
|
+
interface MeshWind {
|
|
3467
|
+
/** Peak lean, degrees. */
|
|
3468
|
+
amplitudeDeg: number;
|
|
3469
|
+
/** Sways per second. */
|
|
3470
|
+
frequency: number;
|
|
3471
|
+
/** Downwind direction on the ground plane [x, z]. */
|
|
3472
|
+
direction: [number, number];
|
|
3473
|
+
/** Gust wavelength across the field, px. */
|
|
3474
|
+
waveScale: number;
|
|
3475
|
+
/** Seconds. */
|
|
3476
|
+
time: number;
|
|
3477
|
+
/** The mesh's base (its largest local y: up is -y) and height, px. */
|
|
3478
|
+
baseY: number;
|
|
3479
|
+
height: number;
|
|
3480
|
+
}
|
|
3481
|
+
/** Floats in the mesh `ModelUniforms` struct. */
|
|
3482
|
+
|
|
3483
|
+
/**
|
|
3484
|
+
* Skinned crowd (vertex animation): every instance skins from a baked
|
|
3485
|
+
* joint palette at its own clip, phase and speed (`bakeCrowdPalette`).
|
|
3486
|
+
*/
|
|
3487
|
+
interface MeshCrowd {
|
|
3488
|
+
/** `palette` uploaded once: `frames × jointCount` model-space joint matrices. */
|
|
3489
|
+
palette: GPUBuffer;
|
|
3490
|
+
jointCount: number;
|
|
3491
|
+
/** Seconds. */
|
|
3492
|
+
time: number;
|
|
3493
|
+
}
|
|
3042
3494
|
interface MeshUniformData extends SurfaceParams {
|
|
3043
3495
|
modelMatrix: Float32Array | number[];
|
|
3044
3496
|
normalMatrix?: Float32Array | number[];
|
|
@@ -3050,6 +3502,8 @@ interface MeshUniformData extends SurfaceParams {
|
|
|
3050
3502
|
transparent?: boolean;
|
|
3051
3503
|
/** Extra per-map UV vertex attributes are present. */
|
|
3052
3504
|
hasMapUvs?: boolean;
|
|
3505
|
+
/** The mesh binds a second set of four skin influences. */
|
|
3506
|
+
hasSkin1?: boolean;
|
|
3053
3507
|
isSkinned?: boolean;
|
|
3054
3508
|
skinningMatrices?: Float32Array;
|
|
3055
3509
|
/** Hardware-instanced draw path. */
|
|
@@ -3079,7 +3533,26 @@ interface MeshUniformData extends SurfaceParams {
|
|
|
3079
3533
|
specularIntensity?: number;
|
|
3080
3534
|
ambientIntensity?: number;
|
|
3081
3535
|
metallic?: number;
|
|
3536
|
+
/** Base-color UV window [x, y, width, height]: uv' = xy + uv · wh. */
|
|
3537
|
+
uvRect?: [number, number, number, number];
|
|
3538
|
+
wind?: MeshWind;
|
|
3539
|
+
/** Instances carry a second record each and skin from a baked palette. */
|
|
3540
|
+
crowd?: MeshCrowd;
|
|
3082
3541
|
}
|
|
3542
|
+
/**
|
|
3543
|
+
* A mesh's state one frame earlier, for the velocity pass; unset fields
|
|
3544
|
+
* repeat this frame's (no motion from them).
|
|
3545
|
+
*/
|
|
3546
|
+
type MeshMotionPrev = Pick<MeshUniformData, "modelMatrix" | "normalMatrix" | "skinningMatrices" | "instanceBuffer" | "wind" | "crowd"> & {
|
|
3547
|
+
/**
|
|
3548
|
+
* The mesh's vertices as the GPU deformed them a frame earlier (morph
|
|
3549
|
+
* targets, audio deformation), in the vertex buffer's layout. Absent:
|
|
3550
|
+
* the vertices did not change shape, so this frame's buffer stands in.
|
|
3551
|
+
*/
|
|
3552
|
+
vertexBuffer?: GPUBuffer;
|
|
3553
|
+
};
|
|
3554
|
+
/** Format of the velocity target: motion px (rg), linear depth (b), coverage (a). */
|
|
3555
|
+
|
|
3083
3556
|
interface GPUMeshBuffers {
|
|
3084
3557
|
vertexBuffer: GPUBuffer;
|
|
3085
3558
|
indexBuffer: GPUBuffer;
|
|
@@ -3089,6 +3562,8 @@ interface GPUMeshBuffers {
|
|
|
3089
3562
|
/** Per-vertex RGBA (display / sRGB), 4 floats each; absent = white. */
|
|
3090
3563
|
colorBuffer?: GPUBuffer;
|
|
3091
3564
|
mapUvBuffer?: GPUBuffer;
|
|
3565
|
+
/** Second skin influence set: 4 joints then 4 weights per vertex. */
|
|
3566
|
+
skin1Buffer?: GPUBuffer;
|
|
3092
3567
|
wireIndexBuffer?: GPUBuffer;
|
|
3093
3568
|
wireIndexCount?: number;
|
|
3094
3569
|
}
|
|
@@ -3125,11 +3600,27 @@ declare class Mesh3DPipeline {
|
|
|
3125
3600
|
/** Outgrown white buffers: earlier draws this frame may still read them. */
|
|
3126
3601
|
private retiredColorBuffers;
|
|
3127
3602
|
private modelData;
|
|
3603
|
+
private readonly vertexBuffers;
|
|
3604
|
+
/** Velocity-pass camera: this and the previous view-projection. */
|
|
3605
|
+
readonly velocityCameraLayout: GPUBindGroupLayout;
|
|
3606
|
+
private velocityModule?;
|
|
3607
|
+
private readonly velocityPipelines;
|
|
3128
3608
|
constructor(device: GPUDevice, format: GPUTextureFormat, depthFormat?: GPUTextureFormat, cameraLayout?: GPUBindGroupLayout, lightsLayout?: GPUBindGroupLayout, /** Samples per pixel of the pass this draws into (MSAA). */
|
|
3129
3609
|
sampleCount?: number);
|
|
3130
3610
|
resetPools(): void;
|
|
3131
3611
|
private packModel;
|
|
3132
3612
|
draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, texture: GPUTexture | undefined, sampler: GPUSampler, data: MeshUniformData, useMrt?: boolean, useBloom?: boolean, instanceCount?: number, firstInstance?: number): void;
|
|
3613
|
+
/**
|
|
3614
|
+
* Draws the mesh's screen motion since `prev` into a velocity pass
|
|
3615
|
+
* (`VELOCITY_FORMAT`): the vertex runs this frame's and the previous
|
|
3616
|
+
* frame's deformation, so skinning, instances, wind and crowds move it
|
|
3617
|
+
* too.
|
|
3618
|
+
*/
|
|
3619
|
+
drawVelocity(pass: GPURenderPassEncoder, velocityCameraBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, texture: GPUTexture | undefined, sampler: GPUSampler, data: MeshUniformData, prev: MeshMotionPrev | undefined, instanceCount?: number, firstInstance?: number): void;
|
|
3620
|
+
private velocityPipeline;
|
|
3621
|
+
private textureGroup;
|
|
3622
|
+
/** Binds the vertex and index buffers and draws (instanced when asked). */
|
|
3623
|
+
private issue;
|
|
3133
3624
|
/** Draws the mesh into a shadow map (`lightCameraBindGroup` holds the light's view-projection). */
|
|
3134
3625
|
drawShadow(pass: GPURenderPassEncoder, lightCameraBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, data: MeshUniformData, instanceCount?: number, firstInstance?: number): void;
|
|
3135
3626
|
private colorsFor;
|
|
@@ -3137,30 +3628,157 @@ declare class Mesh3DPipeline {
|
|
|
3137
3628
|
}
|
|
3138
3629
|
//#endregion
|
|
3139
3630
|
//#region src/renderer3d/motion-blur-pipeline.d.ts
|
|
3140
|
-
/**
|
|
3141
|
-
* @file packages/webgpu-renderers/src/renderer3d/motion-blur-pipeline.ts
|
|
3142
|
-
* WebGPU render pipeline for camera shutter motion blur using screen-space velocity buffers.
|
|
3143
|
-
*/
|
|
3144
3631
|
interface MotionBlurPassOptions {
|
|
3632
|
+
/** Shutter angle, degrees. Default 180. */
|
|
3145
3633
|
shutterAngle?: number;
|
|
3634
|
+
/** Taps along each pixel's motion. Default 20. */
|
|
3146
3635
|
sampleCount?: number;
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
height: number;
|
|
3636
|
+
/** Longest blur from a pixel (and the tile size), px. Default 48. */
|
|
3637
|
+
maxBlur?: number;
|
|
3638
|
+
/** Depth softness between in front and behind, scene px. Default 20. */
|
|
3639
|
+
softDepth?: number;
|
|
3152
3640
|
}
|
|
3641
|
+
/** Format of the tile textures `render` takes. */
|
|
3642
|
+
|
|
3153
3643
|
declare class MotionBlurPipeline {
|
|
3154
|
-
private device;
|
|
3155
|
-
private
|
|
3156
|
-
private
|
|
3157
|
-
private
|
|
3158
|
-
private
|
|
3644
|
+
private readonly device;
|
|
3645
|
+
private readonly module;
|
|
3646
|
+
private readonly tileMax;
|
|
3647
|
+
private readonly neighborMax;
|
|
3648
|
+
private readonly reconstruct;
|
|
3649
|
+
/** One uniform block per blur this frame: an encoder may blur several scenes. */
|
|
3650
|
+
private readonly params;
|
|
3159
3651
|
constructor(device: GPUDevice);
|
|
3160
|
-
|
|
3652
|
+
private pipeline;
|
|
3653
|
+
/**
|
|
3654
|
+
* Blurs `color` (premultiplied) by `velocity` (`VELOCITY_FORMAT`, same
|
|
3655
|
+
* size) into `target` (a view of `targetFormat`, same size). `tiles`
|
|
3656
|
+
* returns a render-attachment texture of the tile grid's size: the
|
|
3657
|
+
* caller owns them, since one frame may blur scenes of several sizes.
|
|
3658
|
+
*/
|
|
3659
|
+
render(encoder: GPUCommandEncoder, color: GPUTexture, velocity: GPUTexture, target: GPUTextureView, targetFormat: GPUTextureFormat, options: MotionBlurPassOptions, tiles: (label: string, width: number, height: number) => GPUTexture): void;
|
|
3660
|
+
private pass;
|
|
3661
|
+
resetPools(): void;
|
|
3161
3662
|
destroy(): void;
|
|
3162
3663
|
}
|
|
3163
3664
|
//#endregion
|
|
3665
|
+
//#region src/renderer3d/geometry-arrays.d.ts
|
|
3666
|
+
/**
|
|
3667
|
+
* Flat vertex arrays procedural meshes are assembled in before they become a
|
|
3668
|
+
* Mesh3DData. Winding follows the primitives': for a triangle (a, b, c),
|
|
3669
|
+
* cross(b - a, c - a) points out of the surface.
|
|
3670
|
+
*/
|
|
3671
|
+
|
|
3672
|
+
//#endregion
|
|
3673
|
+
//#region src/renderer3d/sdf-geometry.d.ts
|
|
3674
|
+
type SdfOp = "union" | "subtract" | "intersect";
|
|
3675
|
+
interface SdfPrimitiveBase {
|
|
3676
|
+
/** How this shape combines with everything before it. Default "union". */
|
|
3677
|
+
op?: SdfOp;
|
|
3678
|
+
/** Blend radius of the join, px (0 = a hard edge). Default 0. */
|
|
3679
|
+
smoothness?: number;
|
|
3680
|
+
/** Center, px, in the sculpture's local space. Default [0, 0, 0]. */
|
|
3681
|
+
center?: [number, number, number];
|
|
3682
|
+
/** Euler degrees [x, y, z]. */
|
|
3683
|
+
rotation?: [number, number, number];
|
|
3684
|
+
/** Surface color where this shape forms the surface (cuts too). */
|
|
3685
|
+
color?: string;
|
|
3686
|
+
}
|
|
3687
|
+
type SdfPrimitive = SdfPrimitiveBase & ({
|
|
3688
|
+
shape: "sphere";
|
|
3689
|
+
radius: number;
|
|
3690
|
+
} | {
|
|
3691
|
+
shape: "box";
|
|
3692
|
+
size: [number, number, number];
|
|
3693
|
+
/** Corner rounding, px. */
|
|
3694
|
+
radius?: number;
|
|
3695
|
+
} | {
|
|
3696
|
+
shape: "cylinder" | "capsule";
|
|
3697
|
+
radius: number;
|
|
3698
|
+
height: number;
|
|
3699
|
+
} | {
|
|
3700
|
+
shape: "torus";
|
|
3701
|
+
radius: number;
|
|
3702
|
+
tube: number;
|
|
3703
|
+
} | {
|
|
3704
|
+
shape: "gyroid";
|
|
3705
|
+
/** Period of the lattice, px. */
|
|
3706
|
+
scale: number;
|
|
3707
|
+
/** Wall thickness, px. */
|
|
3708
|
+
thickness: number;
|
|
3709
|
+
});
|
|
3710
|
+
interface SdfGeometryOptions {
|
|
3711
|
+
type: "sdf";
|
|
3712
|
+
primitives: SdfPrimitive[];
|
|
3713
|
+
/** The sculpture is clipped to this box [width, height, depth], px. */
|
|
3714
|
+
bounds: [number, number, number];
|
|
3715
|
+
/** Cells along the longest side of `bounds`, 16..160. Default 64. */
|
|
3716
|
+
resolution?: number;
|
|
3717
|
+
/** Faceted shading. */
|
|
3718
|
+
flatShaded?: boolean;
|
|
3719
|
+
color?: string;
|
|
3720
|
+
material?: "lit" | "unlit" | "toon";
|
|
3721
|
+
shininess?: number;
|
|
3722
|
+
roughness?: number;
|
|
3723
|
+
metallic?: number;
|
|
3724
|
+
}
|
|
3725
|
+
//#endregion
|
|
3726
|
+
//#region src/renderer3d/terrain-geometry.d.ts
|
|
3727
|
+
interface TerrainNoiseOptions {
|
|
3728
|
+
seed?: number;
|
|
3729
|
+
/** Size of the largest landforms, px. Default: a third of the longer side. */
|
|
3730
|
+
scale?: number;
|
|
3731
|
+
/** Noise layers summed, 1..10. Default 6. */
|
|
3732
|
+
octaves?: number;
|
|
3733
|
+
/** Amplitude kept per octave, 0..1. Default 0.5. */
|
|
3734
|
+
persistence?: number;
|
|
3735
|
+
/** Frequency gained per octave, 1..4. Default 2. */
|
|
3736
|
+
lacunarity?: number;
|
|
3737
|
+
/** "fbm" rolling hills, "ridged" sharp crests, "terrace" stepped plateaus. Default "fbm". */
|
|
3738
|
+
ridgeMode?: FractalMode;
|
|
3739
|
+
/** Plateaus for "terrace", 2..32. Default 6. */
|
|
3740
|
+
terraceSteps?: number;
|
|
3741
|
+
}
|
|
3742
|
+
interface TerrainColorByElevation {
|
|
3743
|
+
lowColor: string;
|
|
3744
|
+
midColor?: string;
|
|
3745
|
+
highColor: string;
|
|
3746
|
+
/** Steep faces (slope cosine below `cliffThreshold`) blend to this. */
|
|
3747
|
+
cliffColor?: string;
|
|
3748
|
+
/** Slope cosine (1 = flat) below which cliffs show. Default 0.65. */
|
|
3749
|
+
cliffThreshold?: number;
|
|
3750
|
+
/** Normalized altitudes where low turns mid and mid turns high. Default [0.35, 0.7]. */
|
|
3751
|
+
bands?: [number, number];
|
|
3752
|
+
}
|
|
3753
|
+
interface TerrainGeometryOptions {
|
|
3754
|
+
type: "terrain";
|
|
3755
|
+
width: number;
|
|
3756
|
+
depth: number;
|
|
3757
|
+
/** Peak-to-valley relief, px. Default 300. */
|
|
3758
|
+
height?: number;
|
|
3759
|
+
/** Grid cells along x and z (or both), 1..512. Default 128. */
|
|
3760
|
+
segments?: number | [number, number];
|
|
3761
|
+
noise?: TerrainNoiseOptions;
|
|
3762
|
+
/**
|
|
3763
|
+
* Heights 0..1 on the (segments + 1)² grid, row by row from the near
|
|
3764
|
+
* edge (-z) and left to right: a DEM, or a sampled height function.
|
|
3765
|
+
* Replaces the noise.
|
|
3766
|
+
*/
|
|
3767
|
+
heights?: number[];
|
|
3768
|
+
/** Sideways warp of steep faces into overhangs, px. Default 0. */
|
|
3769
|
+
overhangWarp?: number;
|
|
3770
|
+
colorByElevation?: TerrainColorByElevation;
|
|
3771
|
+
/** Faceted, low-poly shading. */
|
|
3772
|
+
flatShaded?: boolean;
|
|
3773
|
+
/** Thickness of the solid under the valley floor, px. Default 10% of `height`. */
|
|
3774
|
+
base?: number;
|
|
3775
|
+
color?: string;
|
|
3776
|
+
material?: "lit" | "unlit" | "toon";
|
|
3777
|
+
shininess?: number;
|
|
3778
|
+
roughness?: number;
|
|
3779
|
+
metallic?: number;
|
|
3780
|
+
}
|
|
3781
|
+
//#endregion
|
|
3164
3782
|
//#region src/renderer3d/text-extruder.d.ts
|
|
3165
3783
|
interface Point2D {
|
|
3166
3784
|
x: number;
|
|
@@ -3188,6 +3806,10 @@ interface RoundedBoxGeometryOptions extends PrimitiveSurface {
|
|
|
3188
3806
|
depth: number;
|
|
3189
3807
|
/** Corner and edge radius, clamped to half the smallest side. Default 0 (a sharp box). */
|
|
3190
3808
|
radius?: number;
|
|
3809
|
+
/** Alias for `radius`. */
|
|
3810
|
+
cornerRadius?: number;
|
|
3811
|
+
/** Alias for `radius`. */
|
|
3812
|
+
borderRadius?: number;
|
|
3191
3813
|
/** Segments per rounded quarter (default 4). */
|
|
3192
3814
|
segments?: number;
|
|
3193
3815
|
/**
|
|
@@ -3206,8 +3828,12 @@ interface CylinderGeometryOptions extends PrimitiveSurface {
|
|
|
3206
3828
|
type: "cylinder";
|
|
3207
3829
|
/** Radius of the top (-y) cap; defaults to `radius`. */
|
|
3208
3830
|
radiusTop?: number;
|
|
3831
|
+
/** Alias for `radiusTop`. */
|
|
3832
|
+
topRadius?: number;
|
|
3209
3833
|
/** Radius of the bottom (+y) cap; defaults to `radius`. */
|
|
3210
3834
|
radiusBottom?: number;
|
|
3835
|
+
/** Alias for `radiusBottom`. */
|
|
3836
|
+
bottomRadius?: number;
|
|
3211
3837
|
radius?: number;
|
|
3212
3838
|
height: number;
|
|
3213
3839
|
/** Segments around (default 32). */
|
|
@@ -3221,8 +3847,14 @@ interface TorusGeometryOptions extends PrimitiveSurface {
|
|
|
3221
3847
|
type: "torus";
|
|
3222
3848
|
/** Major radius from the torus center to the center of the tube (default 60). */
|
|
3223
3849
|
radius?: number;
|
|
3850
|
+
/** Alias for `radius`. */
|
|
3851
|
+
majorRadius?: number;
|
|
3224
3852
|
/** Minor radius of the circular tube cross-section (default 20). */
|
|
3225
3853
|
tube?: number;
|
|
3854
|
+
/** Alias for `tube`. */
|
|
3855
|
+
minorRadius?: number;
|
|
3856
|
+
/** Alias for `tube`. */
|
|
3857
|
+
tubeRadius?: number;
|
|
3226
3858
|
/** Segments around the tube cross-section (default 24). */
|
|
3227
3859
|
radialSegments?: number;
|
|
3228
3860
|
/** Segments around the main ring (default 48). */
|
|
@@ -3446,7 +4078,7 @@ interface ModelUniformData extends SurfaceParams {
|
|
|
3446
4078
|
ambientIntensity?: number;
|
|
3447
4079
|
metallic?: number;
|
|
3448
4080
|
}
|
|
3449
|
-
type MaterialUniformData = Pick<ModelUniformData, "material" | "shininess" | "
|
|
4081
|
+
type MaterialUniformData = SurfaceParams & Pick<ModelUniformData, "material" | "shininess" | "specularIntensity" | "ambientIntensity">;
|
|
3450
4082
|
/** [shininess, specularIntensity, ambientIntensity, materialMode] as the 3D shaders' lighting reads them. */
|
|
3451
4083
|
|
|
3452
4084
|
declare class Quad3DPipeline {
|
|
@@ -3501,6 +4133,16 @@ interface Slug3DUniformData extends MaterialUniformData {
|
|
|
3501
4133
|
/** Screen-space track matte: the text shows where this texture's alpha does. */
|
|
3502
4134
|
matte?: GPUTexture;
|
|
3503
4135
|
}
|
|
4136
|
+
/** A text batch's motion for the velocity pass: this and the previous frame. */
|
|
4137
|
+
interface SlugMotionData {
|
|
4138
|
+
modelMatrix: Mat4;
|
|
4139
|
+
prevModelMatrix: Mat4;
|
|
4140
|
+
/** The previous frame's glyph records (same glyphs, same order); absent = unchanged. */
|
|
4141
|
+
prevInstances?: Float32Array;
|
|
4142
|
+
opacity: number;
|
|
4143
|
+
slant: number;
|
|
4144
|
+
depthPull: number;
|
|
4145
|
+
}
|
|
3504
4146
|
/** Slug glyphs in the 3D pass: depth-tested, lit and resolution independent. */
|
|
3505
4147
|
declare class Slug3DPipeline {
|
|
3506
4148
|
private device;
|
|
@@ -3512,10 +4154,19 @@ declare class Slug3DPipeline {
|
|
|
3512
4154
|
private modelPool;
|
|
3513
4155
|
private instancePool;
|
|
3514
4156
|
private fontBindGroups;
|
|
4157
|
+
private motionPool;
|
|
4158
|
+
private velocity?;
|
|
3515
4159
|
private modelData;
|
|
3516
4160
|
constructor(device: GPUDevice, format: GPUTextureFormat, depthFormat: GPUTextureFormat, cameraLayout: GPUBindGroupLayout, lightsLayout: GPUBindGroupLayout, /** Samples per pixel of the pass this draws into (MSAA). */
|
|
3517
4161
|
sampleCount?: number);
|
|
3518
4162
|
resetPools(): void;
|
|
4163
|
+
/**
|
|
4164
|
+
* Draws a text batch's screen motion into a velocity pass: its glyphs
|
|
4165
|
+
* placed with this and the previous frame's plane and glyph animation,
|
|
4166
|
+
* written where the outline covers the pixel.
|
|
4167
|
+
*/
|
|
4168
|
+
drawVelocity(pass: GPURenderPassEncoder, velocityCameraBindGroup: GPUBindGroup, velocityCameraLayout: GPUBindGroupLayout, font: SlugFont, instances: Float32Array, instanceCount: number, data: SlugMotionData): void;
|
|
4169
|
+
private velocityPipeline;
|
|
3519
4170
|
draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, font: SlugFont, instances: Float32Array, instanceCount: number, data: Slug3DUniformData, useMrt?: boolean, useBloom?: boolean): void;
|
|
3520
4171
|
/** A font's textures live as long as the font: bind them once, not per draw. */
|
|
3521
4172
|
private fontBindGroup;
|
|
@@ -3712,6 +4363,12 @@ interface DrawMesh3DOpts extends SurfaceParams {
|
|
|
3712
4363
|
dispersion?: number;
|
|
3713
4364
|
/** Edge bend for glass materials, px (default 80). */
|
|
3714
4365
|
thickness?: number;
|
|
4366
|
+
/**
|
|
4367
|
+
* Glass thickness in world units (model files: KHR_materials_volume):
|
|
4368
|
+
* the refracted ray's exit point is projected, so the bend follows the
|
|
4369
|
+
* object's size on screen. Used when `thickness` (px) is unset.
|
|
4370
|
+
*/
|
|
4371
|
+
worldThickness?: number;
|
|
3715
4372
|
/** Screen-sized picture behind this 3D batch; glass materials refract it. */
|
|
3716
4373
|
backdrop?: GPUTexture;
|
|
3717
4374
|
/**
|
|
@@ -3784,6 +4441,12 @@ interface DrawMesh3DOpts extends SurfaceParams {
|
|
|
3784
4441
|
matrixInstances?: boolean;
|
|
3785
4442
|
/** Optional overall bounding box (e.g. for instanced clusters or swarms) for shadow frustum fitting. */
|
|
3786
4443
|
bounds?: Aabb;
|
|
4444
|
+
/** Base-color UV window [x, y, width, height] (a layer texture's place in its pass). */
|
|
4445
|
+
uvRect?: [number, number, number, number];
|
|
4446
|
+
/** Procedural wind sway (`MeshWind`). */
|
|
4447
|
+
wind?: MeshWind;
|
|
4448
|
+
/** Skinned crowd: instances skin from a baked palette (`MeshCrowd`). */
|
|
4449
|
+
crowd?: MeshCrowd;
|
|
3787
4450
|
}
|
|
3788
4451
|
/** Scene-wide world settings for a 3D pass. */
|
|
3789
4452
|
interface Scene3DWorld {
|
|
@@ -3791,6 +4454,11 @@ interface Scene3DWorld {
|
|
|
3791
4454
|
environment?: Environment3DOptions | null;
|
|
3792
4455
|
/** From `renderShadowMap`, when a light casts shadows. */
|
|
3793
4456
|
shadow?: ShadowUniformInfo | ShadowUniformInfo[] | null;
|
|
4457
|
+
/**
|
|
4458
|
+
* Screen-space reflections / GI (`environment.ssr`, `environment.gi`) take
|
|
4459
|
+
* two passes: `radiance`, then `traceScreenIndirect`, then `apply`.
|
|
4460
|
+
*/
|
|
4461
|
+
screenIndirect?: ScreenIndirectPass;
|
|
3794
4462
|
}
|
|
3795
4463
|
/** Something that can fall into a shadow map. */
|
|
3796
4464
|
type ShadowCaster3D = {
|
|
@@ -3846,21 +4514,42 @@ declare class Renderer3D {
|
|
|
3846
4514
|
/** Whether the current pass also writes HDR radiance (bloom). */
|
|
3847
4515
|
private passWritesHdr;
|
|
3848
4516
|
private cameraUniformData;
|
|
4517
|
+
private velocityCameraPool;
|
|
4518
|
+
private quadMotionPool;
|
|
4519
|
+
private motionBlurPipeline?;
|
|
4520
|
+
private quadVelocity?;
|
|
4521
|
+
private floorVelocity?;
|
|
4522
|
+
/**
|
|
4523
|
+
* Environments looked up this frame: a pass asks several times, and a
|
|
4524
|
+
* file path is checked on disk (stat) once per frame, not per lookup.
|
|
4525
|
+
*/
|
|
4526
|
+
private hdrEnvironments;
|
|
4527
|
+
/** The HDR target blurred by `applyMotionBlur`: what bloom reads after it. */
|
|
4528
|
+
private hdrBlurred;
|
|
3849
4529
|
private meshBuffersCache;
|
|
3850
4530
|
private materialTextures;
|
|
3851
4531
|
private materialMapCache;
|
|
3852
4532
|
/** Parsed models by source and load options: a model file is read once, not every frame. */
|
|
3853
4533
|
private modelCache;
|
|
3854
|
-
|
|
4534
|
+
/** What the cached camera buffer was packed from (pose, lens, surface). */
|
|
4535
|
+
private lastCameraKey;
|
|
3855
4536
|
private shadowTexture;
|
|
3856
4537
|
private shadowTextures;
|
|
3857
4538
|
private placeholderShadowTexture;
|
|
3858
4539
|
private shadowSampler;
|
|
4540
|
+
private placeholderEnvTexture;
|
|
4541
|
+
private envSampler;
|
|
3859
4542
|
private meshBounds;
|
|
3860
4543
|
private bloomPipeline;
|
|
3861
4544
|
private outlinePipeline;
|
|
3862
4545
|
private geometryResolvePipeline;
|
|
4546
|
+
private volumetricFogPipeline;
|
|
4547
|
+
private ssrGiPipeline;
|
|
4548
|
+
private screenIndirect;
|
|
4549
|
+
private placeholderScreenIndirect;
|
|
4550
|
+
private screenSampler;
|
|
3863
4551
|
private lastCameraBuffer;
|
|
4552
|
+
private lensPipeline;
|
|
3864
4553
|
/**
|
|
3865
4554
|
* Samples per pixel in the 3D pass. Mesh silhouettes (extruded text,
|
|
3866
4555
|
* models) are rasterized triangles: without MSAA every edge is a hard
|
|
@@ -3877,11 +4566,26 @@ declare class Renderer3D {
|
|
|
3877
4566
|
private attachments;
|
|
3878
4567
|
private attachmentsUsed;
|
|
3879
4568
|
private attachment;
|
|
4569
|
+
private hdrEnvironment;
|
|
3880
4570
|
resetPools(): void;
|
|
3881
4571
|
getOrCreateDepthTexture(width: number, height: number): GPUTexture;
|
|
3882
4572
|
private getOrCreateMsaaTexture;
|
|
3883
4573
|
/** The HDR radiance target the last `beginPass(…, writeHdr)` drew into. */
|
|
3884
4574
|
hdrSource(): GPUTexture | null;
|
|
4575
|
+
/**
|
|
4576
|
+
* A cube camera's target: six `size`² faces with a full mip chain, drawn
|
|
4577
|
+
* into face by face and sampled by `remapLens`. `hdr` holds the scene
|
|
4578
|
+
* radiance (the bloom source) instead of display colour.
|
|
4579
|
+
*/
|
|
4580
|
+
getOrCreateCubeTexture(size: number, hdr: boolean): GPUTexture;
|
|
4581
|
+
/** Face `face` (WebGPU layer order) of a cube target, as a render attachment. */
|
|
4582
|
+
cubeFaceView(cube: GPUTexture, face: number): GPUTextureView;
|
|
4583
|
+
/**
|
|
4584
|
+
* Draws a cube camera's picture into `dest` (`width` × `height`) through
|
|
4585
|
+
* its lens. With an `hdr` cube the radiance is remapped too and becomes
|
|
4586
|
+
* `hdrSource()`, so bloom glows where the lens put the light.
|
|
4587
|
+
*/
|
|
4588
|
+
remapLens(encoder: GPUCommandEncoder, color: GPUTexture, hdr: GPUTexture | null, dest: GPUTextureView, width: number, height: number, options: LensRemapOptions): void;
|
|
3885
4589
|
private getOrCreateHdrTexture;
|
|
3886
4590
|
getOrCreateLinearDepthTexture(width: number, height: number): GPUTexture;
|
|
3887
4591
|
getOrCreateReflectionTexture(width: number, height: number): GPUTexture;
|
|
@@ -3890,22 +4594,35 @@ declare class Renderer3D {
|
|
|
3890
4594
|
getOrCreateReflectionTempTexture(width: number, height: number): GPUTexture;
|
|
3891
4595
|
getOrCreateReflectionBlurredTexture(width: number, height: number): GPUTexture;
|
|
3892
4596
|
packCameraUniforms(camera: Camera3DPose, surfaceWidth: number, surfaceHeight: number, time?: number): GPUBuffer;
|
|
4597
|
+
/** The environment's prefiltered HDRI, as the lights uniform describes it. */
|
|
4598
|
+
private hdriUniforms;
|
|
3893
4599
|
createCameraBindGroup(cameraBuffer: GPUBuffer): GPUBindGroup;
|
|
3894
4600
|
getOrCreateLightsBuffer(lights?: Light3DOptions[], world?: Scene3DWorld): GPUBuffer;
|
|
3895
|
-
/** Lights uniform + shadow map + comparison sampler (group 3 of every lit shader). */
|
|
4601
|
+
/** Lights uniform + shadow map + comparison sampler + environment map (group 3 of every lit shader). */
|
|
3896
4602
|
private createLightsBindGroup;
|
|
4603
|
+
/** Group 3 bindings 6..9: the traced screen indirect light, or 1×1 stand-ins. */
|
|
4604
|
+
private screenIndirectEntries;
|
|
4605
|
+
/**
|
|
4606
|
+
* Traces screen-space reflections and diffuse GI from the radiance pass
|
|
4607
|
+
* just ended (`beginPass` with `screenIndirect: "radiance"`, a geometry
|
|
4608
|
+
* target and `writeHdr`), for the `apply` pass that follows.
|
|
4609
|
+
*/
|
|
4610
|
+
traceScreenIndirect(encoder: GPUCommandEncoder, cameraBuffer: GPUBuffer, environment: Environment3DOptions): void;
|
|
3897
4611
|
/** Local bounds of a mesh, computed once. */
|
|
3898
4612
|
private meshAabb;
|
|
3899
4613
|
/** World bounds of a mesh or quad draw, for fitting shadow frusta. */
|
|
3900
4614
|
worldBounds(item: ShadowCaster3D): Aabb;
|
|
4615
|
+
private getOrCreateShadowTexture;
|
|
4616
|
+
private renderShadowLayerPass;
|
|
3901
4617
|
/**
|
|
3902
|
-
* Renders the shadow map for `light` (a directional or
|
|
4618
|
+
* Renders the shadow map for `light` (a directional, spot, rect, or point light with
|
|
3903
4619
|
* `castShadow`) from `casters`, fitting its frustum around them and deep
|
|
3904
4620
|
* enough for `receivers`. Pass the result to `beginPass` as `world.shadow`.
|
|
3905
4621
|
*/
|
|
3906
4622
|
renderShadowMap(encoder: GPUCommandEncoder, light: Light3DOptions, lightIndex: number, casters: ShadowCaster3D[], receivers: Aabb[], options?: ShadowMapOptions3D): ShadowUniformInfo | null;
|
|
3907
4623
|
beginPass(encoder: GPUCommandEncoder, colorTargetView: GPUTextureView, surfaceWidth: number, surfaceHeight: number, camera: Camera3DPose, loadOp?: GPULoadOp, clearColor?: GPUColor, linearDepthTargetView?: GPUTextureView, lights?: Light3DOptions[], world?: Scene3DWorld, /** Also write unclamped scene radiance (`hdrTexture()`), the bloom source. */
|
|
3908
|
-
writeHdr?: boolean)
|
|
4624
|
+
writeHdr?: boolean, /** Where the radiance resolves instead of `hdrSource()` (a cube face). */
|
|
4625
|
+
hdrTargetView?: GPUTextureView): {
|
|
3909
4626
|
pass: GPURenderPassEncoder;
|
|
3910
4627
|
cameraBindGroup: GPUBindGroup;
|
|
3911
4628
|
cameraBuffer: GPUBuffer;
|
|
@@ -3946,6 +4663,38 @@ declare class Renderer3D {
|
|
|
3946
4663
|
sampleRate?: number;
|
|
3947
4664
|
}, wireframe?: boolean, input?: GPUMeshBuffers): GPUMeshBuffers;
|
|
3948
4665
|
drawMesh3D(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, meshOrBuffers: Mesh3DData | GPUMeshBuffers, texture: GPUTexture | undefined, opts?: DrawMesh3DOpts, useMrt?: boolean): void;
|
|
4666
|
+
/**
|
|
4667
|
+
* Begins the velocity pass for shutter motion blur: draw the scene's
|
|
4668
|
+
* meshes and planes with `drawMeshVelocity` / `drawQuadVelocity`, end
|
|
4669
|
+
* the pass, then `applyMotionBlur` with the returned texture.
|
|
4670
|
+
*/
|
|
4671
|
+
beginVelocityPass(encoder: GPUCommandEncoder, width: number, height: number, camera: Camera3DPose, prevCamera: Camera3DPose): {
|
|
4672
|
+
pass: GPURenderPassEncoder;
|
|
4673
|
+
cameraBindGroup: GPUBindGroup;
|
|
4674
|
+
velocity: GPUTexture;
|
|
4675
|
+
};
|
|
4676
|
+
/** Draws a mesh's motion since `prev` (its state a frame earlier) into the velocity pass. */
|
|
4677
|
+
drawMeshVelocity(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, meshOrBuffers: Mesh3DData | GPUMeshBuffers, texture: GPUTexture | undefined, opts: DrawMesh3DOpts, prev: MeshMotionPrev | undefined): void;
|
|
4678
|
+
/** Draws a 3D layer plane's motion since `prevModelMatrix` into the velocity pass. */
|
|
4679
|
+
drawQuadVelocity(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, texture: GPUTexture, opts: DrawQuad3DOpts, prevModelMatrix: Mat4 | undefined): void;
|
|
4680
|
+
/**
|
|
4681
|
+
* Draws a text layer's glyphs' motion since `prev` (its plane matrix and
|
|
4682
|
+
* glyph batches a frame earlier) into the velocity pass. A batch whose
|
|
4683
|
+
* glyphs changed (another font or count) moves with its plane alone.
|
|
4684
|
+
*/
|
|
4685
|
+
drawSlugVelocity(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, batches: SlugGlyphBatch[], opts: DrawQuad3DOpts, stackBase: number, prev: {
|
|
4686
|
+
modelMatrix: Mat4;
|
|
4687
|
+
batches: SlugGlyphBatch[];
|
|
4688
|
+
} | undefined): void;
|
|
4689
|
+
/** Draws the environment floor's motion (camera motion only) into the velocity pass. */
|
|
4690
|
+
drawFloorVelocity(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, floor: Environment3DFloor): void;
|
|
4691
|
+
private fullscreenVelocityPipeline;
|
|
4692
|
+
private quadVelocityPipeline;
|
|
4693
|
+
/**
|
|
4694
|
+
* Shutter motion blur: blurs `color` by the velocity pass's `velocity`
|
|
4695
|
+
* into `target` (a view of a texture in this renderer's format, same size).
|
|
4696
|
+
*/
|
|
4697
|
+
applyMotionBlur(encoder: GPUCommandEncoder, color: GPUTexture, velocity: GPUTexture, target: GPUTextureView, options?: MotionBlurPassOptions): void;
|
|
3949
4698
|
loadModel(srcOrData: string | ArrayBuffer | Uint8Array, format?: "obj" | "fbx" | "gltf" | "glb" | "stl" | "ply" | "vox" | "3ds" | "off" | "auto", options?: LoadModelOptions): Model3DData;
|
|
3950
4699
|
/** Loads glTF asynchronously so its compressed buffer decoders can initialize. */
|
|
3951
4700
|
loadModelAsync(srcOrData: string | ArrayBuffer | Uint8Array, format?: Parameters<Renderer3D["loadModel"]>[1], options?: LoadModelOptions): Promise<Model3DData>;
|
|
@@ -3959,6 +4708,8 @@ declare class Renderer3D {
|
|
|
3959
4708
|
* on the GPU (each decoded once); absent maps are left out.
|
|
3960
4709
|
*/
|
|
3961
4710
|
materialMaps(material: Material3D): Promise<MeshMaterialMaps>;
|
|
4711
|
+
/** A sampler for each map that says how it is sampled. */
|
|
4712
|
+
private mapSamplers;
|
|
3962
4713
|
private uploadMaterialTexture;
|
|
3963
4714
|
/** Decodes an encoded image into a texture with a full mip chain. */
|
|
3964
4715
|
private uploadImage;
|
|
@@ -3969,6 +4720,12 @@ declare class Renderer3D {
|
|
|
3969
4720
|
resolveGeometry(encoder: GPUCommandEncoder, geometry: GPUTexture): void;
|
|
3970
4721
|
applyOutlines(encoder: GPUCommandEncoder, source: GPUTexture, geometry: GPUTexture, dest: GPUTextureView, camera: Camera3DPose, options: GeometryOutlineOptions, fog?: Environment3DFog): void;
|
|
3971
4722
|
applyDepthOfField(encoder: GPUCommandEncoder, sourceColorTex: GPUTexture, depthTex: GPUTexture, destView: GPUTextureView, cameraBuffer: GPUBuffer): void;
|
|
4723
|
+
/**
|
|
4724
|
+
* Raymarches volumetric fog and shadowed light shafts at half-resolution,
|
|
4725
|
+
* then composites over `sourceColorTex` into `destView` using depth-aware
|
|
4726
|
+
* bilateral upsampling.
|
|
4727
|
+
*/
|
|
4728
|
+
applyVolumetricFog(encoder: GPUCommandEncoder, sourceColorTex: GPUTexture, linearDepthTex: GPUTexture, destView: GPUTextureView, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, environment: Environment3DOptions, timeSeconds?: number, frameIndex?: number): void;
|
|
3972
4729
|
/** Uploads raw `InstanceData` float buffer to a GPU storage buffer from the instance pool. */
|
|
3973
4730
|
uploadInstanceData(data: Float32Array): GPUBuffer;
|
|
3974
4731
|
/** Draws instanced 3D meshes in a single hardware-instanced draw call. */
|
|
@@ -3977,9 +4734,45 @@ declare class Renderer3D {
|
|
|
3977
4734
|
}
|
|
3978
4735
|
declare function loadModel3D(srcOrData: string | ArrayBuffer | Uint8Array, format?: "obj" | "fbx" | "gltf" | "glb" | "stl" | "ply" | "vox" | "3ds" | "off" | "auto", options?: LoadModelOptions): Model3DData;
|
|
3979
4736
|
//#endregion
|
|
3980
|
-
//#region src/renderer3d/
|
|
3981
|
-
|
|
3982
|
-
|
|
4737
|
+
//#region src/renderer3d/scatter.d.ts
|
|
4738
|
+
type V3 = [number, number, number];
|
|
4739
|
+
interface ScatterExclusion {
|
|
4740
|
+
/** Center in the surface's parent space, px. */
|
|
4741
|
+
x: number;
|
|
4742
|
+
z: number;
|
|
4743
|
+
/** Nothing grows inside this radius, px. */
|
|
4744
|
+
radius: number;
|
|
4745
|
+
/** Density ramps back to full over this many px past `radius`. Default 0. */
|
|
4746
|
+
falloff?: number;
|
|
4747
|
+
}
|
|
4748
|
+
interface ScatterOptions {
|
|
4749
|
+
/** Points to place (fewer when spacing or filters leave no room). */
|
|
4750
|
+
count: number;
|
|
4751
|
+
/** Poisson-disk spacing: no two points closer than this, px. */
|
|
4752
|
+
minDistance?: number;
|
|
4753
|
+
seed?: number;
|
|
4754
|
+
/** Allowed slope in degrees from level ground. Default [0, 89]. */
|
|
4755
|
+
slopeRange?: [number, number];
|
|
4756
|
+
/** Allowed altitude 0..1 across the surface's vertical extent (0 = lowest). Default [0, 1]. */
|
|
4757
|
+
elevationRange?: [number, number];
|
|
4758
|
+
/** 0 keeps instances upright, 1 stands them on the surface normal. Default 0.3. */
|
|
4759
|
+
alignToNormal?: number;
|
|
4760
|
+
/** Uniform scale drawn per point. Default [1, 1]. */
|
|
4761
|
+
scaleRange?: [number, number];
|
|
4762
|
+
/** Random turn around the instance's up axis. Default true. */
|
|
4763
|
+
randomYaw?: boolean;
|
|
4764
|
+
exclude?: ScatterExclusion[];
|
|
4765
|
+
}
|
|
4766
|
+
interface ScatterPoint {
|
|
4767
|
+
/** On the surface, in its parent space. */
|
|
4768
|
+
position: V3;
|
|
4769
|
+
/** Unit face normal there. */
|
|
4770
|
+
normal: V3;
|
|
4771
|
+
rotation: Quat;
|
|
4772
|
+
scale: number;
|
|
4773
|
+
/** Normalized altitude 0..1. */
|
|
4774
|
+
elevation: number;
|
|
4775
|
+
}
|
|
3983
4776
|
/**
|
|
3984
4777
|
* @deprecated A texture holder only; nothing renders into it. Shadows are
|
|
3985
4778
|
* drawn by `Renderer3D.renderShadowMap` (a `castShadow` directional or spot
|
|
@@ -4025,6 +4818,43 @@ declare class SSAOPipeline {
|
|
|
4025
4818
|
destroy(): void;
|
|
4026
4819
|
}
|
|
4027
4820
|
//#endregion
|
|
4821
|
+
//#region src/renderer3d/ssr-gi-pipeline.d.ts
|
|
4822
|
+
/** Reflection hits: pixel positions need full float precision at 4K. */
|
|
4823
|
+
|
|
4824
|
+
//#endregion
|
|
4825
|
+
//#region src/renderer3d/volumetric-fog-pipeline.d.ts
|
|
4826
|
+
interface VolumetricFogRenderParams {
|
|
4827
|
+
encoder: GPUCommandEncoder;
|
|
4828
|
+
sourceColorTex: GPUTexture;
|
|
4829
|
+
linearDepthTex: GPUTexture;
|
|
4830
|
+
halfFogTex: GPUTexture;
|
|
4831
|
+
destView: GPUTextureView;
|
|
4832
|
+
cameraBindGroup: GPUBindGroup;
|
|
4833
|
+
lightsBindGroup: GPUBindGroup;
|
|
4834
|
+
fog: ResolvedVolumetricFog;
|
|
4835
|
+
fullWidth: number;
|
|
4836
|
+
fullHeight: number;
|
|
4837
|
+
halfWidth: number;
|
|
4838
|
+
halfHeight: number;
|
|
4839
|
+
timeSeconds: number;
|
|
4840
|
+
frameIndex: number;
|
|
4841
|
+
}
|
|
4842
|
+
declare class VolumetricFogPipeline {
|
|
4843
|
+
private device;
|
|
4844
|
+
private raymarchPipeline;
|
|
4845
|
+
private upsamplePipeline;
|
|
4846
|
+
private fogBindGroupLayout;
|
|
4847
|
+
private emptyGroup2Layout;
|
|
4848
|
+
private emptyGroup2BindGroup;
|
|
4849
|
+
private linearSampler;
|
|
4850
|
+
private bufferPool;
|
|
4851
|
+
private uniformScratch;
|
|
4852
|
+
constructor(device: GPUDevice, format?: GPUTextureFormat);
|
|
4853
|
+
resetPools(): void;
|
|
4854
|
+
destroy(): void;
|
|
4855
|
+
render(params: VolumetricFogRenderParams): void;
|
|
4856
|
+
}
|
|
4857
|
+
//#endregion
|
|
4028
4858
|
//#region src/shader-store.d.ts
|
|
4029
4859
|
interface RegisteredShader {
|
|
4030
4860
|
wgsl: string;
|
|
@@ -4455,7 +5285,7 @@ declare global {
|
|
|
4455
5285
|
var __GATEWAI_DELAYS__: Set<number>;
|
|
4456
5286
|
}
|
|
4457
5287
|
//#endregion
|
|
4458
|
-
//#region ../node-sdk/dist/index-
|
|
5288
|
+
//#region ../node-sdk/dist/index-CudN5Wne.d.mts
|
|
4459
5289
|
//#endregion
|
|
4460
5290
|
//#region renderer/index.d.ts
|
|
4461
5291
|
type GPUCommandEncoder$1 = globalThis.GPUCommandEncoder;
|
|
@@ -4494,6 +5324,11 @@ interface NodeRenderProps<TOperation extends MediaOperation = MediaOperation> {
|
|
|
4494
5324
|
isVideoMode?: boolean;
|
|
4495
5325
|
isPlaying?: boolean;
|
|
4496
5326
|
excludeTextures?: GPUTexture$1[];
|
|
5327
|
+
/**
|
|
5328
|
+
* Render only to record the 3D scene's motion (shutter motion blur reads
|
|
5329
|
+
* every draw one frame earlier); nothing drawn is shown.
|
|
5330
|
+
*/
|
|
5331
|
+
motionHistoryOnly?: boolean;
|
|
4497
5332
|
/** Signal values that override the node's own (text animators read them). */
|
|
4498
5333
|
signals?: Record<string, unknown>;
|
|
4499
5334
|
renderChild?: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>) => unknown;
|
|
@@ -4564,5 +5399,5 @@ declare const SignalResultSchema: z.ZodObject<{
|
|
|
4564
5399
|
}, z.core.$strip>], null>;
|
|
4565
5400
|
}, z.core.$strip>;
|
|
4566
5401
|
//#endregion
|
|
4567
|
-
export {
|
|
4568
|
-
//# sourceMappingURL=index-
|
|
5402
|
+
export { TubeGeometryOptions as $, buildPathLUT as $n, Light3DOptions as $r, LongShadowConfig as $t, PolyhedronGeometryOptions as A, lorentzFactor as Ai, TextPathSourceSchema as An, CirclePathOptions as Ar, AudioSpectrumTypography as At, SdfPrimitive as B, TextWigglySelectorSchema as Bn, Environment3DSsrOptions as Br, ExpressionEvaluationContext as Bt, MasterAudioEntry as C, defaultCubeFaceSize as Ci, TextCursorConfigSchema as Cn, waveToCubicBeziers as Cr, AnchorGrouping as Ct, MotionBlurPipeline as D, fractal2 as Di, TextPathOptions as Dn, Camera3DPose as Dr, AnimatableGlyphProps as Dt, Model3DData as E, dopplerLut as Ei, TextPathBuilder as En, Camera3D as Er, AnchorPresetSchema as Et, RoundedBoxGeometryOptions as F, resolveVolumetricFog as Fi, TextSelector as Fn, ENVIRONMENT_PRESETS as Fr, CubicBezierSegmentSchema as Ft, Skeleton3D as G, VariableFontAxes as Gn, FrustumPlane as Gr, GlyphAnchorGrouping as Gt, ShardGeometryOptions as H, TypewriterAnimatorSchema as Hn, Environment3DVolumetricFogNoise as Hr, ExpressionSelectorSchema as Ht, SSAOPipeline as I, terrace as Ii, TextSelectorSchema as In, Environment3DFloor as Ir, DynamicStrokeProperties as It, SphereGeometryOptions as J, Vec2Schema as Jn, HdriUniforms as Jr, GlyphAnchorPointSchema as Jt, SlugFontCache as K, VariableFontAxesSchema as Kn, FrustumPlanes as Kr, GlyphAnchorGroupingSchema as Kt, ScatterOptions as L, TextSignalSelector as Ln, Environment3DFog as Lr, DynamicStrokePropertiesSchema as Lt, Renderer2D as M, resolveEnvironment as Mi, TextRangeSelectorSchema as Mn, DIRECT_LIGHT_FLOATS as Mr, ChromaticGlitchConfig as Mt, Renderer3D as N, resolveGi as Ni, TextScrambleConfig as Nn, DOPPLER_LUT_MAX as Nr, ChromaticGlitchConfigSchema as Nt, NodeAnimationTrack3D as O, lensCenterDensity as Oi, TextPathOptionsSchema as On, CameraShakeOptions as Or, AnimatableGlyphPropsSchema as Ot, RingGeometryOptions as P, resolveSsr as Pi, TextScrambleConfigSchema as Pn, DOPPLER_LUT_SIZE as Pr, CubicBezierSegment as Pt, TorusGeometryOptions as Q, VolumetricFormationModeSchema as Qn, Light3D as Qr, LineSpacingDynamicsSchema as Qt, ScatterPoint as R, TextSignalSelectorSchema as Rn, Environment3DGiOptions as Rr, EnhancedTextNode as Rt, LoadModelOptions as S, cubeTexel as Si, TextCursorConfig as Sn, samplePathChainGeometry as Sr, AdvancedTextAnimatorSchema as St, Mesh3DData as T, dopplerLuminanceGain as Ti, TextCursorStyleSchema as Tn, CUBE_FLIP as Tr, AnchorPreset as Tt, SignalRegistry as U, TypingCadence as Un, FractalMode as Ur, ExtendedGlyphProperties as Ut, ShadowPipeline as V, TypewriterAnimator as Vn, Environment3DVolumetricFog as Vr, ExpressionSelector as Vt, SignalRegistryResource as W, TypingCadenceSchema as Wn, FractalOptions as Wr, ExtendedGlyphPropertiesSchema as Wt, TerrainGeometryOptions as X, VolumetricFormationConfigSchema as Xn, LIGHT_UNIFORM_SIZE_BYTES as Xr, KineticMarqueeConfigSchema as Xt, TerrainColorByElevation as Y, VolumetricFormationConfig as Yn, HelixOptions as Yr, KineticMarqueeConfig as Yt, TerrainNoiseOptions as Z, VolumetricFormationMode as Zn, LensProjection as Zr, LineSpacingDynamics as Zt, ExtrudeShapeGeometryOptions as _, aberrate as _i, SpringPhysics as _n, getScramblePool as _r, textureCache as _t, AudioLatentData as a, Noise as ai, SelectorBasedOn as an, ellipseToCubicBeziers as ar, ensureDevice as at, LatheGeometryOptions as b, createRandom as bi, TextAnchorConfigSchema as bn, sampleAudioSpectrumScale as br, AdvancedTextAnimator as bt, AudioMeshDeformPipeline as c, Path3DSample as ci, SelectorModeSchema as cn, evaluateExpressionSelector as cr, loadFBX as ct, AudioSignalComputePipeline as d, ResolvedSsr as di, SelectorUnits as dn, evaluateSkewMatrix as dr, lutStore as dt, LightKind as ei, LongShadowConfigSchema as en, computeAnchorPivotOffset as er, TubePathSpec as et, BlendMode as f, ResolvedVolumetricFog as fi, SelectorUnitsSchema as fn, evaluateSpringProgress as fr, parseFBX as ft, EffectPipeline as g, Vector3Math as gi, Spatial3DPropertiesSchema as gn, generatePathSegments as gr, signalRegistry as gt, CylinderGeometryOptions as h, Vec3 as hi, Spatial3DProperties as hn, generateArcLengthLUT as hr, shaderStore as ht, AnimationClip3D as i, Matrix4Math as ii, PathChainLUTEntry as in, distanceToCurveParameter as ir, describeGpu as it, RenderContextValue as j, parseColorToRgb as ji, TextRangeSelector as jn, CubeLensOptions as jr, AudioSpectrumTypographySchema as jt, Points3DGeometryOptions as k, linearRgb as ki, TextPathSource as kn, CatmullRomOptions as kr, ArcLengthLUTEntry as kt, AudioPitchTrackConfig as l, ResolvedEnvironment as li, SelectorShape as ln, evaluateMarqueeOffset as lr, loadModel3D as lt, CapsuleGeometryOptions as m, ShadowUniformInfo as mi, SkewPropertiesSchema as mn, evaluateVolumetricFormation as mr, parseOBJ as mt, NodeRendererPlugin as n, MAX_LIGHTS as ni, ParticleDissolveConfigSchema as nn, computeRangeSelectorWeight as nr, WebGPUAudioProcessor as nt, AudioLatentEngine as o, Path3D as oi, SelectorBasedOnSchema as on, evaluateCubicBezier as or, initHeadlessWebGPU as ot, Bone3D as p, ScreenIndirectPass as pi, SkewProperties as pn, evaluateTypewriterState as pr, parseMTL as pt, SlugPipeline as q, Vec2 as qn, GPULightData as qr, GlyphAnchorPoint as qt, WebGPUNodeRenderer as r, Mat4 as ri, PathChainLUT as rn, deterministicWigglyNoise as rr, buildWGSLSignalFn as rt, AudioLatentTrackCache as s, Path3DPoint as si, SelectorMode as sn, evaluateCubicBezierDerivative as sr, inputStore as st, SignalResultSchema as t, LightsUniformData as ti, ParticleDissolveConfig as tn, computeLineLeadingDisplacement as tr, VolumetricFogPipeline as tt, AudioSignalComputeConfig as u, ResolvedGi as ui, SelectorShapeSchema as un, evaluateSelectorCombination as ur, loadOBJ as ut, GlassPipeline as v, cameraBasis as vi, SpringPhysicsSchema as vn, getShuffledOrder as vr, AETextAnimator as vt, Material3D as w, dopplerColorMatrix as wi, TextCursorStyle as wn, BezierSegment3D as wr, AnchorGroupingSchema as wt, Line3DGeometryOptions as x, cubeFaceCameras as xi, TextAnimatorBuilder as xn, sampleCurveGeometry as xr, AdvancedTextAnimatorBuilder as xt, GpuAdapterDescription as y, createNoise as yi, TextAnchorConfig as yn, parseSvgPathToCubicBeziers as yr, AETextAnimatorSchema as yt, SdfGeometryOptions as z, TextWigglySelector as zn, Environment3DOptions as zr, EnhancedTextNodeSchema as zt };
|
|
5403
|
+
//# sourceMappingURL=index-s2qQ8ifZ.d.mts.map
|