framefields 2.0.2
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/LICENCE +202 -0
- package/README.md +740 -0
- package/dist/audio/index.d.mts +5 -0
- package/dist/audio/index.mjs +14 -0
- package/dist/audio-Dvwwz8xU.d.mts +37 -0
- package/dist/audio-Dvwwz8xU.d.mts.map +1 -0
- package/dist/audio-TAvPwzLR.mjs +214 -0
- package/dist/audio-TAvPwzLR.mjs.map +1 -0
- package/dist/audio-x28ZgQBP.mjs +85 -0
- package/dist/audio-x28ZgQBP.mjs.map +1 -0
- package/dist/chunk-GMkBE123.mjs +47 -0
- package/dist/client-C74hb7fy.mjs +66 -0
- package/dist/client-C74hb7fy.mjs.map +1 -0
- package/dist/dist-1iUYuPct.mjs +1859 -0
- package/dist/dist-1iUYuPct.mjs.map +1 -0
- package/dist/dist-Bx6J0VcM.mjs +1859 -0
- package/dist/dist-Bx6J0VcM.mjs.map +1 -0
- package/dist/dist-C_hjvkdN.mjs +2220 -0
- package/dist/dist-C_hjvkdN.mjs.map +1 -0
- package/dist/dist-DKm2IyEJ.mjs +94 -0
- package/dist/dist-DKm2IyEJ.mjs.map +1 -0
- package/dist/dist-cjs-B5EVqDFp.mjs +85 -0
- package/dist/dist-cjs-B5EVqDFp.mjs.map +1 -0
- package/dist/dist-cjs-BGJkdexX.mjs +437 -0
- package/dist/dist-cjs-BGJkdexX.mjs.map +1 -0
- package/dist/dist-cjs-BKmGCgtm.mjs +9069 -0
- package/dist/dist-cjs-BKmGCgtm.mjs.map +1 -0
- package/dist/dist-cjs-BUc0_kg-.mjs +1091 -0
- package/dist/dist-cjs-BUc0_kg-.mjs.map +1 -0
- package/dist/dist-cjs-BUwe2XhR.mjs +153 -0
- package/dist/dist-cjs-BUwe2XhR.mjs.map +1 -0
- package/dist/dist-cjs-BWgoUCXJ.mjs +137 -0
- package/dist/dist-cjs-BWgoUCXJ.mjs.map +1 -0
- package/dist/dist-cjs-CmZEMtO6.mjs +6 -0
- package/dist/dist-cjs-D7kEM-Mj.mjs +181 -0
- package/dist/dist-cjs-D7kEM-Mj.mjs.map +1 -0
- package/dist/dist-cjs-DFUmy89O.mjs +48 -0
- package/dist/dist-cjs-DFUmy89O.mjs.map +1 -0
- package/dist/dist-cjs-Df7144zM.mjs +209 -0
- package/dist/dist-cjs-Df7144zM.mjs.map +1 -0
- package/dist/dist-cjs-DgxjcvBN.mjs +98 -0
- package/dist/dist-cjs-DgxjcvBN.mjs.map +1 -0
- package/dist/dist-cjs-DsMdld8l.mjs +5015 -0
- package/dist/dist-cjs-DsMdld8l.mjs.map +1 -0
- package/dist/dist-cjs-Dzs5P3K0.mjs +51 -0
- package/dist/dist-cjs-Dzs5P3K0.mjs.map +1 -0
- package/dist/dist-cjs-ECMuIF57.mjs +323 -0
- package/dist/dist-cjs-ECMuIF57.mjs.map +1 -0
- package/dist/dist-cjs-lYvO8aDo.mjs +64 -0
- package/dist/dist-cjs-lYvO8aDo.mjs.map +1 -0
- package/dist/dist-cjs-qEJrwjGk.mjs +66 -0
- package/dist/dist-cjs-qEJrwjGk.mjs.map +1 -0
- package/dist/dist-cjs-x5cwlqA5.mjs +43 -0
- package/dist/dist-cjs-x5cwlqA5.mjs.map +1 -0
- package/dist/dist-gjHmorxL.mjs +27479 -0
- package/dist/dist-gjHmorxL.mjs.map +1 -0
- package/dist/effects/index.d.mts +5 -0
- package/dist/effects/index.mjs +35 -0
- package/dist/effects-CHWORCYd.mjs +811 -0
- package/dist/effects-CHWORCYd.mjs.map +1 -0
- package/dist/event-streams-D-APZ7Ke.mjs +204 -0
- package/dist/event-streams-D-APZ7Ke.mjs.map +1 -0
- package/dist/fonts/index.d.mts +2 -0
- package/dist/fonts/index.mjs +3 -0
- package/dist/fonts-DrGTBJJk.mjs +188 -0
- package/dist/fonts-DrGTBJJk.mjs.map +1 -0
- package/dist/index-B0BNPEoH.d.mts +2117 -0
- package/dist/index-B0BNPEoH.d.mts.map +1 -0
- package/dist/index-BMVVmc4G.d.mts +72 -0
- package/dist/index-BMVVmc4G.d.mts.map +1 -0
- package/dist/index-D1ZsMpke.d.mts +264 -0
- package/dist/index-D1ZsMpke.d.mts.map +1 -0
- package/dist/index-D2jDC7O5.d.mts +3643 -0
- package/dist/index-D2jDC7O5.d.mts.map +1 -0
- package/dist/index-D2wJqSl5.d.mts +114 -0
- package/dist/index-D2wJqSl5.d.mts.map +1 -0
- package/dist/index-DKFGNyMB.d.mts +309 -0
- package/dist/index-DKFGNyMB.d.mts.map +1 -0
- package/dist/index-DiSKzDGR.d.mts +65 -0
- package/dist/index-DiSKzDGR.d.mts.map +1 -0
- package/dist/index.d.mts +4425 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2623 -0
- package/dist/index.mjs.map +1 -0
- package/dist/package-C58KmGKw.mjs +6 -0
- package/dist/package-C58KmGKw.mjs.map +1 -0
- package/dist/preview/index.d.mts +90 -0
- package/dist/preview/index.d.mts.map +1 -0
- package/dist/preview/index.mjs +15 -0
- package/dist/preview-engine/audio.mjs +1 -0
- package/dist/preview-engine/child_process-AIL2NBWS.mjs +1 -0
- package/dist/preview-engine/chunk-24P6DAB3.mjs +1 -0
- package/dist/preview-engine/chunk-37EFVZWT.mjs +1 -0
- package/dist/preview-engine/chunk-3O5OKR6D.mjs +223 -0
- package/dist/preview-engine/chunk-47VT677S.mjs +8 -0
- package/dist/preview-engine/chunk-4BEJJKEU.mjs +315 -0
- package/dist/preview-engine/chunk-4GEWSUX5.mjs +1 -0
- package/dist/preview-engine/chunk-55CCFPUX.mjs +237 -0
- package/dist/preview-engine/chunk-5JD65JSJ.mjs +110 -0
- package/dist/preview-engine/chunk-5UP7FSGT.mjs +294 -0
- package/dist/preview-engine/chunk-5XDHHOF2.mjs +367 -0
- package/dist/preview-engine/chunk-6YJP57MZ.mjs +729 -0
- package/dist/preview-engine/chunk-6ZOXGAYA.mjs +112 -0
- package/dist/preview-engine/chunk-AOLAHYVV.mjs +529 -0
- package/dist/preview-engine/chunk-B6PLCMBM.mjs +1 -0
- package/dist/preview-engine/chunk-BJKH76OM.mjs +264 -0
- package/dist/preview-engine/chunk-BUIQ5TUH.mjs +104 -0
- package/dist/preview-engine/chunk-BVF64D6H.mjs +1 -0
- package/dist/preview-engine/chunk-CA5N7JRZ.mjs +138 -0
- package/dist/preview-engine/chunk-CNSHAFEA.mjs +1 -0
- package/dist/preview-engine/chunk-CURR5X7D.mjs +1 -0
- package/dist/preview-engine/chunk-CVGM2U4J.mjs +47 -0
- package/dist/preview-engine/chunk-CYY366IE.mjs +1 -0
- package/dist/preview-engine/chunk-D5PHI6ET.mjs +109 -0
- package/dist/preview-engine/chunk-D7MZHP2Y.mjs +275 -0
- package/dist/preview-engine/chunk-DPPH3NK2.mjs +182 -0
- package/dist/preview-engine/chunk-DPST2XLC.mjs +418 -0
- package/dist/preview-engine/chunk-DRLEOHN5.mjs +1 -0
- package/dist/preview-engine/chunk-EDIZNO3P.mjs +1 -0
- package/dist/preview-engine/chunk-EHIIT4ZR.mjs +52 -0
- package/dist/preview-engine/chunk-FKZ4XXPE.mjs +1 -0
- package/dist/preview-engine/chunk-G3HW4VER.mjs +60 -0
- package/dist/preview-engine/chunk-G76HSKOS.mjs +184 -0
- package/dist/preview-engine/chunk-GYG2IIBR.mjs +1 -0
- package/dist/preview-engine/chunk-H2F5NVQ6.mjs +63 -0
- package/dist/preview-engine/chunk-H5BPCY7N.mjs +188 -0
- package/dist/preview-engine/chunk-HAXK42HG.mjs +997 -0
- package/dist/preview-engine/chunk-HXMDPMLB.mjs +1 -0
- package/dist/preview-engine/chunk-HYBAPT6I.mjs +1 -0
- package/dist/preview-engine/chunk-I4FH6HYU.mjs +73 -0
- package/dist/preview-engine/chunk-IYVN2QEL.mjs +1 -0
- package/dist/preview-engine/chunk-JPXQPP6J.mjs +1 -0
- package/dist/preview-engine/chunk-JWNHTRED.mjs +164 -0
- package/dist/preview-engine/chunk-KZOLCZIV.mjs +103 -0
- package/dist/preview-engine/chunk-L62MRHGZ.mjs +89 -0
- package/dist/preview-engine/chunk-LEEZXHQO.mjs +117 -0
- package/dist/preview-engine/chunk-LKYN3BM2.mjs +1 -0
- package/dist/preview-engine/chunk-LP3EP33S.mjs +610 -0
- package/dist/preview-engine/chunk-M2GRYRLM.mjs +111 -0
- package/dist/preview-engine/chunk-MC7TZZLD.mjs +134 -0
- package/dist/preview-engine/chunk-MT2DZQHO.mjs +1 -0
- package/dist/preview-engine/chunk-MTJHQATU.mjs +1 -0
- package/dist/preview-engine/chunk-N4LHIPHZ.mjs +340 -0
- package/dist/preview-engine/chunk-N4PWLBZ7.mjs +5 -0
- package/dist/preview-engine/chunk-NQZKBFC6.mjs +40 -0
- package/dist/preview-engine/chunk-NWRSVVTF.mjs +186 -0
- package/dist/preview-engine/chunk-P3HBP725.mjs +1 -0
- package/dist/preview-engine/chunk-PIAJWALT.mjs +1 -0
- package/dist/preview-engine/chunk-PJ3DVG45.mjs +1 -0
- package/dist/preview-engine/chunk-QP2NI4XD.mjs +82 -0
- package/dist/preview-engine/chunk-SA3JUR6D.mjs +52 -0
- package/dist/preview-engine/chunk-SRT2OCQW.mjs +1 -0
- package/dist/preview-engine/chunk-SWD76532.mjs +98 -0
- package/dist/preview-engine/chunk-SXX7HX34.mjs +191 -0
- package/dist/preview-engine/chunk-SZ7YRPKO.mjs +3 -0
- package/dist/preview-engine/chunk-TMRLZV5X.mjs +1 -0
- package/dist/preview-engine/chunk-U446SQP3.mjs +292 -0
- package/dist/preview-engine/chunk-UDNCEHUI.mjs +141 -0
- package/dist/preview-engine/chunk-V3H7WWOT.mjs +271 -0
- package/dist/preview-engine/chunk-V7ZVVUQU.mjs +108 -0
- package/dist/preview-engine/chunk-VJGK7MLJ.mjs +3 -0
- package/dist/preview-engine/chunk-VSSB73UU.mjs +58 -0
- package/dist/preview-engine/chunk-VXUJWPIK.mjs +1 -0
- package/dist/preview-engine/chunk-XD4GKD6H.mjs +5 -0
- package/dist/preview-engine/chunk-XKO4RYKN.mjs +3 -0
- package/dist/preview-engine/chunk-XOEEGC4Z.mjs +1 -0
- package/dist/preview-engine/chunk-YAQFFQPG.mjs +1 -0
- package/dist/preview-engine/chunk-YKMBRUAE.mjs +1 -0
- package/dist/preview-engine/chunk-YSTLMWCG.mjs +1 -0
- package/dist/preview-engine/chunk-Z4ERCLNF.mjs +1 -0
- package/dist/preview-engine/chunk-ZEYUXJIV.mjs +1 -0
- package/dist/preview-engine/chunk-ZX6APG6E.mjs +117 -0
- package/dist/preview-engine/effects.mjs +1 -0
- package/dist/preview-engine/esbuild-GWV7CM7D.mjs +1 -0
- package/dist/preview-engine/fonts.mjs +1 -0
- package/dist/preview-engine/framefields.mjs +1959 -0
- package/dist/preview-engine/onnxruntime-node-56GSZEH3.mjs +1 -0
- package/dist/preview-engine/player.mjs +155 -0
- package/dist/preview-engine/renderers-2AUSIYZN.mjs +1 -0
- package/dist/preview-engine/renderers-2QN6KZJP.mjs +1 -0
- package/dist/preview-engine/renderers-32SKW7ML.mjs +1 -0
- package/dist/preview-engine/renderers-5QYK6766.mjs +1 -0
- package/dist/preview-engine/renderers-6BJA6MSU.mjs +251 -0
- package/dist/preview-engine/renderers-6QAF3LQ2.mjs +1 -0
- package/dist/preview-engine/renderers-7AO5746S.mjs +296 -0
- package/dist/preview-engine/renderers-AFYKNM6N.mjs +1 -0
- package/dist/preview-engine/renderers-AGMH5CRH.mjs +1 -0
- package/dist/preview-engine/renderers-AHSGP6LY.mjs +126 -0
- package/dist/preview-engine/renderers-ASTBICLA.mjs +1 -0
- package/dist/preview-engine/renderers-BHVPLYNN.mjs +1 -0
- package/dist/preview-engine/renderers-D7PVQFVU.mjs +1 -0
- package/dist/preview-engine/renderers-DB4ABTNA.mjs +1 -0
- package/dist/preview-engine/renderers-F2NFJI5L.mjs +1 -0
- package/dist/preview-engine/renderers-FI7YHNLY.mjs +1 -0
- package/dist/preview-engine/renderers-GBHULMPH.mjs +1 -0
- package/dist/preview-engine/renderers-GUKQUMGG.mjs +55 -0
- package/dist/preview-engine/renderers-HGT7QDY3.mjs +1 -0
- package/dist/preview-engine/renderers-HOYLA7ZK.mjs +1 -0
- package/dist/preview-engine/renderers-KKI2D3MZ.mjs +1 -0
- package/dist/preview-engine/renderers-KRAJNV4E.mjs +1 -0
- package/dist/preview-engine/renderers-KUGZKSVE.mjs +1 -0
- package/dist/preview-engine/renderers-L2EQQIOC.mjs +1 -0
- package/dist/preview-engine/renderers-LK3NRMGR.mjs +1 -0
- package/dist/preview-engine/renderers-LX654SZ3.mjs +1 -0
- package/dist/preview-engine/renderers-MCFQFYEL.mjs +1 -0
- package/dist/preview-engine/renderers-O6HOYIPS.mjs +1 -0
- package/dist/preview-engine/renderers-OEVXCGE2.mjs +1 -0
- package/dist/preview-engine/renderers-QVD6C4CS.mjs +1 -0
- package/dist/preview-engine/renderers-R3XEYD5V.mjs +248 -0
- package/dist/preview-engine/renderers-RBFWJWVM.mjs +1 -0
- package/dist/preview-engine/renderers-RX3VLVLO.mjs +1 -0
- package/dist/preview-engine/renderers-SM6JP64K.mjs +1 -0
- package/dist/preview-engine/renderers-TKMAATVS.mjs +1 -0
- package/dist/preview-engine/renderers-UGZUPONY.mjs +1 -0
- package/dist/preview-engine/renderers-UTFXZE3G.mjs +1 -0
- package/dist/preview-engine/renderers-UWPH7HBH.mjs +1 -0
- package/dist/preview-engine/renderers-UZGECFVO.mjs +1 -0
- package/dist/preview-engine/renderers-VGU3LNLT.mjs +1 -0
- package/dist/preview-engine/renderers-W3VVM5HB.mjs +1 -0
- package/dist/preview-engine/renderers-WJUTT5BB.mjs +1 -0
- package/dist/preview-engine/renderers-XA2M4YXK.mjs +1 -0
- package/dist/preview-engine/renderers-XIHRFEFQ.mjs +1 -0
- package/dist/preview-engine/renderers-XJTA5MFG.mjs +1 -0
- package/dist/preview-engine/renderers-XLTY5APF.mjs +1 -0
- package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +1 -0
- package/dist/preview-engine/renderers-YKUQUCTO.mjs +124 -0
- package/dist/preview-engine/renderers-YVN3EIOP.mjs +1 -0
- package/dist/preview-engine/renderers-YWRP23SZ.mjs +125 -0
- package/dist/preview-engine/renderers-ZPWOUWZJ.mjs +120 -0
- package/dist/preview-engine/resvg-js-VMU4A77S.mjs +1 -0
- package/dist/preview-engine/server-utils-2FAIV45N.mjs +1 -0
- package/dist/preview-engine/sharp-V6ZTBNDW.mjs +1 -0
- package/dist/preview-engine/shims/fs-promises.mjs +1 -0
- package/dist/preview-engine/shims/fs.mjs +1 -0
- package/dist/preview-engine/shims/module.mjs +1 -0
- package/dist/preview-engine/shims/os.mjs +1 -0
- package/dist/preview-engine/shims/path.mjs +1 -0
- package/dist/preview-engine/shims/url.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -0
- package/dist/preview-engine/webgpu-NSSANM4F.mjs +1 -0
- package/dist/preview-uQM210iy.mjs +2149 -0
- package/dist/preview-uQM210iy.mjs.map +1 -0
- package/dist/program-Dl510wmI.mjs +5183 -0
- package/dist/program-Dl510wmI.mjs.map +1 -0
- package/dist/renderer/index.d.mts +3 -0
- package/dist/renderer/index.mjs +6 -0
- package/dist/renderer-3BNskNuJ.mjs +3 -0
- package/dist/renderer-7DOcIxFG.mjs +288 -0
- package/dist/renderer-7DOcIxFG.mjs.map +1 -0
- package/dist/renderer-9dHlMQGX.mjs +3 -0
- package/dist/renderer-B1CvhW4p.mjs +677 -0
- package/dist/renderer-B1CvhW4p.mjs.map +1 -0
- package/dist/renderer-B2XzjK0z.mjs +3 -0
- package/dist/renderer-B80s47yo.mjs +166 -0
- package/dist/renderer-B80s47yo.mjs.map +1 -0
- package/dist/renderer-B9-QSJcG.mjs +479 -0
- package/dist/renderer-B9-QSJcG.mjs.map +1 -0
- package/dist/renderer-BAQmR0Zo.mjs +3 -0
- package/dist/renderer-BDLnExoP.mjs +127 -0
- package/dist/renderer-BDLnExoP.mjs.map +1 -0
- package/dist/renderer-BGXU6vcW.mjs +270 -0
- package/dist/renderer-BGXU6vcW.mjs.map +1 -0
- package/dist/renderer-BGvORwkQ.mjs +3 -0
- package/dist/renderer-BLikd6BK.mjs +3 -0
- package/dist/renderer-BMovYRoR.mjs +3 -0
- package/dist/renderer-BQHbp-Sp.mjs +243 -0
- package/dist/renderer-BQHbp-Sp.mjs.map +1 -0
- package/dist/renderer-BREIjsUU.mjs +252 -0
- package/dist/renderer-BREIjsUU.mjs.map +1 -0
- package/dist/renderer-BSbTJBWc.mjs +3 -0
- package/dist/renderer-BTu2EVhF.mjs +3 -0
- package/dist/renderer-BU1rwNRT.mjs +3 -0
- package/dist/renderer-BXMmISWG.mjs +499 -0
- package/dist/renderer-BXMmISWG.mjs.map +1 -0
- package/dist/renderer-BZJm3m4f.mjs +3 -0
- package/dist/renderer-B_NuVaIP.mjs +744 -0
- package/dist/renderer-B_NuVaIP.mjs.map +1 -0
- package/dist/renderer-BfJSUjPN.mjs +3 -0
- package/dist/renderer-BqyAgNt3.mjs +3 -0
- package/dist/renderer-BryTM2g7.mjs +3 -0
- package/dist/renderer-BsgIcBKH.mjs +391 -0
- package/dist/renderer-BsgIcBKH.mjs.map +1 -0
- package/dist/renderer-ByDhfrPE.mjs +422 -0
- package/dist/renderer-ByDhfrPE.mjs.map +1 -0
- package/dist/renderer-C-H680_l.mjs +3 -0
- package/dist/renderer-C17wL9QX.mjs +181 -0
- package/dist/renderer-C17wL9QX.mjs.map +1 -0
- package/dist/renderer-C2n-EHxg.mjs +1 -0
- package/dist/renderer-CB5aWAaf.mjs +343 -0
- package/dist/renderer-CB5aWAaf.mjs.map +1 -0
- package/dist/renderer-CB7lH5K8.mjs +3 -0
- package/dist/renderer-CDLrNgfo.mjs +3 -0
- package/dist/renderer-CDOUAN7X.mjs +454 -0
- package/dist/renderer-CDOUAN7X.mjs.map +1 -0
- package/dist/renderer-CH8sdfYX.mjs +387 -0
- package/dist/renderer-CH8sdfYX.mjs.map +1 -0
- package/dist/renderer-CIvaRnP_.mjs +261 -0
- package/dist/renderer-CIvaRnP_.mjs.map +1 -0
- package/dist/renderer-CMzEjdzi.mjs +369 -0
- package/dist/renderer-CMzEjdzi.mjs.map +1 -0
- package/dist/renderer-COkcU3db.mjs +3302 -0
- package/dist/renderer-COkcU3db.mjs.map +1 -0
- package/dist/renderer-CQCoggIa.mjs +3 -0
- package/dist/renderer-CQdVj2JS.mjs +3 -0
- package/dist/renderer-CQiTodg9.mjs +337 -0
- package/dist/renderer-CQiTodg9.mjs.map +1 -0
- package/dist/renderer-CV2m6k1V.mjs +3 -0
- package/dist/renderer-CYY-poLe.mjs +3 -0
- package/dist/renderer-CZgB5st8.mjs +3 -0
- package/dist/renderer-C_Ki91kc.mjs +3 -0
- package/dist/renderer-CclIvsLO.mjs +3 -0
- package/dist/renderer-Cj-whdVr.mjs +655 -0
- package/dist/renderer-Cj-whdVr.mjs.map +1 -0
- package/dist/renderer-CkykdR_D.mjs +3 -0
- package/dist/renderer-Cl1oUXMi.mjs +1143 -0
- package/dist/renderer-Cl1oUXMi.mjs.map +1 -0
- package/dist/renderer-CmApuKjS.mjs +3 -0
- package/dist/renderer-CpkiHRhh.mjs +269 -0
- package/dist/renderer-CpkiHRhh.mjs.map +1 -0
- package/dist/renderer-CszOjcRW.mjs +3 -0
- package/dist/renderer-CtVkU_GA.mjs +44 -0
- package/dist/renderer-CtVkU_GA.mjs.map +1 -0
- package/dist/renderer-Cu074POw.mjs +3 -0
- package/dist/renderer-CwQhzcUn.mjs +644 -0
- package/dist/renderer-CwQhzcUn.mjs.map +1 -0
- package/dist/renderer-CzPWB0Ss.mjs +273 -0
- package/dist/renderer-CzPWB0Ss.mjs.map +1 -0
- package/dist/renderer-D4qLmox-.mjs +3 -0
- package/dist/renderer-D6bWQtr-.mjs +3 -0
- package/dist/renderer-D6cJ6MSq.mjs +3 -0
- package/dist/renderer-D7EX8IjU.mjs +240 -0
- package/dist/renderer-D7EX8IjU.mjs.map +1 -0
- package/dist/renderer-DDp7_TUi.d.mts +10 -0
- package/dist/renderer-DDp7_TUi.d.mts.map +1 -0
- package/dist/renderer-DFKsLrUs.mjs +256 -0
- package/dist/renderer-DFKsLrUs.mjs.map +1 -0
- package/dist/renderer-DPSsf8-t.mjs +3 -0
- package/dist/renderer-DQLGnEFc.mjs +3 -0
- package/dist/renderer-DY2SVYUW.mjs +3 -0
- package/dist/renderer-DZGtBUCx.mjs +792 -0
- package/dist/renderer-DZGtBUCx.mjs.map +1 -0
- package/dist/renderer-DabG62XS.mjs +406 -0
- package/dist/renderer-DabG62XS.mjs.map +1 -0
- package/dist/renderer-DbaQLI4z.mjs +771 -0
- package/dist/renderer-DbaQLI4z.mjs.map +1 -0
- package/dist/renderer-DjI45OYC.mjs +71 -0
- package/dist/renderer-DjI45OYC.mjs.map +1 -0
- package/dist/renderer-Dm08-hAU.mjs +323 -0
- package/dist/renderer-Dm08-hAU.mjs.map +1 -0
- package/dist/renderer-DoAY5JbB.mjs +4 -0
- package/dist/renderer-Dp_FfvF-.mjs +401 -0
- package/dist/renderer-Dp_FfvF-.mjs.map +1 -0
- package/dist/renderer-Dt6fzgX5.mjs +756 -0
- package/dist/renderer-Dt6fzgX5.mjs.map +1 -0
- package/dist/renderer-DuplLRbp.mjs +3 -0
- package/dist/renderer-DvfUbZ31.mjs +3 -0
- package/dist/renderer-DxjVQV6f.mjs +311 -0
- package/dist/renderer-DxjVQV6f.mjs.map +1 -0
- package/dist/renderer-Fco4EmAu.mjs +23868 -0
- package/dist/renderer-Fco4EmAu.mjs.map +1 -0
- package/dist/renderer-HFfcJlmR.mjs +981 -0
- package/dist/renderer-HFfcJlmR.mjs.map +1 -0
- package/dist/renderer-I-Sw3JBB.mjs +145 -0
- package/dist/renderer-I-Sw3JBB.mjs.map +1 -0
- package/dist/renderer-OWQmmg4Z.mjs +697 -0
- package/dist/renderer-OWQmmg4Z.mjs.map +1 -0
- package/dist/renderer-Q_uUQipO.mjs +3 -0
- package/dist/renderer-Ryo2CEFD.mjs +586 -0
- package/dist/renderer-Ryo2CEFD.mjs.map +1 -0
- package/dist/renderer-Tp6OXWNZ.mjs +257 -0
- package/dist/renderer-Tp6OXWNZ.mjs.map +1 -0
- package/dist/renderer-UQFCgeNx.mjs +3 -0
- package/dist/renderer-WkVrkCVA.mjs +83 -0
- package/dist/renderer-WkVrkCVA.mjs.map +1 -0
- package/dist/renderer-XcmYTd6P.mjs +3818 -0
- package/dist/renderer-XcmYTd6P.mjs.map +1 -0
- package/dist/renderer-_uvdg48N.mjs +333 -0
- package/dist/renderer-_uvdg48N.mjs.map +1 -0
- package/dist/renderer-bZU_ndxf.mjs +8 -0
- package/dist/renderer-bZU_ndxf.mjs.map +1 -0
- package/dist/renderer-eMsnzJg9.mjs +3 -0
- package/dist/renderer-ho_jXJ0H.mjs +254 -0
- package/dist/renderer-ho_jXJ0H.mjs.map +1 -0
- package/dist/renderer-k2JL79kM.mjs +306 -0
- package/dist/renderer-k2JL79kM.mjs.map +1 -0
- package/dist/renderer-pHiz78e0.mjs +3 -0
- package/dist/renderer-pxXf9dvk.mjs +394 -0
- package/dist/renderer-pxXf9dvk.mjs.map +1 -0
- package/dist/renderer-vCFTm0oe.mjs +226 -0
- package/dist/renderer-vCFTm0oe.mjs.map +1 -0
- package/dist/renderer-vvpdx1vk.mjs +379 -0
- package/dist/renderer-vvpdx1vk.mjs.map +1 -0
- package/dist/renderer-x2s9LmVL.mjs +1121 -0
- package/dist/renderer-x2s9LmVL.mjs.map +1 -0
- package/dist/renderers-BWg16W-V-BXG_cjhM.mjs +49 -0
- package/dist/renderers-BWg16W-V-BXG_cjhM.mjs.map +1 -0
- package/dist/signals/index.d.mts +7 -0
- package/dist/signals/index.mjs +10 -0
- package/dist/signals-BwbdO3AN.mjs +224 -0
- package/dist/signals-BwbdO3AN.mjs.map +1 -0
- package/dist/signin-CZj4Oc5s.mjs +865 -0
- package/dist/signin-CZj4Oc5s.mjs.map +1 -0
- package/dist/sso-oidc-C0_31ThY.mjs +1051 -0
- package/dist/sso-oidc-C0_31ThY.mjs.map +1 -0
- package/dist/sts-DD4ggEXC.mjs +6 -0
- package/dist/sts-nXw8RDJI.mjs +1395 -0
- package/dist/sts-nXw8RDJI.mjs.map +1 -0
- package/package.json +173 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import{a as D}from"./chunk-N4PWLBZ7.mjs";import{a as I}from"./chunk-YSTLMWCG.mjs";import{e as d}from"./chunk-BVF64D6H.mjs";d();d();var M=["fadeInDuration","fadeOutDuration"],A=()=>`
|
|
2
|
+
struct Uniforms {
|
|
3
|
+
sampleRate : f32,
|
|
4
|
+
fadeInDuration : f32,
|
|
5
|
+
fadeOutDuration : f32,
|
|
6
|
+
fadeInCurve : f32,
|
|
7
|
+
fadeOutCurve : f32,
|
|
8
|
+
clipDuration : f32,
|
|
9
|
+
hasFadeInDurationSig : f32,
|
|
10
|
+
hasFadeOutDurationSig : f32,
|
|
11
|
+
baseTime : f32,
|
|
12
|
+
frame : f32,
|
|
13
|
+
numSamples : f32,
|
|
14
|
+
numChannels : f32,
|
|
15
|
+
pad1 : f32,
|
|
16
|
+
pad2 : f32,
|
|
17
|
+
pad3 : f32,
|
|
18
|
+
pad4 : f32,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
22
|
+
@group(0) @binding(1) var<storage, read> inputChannels : array<f32>;
|
|
23
|
+
@group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;
|
|
24
|
+
@group(0) @binding(3) var<storage, read_write> state : array<f32>; // state[0] = samplesProcessed
|
|
25
|
+
@group(0) @binding(4) var<storage, read> fadeInDurationSignal : array<f32>;
|
|
26
|
+
@group(0) @binding(5) var<storage, read> fadeOutDurationSignal : array<f32>;
|
|
27
|
+
|
|
28
|
+
fn applyCurve(p: f32, curve: f32) -> f32 {
|
|
29
|
+
let clampedP = max(0.0f, min(p, 1.0f));
|
|
30
|
+
if (curve == 1.0f) { // exponential
|
|
31
|
+
return clampedP * clampedP;
|
|
32
|
+
}
|
|
33
|
+
if (curve == 2.0f) { // scurve
|
|
34
|
+
return clampedP * clampedP * (3.0f - 2.0f * clampedP);
|
|
35
|
+
}
|
|
36
|
+
return clampedP; // linear
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
fn tanh(x: f32) -> f32 {
|
|
40
|
+
let exp2x = exp(2.0f * x);
|
|
41
|
+
return (exp2x - 1.0f) / (exp2x + 1.0f);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
fn is_nan_or_inf(v: f32) -> bool {
|
|
45
|
+
return (v != v) || (abs(v) > 3.402823466e+38f);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@compute @workgroup_size(1)
|
|
49
|
+
fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
50
|
+
if (gid.x != 0u) { return; }
|
|
51
|
+
|
|
52
|
+
let numSamples = u32(u.numSamples);
|
|
53
|
+
let numChannels = u32(u.numChannels);
|
|
54
|
+
|
|
55
|
+
for (var index = 0u; index < numSamples; index = index + 1u) {
|
|
56
|
+
let t = u.baseTime + f32(index) / u.sampleRate;
|
|
57
|
+
var gain = 1.0f;
|
|
58
|
+
|
|
59
|
+
var effFadeIn = u.fadeInDuration;
|
|
60
|
+
if (u.hasFadeInDurationSig > 0.5f) {
|
|
61
|
+
effFadeIn = fadeInDurationSignal[index];
|
|
62
|
+
}
|
|
63
|
+
effFadeIn = clamp(effFadeIn, 0.0f, 60.0f);
|
|
64
|
+
|
|
65
|
+
var effFadeOut = u.fadeOutDuration;
|
|
66
|
+
if (u.hasFadeOutDurationSig > 0.5f) {
|
|
67
|
+
effFadeOut = fadeOutDurationSignal[index];
|
|
68
|
+
}
|
|
69
|
+
effFadeOut = clamp(effFadeOut, 0.0f, 60.0f);
|
|
70
|
+
|
|
71
|
+
if (effFadeIn > 0.0f && t < effFadeIn) {
|
|
72
|
+
let p = t / effFadeIn;
|
|
73
|
+
gain = gain * applyCurve(p, u.fadeInCurve);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (effFadeOut > 0.0f && t > u.clipDuration - effFadeOut) {
|
|
77
|
+
let p = (u.clipDuration - t) / effFadeOut;
|
|
78
|
+
gain = gain * applyCurve(p, u.fadeOutCurve);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
gain = clamp(gain, 0.0f, 1.0f);
|
|
82
|
+
|
|
83
|
+
for (var c = 0u; c < numChannels; c = c + 1u) {
|
|
84
|
+
let sampleIndex = c * numSamples + index;
|
|
85
|
+
var inVal = inputChannels[sampleIndex];
|
|
86
|
+
if (is_nan_or_inf(inVal)) {
|
|
87
|
+
inVal = 0.0f;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
var outVal = inVal * gain;
|
|
91
|
+
if (is_nan_or_inf(outVal)) {
|
|
92
|
+
outVal = 0.0f;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (outVal > 1.0f) {
|
|
96
|
+
outVal = 1.0f;
|
|
97
|
+
} else if (outVal < -1.0f) {
|
|
98
|
+
outVal = -1.0f;
|
|
99
|
+
} else if (outVal > 0.9f) {
|
|
100
|
+
outVal = 0.9f + 0.1f * tanh((outVal - 0.9f) / 0.1f);
|
|
101
|
+
} else if (outVal < -0.9f) {
|
|
102
|
+
outVal = -0.9f + 0.1f * tanh((outVal + 0.9f) / 0.1f);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
outputChannels[sampleIndex] = outVal;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Dummy reference to keep state binding active
|
|
110
|
+
state[0] = state[0];
|
|
111
|
+
}
|
|
112
|
+
`,O=t=>t==="exponential"?1:t==="scurve"?2:0,h=async(t,m,s,a)=>{if(!a?.device)throw new Error("GPUDevice is required for WebGPU Audio Fade.");let e=s.operation||{},C=e.inputs||{},c=t.length;if(c===0)return;let g=t[0].length;if(g===0)return;let F=Math.max(0,typeof e.fadeInDuration=="number"?e.fadeInDuration:0),b=Math.max(0,typeof e.fadeOutDuration=="number"?e.fadeOutDuration:0),x=typeof e.fadeInCurve=="string"?e.fadeInCurve:"linear",y=typeof e.fadeOutCurve=="string"?e.fadeOutCurve:"linear",l=(s.metadata?.durationMs??0)/1e3,u=F,i=b;if(u+i>l){let n=l/2;u=Math.min(u,n),i=Math.min(i,n)}let v=n=>{let f=e[n];if(typeof f!="string"||!f)return!1;let r=C[f];return!!(r?.connectionValid&&r.outputItem&&(r.outputItem.type==="Signal"||r.outputItem.type==="Number"))},P=v("fadeInDurationHandleId")?1:0,V=v("fadeOutDurationHandleId")?1:0,S=e.id||"audio-fade",o=a.frame??0,p=a.fps??24;await D.process(a.device,S,t,m,s,o,p,A,n=>{let f=typeof e.startFrame=="number"?e.startFrame:o,r=a.elapsedMs!==void 0?a.elapsedMs/1e3+(n-o/p):Math.max(0,n-f/p);return[m,u,i,O(x),O(y),l,P,V,r,o,g,c,0,0,0,0]},16,1,a?.renderId,!0,a?.elapsedMs,a?.durationMs,void 0,void 0,M)};var k=I({audioProcessor:h});export{k as a};
|
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
import{a as g,b as ae,c as le}from"./chunk-IYVN2QEL.mjs";import{a}from"./chunk-NQZKBFC6.mjs";import{a as ee}from"./chunk-YSTLMWCG.mjs";import{e as O}from"./chunk-BVF64D6H.mjs";O();O();O();var ia=a.object({enabled:a.boolean().default(!1),color:g.default("#000000"),opacity:a.number().min(0).max(1).default(.75),angle:a.number().min(0).max(360).default(120),distance:a.number().min(0).max(500).default(10),spread:a.number().min(0).max(100).default(0),size:a.number().min(0).max(250).default(10),blendMode:a.string().default("multiply")}),na=a.object({enabled:a.boolean().default(!1),color:g.default("#000000"),opacity:a.number().min(0).max(1).default(.75),angle:a.number().min(0).max(360).default(120),distance:a.number().min(0).max(500).default(5),choke:a.number().min(0).max(100).default(0),size:a.number().min(0).max(250).default(5),blendMode:a.string().default("multiply")}),sa=a.object({enabled:a.boolean().default(!1),size:a.number().min(0).max(100).default(2),position:a.enum(["inside","center","outside"]).default("outside"),color:g.default("#ffffff"),opacity:a.number().min(0).max(1).default(1),blendMode:a.string().default("normal")}),oe=a.object({enabled:a.boolean().default(!1),color:g.default("#ffffff"),opacity:a.number().min(0).max(1).default(.75),size:a.number().min(0).max(250).default(15),spread:a.number().min(0).max(100).default(0),blendMode:a.string().default("screen")}),da=a.object({enabled:a.boolean().default(!1),style:a.enum(["InnerBevel","OuterBevel","Emboss","PillowEmboss"]).default("InnerBevel"),technique:a.enum(["Smooth","ChiselHard","ChiselSoft"]).default("Smooth"),depth:a.number().min(1).max(1e3).default(100),direction:a.enum(["Up","Down"]).default("Up"),size:a.number().min(0).max(250).default(5),soften:a.number().min(0).max(50).default(0),angle:a.number().min(0).max(360).default(120),altitude:a.number().min(0).max(90).default(30),highlightColor:g.default("#ffffff"),highlightOpacity:a.number().min(0).max(1).default(.75),shadowColor:g.default("#000000"),shadowOpacity:a.number().min(0).max(1).default(.75)}),ca=a.object({enabled:a.boolean().default(!1),color:g.default("#ff0000"),opacity:a.number().min(0).max(1).default(1),blendMode:a.string().default("normal")}),ua={enabled:!1,color:"#000000",opacity:.75,angle:120,distance:10,spread:0,size:10,blendMode:"multiply"},pa={enabled:!1,color:"#000000",opacity:.75,angle:120,distance:5,choke:0,size:5,blendMode:"multiply"},te={enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},fa={enabled:!1,size:2,position:"outside",color:"#ffffff",opacity:1,blendMode:"normal"},ma={enabled:!1,style:"InnerBevel",technique:"Smooth",depth:100,direction:"Up",size:5,soften:0,angle:120,altitude:30,highlightColor:"#ffffff",highlightOpacity:.75,shadowColor:"#000000",shadowOpacity:.75},ba={enabled:!1,color:"#ff0000",opacity:1,blendMode:"normal"},Oa=a.object({dropShadow:ia.default(ua),innerShadow:na.default(pa),outerGlow:oe.default(te),innerGlow:oe.default(te),stroke:sa.default(fa),bevelEmboss:da.default(ma),colorOverlay:ca.default(ba),dropShadowAngleHandleId:a.string().nullable().optional(),dropShadowDistanceHandleId:a.string().nullable().optional(),dropShadowSpreadHandleId:a.string().nullable().optional(),dropShadowSizeHandleId:a.string().nullable().optional(),dropShadowOpacityHandleId:a.string().nullable().optional(),innerShadowAngleHandleId:a.string().nullable().optional(),innerShadowDistanceHandleId:a.string().nullable().optional(),innerShadowChokeHandleId:a.string().nullable().optional(),innerShadowSizeHandleId:a.string().nullable().optional(),innerShadowOpacityHandleId:a.string().nullable().optional(),outerGlowSizeHandleId:a.string().nullable().optional(),outerGlowSpreadHandleId:a.string().nullable().optional(),outerGlowOpacityHandleId:a.string().nullable().optional(),innerGlowSizeHandleId:a.string().nullable().optional(),innerGlowSpreadHandleId:a.string().nullable().optional(),innerGlowOpacityHandleId:a.string().nullable().optional(),strokeSizeHandleId:a.string().nullable().optional(),strokeOpacityHandleId:a.string().nullable().optional(),bevelEmbossDepthHandleId:a.string().nullable().optional(),bevelEmbossSizeHandleId:a.string().nullable().optional(),bevelEmbossSoftenHandleId:a.string().nullable().optional(),bevelEmbossAngleHandleId:a.string().nullable().optional(),bevelEmbossAltitudeHandleId:a.string().nullable().optional(),bevelEmbossHighlightOpacityHandleId:a.string().nullable().optional(),bevelEmbossShadowOpacityHandleId:a.string().nullable().optional(),colorOverlayOpacityHandleId:a.string().nullable().optional()});function ie(r){let o=0,i=0;if(r.dropShadow?.enabled){let s=(r.dropShadow.angle??120)*Math.PI/180,u=r.dropShadow.distance??0,c=Math.ceil(Math.abs(Math.cos(s))*u),p=Math.ceil(Math.abs(Math.sin(s))*u);o=Math.max(o,c),i=Math.max(i,p)}if(r.stroke?.enabled&&r.stroke.position!=="inside"){let s=r.stroke.position==="outside"?Math.ceil(r.stroke.size??2):Math.ceil((r.stroke.size??2)*.5);o=Math.max(o,s),i=Math.max(i,s)}return{padX:o,padY:i}}var Aa=a.union([ae,le]);function h(r){if(!r)return[1,1,1,1];let o=r.trim().replace(/^#/,"");if(o.length===3)o=o.split("").map(p=>p+p).join("")+"ff";else if(o.length===6)o=o+"ff";else if(o.length!==8)return[1,1,1,1];let i=parseInt(o.slice(0,2),16)/255,s=parseInt(o.slice(2,4),16)/255,u=parseInt(o.slice(4,6),16)/255,c=parseInt(o.slice(6,8),16)/255;return[Number.isFinite(i)?i:1,Number.isFinite(s)?s:1,Number.isFinite(u)?u:1,Number.isFinite(c)?c:1]}var A={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25},ga={InnerBevel:0,OuterBevel:1,Emboss:2,PillowEmboss:3},ha={Smooth:0,ChiselHard:1,ChiselSoft:2},ya={outside:0,center:1,inside:2},Sa=`
|
|
2
|
+
struct LayerStyleUniforms {
|
|
3
|
+
// Drop Shadow (vec4 x 3)
|
|
4
|
+
dropShadowColor : vec4<f32>,
|
|
5
|
+
dropShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
|
|
6
|
+
dropShadowParams2 : vec4<f32>, // x: spread, y: size, z: blendMode, w: pad
|
|
7
|
+
|
|
8
|
+
// Inner Shadow (vec4 x 3)
|
|
9
|
+
innerShadowColor : vec4<f32>,
|
|
10
|
+
innerShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
|
|
11
|
+
innerShadowParams2 : vec4<f32>, // x: choke, y: size, z: blendMode, w: pad
|
|
12
|
+
|
|
13
|
+
// Outer Glow (vec4 x 3)
|
|
14
|
+
outerGlowColor : vec4<f32>,
|
|
15
|
+
outerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
|
|
16
|
+
outerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
|
|
17
|
+
|
|
18
|
+
// Inner Glow (vec4 x 3)
|
|
19
|
+
innerGlowColor : vec4<f32>,
|
|
20
|
+
innerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
|
|
21
|
+
innerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
|
|
22
|
+
|
|
23
|
+
// Stroke (vec4 x 3)
|
|
24
|
+
strokeColor : vec4<f32>,
|
|
25
|
+
strokeParams : vec4<f32>, // x: enabled, y: size, z: position(0:out,1:center,2:in), w: opacity
|
|
26
|
+
strokeParams2 : vec4<f32>, // x: blendMode, yzw: pad
|
|
27
|
+
|
|
28
|
+
// Bevel & Emboss (vec4 x 5)
|
|
29
|
+
bevelHighlightColor : vec4<f32>,
|
|
30
|
+
bevelShadowColor : vec4<f32>,
|
|
31
|
+
bevelParams1 : vec4<f32>, // x: enabled, y: style, z: technique, w: depth
|
|
32
|
+
bevelParams2 : vec4<f32>, // x: direction(1:up, -1:down), y: size, z: soften, w: angle(rad)
|
|
33
|
+
bevelParams3 : vec4<f32>, // x: altitude(rad), y: hlOpacity, z: shOpacity, w: pad
|
|
34
|
+
|
|
35
|
+
// Color Overlay (vec4 x 2)
|
|
36
|
+
colorOverlayColor : vec4<f32>,
|
|
37
|
+
colorOverlayParams : vec4<f32>, // x: enabled, y: opacity, z: blendMode, w: pad
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
@group(0) @binding(0) var<uniform> u : LayerStyleUniforms;
|
|
41
|
+
@group(1) @binding(0) var tex : texture_2d<f32>;
|
|
42
|
+
@group(1) @binding(1) var samp : sampler;
|
|
43
|
+
|
|
44
|
+
struct VSOut {
|
|
45
|
+
@builtin(position) pos : vec4<f32>,
|
|
46
|
+
@location(0) uv : vec2<f32>,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
|
|
50
|
+
var pos = array<vec2<f32>, 4>(
|
|
51
|
+
vec2<f32>(-1.0, 1.0),
|
|
52
|
+
vec2<f32>(1.0, 1.0),
|
|
53
|
+
vec2<f32>(-1.0, -1.0),
|
|
54
|
+
vec2<f32>(1.0, -1.0)
|
|
55
|
+
);
|
|
56
|
+
var uv = array<vec2<f32>, 4>(
|
|
57
|
+
vec2<f32>(0.0, 0.0),
|
|
58
|
+
vec2<f32>(1.0, 0.0),
|
|
59
|
+
vec2<f32>(0.0, 1.0),
|
|
60
|
+
vec2<f32>(1.0, 1.0)
|
|
61
|
+
);
|
|
62
|
+
return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fn sampleAlpha(uv: vec2<f32>) -> f32 {
|
|
66
|
+
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
|
|
67
|
+
return 0.0;
|
|
68
|
+
}
|
|
69
|
+
return textureSampleLevel(tex, samp, uv, 0.0).a;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
fn lum(c: vec3<f32>) -> f32 {
|
|
73
|
+
return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
fn clip_color(c: vec3<f32>) -> vec3<f32> {
|
|
77
|
+
let l = lum(c);
|
|
78
|
+
let n = min(min(c.r, c.g), c.b);
|
|
79
|
+
let x = max(max(c.r, c.g), c.b);
|
|
80
|
+
var res = c;
|
|
81
|
+
if (n < 0.0) {
|
|
82
|
+
res = l + (((res - l) * l) / max(l - n, 1e-5));
|
|
83
|
+
}
|
|
84
|
+
if (x > 1.0) {
|
|
85
|
+
res = l + (((res - l) * (1.0 - l)) / max(x - l, 1e-5));
|
|
86
|
+
}
|
|
87
|
+
return res;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
|
|
91
|
+
let diff = l - lum(c);
|
|
92
|
+
return clip_color(c + vec3<f32>(diff));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
fn sat(c: vec3<f32>) -> f32 {
|
|
96
|
+
return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
|
|
100
|
+
let c_min = min(min(c.r, c.g), c.b);
|
|
101
|
+
let c_max = max(max(c.r, c.g), c.b);
|
|
102
|
+
if (c_max <= c_min) {
|
|
103
|
+
return vec3<f32>(0.0);
|
|
104
|
+
}
|
|
105
|
+
return (c - vec3<f32>(c_min)) * s / max(c_max - c_min, 1e-5);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
fn blendRgb(d_rgb: vec3<f32>, s_rgb: vec3<f32>, mode: u32) -> vec3<f32> {
|
|
109
|
+
switch (mode) {
|
|
110
|
+
case 1u: { // multiply
|
|
111
|
+
return d_rgb * s_rgb;
|
|
112
|
+
}
|
|
113
|
+
case 2u: { // screen
|
|
114
|
+
return d_rgb + s_rgb - d_rgb * s_rgb;
|
|
115
|
+
}
|
|
116
|
+
case 3u: { // overlay
|
|
117
|
+
return select(
|
|
118
|
+
1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
|
|
119
|
+
2.0 * d_rgb * s_rgb,
|
|
120
|
+
d_rgb < vec3<f32>(0.5)
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
case 4u: { // darken
|
|
124
|
+
return min(d_rgb, s_rgb);
|
|
125
|
+
}
|
|
126
|
+
case 5u: { // lighten
|
|
127
|
+
return max(d_rgb, s_rgb);
|
|
128
|
+
}
|
|
129
|
+
case 6u: { // color-dodge
|
|
130
|
+
return select(min(d_rgb / max(1.0 - s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb >= vec3<f32>(0.999));
|
|
131
|
+
}
|
|
132
|
+
case 7u: { // color-burn
|
|
133
|
+
return select(1.0 - min((1.0 - d_rgb) / max(s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb <= vec3<f32>(0.001));
|
|
134
|
+
}
|
|
135
|
+
case 8u: { // hard-light
|
|
136
|
+
return select(
|
|
137
|
+
1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
|
|
138
|
+
2.0 * d_rgb * s_rgb,
|
|
139
|
+
s_rgb < vec3<f32>(0.5)
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
case 9u: { // soft-light
|
|
143
|
+
return select(
|
|
144
|
+
d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
|
|
145
|
+
d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
|
|
146
|
+
s_rgb <= vec3<f32>(0.5)
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
case 10u: { // difference
|
|
150
|
+
return abs(d_rgb - s_rgb);
|
|
151
|
+
}
|
|
152
|
+
case 11u: { // exclusion
|
|
153
|
+
return d_rgb + s_rgb - 2.0 * d_rgb * s_rgb;
|
|
154
|
+
}
|
|
155
|
+
case 12u: { // hue
|
|
156
|
+
return set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb));
|
|
157
|
+
}
|
|
158
|
+
case 13u: { // saturation
|
|
159
|
+
return set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb));
|
|
160
|
+
}
|
|
161
|
+
case 14u: { // color
|
|
162
|
+
return set_lum(s_rgb, lum(d_rgb));
|
|
163
|
+
}
|
|
164
|
+
case 15u: { // luminosity
|
|
165
|
+
return set_lum(d_rgb, lum(s_rgb));
|
|
166
|
+
}
|
|
167
|
+
default: { // normal / source-over
|
|
168
|
+
return s_rgb;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
fn compositeLayer(dst: vec4<f32>, src: vec4<f32>, blendMode: u32) -> vec4<f32> {
|
|
174
|
+
let sa = clamp(src.a, 0.0, 1.0);
|
|
175
|
+
if (sa <= 0.0001) {
|
|
176
|
+
return dst;
|
|
177
|
+
}
|
|
178
|
+
let da = clamp(dst.a, 0.0, 1.0);
|
|
179
|
+
if (da <= 0.0001) {
|
|
180
|
+
return src;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
switch (blendMode) {
|
|
184
|
+
case 16u: { return dst * sa; } // mask-in / destination-in
|
|
185
|
+
case 17u: { return dst * (1.0 - sa); } // mask-out / destination-out
|
|
186
|
+
case 18u: { return src * da; } // source-in
|
|
187
|
+
case 19u: { return src * (1.0 - da); } // source-out
|
|
188
|
+
case 20u: { return src * da + dst * (1.0 - sa); } // source-atop
|
|
189
|
+
case 21u: { return dst + src * (1.0 - da); } // destination-over
|
|
190
|
+
case 22u: { return dst * sa + src * (1.0 - da); } // destination-atop
|
|
191
|
+
case 23u: { return src + dst; } // lighter / add
|
|
192
|
+
case 24u: { return src; } // copy
|
|
193
|
+
case 25u: { return src * (1.0 - da) + dst * (1.0 - sa); } // xor
|
|
194
|
+
default: {}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
let b_rgb = blendRgb(dst.rgb, src.rgb, blendMode);
|
|
198
|
+
let out_a = sa + da * (1.0 - sa);
|
|
199
|
+
let out_rgb = select(
|
|
200
|
+
((1.0 - da) * src.rgb + (1.0 - sa) * dst.rgb + sa * da * b_rgb) / max(out_a, 1e-5),
|
|
201
|
+
b_rgb,
|
|
202
|
+
out_a <= 1e-4
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
return vec4<f32>(out_rgb, out_a);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
|
|
209
|
+
let dimensions = vec2<f32>(textureDimensions(tex));
|
|
210
|
+
let texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));
|
|
211
|
+
let origColor = textureSampleLevel(tex, samp, in.uv, 0.0);
|
|
212
|
+
let origA = origColor.a;
|
|
213
|
+
|
|
214
|
+
var result = vec4<f32>(0.0);
|
|
215
|
+
|
|
216
|
+
// =========================================================================
|
|
217
|
+
// 1. DROP SHADOW (Bottom Layer)
|
|
218
|
+
// =========================================================================
|
|
219
|
+
if (u.dropShadowParams.x > 0.5) {
|
|
220
|
+
let opacity = u.dropShadowParams.y;
|
|
221
|
+
let angle = u.dropShadowParams.z;
|
|
222
|
+
let distance = u.dropShadowParams.w;
|
|
223
|
+
let spread = u.dropShadowParams2.x;
|
|
224
|
+
let size = u.dropShadowParams2.y;
|
|
225
|
+
let blendMode = u32(u.dropShadowParams2.z);
|
|
226
|
+
|
|
227
|
+
let shadowOffset = vec2<f32>(-cos(angle), sin(angle)) * distance * texelSize;
|
|
228
|
+
let shadowCenterUv = in.uv - shadowOffset;
|
|
229
|
+
|
|
230
|
+
var shadowAccum = 0.0;
|
|
231
|
+
var shadowWeightSum = 0.0;
|
|
232
|
+
|
|
233
|
+
let sigma = max(0.5, size * 0.4);
|
|
234
|
+
let sampleRadius = min(i32(ceil(size)), 24);
|
|
235
|
+
|
|
236
|
+
if (size <= 0.5) {
|
|
237
|
+
shadowAccum = sampleAlpha(shadowCenterUv);
|
|
238
|
+
shadowWeightSum = 1.0;
|
|
239
|
+
} else {
|
|
240
|
+
let stepVal = max(1, sampleRadius / 8);
|
|
241
|
+
for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
|
|
242
|
+
for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
|
|
243
|
+
let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
|
|
244
|
+
let distSq = f32(x * x + y * y);
|
|
245
|
+
let weight = exp(-0.5 * distSq / (sigma * sigma));
|
|
246
|
+
shadowAccum += sampleAlpha(shadowCenterUv + offset) * weight;
|
|
247
|
+
shadowWeightSum += weight;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
let blurredShadow = shadowAccum / max(shadowWeightSum, 1e-4);
|
|
253
|
+
let spreadFactor = spread / 100.0;
|
|
254
|
+
let finalShadowAlpha = clamp(blurredShadow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * opacity;
|
|
255
|
+
|
|
256
|
+
if (finalShadowAlpha > 0.001) {
|
|
257
|
+
let shadowCol = vec4<f32>(u.dropShadowColor.rgb, finalShadowAlpha);
|
|
258
|
+
result = compositeLayer(result, shadowCol, blendMode);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// =========================================================================
|
|
263
|
+
// 2. OUTER GLOW
|
|
264
|
+
// =========================================================================
|
|
265
|
+
if (u.outerGlowParams.x > 0.5) {
|
|
266
|
+
let opacity = u.outerGlowParams.y;
|
|
267
|
+
let size = u.outerGlowParams.z;
|
|
268
|
+
let spread = u.outerGlowParams.w;
|
|
269
|
+
let blendMode = u32(u.outerGlowParams2.x);
|
|
270
|
+
|
|
271
|
+
var glowAccum = 0.0;
|
|
272
|
+
var glowWeightSum = 0.0;
|
|
273
|
+
let sigma = max(0.5, size * 0.4);
|
|
274
|
+
let sampleRadius = min(i32(ceil(size)), 24);
|
|
275
|
+
|
|
276
|
+
if (size <= 0.5) {
|
|
277
|
+
glowAccum = origA;
|
|
278
|
+
glowWeightSum = 1.0;
|
|
279
|
+
} else {
|
|
280
|
+
let stepVal = max(1, sampleRadius / 8);
|
|
281
|
+
for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
|
|
282
|
+
for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
|
|
283
|
+
let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
|
|
284
|
+
let distSq = f32(x * x + y * y);
|
|
285
|
+
let weight = exp(-0.5 * distSq / (sigma * sigma));
|
|
286
|
+
glowAccum += sampleAlpha(in.uv + offset) * weight;
|
|
287
|
+
glowWeightSum += weight;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
let blurredGlow = glowAccum / max(glowWeightSum, 1e-4);
|
|
293
|
+
let spreadFactor = spread / 100.0;
|
|
294
|
+
let spreadGlow = clamp(blurredGlow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0);
|
|
295
|
+
let finalGlowAlpha = max(0.0, spreadGlow - origA) * opacity;
|
|
296
|
+
|
|
297
|
+
if (finalGlowAlpha > 0.001) {
|
|
298
|
+
let glowCol = vec4<f32>(u.outerGlowColor.rgb, finalGlowAlpha);
|
|
299
|
+
result = compositeLayer(result, glowCol, blendMode);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// =========================================================================
|
|
304
|
+
// 3. OUTSIDE STROKE
|
|
305
|
+
// =========================================================================
|
|
306
|
+
if (u.strokeParams.x > 0.5 && u.strokeParams.z < 0.5) { // position == 0: outside
|
|
307
|
+
let size = u.strokeParams.y;
|
|
308
|
+
let opacity = u.strokeParams.w;
|
|
309
|
+
let blendMode = u32(u.strokeParams2.x);
|
|
310
|
+
|
|
311
|
+
var maxAlpha = 0.0;
|
|
312
|
+
let sampleRadius = min(i32(ceil(size)), 24);
|
|
313
|
+
let sizeSq = size * size;
|
|
314
|
+
|
|
315
|
+
for (var y = -sampleRadius; y <= sampleRadius; y++) {
|
|
316
|
+
for (var x = -sampleRadius; x <= sampleRadius; x++) {
|
|
317
|
+
let distSq = f32(x * x + y * y);
|
|
318
|
+
if (distSq <= sizeSq) {
|
|
319
|
+
let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
|
|
320
|
+
maxAlpha = max(maxAlpha, sAlpha);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
let strokeAlpha = clamp(maxAlpha - origA, 0.0, 1.0) * opacity;
|
|
326
|
+
if (strokeAlpha > 0.001) {
|
|
327
|
+
let strokeCol = vec4<f32>(u.strokeColor.rgb, strokeAlpha);
|
|
328
|
+
result = compositeLayer(result, strokeCol, blendMode);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// =========================================================================
|
|
333
|
+
// 4. BASE IMAGE LAYER (with Color Overlay, Bevel & Emboss, Inner Glow/Shadow)
|
|
334
|
+
// =========================================================================
|
|
335
|
+
if (origA > 0.001) {
|
|
336
|
+
var baseRgb = origColor.rgb;
|
|
337
|
+
|
|
338
|
+
// Color Overlay
|
|
339
|
+
if (u.colorOverlayParams.x > 0.5) {
|
|
340
|
+
let overlayOpacity = u.colorOverlayParams.y;
|
|
341
|
+
let overlayBlendMode = u32(u.colorOverlayParams.z);
|
|
342
|
+
let blendedOverlay = blendRgb(baseRgb, u.colorOverlayColor.rgb, overlayBlendMode);
|
|
343
|
+
baseRgb = mix(baseRgb, blendedOverlay, overlayOpacity);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Bevel & Emboss
|
|
347
|
+
if (u.bevelParams1.x > 0.5) {
|
|
348
|
+
let style = u.bevelParams1.y;
|
|
349
|
+
let technique = u.bevelParams1.z;
|
|
350
|
+
let depth = u.bevelParams1.w / 100.0;
|
|
351
|
+
let direction = u.bevelParams2.x;
|
|
352
|
+
let bevelSize = max(0.5, u.bevelParams2.y);
|
|
353
|
+
let soften = u.bevelParams2.z;
|
|
354
|
+
let lightAngle = u.bevelParams2.w;
|
|
355
|
+
let lightAltitude = u.bevelParams3.x;
|
|
356
|
+
let hlOpacity = u.bevelParams3.y;
|
|
357
|
+
let shOpacity = u.bevelParams3.z;
|
|
358
|
+
|
|
359
|
+
let lightDir = normalize(vec3<f32>(
|
|
360
|
+
-cos(lightAngle) * cos(lightAltitude),
|
|
361
|
+
sin(lightAngle) * cos(lightAltitude),
|
|
362
|
+
sin(lightAltitude)
|
|
363
|
+
));
|
|
364
|
+
|
|
365
|
+
let stepSize = max(1.0, bevelSize * 0.5 + soften) * texelSize;
|
|
366
|
+
let aL = sampleAlpha(in.uv - vec2<f32>(stepSize.x, 0.0));
|
|
367
|
+
let aR = sampleAlpha(in.uv + vec2<f32>(stepSize.x, 0.0));
|
|
368
|
+
let aT = sampleAlpha(in.uv - vec2<f32>(0.0, stepSize.y));
|
|
369
|
+
let aB = sampleAlpha(in.uv + vec2<f32>(0.0, stepSize.y));
|
|
370
|
+
|
|
371
|
+
var dx = (aR - aL) * depth * direction;
|
|
372
|
+
var dy = (aB - aT) * depth * direction;
|
|
373
|
+
|
|
374
|
+
if (technique > 0.5) { // ChiselHard or ChiselSoft
|
|
375
|
+
let rampFactor = select(2.0, 1.5, technique > 1.5);
|
|
376
|
+
dx = clamp(dx * rampFactor, -1.0, 1.0);
|
|
377
|
+
dy = clamp(dy * rampFactor, -1.0, 1.0);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
let normal = normalize(vec3<f32>(-dx, -dy, 1.0));
|
|
381
|
+
let nDotL = dot(normal, lightDir);
|
|
382
|
+
|
|
383
|
+
let highlightAmount = max(0.0, nDotL) * hlOpacity;
|
|
384
|
+
let shadowAmount = max(0.0, -nDotL) * shOpacity;
|
|
385
|
+
|
|
386
|
+
let hlColor = mix(baseRgb, u.bevelHighlightColor.rgb + baseRgb, highlightAmount);
|
|
387
|
+
let shColor = mix(baseRgb, baseRgb * (1.0 - shadowAmount) + u.bevelShadowColor.rgb * shadowAmount, shadowAmount);
|
|
388
|
+
baseRgb = mix(shColor, hlColor, clamp(nDotL * 0.5 + 0.5, 0.0, 1.0));
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// Inner Glow
|
|
392
|
+
if (u.innerGlowParams.x > 0.5) {
|
|
393
|
+
let igOpacity = u.innerGlowParams.y;
|
|
394
|
+
let igSize = u.innerGlowParams.z;
|
|
395
|
+
let igSpread = u.innerGlowParams.w;
|
|
396
|
+
let igBlendMode = u32(u.innerGlowParams2.x);
|
|
397
|
+
|
|
398
|
+
var innerAccum = 0.0;
|
|
399
|
+
var innerWeight = 0.0;
|
|
400
|
+
let sigma = max(0.5, igSize * 0.4);
|
|
401
|
+
let sampleRadius = min(i32(ceil(igSize)), 16);
|
|
402
|
+
let stepVal = max(1, sampleRadius / 6);
|
|
403
|
+
|
|
404
|
+
for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
|
|
405
|
+
for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
|
|
406
|
+
let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
|
|
407
|
+
let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
|
|
408
|
+
innerAccum += sampleAlpha(in.uv + offset) * weight;
|
|
409
|
+
innerWeight += weight;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
let blurredInner = innerAccum / max(innerWeight, 1e-4);
|
|
414
|
+
let innerGlowMask = max(0.0, origA - blurredInner);
|
|
415
|
+
let spreadFactor = igSpread / 100.0;
|
|
416
|
+
let finalInnerGlowAlpha = clamp(innerGlowMask / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * igOpacity;
|
|
417
|
+
|
|
418
|
+
if (finalInnerGlowAlpha > 0.001) {
|
|
419
|
+
let igBlended = blendRgb(baseRgb, u.innerGlowColor.rgb, igBlendMode);
|
|
420
|
+
baseRgb = mix(baseRgb, igBlended, finalInnerGlowAlpha);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// Inner Shadow
|
|
425
|
+
if (u.innerShadowParams.x > 0.5) {
|
|
426
|
+
let isOpacity = u.innerShadowParams.y;
|
|
427
|
+
let isAngle = u.innerShadowParams.z;
|
|
428
|
+
let isDistance = u.innerShadowParams.w;
|
|
429
|
+
let isChoke = u.innerShadowParams2.x;
|
|
430
|
+
let isSize = u.innerShadowParams2.y;
|
|
431
|
+
let isBlendMode = u32(u.innerShadowParams2.z);
|
|
432
|
+
|
|
433
|
+
let isOffset = vec2<f32>(-cos(isAngle), sin(isAngle)) * isDistance * texelSize;
|
|
434
|
+
let shiftedA = sampleAlpha(in.uv + isOffset);
|
|
435
|
+
|
|
436
|
+
var isAccum = 0.0;
|
|
437
|
+
var isWeight = 0.0;
|
|
438
|
+
let sigma = max(0.5, isSize * 0.4);
|
|
439
|
+
let sampleRadius = min(i32(ceil(isSize)), 16);
|
|
440
|
+
let stepVal = max(1, sampleRadius / 6);
|
|
441
|
+
|
|
442
|
+
for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
|
|
443
|
+
for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
|
|
444
|
+
let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
|
|
445
|
+
let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
|
|
446
|
+
let sShifted = sampleAlpha(in.uv + isOffset + offset);
|
|
447
|
+
let sOrig = sampleAlpha(in.uv + offset);
|
|
448
|
+
isAccum += max(0.0, sOrig - sShifted) * weight;
|
|
449
|
+
isWeight += weight;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
let blurredIS = isAccum / max(isWeight, 1e-4);
|
|
454
|
+
let chokeFactor = isChoke / 100.0;
|
|
455
|
+
let finalISAlpha = clamp(blurredIS / max(1.0 - chokeFactor * 0.95, 0.01), 0.0, 1.0) * isOpacity;
|
|
456
|
+
|
|
457
|
+
if (finalISAlpha > 0.001) {
|
|
458
|
+
let isBlended = blendRgb(baseRgb, u.innerShadowColor.rgb, isBlendMode);
|
|
459
|
+
baseRgb = mix(baseRgb, isBlended, finalISAlpha);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Inside Stroke
|
|
464
|
+
if (u.strokeParams.x > 0.5 && u.strokeParams.z > 1.5) { // position == 2: inside
|
|
465
|
+
let size = u.strokeParams.y;
|
|
466
|
+
let opacity = u.strokeParams.w;
|
|
467
|
+
let blendMode = u32(u.strokeParams2.x);
|
|
468
|
+
|
|
469
|
+
var minAlpha = 1.0;
|
|
470
|
+
let sampleRadius = min(i32(ceil(size)), 24);
|
|
471
|
+
let sizeSq = size * size;
|
|
472
|
+
|
|
473
|
+
for (var y = -sampleRadius; y <= sampleRadius; y++) {
|
|
474
|
+
for (var x = -sampleRadius; x <= sampleRadius; x++) {
|
|
475
|
+
let distSq = f32(x * x + y * y);
|
|
476
|
+
if (distSq <= sizeSq) {
|
|
477
|
+
let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
|
|
478
|
+
minAlpha = min(minAlpha, sAlpha);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
let insideStrokeAlpha = clamp(origA - minAlpha, 0.0, 1.0) * opacity;
|
|
484
|
+
if (insideStrokeAlpha > 0.001) {
|
|
485
|
+
let sBlended = blendRgb(baseRgb, u.strokeColor.rgb, blendMode);
|
|
486
|
+
baseRgb = mix(baseRgb, sBlended, insideStrokeAlpha);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
let baseLayer = vec4<f32>(baseRgb, origA);
|
|
491
|
+
result = compositeLayer(result, baseLayer, 0u);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// =========================================================================
|
|
495
|
+
// 5. CENTER STROKE
|
|
496
|
+
// =========================================================================
|
|
497
|
+
if (u.strokeParams.x > 0.5 && u.strokeParams.z >= 0.5 && u.strokeParams.z <= 1.5) { // position == 1: center
|
|
498
|
+
let size = u.strokeParams.y;
|
|
499
|
+
let opacity = u.strokeParams.w;
|
|
500
|
+
let blendMode = u32(u.strokeParams2.x);
|
|
501
|
+
|
|
502
|
+
var maxAlpha = 0.0;
|
|
503
|
+
var minAlpha = 1.0;
|
|
504
|
+
let halfSize = max(0.5, size * 0.5);
|
|
505
|
+
let sampleRadius = min(i32(ceil(halfSize)), 24);
|
|
506
|
+
let halfSizeSq = halfSize * halfSize;
|
|
507
|
+
|
|
508
|
+
for (var y = -sampleRadius; y <= sampleRadius; y++) {
|
|
509
|
+
for (var x = -sampleRadius; x <= sampleRadius; x++) {
|
|
510
|
+
let distSq = f32(x * x + y * y);
|
|
511
|
+
if (distSq <= halfSizeSq) {
|
|
512
|
+
let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
|
|
513
|
+
maxAlpha = max(maxAlpha, sAlpha);
|
|
514
|
+
minAlpha = min(minAlpha, sAlpha);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
let centerStrokeAlpha = clamp(maxAlpha - minAlpha, 0.0, 1.0) * opacity;
|
|
520
|
+
if (centerStrokeAlpha > 0.001) {
|
|
521
|
+
let strokeCol = vec4<f32>(u.strokeColor.rgb, centerStrokeAlpha);
|
|
522
|
+
result = compositeLayer(result, strokeCol, blendMode);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// Output premultiplied alpha for QuadPipeline / WebGPU rendering
|
|
527
|
+
return vec4<f32>(result.rgb * result.a, result.a);
|
|
528
|
+
}
|
|
529
|
+
`,ne=new WeakMap;function va(r,o){let i=ne.get(r);if(i)return i;let s=r.createShaderModule({code:Sa}),u=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),c=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),p=r.createPipelineLayout({bindGroupLayouts:[u,c]});return i={pipeline:r.createRenderPipeline({layout:p,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:o,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),uniformLayout:u,textureLayout:c},ne.set(r,i),i}var e=new Float32Array(88),se=async r=>{let{ctx:o,encoder:i,pass:s,targetView:u,targetTexture:c,targetWidth:p,targetHeight:_,props:f,drawChild:de}=r,l=f.virtualMedia?.operation;if(l?.op!=="LayerStyle"||!l)return;let q=f.virtualMedia.children?.[0];if(!q)return;s.end();let C=p,R=_,ce=f.elapsedMs!==void 0?f.elapsedMs/1e3:(f.frame??0)/(f.fps||30),t=(V,F,x=0,z=1e3)=>{if(V&&l.inputs?.[V]?.connectionValid){let y=l.inputs[V].outputItem;if(!y)return Math.max(x,Math.min(z,F));if(y.type==="Number"){let n=typeof y.data=="number"?y.data:y.data?.value??F;return Math.max(x,Math.min(z,n))}if(y.type==="Signal"){let n=y.data;if(typeof n=="number")return Math.max(x,Math.min(z,n));if(n&&typeof n=="object"){if(typeof n.value=="number")return Math.max(x,Math.min(z,n.value));let ea=typeof n.amplitude=="number"?n.amplitude:1,aa=typeof n.frequency=="number"?n.frequency:1,la=typeof n.phase=="number"?n.phase:0,oa=typeof n.offset=="number"?n.offset:F,ta=ce,ra=oa+ea*Math.sin(2*Math.PI*aa*ta+la);return Math.max(x,Math.min(z,ra))}}}return Math.max(x,Math.min(z,F))},K=ie(l),W=K.padX,Y=K.padY,M=Math.max(1,C-W*2),P=Math.max(1,R-Y*2),G=o.renderer.getTemporaryTexture(M,P,[...f.excludeTextures||[],c]),j=G.createView();o.renderer.beginFrame(i,j,{r:0,g:0,b:0,a:0},M,P,"clear").end(),await de(q,{...f,virtualMedia:q,containerWidth:M,containerHeight:P},j,G,M,P);let X=o.renderer.getTemporaryTexture(C,R,[G,c,...f.excludeTextures||[]]),Q=X.createView(),J=o.renderer.beginFrame(i,Q,{r:0,g:0,b:0,a:0},C,R,"clear");o.renderer.drawTexture(J,G,{x:W,y:Y,width:M,height:P},{opacity:1}),J.end();let{pipeline:ue,uniformLayout:pe,textureLayout:fe}=va(o.device,o.renderer.format),me=o.renderer.samplerCache.getSampler(o.device),m=l.dropShadow??{},b=l.innerShadow??{},S=l.outerGlow??{},v=l.innerGlow??{},w=l.stroke??{},d=l.bevelEmboss??{},k=l.colorOverlay??{},E=h(m.color??"#000000"),be=t(l.dropShadowOpacityHandleId,m.opacity??.75,0,1),ge=t(l.dropShadowAngleHandleId,m.angle??120,0,360)*Math.PI/180,he=t(l.dropShadowDistanceHandleId,m.distance??10,0,500),ye=t(l.dropShadowSpreadHandleId,m.spread??0,0,100),Se=t(l.dropShadowSizeHandleId,m.size??10,0,250),ve=A[m.blendMode??"multiply"]??1,L=h(b.color??"#000000"),we=t(l.innerShadowOpacityHandleId,b.opacity??.75,0,1),xe=t(l.innerShadowAngleHandleId,b.angle??120,0,360)*Math.PI/180,ze=t(l.innerShadowDistanceHandleId,b.distance??5,0,500),Oe=t(l.innerShadowChokeHandleId,b.choke??0,0,100),Ae=t(l.innerShadowSizeHandleId,b.size??5,0,250),Me=A[b.blendMode??"multiply"]??1,H=h(S.color??"#ffffff"),Pe=t(l.outerGlowOpacityHandleId,S.opacity??.75,0,1),Ge=t(l.outerGlowSizeHandleId,S.size??15,0,250),Ie=t(l.outerGlowSpreadHandleId,S.spread??0,0,100),_e=A[S.blendMode??"screen"]??2,B=h(v.color??"#ffffff"),Ce=t(l.innerGlowOpacityHandleId,v.opacity??.75,0,1),Re=t(l.innerGlowSizeHandleId,v.size??15,0,250),ke=t(l.innerGlowSpreadHandleId,v.spread??0,0,100),Ee=A[v.blendMode??"screen"]??2,T=h(w.color??"#ffffff"),Le=t(l.strokeSizeHandleId,w.size??2,0,100),He=ya[w.position??"outside"]??0,Be=t(l.strokeOpacityHandleId,w.opacity??1,0,1),Te=A[w.blendMode??"normal"]??0,D=h(d.highlightColor??"#ffffff"),N=h(d.shadowColor??"#000000"),De=ga[d.style??"InnerBevel"]??0,Ne=ha[d.technique??"Smooth"]??0,Ue=t(l.bevelEmbossDepthHandleId,d.depth??100,1,1e3),Fe=d.direction==="Down"?-1:1,qe=t(l.bevelEmbossSizeHandleId,d.size??5,0,250),Ve=t(l.bevelEmbossSoftenHandleId,d.soften??0,0,50),Ke=t(l.bevelEmbossAngleHandleId,d.angle??120,0,360)*Math.PI/180,We=t(l.bevelEmbossAltitudeHandleId,d.altitude??30,0,90)*Math.PI/180,Ye=t(l.bevelEmbossHighlightOpacityHandleId,d.highlightOpacity??.75,0,1),je=t(l.bevelEmbossShadowOpacityHandleId,d.shadowOpacity??.75,0,1),U=h(k.color??"#ff0000"),Xe=t(l.colorOverlayOpacityHandleId,k.opacity??1,0,1),Qe=A[k.blendMode??"normal"]??0;e.fill(0),e[0]=E[0],e[1]=E[1],e[2]=E[2],e[3]=E[3],e[4]=m.enabled?1:0,e[5]=be,e[6]=ge,e[7]=he,e[8]=ye,e[9]=Se,e[10]=ve,e[11]=0,e[12]=L[0],e[13]=L[1],e[14]=L[2],e[15]=L[3],e[16]=b.enabled?1:0,e[17]=we,e[18]=xe,e[19]=ze,e[20]=Oe,e[21]=Ae,e[22]=Me,e[23]=0,e[24]=H[0],e[25]=H[1],e[26]=H[2],e[27]=H[3],e[28]=S.enabled?1:0,e[29]=Pe,e[30]=Ge,e[31]=Ie,e[32]=_e,e[33]=0,e[34]=0,e[35]=0,e[36]=B[0],e[37]=B[1],e[38]=B[2],e[39]=B[3],e[40]=v.enabled?1:0,e[41]=Ce,e[42]=Re,e[43]=ke,e[44]=Ee,e[45]=0,e[46]=0,e[47]=0,e[48]=T[0],e[49]=T[1],e[50]=T[2],e[51]=T[3],e[52]=w.enabled?1:0,e[53]=Le,e[54]=He,e[55]=Be,e[56]=Te,e[57]=0,e[58]=0,e[59]=0,e[60]=D[0],e[61]=D[1],e[62]=D[2],e[63]=D[3],e[64]=N[0],e[65]=N[1],e[66]=N[2],e[67]=N[3],e[68]=d.enabled?1:0,e[69]=De,e[70]=Ne,e[71]=Ue,e[72]=Fe,e[73]=qe,e[74]=Ve,e[75]=Ke,e[76]=We,e[77]=Ye,e[78]=je,e[79]=0,e[80]=U[0],e[81]=U[1],e[82]=U[2],e[83]=U[3],e[84]=k.enabled?1:0,e[85]=Xe,e[86]=Qe,e[87]=0;let Je=o.renderer.getTemporaryBuffer(e),Ze=o.device.createBindGroup({layout:pe,entries:[{binding:0,resource:{buffer:Je}}]}),$e=o.device.createBindGroup({layout:fe,entries:[{binding:0,resource:Q},{binding:1,resource:me}]}),Z=o.renderer.getTemporaryTexture(C,R,[X,G,c,...f.excludeTextures||[]]),I=i.beginRenderPass({colorAttachments:[{view:Z.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});I.setPipeline(ue),I.setBindGroup(0,Ze),I.setBindGroup(1,$e),I.draw(4),I.end();let $=o.renderer.beginFrame(i,u,{r:0,g:0,b:0,a:0},p,_,"load");o.renderer.drawTexture($,Z,{x:0,y:0,width:p,height:_},{opacity:l.opacity??1}),r.pass=$};var ka=ee({WebGPURenderer:se});export{ka as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ct}from"./chunk-37EFVZWT.mjs";import{c as lt,e as tt,f as dt}from"./chunk-VSSB73UU.mjs";import{i as ut,l as N}from"./chunk-24P6DAB3.mjs";import{d as st}from"./chunk-YSTLMWCG.mjs";import{d as C,e as H}from"./chunk-BVF64D6H.mjs";H();H();H();function mt(e,n){return Math.round(e*n)}function Q(e,n,s={timeOffsetSec:0}){if(!e)return e;let{operation:b,metadata:u={},children:c=[]}=e,{timeOffsetSec:h,durationLimitMs:i}=s;if(!b)return{...e,children:(c||[]).map(t=>Q(t,n,s))};let d=b.timeline,p=d?.segments||[],m=N(e)?.durationMs??0;if(p.length>0){let t=p.reduce((a,A)=>{let z=A.endSec!=null?A.endSec-A.startSec:0,v=Math.max(1,Math.round(z*n));return a+v},0);t>0&&(m=t/n*1e3)}let f={...b},o=d?.startFrame??f.startFrame;if(typeof o=="number"){let t=mt(h,n);f.startFrame=o-t}let M={...u,durationMs:m},r=typeof o=="number"||f.op==="compose"?{timeOffsetSec:0,durationLimitMs:void 0}:{timeOffsetSec:h,durationLimitMs:i},S=(c||[]).map(t=>Q(t,n,r));return{metadata:M,operation:f,children:S}}var gt=typeof C<"u"&&/^(debug|trace)$/i.test(C.env?.LOG_LEVEL??""),y={debug:(e,...n)=>{gt&&(typeof e=="object"&&e!==null?console.info("[AudioExtractor]",e,...n):console.info(`[AudioExtractor] ${e}`,...n))},warn:(e,...n)=>{typeof e=="object"&&e!==null?console.warn("[AudioExtractor]",e,...n):console.warn(`[AudioExtractor] ${e}`,...n)},error:(e,...n)=>{typeof e=="object"&&e!==null?console.error("[AudioExtractor]",e,...n):console.error(`[AudioExtractor] ${e}`,...n)}};(typeof window>"u"||typeof C<"u"&&C.versions?.node)&&import("./server-utils-2FAIV45N.mjs").then(e=>{e.mediaLogger&&(y=e.mediaLogger)}).catch(()=>{});var ht=()=>{if(typeof window>"u")return Promise.resolve();let e=globalThis.scheduler;return typeof e?.yield=="function"?e.yield():new Promise(n=>setTimeout(n,0))},St=async(e=3e4)=>{await new Promise(s=>setTimeout(s,100));let n=Date.now();return new Promise(s=>{let b=()=>{let u=typeof window<"u"&&window.renderer_delayRenderHandles?window.renderer_delayRenderHandles:[],c=typeof globalThis<"u"?globalThis.__GATEWAI_DELAYS__:null,h=u.length>0,i=c instanceof Set&&c.size>0;if(!h&&!i){s();return}if(Date.now()-n>e){y.warn(`[AudioExtractor] waitForDelayRender timed out waiting for handles: ${JSON.stringify({browserHandles:u,globalDelays:c?Array.from(c):[]})}`),s();return}setTimeout(b,50)};b()})};async function Mt(e){y.debug(`[AudioExtractor] decodeAudioSource started for url: ${e}`);try{if(typeof window<"u"&&typeof window.document<"u"&&!(typeof C<"u"&&C.versions&&C.versions.node)){y.debug(`[AudioExtractor] Browser detected. Fetching arrayBuffer for ${e}...`);let b=window.AudioContext||window.webkitAudioContext;if(!b)throw new Error("AudioContext is not supported in this browser");let u=new b;try{let c=await fetch(e);if(y.debug(`[AudioExtractor] Fetch response status for ${e}: ${c.status} (${c.statusText})`),!c.ok)throw new Error(`Failed to fetch audio source: ${c.statusText}`);let h=await c.arrayBuffer();y.debug(`[AudioExtractor] Fetched ${h.byteLength} bytes. Decoding audio data...`);let i=await u.decodeAudioData(h);y.debug(`[AudioExtractor] Decoded successfully: ${i.numberOfChannels} channels, sampleRate: ${i.sampleRate}, duration: ${i.duration}s`);let d=[];for(let p=0;p<i.numberOfChannels;p++)d.push(new Float32Array(i.getChannelData(p)));return{channels:d,sampleRate:i.sampleRate}}finally{u.close(),y.debug(`[AudioExtractor] AudioContext closed for ${e}`)}}let s=!1;try{y.debug(`[AudioExtractor] Server / Node.js detected. Acquiring from inputStore for ${e}...`);let b=await tt.acquire(e);s=!0,y.debug("[AudioExtractor] inputStore acquired. Retrieving primary audio track...");let u=await b.getPrimaryAudioTrack();if(!u)return y.warn(`[AudioExtractor] No primary audio track found in input for ${e}`),null;let h=new lt(u).samples(0),i=[],d=0,p=48e3,m=1;y.debug(`[AudioExtractor] Starting mediabunny generator loop for ${e}...`);for await(let o of h){p=o.sampleRate,m=o.numberOfChannels;let M=o.numberOfFrames;if(i.length===0)for(let l=0;l<m;l++)i.push([]);for(let l=0;l<m;l++){let r;try{let S=o.allocationSize({planeIndex:l,format:"f32-planar"});r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l,format:"f32-planar"})}catch{let S=o.allocationSize({planeIndex:l});if(o.format==="s16"||o.format==="s16-planar"){let t=new Int16Array(S/2);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/32768}else if(o.format==="s32"||o.format==="s32-planar"){let t=new Int32Array(S/4);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/2147483648}else if(o.format==="u8"||o.format==="u8-planar"){let t=new Uint8Array(S);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=((t[a]??128)-128)/128}else r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l})}i[l].push(r)}d+=M,o.close()}return y.debug(`[AudioExtractor] Generator loop finished. Decoded total frames: ${d}`),d===0||i.length===0?null:{channels:i.map(o=>{let M=new Float32Array(d),l=0;for(let r of o)M.set(r,l),l+=r.length;return M}),sampleRate:p}}catch(b){if(typeof C<"u"&&C.versions?.node)try{let{execSync:u}=await import("./child_process-AIL2NBWS.mjs"),c=u(`ffmpeg -v error -i "${e}" -f f32le -ar 48000 -ac 2 pipe:1`,{maxBuffer:100*1024*1024}),h=c.byteLength/4,i=h/2,d=new Float32Array(c.buffer,c.byteOffset,h),p=new Float32Array(i),m=new Float32Array(i);for(let f=0;f<i;f++)p[f]=d[f*2],m[f]=d[f*2+1];return{channels:[p,m],sampleRate:48e3}}catch(u){y.warn({ffmpegErr:u},`[AudioExtractor] ffmpeg fallback decode failed for ${e}`)}return y.error({err:b},`[AudioExtractor] Failed to decode source ${e}`),null}finally{s&&tt.release(e)}}catch(n){return y.error({err:n},`[AudioExtractor] Failed to decode source ${e}`),null}}async function ft(e,n,s,b,u,c){let h=new Float32Array(u),d=n/s*b,p=1e5;for(let m=0;m<u;m++){m>0&&m%p===0&&await ht();let f=c+m*d,o=Math.floor(f),M=Math.ceil(f);if(o<0){h[m]=0;continue}if(o>=e.length)break;let l=f-o,r=e[o]??0,S=M>=0&&M<e.length?e[M]??r:r,t=r+l*(S-r);h[m]=Number.isFinite(t)?t:0}return h}async function Ot(e,n,s=48e3,b,u){y.debug(`[AudioExtractor] mixAudioTracks started. FPS: ${n}, targetSampleRate: ${s}`),await St(),ct.registerSignalsFromComposition(u,e);let c=N(e)?.durationMs||1e3,h=c/1e3,i=Math.ceil(h*s);y.debug(`[AudioExtractor] Composition total duration: ${c}ms (${h}s). Total mixed samples to allocate: ${i}`);let d=new Float32Array(i),p=new Float32Array(i),m=[d,p],f=new Map;async function o(t,a,A,z,v,B){if(!t)return null;let k=t.operation;if(!k){let D=N(t)?.durationMs??0,P=Math.round(D/1e3*n),V=B!==null?P>0?Math.min(B,P):B:P,O=Math.ceil(V/n*s);if(O<=0)return null;let j=new Float32Array(O),U=new Float32Array(O),G=[j,U];for(let x of t.children){let q=await o(x,a,A,z,v,V);if(q){let F=x.operation,g=F?.startFrame??F?.timeline?.startFrame??0,E=Math.round(g/n*s);for(let R=0;R<2;R++){let w=G[R],L=q[R],$=Math.min(L.length,w.length-E);for(let T=0;T<$;T++)E+T>=0&&(w[E+T]+=L[T])}}}return G}let J=z*(k.volume??1)*(k.opacity===0?0:1)*(k.muted?0:1),et=v,pt=k.startFrame??k.timeline?.startFrame??0,yt=A+pt,nt=k.timeline?.segments||[],wt=N(t)?.durationMs??0,W=Math.round(wt/1e3*n),bt=B!==null?W>0?Math.min(B,W):B:W,I=Math.ceil(bt/n*s);if(I<=0)return null;let ot=new Float32Array(I),rt=new Float32Array(I),X=[ot,rt],at=async(D,P)=>{let V=D?D.startSec:0,O=a+V,j=yt+P,U=0;D?U=Math.max(1,Math.round(((D.endSec??0)-D.startSec)*n)):U=W;let G=B!==null?Math.min(B,U):U,x=Math.round(P/n*s);if(k.op==="source"){let F=ut(t),g=dt(t);if(g.sourceUrl&&(F==="Audio"||F==="Video")&&J>0){let E=Math.max(.5,et*(Number(g.speed)||1)),R=Math.max(0,(Number(g.trimStartSec)||0)+O),w=f.get(g.sourceUrl);if(w===void 0&&(w=await Mt(g.sourceUrl),f.set(g.sourceUrl,w)),w){let L=G/n,$=Math.min(I-x,Math.ceil(L*s));if($>0&&x<I){let T=Math.round(R*w.sampleRate),K=w.channels[0],Z=w.channels.length>1?w.channels[1]:w.channels[0],_=await ft(K,w.sampleRate,s,E,$,T),At=await ft(Z,w.sampleRate,s,E,$,T);for(let Y=0;Y<$;Y++){let it=x+Y;ot[it]+=_[Y]*J,rt[it]+=At[Y]*J}}}await ht()}}if(t.children)for(let F of t.children){let g=await o(F,O,j,J,et,G);if(g){let E=F.operation,R=E?.startFrame??E?.timeline?.startFrame??0,w=Math.round(R/n*s),L=x+w;for(let $=0;$<2;$++){let T=X[$],K=g[$],Z=Math.min(K.length,T.length-L);for(let _=0;_<Z;_++)L+_>=0&&(T[L+_]+=K[_])}}}let q=st.get(k.op);if(q)try{let F=G/n,g=Math.min(I-x,Math.ceil(F*s));if(g>0&&x<I&&x>=0){let E=X.map(L=>L.subarray(x,x+g)),R=(j/n+O)*1e3,w=N(t)?.durationMs??void 0;await q(E,s,t,{device:b,frame:j,fps:n,renderId:u,elapsedMs:R,durationMs:w})}}catch(F){y.error({err:F},`[AudioExtractor] Custom plugin for operation '${k.op}' failed`)}};if(nt.length>0){let D=0;for(let P of nt){let V=(P.endSec??0)-P.startSec,O=Math.max(1,Math.round(V*n));await at(P,D),D+=O}}else await at(null,0);return X}let M=Q(e,n),l=await o(M,0,0,1,1,null);if(l)for(let t=0;t<2;t++){let a=m[t],A=l[t],z=Math.min(A.length,a.length);for(let v=0;v<z;v++)a[v]=A[v]}f.clear();let r=0;for(let t=0;t<i;t++){let a=Math.abs(d[t]??0),A=Math.abs(p[t]??0);a>r&&(r=a),A>r&&(r=A)}let S=r>.95?.92/r:1;for(let t=0;t<i;t++){let a=(d[t]??0)*S,A=(p[t]??0)*S;d[t]=Number.isFinite(a)?Math.tanh(a):0,p[t]=Number.isFinite(A)?Math.tanh(A):0}return{channels:m,sampleRate:s}}export{Mt as a,Ot as b};
|