framefields 2.9.2 → 2.10.0-canary.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.
Files changed (518) hide show
  1. package/NOTICE.md +18 -0
  2. package/README.md +10 -7
  3. package/dist/audio/index.d.mts +5 -4
  4. package/dist/audio/index.mjs +13 -13
  5. package/dist/{audio-Ccpl9mjV.d.mts → audio-1X5qNNmk.d.mts} +4 -3
  6. package/dist/audio-1X5qNNmk.d.mts.map +1 -0
  7. package/dist/{audio-a0MFkK6J.mjs → audio-KHBadECb.mjs} +1 -1
  8. package/dist/{audio-a0MFkK6J.mjs.map → audio-KHBadECb.mjs.map} +1 -1
  9. package/dist/{audio-BfQg37MW.mjs → audio-YpBRdI7r.mjs} +4 -4
  10. package/dist/{audio-BfQg37MW.mjs.map → audio-YpBRdI7r.mjs.map} +1 -1
  11. package/dist/{check-result-C3jlgV2i.mjs → check-result-Culfu7Nx.mjs} +1 -1
  12. package/dist/{check-result-C3jlgV2i.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
  13. package/dist/cli/check-worker.mjs +50 -50
  14. package/dist/cli.mjs +179 -3
  15. package/dist/cli.mjs.map +1 -1
  16. package/dist/cloud/index.d.mts +118 -0
  17. package/dist/cloud/index.d.mts.map +1 -0
  18. package/dist/cloud/index.mjs +3 -0
  19. package/dist/cloud-xcfV4J03.mjs +233 -0
  20. package/dist/cloud-xcfV4J03.mjs.map +1 -0
  21. package/dist/components/index.d.mts +14 -11
  22. package/dist/components/index.mjs +47 -47
  23. package/dist/dist-2_lT3Dwc.mjs +1434 -0
  24. package/dist/dist-2_lT3Dwc.mjs.map +1 -0
  25. package/dist/{dist-Buaaj-Ul.mjs → dist-BIE8fvlv.mjs} +1 -1
  26. package/dist/{dist-Buaaj-Ul.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
  27. package/dist/{dist-BlIrsfcn.mjs → dist-Bf2_efYP.mjs} +1 -1
  28. package/dist/{dist-BlIrsfcn.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
  29. package/dist/dist-BwtxciN4.mjs +3 -0
  30. package/dist/{dist-C1cCW7Bt.mjs → dist-C4Vxgm0Q.mjs} +275 -78
  31. package/dist/dist-C4Vxgm0Q.mjs.map +1 -0
  32. package/dist/{dist-C8Xq3zgx.mjs → dist-Cu1fZ9Uy.mjs} +4 -4
  33. package/dist/{dist-C8Xq3zgx.mjs.map → dist-Cu1fZ9Uy.mjs.map} +1 -1
  34. package/dist/{dist-DVMepKaO.mjs → dist-CySGkG54.mjs} +2 -2
  35. package/dist/dist-CySGkG54.mjs.map +1 -0
  36. package/dist/effects/index.d.mts +6 -4
  37. package/dist/effects/index.mjs +36 -36
  38. package/dist/{effects-CemgqEPv.mjs → effects-DiWYouOK.mjs} +3 -3
  39. package/dist/{effects-CemgqEPv.mjs.map → effects-DiWYouOK.mjs.map} +1 -1
  40. package/dist/fonts/index.d.mts +1 -1
  41. package/dist/fonts/index.mjs +3 -3
  42. package/dist/{fonts-BW0pPcvJ.mjs → fonts-BnV-GB1o.mjs} +2 -2
  43. package/dist/{fonts-BW0pPcvJ.mjs.map → fonts-BnV-GB1o.mjs.map} +1 -1
  44. package/dist/{gpu-CMaa63nz.mjs → gpu-Bw35AMwY.mjs} +11 -3
  45. package/dist/gpu-Bw35AMwY.mjs.map +1 -0
  46. package/dist/{index-D5UDyVMb.d.mts → index-B7WqFBZA.d.mts} +35 -2401
  47. package/dist/index-B7WqFBZA.d.mts.map +1 -0
  48. package/dist/{index-BfDFmIBE.d.mts → index-BW0Q1ygn.d.mts} +1 -1
  49. package/dist/{index-BfDFmIBE.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
  50. package/dist/{index-CQ-bbZk3.d.mts → index-Bbv0VtxJ.d.mts} +7 -1165
  51. package/dist/index-Bbv0VtxJ.d.mts.map +1 -0
  52. package/dist/{index-CFoAmh7q.d.mts → index-CDQrdZ0J.d.mts} +3 -3
  53. package/dist/{index-CFoAmh7q.d.mts.map → index-CDQrdZ0J.d.mts.map} +1 -1
  54. package/dist/index-COYNQ_mf.d.mts +2402 -0
  55. package/dist/index-COYNQ_mf.d.mts.map +1 -0
  56. package/dist/{index-BIjMAW1h.d.mts → index-CdCrae-I.d.mts} +2 -2
  57. package/dist/{index-BIjMAW1h.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
  58. package/dist/index-DQa7mhzq.d.mts +330 -0
  59. package/dist/index-DQa7mhzq.d.mts.map +1 -0
  60. package/dist/{index-Bnh42ouE.d.mts → index-Dyt4yS-x.d.mts} +376 -287
  61. package/dist/index-Dyt4yS-x.d.mts.map +1 -0
  62. package/dist/index-WwuuX8ZJ.d.mts +1165 -0
  63. package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
  64. package/dist/{index-CJL0JAU8.d.mts → index-gOVtTm-P.d.mts} +125 -3
  65. package/dist/index-gOVtTm-P.d.mts.map +1 -0
  66. package/dist/{index-7Z9_a_iB.d.mts → index-h7m8QgcL.d.mts} +3 -3
  67. package/dist/{index-7Z9_a_iB.d.mts.map → index-h7m8QgcL.d.mts.map} +1 -1
  68. package/dist/index.d.mts +16 -13
  69. package/dist/index.mjs +59 -58
  70. package/dist/preview/index.d.mts +4 -3
  71. package/dist/preview/index.mjs +12 -12
  72. package/dist/{preview-DvP8AZuV.mjs → preview-BW7ilNWk.mjs} +3 -3
  73. package/dist/{preview-DvP8AZuV.mjs.map → preview-BW7ilNWk.mjs.map} +1 -1
  74. package/dist/preview-engine/audio.mjs +1 -1
  75. package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
  76. package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-4BWBX2HM.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-4DSOZ5QG.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-4FACCLLE.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-4N25ZU43.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-4RLKHFV6.mjs} +1 -1
  81. package/dist/preview-engine/chunk-4TPXZNVR.mjs +483 -0
  82. package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
  83. package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-57WXGYEV.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-5Y7SO37Q.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
  87. package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-6BE3IL7L.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-6LBFSGCI.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-6O55UROD.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-6SLCECHG.mjs} +1 -1
  91. package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
  92. package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-7A3BNAWY.mjs} +84 -25
  93. package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-7HW7GA76.mjs} +1 -1
  94. package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
  95. package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
  96. package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-C2GX5L5S.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-CHXR5XZK.mjs} +1 -1
  98. package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
  99. package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
  100. package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-EKEKYGXE.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-FH72KTSM.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-FW2UDDUT.mjs} +1 -1
  103. package/dist/preview-engine/{chunk-S2ABWY5G.mjs → chunk-GTMZOMAN.mjs} +1 -1
  104. package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-HGWT3RVQ.mjs} +10 -10
  105. package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-HKYENGC5.mjs} +1 -1
  106. package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-HO7FXISJ.mjs} +1 -1
  107. package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-HPQDCC4S.mjs} +1 -1
  108. package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-IVAA5X5H.mjs} +1 -1
  109. package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
  110. package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-JFBSNFN6.mjs} +1 -1
  111. package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-JSKEVYKD.mjs} +1 -1
  112. package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-K3TJJXVC.mjs} +1 -1
  113. package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-L2NTIWW5.mjs} +1 -1
  114. package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-LBP7E7SJ.mjs} +1 -1
  115. package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-LTR5FXGU.mjs} +1 -1
  116. package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-ML7WO27M.mjs} +1 -1
  117. package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
  118. package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-NTTEGJD6.mjs} +1 -1
  119. package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-OD4CSXZL.mjs} +15 -15
  120. package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-OOUDE4XL.mjs} +1 -1
  121. package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
  122. package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
  123. package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-RAW2I27S.mjs} +1 -1
  124. package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-RMHL4XZ3.mjs} +1 -1
  125. package/dist/preview-engine/chunk-T6L3DO3H.mjs +1 -0
  126. package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-V5HU6NIW.mjs} +1 -1
  127. package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-VRJBOFFY.mjs} +1 -1
  128. package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-WVIDORLK.mjs} +1 -1
  129. package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-XCQ7KN4S.mjs} +1 -1
  130. package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-Y2SWIWIU.mjs} +1 -1
  131. package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-YS3ROS25.mjs} +1 -1
  132. package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-YXCTOCQ2.mjs} +1 -1
  133. package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-ZA5LWHRM.mjs} +1 -1
  134. package/dist/preview-engine/chunk-ZGEKF34E.mjs +1974 -0
  135. package/dist/preview-engine/components.mjs +1 -1
  136. package/dist/preview-engine/effects.mjs +1 -1
  137. package/dist/preview-engine/fonts.mjs +1 -1
  138. package/dist/preview-engine/framefields.mjs +1 -1
  139. package/dist/preview-engine/player.mjs +1 -1
  140. package/dist/preview-engine/renderers-33PIDDZC.mjs +1 -0
  141. package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-36P2TKPC.mjs} +1 -1
  142. package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-37Y5LR2S.mjs} +1 -1
  143. package/dist/preview-engine/renderers-3AZ3HY53.mjs +1 -0
  144. package/dist/preview-engine/renderers-3FGKW52B.mjs +1 -0
  145. package/dist/preview-engine/renderers-4A2FBS3Y.mjs +1 -0
  146. package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-4MW4NW6O.mjs} +1 -1
  147. package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-4SNAK77B.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-4WFRXGMR.mjs} +1 -1
  149. package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-5K3BSBI6.mjs} +1 -1
  150. package/dist/preview-engine/renderers-65DU2F5W.mjs +1 -0
  151. package/dist/preview-engine/renderers-6CTPYQR6.mjs +1 -0
  152. package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-6RRWA33X.mjs} +1 -1
  153. package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-6RYIPQ7W.mjs} +1 -1
  154. package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-AUYCQNSS.mjs} +1 -1
  155. package/dist/preview-engine/renderers-AWODRI3B.mjs +1 -0
  156. package/dist/preview-engine/renderers-BO6HHGMZ.mjs +1 -0
  157. package/dist/preview-engine/renderers-BSXYDEV7.mjs +1 -0
  158. package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CMBI4JOC.mjs} +1 -1
  159. package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-CQIPHCIW.mjs} +1 -1
  160. package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
  161. package/dist/preview-engine/renderers-ECW2CGNU.mjs +1 -0
  162. package/dist/preview-engine/renderers-EEX22FUO.mjs +1 -0
  163. package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
  164. package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-G2FL3IFD.mjs} +1 -1
  165. package/dist/preview-engine/{renderers-5XRKZHVT.mjs → renderers-GCQKGJ7W.mjs} +1 -1
  166. package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
  167. package/dist/preview-engine/renderers-HZBXLDKG.mjs +1 -0
  168. package/dist/preview-engine/renderers-IOXNQPQK.mjs +1 -0
  169. package/dist/preview-engine/renderers-IR44E4ZZ.mjs +1 -0
  170. package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-JALV3B3A.mjs} +1 -1
  171. package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-JZYHX4XI.mjs} +1 -1
  173. package/dist/preview-engine/renderers-JZZ3ODOZ.mjs +1 -0
  174. package/dist/preview-engine/renderers-K37YL3Z7.mjs +1 -0
  175. package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
  176. package/dist/preview-engine/renderers-KUJQV3K6.mjs +1 -0
  177. package/dist/preview-engine/renderers-KXVKLSSX.mjs +1 -0
  178. package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-LF6U4MR5.mjs} +1 -1
  179. package/dist/preview-engine/renderers-N4RVFX3G.mjs +1 -0
  180. package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
  181. package/dist/preview-engine/renderers-NZWWEAYA.mjs +1 -0
  182. package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-OPRXVIGT.mjs} +1 -1
  183. package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-OZKPOUMW.mjs} +1 -1
  184. package/dist/preview-engine/renderers-P4JJEDZB.mjs +1 -0
  185. package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-PGZDFDSC.mjs} +1 -1
  186. package/dist/preview-engine/renderers-Q4572F5C.mjs +1 -0
  187. package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-Q5YCUPYE.mjs} +1 -1
  188. package/dist/preview-engine/renderers-QAX2QWWQ.mjs +1 -0
  189. package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-RQ3JZE3L.mjs} +1 -1
  190. package/dist/preview-engine/renderers-SRFIEVWL.mjs +1 -0
  191. package/dist/preview-engine/renderers-SYC6WFTM.mjs +1 -0
  192. package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-TKHQRERE.mjs} +1 -1
  193. package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-U4S577ON.mjs} +1 -1
  194. package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-UBIFSF37.mjs} +1 -1
  195. package/dist/preview-engine/renderers-UH4WN3QN.mjs +1 -0
  196. package/dist/preview-engine/renderers-V4FFCAS7.mjs +1 -0
  197. package/dist/preview-engine/renderers-VGDEOZUU.mjs +1 -0
  198. package/dist/preview-engine/renderers-VJJKBX5K.mjs +1 -0
  199. package/dist/preview-engine/renderers-VJOKVDYW.mjs +1 -0
  200. package/dist/preview-engine/renderers-VUUWZUOH.mjs +1 -0
  201. package/dist/preview-engine/renderers-WG756VF3.mjs +228 -0
  202. package/dist/preview-engine/renderers-WOP5GOZP.mjs +1 -0
  203. package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-XZ3XDQIN.mjs} +1 -1
  204. package/dist/preview-engine/renderers-Y4MGN2FR.mjs +1 -0
  205. package/dist/preview-engine/renderers-YAMYH7IK.mjs +1 -0
  206. package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-YJ4PJEPG.mjs} +1 -1
  207. package/dist/preview-engine/renderers-ZNLSAWW3.mjs +1 -0
  208. package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-ZQVKE5AO.mjs} +1 -1
  209. package/dist/preview-engine/signals.mjs +1 -1
  210. package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
  211. package/dist/{program-CKpKkllV.mjs → program-BUjUTdxq.mjs} +44 -17
  212. package/dist/program-BUjUTdxq.mjs.map +1 -0
  213. package/dist/registry/focus-zoom.json +9 -2
  214. package/dist/renderer/index.d.mts +4 -3
  215. package/dist/renderer/index.mjs +4 -4
  216. package/dist/{renderer-BF0hx_iJ.mjs → renderer--f8JHHyT.mjs} +5 -5
  217. package/dist/{renderer-BF0hx_iJ.mjs.map → renderer--f8JHHyT.mjs.map} +1 -1
  218. package/dist/{renderer-CHr7MiYW.mjs → renderer-1KgHl_ls.mjs} +5 -5
  219. package/dist/{renderer-CHr7MiYW.mjs.map → renderer-1KgHl_ls.mjs.map} +1 -1
  220. package/dist/renderer-6sNr6ZRJ.mjs +6 -0
  221. package/dist/{renderer-BgO6BA_z.mjs → renderer-7c0ecb-L.mjs} +74 -21
  222. package/dist/renderer-7c0ecb-L.mjs.map +1 -0
  223. package/dist/{renderer-D61B9bXF.mjs → renderer-7w9PZmWJ.mjs} +4 -4
  224. package/dist/{renderer-D61B9bXF.mjs.map → renderer-7w9PZmWJ.mjs.map} +1 -1
  225. package/dist/{renderer-DVCJjVn7.mjs → renderer-B3WHDQeB.mjs} +5 -5
  226. package/dist/{renderer-DVCJjVn7.mjs.map → renderer-B3WHDQeB.mjs.map} +1 -1
  227. package/dist/{renderer-C7eFJf0_.mjs → renderer-B84T5I98.mjs} +5 -5
  228. package/dist/{renderer-C7eFJf0_.mjs.map → renderer-B84T5I98.mjs.map} +1 -1
  229. package/dist/{renderer-EaLUCobW.mjs → renderer-B8i4d1Rc.mjs} +4 -4
  230. package/dist/{renderer-EaLUCobW.mjs.map → renderer-B8i4d1Rc.mjs.map} +1 -1
  231. package/dist/renderer-BDHGxD6p.mjs +5 -0
  232. package/dist/{renderer-WCZu2Rf5.mjs → renderer-BFmVDdVs.mjs} +4 -4
  233. package/dist/{renderer-WCZu2Rf5.mjs.map → renderer-BFmVDdVs.mjs.map} +1 -1
  234. package/dist/{renderer-bAKUeHF3.mjs → renderer-BG_cnGbF.mjs} +5 -5
  235. package/dist/{renderer-bAKUeHF3.mjs.map → renderer-BG_cnGbF.mjs.map} +1 -1
  236. package/dist/{renderer-BPWDsufX.mjs → renderer-BIToh0CA.mjs} +3 -3
  237. package/dist/{renderer-BPWDsufX.mjs.map → renderer-BIToh0CA.mjs.map} +1 -1
  238. package/dist/{renderer-mNSyac1V.mjs → renderer-BOg8i8eF.mjs} +11 -2
  239. package/dist/{renderer-mNSyac1V.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
  240. package/dist/{renderer-BlPqTEii.mjs → renderer-BSW4CGZF.mjs} +4 -4
  241. package/dist/{renderer-BlPqTEii.mjs.map → renderer-BSW4CGZF.mjs.map} +1 -1
  242. package/dist/{renderer-D7Al3_-5.mjs → renderer-BT4im6c0.mjs} +5 -5
  243. package/dist/{renderer-D7Al3_-5.mjs.map → renderer-BT4im6c0.mjs.map} +1 -1
  244. package/dist/renderer-BT9dvpk2.mjs +5 -0
  245. package/dist/{renderer-BpIF1QIE.mjs → renderer-BTLZBD63.mjs} +5 -5
  246. package/dist/{renderer-BpIF1QIE.mjs.map → renderer-BTLZBD63.mjs.map} +1 -1
  247. package/dist/{renderer-CcvvoKiZ.mjs → renderer-Bb_HHUQ0.mjs} +5 -5
  248. package/dist/{renderer-CcvvoKiZ.mjs.map → renderer-Bb_HHUQ0.mjs.map} +1 -1
  249. package/dist/renderer-Bd-NuU3M.mjs +3 -0
  250. package/dist/{renderer-sCovEubT.mjs → renderer-BdRwbLLV.mjs} +4 -4
  251. package/dist/{renderer-sCovEubT.mjs.map → renderer-BdRwbLLV.mjs.map} +1 -1
  252. package/dist/{renderer-DNQvOrkY.mjs → renderer-BeJoW-nG.mjs} +5 -5
  253. package/dist/{renderer-DNQvOrkY.mjs.map → renderer-BeJoW-nG.mjs.map} +1 -1
  254. package/dist/renderer-BfaRh0qy.mjs +5 -0
  255. package/dist/{renderer-B522Dkdk.mjs → renderer-BhNZn2DU.mjs} +4 -4
  256. package/dist/{renderer-B522Dkdk.mjs.map → renderer-BhNZn2DU.mjs.map} +1 -1
  257. package/dist/{renderer-D47AEJE_.mjs → renderer-Bif8bwCq.mjs} +3 -3
  258. package/dist/{renderer-D47AEJE_.mjs.map → renderer-Bif8bwCq.mjs.map} +1 -1
  259. package/dist/renderer-BlwXKV7Y.mjs +5 -0
  260. package/dist/{renderer-CwFqqpWY.mjs → renderer-Bm91Xv6l.mjs} +4 -4
  261. package/dist/{renderer-CwFqqpWY.mjs.map → renderer-Bm91Xv6l.mjs.map} +1 -1
  262. package/dist/{renderer-SSBL4M1o.mjs → renderer-BnN3JH9u.mjs} +20 -7
  263. package/dist/renderer-BnN3JH9u.mjs.map +1 -0
  264. package/dist/{renderer-8QIwXh7O.mjs → renderer-Bo5GwErU.mjs} +6 -6
  265. package/dist/{renderer-8QIwXh7O.mjs.map → renderer-Bo5GwErU.mjs.map} +1 -1
  266. package/dist/{renderer-DF-yvIrV.mjs → renderer-Br_aJ_b7.mjs} +4 -4
  267. package/dist/{renderer-DF-yvIrV.mjs.map → renderer-Br_aJ_b7.mjs.map} +1 -1
  268. package/dist/{renderer-DmkWrWAk.mjs → renderer-BvRaVByi.mjs} +3 -3
  269. package/dist/{renderer-DmkWrWAk.mjs.map → renderer-BvRaVByi.mjs.map} +1 -1
  270. package/dist/renderer-C40yZK3x.mjs +5 -0
  271. package/dist/renderer-C5MjQ7L8.mjs +5 -0
  272. package/dist/renderer-C8LjKYnS.mjs +5 -0
  273. package/dist/renderer-C9q9H_qa.mjs +5 -0
  274. package/dist/renderer-CC4fhNup.mjs +3 -0
  275. package/dist/{renderer-GBmWjBvy.mjs → renderer-CDfCaqV4.mjs} +3 -3
  276. package/dist/{renderer-GBmWjBvy.mjs.map → renderer-CDfCaqV4.mjs.map} +1 -1
  277. package/dist/renderer-CF9ta9Rm.mjs +5 -0
  278. package/dist/{renderer-DkRSZg5g.mjs → renderer-CKlNHDKI.mjs} +5 -5
  279. package/dist/{renderer-DkRSZg5g.mjs.map → renderer-CKlNHDKI.mjs.map} +1 -1
  280. package/dist/{renderer-CYC32bDW.mjs → renderer-CLRrcT_3.mjs} +5 -5
  281. package/dist/{renderer-CYC32bDW.mjs.map → renderer-CLRrcT_3.mjs.map} +1 -1
  282. package/dist/{renderer-DpruWmZU.mjs → renderer-CO1PwItH.mjs} +4 -4
  283. package/dist/{renderer-DpruWmZU.mjs.map → renderer-CO1PwItH.mjs.map} +1 -1
  284. package/dist/renderer-CO205Gr9.mjs +5 -0
  285. package/dist/renderer-CSm8UXLP.mjs +5 -0
  286. package/dist/renderer-CSy8HRtF.mjs +5 -0
  287. package/dist/{renderer-pHWEHDnM.mjs → renderer-CTSvHf6g.mjs} +5 -5
  288. package/dist/{renderer-pHWEHDnM.mjs.map → renderer-CTSvHf6g.mjs.map} +1 -1
  289. package/dist/{renderer-hSCfnvaK.mjs → renderer-CWmlfdLb.mjs} +5 -5
  290. package/dist/{renderer-hSCfnvaK.mjs.map → renderer-CWmlfdLb.mjs.map} +1 -1
  291. package/dist/{renderer--fkmiVjl.mjs → renderer-CanNjQuL.mjs} +4 -4
  292. package/dist/{renderer--fkmiVjl.mjs.map → renderer-CanNjQuL.mjs.map} +1 -1
  293. package/dist/renderer-CdNRWDsA.mjs +5 -0
  294. package/dist/{renderer-DFzI3yI_.mjs → renderer-CeNAgCE2.mjs} +3 -3
  295. package/dist/{renderer-DFzI3yI_.mjs.map → renderer-CeNAgCE2.mjs.map} +1 -1
  296. package/dist/{renderer-BdyopiLC.mjs → renderer-Ch1qZ2PT.mjs} +4 -4
  297. package/dist/{renderer-BdyopiLC.mjs.map → renderer-Ch1qZ2PT.mjs.map} +1 -1
  298. package/dist/{renderer-CQvmbRQ5.mjs → renderer-Chfo4G9t.mjs} +5 -5
  299. package/dist/{renderer-CQvmbRQ5.mjs.map → renderer-Chfo4G9t.mjs.map} +1 -1
  300. package/dist/{renderer-DEmYyaqj.mjs → renderer-Ck-NLzz0.mjs} +4 -4
  301. package/dist/{renderer-DEmYyaqj.mjs.map → renderer-Ck-NLzz0.mjs.map} +1 -1
  302. package/dist/renderer-CkAjiGRB.mjs +5 -0
  303. package/dist/renderer-CmryuPBm.mjs +5 -0
  304. package/dist/renderer-CnEwne4L.mjs +5 -0
  305. package/dist/{renderer-BlvGcyAN.mjs → renderer-CsRuEpR2.mjs} +3 -3
  306. package/dist/{renderer-BlvGcyAN.mjs.map → renderer-CsRuEpR2.mjs.map} +1 -1
  307. package/dist/{renderer-SWr3vbrV.mjs → renderer-CtulmkqT.mjs} +3 -3
  308. package/dist/{renderer-SWr3vbrV.mjs.map → renderer-CtulmkqT.mjs.map} +1 -1
  309. package/dist/{renderer-DTqDy2m9.mjs → renderer-CwAuWLWm.mjs} +3 -3
  310. package/dist/{renderer-DTqDy2m9.mjs.map → renderer-CwAuWLWm.mjs.map} +1 -1
  311. package/dist/{renderer-B2jjxsjO.mjs → renderer-CxabOSkk.mjs} +4 -4
  312. package/dist/{renderer-B2jjxsjO.mjs.map → renderer-CxabOSkk.mjs.map} +1 -1
  313. package/dist/{renderer-DPAD6fL1.mjs → renderer-CybBR8AL.mjs} +425 -115
  314. package/dist/renderer-CybBR8AL.mjs.map +1 -0
  315. package/dist/{renderer-DO-KbpYZ.mjs → renderer-D1tDMuD0.mjs} +5 -5
  316. package/dist/{renderer-DO-KbpYZ.mjs.map → renderer-D1tDMuD0.mjs.map} +1 -1
  317. package/dist/renderer-D4QDoqOG.mjs +5 -0
  318. package/dist/{renderer-Bfk6A7UO.mjs → renderer-D7DlNOVi.mjs} +5 -5
  319. package/dist/{renderer-Bfk6A7UO.mjs.map → renderer-D7DlNOVi.mjs.map} +1 -1
  320. package/dist/renderer-D7cS2a8z.mjs +5 -0
  321. package/dist/{renderer-g_vrrAQU.mjs → renderer-D7lApyWZ.mjs} +3 -3
  322. package/dist/{renderer-g_vrrAQU.mjs.map → renderer-D7lApyWZ.mjs.map} +1 -1
  323. package/dist/renderer-D85CNC-b.mjs +5 -0
  324. package/dist/{renderer-DqvoMLca.mjs → renderer-DAfCcnCz.mjs} +5 -5
  325. package/dist/{renderer-DqvoMLca.mjs.map → renderer-DAfCcnCz.mjs.map} +1 -1
  326. package/dist/{renderer-D7r6onRT.mjs → renderer-DAug14gu.mjs} +4 -4
  327. package/dist/{renderer-D7r6onRT.mjs.map → renderer-DAug14gu.mjs.map} +1 -1
  328. package/dist/{renderer-DMvmf3T2.mjs → renderer-DBfx6QX1.mjs} +3 -3
  329. package/dist/renderer-DC9IoJNz.mjs +5 -0
  330. package/dist/renderer-DCMoBppL.mjs +1062 -0
  331. package/dist/renderer-DCMoBppL.mjs.map +1 -0
  332. package/dist/renderer-DIDh0gFm.mjs +5 -0
  333. package/dist/{renderer-DKgPVOLL.d.mts → renderer-DJuVX3c5.d.mts} +2 -2
  334. package/dist/{renderer-DKgPVOLL.d.mts.map → renderer-DJuVX3c5.d.mts.map} +1 -1
  335. package/dist/{renderer-sYSkIUfo.mjs → renderer-DKptrHeL.mjs} +5 -5
  336. package/dist/{renderer-sYSkIUfo.mjs.map → renderer-DKptrHeL.mjs.map} +1 -1
  337. package/dist/renderer-DLmJ9GWE.mjs +5 -0
  338. package/dist/renderer-DM7PUWP9.mjs +5 -0
  339. package/dist/{renderer-C41U1tK6.mjs → renderer-DMtzPqYo.mjs} +211 -72
  340. package/dist/renderer-DMtzPqYo.mjs.map +1 -0
  341. package/dist/renderer-DPWFDxIO.mjs +5 -0
  342. package/dist/renderer-DUCByhAk.mjs +5 -0
  343. package/dist/renderer-DVOtnCKH.mjs +5 -0
  344. package/dist/renderer-DVrN2bW8.mjs +5 -0
  345. package/dist/{renderer-zXPVLRlD.mjs → renderer-D_rEtJAH.mjs} +5 -5
  346. package/dist/{renderer-zXPVLRlD.mjs.map → renderer-D_rEtJAH.mjs.map} +1 -1
  347. package/dist/{renderer-BIGFP1cF.mjs → renderer-Dak_wVh9.mjs} +2 -2
  348. package/dist/{renderer-BIGFP1cF.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
  349. package/dist/{renderer-DX41niRU.mjs → renderer-Dd2XrdqA.mjs} +4 -4
  350. package/dist/{renderer-DX41niRU.mjs.map → renderer-Dd2XrdqA.mjs.map} +1 -1
  351. package/dist/renderer-DdOVwfG4.mjs +5 -0
  352. package/dist/{renderer-1r-Uq-Ae.mjs → renderer-Dih1rtT6.mjs} +3 -3
  353. package/dist/{renderer-1r-Uq-Ae.mjs.map → renderer-Dih1rtT6.mjs.map} +1 -1
  354. package/dist/{renderer-BXJXziIt.mjs → renderer-DjiebKHO.mjs} +3 -3
  355. package/dist/{renderer-BXJXziIt.mjs.map → renderer-DjiebKHO.mjs.map} +1 -1
  356. package/dist/{renderer-DIw3UtEU.mjs → renderer-DkAFIpzB.mjs} +5 -5
  357. package/dist/{renderer-DIw3UtEU.mjs.map → renderer-DkAFIpzB.mjs.map} +1 -1
  358. package/dist/{renderer-DDEkFbVI.mjs → renderer-DlbSqOJR.mjs} +5 -5
  359. package/dist/{renderer-DDEkFbVI.mjs.map → renderer-DlbSqOJR.mjs.map} +1 -1
  360. package/dist/{renderer-C7L8Ceqr.mjs → renderer-DrExCXnp.mjs} +4 -4
  361. package/dist/{renderer-C7L8Ceqr.mjs.map → renderer-DrExCXnp.mjs.map} +1 -1
  362. package/dist/{renderer-_iMAO698.mjs → renderer-DsPLMzy1.mjs} +2 -2
  363. package/dist/{renderer-_iMAO698.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
  364. package/dist/{renderer-BAYTI6jj.mjs → renderer-Dswrn-yi.mjs} +4 -4
  365. package/dist/{renderer-BAYTI6jj.mjs.map → renderer-Dswrn-yi.mjs.map} +1 -1
  366. package/dist/renderer-DtCe9ouu.mjs +5 -0
  367. package/dist/{renderer-DXEWbnRF.mjs → renderer-DtCmG-tT.mjs} +4 -4
  368. package/dist/{renderer-DXEWbnRF.mjs.map → renderer-DtCmG-tT.mjs.map} +1 -1
  369. package/dist/{renderer-B39I6CQw.mjs → renderer-DxiF4O6X.mjs} +4 -4
  370. package/dist/{renderer-B39I6CQw.mjs.map → renderer-DxiF4O6X.mjs.map} +1 -1
  371. package/dist/{renderer-BAusZ6Vu.mjs → renderer-DxkvDAA6.mjs} +4 -4
  372. package/dist/{renderer-BAusZ6Vu.mjs.map → renderer-DxkvDAA6.mjs.map} +1 -1
  373. package/dist/{renderer-ktWXVYka.mjs → renderer-FFLnACY-.mjs} +6 -6
  374. package/dist/{renderer-ktWXVYka.mjs.map → renderer-FFLnACY-.mjs.map} +1 -1
  375. package/dist/{renderer-Lth37j17.mjs → renderer-H4CZt3Z5.mjs} +3 -3
  376. package/dist/{renderer-B-ur0Ej8.mjs → renderer-JASAZUyY.mjs} +4 -4
  377. package/dist/{renderer-B-ur0Ej8.mjs.map → renderer-JASAZUyY.mjs.map} +1 -1
  378. package/dist/renderer-Mg0kr9Fm.mjs +5 -0
  379. package/dist/{renderer-CCycwCEB.mjs → renderer-R2kLaNuR.mjs} +3 -3
  380. package/dist/{renderer-CCycwCEB.mjs.map → renderer-R2kLaNuR.mjs.map} +1 -1
  381. package/dist/renderer-T35PsSw5.mjs +5 -0
  382. package/dist/{renderer-cod5Ona9.mjs → renderer-fWW0bsVl.mjs} +3 -3
  383. package/dist/renderer-iSZ5NT-J.mjs +5 -0
  384. package/dist/{renderer-oKRF4A0M.mjs → renderer-jBKpX3Xg.mjs} +4 -4
  385. package/dist/{renderer-oKRF4A0M.mjs.map → renderer-jBKpX3Xg.mjs.map} +1 -1
  386. package/dist/{renderer-Xv6GfNUI.mjs → renderer-kFx1_MmK.mjs} +3 -3
  387. package/dist/{renderer-Xv6GfNUI.mjs.map → renderer-kFx1_MmK.mjs.map} +1 -1
  388. package/dist/{renderer-DbRZe0Re.mjs → renderer-muB4slsV.mjs} +5 -5
  389. package/dist/{renderer-DbRZe0Re.mjs.map → renderer-muB4slsV.mjs.map} +1 -1
  390. package/dist/renderer-nEmMjQ1a.mjs +5 -0
  391. package/dist/{renderer-CpUJBOfb.mjs → renderer-oiDoNzhv.mjs} +3 -3
  392. package/dist/renderer-pG1nyfjE.mjs +5 -0
  393. package/dist/{renderer-BX7jS14r.d.mts → renderer-tcypOFaB.d.mts} +23 -4
  394. package/dist/renderer-tcypOFaB.d.mts.map +1 -0
  395. package/dist/{renderer-CiQhD8Gg.mjs → renderer-vPxMXiv8.mjs} +5 -5
  396. package/dist/{renderer-CiQhD8Gg.mjs.map → renderer-vPxMXiv8.mjs.map} +1 -1
  397. package/dist/renderer-vbb9e3E3.mjs +5 -0
  398. package/dist/{renderer-D8bBHrWC.mjs → renderer-vpsU_4XW.mjs} +5 -5
  399. package/dist/{renderer-D8bBHrWC.mjs.map → renderer-vpsU_4XW.mjs.map} +1 -1
  400. package/dist/{renderer-DiY70S8S.mjs → renderer-w7mlMSC-.mjs} +4 -4
  401. package/dist/{renderer-DiY70S8S.mjs.map → renderer-w7mlMSC-.mjs.map} +1 -1
  402. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs → renderers-CP8CFWDs-OgyUiyrr.mjs} +4 -4
  403. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs.map → renderers-CP8CFWDs-OgyUiyrr.mjs.map} +1 -1
  404. package/dist/sam/index.d.mts +4 -0
  405. package/dist/sam/index.mjs +3 -0
  406. package/dist/signals/index.d.mts +7 -6
  407. package/dist/signals/index.mjs +8 -8
  408. package/dist/{signals-CXwgAUp-.mjs → signals-BfJ1aqpT.mjs} +4 -4
  409. package/dist/{signals-CXwgAUp-.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
  410. package/dist/{renderer-B2P1vgb7.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +81 -1016
  411. package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
  412. package/dist/{src-DFEqficI.mjs → src-C3f3zXYg.mjs} +251 -37
  413. package/dist/src-C3f3zXYg.mjs.map +1 -0
  414. package/package.json +75 -69
  415. package/dist/audio-Ccpl9mjV.d.mts.map +0 -1
  416. package/dist/dist-C1cCW7Bt.mjs.map +0 -1
  417. package/dist/dist-DVMepKaO.mjs.map +0 -1
  418. package/dist/gpu-CMaa63nz.mjs.map +0 -1
  419. package/dist/index-Bnh42ouE.d.mts.map +0 -1
  420. package/dist/index-CJL0JAU8.d.mts.map +0 -1
  421. package/dist/index-CQ-bbZk3.d.mts.map +0 -1
  422. package/dist/index-D5UDyVMb.d.mts.map +0 -1
  423. package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
  424. package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
  425. package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
  426. package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
  427. package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
  428. package/dist/preview-engine/chunk-FKG27DVO.mjs +0 -4
  429. package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
  430. package/dist/preview-engine/chunk-KXLXP66K.mjs +0 -1974
  431. package/dist/preview-engine/chunk-MIEH74UH.mjs +0 -480
  432. package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
  433. package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
  434. package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
  435. package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
  436. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
  437. package/dist/preview-engine/renderers-7XHO6M3B.mjs +0 -228
  438. package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
  439. package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
  440. package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
  441. package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
  442. package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
  443. package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
  444. package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
  445. package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
  446. package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
  447. package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
  448. package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
  449. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
  450. package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
  451. package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
  452. package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
  453. package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
  454. package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
  455. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
  456. package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
  457. package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
  458. package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
  459. package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
  460. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
  461. package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
  462. package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
  463. package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
  464. package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
  465. package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
  466. package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
  467. package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
  468. package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
  469. package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
  470. package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
  471. package/dist/program-CKpKkllV.mjs.map +0 -1
  472. package/dist/renderer--Ac-dg4A.mjs +0 -5
  473. package/dist/renderer--N7TMqzU.mjs +0 -5
  474. package/dist/renderer-2ecmdOae.mjs +0 -5
  475. package/dist/renderer-B2P1vgb7.mjs.map +0 -1
  476. package/dist/renderer-B5RJp5g-.mjs +0 -5
  477. package/dist/renderer-B7xyT1Vb.mjs +0 -5
  478. package/dist/renderer-BBeArN_x.mjs +0 -5
  479. package/dist/renderer-BCAZDu-r.mjs +0 -5
  480. package/dist/renderer-BJnhik7Y.mjs +0 -5
  481. package/dist/renderer-BX7jS14r.d.mts.map +0 -1
  482. package/dist/renderer-BgO6BA_z.mjs.map +0 -1
  483. package/dist/renderer-BxRW8MZO.mjs +0 -5
  484. package/dist/renderer-C-lfsEAN.mjs +0 -5
  485. package/dist/renderer-C41U1tK6.mjs.map +0 -1
  486. package/dist/renderer-C6nOFN4-.mjs +0 -5
  487. package/dist/renderer-C84TSQmS.mjs +0 -5
  488. package/dist/renderer-C8_6YofT.mjs +0 -5
  489. package/dist/renderer-COb3tOPG.mjs +0 -5
  490. package/dist/renderer-CSCIzaLy.mjs +0 -5
  491. package/dist/renderer-CmI4c8MS.mjs +0 -5
  492. package/dist/renderer-CqVltdX9.mjs +0 -5
  493. package/dist/renderer-D-FpMzLY.mjs +0 -5
  494. package/dist/renderer-D-Oyn9mG.mjs +0 -5
  495. package/dist/renderer-D2QrkA8_.mjs +0 -5
  496. package/dist/renderer-D5bjOx83.mjs +0 -3
  497. package/dist/renderer-D64r4iN-.mjs +0 -5
  498. package/dist/renderer-DCq6YkgP.mjs +0 -5
  499. package/dist/renderer-DDHG3GdR.mjs +0 -5
  500. package/dist/renderer-DMdNfcud.mjs +0 -6
  501. package/dist/renderer-DPAD6fL1.mjs.map +0 -1
  502. package/dist/renderer-DZQXZ4lK.mjs +0 -5
  503. package/dist/renderer-DczJJLA1.mjs +0 -5
  504. package/dist/renderer-DfqJj9oe.mjs +0 -5
  505. package/dist/renderer-DgO9ihVJ.mjs +0 -5
  506. package/dist/renderer-DhgnQZYb.mjs +0 -5
  507. package/dist/renderer-DjxKjHMf.mjs +0 -5
  508. package/dist/renderer-DnRDW2Oz.mjs +0 -3
  509. package/dist/renderer-DqLA5cdR.mjs +0 -5
  510. package/dist/renderer-Dudp6ZlH.mjs +0 -5
  511. package/dist/renderer-SSBL4M1o.mjs.map +0 -1
  512. package/dist/renderer-_jC5KIT1.mjs +0 -5
  513. package/dist/renderer-cTgAuVmJ.mjs +0 -5
  514. package/dist/renderer-nVKDvDLO.mjs +0 -5
  515. package/dist/renderer-pZ6_pUo1.mjs +0 -5
  516. package/dist/src-DFEqficI.mjs.map +0 -1
  517. /package/dist/{chunk-BcJoO4Nm.mjs → chunk-W71TSjRM.mjs} +0 -0
  518. /package/dist/{renderer-COqFNSfV.mjs → renderer-B6rZUBwE.mjs} +0 -0
@@ -0,0 +1,3 @@
1
+ import { C as sam3Run, E as validateSam3Prompts, S as sam3Revision, T as validateSam2Prompts, _ as sam3EncoderFiles, a as SAM_MODELS, b as sam3Position, c as Sam3MemoryBank, d as assertSamLicenseAccepted, f as decodeSam2Mask, g as sam3DenseDecoder, h as sam2Tokens, i as SAM_LICENSE_TERMS_URL, l as Sam3TextSelector, m as sam2Revision, n as SAM3_ENCODER, o as Sam2MemoryBank, p as ensureSamModelsRegistered, r as SAM_LICENSE, s as Sam2Tracker, t as SAM2_EXPORTS, u as Sam3Tracker, v as sam3Floats, w as sam3SupportGraphs, x as sam3Precision, y as sam3Mask } from "./dist-2_lT3Dwc.mjs";
2
+
3
+ export { SAM2_EXPORTS, SAM3_ENCODER, SAM_LICENSE, SAM_LICENSE_TERMS_URL, SAM_MODELS, Sam2MemoryBank, Sam2Tracker, Sam3MemoryBank, Sam3TextSelector, Sam3Tracker, assertSamLicenseAccepted, decodeSam2Mask, ensureSamModelsRegistered, sam2Revision, sam2Tokens, sam3DenseDecoder, sam3EncoderFiles, sam3Floats, sam3Mask, sam3Position, sam3Precision, sam3Revision, sam3Run, sam3SupportGraphs, validateSam2Prompts, validateSam3Prompts };
@@ -1,5 +1,5 @@
1
- import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-BcJoO4Nm.mjs";
2
- import { $t as limitGradientStops, Et as emojiPresentation, Ht as gradientStopsToOklab, Xt as isSignal, Zt as isValueSignal, dn as parseCssGradient, un as parseCssColor } from "./dist-BlIrsfcn.mjs";
1
+ import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-W71TSjRM.mjs";
2
+ import { $t as limitGradientStops, Et as emojiPresentation, Ht as gradientStopsToOklab, Xt as isSignal, Zt as isValueSignal, dn as parseCssGradient, un as parseCssColor } from "./dist-Bf2_efYP.mjs";
3
3
  import { ALL_FORMATS, AudioBufferSink, CanvasSink, FilePathSource, Input, UrlSource, VideoSampleSink } from "mediabunny";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
@@ -16642,6 +16642,10 @@ async function acquireDevice(opts) {
16642
16642
  if (adapter.limits && Number.isInteger(adapter.limits.maxTextureDimension2D)) requiredLimits.maxTextureDimension2D = Math.min(8192, adapter.limits.maxTextureDimension2D);
16643
16643
  if (adapter.limits && Number.isInteger(adapter.limits.maxStorageBuffersPerShaderStage)) requiredLimits.maxStorageBuffersPerShaderStage = Math.min(16, adapter.limits.maxStorageBuffersPerShaderStage);
16644
16644
  if (adapter.limits && Number.isInteger(adapter.limits.maxStorageBuffersPerPipelineLayout)) requiredLimits.maxStorageBuffersPerPipelineLayout = Math.min(16, adapter.limits.maxStorageBuffersPerPipelineLayout);
16645
+ for (const limit of ["maxStorageBufferBindingSize", "maxBufferSize"]) {
16646
+ const max = adapter.limits?.[limit];
16647
+ if (Number.isFinite(max)) requiredLimits[limit] = max;
16648
+ }
16645
16649
  return adapter.requestDevice({
16646
16650
  requiredFeatures,
16647
16651
  requiredLimits
@@ -26510,6 +26514,50 @@ async function drawSignalNode(ctx, encoder, pass, props) {
26510
26514
  pass.setBindGroup(1, bindGroup1);
26511
26515
  pass.draw(4);
26512
26516
  }
26517
+ /**
26518
+ * Target pixels per local unit along the axis `m` stretches most: what a
26519
+ * raster drawn under `m` needs per unit to stay sharp, and what one target
26520
+ * pixel is in local units (its inverse).
26521
+ */
26522
+ function transformScale(m) {
26523
+ return Math.max(Math.hypot(m.a, m.b), Math.hypot(m.c, m.d));
26524
+ }
26525
+ var TransformStack = class {
26526
+ stack = [new DOMMatrix()];
26527
+ push(matrix) {
26528
+ const next = this.stack[this.stack.length - 1].multiply(matrix);
26529
+ this.stack.push(next);
26530
+ }
26531
+ pop() {
26532
+ if (this.stack.length > 1) this.stack.pop();
26533
+ }
26534
+ getCurrent() {
26535
+ return this.stack[this.stack.length - 1];
26536
+ }
26537
+ packIntoBuffer(bufferData, opacity, surfaceWidth, surfaceHeight, localOverride, customParam) {
26538
+ let m = this.getCurrent();
26539
+ if (localOverride) m = m.multiply(localOverride);
26540
+ bufferData[0] = m.a;
26541
+ bufferData[1] = m.b;
26542
+ bufferData[2] = 0;
26543
+ bufferData[3] = 0;
26544
+ bufferData[4] = m.c;
26545
+ bufferData[5] = m.d;
26546
+ bufferData[6] = 0;
26547
+ bufferData[7] = 0;
26548
+ bufferData[8] = m.e;
26549
+ bufferData[9] = m.f;
26550
+ bufferData[10] = 1;
26551
+ bufferData[11] = 0;
26552
+ bufferData[12] = opacity;
26553
+ bufferData[13] = surfaceWidth;
26554
+ bufferData[14] = surfaceHeight;
26555
+ bufferData[15] = customParam ?? 0;
26556
+ }
26557
+ destroy() {
26558
+ this.stack = [new DOMMatrix()];
26559
+ }
26560
+ };
26513
26561
  var SvgLoader = class {
26514
26562
  cache = /* @__PURE__ */ new Map();
26515
26563
  async load(src, width, height, isHeadless) {
@@ -26582,8 +26630,10 @@ var SvgLoader = class {
26582
26630
  };
26583
26631
  const svgLoader = new SvgLoader();
26584
26632
  async function drawSvgNode(ctx, pass, props) {
26585
- const resolvedWidth = Math.max(1, Math.ceil(props.dstRect.width));
26586
- const resolvedHeight = Math.max(1, Math.ceil(props.dstRect.height));
26633
+ const m = ctx.renderer.getCurrentTransform();
26634
+ const k = transformScale(props.matrix ? m.multiply(props.matrix) : m);
26635
+ const resolvedWidth = Math.max(1, Math.ceil(props.dstRect.width * k));
26636
+ const resolvedHeight = Math.max(1, Math.ceil(props.dstRect.height * k));
26587
26637
  const cacheKey = `${props.src}-${resolvedWidth}-${resolvedHeight}`;
26588
26638
  let tex = textureCache.acquire(cacheKey);
26589
26639
  if (!tex) try {
@@ -27388,6 +27438,8 @@ fn sampleSlugCoverage(sampleUV: vec2<f32>, g: SlugGlyph, pixelsPerEm: vec2<f32>)
27388
27438
  // pixel footprint in glyph uv, |d/dx| + |d/dy| (fwidth): the caller takes it in
27389
27439
  // uniform control flow. On a turned or foreshortened glyph it is wider than one
27390
27440
  // pixel along an axis, so that axis gets the soft ramp a box filter gives.
27441
+ // A blur of blurAmount px averages coverage over a grid reaching 0.3 of it
27442
+ // each way, blurTaps taps per side past the centre.
27391
27443
  fn shadeSlugGlyph(
27392
27444
  uv: vec2<f32>,
27393
27445
  fw: vec2<f32>,
@@ -27396,6 +27448,7 @@ fn shadeSlugGlyph(
27396
27448
  color: vec4<f32>,
27397
27449
  opacity: f32,
27398
27450
  blurAmount: f32,
27451
+ blurTaps: f32,
27399
27452
  chromaticShift: f32,
27400
27453
  dissolveProgress: f32,
27401
27454
  ) -> vec4<f32> {
@@ -27428,14 +27481,15 @@ fn shadeSlugGlyph(
27428
27481
 
27429
27482
  var slugAlpha = 0.0;
27430
27483
  if (blurAmount > 0.01) {
27431
- let step = fw * blurAmount * 0.3;
27432
- for (var y_offset = -1.0; y_offset <= 1.0; y_offset = y_offset + 1.0) {
27433
- for (var x_offset = -1.0; x_offset <= 1.0; x_offset = x_offset + 1.0) {
27484
+ let step = fw * blurAmount * 0.3 / blurTaps;
27485
+ for (var y_offset = -blurTaps; y_offset <= blurTaps; y_offset = y_offset + 1.0) {
27486
+ for (var x_offset = -blurTaps; x_offset <= blurTaps; x_offset = x_offset + 1.0) {
27434
27487
  let offset = vec2<f32>(x_offset, y_offset) * step;
27435
27488
  slugAlpha = slugAlpha + sampleSlugCoverage(uv + offset, g, pixelsPerEm);
27436
27489
  }
27437
27490
  }
27438
- slugAlpha = slugAlpha / 9.0;
27491
+ let side = 2.0 * blurTaps + 1.0;
27492
+ slugAlpha = slugAlpha / (side * side);
27439
27493
  } else {
27440
27494
  slugAlpha = sampleSlugCoverage(uv, g, pixelsPerEm);
27441
27495
  }
@@ -27471,6 +27525,7 @@ struct VSOut {
27471
27525
  @location(7) @interpolate(flat) chromaticShift : f32,
27472
27526
  @location(8) @interpolate(flat) dissolveProgress : f32,
27473
27527
  @location(9) @interpolate(flat) vfxParam : f32,
27528
+ @location(10) @interpolate(flat) blurTaps : f32,
27474
27529
  };
27475
27530
 
27476
27531
  var<private> pos : array<vec2<f32>, 6> = array<vec2<f32>, 6>(
@@ -27504,7 +27559,11 @@ var<private> pos : array<vec2<f32>, 6> = array<vec2<f32>, 6>(
27504
27559
  let transform2 = mat2x2<f32>(u.transformCol0.xy, u.transformCol1.xy);
27505
27560
  let pixelsPerUnit = sqrt(max(abs(determinant(transform2)), 1e-8));
27506
27561
  let halfSize = max(abs(aScaleBias.xy * scale_mult), vec2<f32>(1e-4));
27507
- let grow = vec2<f32>(1.0) + (1.0 / pixelsPerUnit) / halfSize;
27562
+ // A blurred glyph keeps a unit around it however many pixels a unit
27563
+ // spans: its blur spills that far at one pixel per unit.
27564
+ let blurred = aExtraParams.x > 0.01;
27565
+ let dilation = select(1.0, max(1.0, pixelsPerUnit), blurred) / pixelsPerUnit;
27566
+ let grow = vec2<f32>(1.0) + dilation / halfSize;
27508
27567
  let uv = vec2<f32>(
27509
27568
  quad_pos.x * grow.x * 0.5 + 0.5,
27510
27569
  1.0 - (quad_pos.y * grow.y * 0.5 + 0.5),
@@ -27538,7 +27597,11 @@ var<private> pos : array<vec2<f32>, 6> = array<vec2<f32>, 6>(
27538
27597
  out.bandMax = vec2<u32>(aBandMaxTexCoords.xy);
27539
27598
  out.bandsTexCoords = vec2<u32>(aBandMaxTexCoords.zw);
27540
27599
  out.color = aColor;
27541
- out.blurAmount = aExtraParams.x;
27600
+ // Blur is in local units, like every other length here; the fragment
27601
+ // stage spreads its taps in pixels, as far apart as at one pixel per
27602
+ // unit (more of them as a unit spans more pixels, up to 4).
27603
+ out.blurAmount = aExtraParams.x * pixelsPerUnit;
27604
+ out.blurTaps = clamp(ceil(pixelsPerUnit - 1e-3), 1.0, 4.0);
27542
27605
  out.chromaticShift = aExtraParams.y;
27543
27606
  out.dissolveProgress = aExtraParams.z;
27544
27607
  out.vfxParam = aExtraParams.w;
@@ -27557,6 +27620,7 @@ var<private> pos : array<vec2<f32>, 6> = array<vec2<f32>, 6>(
27557
27620
  in.color,
27558
27621
  u.params.x,
27559
27622
  in.blurAmount,
27623
+ in.blurTaps,
27560
27624
  in.chromaticShift,
27561
27625
  in.dissolveProgress,
27562
27626
  );
@@ -29609,42 +29673,6 @@ var SolidPipeline = class {
29609
29673
  this.uniformBindGroupCache.destroy();
29610
29674
  }
29611
29675
  };
29612
- var TransformStack = class {
29613
- stack = [new DOMMatrix()];
29614
- push(matrix) {
29615
- const next = this.stack[this.stack.length - 1].multiply(matrix);
29616
- this.stack.push(next);
29617
- }
29618
- pop() {
29619
- if (this.stack.length > 1) this.stack.pop();
29620
- }
29621
- getCurrent() {
29622
- return this.stack[this.stack.length - 1];
29623
- }
29624
- packIntoBuffer(bufferData, opacity, surfaceWidth, surfaceHeight, localOverride, customParam) {
29625
- let m = this.getCurrent();
29626
- if (localOverride) m = m.multiply(localOverride);
29627
- bufferData[0] = m.a;
29628
- bufferData[1] = m.b;
29629
- bufferData[2] = 0;
29630
- bufferData[3] = 0;
29631
- bufferData[4] = m.c;
29632
- bufferData[5] = m.d;
29633
- bufferData[6] = 0;
29634
- bufferData[7] = 0;
29635
- bufferData[8] = m.e;
29636
- bufferData[9] = m.f;
29637
- bufferData[10] = 1;
29638
- bufferData[11] = 0;
29639
- bufferData[12] = opacity;
29640
- bufferData[13] = surfaceWidth;
29641
- bufferData[14] = surfaceHeight;
29642
- bufferData[15] = customParam ?? 0;
29643
- }
29644
- destroy() {
29645
- this.stack = [new DOMMatrix()];
29646
- }
29647
- };
29648
29676
  function premultiplyClearColor(color) {
29649
29677
  if (Array.isArray(color)) {
29650
29678
  const a$1 = color[3] ?? 1;
@@ -29795,10 +29823,14 @@ var Renderer2D = class {
29795
29823
  this.drawShapeFill(pass, tris, fill, bounds, opts);
29796
29824
  if ((!stroke || !stroke.width || stroke.width <= 0) && (fill.type ?? "solid") === "solid" && fill.color) {
29797
29825
  const svgPath = buildShapeSvgPath(config$1);
29798
- if (svgPath) this.drawPath(pass, svgPath, fill.color, 1, {
29799
- ...opts,
29800
- strokeLineCap: "round"
29801
- });
29826
+ if (svgPath) {
29827
+ const m = this.transformStack.getCurrent();
29828
+ const hairline = 1 / transformScale(opts?.transform ? m.multiply(opts.transform) : m);
29829
+ this.drawPath(pass, svgPath, fill.color, hairline, {
29830
+ ...opts,
29831
+ strokeLineCap: "round"
29832
+ });
29833
+ }
29802
29834
  }
29803
29835
  }
29804
29836
  }
@@ -32847,6 +32879,9 @@ fn fs_mrt_bloom(in: VertexOutput, @builtin(front_facing) isFront: bool) -> MrtBl
32847
32879
  */
32848
32880
  const quad3dWgsl = `
32849
32881
  ${lighting3dWgsl}
32882
+ // Grid cells either side a relief's normals span.
32883
+ const RELIEF_NORMAL_CELLS : f32 = 4.0;
32884
+
32850
32885
  struct ModelUniforms {
32851
32886
  modelMatrix : mat4x4<f32>,
32852
32887
  normalMatrix : mat4x4<f32>,
@@ -32857,11 +32892,15 @@ struct ModelUniforms {
32857
32892
  materialParams : vec4<f32>, // x = shininess, y = specularIntensity, z = ambientIntensity, w = materialMode (0=unlit, 1=lit)
32858
32893
  pbr : vec4<f32>, // x = roughness (<0 = default), y = metallic
32859
32894
  emissive : vec4<f32>, // rgb = sRGB emissive color, w = strength
32895
+ relief : vec4<f32>, // x = amount (px), y = on, w = grid cells per side
32896
+ reliefRect : vec4<f32>, // xy = where the layer's box starts in reliefTex (0..1), zw = its size
32897
+ reliefEye : vec4<f32>, // xyz = the eye the surface keeps its look from (the default camera)
32860
32898
  };
32861
32899
 
32862
32900
  @group(0) @binding(0) var<uniform> cam : CameraUniforms;
32863
32901
  @group(1) @binding(0) var<uniform> model : ModelUniforms;
32864
- ${matte3dWgsl(1, 1)}@group(2) @binding(0) var texSampler : sampler;
32902
+ ${matte3dWgsl(1, 1)}@group(1) @binding(2) var reliefTex : texture_2d<f32>;
32903
+ @group(2) @binding(0) var texSampler : sampler;
32865
32904
  @group(2) @binding(1) var mainTex : texture_2d<f32>;
32866
32905
  ${lightsBindingsWgsl}
32867
32906
 
@@ -32880,13 +32919,48 @@ struct VertexOutput {
32880
32919
  @location(4) localPos : vec2<f32>,
32881
32920
  };
32882
32921
 
32922
+ // Relief: the layer's plane pushed toward the eye by the brightness of a
32923
+ // second picture, so a flat quad becomes a surface (see DrawQuad3DOpts.relief).
32924
+ fn reliefAt(uv: vec2<f32>) -> f32 {
32925
+ let dims = vec2<f32>(textureDimensions(reliefTex));
32926
+ let p = (model.reliefRect.xy + clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0)) * model.reliefRect.zw) * dims - 0.5;
32927
+ let i = floor(p);
32928
+ let f = p - i;
32929
+ // Texels of the layer's own box only: past its edge the relief was never drawn.
32930
+ let lo = max(floor(model.reliefRect.xy * dims), vec2<f32>(0.0));
32931
+ let hi = min(ceil((model.reliefRect.xy + model.reliefRect.zw) * dims) - 1.0, dims - 1.0);
32932
+ let a = textureLoad(reliefTex, vec2<i32>(clamp(i, lo, hi)), 0).rgb;
32933
+ let b = textureLoad(reliefTex, vec2<i32>(clamp(i + vec2<f32>(1.0, 0.0), lo, hi)), 0).rgb;
32934
+ let c = textureLoad(reliefTex, vec2<i32>(clamp(i + vec2<f32>(0.0, 1.0), lo, hi)), 0).rgb;
32935
+ let d = textureLoad(reliefTex, vec2<i32>(clamp(i + vec2<f32>(1.0, 1.0), lo, hi)), 0).rgb;
32936
+ let rgb = mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
32937
+ return dot(rgb, vec3<f32>(0.2126, 0.7152, 0.0722));
32938
+ }
32939
+
32940
+ // The plane's front: the side the default camera sees.
32941
+ fn reliefFront() -> vec3<f32> {
32942
+ return normalize((model.normalMatrix * vec4<f32>(0.0, 0.0, -1.0, 0.0)).xyz);
32943
+ }
32944
+
32945
+ // A point of the plane lifted by its relief along the ray to the eye, so from
32946
+ // the eye it lands on the same pixel as the flat picture.
32947
+ fn reliefPoint(local: vec2<f32>, uv: vec2<f32>) -> vec3<f32> {
32948
+ let flat = (model.modelMatrix * vec4<f32>(local, 0.0, 1.0)).xyz;
32949
+ let n = reliefFront();
32950
+ let h = model.relief.x * reliefAt(uv);
32951
+ let toEye = model.reliefEye.xyz - flat;
32952
+ let along = dot(toEye, n);
32953
+ return select(flat + n * h, flat + toEye * (h / along), along > 1.0);
32954
+ }
32955
+
32883
32956
  @vertex
32884
32957
  fn vs_main(in: VertexInput) -> VertexOutput {
32885
32958
  var out: VertexOutput;
32886
32959
 
32887
32960
  let hasDimensions = model.dimensions.x > 0.0 && model.dimensions.y > 0.0;
32961
+ let hasRelief = model.relief.y > 0.5;
32888
32962
  var pad = 0.0;
32889
- if (hasDimensions) {
32963
+ if (hasDimensions && !hasRelief) {
32890
32964
  let viewPos = cam.viewMatrix * model.modelMatrix * vec4<f32>(0.0, 0.0, 0.0, 1.0);
32891
32965
  let viewDepth = max(abs(viewPos.z), 0.1);
32892
32966
  let projScale = max(cam.projMatrix[1][1], 0.001);
@@ -32896,12 +32970,28 @@ fn vs_main(in: VertexInput) -> VertexOutput {
32896
32970
  let scalePad = select(vec2<f32>(1.0), 1.0 + vec2<f32>(2.0 * pad) / model.dimensions.xy, hasDimensions);
32897
32971
 
32898
32972
  let paddedPos = vec3<f32>(in.position.xy * scalePad, in.position.z);
32899
- let worldPos4 = model.modelMatrix * vec4<f32>(paddedPos, 1.0);
32900
- out.worldPos = worldPos4.xyz;
32973
+ var worldPos4 = model.modelMatrix * vec4<f32>(paddedPos, 1.0);
32901
32974
 
32902
32975
  // Normal transformed by 3x3 normal matrix
32903
32976
  let norm4 = model.normalMatrix * vec4<f32>(in.normal, 0.0);
32904
32977
  out.worldNormal = normalize(norm4.xyz);
32978
+ if (hasRelief) {
32979
+ let p = reliefPoint(in.position.xy, in.uv);
32980
+ // Central differences a few cells wide: an 8-bit height map steps every
32981
+ // level, and normals from adjacent cells would light those steps as rings.
32982
+ let e = RELIEF_NORMAL_CELLS / max(model.relief.w, 1.0);
32983
+ let dx = vec2<f32>(e, 0.0);
32984
+ let dy = vec2<f32>(0.0, e);
32985
+ let tx = reliefPoint(in.position.xy + dx, in.uv + dx) - reliefPoint(in.position.xy - dx, in.uv - dx);
32986
+ let ty = reliefPoint(in.position.xy + dy, in.uv + dy) - reliefPoint(in.position.xy - dy, in.uv - dy);
32987
+ var nrm = normalize(cross(tx, ty));
32988
+ if (dot(nrm, reliefFront()) < 0.0) {
32989
+ nrm = -nrm;
32990
+ }
32991
+ worldPos4 = vec4<f32>(p, 1.0);
32992
+ out.worldNormal = nrm;
32993
+ }
32994
+ out.worldPos = worldPos4.xyz;
32905
32995
 
32906
32996
  out.clipPos = cam.viewProjMatrix * worldPos4;
32907
32997
 
@@ -33137,6 +33227,10 @@ function createLightsLayout(device, label = "Lights3DLayout") {
33137
33227
  ]
33138
33228
  });
33139
33229
  }
33230
+ /** Grid cells per side of a relief surface. */
33231
+ const RELIEF_GRID = 512;
33232
+ /** Floats in the quad's model uniform: transform, colors, params, material, surface, then relief. */
33233
+ const MODEL_FLOATS = 52 + SURFACE_PARAMS_FLOATS + 12;
33140
33234
  /** [shininess, specularIntensity, ambientIntensity, materialMode] as the 3D shaders' lighting reads them. */
33141
33235
  function packMaterialParams(data) {
33142
33236
  return [
@@ -33160,10 +33254,12 @@ var Quad3DPipeline = class {
33160
33254
  modelPool;
33161
33255
  vertexBuffer;
33162
33256
  indexBuffer;
33163
- modelData = new Float32Array(52 + SURFACE_PARAMS_FLOATS);
33257
+ /** The relief grid, built on first use. */
33258
+ reliefGrid;
33259
+ modelData = new Float32Array(MODEL_FLOATS);
33164
33260
  constructor(device, format, depthFormat = "depth24plus", sampleCount = 1) {
33165
33261
  this.device = device;
33166
- this.modelPool = new BufferPool((52 + SURFACE_PARAMS_FLOATS) * 4, GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST);
33262
+ this.modelPool = new BufferPool(MODEL_FLOATS * 4, GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST);
33167
33263
  const module$1 = device.createShaderModule({
33168
33264
  label: "quad3d.wgsl",
33169
33265
  code: quad3dWgsl
@@ -33178,11 +33274,19 @@ var Quad3DPipeline = class {
33178
33274
  });
33179
33275
  this.modelLayout = device.createBindGroupLayout({
33180
33276
  label: "Quad3DModelLayout",
33181
- entries: [{
33182
- binding: 0,
33183
- visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
33184
- buffer: { type: "uniform" }
33185
- }, matteLayoutEntry(1)]
33277
+ entries: [
33278
+ {
33279
+ binding: 0,
33280
+ visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
33281
+ buffer: { type: "uniform" }
33282
+ },
33283
+ matteLayoutEntry(1),
33284
+ {
33285
+ binding: 2,
33286
+ visibility: GPUShaderStage.VERTEX,
33287
+ texture: { sampleType: "float" }
33288
+ }
33289
+ ]
33186
33290
  });
33187
33291
  this.textureLayout = device.createBindGroupLayout({
33188
33292
  label: "Quad3DTextureLayout",
@@ -33349,18 +33453,110 @@ var Quad3DPipeline = class {
33349
33453
  this.modelData[47] = data.textureExtent?.[1] ?? 0;
33350
33454
  this.modelData.set(packMaterialParams(data), 48);
33351
33455
  packSurfaceParams(data, this.modelData, 52);
33456
+ const relief = data.relief;
33457
+ const r = 52 + SURFACE_PARAMS_FLOATS;
33458
+ this.modelData.set(relief ? [
33459
+ relief.amount,
33460
+ 1,
33461
+ 0,
33462
+ RELIEF_GRID
33463
+ ] : [
33464
+ 0,
33465
+ 0,
33466
+ 0,
33467
+ 0
33468
+ ], r);
33469
+ this.modelData.set(relief?.uvRect ?? [
33470
+ 0,
33471
+ 0,
33472
+ 1,
33473
+ 1
33474
+ ], r + 4);
33475
+ this.modelData.set([...relief?.eye ?? [
33476
+ 0,
33477
+ 0,
33478
+ 0
33479
+ ], 0], r + 8);
33352
33480
  const modelBuffer = this.modelPool.getBuffer(this.device, this.modelData);
33353
33481
  return this.device.createBindGroup({
33354
33482
  layout: this.modelLayout,
33355
- entries: [{
33356
- binding: 0,
33357
- resource: { buffer: modelBuffer }
33358
- }, {
33359
- binding: 1,
33360
- resource: data.matte?.createView() ?? fullCoverageView(this.device)
33361
- }]
33483
+ entries: [
33484
+ {
33485
+ binding: 0,
33486
+ resource: { buffer: modelBuffer }
33487
+ },
33488
+ {
33489
+ binding: 1,
33490
+ resource: data.matte?.createView() ?? fullCoverageView(this.device)
33491
+ },
33492
+ {
33493
+ binding: 2,
33494
+ resource: data.relief?.texture.createView() ?? fullCoverageView(this.device)
33495
+ }
33496
+ ]
33362
33497
  });
33363
33498
  }
33499
+ /** Binds the geometry for `data` and draws it: the quad, or the relief grid. */
33500
+ drawGeometry(pass, data) {
33501
+ if (!data.relief) {
33502
+ pass.setVertexBuffer(0, this.vertexBuffer);
33503
+ pass.setIndexBuffer(this.indexBuffer, "uint16");
33504
+ pass.drawIndexed(6);
33505
+ return;
33506
+ }
33507
+ this.reliefGrid ??= this.createReliefGrid();
33508
+ pass.setVertexBuffer(0, this.reliefGrid.vertices);
33509
+ pass.setIndexBuffer(this.reliefGrid.indices, "uint32");
33510
+ pass.drawIndexed(this.reliefGrid.count);
33511
+ }
33512
+ /** A RELIEF_GRID² grid over the unit quad, laid out like the quad's vertices. */
33513
+ createReliefGrid() {
33514
+ const side = RELIEF_GRID + 1;
33515
+ const vertices = new Float32Array(side * side * 8);
33516
+ for (let j = 0; j < side; j++) for (let i = 0; i < side; i++) {
33517
+ const u = i / RELIEF_GRID;
33518
+ const v = j / RELIEF_GRID;
33519
+ vertices.set([
33520
+ u - .5,
33521
+ v - .5,
33522
+ 0,
33523
+ u,
33524
+ v,
33525
+ 0,
33526
+ 0,
33527
+ -1
33528
+ ], (j * side + i) * 8);
33529
+ }
33530
+ const indices = new Uint32Array(RELIEF_GRID * RELIEF_GRID * 6);
33531
+ let k = 0;
33532
+ for (let j = 0; j < RELIEF_GRID; j++) for (let i = 0; i < RELIEF_GRID; i++) {
33533
+ const a = j * side + i;
33534
+ indices.set([
33535
+ a,
33536
+ a + 1,
33537
+ a + side + 1,
33538
+ a,
33539
+ a + side + 1,
33540
+ a + side
33541
+ ], k);
33542
+ k += 6;
33543
+ }
33544
+ const upload = (data, usage) => {
33545
+ const buffer = this.device.createBuffer({
33546
+ size: data.byteLength,
33547
+ usage: usage | GPUBufferUsage.COPY_DST,
33548
+ mappedAtCreation: true
33549
+ });
33550
+ new data.constructor(buffer.getMappedRange()).set(data);
33551
+ buffer.unmap();
33552
+ return buffer;
33553
+ };
33554
+ return {
33555
+ vertices: upload(vertices, GPUBufferUsage.VERTEX),
33556
+ indices: upload(indices, GPUBufferUsage.INDEX),
33557
+ count: indices.length
33558
+ };
33559
+ }
33364
33560
  textureBindGroup(texture, sampler) {
33365
33561
  return this.device.createBindGroup({
33366
33562
  layout: this.textureLayout,
@@ -33381,9 +33577,7 @@ var Quad3DPipeline = class {
33381
33577
  pass.setBindGroup(1, modelBindGroup);
33382
33578
  pass.setBindGroup(2, textureBindGroup);
33383
33579
  pass.setBindGroup(3, lightsBindGroup);
33384
- pass.setVertexBuffer(0, this.vertexBuffer);
33385
- pass.setIndexBuffer(this.indexBuffer, "uint16");
33386
- pass.drawIndexed(6);
33580
+ this.drawGeometry(pass, data);
33387
33581
  }
33388
33582
  /** Draws the quad into a shadow map (`lightCameraBindGroup` holds the light's view-projection). */
33389
33583
  drawShadow(pass, lightCameraBindGroup, texture, sampler, data) {
@@ -33391,14 +33585,14 @@ var Quad3DPipeline = class {
33391
33585
  pass.setBindGroup(0, lightCameraBindGroup);
33392
33586
  pass.setBindGroup(1, this.packModel(data));
33393
33587
  pass.setBindGroup(2, this.textureBindGroup(texture, sampler));
33394
- pass.setVertexBuffer(0, this.vertexBuffer);
33395
- pass.setIndexBuffer(this.indexBuffer, "uint16");
33396
- pass.drawIndexed(6);
33588
+ this.drawGeometry(pass, data);
33397
33589
  }
33398
33590
  destroy() {
33399
33591
  this.modelPool.destroy();
33400
33592
  this.vertexBuffer.destroy();
33401
33593
  this.indexBuffer.destroy();
33594
+ this.reliefGrid?.vertices.destroy();
33595
+ this.reliefGrid?.indices.destroy();
33402
33596
  }
33403
33597
  };
33404
33598
  var Mesh3DPipeline = class {
@@ -38046,6 +38240,7 @@ fn shadeText(in : VSOut, fw : vec2<f32>) -> TextFragment {
38046
38240
  in.color,
38047
38241
  model.params.x,
38048
38242
  in.fx.x,
38243
+ 1.0,
38049
38244
  in.fx.y,
38050
38245
  in.fx.z,
38051
38246
  );
@@ -39633,7 +39828,8 @@ var Renderer3D = class {
39633
39828
  height: c.opts.height,
39634
39829
  textureExtent: c.opts.textureExtent,
39635
39830
  opacity: c.opts.opacity,
39636
- colorTint: c.opts.colorTint
39831
+ colorTint: c.opts.colorTint,
39832
+ relief: c.opts.relief
39637
39833
  });
39638
39834
  }
39639
39835
  pass.end();
@@ -39897,7 +40093,8 @@ var Renderer3D = class {
39897
40093
  metallic,
39898
40094
  emissive: opts.emissive,
39899
40095
  emissiveIntensity: opts.emissiveIntensity,
39900
- matte: opts.matte
40096
+ matte: opts.matte,
40097
+ relief: opts.relief
39901
40098
  }, useMrt, this.passWritesHdr);
39902
40099
  }
39903
40100
  /** T(pos) * Rz * Ry * Rx * S, or the draw's precomputed model matrix. */
@@ -41017,5 +41214,5 @@ var NodeSurfaceProvider = class {
41017
41214
  if (typeof globalThis !== "undefined") globalThis.__GATEWAI_DELAYS__ = globalThis.__GATEWAI_DELAYS__ || /* @__PURE__ */ new Set();
41018
41215
 
41019
41216
  //#endregion
41020
- export { probeVideoSize as $, TextPathBuilder as $t, emojiGraphemes as A, generateArcLengthLUT as An, CubicBezierSegmentSchema as At, jointMatrices as B, ParticleDissolveConfigSchema as Bt, drawGifNode as C, evaluateExpressionSelector as Cn, AdvancedTextAnimatorSchema as Ct, drawSignalNode as D, evaluateSpringProgress as Dn, AudioSignalComputePipeline as Dt, drawParagraphNode as E, evaluateSkewMatrix as En, AnimatableGlyphPropsSchema as Et, getPrimitiveGeometry as F, sampleAudioSpectrumScale as Fn, GlyphAnchorGroupingSchema as Ft, measureMaxCaptionHeight as G, SignalRegistry as Gt, loadModel3D as H, SelectorModeSchema as Ht, getRegisteredFontSource as I, sampleCurveGeometry as In, GlyphAnchorPointSchema as It, parseFBX as J, SpringPhysicsSchema as Jt, mediaDecoderCache as K, SkewPropertiesSchema as Kt, getRenderer2D as L, samplePathChainGeometry as Ln, KineticMarqueeConfigSchema as Lt, fitSpansToText as M, getScramblePool as Mn, EnhancedTextNodeSchema as Mt, generateExtrudedTextGeometry as N, getShuffledOrder as Nn, ExpressionSelectorSchema as Nt, drawSvgNode as O, evaluateTypewriterState as On, AudioSpectrumTypographySchema as Ot, getHeadlessFontPath as P, parseSvgPathToCubicBeziers as Pn, ExtendedGlyphPropertiesSchema as Pt, poseNodes as Q, TextCursorStyleSchema as Qt, initHeadlessWebGPU as R, signalRegistry as Rn, LineSpacingDynamicsSchema as Rt, drawCaptionNode as S, evaluateCubicBezierDerivative as Sn, AdvancedTextAnimatorBuilder as St, drawLottieNode as T, evaluateSelectorCombination as Tn, AnchorPresetSchema as Tt, loadOBJ as U, SelectorShapeSchema as Ut, loadFBX as V, SelectorBasedOnSchema as Vt, lutStore as W, SelectorUnitsSchema as Wt, parseOBJ as X, TextAnimatorBuilder as Xt, parseMTL as Y, TextAnchorConfigSchema as Yt, parseSvgPathToSegments as Z, TextCursorConfigSchema as Zt, buildShapeSvgPath as _, computeRangeSelectorWeight as _n, Vector3Math as _t, GlassPipeline as a, TextSignalSelectorSchema as an, spansText as at, colorMatrixWgsl as b, ellipseToCubicBeziers as bn, resolveEnvironment as bt, Renderer2D as c, TypingCadenceSchema as cn, GetFontAssetUrl as ct, ScreenSpaceRelightPipeline as d, VolumetricFormationConfigSchema as dn, ENVIRONMENT_PRESETS as dt, TextPathOptionsSchema as en, registerHeadlessFont as et, ShadowPipeline as f, VolumetricFormationModeSchema as fn, LIGHT_UNIFORM_SIZE_BYTES as ft, WebGPUAudioProcessor as g, computeLineLeadingDisplacement as gn, Path3D as gt, SlugPipeline as h, computeAnchorPivotOffset as hn, Matrix4Math as ht, EffectPipeline as i, TextSelectorSchema as in, shaderStore as it, ensureDevice as j, generatePathSegments as jn, DynamicStrokePropertiesSchema as jt, drawVideoNode as k, evaluateVolumetricFormation as kn, ChromaticGlitchConfigSchema as kt, Renderer3D as l, VariableFontAxesSchema as ln, resolveMediaSourceUrl as lt, SlugGeometry as m, buildWGSLSignalFn as mn, MAX_LIGHTS as mt, AudioLatentTrackCache as n, TextRangeSelectorSchema as nn, sampleMorphWeights as nt, MotionBlurPipeline as o, TextWigglySelectorSchema as on, srtLoader as ot, SlugFontCache as p, buildPathLUT as pn, Light3D as pt, parseColor as q, Spatial3DPropertiesSchema as qt, AudioMeshDeformPipeline as r, TextScrambleConfigSchema as rn, setRegisteredFontSource as rt, NodeSurfaceProvider as s, TypewriterAnimatorSchema as sn, textureCache as st, AudioLatentEngine as t, TextPathSourceSchema as tn, resolveTextSpans as tt, SSAOPipeline as u, Vec2Schema as un, Camera3D as ut, clearAllVideoCache as v, deterministicWigglyNoise as vn, linearRgb as vt, drawImageNode as w, evaluateMarqueeOffset as wn, AnchorGroupingSchema as wt, describeGpu as x, evaluateCubicBezier as xn, AETextAnimatorSchema as xt, clearHeadlessFonts as y, distanceToCurveParameter as yn, parseColorToRgb as yt, inputStore as z, waveToCubicBeziers as zn, LongShadowConfigSchema as zt };
41021
- //# sourceMappingURL=dist-C1cCW7Bt.mjs.map
41217
+ export { probeVideoSize as $, TextCursorStyleSchema as $t, emojiGraphemes as A, evaluateVolumetricFormation as An, ChromaticGlitchConfigSchema as At, jointMatrices as B, waveToCubicBeziers as Bn, LongShadowConfigSchema as Bt, drawGifNode as C, evaluateCubicBezierDerivative as Cn, AdvancedTextAnimatorBuilder as Ct, drawSignalNode as D, evaluateSkewMatrix as Dn, AnimatableGlyphPropsSchema as Dt, drawParagraphNode as E, evaluateSelectorCombination as En, AnchorPresetSchema as Et, getPrimitiveGeometry as F, parseSvgPathToCubicBeziers as Fn, ExtendedGlyphPropertiesSchema as Ft, measureMaxCaptionHeight as G, SelectorUnitsSchema as Gt, loadModel3D as H, SelectorBasedOnSchema as Ht, getRegisteredFontSource as I, sampleAudioSpectrumScale as In, GlyphAnchorGroupingSchema as It, parseFBX as J, Spatial3DPropertiesSchema as Jt, mediaDecoderCache as K, SignalRegistry as Kt, getRenderer2D as L, sampleCurveGeometry as Ln, GlyphAnchorPointSchema as Lt, fitSpansToText as M, generatePathSegments as Mn, DynamicStrokePropertiesSchema as Mt, generateExtrudedTextGeometry as N, getScramblePool as Nn, EnhancedTextNodeSchema as Nt, drawSvgNode as O, evaluateSpringProgress as On, AudioSignalComputePipeline as Ot, getHeadlessFontPath as P, getShuffledOrder as Pn, ExpressionSelectorSchema as Pt, poseNodes as Q, TextCursorConfigSchema as Qt, initHeadlessWebGPU as R, samplePathChainGeometry as Rn, KineticMarqueeConfigSchema as Rt, drawCaptionNode as S, evaluateCubicBezier as Sn, AETextAnimatorSchema as St, drawLottieNode as T, evaluateMarqueeOffset as Tn, AnchorGroupingSchema as Tt, loadOBJ as U, SelectorModeSchema as Ut, loadFBX as V, ParticleDissolveConfigSchema as Vt, lutStore as W, SelectorShapeSchema as Wt, parseOBJ as X, TextAnchorConfigSchema as Xt, parseMTL as Y, SpringPhysicsSchema as Yt, parseSvgPathToSegments as Z, TextAnimatorBuilder as Zt, buildShapeSvgPath as _, computeLineLeadingDisplacement as _n, Path3D as _t, GlassPipeline as a, TextSelectorSchema as an, spansText as at, colorMatrixWgsl as b, distanceToCurveParameter as bn, parseColorToRgb as bt, Renderer2D as c, TypewriterAnimatorSchema as cn, transformScale as ct, ScreenSpaceRelightPipeline as d, Vec2Schema as dn, Camera3D as dt, TextPathBuilder as en, registerHeadlessFont as et, ShadowPipeline as f, VolumetricFormationConfigSchema as fn, ENVIRONMENT_PRESETS as ft, WebGPUAudioProcessor as g, computeAnchorPivotOffset as gn, Matrix4Math as gt, SlugPipeline as h, buildWGSLSignalFn as hn, MAX_LIGHTS as ht, EffectPipeline as i, TextScrambleConfigSchema as in, shaderStore as it, ensureDevice as j, generateArcLengthLUT as jn, CubicBezierSegmentSchema as jt, drawVideoNode as k, evaluateTypewriterState as kn, AudioSpectrumTypographySchema as kt, Renderer3D as l, TypingCadenceSchema as ln, GetFontAssetUrl as lt, SlugGeometry as m, buildPathLUT as mn, Light3D as mt, AudioLatentTrackCache as n, TextPathSourceSchema as nn, sampleMorphWeights as nt, MotionBlurPipeline as o, TextSignalSelectorSchema as on, srtLoader as ot, SlugFontCache as p, VolumetricFormationModeSchema as pn, LIGHT_UNIFORM_SIZE_BYTES as pt, parseColor as q, SkewPropertiesSchema as qt, AudioMeshDeformPipeline as r, TextRangeSelectorSchema as rn, setRegisteredFontSource as rt, NodeSurfaceProvider as s, TextWigglySelectorSchema as sn, textureCache as st, AudioLatentEngine as t, TextPathOptionsSchema as tn, resolveTextSpans as tt, SSAOPipeline as u, VariableFontAxesSchema as un, resolveMediaSourceUrl as ut, clearAllVideoCache as v, computeRangeSelectorWeight as vn, Vector3Math as vt, drawImageNode as w, evaluateExpressionSelector as wn, AdvancedTextAnimatorSchema as wt, describeGpu as x, ellipseToCubicBeziers as xn, resolveEnvironment as xt, clearHeadlessFonts as y, deterministicWigglyNoise as yn, linearRgb as yt, inputStore as z, signalRegistry as zn, LineSpacingDynamicsSchema as zt };
41218
+ //# sourceMappingURL=dist-C4Vxgm0Q.mjs.map