framefields 2.13.1 → 2.15.0

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