framefields 2.0.9 → 2.0.11

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 (241) hide show
  1. package/README.md +17 -6
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-BxA0sL9z.d.mts → audio-BHanw8Jb.d.mts} +3 -3
  5. package/dist/{audio-BxA0sL9z.d.mts.map → audio-BHanw8Jb.d.mts.map} +1 -1
  6. package/dist/{audio-Dev4NGPa.mjs → audio-COOMNwL5.mjs} +4 -4
  7. package/dist/{audio-Dev4NGPa.mjs.map → audio-COOMNwL5.mjs.map} +1 -1
  8. package/dist/{dist-CoSg-CWr.mjs → dist-BAVZdFEJ.mjs} +3 -3
  9. package/dist/{dist-CoSg-CWr.mjs.map → dist-BAVZdFEJ.mjs.map} +1 -1
  10. package/dist/{dist-DzUJmIHt.mjs → dist-BYqNNwsl.mjs} +2 -2
  11. package/dist/{dist-DzUJmIHt.mjs.map → dist-BYqNNwsl.mjs.map} +1 -1
  12. package/dist/{dist-B9Afsv83.mjs → dist-CbG3QxDw.mjs} +651 -2
  13. package/dist/dist-CbG3QxDw.mjs.map +1 -0
  14. package/dist/{dist-DgfykO99.mjs → dist-Cxi68OuY.mjs} +5347 -3286
  15. package/dist/dist-Cxi68OuY.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +4 -4
  17. package/dist/effects/index.mjs +25 -25
  18. package/dist/{effects-hxRwxjyC.mjs → effects-DzbjFhyA.mjs} +3 -3
  19. package/dist/{effects-hxRwxjyC.mjs.map → effects-DzbjFhyA.mjs.map} +1 -1
  20. package/dist/fonts/index.d.mts +2 -2
  21. package/dist/fonts/index.mjs +1 -1
  22. package/dist/{fonts-BznIea-I.mjs → fonts-C0W6TgJk.mjs} +52 -5
  23. package/dist/fonts-C0W6TgJk.mjs.map +1 -0
  24. package/dist/{index-J9CIK_nu.d.mts → index-9B8CJowc.d.mts} +2 -2
  25. package/dist/{index-J9CIK_nu.d.mts.map → index-9B8CJowc.d.mts.map} +1 -1
  26. package/dist/{index-CvDVpaKn.d.mts → index-CDoTrMs1.d.mts} +4 -4
  27. package/dist/{index-CvDVpaKn.d.mts.map → index-CDoTrMs1.d.mts.map} +1 -1
  28. package/dist/{index-BXNNJVs8.d.mts → index-CYGpSVsf.d.mts} +2 -2
  29. package/dist/{index-BXNNJVs8.d.mts.map → index-CYGpSVsf.d.mts.map} +1 -1
  30. package/dist/{index-D1zaOwEU.d.mts → index-DDEPvMww.d.mts} +520 -71
  31. package/dist/index-DDEPvMww.d.mts.map +1 -0
  32. package/dist/{index-oodg5k9K.d.mts → index-DGJp1d30.d.mts} +3 -3
  33. package/dist/{index-oodg5k9K.d.mts.map → index-DGJp1d30.d.mts.map} +1 -1
  34. package/dist/{index-fo4E7A6C.d.mts → index-DRZu3ezy.d.mts} +3 -3
  35. package/dist/{index-fo4E7A6C.d.mts.map → index-DRZu3ezy.d.mts.map} +1 -1
  36. package/dist/{index-CQcdKyxF.d.mts → index-DnWsbbuZ.d.mts} +54 -2
  37. package/dist/index-DnWsbbuZ.d.mts.map +1 -0
  38. package/dist/index.d.mts +398 -18
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +633 -57
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/preview/index.d.mts +2 -2
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-DZTbEON9.mjs → preview-BV2C4Fk6.mjs} +2 -2
  45. package/dist/{preview-DZTbEON9.mjs.map → preview-BV2C4Fk6.mjs.map} +1 -1
  46. package/dist/preview-engine/{chunk-VVLM6LZ3.mjs → chunk-6256GQFP.mjs} +1 -1
  47. package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-YG35X5R5.mjs → chunk-AWTH2WZO.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-7DIAFPQP.mjs → chunk-ECPP3UG6.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-5JD65JSJ.mjs → chunk-FGHOHCFG.mjs} +1 -1
  51. package/dist/preview-engine/chunk-IMV5SBQV.mjs +1 -0
  52. package/dist/preview-engine/chunk-IQKIHFNZ.mjs +1 -0
  53. package/dist/preview-engine/chunk-L3IEJZ5S.mjs +474 -0
  54. package/dist/preview-engine/chunk-M7NMFDJ3.mjs +3 -0
  55. package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
  56. package/dist/preview-engine/chunk-NFAGEP43.mjs +1448 -0
  57. package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-Q66QQI6N.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-JAOXXYXG.mjs → chunk-QYRDQMNB.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-XCYFPA34.mjs → chunk-RJUAM52F.mjs} +1 -1
  60. package/dist/preview-engine/chunk-VRGREB3V.mjs +1 -0
  61. package/dist/preview-engine/{chunk-AW7HNZKR.mjs → chunk-Y6HWYPKX.mjs} +1 -1
  62. package/dist/preview-engine/effects.mjs +1 -1
  63. package/dist/preview-engine/fonts.mjs +1 -1
  64. package/dist/preview-engine/framefields.mjs +27 -27
  65. package/dist/preview-engine/player.mjs +1 -1
  66. package/dist/preview-engine/renderers-5BV6JGTU.mjs +248 -0
  67. package/dist/preview-engine/renderers-7X2W6QWX.mjs +1 -0
  68. package/dist/preview-engine/renderers-EOJMPPAQ.mjs +1 -0
  69. package/dist/preview-engine/renderers-G5KQISVL.mjs +1 -0
  70. package/dist/preview-engine/renderers-GMX2ZQDG.mjs +1 -0
  71. package/dist/preview-engine/renderers-TVTQ2R74.mjs +1 -0
  72. package/dist/preview-engine/renderers-ZIMBODX6.mjs +1 -0
  73. package/dist/{program-C797QMRL.mjs → program-BmNKgzja.mjs} +281 -23
  74. package/dist/program-BmNKgzja.mjs.map +1 -0
  75. package/dist/renderer/index.d.mts +2 -2
  76. package/dist/renderer/index.mjs +2 -2
  77. package/dist/{renderer-D-4Yh-RK.mjs → renderer-1VuQTY1Z.mjs} +2 -2
  78. package/dist/{renderer-D-4Yh-RK.mjs.map → renderer-1VuQTY1Z.mjs.map} +1 -1
  79. package/dist/renderer-6oMSare3.mjs +3 -0
  80. package/dist/renderer-B1ComPb2.mjs +3 -0
  81. package/dist/{renderer-DgSO5OO0.mjs → renderer-B1YMwl2B.mjs} +1 -1
  82. package/dist/{renderer-9QCHY8Kh.mjs → renderer-B2ieylQ3.mjs} +2 -2
  83. package/dist/{renderer-9QCHY8Kh.mjs.map → renderer-B2ieylQ3.mjs.map} +1 -1
  84. package/dist/{renderer-CuqhAB4i.mjs → renderer-B8-kzZdP.mjs} +2 -2
  85. package/dist/{renderer-CuqhAB4i.mjs.map → renderer-B8-kzZdP.mjs.map} +1 -1
  86. package/dist/{renderer-Dn8v2o9L.mjs → renderer-B8UaFNqb.mjs} +3 -3
  87. package/dist/{renderer-Dn8v2o9L.mjs.map → renderer-B8UaFNqb.mjs.map} +1 -1
  88. package/dist/{renderer-DPpgBTlK.mjs → renderer-BDbTWSpP.mjs} +3 -3
  89. package/dist/{renderer-DPpgBTlK.mjs.map → renderer-BDbTWSpP.mjs.map} +1 -1
  90. package/dist/{renderer-CrVAvP92.mjs → renderer-BIIWCg_J.mjs} +3 -3
  91. package/dist/{renderer-CrVAvP92.mjs.map → renderer-BIIWCg_J.mjs.map} +1 -1
  92. package/dist/{renderer-5jfDUKd4.mjs → renderer-BJ1aTkZf.mjs} +3 -3
  93. package/dist/{renderer-5jfDUKd4.mjs.map → renderer-BJ1aTkZf.mjs.map} +1 -1
  94. package/dist/renderer-BQ5Bz5D0.mjs +3 -0
  95. package/dist/{renderer-D6Gi_h4K.mjs → renderer-BSaYG8aw.mjs} +1 -1
  96. package/dist/{renderer-2NQWaZd7.d.mts → renderer-BTdOMMEx.d.mts} +2 -2
  97. package/dist/{renderer-2NQWaZd7.d.mts.map → renderer-BTdOMMEx.d.mts.map} +1 -1
  98. package/dist/renderer-BZcn_iBl.mjs +3 -0
  99. package/dist/{renderer-DnF3aXPX.mjs → renderer-Bc04fivZ.mjs} +3 -3
  100. package/dist/{renderer-DnF3aXPX.mjs.map → renderer-Bc04fivZ.mjs.map} +1 -1
  101. package/dist/{renderer-B1UeU7lX.mjs → renderer-BfAWZziM.mjs} +193 -12
  102. package/dist/renderer-BfAWZziM.mjs.map +1 -0
  103. package/dist/{renderer-CKJb_Lky.mjs → renderer-Bfgd4N0O.mjs} +3 -3
  104. package/dist/{renderer-CKJb_Lky.mjs.map → renderer-Bfgd4N0O.mjs.map} +1 -1
  105. package/dist/{renderer-b6sZN90h.mjs → renderer-BhZZEyFX.mjs} +2 -2
  106. package/dist/{renderer-b6sZN90h.mjs.map → renderer-BhZZEyFX.mjs.map} +1 -1
  107. package/dist/{renderer-C-PfbkPu.mjs → renderer-Bhdf90Zq.mjs} +2 -2
  108. package/dist/{renderer-C-PfbkPu.mjs.map → renderer-Bhdf90Zq.mjs.map} +1 -1
  109. package/dist/renderer-Bp6sDMa6.mjs +3 -0
  110. package/dist/renderer-Bt7_sb_Y.mjs +3 -0
  111. package/dist/{renderer-CB8hMQgm.mjs → renderer-Bv21DbWy.mjs} +1 -1
  112. package/dist/{renderer-gT0ADXMW.mjs → renderer-Bv6q84TU.mjs} +2 -2
  113. package/dist/{renderer-gT0ADXMW.mjs.map → renderer-Bv6q84TU.mjs.map} +1 -1
  114. package/dist/renderer-C606ZPUn.mjs +3 -0
  115. package/dist/renderer-C9jyKn1i.mjs +3 -0
  116. package/dist/renderer-CERfcxgv.mjs +3 -0
  117. package/dist/renderer-CG5PzNkv.mjs +3 -0
  118. package/dist/{renderer-CpUbDJAV.mjs → renderer-CI7sG_cv.mjs} +2 -2
  119. package/dist/{renderer-CpUbDJAV.mjs.map → renderer-CI7sG_cv.mjs.map} +1 -1
  120. package/dist/renderer-CPoIMVdk.mjs +3 -0
  121. package/dist/{renderer-B4ecTNR7.mjs → renderer-CWTpc4ff.mjs} +2 -2
  122. package/dist/{renderer-B4ecTNR7.mjs.map → renderer-CWTpc4ff.mjs.map} +1 -1
  123. package/dist/{renderer-D3uNI10l.mjs → renderer-CXn5HAnK.mjs} +3 -3
  124. package/dist/{renderer-D3uNI10l.mjs.map → renderer-CXn5HAnK.mjs.map} +1 -1
  125. package/dist/{renderer-DCK73tcD.mjs → renderer-C_TPMHiH.mjs} +2 -2
  126. package/dist/{renderer-DCK73tcD.mjs.map → renderer-C_TPMHiH.mjs.map} +1 -1
  127. package/dist/renderer-Ca7L1EOp.mjs +3 -0
  128. package/dist/{renderer-6PqlYQjC.mjs → renderer-CaaOKMSd.mjs} +2 -2
  129. package/dist/{renderer-6PqlYQjC.mjs.map → renderer-CaaOKMSd.mjs.map} +1 -1
  130. package/dist/{renderer-DX38J6mK.mjs → renderer-CdciwwMI.mjs} +3 -3
  131. package/dist/{renderer-DX38J6mK.mjs.map → renderer-CdciwwMI.mjs.map} +1 -1
  132. package/dist/{renderer-DRpE3ZW4.mjs → renderer-CfC_aiew.mjs} +3 -3
  133. package/dist/{renderer-DRpE3ZW4.mjs.map → renderer-CfC_aiew.mjs.map} +1 -1
  134. package/dist/{renderer-BE4Ns0nw.mjs → renderer-ChdLYS-G.mjs} +3 -3
  135. package/dist/{renderer-BE4Ns0nw.mjs.map → renderer-ChdLYS-G.mjs.map} +1 -1
  136. package/dist/renderer-Cl6GkeHx.mjs +3 -0
  137. package/dist/renderer-ClcjrFyo.mjs +3 -0
  138. package/dist/{renderer-B8gTyU3w.mjs → renderer-CnXW28b9.mjs} +2 -2
  139. package/dist/{renderer-B8gTyU3w.mjs.map → renderer-CnXW28b9.mjs.map} +1 -1
  140. package/dist/{renderer-C2gnWTQZ.mjs → renderer-Ctk2zzfy.mjs} +3 -3
  141. package/dist/{renderer-C2gnWTQZ.mjs.map → renderer-Ctk2zzfy.mjs.map} +1 -1
  142. package/dist/{renderer-EmG34sT2.mjs → renderer-CtyD_Xju.mjs} +2 -2
  143. package/dist/{renderer-EmG34sT2.mjs.map → renderer-CtyD_Xju.mjs.map} +1 -1
  144. package/dist/renderer-CySUP_wk.mjs +3 -0
  145. package/dist/renderer-D2l_Odyg.mjs +3 -0
  146. package/dist/{renderer-CckJJHbM.mjs → renderer-D2nCGcjv.mjs} +2 -2
  147. package/dist/{renderer-CckJJHbM.mjs.map → renderer-D2nCGcjv.mjs.map} +1 -1
  148. package/dist/renderer-DCPCYySt.mjs +3 -0
  149. package/dist/{renderer-BgqjWI7K.mjs → renderer-DIgsilTw.mjs} +3 -3
  150. package/dist/{renderer-BgqjWI7K.mjs.map → renderer-DIgsilTw.mjs.map} +1 -1
  151. package/dist/renderer-DIkpJEOZ.mjs +3 -0
  152. package/dist/{renderer-CxQ5v4fJ.mjs → renderer-DML9qpmS.mjs} +2 -2
  153. package/dist/{renderer-CxQ5v4fJ.mjs.map → renderer-DML9qpmS.mjs.map} +1 -1
  154. package/dist/renderer-DNSXPkf_.mjs +3 -0
  155. package/dist/renderer-DP-CvZ_Z.mjs +3 -0
  156. package/dist/renderer-DeXb8R6h.mjs +3 -0
  157. package/dist/renderer-DezO-ZaP.mjs +4 -0
  158. package/dist/renderer-DhXe04fC.mjs +3 -0
  159. package/dist/{renderer-BwmZUkvd.mjs → renderer-DirxsOjq.mjs} +2 -2
  160. package/dist/{renderer-BwmZUkvd.mjs.map → renderer-DirxsOjq.mjs.map} +1 -1
  161. package/dist/{renderer-BcPpcKDI.mjs → renderer-Djlb4TLO.mjs} +3 -3
  162. package/dist/{renderer-BcPpcKDI.mjs.map → renderer-Djlb4TLO.mjs.map} +1 -1
  163. package/dist/renderer-DnH3SI7w.mjs +3 -0
  164. package/dist/{renderer-xp_J0ln7.mjs → renderer-DpGc-N3G.mjs} +3 -3
  165. package/dist/{renderer-xp_J0ln7.mjs.map → renderer-DpGc-N3G.mjs.map} +1 -1
  166. package/dist/renderer-Dpw4oi33.mjs +3 -0
  167. package/dist/{renderer-DAFyJ4dv.mjs → renderer-DxTs4Iyi.mjs} +2 -2
  168. package/dist/{renderer-DAFyJ4dv.mjs.map → renderer-DxTs4Iyi.mjs.map} +1 -1
  169. package/dist/{renderer-BXaK02qA.mjs → renderer-Dy0utCl7.mjs} +3 -3
  170. package/dist/{renderer-BXaK02qA.mjs.map → renderer-Dy0utCl7.mjs.map} +1 -1
  171. package/dist/renderer-Md-ytU0v.mjs +3 -0
  172. package/dist/{renderer-BTYncYDf.mjs → renderer-RKsXlF_0.mjs} +43 -43
  173. package/dist/{renderer-BTYncYDf.mjs.map → renderer-RKsXlF_0.mjs.map} +1 -1
  174. package/dist/renderer-U-bhWO9Q.mjs +3 -0
  175. package/dist/{renderer-CV8diddR.mjs → renderer-WSGuj_V6.mjs} +2 -2
  176. package/dist/{renderer-CV8diddR.mjs.map → renderer-WSGuj_V6.mjs.map} +1 -1
  177. package/dist/{renderer-_bygZSKk.mjs → renderer-bsWnRNpJ.mjs} +2 -2
  178. package/dist/{renderer-_bygZSKk.mjs.map → renderer-bsWnRNpJ.mjs.map} +1 -1
  179. package/dist/{renderer-lq4n1hSS.mjs → renderer-cgxO2xN6.mjs} +3 -3
  180. package/dist/{renderer-lq4n1hSS.mjs.map → renderer-cgxO2xN6.mjs.map} +1 -1
  181. package/dist/{renderer-zvtpCnqy.mjs → renderer-dncoIVdd.mjs} +1 -1
  182. package/dist/{renderer-BpJgfBQ8.mjs → renderer-kwmlLQOO.mjs} +3 -3
  183. package/dist/{renderer-BpJgfBQ8.mjs.map → renderer-kwmlLQOO.mjs.map} +1 -1
  184. package/dist/{renderer--vY6O19V.mjs → renderer-vqkKWqa5.mjs} +2 -2
  185. package/dist/{renderer--vY6O19V.mjs.map → renderer-vqkKWqa5.mjs.map} +1 -1
  186. package/dist/renderer-zA5okHds.mjs +3 -0
  187. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs → renderers-CP8CFWDs-DwQTx8S7.mjs} +3 -3
  188. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs.map → renderers-CP8CFWDs-DwQTx8S7.mjs.map} +1 -1
  189. package/dist/signals/index.d.mts +5 -5
  190. package/dist/signals/index.mjs +6 -6
  191. package/dist/{signals-CsxqD2AA.mjs → signals-Bv1OweKd.mjs} +3 -3
  192. package/dist/{signals-CsxqD2AA.mjs.map → signals-Bv1OweKd.mjs.map} +1 -1
  193. package/package.json +55 -55
  194. package/dist/dist-B9Afsv83.mjs.map +0 -1
  195. package/dist/dist-DgfykO99.mjs.map +0 -1
  196. package/dist/fonts-BznIea-I.mjs.map +0 -1
  197. package/dist/index-CQcdKyxF.d.mts.map +0 -1
  198. package/dist/index-D1zaOwEU.d.mts.map +0 -1
  199. package/dist/preview-engine/chunk-BUWK5RJ4.mjs +0 -997
  200. package/dist/preview-engine/chunk-CNSHAFEA.mjs +0 -1
  201. package/dist/preview-engine/chunk-OF75EHTX.mjs +0 -418
  202. package/dist/preview-engine/chunk-UC7CSW2A.mjs +0 -1
  203. package/dist/preview-engine/chunk-WQ7BFSKF.mjs +0 -3
  204. package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
  205. package/dist/preview-engine/renderers-32PIFHPS.mjs +0 -1
  206. package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +0 -1
  207. package/dist/preview-engine/renderers-CHJWUJVI.mjs +0 -1
  208. package/dist/preview-engine/renderers-CI2GXWLP.mjs +0 -1
  209. package/dist/preview-engine/renderers-EE2GFG7J.mjs +0 -1
  210. package/dist/preview-engine/renderers-LTNTQLWE.mjs +0 -248
  211. package/dist/preview-engine/renderers-UGZUPONY.mjs +0 -1
  212. package/dist/program-C797QMRL.mjs.map +0 -1
  213. package/dist/renderer-3uTfN95I.mjs +0 -3
  214. package/dist/renderer-B1UeU7lX.mjs.map +0 -1
  215. package/dist/renderer-B5GslTP-.mjs +0 -3
  216. package/dist/renderer-BUIWeIKQ.mjs +0 -3
  217. package/dist/renderer-B_LfC88A.mjs +0 -3
  218. package/dist/renderer-B_zmicsE.mjs +0 -3
  219. package/dist/renderer-BtNxtXkR.mjs +0 -3
  220. package/dist/renderer-C-sZSHtf.mjs +0 -3
  221. package/dist/renderer-C1zifktw.mjs +0 -3
  222. package/dist/renderer-CCt2XTSM.mjs +0 -3
  223. package/dist/renderer-CL3evUmF.mjs +0 -3
  224. package/dist/renderer-CMXcaArD.mjs +0 -3
  225. package/dist/renderer-CW9D5zCP.mjs +0 -3
  226. package/dist/renderer-CjY77sB_.mjs +0 -3
  227. package/dist/renderer-D1R7vBUl.mjs +0 -3
  228. package/dist/renderer-D5yawxtJ.mjs +0 -3
  229. package/dist/renderer-DC8jr1Ay.mjs +0 -3
  230. package/dist/renderer-DCv-Abvn.mjs +0 -4
  231. package/dist/renderer-DPLFhzaV.mjs +0 -3
  232. package/dist/renderer-DVsF2FDr.mjs +0 -3
  233. package/dist/renderer-DetDm3ep.mjs +0 -3
  234. package/dist/renderer-DhMhJh_G.mjs +0 -3
  235. package/dist/renderer-DhQld4Qt.mjs +0 -3
  236. package/dist/renderer-Dn3rc3ah.mjs +0 -3
  237. package/dist/renderer-Dw9LxE2f.mjs +0 -3
  238. package/dist/renderer-HvrQZw5E.mjs +0 -3
  239. package/dist/renderer-QdJE56ts.mjs +0 -3
  240. package/dist/renderer-euGyUN2O.mjs +0 -3
  241. package/dist/renderer-p3SmBFP9.mjs +0 -3
@@ -1848,7 +1848,157 @@ declare const TransitionSchema: z.ZodObject<{
1848
1848
  durationFrames: z.ZodNumber;
1849
1849
  }, z.core.$strip>;
1850
1850
  type TransitionType = z.infer<typeof TransitionTypeSchema>;
1851
- type Transition = z.infer<typeof TransitionSchema>;
1851
+ //#endregion
1852
+ //#region src/utils/color.d.ts
1853
+ /**
1854
+ * CSS color parsing, perceptual mixing and authoring helpers, shared by the
1855
+ * schema evaluator (color tracks), the GPU renderers (fills) and the public
1856
+ * `Color` helper. Pure and dependency-free.
1857
+ *
1858
+ * Every helper returns a CSS string any color prop accepts: `#rrggbb`, or
1859
+ * `#rrggbbaa` when not fully opaque.
1860
+ */
1861
+ /** Straight (non-premultiplied) sRGB, each channel 0..1. */
1862
+ type Rgba = [r: number, g: number, b: number, a: number];
1863
+ /** sRGB (0..1) → OKLab [L, a, b]. */
1864
+ declare function rgbToOklab(r: number, g: number, b: number): [number, number, number];
1865
+ /** OKLab → sRGB (0..1, clamped to gamut). */
1866
+ declare function oklabToRgb(L: number, a: number, b: number): [number, number, number];
1867
+ /**
1868
+ * Parses any CSS color this engine accepts: hex (3/4/6/8), `rgb()`/`rgba()`,
1869
+ * `hsl()`/`hsla()`, `oklch()`, `oklab()` (comma or space syntax, `/ alpha`)
1870
+ * and common named colors. Returns `null` when the string is not a color.
1871
+ */
1872
+ declare function parseCssColor(input: string): Rgba | null;
1873
+ /** Formats straight sRGB as `#rrggbb` (or `#rrggbbaa` when translucent). */
1874
+ declare function formatHex([r, g, b, a]: Rgba): string;
1875
+ /**
1876
+ * Mixes two colors perceptually (in OKLab), `t` = 0 → `a`, 1 → `b`.
1877
+ * Midpoints keep their lightness and saturation instead of going muddy
1878
+ * the way a plain sRGB lerp does.
1879
+ */
1880
+ declare function mixColors(a: string, b: string, t: number): string;
1881
+ interface ColorStopLike {
1882
+ offset: number;
1883
+ color: string;
1884
+ }
1885
+ /** Samples a multi-stop gradient (stops in any order) at `t` ∈ [0, 1]. */
1886
+ declare function sampleColorStops(stops: readonly (string | ColorStopLike)[], t: number): string;
1887
+ /** Bare color strings become evenly spaced stops; result is sorted by offset. */
1888
+ declare function normalizeColorStops(stops: readonly (string | ColorStopLike)[]): ColorStopLike[];
1889
+ /**
1890
+ * Authoring helpers for colors. Every function returns a hex string, so the
1891
+ * result drops straight into any color prop or keyframe.
1892
+ *
1893
+ * ```ts
1894
+ * Color.oklch(0.7, 0.15, 250) // perceptual: equal L reads equally bright
1895
+ * Color.hsl(212, 0.95, 0.74)
1896
+ * Color.mix("#ff5a1f", "#1f6bff", 0.5) // OKLab, no muddy midpoint
1897
+ * const wave = Color.ramp(["#3b82f6", "#8b5cf6", "#ec4899"]);
1898
+ * wave(0.5) // sample a gradient
1899
+ * Color.lighten("#ff5a1f", 0.1), Color.alpha("#000", 0.4)
1900
+ * ```
1901
+ */
1902
+ declare const Color$1: {
1903
+ /** Parses any supported CSS color to straight sRGB 0..1, or null. */
1904
+ readonly parse: typeof parseCssColor;
1905
+ /** Normalizes any supported CSS color to hex. */
1906
+ readonly hex: (c: string) => string;
1907
+ /** `r, g, b` in 0..255, `a` in 0..1. */
1908
+ readonly rgb: (r: number, g: number, b: number, a?: number) => string;
1909
+ /** Hue in degrees; saturation and lightness in 0..1. */
1910
+ readonly hsl: (h: number, s: number, l: number, a?: number) => string;
1911
+ /**
1912
+ * Perceptual lightness 0..1, chroma ~0..0.37, hue in degrees. Colors with
1913
+ * the same `l` look equally bright, which makes balanced palettes easy.
1914
+ */
1915
+ readonly oklch: (l: number, c: number, h: number, a?: number) => string;
1916
+ /** Perceptual (OKLab) mix; `t` = 0 → `a`, 1 → `b`. */
1917
+ readonly mix: typeof mixColors;
1918
+ /** A gradient sampler: `Color.ramp(["#f00", "#00f"])(0.25)`. */
1919
+ readonly ramp: (stops: readonly (string | ColorStopLike)[]) => (t: number) => string;
1920
+ /** `n` evenly spaced swatches along a gradient. */
1921
+ readonly steps: (stops: readonly (string | ColorStopLike)[], n: number) => string[];
1922
+ /** Raises perceptual lightness by `amount` (0..1). */
1923
+ readonly lighten: (c: string, amount: number) => string;
1924
+ readonly darken: (c: string, amount: number) => string;
1925
+ /** Scales chroma: 0 = grey, 1 = unchanged, >1 = more vivid. */
1926
+ readonly saturate: (c: string, factor: number) => string;
1927
+ /** Rotates hue by `degrees`, keeping perceptual lightness. */
1928
+ readonly rotate: (c: string, degrees: number) => string;
1929
+ /** Replaces alpha. */
1930
+ readonly alpha: (c: string, a: number) => string;
1931
+ /** WCAG relative-luminance contrast ratio (1..21). ≥ 4.5 for body text. */
1932
+ readonly contrast: (a: string, b: string) => number;
1933
+ /** Black or white, whichever reads better on `background`. */
1934
+ readonly readableOn: (background: string) => string;
1935
+ };
1936
+ //#endregion
1937
+ //#region src/utils/gradient.d.ts
1938
+ type GradientType = "linear" | "radial" | "conic";
1939
+ interface ParsedGradientStop {
1940
+ /** 0..1 along the gradient line / radius / turn. */
1941
+ offset: number;
1942
+ /** Straight sRGB 0..1. */
1943
+ color: Rgba;
1944
+ }
1945
+ interface ParsedGradient {
1946
+ type: GradientType;
1947
+ /** Linear: CSS angle in degrees (0 = to top, 90 = to right, 180 = to bottom). */
1948
+ angle: number;
1949
+ /** Radial / conic center as a fraction of the box (0.5, 0.5 = middle). */
1950
+ center: [number, number];
1951
+ /** Radial: circle or ellipse sized to the farthest corner, or explicit px radii. */
1952
+ shape: "circle" | "ellipse";
1953
+ radius?: [number, number];
1954
+ /** Conic: start angle in degrees (0 = top, clockwise). */
1955
+ from: number;
1956
+ stops: ParsedGradientStop[];
1957
+ }
1958
+ /** Gradients this renderer draws at most this many stops (extra ones are resampled). */
1959
+ declare const MAX_GRADIENT_STOPS = 8;
1960
+ declare function isCssGradient(value: unknown): value is string;
1961
+ /** Parses a CSS gradient string; `null` when it is not one this engine draws. */
1962
+ declare function parseCssGradient(input: string): ParsedGradient | null;
1963
+ /** Up to MAX_GRADIENT_STOPS stops: longer lists are resampled evenly. */
1964
+ declare function limitGradientStops(stops: ParsedGradientStop[]): ParsedGradientStop[];
1965
+ /**
1966
+ * Stops as OKLab + alpha for the GPU. A transparent stop borrows its
1967
+ * neighbor's color, so fading to `transparent` keeps the hue instead of
1968
+ * passing through grey (CSS premultiplied interpolation does the same).
1969
+ */
1970
+ declare function gradientStopsToOklab(stops: ParsedGradientStop[]): Array<[number, number, number, number]>;
1971
+ type StopInput = string | {
1972
+ color: string;
1973
+ offset: number;
1974
+ };
1975
+ /**
1976
+ * Writes CSS gradient strings for `background` / `fill`:
1977
+ *
1978
+ * ```ts
1979
+ * Layer.box({ background: Gradient.linear(["#ff5a1f", "#7c3aed"], 135) })
1980
+ * Layer.shape("circle", { fill: Gradient.radial(["#fff", "transparent"]) })
1981
+ * Gradient.conic(["red", "yellow", "lime", "aqua", "blue", "magenta", "red"])
1982
+ * ```
1983
+ * Plain strings work too: `"linear-gradient(to right, #000, #fff 80%)"`.
1984
+ */
1985
+ declare const Gradient: {
1986
+ /** `angle` in degrees: 0 = bottom→top, 90 = left→right, 180 = top→bottom (default). */
1987
+ readonly linear: (stops: readonly StopInput[], angle?: number) => string;
1988
+ /** Ellipse to the farthest corner, centered unless `at` ([0..1, 0..1]) says otherwise. */
1989
+ readonly radial: (stops: readonly StopInput[], options?: {
1990
+ at?: [number, number];
1991
+ circle?: boolean;
1992
+ radius?: number;
1993
+ }) => string;
1994
+ /** A sweep around `at`, starting at `from` degrees (0 = top, clockwise). */
1995
+ readonly conic: (stops: readonly StopInput[], options?: {
1996
+ from?: number;
1997
+ at?: [number, number];
1998
+ }) => string;
1999
+ readonly parse: typeof parseCssGradient;
2000
+ readonly is: typeof isCssGradient;
2001
+ };
1852
2002
  //#endregion
1853
2003
  //#region src/utils/is-equal.d.ts
1854
2004
  /**
@@ -2205,6 +2355,7 @@ declare class QuadPipeline {
2205
2355
  type ShapeFillType = "solid" | "linear" | "radial" | "none";
2206
2356
  interface ShapeFillConfig {
2207
2357
  type?: ShapeFillType;
2358
+ /** A color, or a CSS gradient string (linear/radial/conic, any stops) laid over the shape's bounds. */
2208
2359
  color?: Color | string;
2209
2360
  color2?: Color | string;
2210
2361
  startX?: number;
@@ -2225,6 +2376,8 @@ declare class ShapeFillPipeline {
2225
2376
  constructor(device: GPUDevice, format: GPUTextureFormat);
2226
2377
  resetPools(): void;
2227
2378
  draw(pass: GPURenderPassEncoder, transformStack: TransformStack, vertices: Float32Array, fill: ShapeFillConfig, bounds: Rect, surfaceWidth: number, surfaceHeight: number, opts?: DrawOpts): void;
2379
+ /** The `type: "linear" | "radial"` two-color fill (color → color2). */
2380
+ private packTwoColorGradient;
2228
2381
  destroy(): void;
2229
2382
  }
2230
2383
  //#endregion
@@ -2262,7 +2415,9 @@ interface Color {
2262
2415
  b: number;
2263
2416
  a: number;
2264
2417
  }
2265
- type BlendMode = "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity" | "mask-in" | "mask-out" | "source-over" | "source-in" | "source-out" | "source-atop" | "destination-over" | "destination-in" | "destination-out" | "destination-atop" | "lighter" | "copy" | "xor";
2418
+ type BlendMode = "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity" | "mask-in" | "mask-out" | "source-over" | "source-in" | "source-out" | "source-atop" | "destination-over" | "destination-in" | "destination-out" | "destination-atop" | "lighter" | "copy" | "xor"
2419
+ /** Keeps the base where the overlay is bright (luma matte). */ | "luma-in"
2420
+ /** Keeps the base where the overlay is dark (inverted luma matte). */ | "luma-out";
2266
2421
  interface DrawOpts {
2267
2422
  opacity?: number;
2268
2423
  blendMode?: GPUBlendFactor | BlendMode;
@@ -2343,7 +2498,7 @@ declare class Renderer2D {
2343
2498
  *
2344
2499
  * Supports:
2345
2500
  * - Hex: #RGB, #RGBA, #RRGGBB, #RRGGBBAA
2346
- * - Functional: rgb(r,g,b), rgba(r,g,b,a)
2501
+ * - Functional: rgb()/rgba(), hsl()/hsla(), oklch(), oklab() (comma or space syntax)
2347
2502
  * - Named: black, white, red, green, blue, yellow, transparent, etc.
2348
2503
  * - Color objects pass through unchanged.
2349
2504
  *
@@ -2953,6 +3108,123 @@ declare const Camera3D: {
2953
3108
  isBoxInFrustum(min: Vec3, max: Vec3, planes: FrustumPlanes): boolean;
2954
3109
  };
2955
3110
  //#endregion
3111
+ //#region src/math3d/environment3d.d.ts
3112
+ /**
3113
+ * "neutral" (default, Khronos PBR Neutral): colors as authored, highlights
3114
+ * rolled off: right for products, brands and UI. "agx": filmic, desaturates
3115
+ * hot highlights gracefully. "aces": punchy film contrast, shifts hues.
3116
+ */
3117
+ type ToneMapping = "neutral" | "agx" | "aces" | "none";
3118
+ type EnvironmentPreset = "studio" | "soft" | "sunset" | "night" | "neutral";
3119
+ interface Environment3DFog {
3120
+ /** Display color surfaces fade into; match the background for a seamless horizon. */
3121
+ color: string;
3122
+ /** Distance from the camera (px) where fog starts. */
3123
+ start: number;
3124
+ /** Distance where fog reaches `opacity`. */
3125
+ end: number;
3126
+ /** Max fog coverage 0..1. Default 1. */
3127
+ opacity?: number;
3128
+ }
3129
+ interface Environment3DOptions {
3130
+ preset?: EnvironmentPreset;
3131
+ /** Overrides the preset's sky (above), horizon and ground colors. */
3132
+ top?: string;
3133
+ horizon?: string;
3134
+ bottom?: string;
3135
+ /** Scales the whole environment's light. Default 1. */
3136
+ intensity?: number;
3137
+ /** Strength of the studio softboxes reflected in glossy surfaces. */
3138
+ softboxes?: number;
3139
+ /** Turns the environment around the vertical axis, degrees. */
3140
+ rotation?: number;
3141
+ /** Exposure in stops: +1 doubles brightness. Default 0. */
3142
+ exposure?: number;
3143
+ /** Default "neutral". */
3144
+ toneMapping?: ToneMapping;
3145
+ fog?: Environment3DFog;
3146
+ }
3147
+ /** Where a shadow-casting light's depth map lives, for the lit shaders. */
3148
+ interface ShadowUniformInfo {
3149
+ /** Light view-projection (world → shadow clip). */
3150
+ matrix: ArrayLike<number>;
3151
+ /** Index of the casting light among the packed (non-ambient) lights. */
3152
+ lightIndex: number;
3153
+ /** Shadow map size in texels. */
3154
+ mapSize: number;
3155
+ /** Blur radius in texels. */
3156
+ softness: number;
3157
+ /** Depth bias in NDC. */
3158
+ bias: number;
3159
+ /** Pushes the lookup along the normal, world px. */
3160
+ normalOffset: number;
3161
+ /** 0 = invisible shadows, 1 = fully dark. */
3162
+ darkness: number;
3163
+ }
3164
+ //#endregion
3165
+ //#region src/math3d/light3d.d.ts
3166
+ type LightKind = "ambient" | "directional" | "point" | "spot";
3167
+ interface Light3DOptions {
3168
+ id?: string;
3169
+ lightType?: LightKind;
3170
+ type?: LightKind;
3171
+ color?: string | [number, number, number] | [number, number, number, number] | {
3172
+ r: number;
3173
+ g: number;
3174
+ b: number;
3175
+ a?: number;
3176
+ } | unknown;
3177
+ intensity?: number;
3178
+ x?: number;
3179
+ y?: number;
3180
+ z?: number;
3181
+ position?: [number, number, number];
3182
+ targetX?: number;
3183
+ targetY?: number;
3184
+ targetZ?: number;
3185
+ target?: [number, number, number];
3186
+ direction?: [number, number, number];
3187
+ radius?: number;
3188
+ decay?: number;
3189
+ angle?: number;
3190
+ penumbra?: number;
3191
+ /** Directional or spot: render a shadow map (the first such light wins). */
3192
+ castShadow?: boolean;
3193
+ /** Shadow edge blur in shadow-map texels (default 2). */
3194
+ shadowSoftness?: number;
3195
+ /** 0..1, how dark shadows get (default 1). */
3196
+ shadowDarkness?: number;
3197
+ }
3198
+ interface GPULightData {
3199
+ /** xyz = position, w = type (0=ambient, 1=directional, 2=point, 3=spot) */
3200
+ posType: [number, number, number, number];
3201
+ /** xyz = normalized direction, w = radius */
3202
+ dirRadius: [number, number, number, number];
3203
+ /** rgb = linear color, w = intensity */
3204
+ colorIntensity: [number, number, number, number];
3205
+ /** x = cos(outer), y = cos(inner), z = decay, w = 0 */
3206
+ spotParams: [number, number, number, number];
3207
+ }
3208
+ declare const Light3D: {
3209
+ /**
3210
+ * Computes the 3x3 normal matrix (stored in 4x4 layout) from a 4x4 Model matrix.
3211
+ * Evaluates N = (M^-1)^T to preserve true orthogonal surface normals under non-uniform scaling.
3212
+ */
3213
+ computeNormalMatrix(modelMatrix: Mat4): Mat4;
3214
+ /**
3215
+ * Converts high-level light options into uniform data ready for GPU packing.
3216
+ */
3217
+ processLight(opt: Light3DOptions): GPULightData;
3218
+ /**
3219
+ * Packs active scene lights into a Float32Array matching WGSL LightsUniforms layout.
3220
+ */
3221
+ packLightsUniforms(lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null): Float32Array;
3222
+ /** Index (among non-ambient lights) of the light that should cast shadows, or -1. */
3223
+ shadowCasterIndex(lights: Light3DOptions[]): number;
3224
+ /** Fills params.zw and the appended physical-shading block (offset 136 on). */
3225
+ packPhysicalBlock(buffer: Float32Array, lights: Light3DOptions[], environment?: Environment3DOptions | null, shadow?: ShadowUniformInfo | null): void;
3226
+ };
3227
+ //#endregion
2956
3228
  //#region src/math3d/path3d.d.ts
2957
3229
  interface Path3DPoint {
2958
3230
  /** Position in 3D world space [x, y, z] */
@@ -3046,59 +3318,6 @@ declare class Path3D {
3046
3318
  static circle(options: CirclePathOptions): Path3D;
3047
3319
  }
3048
3320
  //#endregion
3049
- //#region src/math3d/light3d.d.ts
3050
- type LightKind = "ambient" | "directional" | "point" | "spot";
3051
- interface Light3DOptions {
3052
- id?: string;
3053
- lightType?: LightKind;
3054
- type?: LightKind;
3055
- color?: string | [number, number, number] | [number, number, number, number] | {
3056
- r: number;
3057
- g: number;
3058
- b: number;
3059
- a?: number;
3060
- } | unknown;
3061
- intensity?: number;
3062
- x?: number;
3063
- y?: number;
3064
- z?: number;
3065
- position?: [number, number, number];
3066
- targetX?: number;
3067
- targetY?: number;
3068
- targetZ?: number;
3069
- target?: [number, number, number];
3070
- direction?: [number, number, number];
3071
- radius?: number;
3072
- decay?: number;
3073
- angle?: number;
3074
- penumbra?: number;
3075
- }
3076
- interface GPULightData {
3077
- /** xyz = position, w = type (0=ambient, 1=directional, 2=point, 3=spot) */
3078
- posType: [number, number, number, number];
3079
- /** xyz = normalized direction, w = radius */
3080
- dirRadius: [number, number, number, number];
3081
- /** rgb = linear color, w = intensity */
3082
- colorIntensity: [number, number, number, number];
3083
- /** x = cos(outer), y = cos(inner), z = decay, w = 0 */
3084
- spotParams: [number, number, number, number];
3085
- }
3086
- declare const Light3D: {
3087
- /**
3088
- * Computes the 3x3 normal matrix (stored in 4x4 layout) from a 4x4 Model matrix.
3089
- * Evaluates N = (M^-1)^T to preserve true orthogonal surface normals under non-uniform scaling.
3090
- */
3091
- computeNormalMatrix(modelMatrix: Mat4): Mat4;
3092
- /**
3093
- * Converts high-level light options into uniform data ready for GPU packing.
3094
- */
3095
- processLight(opt: Light3DOptions): GPULightData;
3096
- /**
3097
- * Packs active scene lights into a Float32Array matching WGSL LightsUniforms layout.
3098
- */
3099
- packLightsUniforms(lights: Light3DOptions[]): Float32Array;
3100
- };
3101
- //#endregion
3102
3321
  //#region src/loaders/types.d.ts
3103
3322
  interface Mesh3DData {
3104
3323
  id?: string;
@@ -3146,6 +3365,20 @@ interface Material3D {
3146
3365
  shading?: "lit" | "unlit" | "toon";
3147
3366
  /** Toon shading: the color multiplier of the shadowed side. */
3148
3367
  shadeColor?: [number, number, number];
3368
+ /** Linear-ish emissive color 0..1 (glTF emissiveFactor). */
3369
+ emissive?: [number, number, number];
3370
+ /** Emissive multiplier (glTF KHR_materials_emissive_strength). */
3371
+ emissiveStrength?: number;
3372
+ /** Encoded tangent-space normal map (glTF convention: +Y up / OpenGL). */
3373
+ normalTextureBuffer?: Uint8Array;
3374
+ normalScale?: number;
3375
+ /** Encoded map: G = roughness, B = metallic (glTF). */
3376
+ metallicRoughnessTextureBuffer?: Uint8Array;
3377
+ /** Encoded map: R = ambient occlusion. */
3378
+ occlusionTextureBuffer?: Uint8Array;
3379
+ occlusionStrength?: number;
3380
+ /** Encoded emissive color map (multiplies `emissive`). */
3381
+ emissiveTextureBuffer?: Uint8Array;
3149
3382
  }
3150
3383
  /** A scene-graph node: its rest transform and parent (glTF node semantics). */
3151
3384
  interface ModelNode3D {
@@ -3262,6 +3495,34 @@ declare class AudioMeshDeformPipeline {
3262
3495
  destroy(): void;
3263
3496
  }
3264
3497
  //#endregion
3498
+ //#region src/renderer3d/bloom-pipeline.d.ts
3499
+ /**
3500
+ * Bloom: light that spills past bright pixels, the way a lens and film do.
3501
+ *
3502
+ * A mip chain at half, quarter, … resolution: a soft-knee threshold picks the
3503
+ * bright parts (emissive surfaces, hot speculars), 13-tap downsamples spread
3504
+ * them, tent-filtered upsamples add every level back up (wide and tight glow
3505
+ * together), and the result is added over the source. Works on premultiplied
3506
+ * color: glow over a transparent pixel raises its alpha, so a bloomed 3D
3507
+ * layer still glows when composited over the 2D layers below.
3508
+ */
3509
+ interface BloomOptions {
3510
+ /** Glow strength. Default 0.2. */
3511
+ intensity?: number;
3512
+ /**
3513
+ * Brightness where glow starts. With an HDR source (3D scenes) it is scene
3514
+ * radiance, default 2.5 = only light well past white (emissive ≳ 3,
3515
+ * hot speculars). Without one it is display brightness, default 0.85.
3516
+ */
3517
+ threshold?: number;
3518
+ /** Soft transition below the threshold, 0..1. Default 0.4. */
3519
+ knee?: number;
3520
+ /** Glow spread: mip levels used, 1..8. Default 6. */
3521
+ radius?: number;
3522
+ /** Tints the glow (CSS-free rgb 0..1). Default white. */
3523
+ tint?: [number, number, number];
3524
+ }
3525
+ //#endregion
3265
3526
  //#region src/renderer3d/glass-pipeline.d.ts
3266
3527
  /**
3267
3528
  * @file renderer3d/glass-pipeline.ts
@@ -3303,9 +3564,39 @@ declare class GlassPipeline {
3303
3564
  draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, backdropTexture: GPUTexture, sampler: GPUSampler, data: GlassUniformData): void;
3304
3565
  destroy(): void;
3305
3566
  }
3567
+ //#endregion
3568
+ //#region src/renderer3d/surface-params.d.ts
3569
+ /** Physically based surface inputs every 3D draw (quad, text, mesh) accepts. */
3570
+ interface SurfaceParams {
3571
+ /** Microsurface roughness 0 (mirror) .. 1 (chalk). Physical scenes default to 0.5. */
3572
+ roughness?: number;
3573
+ /** 0 = dielectric (plastic, paint, wood), 1 = metal. */
3574
+ metallic?: number;
3575
+ /** Light the surface gives off (a CSS color), added on top of lighting. */
3576
+ emissive?: string | Color | [number, number, number];
3577
+ /** Emissive multiplier; values above 1 glow past white and feed bloom. Default 1. */
3578
+ emissiveIntensity?: number;
3579
+ /** Casts into a `castShadow` light's shadow map (meshes default on, quads off). */
3580
+ castShadow?: boolean;
3581
+ }
3582
+ /** Floats appended to each 3D model uniform block: pbr vec4 + emissive vec4. */
3583
+
3306
3584
  //#endregion
3307
3585
  //#region src/renderer3d/mesh3d-pipeline.d.ts
3308
- interface MeshUniformData {
3586
+ /** A mesh material's extra maps (glTF conventions); absent maps are neutral. */
3587
+ interface MeshMaterialMaps {
3588
+ /** Tangent-space normal map (+Y up). */
3589
+ normal?: GPUTexture;
3590
+ normalScale?: number;
3591
+ /** G = roughness, B = metallic; multiplies the roughness / metallic factors. */
3592
+ metallicRoughness?: GPUTexture;
3593
+ /** R = ambient occlusion. */
3594
+ occlusion?: GPUTexture;
3595
+ occlusionStrength?: number;
3596
+ /** Multiplies the emissive color. */
3597
+ emissive?: GPUTexture;
3598
+ }
3599
+ interface MeshUniformData extends SurfaceParams {
3309
3600
  modelMatrix: Float32Array | number[];
3310
3601
  normalMatrix?: Float32Array | number[];
3311
3602
  colorTint?: [number, number, number, number];
@@ -3315,8 +3606,12 @@ interface MeshUniformData {
3315
3606
  isSkinned?: boolean;
3316
3607
  skinningMatrices?: Float32Array;
3317
3608
  material?: "lit" | "unlit" | "toon";
3609
+ /** Screen-space track matte: the mesh shows where this texture's alpha does. */
3610
+ matte?: GPUTexture;
3318
3611
  /** Toon shading: the shadowed side's color multiplier. */
3319
3612
  shadeColor?: [number, number, number];
3613
+ /** Normal / metallic-roughness / occlusion / emissive maps. */
3614
+ maps?: MeshMaterialMaps;
3320
3615
  /** Texels with alpha below this are discarded (glTF MASK). */
3321
3616
  alphaCutoff?: number;
3322
3617
  shininess?: number;
@@ -3335,6 +3630,9 @@ declare class Mesh3DPipeline {
3335
3630
  private device;
3336
3631
  pipelineSingle: GPURenderPipeline;
3337
3632
  pipelineMrt: GPURenderPipeline;
3633
+ private bloomVariants;
3634
+ /** Depth only (skinning included): draws a caster into a shadow map. */
3635
+ pipelineShadow: GPURenderPipeline;
3338
3636
  cameraLayout: GPUBindGroupLayout;
3339
3637
  modelLayout: GPUBindGroupLayout;
3340
3638
  textureLayout: GPUBindGroupLayout;
@@ -3342,12 +3640,17 @@ declare class Mesh3DPipeline {
3342
3640
  private modelPool;
3343
3641
  private skinningPool;
3344
3642
  defaultWhiteTexture: GPUTexture;
3643
+ /** (0.5, 0.5, 1): an unperturbed tangent-space normal. */
3644
+ private flatNormalTexture;
3345
3645
  private defaultSkinningBuffer;
3346
3646
  private modelData;
3347
3647
  constructor(device: GPUDevice, format: GPUTextureFormat, depthFormat?: GPUTextureFormat, cameraLayout?: GPUBindGroupLayout, lightsLayout?: GPUBindGroupLayout, /** Samples per pixel of the pass this draws into (MSAA). */
3348
3648
  sampleCount?: number);
3349
3649
  resetPools(): void;
3350
- draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, texture: GPUTexture | undefined, sampler: GPUSampler, data: MeshUniformData, useMrt?: boolean): void;
3650
+ private packModel;
3651
+ draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, texture: GPUTexture | undefined, sampler: GPUSampler, data: MeshUniformData, useMrt?: boolean, useBloom?: boolean): void;
3652
+ /** Draws the mesh into a shadow map (`lightCameraBindGroup` holds the light's view-projection). */
3653
+ drawShadow(pass: GPURenderPassEncoder, lightCameraBindGroup: GPUBindGroup, meshBuffers: GPUMeshBuffers, data: MeshUniformData): void;
3351
3654
  destroy(): void;
3352
3655
  }
3353
3656
  //#endregion
@@ -3376,8 +3679,55 @@ declare class MotionBlurPipeline {
3376
3679
  destroy(): void;
3377
3680
  }
3378
3681
  //#endregion
3379
- //#region src/renderer3d/quad3d-pipeline.d.ts
3380
- interface ModelUniformData {
3682
+ //#region src/renderer3d/primitive-geometry.d.ts
3683
+ /**
3684
+ * Procedural solids built as real meshes (one draw call each), centered on
3685
+ * the origin in the 3D world's convention: x right, y down, z away from a
3686
+ * default camera. "Top" is therefore -y.
3687
+ */
3688
+ interface PrimitiveSurface {
3689
+ /** Diffuse color (hex or rgb()). Default white, so a node `color` tints it. */
3690
+ color?: string;
3691
+ material?: "lit" | "unlit" | "toon";
3692
+ shininess?: number;
3693
+ roughness?: number;
3694
+ metallic?: number;
3695
+ }
3696
+ interface RoundedBoxGeometryOptions extends PrimitiveSurface {
3697
+ type: "roundedBox";
3698
+ width: number;
3699
+ height: number;
3700
+ depth: number;
3701
+ /** Corner and edge radius, clamped to half the smallest side. Default 0 (a sharp box). */
3702
+ radius?: number;
3703
+ /** Segments per rounded quarter (default 4). */
3704
+ segments?: number;
3705
+ /**
3706
+ * Scale of the top (-y) face against the bottom along x and z: 0.9 draws
3707
+ * a keycap-like frustum. Default 1.
3708
+ */
3709
+ taper?: number;
3710
+ }
3711
+ interface SphereGeometryOptions extends PrimitiveSurface {
3712
+ type: "sphere";
3713
+ radius: number;
3714
+ /** Segments around the equator (default 32); rings are half of it. */
3715
+ segments?: number;
3716
+ }
3717
+ interface CylinderGeometryOptions extends PrimitiveSurface {
3718
+ type: "cylinder";
3719
+ /** Radius of the top (-y) cap; defaults to `radius`. */
3720
+ radiusTop?: number;
3721
+ /** Radius of the bottom (+y) cap; defaults to `radius`. */
3722
+ radiusBottom?: number;
3723
+ radius?: number;
3724
+ height: number;
3725
+ /** Segments around (default 32). */
3726
+ segments?: number;
3727
+ /** Leave the caps off (a tube). */
3728
+ openEnded?: boolean;
3729
+ }
3730
+ interface ModelUniformData extends SurfaceParams {
3381
3731
  modelMatrix: Float32Array | number[];
3382
3732
  normalMatrix?: Float32Array | number[];
3383
3733
  colorTint?: [number, number, number, number];
@@ -3391,19 +3741,24 @@ interface ModelUniformData {
3391
3741
  /** Fraction of the texture the layer covers, [u, v] (default the whole texture) */
3392
3742
  textureExtent?: [number, number];
3393
3743
  material?: "lit" | "unlit";
3744
+ /** Screen-space track matte: the layer shows where this texture's alpha does. */
3745
+ matte?: GPUTexture;
3394
3746
  shininess?: number;
3395
3747
  roughness?: number;
3396
3748
  specularIntensity?: number;
3397
3749
  ambientIntensity?: number;
3398
3750
  metallic?: number;
3399
3751
  }
3400
- type MaterialUniformData = Pick<ModelUniformData, "material" | "shininess" | "roughness" | "specularIntensity" | "ambientIntensity" | "metallic">;
3752
+ type MaterialUniformData = Pick<ModelUniformData, "material" | "shininess" | "roughness" | "specularIntensity" | "ambientIntensity" | "metallic" | "emissive" | "emissiveIntensity">;
3401
3753
  /** [shininess, specularIntensity, ambientIntensity, materialMode] as the 3D shaders' lighting reads them. */
3402
3754
 
3403
3755
  declare class Quad3DPipeline {
3404
3756
  private device;
3405
3757
  pipelineSingle: GPURenderPipeline;
3406
3758
  pipelineMrt: GPURenderPipeline;
3759
+ private bloomVariants;
3760
+ /** Depth-only, alpha-tested: draws a caster into a shadow map. */
3761
+ pipelineShadow: GPURenderPipeline;
3407
3762
  cameraLayout: GPUBindGroupLayout;
3408
3763
  modelLayout: GPUBindGroupLayout;
3409
3764
  textureLayout: GPUBindGroupLayout;
@@ -3415,10 +3770,20 @@ declare class Quad3DPipeline {
3415
3770
  constructor(device: GPUDevice, format: GPUTextureFormat, depthFormat?: GPUTextureFormat, /** Samples per pixel of the pass this draws into (MSAA). */
3416
3771
  sampleCount?: number);
3417
3772
  resetPools(): void;
3418
- draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, texture: GPUTexture, sampler: GPUSampler, data: ModelUniformData, useMrt?: boolean): void;
3773
+ private packModel;
3774
+ private textureBindGroup;
3775
+ draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, texture: GPUTexture, sampler: GPUSampler, data: ModelUniformData, useMrt?: boolean, useBloom?: boolean): void;
3776
+ /** Draws the quad into a shadow map (`lightCameraBindGroup` holds the light's view-projection). */
3777
+ drawShadow(pass: GPURenderPassEncoder, lightCameraBindGroup: GPUBindGroup, texture: GPUTexture, sampler: GPUSampler, data: ModelUniformData): void;
3419
3778
  destroy(): void;
3420
3779
  }
3421
3780
  //#endregion
3781
+ //#region src/renderer3d/shadow-frustum.d.ts
3782
+ interface Aabb {
3783
+ min: Vec3;
3784
+ max: Vec3;
3785
+ }
3786
+ //#endregion
3422
3787
  //#region src/renderer3d/slug3d-pipeline.d.ts
3423
3788
  interface Slug3DUniformData extends MaterialUniformData {
3424
3789
  /** Paragraph px to world */
@@ -3430,12 +3795,15 @@ interface Slug3DUniformData extends MaterialUniformData {
3430
3795
  twoSided: boolean;
3431
3796
  /** Fraction of the distance to the eye the glyphs slide toward it, to stack on their plane */
3432
3797
  depthPull: number;
3798
+ /** Screen-space track matte: the text shows where this texture's alpha does. */
3799
+ matte?: GPUTexture;
3433
3800
  }
3434
3801
  /** Slug glyphs in the 3D pass: depth-tested, lit and resolution independent. */
3435
3802
  declare class Slug3DPipeline {
3436
3803
  private device;
3437
3804
  private pipelineSingle;
3438
3805
  private pipelineMrt;
3806
+ private bloomVariants;
3439
3807
  private modelLayout;
3440
3808
  private fontLayout;
3441
3809
  private modelPool;
@@ -3445,14 +3813,14 @@ declare class Slug3DPipeline {
3445
3813
  constructor(device: GPUDevice, format: GPUTextureFormat, depthFormat: GPUTextureFormat, cameraLayout: GPUBindGroupLayout, lightsLayout: GPUBindGroupLayout, /** Samples per pixel of the pass this draws into (MSAA). */
3446
3814
  sampleCount?: number);
3447
3815
  resetPools(): void;
3448
- draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, font: SlugFont, instances: Float32Array, instanceCount: number, data: Slug3DUniformData, useMrt?: boolean): void;
3816
+ draw(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, font: SlugFont, instances: Float32Array, instanceCount: number, data: Slug3DUniformData, useMrt?: boolean, useBloom?: boolean): void;
3449
3817
  /** A font's textures live as long as the font: bind them once, not per draw. */
3450
3818
  private fontBindGroup;
3451
3819
  destroy(): void;
3452
3820
  }
3453
3821
  //#endregion
3454
3822
  //#region src/renderer3d/renderer3d.d.ts
3455
- interface DrawQuad3DOpts {
3823
+ interface DrawQuad3DOpts extends SurfaceParams {
3456
3824
  /** 3D world position [x, y, z] */
3457
3825
  position: [number, number, number];
3458
3826
  /** Layer surface width */
@@ -3495,8 +3863,18 @@ interface DrawQuad3DOpts {
3495
3863
  ambientIntensity?: number;
3496
3864
  /** Metallic factor [0, 1] */
3497
3865
  metallic?: number;
3866
+ /**
3867
+ * Screen-space track matte, the size of the pass: the layer shows where
3868
+ * this texture's alpha does and keeps its place in the depth buffer.
3869
+ */
3870
+ matte?: GPUTexture;
3498
3871
  }
3499
- interface DrawMesh3DOpts {
3872
+ interface DrawMesh3DOpts extends SurfaceParams {
3873
+ /**
3874
+ * Screen-space track matte, the size of the pass: the layer shows where
3875
+ * this texture's alpha does and keeps its place in the depth buffer.
3876
+ */
3877
+ matte?: GPUTexture;
3500
3878
  /** 3D world position [x, y, z] */
3501
3879
  position?: Vec3;
3502
3880
  /** Euler rotations in degrees [rx, ry, rz] */
@@ -3523,6 +3901,8 @@ interface DrawMesh3DOpts {
3523
3901
  material?: "lit" | "unlit" | "toon";
3524
3902
  /** Toon shading: the shadowed side's color multiplier */
3525
3903
  shadeColor?: [number, number, number];
3904
+ /** Normal / metallic-roughness / occlusion / emissive maps (see `materialMaps`). */
3905
+ maps?: MeshMaterialMaps;
3526
3906
  /** Discard texels whose alpha is below this (glTF MASK) */
3527
3907
  alphaCutoff?: number;
3528
3908
  /** Texture addressing outside [0, 1] */
@@ -3545,6 +3925,32 @@ interface DrawMesh3DOpts {
3545
3925
  sampleRate?: number;
3546
3926
  };
3547
3927
  }
3928
+ /** Scene-wide world settings for a 3D pass. */
3929
+ interface Scene3DWorld {
3930
+ /** Present = physically based shading (see `Environment3DOptions`). */
3931
+ environment?: Environment3DOptions | null;
3932
+ /** From `renderShadowMap`, when a light casts shadows. */
3933
+ shadow?: ShadowUniformInfo | null;
3934
+ }
3935
+ /** Something that can fall into a shadow map. */
3936
+ type ShadowCaster3D = {
3937
+ kind: "mesh";
3938
+ mesh: Mesh3DData;
3939
+ buffers?: GPUMeshBuffers;
3940
+ opts: DrawMesh3DOpts;
3941
+ } | {
3942
+ kind: "quad";
3943
+ texture: GPUTexture;
3944
+ opts: DrawQuad3DOpts;
3945
+ };
3946
+ interface ShadowMapOptions3D {
3947
+ /** Texels per side. Default 2048. */
3948
+ mapSize?: number;
3949
+ /** Edge blur in texels. Default 2.5. */
3950
+ softness?: number;
3951
+ /** 0..1. Default 1. */
3952
+ darkness?: number;
3953
+ }
3548
3954
  declare class Renderer3D {
3549
3955
  private device;
3550
3956
  format: GPUTextureFormat;
@@ -3557,18 +3963,27 @@ declare class Renderer3D {
3557
3963
  private cameraPool;
3558
3964
  private lightsPool;
3559
3965
  private cameraUniformBindGroupCache;
3560
- private lightsUniformBindGroupCache;
3561
3966
  private samplerCache;
3562
3967
  private depthTexture;
3563
3968
  private linearDepthTexture;
3564
3969
  private msaaColorTexture;
3565
3970
  private msaaLinearDepthTexture;
3971
+ private msaaHdrTexture;
3972
+ private hdrTexture;
3973
+ /** Whether the current pass also writes HDR radiance (bloom). */
3974
+ private passWritesHdr;
3566
3975
  private cameraUniformData;
3567
3976
  private meshBuffersCache;
3568
3977
  private materialTextures;
3978
+ private materialMapCache;
3569
3979
  /** Parsed models by source and load options: a model file is read once, not every frame. */
3570
3980
  private modelCache;
3571
3981
  private lastCameraPose;
3982
+ private shadowTexture;
3983
+ private placeholderShadowTexture;
3984
+ private shadowSampler;
3985
+ private meshBounds;
3986
+ private bloomPipeline;
3572
3987
  private lastCameraBuffer;
3573
3988
  /**
3574
3989
  * Samples per pixel in the 3D pass. Mesh silhouettes (extruded text,
@@ -3580,11 +3995,27 @@ declare class Renderer3D {
3580
3995
  resetPools(): void;
3581
3996
  getOrCreateDepthTexture(width: number, height: number): GPUTexture;
3582
3997
  private getOrCreateMsaaTexture;
3998
+ /** The HDR radiance target the last `beginPass(…, writeHdr)` drew into. */
3999
+ hdrSource(): GPUTexture | null;
4000
+ private getOrCreateHdrTexture;
3583
4001
  getOrCreateLinearDepthTexture(width: number, height: number): GPUTexture;
3584
4002
  packCameraUniforms(camera: Camera3DPose, surfaceWidth: number, surfaceHeight: number, time?: number): GPUBuffer;
3585
4003
  createCameraBindGroup(cameraBuffer: GPUBuffer): GPUBindGroup;
3586
- getOrCreateLightsBuffer(lights?: Light3DOptions[]): GPUBuffer;
3587
- beginPass(encoder: GPUCommandEncoder, colorTargetView: GPUTextureView, surfaceWidth: number, surfaceHeight: number, camera: Camera3DPose, loadOp?: GPULoadOp, clearColor?: GPUColor, linearDepthTargetView?: GPUTextureView, lights?: Light3DOptions[]): {
4004
+ getOrCreateLightsBuffer(lights?: Light3DOptions[], world?: Scene3DWorld): GPUBuffer;
4005
+ /** Lights uniform + shadow map + comparison sampler (group 3 of every lit shader). */
4006
+ private createLightsBindGroup;
4007
+ /** Local bounds of a mesh, computed once. */
4008
+ private meshAabb;
4009
+ /** World bounds of a mesh or quad draw, for fitting shadow frusta. */
4010
+ worldBounds(item: ShadowCaster3D): Aabb;
4011
+ /**
4012
+ * Renders the shadow map for `light` (a directional or spot light with
4013
+ * `castShadow`) from `casters`, fitting its frustum around them and deep
4014
+ * enough for `receivers`. Pass the result to `beginPass` as `world.shadow`.
4015
+ */
4016
+ renderShadowMap(encoder: GPUCommandEncoder, light: Light3DOptions, lightIndex: number, casters: ShadowCaster3D[], receivers: Aabb[], options?: ShadowMapOptions3D): ShadowUniformInfo | null;
4017
+ 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. */
4018
+ writeHdr?: boolean): {
3588
4019
  pass: GPURenderPassEncoder;
3589
4020
  cameraBindGroup: GPUBindGroup;
3590
4021
  cameraBuffer: GPUBuffer;
@@ -3604,6 +4035,8 @@ declare class Renderer3D {
3604
4035
  */
3605
4036
  drawSlugText(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, batches: SlugGlyphBatch[], opts: DrawQuad3DOpts, stackBase?: number, useMrt?: boolean): void;
3606
4037
  drawTextureQuad(pass: GPURenderPassEncoder, cameraBindGroup: GPUBindGroup, lightsBindGroup: GPUBindGroup, texture: GPUTexture, opts: DrawQuad3DOpts, useMrt?: boolean): void;
4038
+ /** T(pos) * Rz * Ry * Rx * S, or the draw's precomputed model matrix. */
4039
+ private meshModelMatrix;
3607
4040
  getOrCreateMeshBuffers(mesh: Mesh3DData): GPUMeshBuffers;
3608
4041
  deformMesh(encoder: GPUCommandEncoder, mesh: Mesh3DData, audioDeform: {
3609
4042
  config: MeshAudioDeformConfig;
@@ -3618,14 +4051,30 @@ declare class Renderer3D {
3618
4051
  * chain (a character's 2K maps are drawn a few hundred pixels tall).
3619
4052
  */
3620
4053
  materialTexture(material: Material3D): Promise<GPUTexture | undefined>;
4054
+ /**
4055
+ * The material's normal, metallic-roughness, occlusion and emissive maps
4056
+ * on the GPU (each decoded once); absent maps are left out.
4057
+ */
4058
+ materialMaps(material: Material3D): Promise<MeshMaterialMaps>;
3621
4059
  private uploadMaterialTexture;
4060
+ /** Decodes an encoded image into a texture with a full mip chain. */
4061
+ private uploadImage;
4062
+ /** Writes `source` with bloom into `dest` (see `BloomOptions`). */
4063
+ applyBloom(encoder: GPUCommandEncoder, source: GPUTexture, dest: GPUTexture, options?: BloomOptions, /** Scene radiance to threshold (from a `writeHdr` pass); default `source`. */
4064
+ hdrSource?: GPUTexture | null): void;
3622
4065
  applyDepthOfField(encoder: GPUCommandEncoder, sourceColorTex: GPUTexture, depthTex: GPUTexture, destView: GPUTextureView, cameraBuffer: GPUBuffer): void;
3623
4066
  destroy(): void;
3624
4067
  }
3625
4068
  declare function loadModel3D(srcOrData: string | ArrayBuffer | Uint8Array, format?: "obj" | "fbx" | "gltf" | "glb" | "stl" | "ply" | "vox" | "3ds" | "off" | "auto", options?: LoadModelOptions): Model3DData;
3626
4069
  //#endregion
3627
- //#region src/renderer3d/shadow-pipeline.d.ts
4070
+ //#region src/renderer3d/shadow-depth.d.ts
4071
+ /** Shadow maps: a depth32float target rendered from a light's point of view. */
3628
4072
 
4073
+ /**
4074
+ * @deprecated A texture holder only; nothing renders into it. Shadows are
4075
+ * drawn by `Renderer3D.renderShadowMap` (a `castShadow` directional or spot
4076
+ * light in the scene).
4077
+ */
3629
4078
  declare class ShadowPipeline {
3630
4079
  shadowDepthTexture: GPUTexture;
3631
4080
  shadowDepthView: GPUTextureView;
@@ -3668,5 +4117,5 @@ declare class SSAOPipeline {
3668
4117
  //#endregion
3669
4118
  //#region src/renderer3d/text-extruder.d.ts
3670
4119
  //#endregion
3671
- export { AudioExtractorSignalData as $, TEXT_LAYER_DEFAULTS as $n, isEqual as $r, MediaMetadata as $t, SignalRegistryResource as A, ProgrammaticSignal as An, WritableSignal as Ar, ExportResultSchema as At, loadModel3D as B, SignalDataSchema as Bn, deserializeSignalData as Br, GPUTextureBinding as Bt, Path3D as C, NormalizedLandmarkList as Cn, VideoTimingPropsSchema as Cr, DeflickerOptions as Ct, SSAOPipeline as D, OutputItem as Dn, VisionNodeSpec as Dr, EffectConfig as Dt, Renderer3D as E, Output$1 as En, VisionConfig as Er, Effect as Et, buildWGSLSignalFn as F, SignalBuilderConfig as Fn, computed as Fr, FileAssetSchema as Ft, parseOBJ as G, SignalStats as Gn, generateId as Gr, HandleType as Gt, lutStore as H, SignalGateDataSchema as Hn, findSourceAsset as Hr, GeneratorSignalData as Ht, ensureDevice as I, SignalChannelMeta as In, cosineSignal as Ir, FileData as It, textureCache as J, SineSignalOptions as Jn, getFingerprint as Jr, JsonObject as Jt, shaderStore as K, SignalStatsSchema as Kn, getActiveMediaMetadata as Kr, HandleTypeVal as Kt, initHeadlessWebGPU as L, SignalChannelMetaSchema as Ln, createOutputItemSchema as Lr, FileDataSchema as Lt, SlugFontCache as M, RenderDiagnostic as Mn, appendOperation as Mr, ExtendedLayerSchema as Mt, SlugPipeline as N, SegmentationOptions as Nn, checkNodeResultCache as Nr, FaceLandmarksOptions as Nt, ShadowPipeline as O, OutputItemSchema as On, VisionTask as Or, EffectConfigValue as Ot, WebGPUAudioProcessor as P, Signal as Pn, computeVideoCropRenderProps as Pr, FileAsset as Pt, AnyOutputUnionSchema as Q, StorageService as Qn, hasOnlySingleSource as Qr, MIME_TYPES as Qt, inputStore as R, SignalContext as Rn, createVirtualMedia as Rr, FrameContext as Rt, NodeAnimationTrack3D as S, NormalRelightingOptions as Sn, VideoTextPropsSchema as Sr, DataTypes as St, Renderer2D as T, OpticalFlowOptions as Tn, VirtualMediaDataSchema as Tr, DetectedObject as Tt, parseFBX as U, SignalMathData as Un, frameArraySignal as Ur, GeneratorSignalDataSchema as Ut, loadOBJ as V, SignalGateData as Vn, extractSvgDimensions as Vr, GateSignalOptions as Vt, parseMTL as W, SignalMathDataSchema as Wn, frameSignal as Wr, GlobalCompositeOperation as Wt, AnimationTypeSchema as X, SingleOutputGenericSchema as Xn, getMediaType as Xr, JsonValueSchema as Xt, AnimationType as Y, SingleOutputGeneric as Yn, getLeafMediaType as Yr, JsonValue as Yt, AnyOutputUnion as Z, SourceOperationSchema as Zn, getRenderFingerprint as Zr, Landmark3D as Zt, MasterAudioEntry as _, timeSignal as _i, NodeResultSchema as _n, VideoAnimationSchema as _r, DEFAULT_MEDIA_DIMENSION as _t, AudioMeshDeformPipeline as a, reportRenderDiagnostic as ai, MediaSourceInput as an, TextOperationSchema as ar, CAPTION_LAYER_DEFAULTS as at, Model3DData as b, NodeVisualConfig as bn, VideoSpatialPropsSchema as br, DataTypeEnum as bt, BlendMode as c, resolveNumber as ci, ModerationError as cn, TimelineSegmentSchema as cr, CannyOptions as ct, EffectPipeline as d, serializeSignalData as di, MultiOutputGenericSchema as dn, TrackedObject as dr, ConfigSchemaRegistry as dt, isSignal as ei, MediaMetadataSchema as en, TensorData as er, AudioExtractorSignalDataSchema as et, GPULightData as f, signal as fi, NodeMetadata as fn, Transition as fr, ConnectedInput as ft, LoadModelOptions as g, takeRenderDiagnostics as gi, NodeResult as gn, VideoAnimation as gr, DEFAULT_FPS as gt, Light3DOptions as h, stampResult as hi, NodeProcessorParams as hn, TransitionTypeSchema as hr, DEFAULT_DURATION_MS as ht, AudioLatentTrackCache as i, registerSignalDependency as ii, MediaSourceDescriptor as in, TensorPipelineConfig as ir, BaseVideoLayerPropsSchema as it, Skeleton3D as j, ProgrammaticSignalOptions as jn, XYPosition as jr, ExtendedLayer as jt, SignalRegistry as k, PoseSkeletonOptions as kn, VisionVariant as kr, ExportResult as kt, Bone3D as l, resolveParam as li, ModerationUnrefundableError as ln, TimelineTransform as lr, ConfigHandle as lt, Light3D as m, sineSignal as mi, NodeProcessorContext as mn, TransitionType as mr, DATA_TYPE_EXTENSIONS as mt, AudioLatentData as n, programmaticSignal as ni, MediaOperationSchema as nn, TensorFormat as nr, BaseMediaOperationPropsSchema as nt, AudioSignalComputeConfig as o, resolveBoolean as oi, MediaSourceSchema as on, TextSpan as or, COMPOSITE_OPERATIONS as ot, GlassPipeline as p, signalBuilder as pi, NodeMetadataSchema as pn, TransitionSchema as pr, ControlNetConditioningOutputs as pt, signalRegistry as q, SignalValue as qn, getFileDataMetadata as qr, JsonArray as qt, AudioLatentEngine as r, progressSignal as ri, MediaService as rn, TensorNode as rr, BaseVideoLayerProps as rt, AudioSignalComputePipeline as s, resolveMediaMimeType as si, MeshAudioDeformConfig as sn, TextSpanMark as sr, COMPOSITOR_DEFAULTS as st, AnimationClip3D as t, isVirtualMediaData as ti, MediaOperation as tn, TensorDimensions as tr, BaseMediaOperationProps as tt, Camera3D as u, resolveString as ui, MultiOutputGeneric as un, TimelineTransformSchema as ur, ConfigHandleSchema as ut, Material3D as v, updateClockSignals as vi, NodeRunFunction as vn, VideoLayerType as vr, DataForType as vt, RenderContextValue as w, ObjectBoundingBox as wn, VirtualMediaData as wr, DepthNormalsOptions as wt, MotionBlurPipeline as x, NodeVisualConfigSchema as xn, VideoStylePropsSchema as xr, DataTypeVal as xt, Mesh3DData as y, NodeValidationFn as yn, VideoLayerTypeSchema as yr, DataType as yt, loadFBX as z, SignalData as zn, dataTypeColors as zr, FrameSignal as zt };
3672
- //# sourceMappingURL=index-D1zaOwEU.d.mts.map
4120
+ export { AnimationTypeSchema as $, SignalGateDataSchema as $n, formatHex as $r, HandleTypeVal as $t, ShadowPipeline as A, rgbToOklab as Ai, NormalRelightingOptions as An, VideoSpatialPropsSchema as Ar, DetectedObject as At, initHeadlessWebGPU as B, ProgrammaticSignal as Bn, WritableSignal as Br, FileAssetSchema as Bt, NodeAnimationTrack3D as C, registerSignalDependency as Ci, NodeProcessorParams as Cn, TransitionSchema as Cr, DataForType as Ct, Renderer3D as D, resolveNumber as Di, NodeValidationFn as Dn, VideoAnimationSchema as Dr, DataTypes as Dt, Renderer2D as E, resolveMediaMimeType as Ei, NodeRunFunction as En, VideoAnimation as Er, DataTypeVal as Et, SlugPipeline as F, sineSignal as Fi, OutputItem as Fn, VirtualMediaDataSchema as Fr, ExportResultSchema as Ft, lutStore as G, Signal as Gn, computed as Gr, GPUTextureBinding as Gt, loadFBX as H, RenderDiagnostic as Hn, appendOperation as Hr, FileDataSchema as Ht, SphereGeometryOptions as I, stampResult as Ii, OutputItemSchema as In, VisionConfig as Ir, ExtendedLayer as It, parseOBJ as J, SignalChannelMetaSchema as Jn, createVirtualMedia as Jr, GeneratorSignalDataSchema as Jt, parseFBX as K, SignalBuilderConfig as Kn, cosineSignal as Kr, GateSignalOptions as Kt, WebGPUAudioProcessor as L, takeRenderDiagnostics as Li, ParsedGradient as Ln, VisionNodeSpec as Lr, ExtendedLayerSchema as Lt, SignalRegistryResource as M, serializeSignalData as Mi, ObjectBoundingBox as Mn, VideoTextPropsSchema as Mr, EffectConfig as Mt, Skeleton3D as N, signal as Ni, OpticalFlowOptions as Nn, VideoTimingPropsSchema as Nr, EffectConfigValue as Nt, RoundedBoxGeometryOptions as O, resolveParam as Oi, NodeVisualConfig as On, VideoLayerType as Or, DeflickerOptions as Ot, SlugFontCache as P, signalBuilder as Pi, Output$1 as Pn, VirtualMediaData as Pr, ExportResult as Pt, AnimationType as Q, SignalGateData as Qn, findSourceAsset as Qr, HandleType as Qt, buildWGSLSignalFn as R, timeSignal as Ri, ParsedGradientStop as Rn, VisionTask as Rr, FaceLandmarksOptions as Rt, MotionBlurPipeline as S, progressSignal as Si, NodeProcessorContext as Sn, TrackedObject as Sr, DEFAULT_MEDIA_DIMENSION as St, RenderContextValue as T, resolveBoolean as Ti, NodeResultSchema as Tn, TransitionTypeSchema as Tr, DataTypeEnum as Tt, loadModel3D as U, Rgba as Un, checkNodeResultCache as Ur, FrameContext as Ut, inputStore as V, ProgrammaticSignalOptions as Vn, XYPosition as Vr, FileData as Vt, loadOBJ as W, SegmentationOptions as Wn, computeVideoCropRenderProps as Wr, FrameSignal as Wt, signalRegistry as X, SignalData as Xn, deserializeSignalData as Xr, Gradient as Xt, shaderStore as Y, SignalContext as Yn, dataTypeColors as Yr, GlobalCompositeOperation as Yt, textureCache as Z, SignalDataSchema as Zn, extractSvgDimensions as Zr, GradientType as Zt, LoadModelOptions as _, normalizeColorStops as _i, ModerationUnrefundableError as _n, TextSpan as _r, ConnectedInput as _t, AudioMeshDeformPipeline as a, getFingerprint as ai, MAX_GRADIENT_STOPS as an, SineSignalOptions as ar, BaseMediaOperationPropsSchema as at, Mesh3DData as b, parseCssGradient as bi, NodeMetadata as bn, TimelineTransform as br, DEFAULT_DURATION_MS as bt, BlendMode as c, getRenderFingerprint as ci, MediaMetadataSchema as cn, SourceOperationSchema as cr, CAPTION_LAYER_DEFAULTS as ct, CylinderGeometryOptions as d, isCssGradient as di, MediaService as dn, TensorData as dr, CannyOptions as dt, frameArraySignal as ei, JsonArray as en, SignalMathData as er, AnyOutputUnion as et, EffectPipeline as f, isEqual as fi, MediaSourceDescriptor as fn, TensorDimensions as fr, Color$1 as ft, Light3DOptions as g, mixColors as gi, ModerationError as gn, TextOperationSchema as gr, ConfigSchemaRegistry as gt, Light3D as h, limitGradientStops as hi, MeshAudioDeformConfig as hn, TensorPipelineConfig as hr, ConfigHandleSchema as ht, AudioLatentTrackCache as i, getFileDataMetadata as ii, Landmark3D as in, SignalValue as ir, BaseMediaOperationProps as it, SignalRegistry as j, sampleColorStops as ji, NormalizedLandmarkList as jn, VideoStylePropsSchema as jr, Effect as jt, SSAOPipeline as k, resolveString as ki, NodeVisualConfigSchema as kn, VideoLayerTypeSchema as kr, DepthNormalsOptions as kt, Bone3D as l, gradientStopsToOklab as li, MediaOperation as ln, StorageService as lr, COMPOSITE_OPERATIONS as lt, GlassPipeline as m, isVirtualMediaData as mi, MediaSourceSchema as mn, TensorNode as mr, ConfigHandle as mt, AudioLatentData as n, generateId as ni, JsonValue as nn, SignalStats as nr, AudioExtractorSignalData as nt, AudioSignalComputeConfig as o, getLeafMediaType as oi, MIME_TYPES as on, SingleOutputGeneric as or, BaseVideoLayerProps as ot, GPULightData as p, isSignal as pi, MediaSourceInput as pn, TensorFormat as pr, ColorStopLike as pt, parseMTL as q, SignalChannelMeta as qn, createOutputItemSchema as qr, GeneratorSignalData as qt, AudioLatentEngine as r, getActiveMediaMetadata as ri, JsonValueSchema as rn, SignalStatsSchema as rr, AudioExtractorSignalDataSchema as rt, AudioSignalComputePipeline as s, getMediaType as si, MediaMetadata as sn, SingleOutputGenericSchema as sr, BaseVideoLayerPropsSchema as st, AnimationClip3D as t, frameSignal as ti, JsonObject as tn, SignalMathDataSchema as tr, AnyOutputUnionSchema as tt, Camera3D as u, hasOnlySingleSource as ui, MediaOperationSchema as un, TEXT_LAYER_DEFAULTS as ur, COMPOSITOR_DEFAULTS as ut, MasterAudioEntry as v, oklabToRgb as vi, MultiOutputGeneric as vn, TextSpanMark as vr, ControlNetConditioningOutputs as vt, Path3D as w, reportRenderDiagnostic as wi, NodeResult as wn, TransitionType as wr, DataType as wt, Model3DData as x, programmaticSignal as xi, NodeMetadataSchema as xn, TimelineTransformSchema as xr, DEFAULT_FPS as xt, Material3D as y, parseCssColor as yi, MultiOutputGenericSchema as yn, TimelineSegmentSchema as yr, DATA_TYPE_EXTENSIONS as yt, ensureDevice as z, updateClockSignals as zi, PoseSkeletonOptions as zn, VisionVariant as zr, FileAsset as zt };
4121
+ //# sourceMappingURL=index-DDEPvMww.d.mts.map