framefields 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/NOTICE.md +5 -1
  2. package/dist/audio/index.d.mts +3 -3
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DFwRbID_.mjs → audio-6TfPlfl4.mjs} +3 -3
  5. package/dist/{audio-DFwRbID_.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
  6. package/dist/{audio-CdCuGK5d.d.mts → audio-7oqTUi4G.d.mts} +2 -2
  7. package/dist/{audio-CdCuGK5d.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 +11 -11
  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-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
  19. package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  20. package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
  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 +4 -4
  26. package/dist/effects/index.mjs +35 -35
  27. package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
  28. package/dist/{effects-WMgv8ZaD.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-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
  32. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  33. package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
  34. package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  35. package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
  36. package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  37. package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
  38. package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  39. package/dist/{index-Bv7gxGK1.d.mts → index-BnB_Ou2y.d.mts} +2 -2
  40. package/dist/index-BnB_Ou2y.d.mts.map +1 -0
  41. package/dist/index-C-V6CAhP.d.mts.map +1 -1
  42. package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
  43. package/dist/index-CMhkkc56.d.mts.map +1 -0
  44. package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
  45. package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  46. package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
  47. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  48. package/dist/{index-9xte4JgL.d.mts → index-DkAjKnhW.d.mts} +1464 -559
  49. package/dist/index-DkAjKnhW.d.mts.map +1 -0
  50. package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
  51. package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  52. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  53. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  54. package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
  55. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  56. package/dist/index.d.mts +13 -13
  57. package/dist/index.mjs +52 -52
  58. package/dist/preview/index.d.mts +3 -3
  59. package/dist/preview/index.mjs +10 -10
  60. package/dist/preview-BeGF1Bb1.mjs +1002 -0
  61. package/dist/preview-BeGF1Bb1.mjs.map +1 -0
  62. package/dist/preview-engine/audio.mjs +1 -1
  63. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  64. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  65. package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  67. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  68. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  69. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  70. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  71. package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
  72. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  73. package/dist/preview-engine/components.mjs +1 -1
  74. package/dist/preview-engine/effects.mjs +1 -1
  75. package/dist/preview-engine/fonts.mjs +1 -1
  76. package/dist/preview-engine/framefields.mjs +1 -1
  77. package/dist/preview-engine/player.mjs +2 -2
  78. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  79. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  80. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  81. package/dist/preview-page/index.html +19 -0
  82. package/dist/preview-page/main.css +1 -0
  83. package/dist/preview-page/main.js +327 -0
  84. package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
  85. package/dist/program-CMigyfso.mjs.map +1 -0
  86. package/dist/renderer/index.d.mts +2 -2
  87. package/dist/renderer/index.mjs +2 -2
  88. package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  89. package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  90. package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  91. package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  92. package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
  93. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  94. package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
  95. package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  96. package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
  97. package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  98. package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
  99. package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
  100. package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  101. package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
  102. package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  103. package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
  104. package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  105. package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
  106. package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  107. package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
  108. package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  109. package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
  110. package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  111. package/dist/renderer-BERGAxqA.mjs +5 -0
  112. package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
  113. package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  114. package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
  115. package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  116. package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
  117. package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  118. package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  119. package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  120. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  121. package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
  122. package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  123. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  124. package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
  125. package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
  126. package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  127. package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  128. package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  129. package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  130. package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  131. package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
  132. package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  133. package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
  134. package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  135. package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
  136. package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  137. package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
  138. package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  139. package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
  140. package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  141. package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
  142. package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  143. package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
  144. package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  145. package/dist/renderer-BzyPdUD1.mjs +5 -0
  146. package/dist/renderer-C0hM-mtY.mjs +5 -0
  147. package/dist/renderer-C6cyUTvk.mjs +5 -0
  148. package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
  149. package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  150. package/dist/renderer-C8zY3pzk.mjs +5 -0
  151. package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
  152. package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  153. package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
  154. package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  155. package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  156. package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  157. package/dist/renderer-CEkSOyKu.mjs +5 -0
  158. package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
  159. package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  160. package/dist/renderer-CJYtfa4x.mjs +5 -0
  161. package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
  162. package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  163. package/dist/renderer-CKMtHGZh.mjs +5 -0
  164. package/dist/renderer-CLzicoiy.mjs +5 -0
  165. package/dist/renderer-CM2A4BHd.mjs +5 -0
  166. package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
  167. package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  168. package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
  169. package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  170. package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
  171. package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  172. package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
  173. package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  174. package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
  175. package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  176. package/dist/renderer-CZlHjcxr.mjs +5 -0
  177. package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
  178. package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  179. package/dist/renderer-CbimvSU8.mjs +5 -0
  180. package/dist/renderer-Ccvc63yd.mjs +5 -0
  181. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  182. package/dist/renderer-CeTcSs3e.mjs +5 -0
  183. package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
  184. package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  185. package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  186. package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  187. package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  188. package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  189. package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
  190. package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  191. package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  192. package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  193. package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
  194. package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  195. package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
  196. package/dist/renderer-CvNuu52U.mjs +5 -0
  197. package/dist/renderer-CwciC0oI.mjs +5 -0
  198. package/dist/renderer-CysLUbIr.mjs +5 -0
  199. package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
  200. package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  201. package/dist/renderer-D3A22Vxb.mjs +5 -0
  202. package/dist/renderer-D5SY9EmA.mjs +5 -0
  203. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  204. package/dist/renderer-DE-B6N9n.mjs +5 -0
  205. package/dist/renderer-DETZTI7t.mjs +5 -0
  206. package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
  207. package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  208. package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  209. package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  210. package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  211. package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  212. package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
  213. package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  214. package/dist/renderer-DWnDj0IM.mjs +5 -0
  215. package/dist/renderer-DcGUIbQF.mjs +5 -0
  216. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  217. package/dist/renderer-DhasXW6S.mjs +3 -0
  218. package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
  219. package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  220. package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  221. package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  222. package/dist/renderer-DjCvpsV_.mjs +5 -0
  223. package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
  224. package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  225. package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
  226. package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  227. package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  228. package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  229. package/dist/renderer-DrAaM6JD.mjs +5 -0
  230. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  231. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  232. package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
  233. package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  234. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  235. package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  236. package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  237. package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
  238. package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  239. package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
  240. package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  241. package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  242. package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  243. package/dist/renderer-Pb43OO2t.mjs +5 -0
  244. package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  245. package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  246. package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
  247. package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  248. package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
  249. package/dist/renderer-VQbm-cGr.mjs +5 -0
  250. package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
  251. package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  252. package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
  253. package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  254. package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
  255. package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  256. package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
  257. package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  258. package/dist/renderer-oPMypDM1.mjs +5 -0
  259. package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
  260. package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  261. package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
  262. package/dist/renderer-tvYj306A.mjs.map +1 -0
  263. package/dist/renderer-xvWGpVyp.mjs +5 -0
  264. package/dist/renderer-zafZbD6Q.mjs +5 -0
  265. package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  266. package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  267. package/dist/sam/index.d.mts +2 -2
  268. package/dist/sam/index.mjs +1 -1
  269. package/dist/signals/index.d.mts +4 -4
  270. package/dist/signals/index.mjs +4 -4
  271. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  272. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  273. package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
  274. package/dist/src-CoHAjviq.mjs.map +1 -0
  275. package/dist/storage/index.mjs +1 -1
  276. package/package.json +63 -60
  277. package/dist/dist--Uu5bQ_6.mjs.map +0 -1
  278. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  279. package/dist/fonts-OW3yAfO5.mjs.map +0 -1
  280. package/dist/index-9xte4JgL.d.mts.map +0 -1
  281. package/dist/index-Bv7gxGK1.d.mts.map +0 -1
  282. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  283. package/dist/index-C7-p9zwU.d.mts.map +0 -1
  284. package/dist/index-CRaydvLi.d.mts.map +0 -1
  285. package/dist/index-D1FqV1eu.d.mts.map +0 -1
  286. package/dist/preview-D7BGmE1E.mjs +0 -2446
  287. package/dist/preview-D7BGmE1E.mjs.map +0 -1
  288. package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
  289. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  290. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  291. package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
  292. package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
  293. package/dist/program-tFKCWU2j.mjs.map +0 -1
  294. package/dist/renderer-6_bzbbXt.mjs +0 -5
  295. package/dist/renderer-8M-9G6F_.mjs +0 -5
  296. package/dist/renderer-B5OzKvF8.mjs +0 -5
  297. package/dist/renderer-BBCZ2qbE.mjs +0 -5
  298. package/dist/renderer-BChbxCux.mjs +0 -5
  299. package/dist/renderer-BGeMPr8C.mjs +0 -5
  300. package/dist/renderer-BPQ8Pkjb.mjs +0 -5
  301. package/dist/renderer-BTRpA3HD.mjs +0 -5
  302. package/dist/renderer-BVIXKfbC.mjs.map +0 -1
  303. package/dist/renderer-BVsECSn-.mjs +0 -5
  304. package/dist/renderer-Bgos68gc.mjs +0 -6
  305. package/dist/renderer-BjHOvoqO.mjs +0 -5
  306. package/dist/renderer-BjXMPPlV.mjs +0 -5
  307. package/dist/renderer-Byobxqkv.mjs +0 -5
  308. package/dist/renderer-CKrsg3EG.mjs +0 -5
  309. package/dist/renderer-Cj875NuH.mjs +0 -5
  310. package/dist/renderer-CnmzJoMv.mjs +0 -5
  311. package/dist/renderer-CtklDaMg.mjs +0 -5
  312. package/dist/renderer-D1tK3in_.mjs +0 -5
  313. package/dist/renderer-D2yc9P61.mjs +0 -5
  314. package/dist/renderer-D4v-JvSr.mjs +0 -5
  315. package/dist/renderer-D5yp74NL.mjs +0 -3
  316. package/dist/renderer-D7WRWDwB.mjs +0 -5
  317. package/dist/renderer-DGvA0tdB.mjs +0 -5
  318. package/dist/renderer-DO7v5Sdm.mjs +0 -5
  319. package/dist/renderer-DRVvt7-V.mjs +0 -5
  320. package/dist/renderer-DYMCd3jL.mjs +0 -5
  321. package/dist/renderer-DmHKw-MM.mjs +0 -5
  322. package/dist/renderer-DoDsuZ6G.mjs +0 -5
  323. package/dist/renderer-EpgclS70.mjs +0 -5
  324. package/dist/renderer-GroKiYyK.mjs +0 -5
  325. package/dist/renderer-MQ5K_xIS.mjs +0 -5
  326. package/dist/renderer-U43SflML.mjs +0 -5
  327. package/dist/renderer-UqOmBgCv.mjs +0 -5
  328. package/dist/renderer-XLULgJM0.mjs +0 -5
  329. package/dist/renderer-jUKdkmG5.mjs.map +0 -1
  330. package/dist/renderer-lNjxY1GG.mjs +0 -5
  331. package/dist/renderer-ukufL7pl.mjs +0 -5
  332. package/dist/renderer-wb0NCKdF.mjs +0 -5
  333. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  334. package/dist/src-Dy4gnc6w.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-4nXkaAWu.mjs","names":[],"sources":["../../../nodes/node-compositor/dist/renderers-CrRYcARA.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveMediaSourceUrl } from \"@framefields/client-utils\";\nimport { decodeAudioSource, keyedGain, resolveLayerDuration } from \"@framefields/compositions\";\nimport { collectNodeOps, computeLayout, evaluateTrackAtFrame, initLayout, mappedEase, numberAt, sampleTrack, vec3At } from \"@framefields/compositions/program\";\nimport { DEFAULT_DURATION_MS, getActiveMediaMetadata, mediaSourceTime, reportRenderDiagnostic } from \"@framefields/core\";\nimport { audioRegistry, effectMaxPixelScale, effectReach, resolveBoolean, resolveFrameNumber, resolveNumber, solveHomography } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, PREMULTIPLIED_BLEND, createFullscreenPipeline, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\nimport { measureText } from \"@framefields/renderers\";\nimport { TemporalDeflickerPipeline } from \"@framefields/tensor-webgpu\";\nimport { AudioLatentTrackCache, Camera3D, FRACTURE_INTERIOR_MATERIAL, Light3D, Matrix4Math, Renderer3D, ScreenSpaceRelightPipeline, SlugFontCache, SpringBones, Vector3Math, applyConstraints, bakeCrowdPalette, blendClipLayers, cameraBasis, createRandom, cubeFaceCameras, defaultCubeFaceSize, fitSpansToText, fractureModel, generateExtrudedTextGeometry, getPrimitiveGeometry, jointMatrices, lensCenterDensity, measureMaxCaptionHeight, parseColor, parseDashArray, poseNodes, resolveClips, resolveTextSpans, rotateByQuat, sampleMorphWeights, scatterOnSurface, seatOnSurface, spansText, srtLoader, transformScale, trsMatrix } from \"@framefields/webgpu-renderers\";\nimport gsapModule from \"gsap\";\n\n//#region src/shared/compiler.ts\nconst gsap = gsapModule.timeline ? gsapModule : gsapModule.default || gsapModule;\n/** Seeks the compiled timeline to a frame and applies its live signal tracks. */\nfunction seekTimeline(result, frame, fps) {\n\tresult.tl.seek(frame / fps);\n\tfor (const live of result.live) {\n\t\tlet f = Math.max(live.startFrame, Math.min(live.endFrame, frame));\n\t\tif (live.step && live.step > 1) f = live.startFrame + Math.floor((f - live.startFrame) / live.step) * live.step;\n\t\tlive.stub[live.track.prop] = sampleTrack(live.track, f, fps, {\n\t\t\tstartFrame: live.startFrame,\n\t\t\tbase: live.stub,\n\t\t\tsignals: result.signals\n\t\t});\n\t}\n}\nconst cache$1 = /* @__PURE__ */ new Map();\nconst nodesHashMemo = /* @__PURE__ */ new WeakMap();\n/** Entries untouched for this long are dropped (and their timeline killed). */\nconst CACHE_TTL_MS = 1e4;\n/** Max compiled timelines retained per cache. */\nconst TIMELINE_CACHE_MAX = 50;\nconst LAYER_TIMELINE_CACHE_MAX = 50;\nfunction fnv1a(str) {\n\tlet hash = 2166136261;\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash ^= str.charCodeAt(i);\n\t\thash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n\t}\n\treturn (hash >>> 0).toString(16);\n}\nconst signalIds = /* @__PURE__ */ new WeakMap();\nlet nextSignalId = 0;\nfunction signalsKey(signals) {\n\tif (!signals || typeof signals !== \"object\") return stableStringify(signals);\n\treturn Object.keys(signals).sort().map((name) => {\n\t\tconst s = signals[name];\n\t\tif (s && typeof s === \"object\" && typeof s.get === \"function\") {\n\t\t\tlet id = signalIds.get(s);\n\t\t\tif (id === void 0) {\n\t\t\t\tid = nextSignalId++;\n\t\t\t\tsignalIds.set(s, id);\n\t\t\t}\n\t\t\treturn `${JSON.stringify(name)}:#${id}`;\n\t\t}\n\t\treturn `${JSON.stringify(name)}:${stableStringify(s)}`;\n\t}).join(\",\");\n}\n/**\n* Paused gsap timelines stay attached to gsap's global timeline until killed,\n* so anything dropped from a cache must be killed or it is never collected.\n*/\nfunction release(value) {\n\tvalue.tl.kill();\n}\n/**\n* Make room for one insertion: drop and kill TTL-expired entries, then evict\n* the least-recently-used entry if the cache is at capacity. Every dropped\n* timeline MUST be killed — see `release`.\n*/\nfunction evictForInsert(cache$2, maxSize) {\n\tconst now = Date.now();\n\tfor (const [key, entry] of cache$2.entries()) if (now - entry.cacheTime > CACHE_TTL_MS) {\n\t\tcache$2.delete(key);\n\t\trelease(entry.value);\n\t}\n\tif (cache$2.size >= maxSize) {\n\t\tconst oldestKey = cache$2.keys().next().value;\n\t\tif (oldestKey !== void 0) {\n\t\t\tconst oldest = cache$2.get(oldestKey);\n\t\t\tcache$2.delete(oldestKey);\n\t\t\tif (oldest) release(oldest.value);\n\t\t}\n\t}\n}\nfunction stableStringify(obj) {\n\tif (obj === null) return \"null\";\n\tif (obj === void 0) return \"undefined\";\n\tif (typeof obj !== \"object\") return JSON.stringify(obj);\n\tif (ArrayBuffer.isView(obj)) return `[TypedArray:${obj.byteLength}]`;\n\tif (Array.isArray(obj)) return \"[\" + obj.map(stableStringify).join(\",\") + \"]\";\n\treturn \"{\" + Object.keys(obj).sort().map((key) => {\n\t\treturn `${JSON.stringify(key)}:${stableStringify(obj[key])}`;\n\t}).join(\",\") + \"}\";\n}\nfunction getCachedTimeline(cacheKey) {\n\tconst entry = cache$1.get(cacheKey);\n\tif (entry) {\n\t\tif (Date.now() - entry.cacheTime > CACHE_TTL_MS) {\n\t\t\tcache$1.delete(cacheKey);\n\t\t\trelease(entry.value);\n\t\t\treturn;\n\t\t}\n\t\tentry.cacheTime = Date.now();\n\t\tcache$1.delete(cacheKey);\n\t\tcache$1.set(cacheKey, entry);\n\t\treturn entry.value;\n\t}\n}\nfunction setCachedTimeline(cacheKey, value) {\n\tevictForInsert(cache$1, TIMELINE_CACHE_MAX);\n\tcache$1.set(cacheKey, {\n\t\tcacheTime: Date.now(),\n\t\tvalue\n\t});\n}\n/** Props that switch rather than tween: each key is a set from its frame on. */\nconst DISCRETE_PROPS = new Set([\"hidden\", \"muted\"]);\nfunction compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames, signals, live, step) {\n\tconst prop = track.prop;\n\tconst source = track.source ?? { type: \"keyframe\" };\n\tconst stepped = step !== void 0 && step > 1;\n\tif ((source.type === \"signal\" || stepped || prop === \"d\") && live && !track.repeat) {\n\t\tconst entry = {\n\t\t\tstub,\n\t\t\ttrack,\n\t\t\tstartFrame,\n\t\t\tendFrame: startFrame + (Number.isFinite(durationFrames) ? durationFrames : Math.round(fps * 5)),\n\t\t\t...stepped && { step }\n\t\t};\n\t\tstub[prop] = sampleTrack(track, startFrame, fps, {\n\t\t\tstartFrame,\n\t\t\tbase: stub,\n\t\t\tsignals\n\t\t});\n\t\tlive.push(entry);\n\t\treturn {\n\t\t\tdropped: 0,\n\t\t\tmaxAuthoredFrame: 0\n\t\t};\n\t}\n\tif (source.type !== \"keyframe\") {\n\t\tconst endF = Number.isFinite(durationFrames) ? durationFrames : Math.round(fps * 5);\n\t\tconst frameStepSec = 1 / fps;\n\t\tconst kfList = [];\n\t\tconst firstVal = evaluateTrackAtFrame(track, startFrame, fps, {\n\t\t\tstartFrame,\n\t\t\tbaseValues: stub,\n\t\t\tsignals\n\t\t});\n\t\tstub[prop] = firstVal;\n\t\tkfList.push({\n\t\t\t[prop]: firstVal,\n\t\t\tduration: 0\n\t\t});\n\t\tfor (let f = 1; f <= endF; f++) {\n\t\t\tconst val = evaluateTrackAtFrame(track, startFrame + f, fps, {\n\t\t\t\tstartFrame,\n\t\t\t\tbaseValues: stub,\n\t\t\t\tsignals\n\t\t\t});\n\t\t\tkfList.push({\n\t\t\t\t[prop]: val,\n\t\t\t\tduration: frameStepSec,\n\t\t\t\tease: \"none\"\n\t\t\t});\n\t\t}\n\t\ttl.to(stub, {\n\t\t\tkeyframes: kfList,\n\t\t\trepeat: track.repeat ?? 0,\n\t\t\tyoyo: !!track.yoyo,\n\t\t\tlazy: false,\n\t\t\toverwrite: false,\n\t\t\timmediateRender: false\n\t\t}, startFrame / fps);\n\t\treturn {\n\t\t\tdropped: 0,\n\t\t\tmaxAuthoredFrame: 0\n\t\t};\n\t}\n\tconst sortedKeyframes = [...track.keyframes].sort((a, b) => a.frame - b.frame);\n\tconst validKeyframes = sortedKeyframes.filter((kf) => kf.frame >= 0 && kf.frame <= durationFrames);\n\tconst dropped = sortedKeyframes.length - validKeyframes.length;\n\tconst maxAuthoredFrame = dropped > 0 ? sortedKeyframes[sortedKeyframes.length - 1].frame : 0;\n\tif (validKeyframes.length === 0) return {\n\t\tdropped,\n\t\tmaxAuthoredFrame\n\t};\n\tif (DISCRETE_PROPS.has(prop)) for (const kf of validKeyframes) {\n\t\tconst absoluteSec = (startFrame + kf.frame) / fps;\n\t\ttl.set(stub, {\n\t\t\t[prop]: kf.value,\n\t\t\timmediateRender: false\n\t\t}, absoluteSec);\n\t}\n\telse {\n\t\tconst repeat = track.repeat ?? 0;\n\t\tconst yoyo = !!track.yoyo;\n\t\tif (validKeyframes.length === 1) {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst absoluteSec = (startFrame + kf0.frame) / fps;\n\t\t\ttl.set(stub, {\n\t\t\t\t[prop]: kf0.value,\n\t\t\t\timmediateRender: false\n\t\t\t}, absoluteSec);\n\t\t} else if (validKeyframes.length === 2) {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst kf1 = validKeyframes[1];\n\t\t\tconst val0 = kf0.value;\n\t\t\tconst val1 = kf1.value;\n\t\t\tconst startSec = (startFrame + kf0.frame) / fps;\n\t\t\tconst durSec = (kf1.frame - kf0.frame) / fps;\n\t\t\tconst trackDurationFrames = track.durationFrames ?? kf1.frame - kf0.frame;\n\t\t\tconst easeVal = mappedEase(kf1.ease ?? kf0.ease, trackDurationFrames, fps);\n\t\t\tif (val0 === stub[prop]) tl.to(stub, {\n\t\t\t\t[prop]: val1,\n\t\t\t\tduration: durSec,\n\t\t\t\tease: easeVal,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t\telse tl.fromTo(stub, { [prop]: val0 }, {\n\t\t\t\t[prop]: val1,\n\t\t\t\tduration: durSec,\n\t\t\t\tease: easeVal,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t} else {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst startSec = (startFrame + kf0.frame) / fps;\n\t\t\tconst kfList = [];\n\t\t\tkfList.push({\n\t\t\t\t[prop]: kf0.value,\n\t\t\t\tduration: 0\n\t\t\t});\n\t\t\tfor (let i = 1; i < validKeyframes.length; i++) {\n\t\t\t\tconst prevKf = validKeyframes[i - 1];\n\t\t\t\tconst currKf = validKeyframes[i];\n\t\t\t\tconst deltaFrames = currKf.frame - prevKf.frame;\n\t\t\t\tconst durSec = deltaFrames / fps;\n\t\t\t\tconst easeVal = mappedEase(currKf.ease, deltaFrames, fps);\n\t\t\t\tkfList.push({\n\t\t\t\t\t[prop]: currKf.value,\n\t\t\t\t\tduration: durSec,\n\t\t\t\t\tease: easeVal\n\t\t\t\t});\n\t\t\t}\n\t\t\ttl.to(stub, {\n\t\t\t\tkeyframes: kfList,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t}\n\t}\n\treturn {\n\t\tdropped,\n\t\tmaxAuthoredFrame\n\t};\n}\n/** A camera's `x` / `y` / `z` are its eye, the same as `cameraX` / `cameraY` / `cameraZ`. */\nconst CAMERA_EYE = {\n\tx: \"cameraX\",\n\ty: \"cameraY\",\n\tz: \"cameraZ\"\n};\n/**\n* A layer's tracks, with a camera's `x` / `y` / `z` tracks driving its eye:\n* the eye is read from `cameraX` / `cameraY` / `cameraZ`, which the static\n* `x` / `y` / `z` seed, so a track left on `x` would never move it.\n*/\nfunction layerTracks(lop) {\n\tconst tracks = lop.animation?.tracks ?? [];\n\tif (lop.kind !== \"camera\") return tracks;\n\treturn tracks.map((t) => {\n\t\tconst eye = CAMERA_EYE[t.prop];\n\t\treturn eye ? {\n\t\t\t...t,\n\t\t\tprop: eye\n\t\t} : t;\n\t});\n}\n/**\n* Dedupe per compiled cache key — a fresh render of the same broken doc SHOULD\n* re-warn. Single-frame renders are the exception: each `renderFrame` call has\n* its own `img-` render id, so probing a doc frame by frame would repeat the\n* warning on every frame; those dedupe per document instead.\n*/\nconst truncationWarnedKeys = /* @__PURE__ */ new Set();\nconst TRUNCATION_WARNED_CAP = 100;\nfunction warnTruncationOnce(cacheKey, truncations) {\n\tif (truncationWarnedKeys.has(cacheKey)) return;\n\tif (truncationWarnedKeys.size >= TRUNCATION_WARNED_CAP) truncationWarnedKeys.clear();\n\ttruncationWarnedKeys.add(cacheKey);\n\tconst details = truncations.map((t) => `'${t.prop}' (track '${t.trackId}') on '${t.layerId}': ${t.dropped} keyframe(s) past the clip window (last authored frame ${t.maxAuthoredFrame})`).join(\"; \");\n\tconsole.warn(`[compositor] ${truncations.length} track(s) truncated — animation tails will not play: ${details}. Extend durationFrames or move those keyframes.`);\n}\nfunction hashNodes(nodeOps, width, height, fps, durationSec) {\n\treturn fnv1a(stableStringify({\n\t\tnodes: nodeOps.map((vm) => {\n\t\t\tconst lop = vm?.operation || {};\n\t\t\treturn {\n\t\t\t\tid: lop.id,\n\t\t\t\tanimation: lop.animation,\n\t\t\t\tstartFrame: lop.startFrame,\n\t\t\t\tdurationFrames: lop.durationFrames,\n\t\t\t\tx: lop.x,\n\t\t\t\ty: lop.y,\n\t\t\t\tscale: lop.scale,\n\t\t\t\trotation: lop.rotation,\n\t\t\t\topacity: lop.opacity,\n\t\t\t\tvolume: lop.volume,\n\t\t\t\twidth: lop.width,\n\t\t\t\theight: lop.height,\n\t\t\t\thidden: lop.hidden,\n\t\t\t\tmuted: lop.muted,\n\t\t\t\tbackgroundColor: lop.backgroundColor,\n\t\t\t\tfill: lop.fill,\n\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\ttextBackgroundColor: lop.textBackgroundColor,\n\t\t\t\trotateX: lop.rotateX,\n\t\t\t\trotateY: lop.rotateY,\n\t\t\t\trotateZ: lop.rotateZ,\n\t\t\t\tperspective: lop.perspective,\n\t\t\t\tperspectiveOriginX: lop.perspectiveOriginX,\n\t\t\t\tperspectiveOriginY: lop.perspectiveOriginY,\n\t\t\t\ttranslateZ: lop.translateZ,\n\t\t\t\tbackfaceVisibility: lop.backfaceVisibility,\n\t\t\t\ttransformStyle: lop.transformStyle,\n\t\t\t\tis3D: lop.is3D,\n\t\t\t\tz: lop.z,\n\t\t\t\tscaleZ: lop.scaleZ,\n\t\t\t\ttwoSided: lop.twoSided,\n\t\t\t\tcameraX: lop.cameraX,\n\t\t\t\tcameraY: lop.cameraY,\n\t\t\t\tcameraZ: lop.cameraZ,\n\t\t\t\ttargetX: lop.targetX,\n\t\t\t\ttargetY: lop.targetY,\n\t\t\t\ttargetZ: lop.targetZ,\n\t\t\t\tcameraPitch: lop.cameraPitch,\n\t\t\t\tcameraYaw: lop.cameraYaw,\n\t\t\t\tcameraRoll: lop.cameraRoll,\n\t\t\t\tcameraFov: lop.cameraFov,\n\t\t\t\tcameraZoom: lop.cameraZoom,\n\t\t\t\tfocalLength: lop.focalLength,\n\t\t\t\tfocusDistance: lop.focusDistance,\n\t\t\t\tfStop: lop.fStop,\n\t\t\t\tmaxBlurRadius: lop.maxBlurRadius,\n\t\t\t\tshakeTranslation: lop.shakeTranslation,\n\t\t\t\tshakeRotation: lop.shakeRotation,\n\t\t\t\trelativitySpeed: lop.relativitySpeed,\n\t\t\t\torbitRadius: lop.orbitRadius,\n\t\t\t\torbitAzimuth: lop.orbitAzimuth,\n\t\t\t\torbitElevation: lop.orbitElevation,\n\t\t\t\tmaterial: lop.material,\n\t\t\t\tshininess: lop.shininess,\n\t\t\t\troughness: lop.roughness,\n\t\t\t\tspecularIntensity: lop.specularIntensity,\n\t\t\t\tambientIntensity: lop.ambientIntensity,\n\t\t\t\tmetallic: lop.metallic,\n\t\t\t\temissive: lop.emissive,\n\t\t\t\temissiveIntensity: lop.emissiveIntensity,\n\t\t\t\tclearcoat: lop.clearcoat,\n\t\t\t\tclearcoatRoughness: lop.clearcoatRoughness,\n\t\t\t\tanisotropy: lop.anisotropy,\n\t\t\t\tanisotropyRotation: lop.anisotropyRotation,\n\t\t\t\tsubsurface: lop.subsurface,\n\t\t\t\tsubsurfaceColor: lop.subsurfaceColor,\n\t\t\t\tsheen: lop.sheen,\n\t\t\t\tsheenColor: lop.sheenColor,\n\t\t\t\tsheenRoughness: lop.sheenRoughness,\n\t\t\t\tiridescence: lop.iridescence,\n\t\t\t\tiridescenceThickness: lop.iridescenceThickness,\n\t\t\t\tiridescenceIor: lop.iridescenceIor,\n\t\t\t\ttriplanar: lop.triplanar,\n\t\t\t\ttriplanarScale: lop.triplanarScale,\n\t\t\t\ttriplanarSharpness: lop.triplanarSharpness,\n\t\t\t\tlightType: lop.lightType,\n\t\t\t\tcolor: lop.color,\n\t\t\t\tintensity: lop.intensity,\n\t\t\t\tradius: lop.radius,\n\t\t\t\tangle: lop.angle,\n\t\t\t\tpenumbra: lop.penumbra,\n\t\t\t\texposure: lop.exposure,\n\t\t\t\thdri: typeof lop.hdri === \"string\" ? lop.hdri : Boolean(lop.hdri),\n\t\t\t\tvolumetricFog: lop.volumetricFog,\n\t\t\t\tvolumetricFogDensity: lop.volumetricFogDensity,\n\t\t\t\tvolumetricFogAnisotropy: lop.volumetricFogAnisotropy,\n\t\t\t\tvolumetricFogNoiseStrength: lop.volumetricFogNoiseStrength,\n\t\t\t\tanimationProgress: lop.animationProgress,\n\t\t\t\tanimationTime: lop.animationTime,\n\t\t\t\tanimationSpeed: lop.animationSpeed,\n\t\t\t\twireframe: lop.wireframe,\n\t\t\t\tscaleX: lop.scaleX,\n\t\t\t\tscaleY: lop.scaleY,\n\t\t\t\tfontSize: lop.fontSize,\n\t\t\t\ttext: lop.text\n\t\t\t};\n\t\t}),\n\t\twidth,\n\t\theight,\n\t\tfps,\n\t\tdurationSec\n\t}));\n}\nfunction compileTimeline(renderId, virtualMedia, options) {\n\tconst fps = options.fps;\n\tconst durationSec = options.durationSec;\n\tconst width = virtualMedia?.metadata?.width ?? 1920;\n\tconst height = virtualMedia?.metadata?.height ?? 1080;\n\tconst nodeOps = collectNodeOps(virtualMedia?.children ?? []);\n\tconst memoKey = virtualMedia?.children;\n\tconst memo = memoKey ? nodesHashMemo.get(memoKey) : void 0;\n\tlet nodesHash;\n\tif (memo && memo.width === width && memo.height === height && memo.fps === fps && memo.durationSec === durationSec) nodesHash = memo.hash;\n\telse {\n\t\tnodesHash = hashNodes(nodeOps, width, height, fps, durationSec);\n\t\tif (memoKey) nodesHashMemo.set(memoKey, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfps,\n\t\t\tdurationSec,\n\t\t\thash: nodesHash\n\t\t});\n\t}\n\tconst irHash = fnv1a(`${nodesHash}|${signalsKey(virtualMedia?.operation?.signals ?? virtualMedia?.signals)}`);\n\tconst cacheKey = `${renderId}_${irHash}`;\n\tconst cached = getCachedTimeline(cacheKey);\n\tif (cached) return cached;\n\tconst tl = gsap.timeline({\n\t\tpaused: true,\n\t\tsmoothChildTiming: false\n\t});\n\tconst targetsById = {};\n\tconst signals = virtualMedia?.operation?.signals ?? virtualMedia?.signals ?? {};\n\tnodeOps.forEach((vm, index) => {\n\t\tconst lop = vm?.operation || {};\n\t\tconst layerId = lop.id || lop.inputHandleId || `layer_${index}`;\n\t\tconst stub = {\n\t\t\tid: layerId,\n\t\t\tinputHandleId: lop.inputHandleId || `layer_${index}`,\n\t\t\ttrackId: layerId,\n\t\t\tx: lop.kind === \"camera\" || lop.kind === \"light\" ? lop.x ?? lop.cameraX : lop.x ?? 0,\n\t\t\ty: lop.kind === \"camera\" || lop.kind === \"light\" ? lop.y ?? lop.cameraY : lop.y ?? 0,\n\t\t\tscale: lop.scale ?? 1,\n\t\t\trotation: lop.rotation ?? 0,\n\t\t\topacity: lop.opacity ?? 1,\n\t\t\tvolume: lop.volume ?? 1,\n\t\t\twidth: lop.width,\n\t\t\theight: lop.height,\n\t\t\thidden: !!lop.hidden,\n\t\t\tmuted: !!lop.muted,\n\t\t\trotateX: lop.rotateX ?? 0,\n\t\t\trotateY: lop.rotateY ?? 0,\n\t\t\trotateZ: lop.rotateZ ?? 0,\n\t\t\tperspective: lop.perspective ?? 0,\n\t\t\tperspectiveOriginX: lop.perspectiveOriginX ?? .5,\n\t\t\tperspectiveOriginY: lop.perspectiveOriginY ?? .5,\n\t\t\ttranslateZ: lop.translateZ ?? 0,\n\t\t\tbackfaceVisibility: lop.backfaceVisibility ?? \"visible\",\n\t\t\ttransformStyle: lop.transformStyle ?? \"flat\",\n\t\t\tfontSize: lop.fontSize,\n\t\t\ttext: 1,\n\t\t\tfill: lop.fill,\n\t\t\tfillColor: lop.fillColor ?? lop.fill,\n\t\t\tstrokeColor: lop.strokeColor ?? lop.stroke,\n\t\t\tstrokeWidth: lop.strokeWidth,\n\t\t\tletterSpacing: lop.letterSpacing,\n\t\t\tfirstMargin: lop.firstMargin ?? lop.pathOptions?.firstMargin,\n\t\t\tlastMargin: lop.lastMargin ?? lop.pathOptions?.lastMargin,\n\t\t\tbaselineShift: lop.baselineShift ?? lop.pathOptions?.baselineShift,\n\t\t\toffset: lop.offset,\n\t\t\trangeStart: lop.rangeStart,\n\t\t\trangeEnd: lop.rangeEnd,\n\t\t\tanimators: lop.animators,\n\t\t\tpathOptions: lop.pathOptions,\n\t\t\ttypewriter: lop.typewriter,\n\t\t\tmarquee: lop.marquee,\n\t\t\tis3D: lop.is3D ?? (lop.kind === \"camera\" || lop.kind === \"light\" || lop.kind === \"model3d\" ? true : false),\n\t\t\tz: lop.z ?? (lop.kind === \"camera\" ? lop.z ?? -1500 : 0),\n\t\t\tscaleZ: lop.scaleZ ?? 1,\n\t\t\ttwoSided: lop.twoSided ?? lop.kind !== \"light\",\n\t\t\tmaterial: lop.material,\n\t\t\tshininess: lop.shininess,\n\t\t\troughness: lop.roughness,\n\t\t\tspecularIntensity: lop.specularIntensity,\n\t\t\tambientIntensity: lop.ambientIntensity,\n\t\t\tmetallic: lop.metallic,\n\t\t\temissive: lop.emissive,\n\t\t\temissiveIntensity: lop.emissiveIntensity,\n\t\t\tclearcoat: lop.clearcoat,\n\t\t\tclearcoatRoughness: lop.clearcoatRoughness,\n\t\t\tanisotropy: lop.anisotropy,\n\t\t\tanisotropyRotation: lop.anisotropyRotation,\n\t\t\tsubsurface: lop.subsurface,\n\t\t\tsubsurfaceColor: lop.subsurfaceColor,\n\t\t\tsheen: lop.sheen,\n\t\t\tsheenColor: lop.sheenColor,\n\t\t\tsheenRoughness: lop.sheenRoughness,\n\t\t\tiridescence: lop.iridescence,\n\t\t\tiridescenceThickness: lop.iridescenceThickness,\n\t\t\tiridescenceIor: lop.iridescenceIor,\n\t\t\ttriplanar: lop.triplanar,\n\t\t\ttriplanarScale: lop.triplanarScale,\n\t\t\ttriplanarSharpness: lop.triplanarSharpness,\n\t\t\tanimationProgress: lop.animationProgress ?? 0,\n\t\t\tanimationTime: lop.animationTime ?? 0,\n\t\t\tanimationSpeed: lop.animationSpeed ?? 1,\n\t\t\twireframe: lop.wireframe ?? false,\n\t\t\tscaleX: lop.scaleX ?? 1,\n\t\t\tscaleY: lop.scaleY ?? 1,\n\t\t\tcameraX: lop.cameraX ?? (lop.kind === \"camera\" ? lop.x : void 0),\n\t\t\tcameraY: lop.cameraY ?? (lop.kind === \"camera\" ? lop.y : void 0),\n\t\t\tcameraZ: lop.cameraZ ?? (lop.kind === \"camera\" ? lop.z : void 0),\n\t\t\ttargetX: lop.targetX,\n\t\t\ttargetY: lop.targetY,\n\t\t\ttargetZ: lop.targetZ,\n\t\t\tcameraPitch: lop.cameraPitch ?? lop.pitch ?? 0,\n\t\t\tcameraYaw: lop.cameraYaw ?? lop.yaw ?? 0,\n\t\t\tcameraRoll: lop.cameraRoll ?? lop.roll ?? 0,\n\t\t\tcameraFov: lop.cameraFov ?? lop.lens?.fov ?? 50,\n\t\t\tcameraZoom: lop.cameraZoom ?? lop.lens?.zoom ?? 1,\n\t\t\tfocalLength: lop.focalLength ?? lop.lens?.focalLength ?? 50,\n\t\t\tfocusDistance: lop.focusDistance ?? lop.dof?.focusDistance,\n\t\t\tfStop: lop.fStop ?? lop.dof?.fStop ?? 2.8,\n\t\t\tmaxBlurRadius: lop.maxBlurRadius ?? lop.dof?.maxBlurRadius ?? 24,\n\t\t\tshakeTranslation: lop.shakeTranslation ?? (lop.shake?.enabled ? lop.shake?.translationAmplitude ?? 0 : 0),\n\t\t\tshakeRotation: lop.shakeRotation ?? (lop.shake?.enabled ? lop.shake?.rotationAmplitude ?? 0 : 0),\n\t\t\trelativitySpeed: lop.relativitySpeed ?? lop.relativity?.speed ?? 0,\n\t\t\torbitRadius: lop.orbitRadius,\n\t\t\torbitAzimuth: lop.orbitAzimuth,\n\t\t\torbitElevation: lop.orbitElevation,\n\t\t\tlightType: lop.lightType,\n\t\t\tcolor: lop.color,\n\t\t\tintensity: lop.intensity ?? (lop.kind === \"light\" ? 1 : void 0),\n\t\t\tradius: lop.radius,\n\t\t\tangle: lop.angle,\n\t\t\tpenumbra: lop.penumbra,\n\t\t\tdecay: lop.decay,\n\t\t\texposure: lop.exposure,\n\t\t\tvolumetricFogDensity: lop.volumetricFogDensity,\n\t\t\tvolumetricFogAnisotropy: lop.volumetricFogAnisotropy,\n\t\t\tvolumetricFogNoiseStrength: lop.volumetricFogNoiseStrength\n\t\t};\n\t\tfor (const track of layerTracks(lop)) if ((track.source ?? { type: \"keyframe\" }).type !== \"keyframe\") stub[track.prop] = evaluateTrackAtFrame(track, lop.startFrame ?? 0, fps, {\n\t\t\tstartFrame: lop.startFrame ?? 0,\n\t\t\tbaseValues: stub,\n\t\t\tsignals\n\t\t});\n\t\telse if (track.keyframes && track.keyframes.length > 0) {\n\t\t\tconst first = track.keyframes.reduce((a, b) => b.frame < a.frame ? b : a);\n\t\t\tconst seeded = stub;\n\t\t\tif (!DISCRETE_PROPS.has(track.prop) || first.frame === 0) seeded[track.prop] = first.value;\n\t\t\telse if (seeded[track.prop] === void 0) seeded[track.prop] = lop[track.prop] ?? first.value;\n\t\t}\n\t\ttargetsById[layerId] = stub;\n\t});\n\tconst truncations = [];\n\tconst live = [];\n\tnodeOps.forEach((vm) => {\n\t\tconst lop = vm?.operation || {};\n\t\tconst layerId = lop.id || lop.inputHandleId;\n\t\tconst stub = layerId ? targetsById[layerId] : void 0;\n\t\tif (!stub) return;\n\t\tconst startFrame = lop.startFrame ?? 0;\n\t\tlet durationFrames = lop.durationFrames;\n\t\tif (durationFrames === void 0) {\n\t\t\tconst child = vm.children?.[0];\n\t\t\tconst childMeta = child ? getActiveMediaMetadata(child) : null;\n\t\t\tconst composeDuration = virtualMedia?.metadata?.durationMs ?? DEFAULT_DURATION_MS;\n\t\t\tconst layerType = lop.type ?? (lop.kind === \"text\" ? \"Text\" : lop.kind === \"media\" ? child ? child.operation?.dataType : void 0 : void 0);\n\t\t\tconst durationMs = resolveLayerDuration(void 0, childMeta?.durationMs ?? void 0, composeDuration, layerType);\n\t\t\tdurationFrames = Math.max(1, Math.round(durationMs / 1e3 * fps));\n\t\t}\n\t\tfor (const track of layerTracks(lop)) {\n\t\t\tconst { dropped, maxAuthoredFrame } = compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames, signals, live, lop.animation?.frameStep);\n\t\t\tif (dropped > 0) truncations.push({\n\t\t\t\tlayerId,\n\t\t\t\ttrackId: track.id,\n\t\t\t\tprop: track.prop,\n\t\t\t\tdropped,\n\t\t\t\tmaxAuthoredFrame\n\t\t\t});\n\t\t}\n\t});\n\tif (truncations.length > 0) {\n\t\twarnTruncationOnce(renderId.startsWith(\"img-\") ? `frame_${irHash}` : cacheKey, truncations);\n\t\tfor (const t of truncations) reportRenderDiagnostic(renderId, {\n\t\t\tseverity: \"warning\",\n\t\t\tcode: \"animation_truncated\",\n\t\t\tlayerId: t.layerId,\n\t\t\tmessage: `'${t.prop}' on '${t.layerId}': ${t.dropped} keyframe(s) past the clip window (last authored frame ${t.maxAuthoredFrame}) never play`\n\t\t});\n\t}\n\ttl.seek(1e-6);\n\ttl.seek(0);\n\tconst compileResult = {\n\t\tkey: cacheKey,\n\t\ttl,\n\t\ttargetsById,\n\t\tnodes: nodeOps,\n\t\tlive,\n\t\tsignals\n\t};\n\tsetCachedTimeline(cacheKey, compileResult);\n\treturn compileResult;\n}\nconst layerTimelineCache = /* @__PURE__ */ new Map();\nfunction compileLayerTimeline(layerId, animation, baseVolume, baseMuted, fps) {\n\tconst cacheKey = `layer_${layerId}_${fnv1a(stableStringify({\n\t\tanimation,\n\t\tbaseVolume,\n\t\tbaseMuted,\n\t\tfps\n\t}))}`;\n\tconst cached = layerTimelineCache.get(cacheKey);\n\tif (cached) {\n\t\tif (Date.now() - cached.cacheTime <= CACHE_TTL_MS) {\n\t\t\tcached.cacheTime = Date.now();\n\t\t\treturn cached.value;\n\t\t}\n\t\tlayerTimelineCache.delete(cacheKey);\n\t\trelease(cached.value);\n\t}\n\tconst tl = gsap.timeline({\n\t\tpaused: true,\n\t\tsmoothChildTiming: false\n\t});\n\tconst stub = {\n\t\tvolume: baseVolume,\n\t\tmuted: baseMuted\n\t};\n\tconst tracks = animation?.tracks ?? [];\n\tfor (const track of tracks) {\n\t\tconst prop = track.prop;\n\t\tif (prop !== \"volume\" && prop !== \"muted\") continue;\n\t\tcompileTrackToTimeline(tl, stub, track, 0, fps, Infinity);\n\t}\n\ttl.seek(1e-6);\n\ttl.seek(0);\n\tconst result = {\n\t\ttl,\n\t\tstub\n\t};\n\tevictForInsert(layerTimelineCache, LAYER_TIMELINE_CACHE_MAX);\n\tlayerTimelineCache.set(cacheKey, {\n\t\tcacheTime: Date.now(),\n\t\tvalue: result\n\t});\n\treturn result;\n}\n\n//#endregion\n//#region src/renderers/character.ts\n/**\n* Character animation for the compositor: poses a model from its clip\n* layers, look-at and IK constraints (targets in scene coordinates) and\n* spring bones (replayed from frame 0 and cached, so frames render the\n* same in any order); and the per-instance records of skinned crowds.\n*/\nconst transformPoint$1 = (m, p) => [\n\tm[0] * p[0] + m[4] * p[1] + m[8] * p[2] + m[12],\n\tm[1] * p[0] + m[5] * p[1] + m[9] * p[2] + m[13],\n\tm[2] * p[0] + m[6] * p[1] + m[10] * p[2] + m[14]\n];\nconst transformDir = (m, v) => [\n\tm[0] * v[0] + m[4] * v[1] + m[8] * v[2],\n\tm[1] * v[0] + m[5] * v[1] + m[9] * v[2],\n\tm[2] * v[0] + m[6] * v[1] + m[10] * v[2]\n];\n/**\n* A mesh's morph weights: the clip's (or the file's defaults), with any\n* target the layer names in `morphs` set from its track. Names match\n* case-insensitively against the mesh's `morphTargetNames`.\n*/\nfunction namedMorphWeights(names, base, morphs, clock) {\n\tif (!morphs || !names?.length) return base;\n\tconst out = [...base];\n\tconst index = new Map(names.map((n, i) => [n.toLowerCase(), i]));\n\tfor (const [name, track] of Object.entries(morphs)) {\n\t\tconst i = index.get(name.toLowerCase());\n\t\tif (i !== void 0) out[i] = numberAt(track, clock, out[i] ?? 0);\n\t}\n\treturn out;\n}\n/** Whether a node needs the rig evaluator (anything beyond one plain clip). */\nfunction hasRig(n) {\n\treturn Boolean(n.animationLayers?.length || n.ik?.length || n.lookAt?.length || n.springBones?.length || n.pose && Object.keys(n.pose).length || n.aim?.length || n.drive?.length);\n}\n/** Local rotation for Euler degrees, applied Z, then Y, then X (R = Rz · Ry · Rx), like layers. */\nfunction eulerQuat(rx, ry, rz) {\n\tconst h = (d) => d * Math.PI / 360;\n\tconst [sx, cx] = [Math.sin(h(rx)), Math.cos(h(rx))];\n\tconst [sy, cy] = [Math.sin(h(ry)), Math.cos(h(ry))];\n\tconst [sz, cz] = [Math.sin(h(rz)), Math.cos(h(rz))];\n\treturn [\n\t\tcz * cy * sx - sz * sy * cx,\n\t\tcz * sy * cx + sz * cy * sx,\n\t\tsz * cy * cx - cz * sy * sx,\n\t\tcz * cy * cx + sz * sy * sx\n\t];\n}\nfunction jointPoses(p, clock) {\n\treturn Object.entries(p.node.pose ?? {}).map(([joint, j]) => ({\n\t\tjoint,\n\t\trotation: eulerQuat(numberAt(j.rotateX, clock, 0), numberAt(j.rotateY, clock, 0), numberAt(j.rotateZ, clock, 0)),\n\t\toffset: [\n\t\t\tnumberAt(j.x, clock, 0),\n\t\t\tnumberAt(j.y, clock, 0),\n\t\t\tnumberAt(j.z, clock, 0)\n\t\t],\n\t\tweight: numberAt(j.weight, clock, 1),\n\t\tmode: j.mode ?? \"additive\"\n\t}));\n}\nfunction clipLayers(p, frame) {\n\tconst layers = p.node.animationLayers;\n\tif (!layers?.length) return p.clip ? [{\n\t\tclip: p.clip,\n\t\ttime: p.clipSec,\n\t\tweight: 1\n\t}] : [];\n\tconst out = [];\n\tfor (const l of layers) {\n\t\tconst [clip] = resolveClips(p.model, [l.clip]);\n\t\tif (!clip) continue;\n\t\tlet time = (l.timeOffset ?? 0) + frame / p.fps * (l.speed ?? 1);\n\t\tif (clip.duration > 0) time = l.loop ?? true ? (time % clip.duration + clip.duration) % clip.duration : Math.min(Math.max(time, 0), clip.duration);\n\t\tout.push({\n\t\t\tclip,\n\t\t\ttime,\n\t\t\tweight: numberAt(l.weight, {\n\t\t\t\tframe,\n\t\t\t\tfps: p.fps\n\t\t\t}, 1),\n\t\t\tmask: l.mask\n\t\t});\n\t}\n\treturn out;\n}\nfunction constraintsAt(p, frame, toModel) {\n\tconst clock = {\n\t\tframe,\n\t\tfps: p.fps\n\t};\n\tconst point = (t) => transformPoint$1(toModel, vec3At(t, clock));\n\tconst direction = (t) => transformDir(toModel, vec3At(t, clock));\n\treturn {\n\t\tpose: jointPoses(p, clock),\n\t\taim: (p.node.aim ?? []).map((a) => ({\n\t\t\tjoint: a.joint,\n\t\t\tdirection: direction(a.direction),\n\t\t\tweight: numberAt(a.weight, clock, 1),\n\t\t\t...a.axis && { axis: a.axis }\n\t\t})),\n\t\tik: (p.node.ik ?? []).map((c) => ({\n\t\t\tchain: c.chain,\n\t\t\ttarget: point(c.target),\n\t\t\tpole: c.poleTarget ? point(c.poleTarget) : void 0,\n\t\t\tweight: numberAt(c.weight, clock, 1)\n\t\t})),\n\t\tdrive: [...p.model.drivers ?? [], ...p.node.drive ?? []],\n\t\tlookAt: (p.node.lookAt ?? []).map((c) => ({\n\t\t\tjoint: c.joint,\n\t\t\ttarget: point(c.target),\n\t\t\tweight: numberAt(c.weight, clock, 1),\n\t\t\tmaxAngleDeg: c.maxAngleDeg ?? 70,\n\t\t\taxis: c.axis ?? [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t1\n\t\t\t]\n\t\t}))\n\t};\n}\n/** The pose before springs: blended clips, then constraints. */\nfunction basePose(p, frame, toModel) {\n\tconst rig = blendClipLayers(p.model, clipLayers(p, frame));\n\tapplyConstraints(rig, constraintsAt(p, frame, toModel));\n\treturn rig;\n}\nconst springStates = /* @__PURE__ */ new Map();\nfunction springsAt(p, toModel, rig) {\n\tconst chains = p.node.springBones;\n\tif (!chains?.length) return void 0;\n\tconst config = JSON.stringify([\n\t\tchains,\n\t\tp.node.animationLayers,\n\t\tp.node.pose,\n\t\tp.node.aim,\n\t\tp.fps\n\t]);\n\tlet s = springStates.get(p.key);\n\tconst frame = Math.max(0, Math.floor(p.frame));\n\tif (!s || s.model !== p.model || s.config !== config || s.frame > frame) {\n\t\tconst gravityModel = (g) => transformDir(toModel, g ?? [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t]);\n\t\ts = {\n\t\t\tmodel: p.model,\n\t\t\tconfig,\n\t\t\tsprings: new SpringBones(rig, chains.map((c) => ({\n\t\t\t\t...c,\n\t\t\t\tgravity: gravityModel(c.gravity)\n\t\t\t}))),\n\t\t\tframe: -1\n\t\t};\n\t\tif (springStates.size > 256) springStates.clear();\n\t\tspringStates.set(p.key, s);\n\t}\n\tfor (let f = s.frame + 1; f <= frame; f++) {\n\t\ts.springs.step(basePose(p, f, toModel), 1 / p.fps);\n\t\ts.frame = f;\n\t}\n\treturn s.springs;\n}\n/** Model-space node matrices for this frame. */\nfunction poseCharacter(p) {\n\tif (!hasRig(p.node) && !p.model.drivers?.length) return poseNodes(p.model, p.clip, p.clipSec);\n\tconst toModel = Matrix4Math.invert(p.sceneRoot) ?? Matrix4Math.identity();\n\tconst rig = basePose(p, p.frame, toModel);\n\tspringsAt(p, toModel, rig)?.apply(rig);\n\treturn rig.world();\n}\nconst bakes = /* @__PURE__ */ new WeakMap();\nconst palettes = /* @__PURE__ */ new WeakMap();\n/** A baked palette on the GPU, uploaded once. */\nfunction paletteBuffer(device, palette) {\n\tlet buffer = palettes.get(palette);\n\tif (!buffer) {\n\t\tbuffer = device.createBuffer({\n\t\t\tlabel: \"CrowdPalette\",\n\t\t\tsize: Math.max(64, palette.byteLength),\n\t\t\tusage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST\n\t\t});\n\t\tdevice.queue.writeBuffer(buffer, 0, palette);\n\t\tpalettes.set(palette, buffer);\n\t}\n\treturn buffer;\n}\n/** The model's crowd palette for these clips, baked once. */\nfunction crowdBake(model, crowd) {\n\tconst key = JSON.stringify([crowd.clips, crowd.fps ?? 30]);\n\tlet byKey = bakes.get(model);\n\tif (!byKey) {\n\t\tbyKey = /* @__PURE__ */ new Map();\n\t\tbakes.set(model, byKey);\n\t}\n\tlet bake = byKey.get(key);\n\tif (!bake) {\n\t\tconst clips = resolveClips(model, crowd.clips);\n\t\tif (!clips.length) return void 0;\n\t\tbake = bakeCrowdPalette(model, clips, crowd.fps ?? 30);\n\t\tbyKey.set(key, bake);\n\t}\n\treturn bake;\n}\n/**\n* Instance `i`'s second record: (first baked frame, frames per loop, phase\n* in frames, frames per second of playback). Unset fields come from the seed: clip i % n, a random\n* phase, a speed within `speedRange`.\n*/\nfunction crowdRecord(bake, crowd, i, anim) {\n\tconst rand = createRandom((crowd.seed ?? 1) * 7919 + i * 104729);\n\tconst pick = rand();\n\tconst speedDraw = rand();\n\tconst clipIndex = (anim.clip ?? i) % bake.clips.length;\n\tconst range = bake.clips[Math.max(0, clipIndex)];\n\tconst [s0, s1] = crowd.speedRange ?? [1, 1];\n\tconst offset = anim.animOffset ?? ((crowd.phase ?? \"random\") === \"random\" ? pick * range.duration : 0);\n\tconst rate = range.duration > 0 ? range.count / range.duration : bake.fps;\n\treturn [\n\t\trange.base,\n\t\trange.count,\n\t\toffset * rate,\n\t\t(anim.animSpeed ?? s0 + (s1 - s0) * speedDraw) * rate\n\t];\n}\n\n//#endregion\n//#region src/renderers/container-bg.ts\n/**\n* Which container kinds paint their own background.\n*\n* flex/block/box all accept an optional `background` in the program schema.\n* The renderer must draw the rounded background pass for ALL of them (the old\n* code only painted `box`, so flex/block backgrounds were silently dropped and\n* their \"transparent-optimized\" fast path skipped the fill entirely).\n*/\nfunction shouldPaintContainerBackground(kind, background) {\n\tif (!background) return false;\n\treturn kind === \"flex\" || kind === \"block\" || kind === \"box\";\n}\n\n//#endregion\n//#region src/renderers/cube-camera.ts\n/** Largest face a cube camera picks on its own; `lens.cubeSize` may go higher. */\nconst DEFAULT_MAX_FACE = 4096;\n/**\n* The cube camera an authored camera asks for, or null for an ordinary\n* perspective view. A camera with `relativity` is always a cube camera, even\n* at speed 0, so a shot that accelerates from rest never switches pipelines.\n*/\nfunction resolveCubeCamera(authored, camera, speed, width, height, maxTextureSize) {\n\tconst projection = authored?.lens?.projection ?? \"perspective\";\n\tconst relativity = authored?.relativity;\n\tif (projection === \"perspective\" && !relativity) return null;\n\tconst lens = {\n\t\tprojection,\n\t\tfov: camera.fov,\n\t\tzoom: camera.zoom\n\t};\n\tconst requested = authored?.lens?.cubeSize;\n\tconst faceSize = Math.min(maxTextureSize, requested ?? defaultCubeFaceSize(lens, width, height, Math.min(DEFAULT_MAX_FACE, maxTextureSize)));\n\tconst basis = cameraBasis(camera);\n\tconst observer = relativity ? {\n\t\tspeed,\n\t\tdirection: relativity.direction ? Vector3Math.normalize(relativity.direction) : basis.forward,\n\t\tdoppler: relativity.doppler ?? true,\n\t\tbeaming: relativity.beaming ?? true,\n\t\texposure: relativity.exposure ?? \"auto\"\n\t} : null;\n\treturn {\n\t\tfaceSize,\n\t\tremap: {\n\t\t\t...lens,\n\t\t\tbasis,\n\t\t\tobserver\n\t\t},\n\t\tcenterDensity: lensCenterDensity(lens, width, height)\n\t};\n}\n\n//#endregion\n//#region src/renderers/fracture.ts\n/**\n* Whether the pieces are all still where they started at `frame` (or there\n* is no track): the layer looks whole, and its cut faces, hidden inside,\n* need not draw (where pieces meet, a cut face can tie the surface's depth).\n*/\nfunction fractureWhole(model, spec, frame) {\n\tconst track = spec.track;\n\tconst stride = (model.nodes?.length ?? 0) * 7;\n\tif (!track?.length || !stride) return true;\n\tconst frames = Math.floor(track.length / stride);\n\tconst at = Math.min(Math.max(Math.ceil(frame), 0), frames - 1) * stride;\n\tfor (let i = 0; i < stride; i++) if (track[at + i] !== track[i]) return false;\n\treturn true;\n}\n/** The fractured model for a node's source model (cached per model and spec). */\nfunction fracturedModel(model, spec) {\n\treturn fractureModel(model, spec).model;\n}\nfunction poseAt(track, at) {\n\treturn {\n\t\tp: [\n\t\t\ttrack[at],\n\t\t\ttrack[at + 1],\n\t\t\ttrack[at + 2]\n\t\t],\n\t\tq: [\n\t\t\ttrack[at + 3],\n\t\t\ttrack[at + 4],\n\t\t\ttrack[at + 5],\n\t\t\ttrack[at + 6]\n\t\t]\n\t};\n}\nfunction blend(a, b, t) {\n\tif (t <= 0) return a;\n\tconst sign = a.q.reduce((s, v, i) => s + v * b.q[i], 0) < 0 ? -1 : 1;\n\tconst q = a.q.map((v, i) => v + (b.q[i] * sign - v) * t);\n\tconst len = Math.hypot(...q) || 1;\n\treturn {\n\t\tp: a.p.map((v, i) => v + (b.p[i] - v) * t),\n\t\tq: q.map((v) => v / len)\n\t};\n}\n/**\n* Model-space matrices of the pieces' nodes at `frame`. The track is in the\n* layer's parent space (physics reads the layer's own x/y/z, as for any\n* body), and `layerProps` is the layer's matrix in that space, L. A piece\n* at pose (p, q) has node matrix L⁻¹ · T(p) · R(q) · S, so with its inverse\n* bind T(−centroid) a vertex lands at parent · (p + q · S · (v − centroid)):\n* pieces fly in their group, like other bodies. Undefined without a track.\n*/\nfunction fracturePose(model, spec, frame, layerProps, scale$1) {\n\tconst track = spec.track;\n\tconst pieces = model.nodes?.length ?? 0;\n\tconst stride = pieces * 7;\n\tif (!track?.length || !stride || track.length % stride !== 0) return void 0;\n\tconst frames = track.length / stride;\n\tconst f = Math.min(Math.max(frame, 0), frames - 1);\n\tconst f0 = Math.floor(f);\n\tconst f1 = Math.min(frames - 1, f0 + 1);\n\tconst toModel = Matrix4Math.invert(layerProps) ?? Matrix4Math.identity();\n\tconst out = [];\n\tfor (let i = 0; i < pieces; i++) {\n\t\tconst { p, q } = blend(poseAt(track, f0 * stride + i * 7), poseAt(track, f1 * stride + i * 7), f - f0);\n\t\tout.push(Matrix4Math.multiply(toModel, trsMatrix(p, q, scale$1)));\n\t}\n\treturn out;\n}\n\n//#endregion\n//#region src/renderers/mesh-instancing.ts\nconst TRANSFORMS = new Set([\n\t\"position\",\n\t\"rotation\",\n\t\"scale\",\n\t\"modelMatrix\",\n\t\"normalMatrix\",\n\t\"bounds\"\n]);\n/** Compare material state without treating different GPU resources as equal. */\nfunction sameValue(a, b) {\n\tif (a === b) return true;\n\tif (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((value, i) => sameValue(value, b[i]));\n\tif (!a || !b || typeof a !== \"object\" || typeof b !== \"object\") return false;\n\tif (Object.getPrototypeOf(a) !== Object.prototype || Object.getPrototypeOf(b) !== Object.prototype) return false;\n\tconst left = a;\n\tconst right = b;\n\tconst keys = Object.keys(left);\n\treturn keys.length === Object.keys(right).length && keys.every((key) => Object.hasOwn(right, key) && sameValue(left[key], right[key]));\n}\nfunction canInstanceMesh(item) {\n\tconst o = item.opts;\n\treturn !item.meshBuffers && !o.transparent && !o.instanceBuffer && (o.instanceCount ?? 1) === 1 && !o.firstInstance && !o.matrixInstances && !o.isSkinned && !o.skinningMatrices && !o.audioDeform && !o.morphWeights?.length && o.material !== \"glass\" && o.material !== \"acrylic\" && o.material !== \"frosted\" && (o.opacity ?? 1) >= 1 && (o.colorTint?.[3] ?? 1) >= 1;\n}\nfunction compatibleMeshDraws(a, b) {\n\tif (!canInstanceMesh(a) || !canInstanceMesh(b) || a.mesh !== b.mesh || a.texture !== b.texture) return false;\n\tconst left = a.opts;\n\tconst right = b.opts;\n\tconst keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n\tfor (const key of keys) if (!TRANSFORMS.has(key) && !sameValue(left[key], right[key])) return false;\n\treturn true;\n}\n\n//#endregion\n//#region src/renderers/motion-history.ts\n/** Two frames of one value: the latest and the one before it. */\nvar Slots = class {\n\tframe = NaN;\n\tvalue;\n\tprevFrame = NaN;\n\tprevValue;\n\twrite(frame, value) {\n\t\tif (frame !== this.frame) {\n\t\t\tthis.prevFrame = this.frame;\n\t\t\tthis.prevValue = this.value;\n\t\t}\n\t\tthis.frame = frame;\n\t\tthis.value = value;\n\t}\n\t/** The value at `frame`, if it is one of the two held. */\n\tat(frame) {\n\t\tif (frame === this.frame) return this.value;\n\t\tif (frame === this.prevFrame) return this.prevValue;\n\t}\n};\nvar MotionHistory = class {\n\tstates = /* @__PURE__ */ new Map();\n\tinstances;\n\tvertices;\n\tcamera = new Slots();\n\t/** Frames recorded, latest last (two kept). */\n\tframes = new Slots();\n\tconstructor(device) {\n\t\tthis.instances = new GpuPairs(device, \"Instances\");\n\t\tthis.vertices = new GpuPairs(device, \"Vertices\");\n\t}\n\t/** Whether rendering `frame` must render `frame - 1` first to know its motion. */\n\tneedsPrevious(frame) {\n\t\treturn frame > 0 && this.frames.at(frame - 1) === void 0;\n\t}\n\tpreviousCamera(frame) {\n\t\treturn this.camera.at(frame - 1);\n\t}\n\t/** A mesh's state at `frame - 1`, shaped for the velocity pass. */\n\tpreviousMesh(key, frame, now) {\n\t\tconst prev = this.states.get(key)?.at(frame - 1);\n\t\tif (prev?.kind !== \"mesh\") return void 0;\n\t\tconst out = { modelMatrix: prev.modelMatrix };\n\t\tif (now.skinning && prev.skinning?.length === now.skinning.length) out.skinningMatrices = prev.skinning;\n\t\tconst copy = this.instances.at(key, frame - 1);\n\t\tif (now.instanceBuffer && copy && prev.instanceBytes === now.instanceBuffer.size) out.instanceBuffer = copy;\n\t\tconst vertices = this.vertices.at(key, frame - 1);\n\t\tif (now.vertexBytes && vertices && prev.vertexBytes === now.vertexBytes) out.vertexBuffer = vertices;\n\t\tif (now.wind && prev.windTime !== void 0) out.wind = {\n\t\t\t...now.wind,\n\t\t\ttime: prev.windTime\n\t\t};\n\t\tif (now.crowd && prev.crowdTime !== void 0) out.crowd = {\n\t\t\t...now.crowd,\n\t\t\ttime: prev.crowdTime\n\t\t};\n\t\treturn out;\n\t}\n\tpreviousQuad(key, frame) {\n\t\tconst prev = this.states.get(key)?.at(frame - 1);\n\t\treturn prev?.kind === \"quad\" ? prev.modelMatrix : void 0;\n\t}\n\t/**\n\t* Records a mesh at `frame`; its instance records and deformed vertices\n\t* (when the GPU deforms it) are copied in `encoder`.\n\t*/\n\trecordMesh(encoder, key, frame, state, buffers) {\n\t\tconst { instanceBuffer, vertices } = buffers;\n\t\tif (instanceBuffer) this.instances.copy(encoder, key, frame, instanceBuffer, instanceBuffer.size, GPUBufferUsage.STORAGE);\n\t\tif (vertices) this.vertices.copy(encoder, key, frame, vertices.buffer, vertices.bytes, GPUBufferUsage.VERTEX);\n\t\tthis.slots(key).write(frame, {\n\t\t\tkind: \"mesh\",\n\t\t\t...state,\n\t\t\t...state.skinning && { skinning: state.skinning.slice() },\n\t\t\tinstanceBytes: instanceBuffer?.size,\n\t\t\tvertexBytes: vertices?.bytes\n\t\t});\n\t}\n\tpreviousSlug(key, frame) {\n\t\tconst prev = this.states.get(key)?.at(frame - 1);\n\t\treturn prev?.kind === \"slug\" ? prev : void 0;\n\t}\n\t/** Records a text plane at `frame`; glyph records are copied (batches are rebuilt each frame). */\n\trecordSlug(key, frame, modelMatrix, batches) {\n\t\tthis.slots(key).write(frame, {\n\t\t\tkind: \"slug\",\n\t\t\tmodelMatrix,\n\t\t\tbatches: batches.map((b) => ({\n\t\t\t\t...b,\n\t\t\t\tinstances: b.instances.slice(0, b.instanceCount * 24)\n\t\t\t}))\n\t\t});\n\t}\n\trecordQuad(key, frame, modelMatrix) {\n\t\tthis.slots(key).write(frame, {\n\t\t\tkind: \"quad\",\n\t\t\tmodelMatrix\n\t\t});\n\t}\n\trecordFrame(frame, camera) {\n\t\tthis.camera.write(frame, camera);\n\t\tthis.frames.write(frame, true);\n\t}\n\tslots(key) {\n\t\tlet s = this.states.get(key);\n\t\tif (!s) {\n\t\t\ts = new Slots();\n\t\t\tthis.states.set(key, s);\n\t\t}\n\t\treturn s;\n\t}\n};\n/** GPU copies of a buffer per key, one per frame parity. */\nvar GpuPairs = class {\n\tpairs = /* @__PURE__ */ new Map();\n\tconstructor(device, label) {\n\t\tthis.device = device;\n\t\tthis.label = label;\n\t}\n\tat(key, frame) {\n\t\treturn this.pairs.get(key)?.[frame & 1];\n\t}\n\tcopy(encoder, key, frame, source, bytes, usage) {\n\t\tconst pair = this.pairs.get(key) ?? [];\n\t\tconst slot = frame & 1;\n\t\tlet copy = pair[slot];\n\t\tif (!copy || copy.size !== bytes) {\n\t\t\tcopy?.destroy();\n\t\t\tcopy = this.device.createBuffer({\n\t\t\t\tlabel: `MotionHistory${this.label}:${key}`,\n\t\t\t\tsize: bytes,\n\t\t\t\tusage: usage | GPUBufferUsage.COPY_DST\n\t\t\t});\n\t\t\tpair[slot] = copy;\n\t\t\tthis.pairs.set(key, pair);\n\t\t}\n\t\tencoder.copyBufferToBuffer(source, 0, copy, 0, bytes);\n\t}\n};\nconst histories = /* @__PURE__ */ new Map();\n/** The motion history of one composition render (by render id). */\nfunction motionHistory(device, renderId) {\n\tlet h = histories.get(renderId);\n\tif (!h) {\n\t\tif (histories.size > 64) histories.clear();\n\t\th = new MotionHistory(device);\n\t\thistories.set(renderId, h);\n\t}\n\treturn h;\n}\n\n//#endregion\n//#region src/renderers/procedural3d.ts\n/** T · Rz · Ry · Rx · S: the transform the compositor draws a model with. */\nfunction nodeMatrix(n) {\n\tconst rad = Math.PI / 180;\n\tconst s = n.scale ?? 1;\n\tlet m = Matrix4Math.translate(n.x ?? 0, n.y ?? 0, n.z ?? 0);\n\tif (n.rotateZ) m = Matrix4Math.multiply(m, Matrix4Math.rotateZ(n.rotateZ * rad));\n\tif (n.rotateY) m = Matrix4Math.multiply(m, Matrix4Math.rotateY(n.rotateY * rad));\n\tif (n.rotateX) m = Matrix4Math.multiply(m, Matrix4Math.rotateX(n.rotateX * rad));\n\treturn Matrix4Math.multiply(m, Matrix4Math.scale(s * (n.scaleX ?? 1), s * (n.scaleY ?? 1), s * (n.scaleZ ?? 1)));\n}\nconst isModel = (v) => typeof v === \"object\" && v !== null && \"meshes\" in v;\n/** The surface's mesh: in memory, rebuilt from its primitive spec, or loaded. */\nasync function surfaceModel(n, load) {\n\tif (isModel(n.modelData)) return n.modelData;\n\tif (n.primitive3d) return getPrimitiveGeometry(n.primitive3d);\n\tif (n.src) return load(n.src, n);\n}\nconst NO_PRE = {\n\tq: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1\n\t],\n\ts: 1\n};\nfunction composeQuat(a, b) {\n\treturn [\n\t\ta[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],\n\t\ta[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],\n\t\ta[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],\n\t\ta[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]\n\t];\n}\n/** The variant's lowest point after its own rotation and scale: the largest y (up is -y). */\nfunction variantBottom(model, pre) {\n\tconst b = model.bounds;\n\tif (!b) return 0;\n\tlet bottom = Number.NEGATIVE_INFINITY;\n\tfor (let k = 0; k < 8; k++) {\n\t\tconst corner = [\n\t\t\tk & 1 ? b.max[0] : b.min[0],\n\t\t\tk & 2 ? b.max[1] : b.min[1],\n\t\t\tk & 4 ? b.max[2] : b.min[2]\n\t\t];\n\t\tbottom = Math.max(bottom, rotateByQuat(pre.q, corner)[1] * pre.s);\n\t}\n\treturn bottom;\n}\nconst cache = /* @__PURE__ */ new WeakMap();\n/**\n* Instance transforms for a scatter: points on the surface, each seated on\n* its variant's base (instance i draws variant i % bottoms.length; bottoms\n* already include the variant's own rotation and scale).\n*/\nfunction scatterTransforms(scatter, surface, bottoms) {\n\tconst surfaceNode = scatter.surface;\n\tconst key = JSON.stringify([bottoms, surface.bounds?.size]);\n\tconst hit = cache.get(scatter);\n\tif (hit && hit.key === key) return hit.out;\n\tconst { points } = scatterOnSurface({\n\t\tmodel: surface,\n\t\tmatrix: nodeMatrix(surfaceNode)\n\t}, scatter);\n\tconst n = Math.max(1, bottoms.length);\n\tconst out = points.map((p, i) => {\n\t\tconst [x, y, z] = seatOnSurface(p, bottoms[i % n] ?? 0, scatter.sink ?? 0);\n\t\treturn {\n\t\t\tx,\n\t\t\ty,\n\t\t\tz,\n\t\t\trotation: p.rotation,\n\t\t\tscale: p.scale\n\t\t};\n\t});\n\tcache.set(scatter, {\n\t\tkey,\n\t\tout\n\t});\n\treturn out;\n}\n/** The wind a mesh of `model` sways in at `seconds`, or undefined when calm. */\nfunction meshWind(wind, model, seconds) {\n\tif (!wind) return void 0;\n\tconst b = model.bounds;\n\tconst height = b ? b.size[1] : 0;\n\tif (!b || height <= 0) return void 0;\n\treturn {\n\t\tamplitudeDeg: wind.amplitudeDeg ?? 8,\n\t\tfrequency: wind.frequency ?? .4,\n\t\tdirection: wind.direction ?? [1, 0],\n\t\twaveScale: wind.waveScale ?? 600,\n\t\ttime: seconds,\n\t\tbaseY: b.max[1],\n\t\theight\n\t};\n}\n\n//#endregion\n//#region src/renderers/transform.ts\nfunction translate(tx, ty) {\n\treturn {\n\t\ta: 1,\n\t\tb: 0,\n\t\tc: 0,\n\t\td: 1,\n\t\te: tx,\n\t\tf: ty\n\t};\n}\n/** Rotation in degrees (screen convention: positive = clockwise, y-down). */\nfunction rotate(degrees) {\n\tconst rad = degrees * Math.PI / 180;\n\tconst cos = Math.cos(rad);\n\tconst sin = Math.sin(rad);\n\treturn {\n\t\ta: cos,\n\t\tb: sin,\n\t\tc: -sin,\n\t\td: cos,\n\t\te: 0,\n\t\tf: 0\n\t};\n}\nfunction scale(sx, sy = sx) {\n\treturn {\n\t\ta: sx,\n\t\tb: 0,\n\t\tc: 0,\n\t\td: sy,\n\t\te: 0,\n\t\tf: 0\n\t};\n}\n/** m1 ∘ m2 (m2 applied first — matches DOMMatrix.multiply ordering). */\nfunction multiply(m1, m2) {\n\treturn {\n\t\ta: m1.a * m2.a + m1.c * m2.b,\n\t\tb: m1.b * m2.a + m1.d * m2.b,\n\t\tc: m1.a * m2.c + m1.c * m2.d,\n\t\td: m1.b * m2.c + m1.d * m2.d,\n\t\te: m1.a * m2.e + m1.c * m2.f + m1.e,\n\t\tf: m1.b * m2.e + m1.d * m2.f + m1.f\n\t};\n}\nfunction transformPoint(m, x, y) {\n\treturn {\n\t\tx: m.a * x + m.c * y + m.e,\n\t\ty: m.b * x + m.d * y + m.f\n\t};\n}\n/** Materialize into a DOMMatrix for the renderer's transform stack. */\nfunction toDOMMatrix(m) {\n\treturn new DOMMatrix([\n\t\tm.a,\n\t\tm.b,\n\t\tm.c,\n\t\tm.d,\n\t\tm.e,\n\t\tm.f\n\t]);\n}\n/**\n* Layer transform matrix with anchor-aware pivot semantics.\n*\n* The composition node box is drawn at (0, 0, width, height) in local space\n* and positioned at `x`/`y`. `anchorX`/`anchorY` (0–1 fractions of the box)\n* select the pivot point that scale/rotation are applied AROUND:\n*\n* position → pivot → rotate → scale → un-pivot\n*\n* With the default center anchor (0.5, 0.5) a `scale: 2` animation grows the\n* node symmetrically from its middle instead of from its top-left corner.\n* The pivot point itself is invariant under rotation and scale.\n*/\nfunction buildLayerMatrix(params) {\n\tconst ax = params.anchorX ?? .5;\n\tconst ay = params.anchorY ?? .5;\n\tconst px = ax * params.width;\n\tconst py = ay * params.height;\n\tconst uniformScale = params.scale ?? 1;\n\tconst sx = (params.scaleX ?? 1) * uniformScale;\n\tconst sy = (params.scaleY ?? 1) * uniformScale;\n\treturn multiply(translate(params.x, params.y), multiply(translate(px, py), multiply(rotate(params.rotation), multiply(scale(sx, sy), translate(-px, -py)))));\n}\n/**\n* Resolves a layer's 2D world position on the canvas.\n*\n* For top-level layers, this is the layout position + animated translation delta.\n* For children inside a 2D parent container, this inherits the parent container's\n* 2D translation and transformation (parentMatrix).\n*/\nfunction resolveLayer2DPosition(params) {\n\tconst baseX = params.baseX ?? 0;\n\tconst baseY = params.baseY ?? 0;\n\tconst sampledX = params.sampledX ?? baseX;\n\tconst sampledY = params.sampledY ?? baseY;\n\tlet localX = 0;\n\tlet localY = 0;\n\tif (params.rect && params.parentRect) {\n\t\tlocalX = params.rect.x - params.parentRect.x + (sampledX - baseX);\n\t\tlocalY = params.rect.y - params.parentRect.y + (sampledY - baseY);\n\t} else if (params.rect) {\n\t\tlocalX = params.rect.x + (sampledX - baseX);\n\t\tlocalY = params.rect.y + (sampledY - baseY);\n\t} else {\n\t\tlocalX = sampledX;\n\t\tlocalY = sampledY;\n\t}\n\tconst pm = params.parentMatrix;\n\tif (!pm) return {\n\t\tx: localX,\n\t\ty: localY\n\t};\n\tif (\"isIdentity\" in pm && pm.isIdentity) return {\n\t\tx: localX,\n\t\ty: localY\n\t};\n\treturn transformPoint(pm, localX, localY);\n}\n/** Past this many pixels per layout px a scaled-up layer gains nothing visible. */\nconst MAX_RASTER_SCALE = 4;\n/**\n* Pixels per layout px to rasterize a 2D layer at, so it stays sharp when its\n* transform onto the canvas scales it up by `axisScale` (the transform's\n* larger axis scale). Rounded up to a quarter, so an animated zoom reuses a\n* few texture sizes instead of allocating new ones every frame; not below 1\n* (a shrunk layer keeps its layout raster). Capped, rounded down to a quarter,\n* by MAX_RASTER_SCALE, by `limits.maxDimension` (the GPU's texture side), by\n* `limits.maxPixels` (a pixel budget for one texture) and by\n* `limits.effects`, the highest scale the layer's effects keep their look at.\n* The texture side is a hard limit: a layer longer than it at layout scale\n* (a tall reel strip, a long scroll) rasterizes just under it, below 1.\n*/\nfunction layerRasterScale(axisScale, size, limits) {\n\tconst w = Math.max(1, size.width);\n\tconst h = Math.max(1, size.height);\n\tconst cap = Math.min(MAX_RASTER_SCALE, limits.maxDimension / Math.max(w, h), Math.sqrt(limits.maxPixels / (w * h)), limits.effects);\n\tconst fits = limits.maxDimension / Math.max(w, h);\n\tif (fits < 1) return Math.floor(fits * 1024) / 1024;\n\tconst wanted = Math.ceil(axisScale * 4 - 1e-6) / 4;\n\treturn Math.max(1, Math.min(wanted, Math.floor(cap * 4 + 1e-6) / 4));\n}\n\n//#endregion\n//#region src/renderers/transform3d.ts\nconst Transform3DMath = {\n\tidentity() {\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\tmultiply(a, b) {\n\t\tconst out = new Array(16);\n\t\tfor (let row = 0; row < 4; row++) for (let col = 0; col < 4; col++) out[col * 4 + row] = a[0 + row] * b[col * 4 + 0] + a[4 + row] * b[col * 4 + 1] + a[8 + row] * b[col * 4 + 2] + a[12 + row] * b[col * 4 + 3];\n\t\treturn out;\n\t},\n\ttranslate(tx, ty, tz = 0) {\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\ttx,\n\t\t\tty,\n\t\t\ttz,\n\t\t\t1\n\t\t];\n\t},\n\tscale(sx, sy, sz = 1) {\n\t\treturn [\n\t\t\tsx,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tsy,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tsz,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateX(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tc,\n\t\t\ts,\n\t\t\t0,\n\t\t\t0,\n\t\t\t-s,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateY(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\tc,\n\t\t\t0,\n\t\t\t-s,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\ts,\n\t\t\t0,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateZ(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\tc,\n\t\t\ts,\n\t\t\t0,\n\t\t\t0,\n\t\t\t-s,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\tperspective(d) {\n\t\tif (d <= 0) return Transform3DMath.identity();\n\t\tconst m = Transform3DMath.identity();\n\t\tm[11] = -1 / d;\n\t\treturn m;\n\t},\n\tbuildLayer3DMatrix(config) {\n\t\tconst { x, y, width, height, rotateXDeg = 0, rotateYDeg = 0, rotateZDeg = 0, scaleX = 1, scaleY = 1, perspectivePx = 0, originXRatio = .5, originYRatio = .5, translateZPx = 0 } = config;\n\t\tconst pivotX = x + width * originXRatio;\n\t\tconst pivotY = y + height * originYRatio;\n\t\tconst rxRad = rotateXDeg * Math.PI / 180;\n\t\tconst ryRad = rotateYDeg * Math.PI / 180;\n\t\tconst rzRad = rotateZDeg * Math.PI / 180;\n\t\tlet m = Transform3DMath.identity();\n\t\tm = Transform3DMath.multiply(m, Transform3DMath.translate(pivotX, pivotY, 0));\n\t\tif (perspectivePx > 0) m = Transform3DMath.multiply(m, Transform3DMath.perspective(perspectivePx));\n\t\tif (translateZPx !== 0) m = Transform3DMath.multiply(m, Transform3DMath.translate(0, 0, translateZPx));\n\t\tif (rzRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateZ(rzRad));\n\t\tif (ryRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateY(ryRad));\n\t\tif (rxRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateX(rxRad));\n\t\tm = Transform3DMath.multiply(m, Transform3DMath.translate(-width * originXRatio, -height * originYRatio, 0));\n\t\tif (scaleX !== 1 || scaleY !== 1) m = Transform3DMath.multiply(m, Transform3DMath.scale(scaleX, scaleY, 1));\n\t\treturn m;\n\t},\n\tprojectPoint(m, p) {\n\t\tconst x = p.x;\n\t\tconst y = p.y;\n\t\tconst z = p.z;\n\t\tconst X = m[0] * x + m[4] * y + m[8] * z + m[12];\n\t\tconst Y = m[1] * x + m[5] * y + m[9] * z + m[13];\n\t\tconst W = m[3] * x + m[7] * y + m[11] * z + m[15];\n\t\tconst wInv = Math.abs(W) > 1e-6 ? 1 / W : 1;\n\t\treturn {\n\t\t\tx: X * wInv,\n\t\t\ty: Y * wInv\n\t\t};\n\t},\n\tprojectRectangleCorners(matrix, width, height) {\n\t\treturn {\n\t\t\ttopLeft: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\ttopRight: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: width,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\tbottomLeft: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: 0,\n\t\t\t\ty: height,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\tbottomRight: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: width,\n\t\t\t\ty: height,\n\t\t\t\tz: 0\n\t\t\t})\n\t\t};\n\t},\n\tcomputeSignedArea(quad) {\n\t\tconst { topLeft: p0, topRight: p1, bottomRight: p2, bottomLeft: p3 } = quad;\n\t\treturn .5 * (p0.x * p1.y - p1.x * p0.y + (p1.x * p2.y - p2.x * p1.y) + (p2.x * p3.y - p3.x * p2.y) + (p3.x * p0.y - p0.x * p3.y));\n\t}\n};\n/**\n* Checks whether a layer operation or compiled stub activates the 3D perspective path.\n*/\nfunction has3DTransform(target, lop) {\n\tconst rx = target?.rotateX ?? lop?.rotateX ?? 0;\n\tconst ry = target?.rotateY ?? lop?.rotateY ?? 0;\n\tconst rz = target?.rotateZ ?? lop?.rotateZ ?? 0;\n\tconst tz = target?.translateZ ?? lop?.translateZ ?? 0;\n\tconst p = target?.perspective ?? lop?.perspective ?? 0;\n\tif (rx !== 0 || ry !== 0 || tz !== 0 || p > 0 && (rx !== 0 || ry !== 0 || tz !== 0 || rz !== 0)) return true;\n\tif (target?.rotateZ !== void 0 && target.rotateZ !== 0 || lop?.rotateZ !== void 0 && lop.rotateZ !== 0) return true;\n\tconst tracks = lop?.animation?.tracks;\n\tif (tracks && tracks.length > 0) {\n\t\tfor (const t of tracks) if (t.prop === \"rotateX\" || t.prop === \"rotateY\" || t.prop === \"rotateZ\" || t.prop === \"translateZ\" || t.prop === \"perspective\") return true;\n\t}\n\treturn false;\n}\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst meshHasAlpha = /* @__PURE__ */ new WeakMap();\n/**\n* How far a text node's ink can reach past its layout box, in px: an outside\n* stroke reaches its full width past the outline (any other alignment, half),\n* a shadow its offset plus blur. One px of slack covers antialiasing.\n*/\nfunction textInkOutset(target, lop) {\n\tconst num = (v) => typeof v === \"number\" && v > 0 ? v : 0;\n\tconst width = num(target?.strokeWidth ?? lop.strokeWidth);\n\tconst stroke = Boolean(target?.stroke ?? target?.strokeColor ?? lop.stroke) ? lop.strokeAlign === \"outside\" ? width : width / 2 : 0;\n\tlet shadow = 0;\n\tconst shadows = lop.shadows;\n\tif (Array.isArray(shadows)) for (const s of shadows) shadow = Math.max(shadow, Math.max(Math.abs(s.offset?.x ?? 0), Math.abs(s.offset?.y ?? 0)) + 2 * num(s.blurRadius));\n\tconst reach = stroke + shadow;\n\treturn reach > 0 ? Math.ceil(reach) + 1 : 0;\n}\n/** Bytes of a mesh's vertex buffer: 16 floats per vertex. */\nfunction deformedBytes(mesh) {\n\treturn mesh.positions.length / 3 * 64;\n}\nfunction hasVertexAlpha(mesh) {\n\tconst cached = meshHasAlpha.get(mesh);\n\tif (cached !== void 0) return cached;\n\tconst colors = mesh.colors;\n\tlet transparent = false;\n\tif (colors) {\n\t\tfor (let i = 3; i < colors.length; i += 4) if (colors[i] < 1) {\n\t\t\ttransparent = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tmeshHasAlpha.set(mesh, transparent);\n\treturn transparent;\n}\nconst LAYOUT_PROPS = [\n\t\"width\",\n\t\"height\",\n\t\"gap\",\n\t\"padding\",\n\t\"fontSize\",\n\t\"letterSpacing\"\n];\nconst layoutMemo = /* @__PURE__ */ new WeakMap();\nfunction layoutKey(width, height, targetsById, mediaDims) {\n\tconst parts = [width, height];\n\tfor (const id in targetsById) {\n\t\tconst t = targetsById[id];\n\t\tfor (const k of LAYOUT_PROPS) if (t[k] !== void 0) parts.push(id, k, t[k]);\n\t}\n\tfor (const [id, d] of mediaDims) parts.push(id, d.width, d.height);\n\treturn JSON.stringify(parts);\n}\nconst compositorHomographyWgsl = `\nstruct HomographyUniforms {\n\tmatrix_row0 : vec4<f32>,\n\tmatrix_row1 : vec4<f32>,\n\tmatrix_row2 : vec4<f32>,\n\tparams : vec4<f32>, // params.x = opacity\n};\n\n@group(0) @binding(0) var<uniform> u : HomographyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet x = in.uv.x;\n\tlet y = in.uv.y;\n\n\tlet d = u.matrix_row2.x * x + u.matrix_row2.y * y + u.matrix_row2.z;\n\tif (d <= 1e-6) {\n\t\treturn vec4<f32>(0.0);\n\t}\n\n\tlet src_u = (u.matrix_row0.x * x + u.matrix_row0.y * y + u.matrix_row0.z) / d;\n\tlet src_v = (u.matrix_row1.x * x + u.matrix_row1.y * y + u.matrix_row1.z) / d;\n\n\tif (src_u < 0.0 || src_u > 1.0 || src_v < 0.0 || src_v > 1.0) {\n\t\treturn vec4<f32>(0.0);\n\t}\n\n\tlet color = textureSampleLevel(tex, samp, vec2<f32>(src_u, src_v), 0.0);\n\treturn color * u.params.x;\n}\n`;\nconst deviceHomographyCache = /* @__PURE__ */ new WeakMap();\nfunction getHomographyResources(device, format) {\n\tlet res = deviceHomographyCache.get(device);\n\tif (!res) {\n\t\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\t\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\t\tres = {\n\t\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\t\tlabel: \"CompositorHomographyPipeline\",\n\t\t\t\tmodule: device.createShaderModule({\n\t\t\t\t\tlabel: \"compositor_homography.wgsl\",\n\t\t\t\t\tcode: compositorHomographyWgsl\n\t\t\t\t}),\n\t\t\t\tlayouts: [uniformLayout, textureLayout],\n\t\t\t\tformat,\n\t\t\t\tblend: PREMULTIPLIED_BLEND\n\t\t\t}),\n\t\t\tuniformLayout,\n\t\t\ttextureLayout\n\t\t};\n\t\tdeviceHomographyCache.set(device, res);\n\t}\n\treturn res;\n}\nconst audioTrackLatentCache = /* @__PURE__ */ new Map();\nconst swarmStateMap = /* @__PURE__ */ new WeakMap();\nconst deviceRenderer3DCache = /* @__PURE__ */ new WeakMap();\n/** One Renderer3D per device, target format and MSAA sample count. */\n/** The command encoder the 3D pools were last recycled for, per device. */\nconst poolEncoder = /* @__PURE__ */ new WeakMap();\nfunction getRenderer3D(device, format, sampleCount) {\n\tlet byConfig = deviceRenderer3DCache.get(device);\n\tif (!byConfig) {\n\t\tbyConfig = /* @__PURE__ */ new Map();\n\t\tdeviceRenderer3DCache.set(device, byConfig);\n\t}\n\tconst key = `${format}|${sampleCount}`;\n\tlet r3d = byConfig.get(key);\n\tif (!r3d) {\n\t\tr3d = new Renderer3D(device, format, sampleCount);\n\t\tbyConfig.set(key, r3d);\n\t}\n\treturn r3d;\n}\nconst deviceRelightPipelineCache = /* @__PURE__ */ new WeakMap();\nfunction getScreenSpaceRelightPipeline(device, format) {\n\tlet relight = deviceRelightPipelineCache.get(device);\n\tif (!relight || relight.format !== format) {\n\t\trelight = new ScreenSpaceRelightPipeline(device, format);\n\t\tdeviceRelightPipelineCache.set(device, relight);\n\t}\n\treturn relight;\n}\nconst deviceDeflickerPipelineCache = /* @__PURE__ */ new WeakMap();\nfunction getTemporalDeflickerPipeline(device, layerKey) {\n\tlet map = deviceDeflickerPipelineCache.get(device);\n\tif (!map) {\n\t\tmap = /* @__PURE__ */ new Map();\n\t\tdeviceDeflickerPipelineCache.set(device, map);\n\t}\n\tlet pipe = map.get(layerKey);\n\tif (!pipe) {\n\t\tpipe = new TemporalDeflickerPipeline(device);\n\t\tmap.set(layerKey, pipe);\n\t}\n\treturn pipe;\n}\nfunction synthesizeRelightLights(relightOpts, sceneLights, bounds, shiftedFrame, fps) {\n\tif (sceneLights.length > 0 || relightOpts.lightType === void 0 && relightOpts.intensity === void 0 && relightOpts.lightPosX === void 0) return sceneLights;\n\tconst lightTypeStr = String(relightOpts.lightType ?? \"point\").toLowerCase();\n\tconst lightKind = lightTypeStr === \"directional\" ? \"directional\" : lightTypeStr === \"spot\" ? \"spot\" : \"point\";\n\tconst intensity = resolveFrameNumber(relightOpts.intensity ?? 1, 1, shiftedFrame, fps);\n\tconst normX = resolveFrameNumber(relightOpts.lightPosX, .5, shiftedFrame, fps);\n\tconst normY = resolveFrameNumber(relightOpts.lightPosY, .5, shiftedFrame, fps);\n\tconst normZ = resolveFrameNumber(relightOpts.lightPosZ, .25, shiftedFrame, fps);\n\tconst normRadius = resolveFrameNumber(relightOpts.lightRadius, .75, shiftedFrame, fps);\n\tconst lightX = bounds.x + normX * bounds.width;\n\tconst lightY = bounds.y + normY * bounds.height;\n\tconst lightZ = normZ * Math.max(bounds.width, bounds.height);\n\tconst lightRadius = normRadius * Math.max(bounds.width, bounds.height);\n\tconst synthLight = {\n\t\tlightType: lightKind,\n\t\tcolor: relightOpts.lightColor ?? \"#ffffff\",\n\t\tintensity,\n\t\tx: lightX,\n\t\ty: lightY,\n\t\tz: lightZ,\n\t\tradius: lightRadius,\n\t\tdecay: 1\n\t};\n\tconst ambientInt = resolveFrameNumber(relightOpts.ambientIntensity, .15, shiftedFrame, fps);\n\treturn [{\n\t\tlightType: \"ambient\",\n\t\tcolor: relightOpts.ambientColor ?? \"#ffffff\",\n\t\tintensity: ambientInt\n\t}, synthLight];\n}\nfunction drawProjectedQuad(ctx, encoder, destView, sourceTex, quad, destWidth, destHeight, opacity) {\n\tif (Math.abs(Transform3DMath.computeSignedArea(quad)) < 1e-4) return;\n\tconst minX = Math.max(0, Math.min(destWidth, Math.floor(Math.min(quad.topLeft.x, quad.topRight.x, quad.bottomLeft.x, quad.bottomRight.x))));\n\tconst minY = Math.max(0, Math.min(destHeight, Math.floor(Math.min(quad.topLeft.y, quad.topRight.y, quad.bottomLeft.y, quad.bottomRight.y))));\n\tconst maxX = Math.max(0, Math.min(destWidth, Math.ceil(Math.max(quad.topLeft.x, quad.topRight.x, quad.bottomLeft.x, quad.bottomRight.x))));\n\tconst maxY = Math.max(0, Math.min(destHeight, Math.ceil(Math.max(quad.topLeft.y, quad.topRight.y, quad.bottomLeft.y, quad.bottomRight.y))));\n\tconst scissorW = maxX - minX;\n\tconst scissorH = maxY - minY;\n\tif (scissorW <= 0 || scissorH <= 0) return;\n\tconst h = solveHomography([\n\t\t{\n\t\t\tx: quad.topLeft.x / destWidth,\n\t\t\ty: quad.topLeft.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.topRight.x / destWidth,\n\t\t\ty: quad.topRight.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.bottomLeft.x / destWidth,\n\t\t\ty: quad.bottomLeft.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.bottomRight.x / destWidth,\n\t\t\ty: quad.bottomRight.y / destHeight\n\t\t}\n\t]);\n\tfor (const val of h) if (!Number.isFinite(val)) return;\n\tconst uniformData = new Float32Array(16);\n\tuniformData[0] = h[0];\n\tuniformData[1] = h[1];\n\tuniformData[2] = h[2];\n\tuniformData[3] = 0;\n\tuniformData[4] = h[3];\n\tuniformData[5] = h[4];\n\tuniformData[6] = h[5];\n\tuniformData[7] = 0;\n\tuniformData[8] = h[6];\n\tuniformData[9] = h[7];\n\tuniformData[10] = h[8];\n\tuniformData[11] = 0;\n\tuniformData[12] = opacity;\n\tuniformData[13] = 0;\n\tuniformData[14] = 0;\n\tuniformData[15] = 0;\n\tconst { pipeline, uniformLayout, textureLayout } = getHomographyResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, sourceTex, sampler);\n\tconst renderPass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: destView,\n\t\tloadOp: \"load\",\n\t\tstoreOp: \"store\"\n\t}] });\n\trenderPass.setPipeline(pipeline);\n\trenderPass.setScissorRect(minX, minY, scissorW, scissorH);\n\trenderPass.setBindGroup(0, uniformBindGroup);\n\trenderPass.setBindGroup(1, textureBindGroup);\n\trenderPass.draw(4);\n\trenderPass.end();\n}\n/**\n* Emissive and shadow participation for a 3D draw: animated values first,\n* then the node's own, then (meshes) the model file's material.\n*/\nfunction surfaceProps(target, lop, mat) {\n\tconst toSrgb = (v) => v <= .0031308 ? 12.92 * v : 1.055 * v ** (1 / 2.4) - .055;\n\tconst emissive = target?.emissive ?? lop.emissive ?? (mat?.emissive ? [\n\t\ttoSrgb(mat.emissive[0]),\n\t\ttoSrgb(mat.emissive[1]),\n\t\ttoSrgb(mat.emissive[2])\n\t] : void 0);\n\tconst out = {};\n\tif (emissive !== void 0) {\n\t\tout.emissive = emissive;\n\t\tout.emissiveIntensity = target?.emissiveIntensity ?? lop.emissiveIntensity ?? mat?.emissiveStrength ?? 1;\n\t}\n\tif (lop.castShadow !== void 0) out.castShadow = lop.castShadow;\n\tout.toon = target?.toon ?? lop.toon;\n\tout.outline = target?.outline ?? lop.outline;\n\tconst file = mat?.surface;\n\tconst lobes = {\n\t\tclearcoat: target?.clearcoat ?? lop.clearcoat ?? file?.clearcoat,\n\t\tclearcoatRoughness: target?.clearcoatRoughness ?? lop.clearcoatRoughness ?? file?.clearcoatRoughness,\n\t\tanisotropy: target?.anisotropy ?? lop.anisotropy ?? file?.anisotropy,\n\t\tanisotropyRotation: target?.anisotropyRotation ?? lop.anisotropyRotation ?? file?.anisotropyRotation,\n\t\tsubsurface: target?.subsurface ?? lop.subsurface ?? file?.subsurface,\n\t\tsubsurfaceColor: target?.subsurfaceColor ?? lop.subsurfaceColor ?? file?.subsurfaceColor,\n\t\tsheen: target?.sheen ?? lop.sheen ?? file?.sheen,\n\t\tsheenColor: target?.sheenColor ?? lop.sheenColor ?? file?.sheenColor,\n\t\tsheenRoughness: target?.sheenRoughness ?? lop.sheenRoughness ?? file?.sheenRoughness,\n\t\tiridescence: target?.iridescence ?? lop.iridescence ?? file?.iridescence,\n\t\tiridescenceThickness: target?.iridescenceThickness ?? lop.iridescenceThickness ?? file?.iridescenceThickness,\n\t\tiridescenceIor: target?.iridescenceIor ?? lop.iridescenceIor ?? file?.iridescenceIor\n\t};\n\tfor (const [key, value] of Object.entries(lobes)) if (value !== void 0) out[key] = value;\n\tconst triplanar = target?.triplanar ?? lop.triplanar;\n\tif (triplanar !== void 0) out.triplanar = triplanar;\n\tconst triplanarScale = target?.triplanarScale ?? lop.triplanarScale;\n\tif (triplanarScale !== void 0) out.triplanarScale = triplanarScale;\n\tconst triplanarSharpness = target?.triplanarSharpness ?? lop.triplanarSharpness;\n\tif (triplanarSharpness !== void 0) out.triplanarSharpness = triplanarSharpness;\n\treturn out;\n}\n/** A transform's mean scale: the average length of its basis columns. */\nfunction matrixScale(m) {\n\tconst c = (i) => Math.hypot(m[i], m[i + 1], m[i + 2]);\n\treturn (c(0) + c(4) + c(8)) / 3;\n}\nfunction computeContainerScissor(matrix, width, height) {\n\tconst corners = [\n\t\tmatrix.transformPoint(new DOMPoint(0, 0)),\n\t\tmatrix.transformPoint(new DOMPoint(width, 0)),\n\t\tmatrix.transformPoint(new DOMPoint(0, height)),\n\t\tmatrix.transformPoint(new DOMPoint(width, height))\n\t];\n\tconst xs = corners.map((p) => p.x);\n\tconst ys = corners.map((p) => p.y);\n\tconst minX = Math.min(...xs);\n\tconst minY = Math.min(...ys);\n\tconst maxX = Math.max(...xs);\n\tconst maxY = Math.max(...ys);\n\treturn {\n\t\tx: Math.round(minX),\n\t\ty: Math.round(minY),\n\t\twidth: Math.max(0, Math.round(maxX - minX)),\n\t\theight: Math.max(0, Math.round(maxY - minY))\n\t};\n}\n/**\n* How far a layer's effects draw past its pixels, px: the sum of what each\n* effect's renderer declares (`reach`), or null as soon as one doesn't\n* (it then runs over the whole target, as any effect may need to).\n*/\nfunction effectsReach(effects) {\n\tlet reach = 0;\n\tfor (const e of effects) {\n\t\tconst op = e && typeof e.toOperation === \"function\" ? e.toOperation() : e;\n\t\tconst r = op ? effectReach(op) : null;\n\t\tif (r === null) return null;\n\t\treach += r;\n\t}\n\treturn reach;\n}\n/**\n* The most pixels per layout px a leaf's effects keep their look at: the\n* least any of them declares (`maxPixelScale`), 1 for one that doesn't.\n* Relighting runs in the leaf itself, at any scale.\n*/\nfunction effectsMaxPixelScale(effects) {\n\tlet limit = Number.POSITIVE_INFINITY;\n\tfor (const e of effects) {\n\t\tconst op = e && typeof e.toOperation === \"function\" ? e.toOperation() : e;\n\t\tif (!op || typeof op !== \"object\" || op.op === \"Relight3D\") continue;\n\t\tlimit = Math.min(limit, effectMaxPixelScale(op));\n\t}\n\treturn limit;\n}\n/**\n* Media content that draws in its layer's own units, so it can be drawn\n* under a raster scale: a source or a nested composition. Effect, crop and\n* vision passes wrapped around a source draw at their container's size in\n* their own pixel space instead.\n*/\nfunction drawsInLayerUnits(content) {\n\tconst op = content?.operation?.op;\n\treturn op === \"source\" || op === \"Compositor\";\n}\nfunction quatFromEulerAngles(rx, ry, rz) {\n\tconst DEG = Math.PI / 180;\n\tconst halfX = rx * DEG / 2;\n\tconst halfY = ry * DEG / 2;\n\tconst halfZ = rz * DEG / 2;\n\tconst cx = Math.cos(halfX);\n\tconst sx = Math.sin(halfX);\n\tconst cy = Math.cos(halfY);\n\tconst sy = Math.sin(halfY);\n\tconst cz = Math.cos(halfZ);\n\tconst sz = Math.sin(halfZ);\n\treturn [\n\t\tcz * cy * sx - sz * sy * cx,\n\t\tcz * sy * cx + sz * cy * sx,\n\t\tsz * cy * cx - cz * sy * sx,\n\t\tcz * cy * cx + sz * sy * sx\n\t];\n}\nfunction sampleColorRamp(ramp, factor) {\n\tif (!Array.isArray(ramp) || ramp.length === 0) {\n\t\tconst p = parseColor(ramp || \"#ffffff\") ?? {\n\t\t\tr: 1,\n\t\t\tg: 1,\n\t\t\tb: 1\n\t\t};\n\t\treturn [\n\t\t\tp.r,\n\t\t\tp.g,\n\t\t\tp.b\n\t\t];\n\t}\n\tif (ramp.length === 1) {\n\t\tconst p = parseColor(ramp[0]) ?? {\n\t\t\tr: 1,\n\t\t\tg: 1,\n\t\t\tb: 1\n\t\t};\n\t\treturn [\n\t\t\tp.r,\n\t\t\tp.g,\n\t\t\tp.b\n\t\t];\n\t}\n\tconst t = Math.max(0, Math.min(1, factor)) * (ramp.length - 1);\n\tconst idx = Math.min(Math.floor(t), ramp.length - 2);\n\tconst frac = t - idx;\n\tconst c0 = parseColor(ramp[idx]) ?? {\n\t\tr: 1,\n\t\tg: 1,\n\t\tb: 1\n\t};\n\tconst c1 = parseColor(ramp[idx + 1]) ?? {\n\t\tr: 1,\n\t\tg: 1,\n\t\tb: 1\n\t};\n\treturn [\n\t\tc0.r + (c1.r - c0.r) * frac,\n\t\tc0.g + (c1.g - c0.g) * frac,\n\t\tc0.b + (c1.b - c0.b) * frac\n\t];\n}\nfunction expandRect(r, by) {\n\treturn {\n\t\tx: r.x - by,\n\t\ty: r.y - by,\n\t\twidth: r.width + by * 2,\n\t\theight: r.height + by * 2\n\t};\n}\n/** `r` within a `width` × `height` target, in whole pixels; null when nothing is left. */\nfunction clampRect(r, width, height) {\n\tconst x0 = Math.max(0, Math.floor(r.x));\n\tconst y0 = Math.max(0, Math.floor(r.y));\n\tconst x1 = Math.min(width, Math.ceil(r.x + r.width));\n\tconst y1 = Math.min(height, Math.ceil(r.y + r.height));\n\treturn x1 > x0 && y1 > y0 ? {\n\t\tx: x0,\n\t\ty: y0,\n\t\twidth: x1 - x0,\n\t\theight: y1 - y0\n\t} : null;\n}\n/**\n* `applyLayerEffects` over `region` of a full-target texture only: the\n* region is cut out, its effects run at its size, and the result lands back\n* at its place in a full-target texture. Without a region (or when it is\n* most of the target) the effects run over the whole texture.\n*/\nasync function applyLayerEffectsInRegion(region, effects, sourceTex, width, height, ctx, encoder, props, drawChild, excludes, shiftedFrame, compositionFrame, fps, isVideoMode, layerId) {\n\tconst run = (tex, w, h, ex) => applyLayerEffects(effects, tex, w, h, ctx, encoder, props, drawChild, ex, shiftedFrame, compositionFrame, fps, isVideoMode, layerId);\n\tif (!region || region.width * region.height > width * height * .6) return run(sourceTex, width, height, excludes);\n\tconst blit = (dest, w, h, src, at) => {\n\t\tconst pass = ctx.renderer.beginFrame(encoder, dest.createView(), {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, w, h, \"clear\");\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: w,\n\t\t\theight: h\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tctx.renderer.drawTexture(pass, src, at, { opacity: 1 });\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\tpass.end();\n\t};\n\tconst cut = ctx.renderer.getTemporaryTexture(region.width, region.height, [sourceTex, ...excludes]);\n\tblit(cut, region.width, region.height, sourceTex, {\n\t\tx: -region.x,\n\t\ty: -region.y,\n\t\twidth,\n\t\theight\n\t});\n\tconst fx = await run(cut, region.width, region.height, [\n\t\tsourceTex,\n\t\tcut,\n\t\t...excludes\n\t]);\n\tconst out = ctx.renderer.getTemporaryTexture(width, height, [\n\t\tfx.texture,\n\t\tsourceTex,\n\t\tcut,\n\t\t...excludes\n\t]);\n\tblit(out, width, height, fx.texture, region);\n\treturn {\n\t\ttexture: out,\n\t\tview: out.createView()\n\t};\n}\n/**\n* Runs `effects` over `sourceTex` (`width`×`height` pixels, `pixelScale` of\n* them per layout px) into a new texture of its size.\n*/\nasync function applyLayerEffects(effects, sourceTex, width, height, ctx, encoder, props, drawChild, excludes, shiftedFrame, compositionFrame, fps, isVideoMode, layerId, pixelScale = 1) {\n\tconst remainingEffects = effects.filter((e) => {\n\t\tif (!e || typeof e !== \"object\") return false;\n\t\tconst op = e?.op;\n\t\tconst name = e?.constructor?.name;\n\t\tif (op === \"TemporalDeflicker\" || op === \"Deflicker\" || op === \"Relight3D\" || name === \"TemporalDeflicker\" || name === \"Relight3D\") return false;\n\t\treturn true;\n\t});\n\tif (remainingEffects.length === 0) return {\n\t\ttexture: sourceTex,\n\t\tview: sourceTex.createView()\n\t};\n\tlet currentMedia = {\n\t\tmetadata: {\n\t\t\twidth,\n\t\t\theight\n\t\t},\n\t\toperation: {\n\t\t\top: \"TextureSource\",\n\t\t\tsourceTexture: sourceTex,\n\t\t\tdataType: \"Image\"\n\t\t},\n\t\tchildren: []\n\t};\n\tfor (let i = 0; i < remainingEffects.length; i++) {\n\t\tconst eff = remainingEffects[i];\n\t\tconst effOp = eff && typeof eff.toOperation === \"function\" ? eff.toOperation() : eff;\n\t\tconst opName = String(effOp.op ?? \"effect\");\n\t\tcurrentMedia = {\n\t\t\tmetadata: {\n\t\t\t\twidth,\n\t\t\t\theight\n\t\t\t},\n\t\t\toperation: {\n\t\t\t\top: opName,\n\t\t\t\tid: `${layerId}-${opName}_${i}`,\n\t\t\t\teffect: eff,\n\t\t\t\t...effOp,\n\t\t\t\tdataType: \"Image\"\n\t\t\t},\n\t\t\tchildren: [currentMedia]\n\t\t};\n\t}\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [sourceTex, ...excludes]);\n\tconst outView = outTex.createView();\n\tctx.renderer.beginFrame(encoder, outView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\ttry {\n\t\tawait drawChild(currentMedia, {\n\t\t\t...props,\n\t\t\tcontainerWidth: width,\n\t\t\tcontainerHeight: height,\n\t\t\tpixelScale,\n\t\t\trenderId: `${props.renderId}-${layerId}-fx`,\n\t\t\tframe: shiftedFrame,\n\t\t\tcompositionFrame,\n\t\t\tfps,\n\t\t\tisVideoMode,\n\t\t\tsignals: props.signals,\n\t\t\texcludeTextures: [\n\t\t\t\tsourceTex,\n\t\t\t\toutTex,\n\t\t\t\t...excludes\n\t\t\t]\n\t\t}, outView, outTex, width, height);\n\t} finally {\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t}\n\treturn {\n\t\ttexture: outTex,\n\t\tview: outView\n\t};\n}\nconst CompositorWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetView, targetTexture, targetWidth, targetHeight, encoder, props, drawChild } = args;\n\tconst { virtualMedia, fps, frame } = props;\n\tconst op = virtualMedia.operation;\n\tif (!op) return;\n\tpass.end();\n\tif (op.op === \"CompositorLayer\") {\n\t\tconsole.warn(\"CompositorWebGPURenderer called directly with legacy CompositorLayer operation. This is a bug.\");\n\t\targs.pass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"load\");\n\t\treturn;\n\t}\n\tif (op.op === \"Compositor\") {\n\t\tconst vop = op;\n\t\tconst sampleCount3d = vop.antialias3d === false ? 1 : 4;\n\t\tconst containerWidth = props.containerWidth ?? ctx.surface.width;\n\t\tconst containerHeight = props.containerHeight ?? ctx.surface.height;\n\t\tconst nativeWidth = vop.width ?? containerWidth;\n\t\tconst nativeHeight = vop.height ?? containerHeight;\n\t\tconst opacity = typeof vop.opacity === \"number\" ? vop.opacity : 1;\n\t\tconst isVideoMode = props.isVideoMode ?? (vop.mode === \"Video\" || vop.dataType === \"Video\" || virtualMedia?.metadata?.durationMs != null);\n\t\tconst inheritedSeekOffset = props.inheritedSeekOffset ?? 0;\n\t\tconst shiftedFrame = Math.max(0, frame != null && fps != null ? frame + Math.round(inheritedSeekOffset * fps) : frame ?? 0);\n\t\tconst compositionFrame = props.compositionFrame ?? shiftedFrame;\n\t\tconst historyOnly = props.motionHistoryOnly === true;\n\t\tconst compTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [...props.excludeTextures || [], targetTexture]);\n\t\tconst compView = compTex.createView();\n\t\tconst composeDuration = virtualMedia?.metadata?.durationMs ?? DEFAULT_DURATION_MS;\n\t\tconst durationSec = composeDuration / 1e3;\n\t\tconst compiled = compileTimeline(props.renderId, virtualMedia, {\n\t\t\tfps: fps ?? 24,\n\t\t\tdurationSec\n\t\t});\n\t\tconst { targetsById } = compiled;\n\t\tif (!historyOnly && frame != null && sceneMotionBlur(virtualMedia) && motionHistory(ctx.device, compiled.key).needsPrevious(shiftedFrame)) await renderMotionHistory(args, frame - 1);\n\t\tseekTimeline(compiled, shiftedFrame, fps ?? 24);\n\t\tconst r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\tconst relightPipe = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\");\n\t\tif (poolEncoder.get(ctx.device) !== encoder) {\n\t\t\tpoolEncoder.set(ctx.device, encoder);\n\t\t\tr3d.resetPools();\n\t\t\trelightPipe.resetPools();\n\t\t}\n\t\tconst clearColor = parseColor(vop.backgroundColor);\n\t\tctx.renderer.beginFrame(encoder, compView, clearColor, nativeWidth, nativeHeight, \"clear\").end();\n\t\tlet currentCompTex = compTex;\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: nativeWidth,\n\t\t\theight: nativeHeight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait initLayout();\n\t\tconst mediaDims = /* @__PURE__ */ new Map();\n\t\tfor (const vm of collectNodeOps(virtualMedia.children)) {\n\t\t\tconst lop = vm.operation;\n\t\t\tif (lop.kind === \"media\") {\n\t\t\t\tconst meta = getActiveMediaMetadata(vm.children?.[0]);\n\t\t\t\tif (meta?.width && meta?.height) mediaDims.set(lop.id, {\n\t\t\t\t\twidth: meta.width,\n\t\t\t\t\theight: meta.height\n\t\t\t\t});\n\t\t\t\telse if (lop.dataType === \"Caption\" || (vm.children?.[0]?.operation)?.dataType === \"Caption\" || (vm.children?.[0]?.operation)?.srtText !== void 0) {\n\t\t\t\t\tconst lopWidth = targetsById[lop.id]?.width ?? lop.width;\n\t\t\t\t\tconst autoWidth = typeof lopWidth === \"number\" ? lopWidth : Math.round(nativeWidth * .8);\n\t\t\t\t\tconst lopHeight = targetsById[lop.id]?.height ?? lop.height;\n\t\t\t\t\tlet autoHeight = typeof lopHeight === \"number\" ? lopHeight : 160;\n\t\t\t\t\tconst contentVM = vm.children?.[0];\n\t\t\t\t\tconst src = resolveMediaSourceUrl(contentVM) ?? (contentVM?.operation)?.url ?? (contentVM?.operation)?.src ?? (contentVM?.operation)?.srtText ?? lop.src ?? lop.url;\n\t\t\t\t\tif (typeof lopHeight !== \"number\" && src) try {\n\t\t\t\t\t\tconst captions = await srtLoader.load(src);\n\t\t\t\t\t\tif (captions && captions.length > 0) autoHeight = measureMaxCaptionHeight(captions, lop, autoWidth);\n\t\t\t\t\t} catch {}\n\t\t\t\t\tmediaDims.set(lop.id, {\n\t\t\t\t\t\twidth: autoWidth,\n\t\t\t\t\t\theight: autoHeight\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst frameResolveNode = (vm) => {\n\t\t\tconst lop = vm?.operation ?? {};\n\t\t\tconst target = targetsById[lop.id];\n\t\t\tconst pick = (k) => target && target[k] !== void 0 ? target[k] : lop[k];\n\t\t\tconst node = {\n\t\t\t\t...lop,\n\t\t\t\twidth: pick(\"width\"),\n\t\t\t\theight: pick(\"height\"),\n\t\t\t\tgap: pick(\"gap\"),\n\t\t\t\tpadding: pick(\"padding\"),\n\t\t\t\tfontSize: pick(\"fontSize\"),\n\t\t\t\tletterSpacing: pick(\"letterSpacing\")\n\t\t\t};\n\t\t\tnode.children = (vm?.children ?? []).map(frameResolveNode);\n\t\t\tif (!node.children.length) node.children = void 0;\n\t\t\treturn node;\n\t\t};\n\t\tconst layoutRoots = () => (virtualMedia.children ?? []).map(frameResolveNode).filter((node) => node?.kind !== \"camera\" && node?.kind !== \"light\");\n\t\tconst memoTree = virtualMedia.children;\n\t\tconst memoKey = layoutKey(nativeWidth, nativeHeight, targetsById, mediaDims);\n\t\tconst memo = memoTree ? layoutMemo.get(memoTree) : void 0;\n\t\tconst { rects } = memo?.key === memoKey ? memo : await computeLayout({\n\t\t\tlayout: layoutRoots(),\n\t\t\tviewport: {\n\t\t\t\twidth: nativeWidth,\n\t\t\t\theight: nativeHeight\n\t\t\t},\n\t\t\tmeasure: (node, constraintWidth) => {\n\t\t\t\tif (node.kind === \"text\") {\n\t\t\t\t\tconst textStyle = {\n\t\t\t\t\t\tfontSize: node.fontSize ?? 48,\n\t\t\t\t\t\tfontWeight: node.fontWeight,\n\t\t\t\t\t\tfontVariations: node.fontVariations,\n\t\t\t\t\t\tfontFamily: node.fontFamily,\n\t\t\t\t\t\tletterSpacing: node.letterSpacing,\n\t\t\t\t\t\tlineHeight: node.lineHeight,\n\t\t\t\t\t\tpadding: node.padding,\n\t\t\t\t\t\tdirection: node.direction\n\t\t\t\t\t};\n\t\t\t\t\tif (constraintWidth !== void 0) {\n\t\t\t\t\t\tconst isAuto = typeof node.width !== \"number\";\n\t\t\t\t\t\tconst wrapped$1 = measureText(node.text ?? \"\", {\n\t\t\t\t\t\t\t...textStyle,\n\t\t\t\t\t\t\twidth: isAuto ? void 0 : constraintWidth,\n\t\t\t\t\t\t\tkeepNaturalWidth: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\twidth: isAuto ? Math.ceil(wrapped$1.width) : Math.min(constraintWidth, Math.ceil(wrapped$1.width)),\n\t\t\t\t\t\t\theight: Math.ceil(wrapped$1.height)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst natural = measureText(node.text ?? \"\", textStyle);\n\t\t\t\t\tif (typeof node.width !== \"number\") return {\n\t\t\t\t\t\twidth: Math.ceil(natural.width),\n\t\t\t\t\t\theight: Math.ceil(natural.height)\n\t\t\t\t\t};\n\t\t\t\t\tconst wrapped = measureText(node.text ?? \"\", {\n\t\t\t\t\t\t...textStyle,\n\t\t\t\t\t\twidth: node.width\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\twidth: Math.ceil(wrapped.width),\n\t\t\t\t\t\theight: Math.ceil(wrapped.height)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (node.kind === \"media\") return mediaDims.get(node.id) ?? null;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t\tif (memoTree && memo?.key !== memoKey) layoutMemo.set(memoTree, {\n\t\t\tkey: memoKey,\n\t\t\trects\n\t\t});\n\t\tconst allNodeOps = collectNodeOps(virtualMedia.children ?? []);\n\t\tconst cameraVMs = allNodeOps.filter((vm) => vm.operation?.kind === \"camera\");\n\t\tconst cameraVM = isVideoMode ? cameraVMs.filter((vm) => {\n\t\t\tconst op$1 = vm.operation;\n\t\t\tconst start = op$1.startFrame ?? 0;\n\t\t\tconst dur = op$1.durationFrames;\n\t\t\treturn shiftedFrame >= start && (dur === void 0 || shiftedFrame < start + dur);\n\t\t}).sort((a, b) => (b.operation.startFrame ?? 0) - (a.operation.startFrame ?? 0))[0] : cameraVMs[0];\n\t\tconst lightVMs = allNodeOps.filter((vm) => vm.operation?.kind === \"light\");\n\t\tconst has3DLayer = allNodeOps.some((vm) => {\n\t\t\tconst lop = vm.operation;\n\t\t\tconst target = lop.id ? targetsById[lop.id] : void 0;\n\t\t\treturn lop.kind !== \"camera\" && lop.kind !== \"light\" && (Boolean(target?.is3D ?? lop.is3D) || (target?.z ?? lop.z ?? 0) !== 0);\n\t\t});\n\t\tconst is3DScene = Boolean(cameraVM || has3DLayer || lightVMs.length > 0);\n\t\tlet camera = null;\n\t\t/** Where a relief keeps its look from: the default camera at the scene's field of view. */\n\t\tlet reliefEye = [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t];\n\t\tlet dofEnabled = false;\n\t\t/** Shutter motion blur of the 3D scene, and what its draws looked like a frame ago. */\n\t\tlet motionBlur = null;\n\t\tlet history = null;\n\t\t/** Set when the camera draws a cube map and remaps it through its lens. */\n\t\tlet cubeCamera = null;\n\t\tconst sceneLights = [];\n\t\tlet sceneEnvironment = null;\n\t\tlet sceneBloom = null;\n\t\tlet shadowMapSize;\n\t\tif (is3DScene) {\n\t\t\tconst camOp = cameraVM?.operation;\n\t\t\tconst camStub = camOp?.id ? targetsById[camOp.id] : void 0;\n\t\t\tconst fov = camStub?.cameraFov ?? camOp?.lens?.fov ?? 50;\n\t\t\tcamera = Camera3D.createDefaultCamera(nativeWidth, nativeHeight, fov);\n\t\t\treliefEye = [...camera.eye];\n\t\t\tcamera.near = camOp?.lens?.near ?? 1;\n\t\t\tcamera.far = camOp?.lens?.far ?? 5e4;\n\t\t\tcamera.zoom = camStub?.cameraZoom ?? camOp?.lens?.zoom ?? 1;\n\t\t\tconst defaultEye = camera.eye;\n\t\t\tconst defaultTarget = camera.target;\n\t\t\tconst eyeX = camStub?.cameraX ?? camStub?.x ?? camOp?.x ?? defaultEye[0];\n\t\t\tconst eyeY = camStub?.cameraY ?? camStub?.y ?? camOp?.y ?? defaultEye[1];\n\t\t\tconst eyeZ = camStub?.cameraZ ?? camStub?.z ?? camOp?.z ?? defaultEye[2];\n\t\t\tcamera.eye = [\n\t\t\t\teyeX,\n\t\t\t\teyeY,\n\t\t\t\teyeZ\n\t\t\t];\n\t\t\tif (camStub?.targetX !== void 0 || camStub?.targetY !== void 0 || camStub?.targetZ !== void 0 || camOp?.targetX !== void 0 || camOp?.targetY !== void 0 || camOp?.targetZ !== void 0) camera.target = [\n\t\t\t\tcamStub?.targetX ?? camOp?.targetX ?? defaultTarget[0],\n\t\t\t\tcamStub?.targetY ?? camOp?.targetY ?? defaultTarget[1],\n\t\t\t\tcamStub?.targetZ ?? camOp?.targetZ ?? defaultTarget[2]\n\t\t\t];\n\t\t\telse camera.target = [\n\t\t\t\teyeX,\n\t\t\t\teyeY,\n\t\t\t\t0\n\t\t\t];\n\t\t\tconst pitch = camStub?.cameraPitch ?? camOp?.pitch ?? 0;\n\t\t\tconst yaw = camStub?.cameraYaw ?? camOp?.yaw ?? 0;\n\t\t\tconst roll = camStub?.cameraRoll ?? camOp?.roll ?? 0;\n\t\t\tif (pitch !== 0 || yaw !== 0 || roll !== 0) camera = Camera3D.applyOrientation(camera, pitch, yaw, roll);\n\t\t\tconst orbitAzimuth = camStub?.orbitAzimuth;\n\t\t\tconst orbitElevation = camStub?.orbitElevation;\n\t\t\tconst orbitRadius = camStub?.orbitRadius;\n\t\t\tif (orbitAzimuth !== void 0 || orbitElevation !== void 0 || orbitRadius !== void 0) {\n\t\t\t\tconst radius = orbitRadius ?? Vector3Math.distance(camera.eye, camera.target);\n\t\t\t\tcamera.eye = Camera3D.orbit(camera.target, radius, orbitAzimuth ?? 0, orbitElevation ?? 0);\n\t\t\t}\n\t\t\tconst shakeTrans = camStub?.shakeTranslation ?? (camOp?.shake?.enabled ? camOp?.shake?.translationAmplitude : 0) ?? 0;\n\t\t\tconst shakeRot = camStub?.shakeRotation ?? (camOp?.shake?.enabled ? camOp?.shake?.rotationAmplitude : 0) ?? 0;\n\t\t\tif (shakeTrans > 0 || shakeRot > 0) {\n\t\t\t\tconst t = shiftedFrame / (fps ?? 24);\n\t\t\t\tcamera = Camera3D.applyCameraShake(camera, t, {\n\t\t\t\t\ttranslationAmplitude: shakeTrans,\n\t\t\t\t\trotationAmplitude: shakeRot,\n\t\t\t\t\tfrequency: camOp?.shake?.frequency ?? 1.5,\n\t\t\t\t\toctaves: camOp?.shake?.octaves ?? 3,\n\t\t\t\t\tseed: camOp?.shake?.seed ?? 42\n\t\t\t\t});\n\t\t\t}\n\t\t\tdofEnabled = Boolean(camOp?.dof?.enabled || camStub?.focusDistance !== void 0);\n\t\t\tif (dofEnabled) {\n\t\t\t\tcamera.focusDistance = camStub?.focusDistance ?? camOp?.dof?.focusDistance ?? Vector3Math.distance(camera.eye, camera.target);\n\t\t\t\tcamera.fStop = camStub?.fStop ?? camOp?.dof?.fStop ?? 2.8;\n\t\t\t\tcamera.maxBlurRadius = camStub?.maxBlurRadius ?? camOp?.dof?.maxBlurRadius ?? 24;\n\t\t\t}\n\t\t\tconst blur = camOp?.motionBlur;\n\t\t\tif (blur && fps) {\n\t\t\t\tmotionBlur = blur === true ? {} : blur;\n\t\t\t\thistory = motionHistory(ctx.device, compiled.key);\n\t\t\t}\n\t\t\tcubeCamera = resolveCubeCamera(camOp, camera, camStub?.relativitySpeed ?? camOp?.relativity?.speed ?? 0, nativeWidth, nativeHeight, ctx.device.limits.maxTextureDimension2D);\n\t\t\tif (cubeCamera && dofEnabled) throw new Error(`Camera '${camOp?.id}' is a cube camera (${camOp?.relativity ? \"relativity\" : camOp?.lens?.projection}) with depth of field: depth of field needs a single perspective view.`);\n\t\t\tfor (const lvm of lightVMs) {\n\t\t\t\tconst lop = lvm.operation;\n\t\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tif (target?.hidden || lop.hidden) continue;\n\t\t\t\tif (isVideoMode) {\n\t\t\t\t\tconst startFrame = lop.startFrame ?? 0;\n\t\t\t\t\tconst durationFrames = lop.durationFrames;\n\t\t\t\t\tif (shiftedFrame < startFrame) continue;\n\t\t\t\t\tif (durationFrames !== void 0 && shiftedFrame >= startFrame + durationFrames) continue;\n\t\t\t\t}\n\t\t\t\tconst lightType = target?.lightType ?? lop.lightType ?? \"point\";\n\t\t\t\tif (lightType === \"environment\") {\n\t\t\t\t\tconst intensity$1 = target?.intensity ?? lop.intensity;\n\t\t\t\t\tconst vfDensity = target?.volumetricFogDensity ?? lop.volumetricFogDensity;\n\t\t\t\t\tconst vfAnisotropy = target?.volumetricFogAnisotropy ?? lop.volumetricFogAnisotropy;\n\t\t\t\t\tconst vfNoiseStrength = target?.volumetricFogNoiseStrength ?? lop.volumetricFogNoiseStrength;\n\t\t\t\t\tconst rawVf = lop.volumetricFog;\n\t\t\t\t\tconst baseVf = rawVf === true ? {} : rawVf && typeof rawVf === \"object\" ? { ...rawVf } : void 0;\n\t\t\t\t\tconst volumetricFog = baseVf ? {\n\t\t\t\t\t\t...baseVf,\n\t\t\t\t\t\t...vfDensity !== void 0 && { density: vfDensity },\n\t\t\t\t\t\t...vfAnisotropy !== void 0 && { anisotropy: vfAnisotropy },\n\t\t\t\t\t\t...vfNoiseStrength !== void 0 && { noise: {\n\t\t\t\t\t\t\t...typeof baseVf.noise === \"object\" ? baseVf.noise : {},\n\t\t\t\t\t\t\tstrength: vfNoiseStrength\n\t\t\t\t\t\t} }\n\t\t\t\t\t} : void 0;\n\t\t\t\t\tsceneEnvironment = {\n\t\t\t\t\t\tpreset: lop.preset,\n\t\t\t\t\t\thdri: lop.hdri,\n\t\t\t\t\t\ttop: lop.top,\n\t\t\t\t\t\thorizon: lop.horizon,\n\t\t\t\t\t\tbottom: lop.bottom,\n\t\t\t\t\t\tsoftboxes: target?.softboxes ?? lop.softboxes,\n\t\t\t\t\t\trotation: target?.rotation ?? lop.rotation,\n\t\t\t\t\t\texposure: target?.exposure ?? lop.exposure,\n\t\t\t\t\t\ttoneMapping: lop.toneMapping,\n\t\t\t\t\t\tfog: lop.fog,\n\t\t\t\t\t\tfloor: lop.floor,\n\t\t\t\t\t\toutlines: lop.outlines,\n\t\t\t\t\t\tssr: lop.ssr,\n\t\t\t\t\t\tgi: lop.gi,\n\t\t\t\t\t\t...volumetricFog && { volumetricFog },\n\t\t\t\t\t\t...intensity$1 !== void 0 && { intensity: intensity$1 }\n\t\t\t\t\t};\n\t\t\t\t\tsceneBloom = lop.bloom === true ? {} : lop.bloom && typeof lop.bloom === \"object\" ? { ...lop.bloom } : null;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst color = parseColor(target?.color ?? lop.color ?? \"#ffffff\");\n\t\t\t\tconst intensity = target?.intensity ?? lop.intensity ?? 1;\n\t\t\t\tconst x = target?.x ?? lop.x ?? 0;\n\t\t\t\tconst y = target?.y ?? lop.y ?? 0;\n\t\t\t\tconst z = target?.z ?? lop.z ?? 0;\n\t\t\t\tconst targetX = target?.targetX ?? lop.targetX ?? 0;\n\t\t\t\tconst targetY = target?.targetY ?? lop.targetY ?? 0;\n\t\t\t\tconst targetZ = target?.targetZ ?? lop.targetZ ?? 0;\n\t\t\t\tconst radius = target?.radius ?? lop.radius ?? 1e3;\n\t\t\t\tconst angle = target?.angle ?? lop.angle ?? 45;\n\t\t\t\tconst penumbra = target?.penumbra ?? lop.penumbra ?? .2;\n\t\t\t\tconst decay = target?.decay ?? lop.decay ?? 1;\n\t\t\t\tconst width = typeof (target?.width ?? lop.width) === \"number\" ? target?.width ?? lop.width : void 0;\n\t\t\t\tconst height = typeof (target?.height ?? lop.height) === \"number\" ? target?.height ?? lop.height : void 0;\n\t\t\t\tconst twoSided = Boolean(target?.twoSided ?? lop.twoSided);\n\t\t\t\tconst rotation = target?.rotation ?? lop.rotation ?? 0;\n\t\t\t\tsceneLights.push({\n\t\t\t\t\ttype: lightType,\n\t\t\t\t\tcolor,\n\t\t\t\t\tintensity,\n\t\t\t\t\tposition: [\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tz\n\t\t\t\t\t],\n\t\t\t\t\ttarget: [\n\t\t\t\t\t\ttargetX,\n\t\t\t\t\t\ttargetY,\n\t\t\t\t\t\ttargetZ\n\t\t\t\t\t],\n\t\t\t\t\t...Array.isArray(lop.direction) && { direction: lop.direction },\n\t\t\t\t\tradius,\n\t\t\t\t\tangle,\n\t\t\t\t\tpenumbra,\n\t\t\t\t\tdecay,\n\t\t\t\t\t...width !== void 0 && { width },\n\t\t\t\t\t...height !== void 0 && { height },\n\t\t\t\t\ttwoSided,\n\t\t\t\t\trotation,\n\t\t\t\t\tcastShadow: Boolean(lop.castShadow),\n\t\t\t\t\tshadowSoftness: target?.shadowSoftness ?? lop.shadowSoftness,\n\t\t\t\t\tshadowDarkness: target?.shadowDarkness ?? lop.shadowDarkness\n\t\t\t\t});\n\t\t\t\tif (lop.castShadow && lop.shadowMapSize) shadowMapSize = lop.shadowMapSize;\n\t\t\t}\n\t\t}\n\t\tconst pending3DItems = [];\n\t\t/** Textures the queued 3D items still read: their layers, mattes and reliefs. */\n\t\tconst pendingTextures = () => pending3DItems.flatMap((q) => [\n\t\t\tq.texture,\n\t\t\tq.opts.matte,\n\t\t\tq.kind === \"quad\" ? q.opts.relief?.texture : void 0\n\t\t]).filter((t) => Boolean(t));\n\t\t/** Reliefs of 3D layers by owner id, drawn just before their owner. */\n\t\tconst reliefs = /* @__PURE__ */ new Map();\n\t\t/** The relief a 3D layer drawn at (x, y, w, h) of its pass carries, if any. */\n\t\tconst reliefOpts = (id, x, y, w, h) => {\n\t\t\tconst r = id === void 0 ? void 0 : reliefs.get(id);\n\t\t\tif (!r) return {};\n\t\t\tconst { width, height } = r.texture;\n\t\t\treturn { relief: {\n\t\t\t\ttexture: r.texture,\n\t\t\t\tuvRect: [\n\t\t\t\t\tx / width,\n\t\t\t\t\ty / height,\n\t\t\t\t\tw / width,\n\t\t\t\t\th / height\n\t\t\t\t],\n\t\t\t\tamount: r.amount,\n\t\t\t\teye: reliefEye\n\t\t\t} };\n\t\t};\n\t\t/** Each queued item with its motion key: owner id and its index among the owner's items. */\n\t\tconst motionItems = () => {\n\t\t\tconst seen = /* @__PURE__ */ new Map();\n\t\t\treturn pending3DItems.map((item) => {\n\t\t\t\tif (item.owner === void 0) return [item, void 0];\n\t\t\t\tconst n = seen.get(item.owner) ?? 0;\n\t\t\t\tseen.set(item.owner, n + 1);\n\t\t\t\treturn [item, `${item.owner}#${n}`];\n\t\t\t});\n\t\t};\n\t\t/** Writes this frame's draws (and camera) into the motion history. */\n\t\tconst recordMotion = (h, cam) => {\n\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\tfor (const [item, key] of motionItems()) {\n\t\t\t\tif (!key) continue;\n\t\t\t\tif (item.kind === \"mesh\") h.recordMesh(encoder, key, shiftedFrame, {\n\t\t\t\t\tmodelMatrix: r3d$1.meshModelMatrix(item.opts),\n\t\t\t\t\tskinning: item.opts.skinningMatrices,\n\t\t\t\t\twindTime: item.opts.wind?.time,\n\t\t\t\t\tcrowdTime: item.opts.crowd?.time\n\t\t\t\t}, {\n\t\t\t\t\tinstanceBuffer: item.opts.instanceBuffer,\n\t\t\t\t\tvertices: item.meshBuffers && {\n\t\t\t\t\t\tbuffer: item.meshBuffers.vertexBuffer,\n\t\t\t\t\t\tbytes: deformedBytes(item.mesh)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\telse if (item.kind === \"quad\") h.recordQuad(key, shiftedFrame, r3d$1.quadModelMatrix(item.opts));\n\t\t\t\telse h.recordSlug(key, shiftedFrame, r3d$1.quadModelMatrix(item.opts), item.batches);\n\t\t\t}\n\t\t\th.recordFrame(shiftedFrame, cam);\n\t\t};\n\t\t/** Draws the queued items' screen motion since the last frame, then blurs `color` by it into `into`. */\n\t\tconst blurScene = (h, cam, color, into, blur, floor) => {\n\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\tconst vel = r3d$1.beginVelocityPass(encoder, nativeWidth, nativeHeight, cam, h.previousCamera(shiftedFrame) ?? cam);\n\t\t\tif (floor) r3d$1.drawFloorVelocity(vel.pass, vel.cameraBindGroup, floor);\n\t\t\tfor (const [item, key] of motionItems()) if (item.kind === \"mesh\") {\n\t\t\t\tconst prev = key ? h.previousMesh(key, shiftedFrame, {\n\t\t\t\t\tskinning: item.opts.skinningMatrices,\n\t\t\t\t\tinstanceBuffer: item.opts.instanceBuffer,\n\t\t\t\t\tvertexBytes: item.meshBuffers && deformedBytes(item.mesh),\n\t\t\t\t\twind: item.opts.wind,\n\t\t\t\t\tcrowd: item.opts.crowd\n\t\t\t\t}) : void 0;\n\t\t\t\tr3d$1.drawMeshVelocity(vel.pass, vel.cameraBindGroup, item.meshBuffers ?? item.mesh, item.texture, item.opts, prev);\n\t\t\t} else if (item.kind === \"quad\") r3d$1.drawQuadVelocity(vel.pass, vel.cameraBindGroup, item.texture, item.opts, key ? h.previousQuad(key, shiftedFrame) : void 0);\n\t\t\telse r3d$1.drawSlugVelocity(vel.pass, vel.cameraBindGroup, item.batches, item.opts, item.stackBase, key ? h.previousSlug(key, shiftedFrame) : void 0);\n\t\t\tvel.pass.end();\n\t\t\tr3d$1.applyMotionBlur(encoder, color, vel.velocity, into.createView(), {\n\t\t\t\tshutterAngle: blur.shutter,\n\t\t\t\tsampleCount: blur.samples,\n\t\t\t\tmaxBlur: blur.maxBlur\n\t\t\t});\n\t\t};\n\t\tconst flush3DPass = (curTex, curView, curExcludes) => {\n\t\t\tif (pending3DItems.length === 0 || !camera) return {\n\t\t\t\tfinalTex: curTex,\n\t\t\t\tfinalView: curView\n\t\t\t};\n\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\tfor (const item of pending3DItems) {\n\t\t\t\tif (item.kind !== \"mesh\") continue;\n\t\t\t\tif (item.opts.morphWeights?.length) item.meshBuffers = r3d$1.morphMesh(encoder, item.mesh, item.opts.morphWeights, item.opts.wireframe);\n\t\t\t\tif (item.opts.audioDeform) item.meshBuffers = r3d$1.deformMesh(encoder, item.mesh, item.opts.audioDeform, item.opts.wireframe, item.meshBuffers);\n\t\t\t}\n\t\t\tif (historyOnly) {\n\t\t\t\tif (history) recordMotion(history, camera);\n\t\t\t\tpending3DItems.length = 0;\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: curTex,\n\t\t\t\t\tfinalView: curView\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst itemTextures = pendingTextures();\n\t\t\tconst scene3dTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\tcurTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...curExcludes,\n\t\t\t\t...itemTextures\n\t\t\t]);\n\t\t\tconst scene3dView = scene3dTex.createView();\n\t\t\tconst outlineSetting = sceneEnvironment?.outlines;\n\t\t\tconst outlines = outlineSetting === true ? {} : outlineSetting || null;\n\t\t\tconst volumetricFogEnabled = Boolean(sceneEnvironment?.volumetricFog);\n\t\t\tconst screenIndirectEnabled = Boolean(sceneEnvironment?.ssr || sceneEnvironment?.gi);\n\t\t\tconst geometryEnabled = dofEnabled || Boolean(outlines) || volumetricFogEnabled || screenIndirectEnabled;\n\t\t\tlet linearDepthTex;\n\t\t\tlet linearDepthView;\n\t\t\tif (geometryEnabled) {\n\t\t\t\tlinearDepthTex = r3d$1.getOrCreateLinearDepthTexture(nativeWidth, nativeHeight);\n\t\t\t\tlinearDepthView = linearDepthTex.createView();\n\t\t\t}\n\t\t\tconst shadow = [];\n\t\t\tconst shadowLights = sceneLights.filter((light) => (light.lightType ?? light.type) !== \"ambient\").map((light, index) => ({\n\t\t\t\tlight,\n\t\t\t\tindex\n\t\t\t})).filter(({ light }) => {\n\t\t\t\tconst k = light.lightType ?? light.type;\n\t\t\t\treturn light.castShadow && (k === \"directional\" || k === \"spot\" || k === \"rect\" || k === \"point\");\n\t\t\t});\n\t\t\tif (shadowLights.length > 0) {\n\t\t\t\tconst casters = [];\n\t\t\t\tconst receivers = [];\n\t\t\t\tfor (const item of pending3DItems) if (item.kind === \"mesh\") {\n\t\t\t\t\tconst caster = {\n\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\tmesh: item.mesh,\n\t\t\t\t\t\tbuffers: item.meshBuffers,\n\t\t\t\t\t\topts: item.opts\n\t\t\t\t\t};\n\t\t\t\t\treceivers.push(r3d$1.worldBounds(caster));\n\t\t\t\t\tif (item.opts.castShadow !== false && item.opts.material !== \"unlit\") casters.push(caster);\n\t\t\t\t} else if (item.kind === \"quad\") {\n\t\t\t\t\tconst caster = {\n\t\t\t\t\t\tkind: \"quad\",\n\t\t\t\t\t\ttexture: item.texture,\n\t\t\t\t\t\topts: item.opts\n\t\t\t\t\t};\n\t\t\t\t\treceivers.push(r3d$1.worldBounds(caster));\n\t\t\t\t\tif (item.opts.castShadow === true) casters.push(caster);\n\t\t\t\t}\n\t\t\t\tif (casters.length > 0) {\n\t\t\t\t\tconst totalShadowLayers = shadowLights.reduce((sum, { light }) => sum + ((light.lightType ?? light.type) === \"point\" ? 6 : 1), 0);\n\t\t\t\t\tconst allPointShadows = shadowLights.every(({ light }) => (light.lightType ?? light.type) === \"point\");\n\t\t\t\t\tconst resolvedShadowMapSize = shadowMapSize ?? (allPointShadows ? 1024 : 2048);\n\t\t\t\t\tlet currentLayer = 0;\n\t\t\t\t\tfor (const { light, index } of shadowLights) {\n\t\t\t\t\t\tconst needed = (light.lightType ?? light.type) === \"point\" ? 6 : 1;\n\t\t\t\t\t\tconst result = r3d$1.renderShadowMap(encoder, light, index, casters, receivers, {\n\t\t\t\t\t\t\tmapSize: resolvedShadowMapSize,\n\t\t\t\t\t\t\tlayer: currentLayer,\n\t\t\t\t\t\t\tlayerCount: totalShadowLayers\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tshadow.push(result);\n\t\t\t\t\t\t\tcurrentLayer += result.layerCount ?? needed;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst isGlass = (item) => item.kind === \"mesh\" && (item.opts.material === \"glass\" || item.opts.material === \"acrylic\" || item.opts.material === \"frosted\");\n\t\t\tconst opaque = [];\n\t\t\tconst glass = [];\n\t\t\tconst transparent = [];\n\t\t\tconst forward = Vector3Math.subtract(camera.target, camera.eye);\n\t\t\tfor (const item of pending3DItems) if (isGlass(item)) glass.push(item);\n\t\t\telse if (item.kind === \"mesh\" && item.opts.transparent) {\n\t\t\t\tconst bounds = r3d$1.worldBounds({\n\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\tmesh: item.mesh,\n\t\t\t\t\topts: item.opts\n\t\t\t\t});\n\t\t\t\tconst center = bounds.min.map((v, i) => (v + bounds.max[i]) / 2);\n\t\t\t\tconst depth = center[0] * forward[0] + center[1] * forward[1] + center[2] * forward[2];\n\t\t\t\ttransparent.push({\n\t\t\t\t\titem,\n\t\t\t\t\tdepth\n\t\t\t\t});\n\t\t\t} else opaque.push(item);\n\t\t\ttransparent.sort((a, b) => b.depth - a.depth);\n\t\t\tconst batchedOpaque = [];\n\t\t\tconst maxInstances = Math.max(1, Math.floor(ctx.device.limits.maxStorageBufferBindingSize / 128));\n\t\t\tfor (let i = 0; i < opaque.length;) {\n\t\t\t\tconst first = opaque[i];\n\t\t\t\tif (first.kind !== \"mesh\") {\n\t\t\t\t\tbatchedOpaque.push(first);\n\t\t\t\t\ti++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet end = i + 1;\n\t\t\t\twhile (end < opaque.length && end - i < maxInstances) {\n\t\t\t\t\tconst next = opaque[end];\n\t\t\t\t\tif (next.kind !== \"mesh\" || !compatibleMeshDraws(first, next)) break;\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t\tif (end - i === 1) batchedOpaque.push(first);\n\t\t\t\telse {\n\t\t\t\t\tconst data = new Float32Array((end - i) * 32);\n\t\t\t\t\tfor (let j = i; j < end; j++) {\n\t\t\t\t\t\tconst item = opaque[j];\n\t\t\t\t\t\tif (item.kind !== \"mesh\") throw new Error(\"Invalid mesh batch\");\n\t\t\t\t\t\tconst matrix = r3d$1.meshModelMatrix(item.opts);\n\t\t\t\t\t\tdata.set(matrix, (j - i) * 32);\n\t\t\t\t\t\tdata.set(item.opts.normalMatrix ?? Light3D.computeNormalMatrix(matrix), (j - i) * 32 + 16);\n\t\t\t\t\t}\n\t\t\t\t\tbatchedOpaque.push({\n\t\t\t\t\t\t...first,\n\t\t\t\t\t\topts: {\n\t\t\t\t\t\t\t...first.opts,\n\t\t\t\t\t\t\tmodelMatrix: Matrix4Math.identity(),\n\t\t\t\t\t\t\tnormalMatrix: Matrix4Math.identity(),\n\t\t\t\t\t\t\tinstanceBuffer: r3d$1.uploadInstanceData(data),\n\t\t\t\t\t\t\tinstanceCount: end - i,\n\t\t\t\t\t\t\tmatrixInstances: true\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ti = end;\n\t\t\t}\n\t\t\tconst ordered = [\n\t\t\t\t...batchedOpaque,\n\t\t\t\t...transparent.map(({ item }) => item),\n\t\t\t\t...glass\n\t\t\t];\n\t\t\tif (cubeCamera) {\n\t\t\t\tconst single = [screenIndirectEnabled && \"screen-space reflections and GI (ssr, gi)\", motionBlur && \"motion blur\"].filter(Boolean);\n\t\t\t\tif (single.length) throw new Error(`A cube camera (${cubeCamera.remap.projection ?? \"lens\"}) cannot draw ${single.join(\" or \")}: they need a single perspective view.`);\n\t\t\t}\n\t\t\tconst floorSpec = sceneEnvironment?.floor;\n\t\t\tconst sceneShadow = shadow.length ? shadow : null;\n\t\t\t/** The floor's mirror image from `view`, blurred by its roughness, when the eye is above it. */\n\t\t\tconst floorReflection = (view, width, height) => {\n\t\t\t\tif (!floorSpec || typeof floorSpec.y !== \"number\" || view.eye[1] >= floorSpec.y) return null;\n\t\t\t\tconst reflectedCamera = {\n\t\t\t\t\t...view,\n\t\t\t\t\teye: [\n\t\t\t\t\t\tview.eye[0],\n\t\t\t\t\t\t2 * floorSpec.y - view.eye[1],\n\t\t\t\t\t\tview.eye[2]\n\t\t\t\t\t],\n\t\t\t\t\ttarget: [\n\t\t\t\t\t\tview.target[0],\n\t\t\t\t\t\t2 * floorSpec.y - view.target[1],\n\t\t\t\t\t\tview.target[2]\n\t\t\t\t\t],\n\t\t\t\t\tup: [\n\t\t\t\t\t\tview.up[0],\n\t\t\t\t\t\tview.up[1],\n\t\t\t\t\t\tview.up[2]\n\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t\tconst { pass: reflPass, cameraBindGroup: reflCamBind, lightsBindGroup: reflLightsBind, reflectionTexture: reflTex } = r3d$1.beginReflectionPass(encoder, width, height, reflectedCamera, sceneLights, {\n\t\t\t\t\tenvironment: sceneEnvironment,\n\t\t\t\t\tshadow: null\n\t\t\t\t});\n\t\t\t\tfor (const item of ordered) if (item.kind === \"quad\") r3d$1.drawTextureQuad(reflPass, reflCamBind, reflLightsBind, item.texture, item.opts, false);\n\t\t\t\telse if (item.kind === \"slug\") r3d$1.drawSlugText(reflPass, reflCamBind, reflLightsBind, item.batches, item.opts, item.stackBase, false);\n\t\t\t\telse if (item.kind === \"mesh\") r3d$1.drawMesh3D(reflPass, reflCamBind, reflLightsBind, item.meshBuffers ?? item.mesh, item.texture, item.opts, false);\n\t\t\t\treflPass.end();\n\t\t\t\treturn r3d$1.blurReflection(encoder, reflTex, floorSpec.roughness ?? .35);\n\t\t\t};\n\t\t\t/**\n\t\t\t* One forward pass over the batch: floor, then the sorted draws.\n\t\t\t* `glassBackdrop` is the 2D picture glass refracts: undefined draws\n\t\t\t* glass over the 3D scene alone (a cube face), null leaves the glass\n\t\t\t* out (the pre-pass that makes that picture).\n\t\t\t*/\n\t\t\tconst drawView = (target, screenIndirect, writeHdr, glassBackdrop) => {\n\t\t\t\tconst begun = r3d$1.beginPass(encoder, target.color, target.width, target.height, target.view, \"clear\", {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, target.geometry, sceneLights, {\n\t\t\t\t\tenvironment: sceneEnvironment,\n\t\t\t\t\tshadow: sceneShadow,\n\t\t\t\t\tscreenIndirect\n\t\t\t\t}, writeHdr, target.hdr);\n\t\t\t\tconst { pass: pass$1, cameraBindGroup, lightsBindGroup } = begun;\n\t\t\t\tif (floorSpec && target.reflection) r3d$1.drawFloor(pass$1, cameraBindGroup, lightsBindGroup, target.reflection, floorSpec, geometryEnabled, writeHdr);\n\t\t\t\tfor (const item of ordered) {\n\t\t\t\t\tif (glassBackdrop === null && isGlass(item)) continue;\n\t\t\t\t\tif (item.kind === \"quad\") r3d$1.drawTextureQuad(pass$1, cameraBindGroup, lightsBindGroup, item.texture, item.opts, geometryEnabled);\n\t\t\t\t\telse if (item.kind === \"slug\") r3d$1.drawSlugText(pass$1, cameraBindGroup, lightsBindGroup, item.batches, item.opts, item.stackBase, geometryEnabled);\n\t\t\t\t\telse if (item.kind === \"mesh\") r3d$1.drawMesh3D(pass$1, cameraBindGroup, lightsBindGroup, item.meshBuffers ?? item.mesh, item.texture, isGlass(item) ? {\n\t\t\t\t\t\t...item.opts,\n\t\t\t\t\t\tbackdrop: glassBackdrop ?? void 0\n\t\t\t\t\t} : item.opts, geometryEnabled);\n\t\t\t\t}\n\t\t\t\tpass$1.end();\n\t\t\t\treturn begun;\n\t\t\t};\n\t\t\tconst sceneSeconds = shiftedFrame / Math.max(1, fps ?? 24);\n\t\t\tlet final3dTex = scene3dTex;\n\t\t\tlet mainReflection = null;\n\t\t\tlet mainPass = null;\n\t\t\tif (cubeCamera) {\n\t\t\t\tconst size = cubeCamera.faceSize;\n\t\t\t\tconst cube = r3d$1.getOrCreateCubeTexture(size, false);\n\t\t\t\tconst hdrCube = sceneBloom ? r3d$1.getOrCreateCubeTexture(size, true) : null;\n\t\t\t\tconst faceOutlines = outlines && {\n\t\t\t\t\t...outlines,\n\t\t\t\t\treferenceHeight: (outlines.referenceHeight ?? 1080) * 2 * cubeCamera.centerDensity / nativeHeight\n\t\t\t\t};\n\t\t\t\tconst post = Boolean(faceOutlines) || volumetricFogEnabled;\n\t\t\t\tconst faceExcludes = [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\t...curExcludes,\n\t\t\t\t\t...itemTextures\n\t\t\t\t];\n\t\t\t\tconst faceTex = post ? ctx.renderer.getTemporaryTexture(size, size, faceExcludes) : null;\n\t\t\t\tconst fogTex = faceOutlines && volumetricFogEnabled ? ctx.renderer.getTemporaryTexture(size, size, [...faceExcludes, ...faceTex ? [faceTex] : []]) : null;\n\t\t\t\tconst faceGeometry = geometryEnabled ? r3d$1.getOrCreateLinearDepthTexture(size, size) : null;\n\t\t\t\tcubeFaceCameras(camera.eye, camera.near, camera.far).forEach((face, i) => {\n\t\t\t\t\tconst faceView = r3d$1.cubeFaceView(cube, i);\n\t\t\t\t\tconst { cameraBindGroup, lightsBindGroup } = drawView({\n\t\t\t\t\t\tview: face,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tcolor: faceTex ? faceTex.createView() : faceView,\n\t\t\t\t\t\tgeometry: faceGeometry?.createView(),\n\t\t\t\t\t\thdr: hdrCube ? r3d$1.cubeFaceView(hdrCube, i) : void 0,\n\t\t\t\t\t\treflection: floorReflection(face, size, size)\n\t\t\t\t\t}, void 0, Boolean(sceneBloom), void 0);\n\t\t\t\t\tif (!faceTex || !faceGeometry) return;\n\t\t\t\t\tif (volumetricFogEnabled) r3d$1.resolveGeometry(encoder, faceGeometry);\n\t\t\t\t\tlet source = faceTex;\n\t\t\t\t\tif (faceOutlines) {\n\t\t\t\t\t\tconst inked = fogTex ?? null;\n\t\t\t\t\t\tr3d$1.applyOutlines(encoder, faceTex, faceGeometry, inked ? inked.createView() : faceView, face, faceOutlines, sceneEnvironment?.fog);\n\t\t\t\t\t\tif (!inked) return;\n\t\t\t\t\t\tsource = inked;\n\t\t\t\t\t}\n\t\t\t\t\tif (volumetricFogEnabled && sceneEnvironment) r3d$1.applyVolumetricFog(encoder, source, faceGeometry, faceView, cameraBindGroup, lightsBindGroup, sceneEnvironment, sceneSeconds, shiftedFrame);\n\t\t\t\t});\n\t\t\t\tr3d$1.remapLens(encoder, cube, hdrCube, scene3dView, nativeWidth, nativeHeight, cubeCamera.remap);\n\t\t\t} else {\n\t\t\t\tmainReflection = floorReflection(camera, nativeWidth, nativeHeight);\n\t\t\t\tconst target = {\n\t\t\t\t\tview: camera,\n\t\t\t\t\twidth: nativeWidth,\n\t\t\t\t\theight: nativeHeight,\n\t\t\t\t\tcolor: scene3dView,\n\t\t\t\t\tgeometry: linearDepthView,\n\t\t\t\t\treflection: mainReflection\n\t\t\t\t};\n\t\t\t\tif (screenIndirectEnabled && sceneEnvironment) {\n\t\t\t\t\tconst { cameraBuffer: radianceCamera } = drawView(target, \"radiance\", true, curTex);\n\t\t\t\t\tr3d$1.traceScreenIndirect(encoder, radianceCamera, sceneEnvironment);\n\t\t\t\t}\n\t\t\t\tlet glassBackdrop = curTex;\n\t\t\t\tif (glass.length) {\n\t\t\t\t\tdrawView(target, screenIndirectEnabled ? \"apply\" : void 0, false, null);\n\t\t\t\t\tglassBackdrop = ctx.renderer.composite(encoder, curTex, scene3dTex, \"normal\", [\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\tscene3dTex,\n\t\t\t\t\t\t...curExcludes\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tmainPass = drawView(target, screenIndirectEnabled ? \"apply\" : void 0, Boolean(sceneBloom), glassBackdrop);\n\t\t\t}\n\t\t\tif (mainPass && outlines && linearDepthTex) {\n\t\t\t\tif (dofEnabled || volumetricFogEnabled) r3d$1.resolveGeometry(encoder, linearDepthTex);\n\t\t\t\tconst outlinedTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\tlinearDepthTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tr3d$1.applyOutlines(encoder, scene3dTex, linearDepthTex, outlinedTex.createView(), camera, outlines, sceneEnvironment?.fog);\n\t\t\t\tfinal3dTex = outlinedTex;\n\t\t\t}\n\t\t\tif (mainPass && volumetricFogEnabled && sceneEnvironment && linearDepthTex) {\n\t\t\t\tconst vfogTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\tfinal3dTex,\n\t\t\t\t\tlinearDepthTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tr3d$1.applyVolumetricFog(encoder, final3dTex, linearDepthTex, vfogTex.createView(), mainPass.cameraBindGroup, mainPass.lightsBindGroup, sceneEnvironment, sceneSeconds, shiftedFrame);\n\t\t\t\tfinal3dTex = vfogTex;\n\t\t\t}\n\t\t\tif (mainPass && dofEnabled && linearDepthTex) {\n\t\t\t\tconst dofResultTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\tfinal3dTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tr3d$1.applyDepthOfField(encoder, final3dTex, linearDepthTex, dofResultTex.createView(), mainPass.cameraBuffer);\n\t\t\t\tfinal3dTex = dofResultTex;\n\t\t\t}\n\t\t\tif (motionBlur && history) {\n\t\t\t\tconst blurredTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\tfinal3dTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tblurScene(history, camera, final3dTex, blurredTex, motionBlur, floorSpec && mainReflection ? floorSpec : void 0);\n\t\t\t\tfinal3dTex = blurredTex;\n\t\t\t}\n\t\t\tif (history) recordMotion(history, camera);\n\t\t\tif (sceneBloom) {\n\t\t\t\tconst bloomTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tfinal3dTex,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tr3d$1.applyBloom(encoder, final3dTex, bloomTex, sceneBloom, r3d$1.hdrSource());\n\t\t\t\tfinal3dTex = bloomTex;\n\t\t\t}\n\t\t\tconst nextTex = ctx.renderer.composite(encoder, curTex, final3dTex, \"normal\", [targetTexture, ...curExcludes]);\n\t\t\tpending3DItems.length = 0;\n\t\t\treturn {\n\t\t\t\tfinalTex: nextTex,\n\t\t\t\tfinalView: nextTex.createView()\n\t\t\t};\n\t\t};\n\t\tlet nodeIndex = 0;\n\t\t/**\n\t\t* True when every child of a rounded box sits where the rounding can't\n\t\t* touch it (inside the inset at which the corner arcs meet 45°), as laid\n\t\t* out and moved this frame, untransformed and without effects of its own.\n\t\t*/\n\t\tconst childrenClearOfCorners = (children, box, radius) => {\n\t\t\tconst k = radius * (1 - Math.SQRT1_2);\n\t\t\tfor (const child of children) {\n\t\t\t\tconst cop = child.operation;\n\t\t\t\tif (!cop) return false;\n\t\t\t\tconst t = targetsById[cop.id || cop.inputHandleId];\n\t\t\t\tif (t?.hidden || cop.hidden) continue;\n\t\t\t\tconst r = rects[cop.id];\n\t\t\t\tif (!r) return false;\n\t\t\t\tconst v = (key, d) => t?.[key] ?? cop[key] ?? d;\n\t\t\t\tif (v(\"scale\", 1) !== 1 || v(\"scaleX\", 1) !== 1 || v(\"scaleY\", 1) !== 1 || v(\"rotation\", 0) !== 0 || v(\"rotateX\", 0) !== 0 || v(\"rotateY\", 0) !== 0) return false;\n\t\t\t\tif (Array.isArray(cop.effects) && cop.effects.length > 0) return false;\n\t\t\t\tif ((t?.animators ?? cop.animators)?.length) return false;\n\t\t\t\tconst x = r.x - box.x + (v(\"x\", 0) - (cop.x ?? 0));\n\t\t\t\tconst y = r.y - box.y + (v(\"y\", 0) - (cop.y ?? 0));\n\t\t\t\tif (x < k || y < k || x + r.width > box.width - k || y + r.height > box.height - k) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tconst rasterScaleOf = (matrix, width, height, effects = Number.POSITIVE_INFINITY) => layerRasterScale(transformScale(matrix), {\n\t\t\twidth,\n\t\t\theight\n\t\t}, {\n\t\t\tmaxDimension: ctx.device.limits.maxTextureDimension2D,\n\t\t\tmaxPixels: 4 * nativeWidth * nativeHeight,\n\t\t\teffects\n\t\t});\n\t\tconst renderNodeTree = async (vms, initialTex, initialView, excludes, accumulatedOpacity = 1, parentMatrix = new DOMMatrix(), parentRect = null, targetW = nativeWidth, targetH = nativeHeight, parent3DMatrix = null, isRootScene = false) => {\n\t\t\tconst sorted = [...vms].sort((a, b) => {\n\t\t\t\treturn (a.operation?.zIndex ?? 0) - (b.operation?.zIndex ?? 0);\n\t\t\t});\n\t\t\tlet activeTex = initialTex;\n\t\t\tlet activeView = initialView;\n\t\t\tlet activeExcludes = excludes;\n\t\t\tconst mattesByOwner = /* @__PURE__ */ new Map();\n\t\t\tconst reliefsByOwner = /* @__PURE__ */ new Map();\n\t\t\tconst texturesByOwner = /* @__PURE__ */ new Map();\n\t\t\tfor (const vm of vms) {\n\t\t\t\tconst op$1 = vm.operation;\n\t\t\t\tif (op$1?.matteOf) mattesByOwner.set(op$1.matteOf, vm);\n\t\t\t\tif (op$1?.reliefOf) reliefsByOwner.set(op$1.reliefOf, vm);\n\t\t\t\tif (op$1?.textureOf) texturesByOwner.set(op$1.textureOf, vm);\n\t\t\t}\n\t\t\tfor (const child of sorted) {\n\t\t\t\tconst lop = child.operation;\n\t\t\t\tif (lop.kind === \"camera\" || lop.kind === \"light\") continue;\n\t\t\t\tif (lop.matteOf || lop.reliefOf || lop.textureOf) continue;\n\t\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tconst isChild3D = Boolean(target?.is3D ?? lop.is3D) || Boolean(camera && ((target?.z ?? lop.z ?? 0) !== 0 || lop.is3D)) || Boolean(parent3DMatrix);\n\t\t\t\tif (isRootScene && !isChild3D && pending3DItems.length > 0) {\n\t\t\t\t\tconst flushed = flush3DPass(activeTex, activeView, activeExcludes);\n\t\t\t\t\tif (flushed.finalTex !== activeTex) activeExcludes = [...activeExcludes, flushed.finalTex];\n\t\t\t\t\tactiveTex = flushed.finalTex;\n\t\t\t\t\tactiveView = flushed.finalView;\n\t\t\t\t}\n\t\t\t\tif (lop.op !== \"CompositorLayer\") {\n\t\t\t\t\tawait drawChild(child, {\n\t\t\t\t\t\tcontainerWidth: targetW,\n\t\t\t\t\t\tcontainerHeight: targetH,\n\t\t\t\t\t\trenderId: `${props.renderId}-c${nodeIndex}-${lop.op}`,\n\t\t\t\t\t\tfps,\n\t\t\t\t\t\tisVideoMode,\n\t\t\t\t\t\tframe: shiftedFrame,\n\t\t\t\t\t\tcompositionFrame,\n\t\t\t\t\t\texcludeTextures: [targetTexture, ...activeExcludes]\n\t\t\t\t\t}, activeView, activeTex, targetW, targetH);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnodeIndex += 1;\n\t\t\t\tconst isolate = async (vm, index) => {\n\t\t\t\t\tconst queued = pending3DItems.splice(0);\n\t\t\t\t\tconst busy = [\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t...activeExcludes,\n\t\t\t\t\t\t...queued.flatMap((q) => [\n\t\t\t\t\t\t\tq.texture,\n\t\t\t\t\t\t\tq.opts.matte,\n\t\t\t\t\t\t\tq.kind === \"quad\" ? q.opts.relief?.texture : void 0\n\t\t\t\t\t\t])\n\t\t\t\t\t].filter((t) => Boolean(t));\n\t\t\t\t\tconst tex = ctx.renderer.getTemporaryTexture(targetW, targetH, busy);\n\t\t\t\t\tconst view = tex.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, view, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\tconst drawn = (await renderLayerVM(vm, index, tex, view, busy.filter((t) => t !== targetTexture), accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, false))?.finalTex ?? tex;\n\t\t\t\t\tconst flat = flush3DPass(drawn, drawn.createView(), busy).finalTex;\n\t\t\t\t\tpending3DItems.push(...queued);\n\t\t\t\t\treturn flat;\n\t\t\t\t};\n\t\t\t\tconst reliefVM = lop.reliefId ? reliefsByOwner.get(lop.id) : void 0;\n\t\t\t\tif (reliefVM && isChild3D) {\n\t\t\t\t\tconst texture = await isolate(reliefVM, nodeIndex);\n\t\t\t\t\tactiveExcludes = [...activeExcludes, texture];\n\t\t\t\t\tnodeIndex += 1;\n\t\t\t\t\treliefs.set(lop.id, {\n\t\t\t\t\t\ttexture,\n\t\t\t\t\t\tamount: lop.reliefAmount ?? 0\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst textureVM = lop.textureLayerId ? texturesByOwner.get(lop.id) : void 0;\n\t\t\t\tlet wrapTexture;\n\t\t\t\tif (textureVM) {\n\t\t\t\t\tconst texture = await isolate(textureVM, nodeIndex);\n\t\t\t\t\tactiveExcludes = [...activeExcludes, texture];\n\t\t\t\t\tnodeIndex += 1;\n\t\t\t\t\tconst r = rects[lop.textureLayerId];\n\t\t\t\t\tconst uvRect = r ? [\n\t\t\t\t\t\tr.x / targetW,\n\t\t\t\t\t\tr.y / targetH,\n\t\t\t\t\t\tr.width / targetW,\n\t\t\t\t\t\tr.height / targetH\n\t\t\t\t\t] : [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t\t];\n\t\t\t\t\tconst from = pending3DItems.length;\n\t\t\t\t\twrapTexture = () => {\n\t\t\t\t\t\tfor (const item of pending3DItems.slice(from)) {\n\t\t\t\t\t\t\tif (item.kind !== \"mesh\") continue;\n\t\t\t\t\t\t\titem.texture = texture;\n\t\t\t\t\t\t\titem.opts.uvRect = uvRect;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst matteVM = lop.matteId ? mattesByOwner.get(lop.id) : void 0;\n\t\t\t\tif (matteVM) {\n\t\t\t\t\tconst mode = matteVM.operation.matteMode ?? \"alpha\";\n\t\t\t\t\tconst blend$1 = mode === \"luma\" ? \"luma-in\" : mode === \"luma-inverted\" ? \"luma-out\" : mode === \"alpha-inverted\" ? \"destination-out\" : \"destination-in\";\n\t\t\t\t\tif (isChild3D) {\n\t\t\t\t\t\tlet coverage = await isolate(matteVM, nodeIndex);\n\t\t\t\t\t\tactiveExcludes = [...activeExcludes, coverage];\n\t\t\t\t\t\tnodeIndex += 1;\n\t\t\t\t\t\tif (mode !== \"alpha\") {\n\t\t\t\t\t\t\tconst white = ctx.renderer.getTemporaryTexture(targetW, targetH, [\n\t\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\t\t...activeExcludes,\n\t\t\t\t\t\t\t\t...pendingTextures()\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tctx.renderer.beginFrame(encoder, white.createView(), {\n\t\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\t\tg: 1,\n\t\t\t\t\t\t\t\tb: 1,\n\t\t\t\t\t\t\t\ta: 1\n\t\t\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\t\t\tcoverage = ctx.renderer.composite(encoder, white, coverage, blend$1, [\n\t\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\t\t...activeExcludes,\n\t\t\t\t\t\t\t\t...pendingTextures(),\n\t\t\t\t\t\t\t\twhite\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tactiveExcludes = [...activeExcludes, coverage];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst before = pending3DItems.length;\n\t\t\t\t\t\tconst res$1 = await renderLayerVM(child, nodeIndex, activeTex, activeView, activeExcludes, accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, isRootScene);\n\t\t\t\t\t\tfor (const item of pending3DItems.slice(before)) item.opts.matte = coverage;\n\t\t\t\t\t\twrapTexture?.();\n\t\t\t\t\t\tif (res$1) {\n\t\t\t\t\t\t\tif (res$1.finalTex !== activeTex) activeExcludes = [...activeExcludes, res$1.finalTex];\n\t\t\t\t\t\t\tactiveTex = res$1.finalTex;\n\t\t\t\t\t\t\tactiveView = res$1.finalView;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst contentTex = await isolate(child, nodeIndex);\n\t\t\t\t\tactiveExcludes = [...activeExcludes, contentTex];\n\t\t\t\t\tnodeIndex += 1;\n\t\t\t\t\tconst matteTex = await isolate(matteVM, nodeIndex);\n\t\t\t\t\tconst masked = ctx.renderer.composite(encoder, contentTex, matteTex, blend$1, [\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t...activeExcludes,\n\t\t\t\t\t\tmatteTex\n\t\t\t\t\t]);\n\t\t\t\t\tconst next = ctx.renderer.composite(encoder, activeTex, masked, \"normal\", [\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...activeExcludes,\n\t\t\t\t\t\tmatteTex\n\t\t\t\t\t]);\n\t\t\t\t\tactiveExcludes = [...activeExcludes, next];\n\t\t\t\t\tactiveTex = next;\n\t\t\t\t\tactiveView = next.createView();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst res = await renderLayerVM(child, nodeIndex, activeTex, activeView, activeExcludes, accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, isRootScene);\n\t\t\t\twrapTexture?.();\n\t\t\t\tif (res) {\n\t\t\t\t\tif (res.finalTex !== activeTex) activeExcludes = [...activeExcludes, res.finalTex];\n\t\t\t\t\tactiveTex = res.finalTex;\n\t\t\t\t\tactiveView = res.finalView;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isRootScene && pending3DItems.length > 0) {\n\t\t\t\tconst flushed = flush3DPass(activeTex, activeView, activeExcludes);\n\t\t\t\tif (flushed.finalTex !== activeTex) activeExcludes = [...activeExcludes, flushed.finalTex];\n\t\t\t\tactiveTex = flushed.finalTex;\n\t\t\t\tactiveView = flushed.finalView;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t};\n\t\tconst renderLayerVM = async (nodeVM, i, destTex, destView, baseExcludes, accumulatedOpacity, parentMatrix, parentRect, targetW = nativeWidth, targetH = nativeHeight, parent3DMatrix = null, isRootScene = false) => {\n\t\t\tconst excludes = [...baseExcludes, ...pendingTextures()];\n\t\t\tconst lop = nodeVM.operation;\n\t\t\tif (lop.kind === \"camera\" || lop.kind === \"light\") return;\n\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\tif (target?.hidden || lop.hidden) return;\n\t\t\tconst kind = lop.kind;\n\t\t\tconst isContainer = kind === \"flex\" || kind === \"block\" || kind === \"box\";\n\t\t\tif (isVideoMode) {\n\t\t\t\tconst startFrame = lop.startFrame ?? 0;\n\t\t\t\tconst durationFrames = lop.durationFrames;\n\t\t\t\tif (shiftedFrame < startFrame) return;\n\t\t\t\tif (durationFrames !== void 0 && shiftedFrame >= startFrame + durationFrames) return;\n\t\t\t}\n\t\t\tconst isTrue3D = Boolean(target?.is3D ?? lop.is3D) || Boolean(camera && ((target?.z ?? lop.z ?? 0) !== 0 || lop.is3D));\n\t\t\tif (historyOnly && !isContainer && kind !== \"model3d\" && !isTrue3D && !has3DTransform(target, lop)) return;\n\t\t\tif (kind === \"model3d\") {\n\t\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\tlet modelSrc = lop.modelData ?? lop.src;\n\t\t\t\tif (!modelSrc && lop.text3dOptions) {\n\t\t\t\t\tconst tOpts = lop.text3dOptions;\n\t\t\t\t\tconst font = (tOpts.fontFamily ? SlugFontCache.getParsed(tOpts.fontFamily) : null) ?? SlugFontCache.getParsed(\"Inter\") ?? SlugFontCache.getParsed(\"Unbounded\") ?? SlugFontCache.getFirstParsed();\n\t\t\t\t\tif (font) {\n\t\t\t\t\t\tmodelSrc = generateExtrudedTextGeometry({\n\t\t\t\t\t\t\t...tOpts,\n\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t}).modelData;\n\t\t\t\t\t\tlop.modelData = modelSrc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!modelSrc && lop.primitive3d) {\n\t\t\t\t\tmodelSrc = getPrimitiveGeometry(lop.primitive3d);\n\t\t\t\t\tlop.modelData = modelSrc;\n\t\t\t\t}\n\t\t\t\tif (!modelSrc) return;\n\t\t\t\tlet model;\n\t\t\t\ttry {\n\t\t\t\t\tmodel = typeof modelSrc === \"object\" && modelSrc !== null && \"meshes\" in modelSrc ? modelSrc : await r3d$1.loadModelAsync(modelSrc, lop.modelFormat ?? \"auto\", {\n\t\t\t\t\t\tcenter: lop.center,\n\t\t\t\t\t\tnormalizeSize: lop.normalizeSize\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthrow new Error(`Failed to load 3D model ${lop.id ?? \"(unnamed)\"}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });\n\t\t\t\t}\n\t\t\t\tif (model && lop.fracture3d) model = fracturedModel(model, lop.fracture3d);\n\t\t\t\tif (!model || model.meshes.length === 0) return;\n\t\t\t\tconst baseX$1 = lop.x ?? 0;\n\t\t\t\tconst baseY$1 = lop.y ?? 0;\n\t\t\t\tconst sampledX$1 = target?.x ?? baseX$1;\n\t\t\t\tconst sampledY$1 = target?.y ?? baseY$1;\n\t\t\t\tconst posZ = target?.z ?? lop.z ?? 0;\n\t\t\t\tlet posX = sampledX$1;\n\t\t\t\tlet posY = sampledY$1;\n\t\t\t\tif (!parent3DMatrix) {\n\t\t\t\t\tconst pos = resolveLayer2DPosition({\n\t\t\t\t\t\trect: null,\n\t\t\t\t\t\tparentRect: null,\n\t\t\t\t\t\tbaseX: baseX$1,\n\t\t\t\t\t\tbaseY: baseY$1,\n\t\t\t\t\t\tsampledX: sampledX$1,\n\t\t\t\t\t\tsampledY: sampledY$1,\n\t\t\t\t\t\tparentMatrix\n\t\t\t\t\t});\n\t\t\t\t\tposX = pos.x;\n\t\t\t\t\tposY = pos.y;\n\t\t\t\t}\n\t\t\t\tconst rotX = target?.rotateX ?? lop.rotateX ?? 0;\n\t\t\t\tconst rotY = target?.rotateY ?? lop.rotateY ?? 0;\n\t\t\t\tconst rotZ = (target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : target?.rotation ?? lop.rotation ?? 0;\n\t\t\t\tconst sc = target?.scale ?? lop.scale ?? 1;\n\t\t\t\tconst scX = (target?.scaleX ?? lop.scaleX ?? 1) * sc;\n\t\t\t\tconst scY = (target?.scaleY ?? lop.scaleY ?? 1) * sc;\n\t\t\t\tconst scZ = (target?.scaleZ ?? lop.scaleZ ?? 1) * sc;\n\t\t\t\tlet localM = Matrix4Math.identity();\n\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.translate(posX, posY, posZ));\n\t\t\t\tconst rxRad = rotX * Math.PI / 180;\n\t\t\t\tconst ryRad = rotY * Math.PI / 180;\n\t\t\t\tconst rzRad = rotZ * Math.PI / 180;\n\t\t\t\tif (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));\n\t\t\t\tif (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));\n\t\t\t\tif (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));\n\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.scale(scX, scY, scZ));\n\t\t\t\tconst finalModelMatrix = parent3DMatrix ? Matrix4Math.multiply(parent3DMatrix, localM) : localM;\n\t\t\t\tconst colorParsed = target?.colorTint || target?.color || lop.colorTint || lop.color ? parseColor(target?.colorTint ?? target?.color ?? lop.colorTint ?? lop.color) : void 0;\n\t\t\t\tconst colorTint = colorParsed ? [\n\t\t\t\t\tcolorParsed.r,\n\t\t\t\t\tcolorParsed.g,\n\t\t\t\t\tcolorParsed.b,\n\t\t\t\t\tcolorParsed.a\n\t\t\t\t] : [\n\t\t\t\t\t1,\n\t\t\t\t\t1,\n\t\t\t\t\t1,\n\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t\tconst modelOpacity = (target?.opacity ?? lop.opacity ?? 1) * accumulatedOpacity;\n\t\t\t\tif (lop.instances3d) {\n\t\t\t\t\tconst instOpt = lop.instances3d;\n\t\t\t\t\tconst rawMeshes = Array.isArray(instOpt.mesh) ? instOpt.mesh : instOpt.mesh ? [instOpt.mesh] : lop.modelData ? [lop.modelData] : lop.primitive3d ? [getPrimitiveGeometry(lop.primitive3d)] : [];\n\t\t\t\t\tconst variants = [];\n\t\t\t\t\tconst variantPres = [];\n\t\t\t\t\tfor (const m of rawMeshes) {\n\t\t\t\t\t\tlet vModel;\n\t\t\t\t\t\tif (typeof m === \"object\" && m !== null) {\n\t\t\t\t\t\t\tif (\"meshes\" in m && Array.isArray(m.meshes)) vModel = m;\n\t\t\t\t\t\t\telse if (m.modelData && \"meshes\" in m.modelData) vModel = m.modelData;\n\t\t\t\t\t\t\telse if (m.primitive3d) vModel = getPrimitiveGeometry(m.primitive3d);\n\t\t\t\t\t\t\telse if (m.src) try {\n\t\t\t\t\t\t\t\tvModel = r3d$1.loadModel(m.src, m.modelFormat ?? \"auto\", {\n\t\t\t\t\t\t\t\t\tcenter: m.center,\n\t\t\t\t\t\t\t\t\tnormalizeSize: m.normalizeSize\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (vModel && vModel.meshes && vModel.meshes.length > 0) {\n\t\t\t\t\t\t\tvariants.push(vModel);\n\t\t\t\t\t\t\tconst isNode = !(\"meshes\" in m);\n\t\t\t\t\t\t\tvariantPres.push(isNode ? {\n\t\t\t\t\t\t\t\tq: quatFromEulerAngles(m.rotateX ?? 0, m.rotateY ?? 0, m.rotateZ ?? 0),\n\t\t\t\t\t\t\t\ts: m.scale ?? 1\n\t\t\t\t\t\t\t} : NO_PRE);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (variants.length === 0 && model) {\n\t\t\t\t\t\tvariants.push(model);\n\t\t\t\t\t\tvariantPres.push(NO_PRE);\n\t\t\t\t\t}\n\t\t\t\t\tif (lop.scatter3d && variants.length > 0) {\n\t\t\t\t\t\tconst scatter = lop.scatter3d;\n\t\t\t\t\t\tconst surface = await surfaceModel(scatter.surface, (src, n) => r3d$1.loadModelAsync(src, n.modelFormat ?? \"auto\", {\n\t\t\t\t\t\t\tcenter: n.center,\n\t\t\t\t\t\t\tnormalizeSize: n.normalizeSize\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tinstOpt.transforms = surface ? scatterTransforms(scatter, surface, variants.map((v, k) => variantBottom(v, variantPres[k]))) : [];\n\t\t\t\t\t\tinstOpt.count = instOpt.transforms.length;\n\t\t\t\t\t}\n\t\t\t\t\tif (variants.length > 0) {\n\t\t\t\t\t\tconst count = instOpt.bodies && Array.isArray(instOpt.bodies) && instOpt.bodies.length > 0 ? instOpt.bodies.length : instOpt.count ?? (Array.isArray(instOpt.transforms) ? instOpt.transforms.length : 0);\n\t\t\t\t\t\tif (count > 0) {\n\t\t\t\t\t\t\tconst numVariants = variants.length;\n\t\t\t\t\t\t\tconst bucketCounts = new Uint32Array(numVariants);\n\t\t\t\t\t\t\tfor (let i$1 = 0; i$1 < count; i$1++) bucketCounts[i$1 % numVariants]++;\n\t\t\t\t\t\t\tconst crowdCfg = lop.crowd;\n\t\t\t\t\t\t\tconst crowdBakes = variants.map((v) => crowdCfg ? crowdBake(v, crowdCfg) : void 0);\n\t\t\t\t\t\t\tconst strides = crowdBakes.map((b) => b ? 32 : 16);\n\t\t\t\t\t\t\tconst crowdOpts = (bake, mesh) => {\n\t\t\t\t\t\t\t\tconst baked = bake?.meshes.get(mesh);\n\t\t\t\t\t\t\t\tif (!bake || !baked) return void 0;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tpalette: paletteBuffer(ctx.device, baked.palette),\n\t\t\t\t\t\t\t\t\tjointCount: baked.jointCount,\n\t\t\t\t\t\t\t\t\ttime: (shiftedFrame ?? 0) / (fps || 30)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst bucketItems = [];\n\t\t\t\t\t\t\tconst bucketBounds = [];\n\t\t\t\t\t\t\tfor (let k = 0; k < numVariants; k++) {\n\t\t\t\t\t\t\t\tbucketItems.push(new Float32Array(bucketCounts[k] * strides[k]));\n\t\t\t\t\t\t\t\tbucketBounds.push({\n\t\t\t\t\t\t\t\t\tmin: [\n\t\t\t\t\t\t\t\t\t\tInfinity,\n\t\t\t\t\t\t\t\t\t\tInfinity,\n\t\t\t\t\t\t\t\t\t\tInfinity\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tmax: [\n\t\t\t\t\t\t\t\t\t\t-Infinity,\n\t\t\t\t\t\t\t\t\t\t-Infinity,\n\t\t\t\t\t\t\t\t\t\t-Infinity\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst bucketCursors = new Uint32Array(numVariants);\n\t\t\t\t\t\t\tconst frameCtx = {\n\t\t\t\t\t\t\t\tframe: shiftedFrame ?? 0,\n\t\t\t\t\t\t\t\tfps: fps || 30,\n\t\t\t\t\t\t\t\ttime: (shiftedFrame ?? 0) / (fps || 30),\n\t\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\t\tprogress: 0,\n\t\t\t\t\t\t\t\tdeltaTime: 1 / (fps || 30)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (let i$1 = 0; i$1 < count; i$1++) {\n\t\t\t\t\t\t\t\tconst k = i$1 % numVariants;\n\t\t\t\t\t\t\t\tconst cursor = bucketCursors[k];\n\t\t\t\t\t\t\t\tconst bData = bucketItems[k];\n\t\t\t\t\t\t\t\tconst bBox = bucketBounds[k];\n\t\t\t\t\t\t\t\tconst off = cursor * strides[k];\n\t\t\t\t\t\t\t\tlet ianim = {};\n\t\t\t\t\t\t\t\tlet ix = 0;\n\t\t\t\t\t\t\t\tlet iy = 0;\n\t\t\t\t\t\t\t\tlet iz = 0;\n\t\t\t\t\t\t\t\tlet iscale = 1;\n\t\t\t\t\t\t\t\tlet iqx = 0;\n\t\t\t\t\t\t\t\tlet iqy = 0;\n\t\t\t\t\t\t\t\tlet iqz = 0;\n\t\t\t\t\t\t\t\tlet iqw = 1;\n\t\t\t\t\t\t\t\tlet icr = 1;\n\t\t\t\t\t\t\t\tlet icg = 1;\n\t\t\t\t\t\t\t\tlet icb = 1;\n\t\t\t\t\t\t\t\tlet ica = 1;\n\t\t\t\t\t\t\t\tlet ier = 0;\n\t\t\t\t\t\t\t\tlet ieg = 0;\n\t\t\t\t\t\t\t\tlet ieb = 0;\n\t\t\t\t\t\t\t\tlet iew = 0;\n\t\t\t\t\t\t\t\tif (instOpt.bodies && instOpt.bodies[i$1]) {\n\t\t\t\t\t\t\t\t\tconst b = instOpt.bodies[i$1];\n\t\t\t\t\t\t\t\t\tix = typeof b.x?.get === \"function\" ? Number(b.x.get(frameCtx)) : Number(b.x ?? 0);\n\t\t\t\t\t\t\t\t\tiy = typeof b.y?.get === \"function\" ? Number(b.y.get(frameCtx)) : Number(b.y ?? 0);\n\t\t\t\t\t\t\t\t\tiz = typeof b.z?.get === \"function\" ? Number(b.z.get(frameCtx)) : Number(b.z ?? 0);\n\t\t\t\t\t\t\t\t\tconst q = quatFromEulerAngles(typeof b.rotateX?.get === \"function\" ? Number(b.rotateX.get(frameCtx)) : Number(b.rotateX ?? 0), typeof b.rotateY?.get === \"function\" ? Number(b.rotateY.get(frameCtx)) : Number(b.rotateY ?? 0), typeof b.rotateZ?.get === \"function\" ? Number(b.rotateZ.get(frameCtx)) : Number(b.rotateZ ?? 0));\n\t\t\t\t\t\t\t\t\tiqx = q[0];\n\t\t\t\t\t\t\t\t\tiqy = q[1];\n\t\t\t\t\t\t\t\t\tiqz = q[2];\n\t\t\t\t\t\t\t\t\tiqw = q[3];\n\t\t\t\t\t\t\t\t\tif (instOpt.emissiveBySpeed) {\n\t\t\t\t\t\t\t\t\t\tconst spd = typeof b.speed?.get === \"function\" ? Number(b.speed.get(frameCtx)) : Number(b.speed ?? 0);\n\t\t\t\t\t\t\t\t\t\tconst maxSpd = instOpt.emissiveBySpeed.maxSpeed || 1e3;\n\t\t\t\t\t\t\t\t\t\tconst factor = Math.min(1, Math.max(0, spd / maxSpd));\n\t\t\t\t\t\t\t\t\t\tif (factor > .001) {\n\t\t\t\t\t\t\t\t\t\t\tconst ramp = sampleColorRamp(instOpt.emissiveBySpeed.color, factor);\n\t\t\t\t\t\t\t\t\t\t\tier = ramp[0];\n\t\t\t\t\t\t\t\t\t\t\tieg = ramp[1];\n\t\t\t\t\t\t\t\t\t\t\tieb = ramp[2];\n\t\t\t\t\t\t\t\t\t\t\tiew = factor * (instOpt.emissiveBySpeed.intensity ?? 3);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (instOpt.emissiveByImpact) {\n\t\t\t\t\t\t\t\t\t\tconst imp = typeof b.impact?.get === \"function\" ? Number(b.impact.get(frameCtx)) : Number(b.impact ?? 0);\n\t\t\t\t\t\t\t\t\t\tif (imp > .01) {\n\t\t\t\t\t\t\t\t\t\t\tconst impCol = parseColor(instOpt.emissiveByImpact.color ?? \"#ffffff\") ?? {\n\t\t\t\t\t\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tg: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tb: 1,\n\t\t\t\t\t\t\t\t\t\t\t\ta: 1\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\tier = Math.max(ier, impCol.r);\n\t\t\t\t\t\t\t\t\t\t\tieg = Math.max(ieg, impCol.g);\n\t\t\t\t\t\t\t\t\t\t\tieb = Math.max(ieb, impCol.b);\n\t\t\t\t\t\t\t\t\t\t\tiew = Math.max(iew, imp * (instOpt.emissiveByImpact.intensity ?? 4));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (typeof instOpt.instanceAt === \"function\") {\n\t\t\t\t\t\t\t\t\tconst t = instOpt.instanceAt(i$1, shiftedFrame ?? 0, fps || 30);\n\t\t\t\t\t\t\t\t\tif (!t) continue;\n\t\t\t\t\t\t\t\t\tianim = t;\n\t\t\t\t\t\t\t\t\tix = t.x ?? 0;\n\t\t\t\t\t\t\t\t\tiy = t.y ?? 0;\n\t\t\t\t\t\t\t\t\tiz = t.z ?? 0;\n\t\t\t\t\t\t\t\t\tif (typeof t.scale === \"number\") iscale = t.scale;\n\t\t\t\t\t\t\t\t\tif (iscale <= 0) continue;\n\t\t\t\t\t\t\t\t\tif (t.rotation) if (t.rotation.length === 4) {\n\t\t\t\t\t\t\t\t\t\tiqx = t.rotation[0];\n\t\t\t\t\t\t\t\t\t\tiqy = t.rotation[1];\n\t\t\t\t\t\t\t\t\t\tiqz = t.rotation[2];\n\t\t\t\t\t\t\t\t\t\tiqw = t.rotation[3];\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst q = quatFromEulerAngles(t.rotation[0], t.rotation[1], t.rotation[2]);\n\t\t\t\t\t\t\t\t\t\tiqx = q[0];\n\t\t\t\t\t\t\t\t\t\tiqy = q[1];\n\t\t\t\t\t\t\t\t\t\tiqz = q[2];\n\t\t\t\t\t\t\t\t\t\tiqw = q[3];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (t.color) {\n\t\t\t\t\t\t\t\t\t\tconst p = typeof t.color === \"string\" ? parseColor(t.color) : {\n\t\t\t\t\t\t\t\t\t\t\tr: t.color[0],\n\t\t\t\t\t\t\t\t\t\t\tg: t.color[1],\n\t\t\t\t\t\t\t\t\t\t\tb: t.color[2],\n\t\t\t\t\t\t\t\t\t\t\ta: t.color[3] ?? 1\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\t\t\t\ticr = p.r;\n\t\t\t\t\t\t\t\t\t\t\ticg = p.g;\n\t\t\t\t\t\t\t\t\t\t\ticb = p.b;\n\t\t\t\t\t\t\t\t\t\t\tica = p.a;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (t.emissive) {\n\t\t\t\t\t\t\t\t\t\tconst p = typeof t.emissive === \"string\" ? parseColor(t.emissive) : {\n\t\t\t\t\t\t\t\t\t\t\tr: t.emissive[0],\n\t\t\t\t\t\t\t\t\t\t\tg: t.emissive[1],\n\t\t\t\t\t\t\t\t\t\t\tb: t.emissive[2]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\t\t\t\tier = p.r;\n\t\t\t\t\t\t\t\t\t\t\tieg = p.g;\n\t\t\t\t\t\t\t\t\t\t\tieb = p.b;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tiew = t.emissiveIntensity ?? 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (Array.isArray(instOpt.transforms) && instOpt.transforms[i$1]) {\n\t\t\t\t\t\t\t\t\tconst t = instOpt.transforms[i$1];\n\t\t\t\t\t\t\t\t\tianim = t;\n\t\t\t\t\t\t\t\t\tix = t.x ?? 0;\n\t\t\t\t\t\t\t\t\tiy = t.y ?? 0;\n\t\t\t\t\t\t\t\t\tiz = t.z ?? 0;\n\t\t\t\t\t\t\t\t\tif (typeof t.scale === \"number\") iscale = t.scale;\n\t\t\t\t\t\t\t\t\tif (iscale <= 0) continue;\n\t\t\t\t\t\t\t\t\tif (t.rotation) if (t.rotation.length === 4) {\n\t\t\t\t\t\t\t\t\t\tiqx = t.rotation[0];\n\t\t\t\t\t\t\t\t\t\tiqy = t.rotation[1];\n\t\t\t\t\t\t\t\t\t\tiqz = t.rotation[2];\n\t\t\t\t\t\t\t\t\t\tiqw = t.rotation[3];\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst q = quatFromEulerAngles(t.rotation[0], t.rotation[1], t.rotation[2]);\n\t\t\t\t\t\t\t\t\t\tiqx = q[0];\n\t\t\t\t\t\t\t\t\t\tiqy = q[1];\n\t\t\t\t\t\t\t\t\t\tiqz = q[2];\n\t\t\t\t\t\t\t\t\t\tiqw = q[3];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (t.color) {\n\t\t\t\t\t\t\t\t\t\tconst p = typeof t.color === \"string\" ? parseColor(t.color) : {\n\t\t\t\t\t\t\t\t\t\t\tr: t.color[0],\n\t\t\t\t\t\t\t\t\t\t\tg: t.color[1],\n\t\t\t\t\t\t\t\t\t\t\tb: t.color[2],\n\t\t\t\t\t\t\t\t\t\t\ta: t.color[3] ?? 1\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\t\t\t\ticr = p.r;\n\t\t\t\t\t\t\t\t\t\t\ticg = p.g;\n\t\t\t\t\t\t\t\t\t\t\ticb = p.b;\n\t\t\t\t\t\t\t\t\t\t\tica = p.a;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (t.emissive) {\n\t\t\t\t\t\t\t\t\t\tconst p = typeof t.emissive === \"string\" ? parseColor(t.emissive) : {\n\t\t\t\t\t\t\t\t\t\t\tr: t.emissive[0],\n\t\t\t\t\t\t\t\t\t\t\tg: t.emissive[1],\n\t\t\t\t\t\t\t\t\t\t\tb: t.emissive[2]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\t\t\t\tier = p.r;\n\t\t\t\t\t\t\t\t\t\t\tieg = p.g;\n\t\t\t\t\t\t\t\t\t\t\tieb = p.b;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tiew = t.emissiveIntensity ?? 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else continue;\n\t\t\t\t\t\t\t\tbucketCursors[k]++;\n\t\t\t\t\t\t\t\tconst pre = variantPres[k];\n\t\t\t\t\t\t\t\tif (pre !== NO_PRE) {\n\t\t\t\t\t\t\t\t\t[iqx, iqy, iqz, iqw] = composeQuat([\n\t\t\t\t\t\t\t\t\t\tiqx,\n\t\t\t\t\t\t\t\t\t\tiqy,\n\t\t\t\t\t\t\t\t\t\tiqz,\n\t\t\t\t\t\t\t\t\t\tiqw\n\t\t\t\t\t\t\t\t\t], pre.q);\n\t\t\t\t\t\t\t\t\tiscale *= pre.s;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbData[off + 0] = ix;\n\t\t\t\t\t\t\t\tbData[off + 1] = iy;\n\t\t\t\t\t\t\t\tbData[off + 2] = iz;\n\t\t\t\t\t\t\t\tbData[off + 3] = iscale;\n\t\t\t\t\t\t\t\tbData[off + 4] = iqx;\n\t\t\t\t\t\t\t\tbData[off + 5] = iqy;\n\t\t\t\t\t\t\t\tbData[off + 6] = iqz;\n\t\t\t\t\t\t\t\tbData[off + 7] = iqw;\n\t\t\t\t\t\t\t\tbData[off + 8] = icr;\n\t\t\t\t\t\t\t\tbData[off + 9] = icg;\n\t\t\t\t\t\t\t\tbData[off + 10] = icb;\n\t\t\t\t\t\t\t\tbData[off + 11] = ica;\n\t\t\t\t\t\t\t\tbData[off + 12] = ier;\n\t\t\t\t\t\t\t\tbData[off + 13] = ieg;\n\t\t\t\t\t\t\t\tbData[off + 14] = ieb;\n\t\t\t\t\t\t\t\tbData[off + 15] = iew;\n\t\t\t\t\t\t\t\tconst bake = crowdBakes[k];\n\t\t\t\t\t\t\t\tif (bake && crowdCfg) bData.set(crowdRecord(bake, crowdCfg, i$1, ianim), off + 16);\n\t\t\t\t\t\t\t\tconst vb = variants[k].bounds;\n\t\t\t\t\t\t\t\tconst rad = (vb ? vb.boundingSphereRadius + Math.hypot(...vb.center) : 50) * iscale;\n\t\t\t\t\t\t\t\tbBox.min[0] = Math.min(bBox.min[0], ix - rad);\n\t\t\t\t\t\t\t\tbBox.min[1] = Math.min(bBox.min[1], iy - rad);\n\t\t\t\t\t\t\t\tbBox.min[2] = Math.min(bBox.min[2], iz - rad);\n\t\t\t\t\t\t\t\tbBox.max[0] = Math.max(bBox.max[0], ix + rad);\n\t\t\t\t\t\t\t\tbBox.max[1] = Math.max(bBox.max[1], iy + rad);\n\t\t\t\t\t\t\t\tbBox.max[2] = Math.max(bBox.max[2], iz + rad);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (let k = 0; k < numVariants; k++) {\n\t\t\t\t\t\t\t\tconst bCount = bucketCursors[k];\n\t\t\t\t\t\t\t\tif (bCount === 0) continue;\n\t\t\t\t\t\t\t\tconst v = variants[k];\n\t\t\t\t\t\t\t\tconst activeSlice = bCount === bucketCounts[k] ? bucketItems[k] : bucketItems[k].subarray(0, bCount * strides[k]);\n\t\t\t\t\t\t\t\tconst instanceBuffer = r3d$1.uploadInstanceData(activeSlice);\n\t\t\t\t\t\t\t\tconst bounds = Number.isFinite(bucketBounds[k].min[0]) ? bucketBounds[k] : void 0;\n\t\t\t\t\t\t\t\tfor (const mesh of v.meshes) {\n\t\t\t\t\t\t\t\t\tconst mat = mesh.materialName ? v.materials[mesh.materialName] : void 0;\n\t\t\t\t\t\t\t\t\tconst diffuse = mat?.diffuseColor ?? [\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tconst meshOpts = {\n\t\t\t\t\t\t\t\t\t\tmodelMatrix: finalModelMatrix,\n\t\t\t\t\t\t\t\t\t\topacity: modelOpacity * (mat?.opacity ?? 1),\n\t\t\t\t\t\t\t\t\t\tcolorTint: [\n\t\t\t\t\t\t\t\t\t\t\tcolorTint[0] * diffuse[0],\n\t\t\t\t\t\t\t\t\t\t\tcolorTint[1] * diffuse[1],\n\t\t\t\t\t\t\t\t\t\t\tcolorTint[2] * diffuse[2],\n\t\t\t\t\t\t\t\t\t\t\tcolorTint[3] * (diffuse[3] ?? 1)\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\ttransparent: false,\n\t\t\t\t\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\t\t\t\t\t\twireframe: Boolean(target?.wireframe ?? lop.wireframe),\n\t\t\t\t\t\t\t\t\t\tmaterial: target?.material ?? lop.material ?? instOpt.material ?? mat?.shading ?? \"lit\",\n\t\t\t\t\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness ?? instOpt.roughness ?? mat?.roughness,\n\t\t\t\t\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity ?? instOpt.specularIntensity ?? .5,\n\t\t\t\t\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity ?? instOpt.ambientIntensity ?? 1,\n\t\t\t\t\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic ?? instOpt.metallic ?? mat?.metallic,\n\t\t\t\t\t\t\t\t\t\t...surfaceProps(target, lop, mat),\n\t\t\t\t\t\t\t\t\t\tinstanceBuffer,\n\t\t\t\t\t\t\t\t\t\tinstanceCount: bCount,\n\t\t\t\t\t\t\t\t\t\tbounds,\n\t\t\t\t\t\t\t\t\t\twind: meshWind(lop.wind, v, (shiftedFrame ?? 0) / (fps || 30)),\n\t\t\t\t\t\t\t\t\t\tcrowd: crowdOpts(crowdBakes[k], mesh)\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\t\t\t\t\towner: lop.id,\n\t\t\t\t\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\t\t\t\t\tmesh,\n\t\t\t\t\t\t\t\t\t\ttexture: mat ? await r3d$1.materialTexture(mat) : void 0,\n\t\t\t\t\t\t\t\t\t\topts: meshOpts\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tfinalTex: destTex,\n\t\t\t\t\t\t\t\tfinalView: destView\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lop.swarm3d) {\n\t\t\t\t\tconst swarmOpt = lop.swarm3d;\n\t\t\t\t\tconst max = swarmOpt.max ?? 2e3;\n\t\t\t\t\tconst seed = swarmOpt.seed ?? 42;\n\t\t\t\t\tconst substeps = swarmOpt.substeps ?? 2;\n\t\t\t\t\tconst prewarm = swarmOpt.prewarm ?? 0;\n\t\t\t\t\tconst emitter = swarmOpt.emitter ?? {};\n\t\t\t\t\tconst speed = Array.isArray(swarmOpt.speed) ? swarmOpt.speed : [swarmOpt.speed ?? 100, swarmOpt.speed ?? 300];\n\t\t\t\t\tconst direction = swarmOpt.direction ?? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t0\n\t\t\t\t\t];\n\t\t\t\t\tconst spread = (swarmOpt.spread ?? 45) * Math.PI / 180;\n\t\t\t\t\tconst angularSpeed = Array.isArray(swarmOpt.angularSpeed) ? swarmOpt.angularSpeed : [swarmOpt.angularSpeed ?? 1, swarmOpt.angularSpeed ?? 6];\n\t\t\t\t\tconst angularDrag = swarmOpt.angularDrag ?? .1;\n\t\t\t\t\tconst lifetime = Array.isArray(swarmOpt.lifetime) ? swarmOpt.lifetime : [swarmOpt.lifetime ?? 2, swarmOpt.lifetime ?? 4];\n\t\t\t\t\tconst size = Array.isArray(swarmOpt.size) ? swarmOpt.size : [swarmOpt.size ?? 18, swarmOpt.size ?? 12];\n\t\t\t\t\tconst sizeJitter = swarmOpt.sizeJitter ?? .25;\n\t\t\t\t\tconst fade = swarmOpt.fade ?? [.15, .2];\n\t\t\t\t\tconst colorStops = [];\n\t\t\t\t\tif (Array.isArray(swarmOpt.color)) for (const c of swarmOpt.color) {\n\t\t\t\t\t\tconst p = parseColor(c);\n\t\t\t\t\t\tif (p) colorStops.push([\n\t\t\t\t\t\t\tp.r,\n\t\t\t\t\t\t\tp.g,\n\t\t\t\t\t\t\tp.b,\n\t\t\t\t\t\t\tp.a\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof swarmOpt.color === \"string\") {\n\t\t\t\t\t\tconst p = parseColor(swarmOpt.color);\n\t\t\t\t\t\tif (p) colorStops.push([\n\t\t\t\t\t\t\tp.r,\n\t\t\t\t\t\t\tp.g,\n\t\t\t\t\t\t\tp.b,\n\t\t\t\t\t\t\tp.a\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t\tif (colorStops.length === 0) colorStops.push([\n\t\t\t\t\t\t.15,\n\t\t\t\t\t\t.14,\n\t\t\t\t\t\t.18,\n\t\t\t\t\t\t1\n\t\t\t\t\t]);\n\t\t\t\t\tconst heatOpt = swarmOpt.heat ?? {};\n\t\t\t\t\tconst heatColorStops = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t.1,\n\t\t\t\t\t\t\t.05,\n\t\t\t\t\t\t\t.15\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t.6\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t.9,\n\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]\n\t\t\t\t\t];\n\t\t\t\t\tif (Array.isArray(heatOpt.color) && heatOpt.color.length >= 2) {\n\t\t\t\t\t\tconst c0 = parseColor(heatOpt.color[0]) ?? {\n\t\t\t\t\t\t\tr: .1,\n\t\t\t\t\t\t\tg: .05,\n\t\t\t\t\t\t\tb: .15\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst c1 = parseColor(heatOpt.color[Math.floor(heatOpt.color.length / 2)]) ?? {\n\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: .6\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst c2 = parseColor(heatOpt.color[heatOpt.color.length - 1]) ?? {\n\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\tg: .9,\n\t\t\t\t\t\t\tb: 1\n\t\t\t\t\t\t};\n\t\t\t\t\t\theatColorStops[0] = [\n\t\t\t\t\t\t\tc0.r,\n\t\t\t\t\t\t\tc0.g,\n\t\t\t\t\t\t\tc0.b\n\t\t\t\t\t\t];\n\t\t\t\t\t\theatColorStops[1] = [\n\t\t\t\t\t\t\tc1.r,\n\t\t\t\t\t\t\tc1.g,\n\t\t\t\t\t\t\tc1.b\n\t\t\t\t\t\t];\n\t\t\t\t\t\theatColorStops[2] = [\n\t\t\t\t\t\t\tc2.r,\n\t\t\t\t\t\t\tc2.g,\n\t\t\t\t\t\t\tc2.b\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\tconst rawVariants = Array.isArray(swarmOpt.meshVariants) ? swarmOpt.meshVariants : swarmOpt.mesh ? [swarmOpt.mesh] : [];\n\t\t\t\t\tconst variants = [];\n\t\t\t\t\tfor (const m of rawVariants) {\n\t\t\t\t\t\tlet vModel;\n\t\t\t\t\t\tif (m && typeof m === \"object\") {\n\t\t\t\t\t\t\tif (\"meshes\" in m && Array.isArray(m.meshes)) vModel = m;\n\t\t\t\t\t\t\telse if (m.modelData && \"meshes\" in m.modelData) vModel = m.modelData;\n\t\t\t\t\t\t\telse if (m.primitive3d) vModel = getPrimitiveGeometry(m.primitive3d);\n\t\t\t\t\t\t\telse if (m.src) try {\n\t\t\t\t\t\t\t\tvModel = r3d$1.loadModel(m.src, m.modelFormat ?? \"auto\", {\n\t\t\t\t\t\t\t\t\tcenter: m.center,\n\t\t\t\t\t\t\t\t\tnormalizeSize: m.normalizeSize\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (vModel && vModel.meshes && vModel.meshes.length > 0) variants.push(vModel);\n\t\t\t\t\t}\n\t\t\t\t\tif (variants.length === 0 && model) variants.push(model);\n\t\t\t\t\tlet meshRadius = 20;\n\t\t\t\t\tconst primaryBounds = variants[0]?.bounds;\n\t\t\t\t\tif (primaryBounds) {\n\t\t\t\t\t\tconst dx = primaryBounds.max[0] - primaryBounds.min[0];\n\t\t\t\t\t\tconst dy = primaryBounds.max[1] - primaryBounds.min[1];\n\t\t\t\t\t\tconst dz = primaryBounds.max[2] - primaryBounds.min[2];\n\t\t\t\t\t\tconst maxExtent = Math.max(dx, dy, dz) * .5;\n\t\t\t\t\t\tif (Number.isFinite(maxExtent) && maxExtent > .1) meshRadius = maxExtent;\n\t\t\t\t\t}\n\t\t\t\t\tlet sparksConfig;\n\t\t\t\t\tif (swarmOpt.sparks && typeof swarmOpt.sparks === \"object\") {\n\t\t\t\t\t\tconst sp = swarmOpt.sparks;\n\t\t\t\t\t\tconst spSize = Array.isArray(sp.size) ? [sp.size[0] ?? 3.2, sp.size[1] ?? 1.2] : [sp.size ?? 3.2, (sp.size ?? 3.2) * .35];\n\t\t\t\t\t\tconst spLife = Array.isArray(sp.lifetime) ? [sp.lifetime[0] ?? .35, sp.lifetime[1] ?? .9] : [sp.lifetime ?? .35, (sp.lifetime ?? .6) * 1.4];\n\t\t\t\t\t\tconst spSpeed = Array.isArray(sp.speed) ? [sp.speed[0] ?? 60, sp.speed[1] ?? 260] : [60, sp.speed ?? 260];\n\t\t\t\t\t\tlet spColor = [\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t.9,\n\t\t\t\t\t\t\t1\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (Array.isArray(sp.color) && sp.color.length >= 1) {\n\t\t\t\t\t\t\tconst sc$1 = parseColor(sp.color[Math.floor(sp.color.length / 2)]) ?? parseColor(sp.color[0]) ?? {\n\t\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\t\tg: .9,\n\t\t\t\t\t\t\t\tb: 1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tspColor = [\n\t\t\t\t\t\t\t\tsc$1.r,\n\t\t\t\t\t\t\t\tsc$1.g,\n\t\t\t\t\t\t\t\tsc$1.b\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else if (typeof sp.color === \"string\") {\n\t\t\t\t\t\t\tconst sc$1 = parseColor(sp.color) ?? {\n\t\t\t\t\t\t\t\tr: 1,\n\t\t\t\t\t\t\t\tg: .9,\n\t\t\t\t\t\t\t\tb: 1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tspColor = [\n\t\t\t\t\t\t\t\tsc$1.r,\n\t\t\t\t\t\t\t\tsc$1.g,\n\t\t\t\t\t\t\t\tsc$1.b\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsparksConfig = {\n\t\t\t\t\t\t\tmax: sp.max ?? 2e3,\n\t\t\t\t\t\t\trate: sp.rate ?? 600,\n\t\t\t\t\t\t\tthreshold: sp.threshold ?? .25,\n\t\t\t\t\t\t\tsize: [spSize[0], spSize[1]],\n\t\t\t\t\t\t\tlifetime: [spLife[0], spLife[1]],\n\t\t\t\t\t\t\tspeed: [spSpeed[0], spSpeed[1]],\n\t\t\t\t\t\t\tintensity: sp.intensity ?? 9,\n\t\t\t\t\t\t\tcolor: spColor\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst staticConfig = {\n\t\t\t\t\t\tmax,\n\t\t\t\t\t\tseed,\n\t\t\t\t\t\tsubsteps,\n\t\t\t\t\t\tprewarm,\n\t\t\t\t\t\temitter: {\n\t\t\t\t\t\t\tshape: emitter.shape ?? \"point\",\n\t\t\t\t\t\t\tx: emitter.x ?? 0,\n\t\t\t\t\t\t\ty: emitter.y ?? 0,\n\t\t\t\t\t\t\tz: emitter.z ?? 0,\n\t\t\t\t\t\t\twidth: emitter.width ?? 100,\n\t\t\t\t\t\t\theight: emitter.height ?? 100,\n\t\t\t\t\t\t\tdepth: emitter.depth ?? 100,\n\t\t\t\t\t\t\tradius: emitter.radius ?? 50\n\t\t\t\t\t\t},\n\t\t\t\t\t\tspeed: [speed[0], speed[1]],\n\t\t\t\t\t\tdirection: [\n\t\t\t\t\t\t\tdirection[0],\n\t\t\t\t\t\t\tdirection[1],\n\t\t\t\t\t\t\tdirection[2]\n\t\t\t\t\t\t],\n\t\t\t\t\t\tspread,\n\t\t\t\t\t\tangularSpeed: [angularSpeed[0], angularSpeed[1]],\n\t\t\t\t\t\tangularDrag,\n\t\t\t\t\t\tlifetime: [lifetime[0], lifetime[1]],\n\t\t\t\t\t\tsize: [size[0], size[1]],\n\t\t\t\t\t\tsizeJitter,\n\t\t\t\t\t\tfade: [fade[0], fade[1]],\n\t\t\t\t\t\tcolors: colorStops,\n\t\t\t\t\t\theat: {\n\t\t\t\t\t\t\tsource: heatOpt.source ?? \"both\",\n\t\t\t\t\t\t\tmaxSpeed: heatOpt.maxSpeed ?? 900,\n\t\t\t\t\t\t\tcurve: heatOpt.curve ?? 1.6,\n\t\t\t\t\t\t\tintensity: heatOpt.intensity ?? 5,\n\t\t\t\t\t\t\tcolors: heatColorStops\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvariants: Math.max(1, variants.length),\n\t\t\t\t\t\tmeshRadius,\n\t\t\t\t\t\tsparks: sparksConfig\n\t\t\t\t\t};\n\t\t\t\t\tlet swarmState = swarmStateMap.get(lop);\n\t\t\t\t\tif (!swarmState || swarmState.device !== ctx.device) {\n\t\t\t\t\t\tswarmState = r3d$1.swarm3dPipeline.createState(staticConfig);\n\t\t\t\t\t\tswarmStateMap.set(lop, swarmState);\n\t\t\t\t\t}\n\t\t\t\t\tconst targetF = shiftedFrame ?? 0;\n\t\t\t\t\tconst frameSampler = (f) => {\n\t\t\t\t\t\tconst fCtx = {\n\t\t\t\t\t\t\tframe: f,\n\t\t\t\t\t\t\tfps: fps || 30,\n\t\t\t\t\t\t\ttime: f / (fps || 30),\n\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\tprogress: 0,\n\t\t\t\t\t\t\tdeltaTime: 1 / (fps || 30)\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sample = (d, fallback) => typeof d === \"number\" ? d : typeof d?.get === \"function\" ? Number(d.get(fCtx)) : typeof d === \"function\" ? Number(d(f)) : fallback;\n\t\t\t\t\t\tconst grav = swarmOpt.gravity;\n\t\t\t\t\t\tlet gx = 0;\n\t\t\t\t\t\tlet gy = 1200;\n\t\t\t\t\t\tlet gz = 0;\n\t\t\t\t\t\tif (Array.isArray(grav)) {\n\t\t\t\t\t\t\tgx = sample(grav[0], 0);\n\t\t\t\t\t\t\tgy = sample(grav[1], 1200);\n\t\t\t\t\t\t\tgz = sample(grav[2], 0);\n\t\t\t\t\t\t} else if (grav !== void 0) gy = sample(grav, 1200);\n\t\t\t\t\t\tconst rate = sample(emitter.rate, 150);\n\t\t\t\t\t\tconst dragVal = sample(swarmOpt.drag, .05);\n\t\t\t\t\t\tlet noiseStrength = 0;\n\t\t\t\t\t\tlet noiseScale = 200;\n\t\t\t\t\t\tlet noiseSpeed = 1;\n\t\t\t\t\t\tif (swarmOpt.noise) {\n\t\t\t\t\t\t\tnoiseStrength = sample(swarmOpt.noise.strength, 0);\n\t\t\t\t\t\t\tnoiseScale = swarmOpt.noise.scale ?? 200;\n\t\t\t\t\t\t\tnoiseSpeed = swarmOpt.noise.speed ?? 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst attractors = [];\n\t\t\t\t\t\tif (Array.isArray(swarmOpt.attractors)) for (const a of swarmOpt.attractors) attractors.push({\n\t\t\t\t\t\t\tx: sample(a.x, 0),\n\t\t\t\t\t\t\ty: sample(a.y, 0),\n\t\t\t\t\t\t\tz: sample(a.z, 0),\n\t\t\t\t\t\t\tstrength: sample(a.strength, 0),\n\t\t\t\t\t\t\tradius: a.radius\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlet vortex;\n\t\t\t\t\t\tif (swarmOpt.vortex) vortex = {\n\t\t\t\t\t\t\tx: sample(swarmOpt.vortex.x, 0),\n\t\t\t\t\t\t\ty: sample(swarmOpt.vortex.y, 0),\n\t\t\t\t\t\t\tz: sample(swarmOpt.vortex.z, 0),\n\t\t\t\t\t\t\taxis: swarmOpt.vortex.axis ?? [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tswirl: sample(swarmOpt.vortex.swirl, 0),\n\t\t\t\t\t\t\tpull: sample(swarmOpt.vortex.pull, 0),\n\t\t\t\t\t\t\taxial: sample(swarmOpt.vortex.axial, 0),\n\t\t\t\t\t\t\tradius: swarmOpt.vortex.radius ?? 800\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet floor;\n\t\t\t\t\t\tif (swarmOpt.floor) floor = {\n\t\t\t\t\t\t\ty: swarmOpt.floor.y ?? 500,\n\t\t\t\t\t\t\tbounce: swarmOpt.floor.bounce ?? .3,\n\t\t\t\t\t\t\tfriction: sample(swarmOpt.floor.friction, 1.5),\n\t\t\t\t\t\t\theatGain: swarmOpt.floor.heatGain ?? 1,\n\t\t\t\t\t\t\theatDecay: swarmOpt.floor.heatDecay ?? .45\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet emitterPos;\n\t\t\t\t\t\tif (emitter.x !== void 0 || emitter.y !== void 0 || emitter.z !== void 0) emitterPos = [\n\t\t\t\t\t\t\tsample(emitter.x, 0),\n\t\t\t\t\t\t\tsample(emitter.y, 0),\n\t\t\t\t\t\t\tsample(emitter.z, 0)\n\t\t\t\t\t\t];\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\trate,\n\t\t\t\t\t\t\tgravity: [\n\t\t\t\t\t\t\t\tgx,\n\t\t\t\t\t\t\t\tgy,\n\t\t\t\t\t\t\t\tgz\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdrag: dragVal,\n\t\t\t\t\t\t\tnoise: {\n\t\t\t\t\t\t\t\tstrength: noiseStrength,\n\t\t\t\t\t\t\t\tscale: noiseScale,\n\t\t\t\t\t\t\t\tspeed: noiseSpeed\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tattractors,\n\t\t\t\t\t\t\tvortex,\n\t\t\t\t\t\t\tfloor,\n\t\t\t\t\t\t\temitterPos\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t\tr3d$1.swarm3dPipeline.advance(swarmState, staticConfig, targetF, fps || 30, frameSampler);\n\t\t\t\t\tif (variants.length > 0) {\n\t\t\t\t\t\tconst sliceCount = swarmState.sliceCount;\n\t\t\t\t\t\tfor (let vIdx = 0; vIdx < variants.length; vIdx++) {\n\t\t\t\t\t\t\tconst vModel = variants[vIdx];\n\t\t\t\t\t\t\tconst firstInstance = vIdx * sliceCount;\n\t\t\t\t\t\t\tfor (const mesh of vModel.meshes) {\n\t\t\t\t\t\t\t\tconst mat = mesh.materialName ? vModel.materials[mesh.materialName] : void 0;\n\t\t\t\t\t\t\t\tconst meshOpts = {\n\t\t\t\t\t\t\t\t\tmodelMatrix: finalModelMatrix,\n\t\t\t\t\t\t\t\t\topacity: modelOpacity,\n\t\t\t\t\t\t\t\t\tcolorTint,\n\t\t\t\t\t\t\t\t\ttransparent: false,\n\t\t\t\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\t\t\t\t\twireframe: Boolean(target?.wireframe ?? lop.wireframe),\n\t\t\t\t\t\t\t\t\tmaterial: target?.material ?? lop.material ?? swarmOpt.material ?? mat?.shading ?? \"lit\",\n\t\t\t\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness ?? swarmOpt.roughness ?? mat?.roughness ?? .35,\n\t\t\t\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity ?? swarmOpt.specularIntensity ?? .5,\n\t\t\t\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity ?? swarmOpt.ambientIntensity ?? 1,\n\t\t\t\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic ?? swarmOpt.metallic ?? mat?.metallic ?? .7,\n\t\t\t\t\t\t\t\t\t...surfaceProps(target, lop, mat),\n\t\t\t\t\t\t\t\t\tinstanceBuffer: swarmState.instances,\n\t\t\t\t\t\t\t\t\tinstanceCount: sliceCount,\n\t\t\t\t\t\t\t\t\tfirstInstance\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\t\t\t\towner: lop.id,\n\t\t\t\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\t\t\t\tmesh,\n\t\t\t\t\t\t\t\t\ttexture: mat ? await r3d$1.materialTexture(mat) : void 0,\n\t\t\t\t\t\t\t\t\topts: meshOpts\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sparksConfig && sparksConfig.max > 0) {\n\t\t\t\t\t\t\tconst sparkModel = variants[0];\n\t\t\t\t\t\t\tconst sparkFirst = variants.length * sliceCount;\n\t\t\t\t\t\t\tfor (const mesh of sparkModel.meshes) {\n\t\t\t\t\t\t\t\tconst mat = mesh.materialName ? sparkModel.materials[mesh.materialName] : void 0;\n\t\t\t\t\t\t\t\tconst sparkOpts = {\n\t\t\t\t\t\t\t\t\tmodelMatrix: finalModelMatrix,\n\t\t\t\t\t\t\t\t\topacity: modelOpacity,\n\t\t\t\t\t\t\t\t\tcolorTint,\n\t\t\t\t\t\t\t\t\ttransparent: false,\n\t\t\t\t\t\t\t\t\ttwoSided: true,\n\t\t\t\t\t\t\t\t\twireframe: false,\n\t\t\t\t\t\t\t\t\tmaterial: \"lit\",\n\t\t\t\t\t\t\t\t\troughness: .2,\n\t\t\t\t\t\t\t\t\tspecularIntensity: .8,\n\t\t\t\t\t\t\t\t\tambientIntensity: 1,\n\t\t\t\t\t\t\t\t\tmetallic: .9,\n\t\t\t\t\t\t\t\t\t...surfaceProps(target, lop, mat),\n\t\t\t\t\t\t\t\t\tinstanceBuffer: swarmState.instances,\n\t\t\t\t\t\t\t\t\tinstanceCount: sparksConfig.max,\n\t\t\t\t\t\t\t\t\tfirstInstance: sparkFirst\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\t\t\t\towner: lop.id,\n\t\t\t\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\t\t\t\tmesh,\n\t\t\t\t\t\t\t\t\ttexture: mat ? await r3d$1.materialTexture(mat) : void 0,\n\t\t\t\t\t\t\t\t\topts: sparkOpts\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: destTex,\n\t\t\t\t\t\tfinalView: destView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tlet skinningMatrices;\n\t\t\t\tconst animProgress = target?.animationProgress ?? lop.animationProgress ?? 0;\n\t\t\t\tconst animTime = target?.animationTime ?? lop.animationTime ?? 0;\n\t\t\t\tconst animSpeed = target?.animationSpeed ?? lop.animationSpeed ?? 1;\n\t\t\t\tconst clip = (lop.animationName ? model.animations.find((a) => a.name === lop.animationName) : void 0) ?? model.animations[0];\n\t\t\t\tlet clipSec = 0;\n\t\t\t\tif (clip && clip.duration > 0) {\n\t\t\t\t\tclipSec = animProgress > 0 ? animProgress * clip.duration : animTime + (shiftedFrame ?? 0) / (fps || 30) * animSpeed;\n\t\t\t\t\tif (lop.loop ?? true) clipSec %= clip.duration;\n\t\t\t\t}\n\t\t\t\tconst sceneRoot = Matrix4Math.multiply(finalModelMatrix, model.rootTransform ?? Matrix4Math.identity());\n\t\t\t\tconst layerProps = Matrix4Math.multiply(Matrix4Math.translate(sampledX$1 - posX, sampledY$1 - posY, 0), localM);\n\t\t\t\tconst wholeFracture = Boolean(lop.fracture3d && fractureWhole(model, lop.fracture3d, shiftedFrame ?? 0));\n\t\t\t\tconst posed = lop.fracture3d && !wholeFracture && fracturePose(model, lop.fracture3d, shiftedFrame ?? 0, layerProps, [\n\t\t\t\t\tscX,\n\t\t\t\t\tscY,\n\t\t\t\t\tscZ\n\t\t\t\t]) || (model.nodes ? poseCharacter({\n\t\t\t\t\tmodel,\n\t\t\t\t\tnode: lop,\n\t\t\t\t\tframe: shiftedFrame ?? 0,\n\t\t\t\t\tfps: fps || 30,\n\t\t\t\t\tclip,\n\t\t\t\t\tclipSec,\n\t\t\t\t\tsceneRoot,\n\t\t\t\t\tkey: `${compiled.key}:${lop.id}`\n\t\t\t\t}) : void 0);\n\t\t\t\tconst skinCache = /* @__PURE__ */ new Map();\n\t\t\t\tconst placeMesh = (mesh) => {\n\t\t\t\t\tif (!posed) return { matrix: sceneRoot };\n\t\t\t\t\tif (mesh.skin !== void 0) {\n\t\t\t\t\t\tlet joints = skinCache.get(mesh.skin);\n\t\t\t\t\t\tif (!joints) {\n\t\t\t\t\t\t\tjoints = jointMatrices(model, mesh.skin, posed);\n\t\t\t\t\t\t\tskinCache.set(mesh.skin, joints);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmatrix: sceneRoot,\n\t\t\t\t\t\t\tjoints\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (mesh.node !== void 0) return { matrix: Matrix4Math.multiply(sceneRoot, posed[mesh.node]) };\n\t\t\t\t\treturn { matrix: sceneRoot };\n\t\t\t\t};\n\t\t\t\tif (!posed && clip && clip.duration > 0) {\n\t\t\t\t\tconst currentSec = clipSec;\n\t\t\t\t\tif (model.skeleton && model.skeleton.bones.length > 0) {\n\t\t\t\t\t\tconst numBones = model.skeleton.bones.length;\n\t\t\t\t\t\tskinningMatrices = new Float32Array(numBones * 16);\n\t\t\t\t\t\tfor (let b = 0; b < numBones; b++) {\n\t\t\t\t\t\t\tskinningMatrices[b * 16] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 5] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 10] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 15] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const track of clip.tracks) {\n\t\t\t\t\t\t\tconst boneIdx = model.skeleton.boneIndicesByName[track.nodeName];\n\t\t\t\t\t\t\tif (boneIdx !== void 0 && boneIdx < numBones) {\n\t\t\t\t\t\t\t\tconst times = track.times;\n\t\t\t\t\t\t\t\tlet sampleIdx = 0;\n\t\t\t\t\t\t\t\tfor (let k = 0; k < times.length - 1; k++) if (currentSec >= times[k] && currentSec <= times[k + 1]) {\n\t\t\t\t\t\t\t\t\tsampleIdx = k;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst t0 = times[sampleIdx] ?? 0;\n\t\t\t\t\t\t\t\tconst t1 = times[sampleIdx + 1] ?? t0;\n\t\t\t\t\t\t\t\tconst alpha = t1 > t0 ? (currentSec - t0) / (t1 - t0) : 0;\n\t\t\t\t\t\t\t\tif (track.translations) {\n\t\t\t\t\t\t\t\t\tconst x0 = track.translations[sampleIdx * 3] ?? 0;\n\t\t\t\t\t\t\t\t\tconst y0 = track.translations[sampleIdx * 3 + 1] ?? 0;\n\t\t\t\t\t\t\t\t\tconst z0 = track.translations[sampleIdx * 3 + 2] ?? 0;\n\t\t\t\t\t\t\t\t\tconst x1 = track.translations[(sampleIdx + 1) * 3] ?? x0;\n\t\t\t\t\t\t\t\t\tconst y1 = track.translations[(sampleIdx + 1) * 3 + 1] ?? y0;\n\t\t\t\t\t\t\t\t\tconst z1 = track.translations[(sampleIdx + 1) * 3 + 2] ?? z0;\n\t\t\t\t\t\t\t\t\tconst curX = x0 + (x1 - x0) * alpha;\n\t\t\t\t\t\t\t\t\tconst curY = y0 + (y1 - y0) * alpha;\n\t\t\t\t\t\t\t\t\tconst curZ = z0 + (z1 - z0) * alpha;\n\t\t\t\t\t\t\t\t\tconst boneMat = Matrix4Math.translate(curX, curY, curZ);\n\t\t\t\t\t\t\t\t\tconst bone = model.skeleton.bones[boneIdx];\n\t\t\t\t\t\t\t\t\tconst skinMat = bone ? Matrix4Math.multiply(boneMat, bone.inverseBindMatrix) : boneMat;\n\t\t\t\t\t\t\t\t\tskinningMatrices.set(skinMat, boneIdx * 16);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const mesh of model.meshes) {\n\t\t\t\t\tif (wholeFracture && mesh.materialName === FRACTURE_INTERIOR_MATERIAL) continue;\n\t\t\t\t\tconst mat = mesh.materialName ? model.materials[mesh.materialName] : void 0;\n\t\t\t\t\tconst placed = placeMesh(mesh);\n\t\t\t\t\tconst meshSkin = placed.joints ?? skinningMatrices;\n\t\t\t\t\tlet meshColorTint;\n\t\t\t\t\tif (colorParsed) if (mat?.diffuseColor) meshColorTint = [\n\t\t\t\t\t\tmat.diffuseColor[0] * colorTint[0],\n\t\t\t\t\t\tmat.diffuseColor[1] * colorTint[1],\n\t\t\t\t\t\tmat.diffuseColor[2] * colorTint[2],\n\t\t\t\t\t\t(mat.diffuseColor[3] ?? 1) * colorTint[3]\n\t\t\t\t\t];\n\t\t\t\t\telse meshColorTint = colorTint;\n\t\t\t\t\telse if (mat?.diffuseColor) meshColorTint = mat.diffuseColor;\n\t\t\t\t\telse meshColorTint = [\n\t\t\t\t\t\t.8,\n\t\t\t\t\t\t.8,\n\t\t\t\t\t\t.85,\n\t\t\t\t\t\t1\n\t\t\t\t\t];\n\t\t\t\t\tconst audioDeformConfig = target?.audioDeform ?? lop.audioDeform;\n\t\t\t\t\tlet meshAudioDeform;\n\t\t\t\t\tif (audioDeformConfig) {\n\t\t\t\t\t\tconst currentSec = (shiftedFrame ?? 0) / (fps || 30);\n\t\t\t\t\t\tconst timeMs = currentSec * 1e3;\n\t\t\t\t\t\tlet latentBuffer = audioDeformConfig.latentBuffer;\n\t\t\t\t\t\tif (!latentBuffer && audioDeformConfig.audioBuffer) latentBuffer = audioDeformConfig.audioBuffer;\n\t\t\t\t\t\tif (!latentBuffer) {\n\t\t\t\t\t\t\tconst directAudio = audioDeformConfig.audioData;\n\t\t\t\t\t\t\tif (directAudio) {\n\t\t\t\t\t\t\t\tconst cacheKey = (lop.id ?? \"audio-mesh\") + \"-direct-audio\";\n\t\t\t\t\t\t\t\tlet trackCache = audioTrackLatentCache.get(cacheKey);\n\t\t\t\t\t\t\t\tif (!trackCache) {\n\t\t\t\t\t\t\t\t\tconst chs = Array.isArray(directAudio) ? directAudio : directAudio.channels;\n\t\t\t\t\t\t\t\t\tconst sRate = Array.isArray(directAudio) ? 48e3 : directAudio.sampleRate;\n\t\t\t\t\t\t\t\t\tconst totalF = Math.max(10, Math.ceil((chs[0]?.length ?? 0) / sRate * (fps || 30)) + 10);\n\t\t\t\t\t\t\t\t\ttrackCache = new AudioLatentTrackCache(chs, sRate, fps || 30, totalF);\n\t\t\t\t\t\t\t\t\taudioTrackLatentCache.set(cacheKey, trackCache);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlatentBuffer = trackCache.getGpuBuffer(ctx.device, shiftedFrame ?? 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!latentBuffer && audioDeformConfig.audioTrackId) {\n\t\t\t\t\t\t\tconst trackId = audioDeformConfig.audioTrackId;\n\t\t\t\t\t\t\tlet foundAudioUrl;\n\t\t\t\t\t\t\tconst searchVms = (list) => {\n\t\t\t\t\t\t\t\tfor (const v of list) {\n\t\t\t\t\t\t\t\t\tconst op$1 = v.operation;\n\t\t\t\t\t\t\t\t\tif (op$1) {\n\t\t\t\t\t\t\t\t\t\tif (op$1.id === trackId || op$1.inputHandleId === trackId) {\n\t\t\t\t\t\t\t\t\t\t\tfoundAudioUrl = op$1.inputHandleId || op$1.src || op$1.url;\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (v.children) searchVms(v.children);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (virtualMedia.children) searchVms(virtualMedia.children);\n\t\t\t\t\t\t\tif (!foundAudioUrl && (trackId.endsWith(\".mp3\") || trackId.endsWith(\".wav\") || trackId.endsWith(\".ogg\"))) foundAudioUrl = trackId;\n\t\t\t\t\t\t\tif (foundAudioUrl) try {\n\t\t\t\t\t\t\t\tlet trackCache = audioTrackLatentCache.get(foundAudioUrl);\n\t\t\t\t\t\t\t\tif (!trackCache) {\n\t\t\t\t\t\t\t\t\tconst decoded = await decodeAudioSource(foundAudioUrl);\n\t\t\t\t\t\t\t\t\tif (decoded && decoded.channels.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst sRate = decoded.sampleRate || 48e3;\n\t\t\t\t\t\t\t\t\t\tconst ch0Len = decoded.channels[0]?.length ?? 0;\n\t\t\t\t\t\t\t\t\t\tconst durationSec$1 = decoded.durationSec ?? ch0Len / sRate;\n\t\t\t\t\t\t\t\t\t\tconst totalF = Math.max(10, Math.ceil(durationSec$1 * (fps || 30)) + 10);\n\t\t\t\t\t\t\t\t\t\ttrackCache = new AudioLatentTrackCache(decoded.channels, sRate, fps || 30, totalF);\n\t\t\t\t\t\t\t\t\t\taudioTrackLatentCache.set(foundAudioUrl, trackCache);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (trackCache) latentBuffer = trackCache.getGpuBuffer(ctx.device, shiftedFrame ?? 0);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tconsole.warn(\"[webgpu-renderer] Failed to decode audio for deformWithAudio:\", err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (latentBuffer) {\n\t\t\t\t\t\t\tlet amplitudeMultiplier = audioDeformConfig.amplitudeMultiplier ?? 1;\n\t\t\t\t\t\t\tif (typeof amplitudeMultiplier !== \"number\" && typeof amplitudeMultiplier?.get === \"function\") {\n\t\t\t\t\t\t\t\tconst frameCtx = {\n\t\t\t\t\t\t\t\t\tframe: shiftedFrame ?? 0,\n\t\t\t\t\t\t\t\t\tfps: fps || 30,\n\t\t\t\t\t\t\t\t\ttime: currentSec,\n\t\t\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\t\t\tprogress: 0,\n\t\t\t\t\t\t\t\t\tdeltaTime: 1 / (fps || 30)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tamplitudeMultiplier = Number(amplitudeMultiplier.get(frameCtx));\n\t\t\t\t\t\t\t} else if (typeof amplitudeMultiplier !== \"number\" && typeof amplitudeMultiplier?.value === \"number\") amplitudeMultiplier = amplitudeMultiplier.value;\n\t\t\t\t\t\t\tmeshAudioDeform = {\n\t\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\t\t...audioDeformConfig,\n\t\t\t\t\t\t\t\t\tamplitudeMultiplier: Number.isFinite(amplitudeMultiplier) ? amplitudeMultiplier : 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlatentBuffer,\n\t\t\t\t\t\t\t\ttimeMs,\n\t\t\t\t\t\t\t\tsampleRate: 48e3\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst meshOpts = {\n\t\t\t\t\t\tmodelMatrix: placed.matrix,\n\t\t\t\t\t\tmorphWeights: namedMorphWeights(mesh.morphTargetNames, sampleMorphWeights(mesh, clip, clipSec), target?.morphs ?? lop.morphs, {\n\t\t\t\t\t\t\tframe: shiftedFrame ?? 0,\n\t\t\t\t\t\t\tfps: fps || 30\n\t\t\t\t\t\t}),\n\t\t\t\t\t\topacity: modelOpacity * (mat?.opacity ?? 1),\n\t\t\t\t\t\tcolorTint: meshColorTint,\n\t\t\t\t\t\ttransparent: mat?.alphaMode === \"blend\" || modelOpacity * (mat?.opacity ?? 1) < 1 || meshColorTint[3] < 1 || hasVertexAlpha(mesh),\n\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? mat?.twoSided ?? true,\n\t\t\t\t\t\twireframe: Boolean(target?.wireframe ?? lop.wireframe),\n\t\t\t\t\t\tisSkinned: Boolean(meshSkin || mesh.jointIndices && mesh.jointWeights),\n\t\t\t\t\t\tskinningMatrices: meshSkin,\n\t\t\t\t\t\tmaterial: target?.material ?? lop.material ?? mat?.shading ?? \"lit\",\n\t\t\t\t\t\tshadeColor: mat?.shadeColor,\n\t\t\t\t\t\talphaCutoff: mat?.alphaCutoff,\n\t\t\t\t\t\ttextureWrap: mat?.textureWrap,\n\t\t\t\t\t\ttextureFilter: mat?.textureFilter,\n\t\t\t\t\t\tshininess: target?.shininess ?? lop.shininess ?? mat?.shininess ?? 32,\n\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness ?? mat?.roughness,\n\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity ?? .5,\n\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity ?? 1,\n\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic ?? mat?.metallic,\n\t\t\t\t\t\t...surfaceProps(target, lop, mat),\n\t\t\t\t\t\tior: target?.ior ?? lop.ior ?? mat?.ior,\n\t\t\t\t\t\tdispersion: target?.dispersion ?? lop.dispersion,\n\t\t\t\t\t\tthickness: target?.thickness ?? lop.thickness,\n\t\t\t\t\t\t...mat?.thickness !== void 0 ? { worldThickness: mat.thickness * matrixScale(placed.matrix) } : {},\n\t\t\t\t\t\taudioDeform: meshAudioDeform,\n\t\t\t\t\t\twind: meshWind(lop.wind, model, (shiftedFrame ?? 0) / (fps || 30))\n\t\t\t\t\t};\n\t\t\t\t\tif (mat) meshOpts.maps = await r3d$1.materialMaps(mat);\n\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\towner: lop.id,\n\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\tmesh,\n\t\t\t\t\t\ttexture: mat ? await r3d$1.materialTexture(mat) : void 0,\n\t\t\t\t\t\topts: meshOpts\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: destTex,\n\t\t\t\t\tfinalView: destView\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst rect = rects[lop.id];\n\t\t\tif (!rect) {\n\t\t\t\tif (isContainer) return await renderNodeTree(nodeVM.children ?? [], destTex, destView, excludes, accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, isRootScene);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst baseX = lop.x ?? 0;\n\t\t\tconst baseY = lop.y ?? 0;\n\t\t\tconst sampledX = target?.x ?? baseX;\n\t\t\tconst sampledY = target?.y ?? baseY;\n\t\t\tlet localX = 0;\n\t\t\tlet localY = 0;\n\t\t\tif (parentRect) {\n\t\t\t\tconst localLayoutX = rect.x - parentRect.x;\n\t\t\t\tconst localLayoutY = rect.y - parentRect.y;\n\t\t\t\tlocalX = localLayoutX + (sampledX - baseX);\n\t\t\t\tlocalY = localLayoutY + (sampledY - baseY);\n\t\t\t} else {\n\t\t\t\tlocalX = rect.x + (sampledX - baseX);\n\t\t\t\tlocalY = rect.y + (sampledY - baseY);\n\t\t\t}\n\t\t\tconst scale$1 = target?.scale ?? lop.scale ?? 1;\n\t\t\tconst scaleX = target?.scaleX ?? lop.scaleX ?? 1;\n\t\t\tconst scaleY = target?.scaleY ?? lop.scaleY ?? 1;\n\t\t\tconst rotation = target?.rotation ?? lop.rotation ?? 0;\n\t\t\tconst layerOpacity = (target?.opacity ?? lop.opacity ?? 1) * accumulatedOpacity;\n\t\t\tconst rawAnimators = target?.animators ?? lop.animators;\n\t\t\tconst isPathText = kind === \"text\" && Boolean(lop.pathOptions || target?.pathOptions);\n\t\t\tconst hasKineticAnimators = kind === \"text\" && Array.isArray(rawAnimators) && rawAnimators.length > 0;\n\t\t\tconst hasFormation = kind === \"text\" && Array.isArray(rawAnimators) && rawAnimators.some((a) => {\n\t\t\t\tconst anim = a;\n\t\t\t\treturn anim?.props?.formation !== void 0 || anim?.formation !== void 0;\n\t\t\t});\n\t\t\tlet padX = 0;\n\t\t\tlet padY = 0;\n\t\t\tif (hasFormation) {\n\t\t\t\tlet formationRadius = 0;\n\t\t\t\tlet formationPitch = 0;\n\t\t\t\tfor (const a of rawAnimators) {\n\t\t\t\t\tconst anim = a;\n\t\t\t\t\tconst f = anim?.props?.formation ?? anim?.formation;\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\tif (typeof f.radius === \"number\") formationRadius = Math.max(formationRadius, f.radius);\n\t\t\t\t\t\tif (typeof f.pitch === \"number\") formationPitch = Math.max(formationPitch, f.pitch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpadX = Math.max(160, Math.ceil(formationRadius + 100));\n\t\t\t\tpadY = Math.max(100, Math.ceil(formationRadius + formationPitch * 15 + 100));\n\t\t\t} else if (!isPathText && hasKineticAnimators) {\n\t\t\t\tpadX = Math.max(80, Math.ceil(rect.width * .2));\n\t\t\t\tpadY = Math.max(50, Math.ceil(rect.height * .5));\n\t\t\t}\n\t\t\tif (kind === \"text\" && !isPathText) {\n\t\t\t\tconst ink = textInkOutset(target, lop);\n\t\t\t\tpadX = Math.max(padX, ink);\n\t\t\t\tpadY = Math.max(padY, ink);\n\t\t\t}\n\t\t\tconst layerW = isPathText ? targetW : rect.width + padX * 2;\n\t\t\tconst layerH = isPathText ? targetH : rect.height + padY * 2;\n\t\t\tlocalX -= padX;\n\t\t\tlocalY -= padY;\n\t\t\tconst anchorX = isPathText ? (lop.anchorX ?? .5) * rect.width / layerW : (padX + (lop.anchorX ?? .5) * rect.width) / layerW;\n\t\t\tconst anchorY = isPathText ? (lop.anchorY ?? .5) * rect.height / layerH : (padY + (lop.anchorY ?? .5) * rect.height) / layerH;\n\t\t\tconst localMatrix = toDOMMatrix(buildLayerMatrix({\n\t\t\t\tx: localX,\n\t\t\t\ty: localY,\n\t\t\t\twidth: layerW,\n\t\t\t\theight: layerH,\n\t\t\t\trotation,\n\t\t\t\tscale: scale$1,\n\t\t\t\tscaleX,\n\t\t\t\tscaleY,\n\t\t\t\tanchorX,\n\t\t\t\tanchorY\n\t\t\t}));\n\t\t\tconst layerMatrix = parentMatrix.multiply(localMatrix);\n\t\t\tconst blendMode = lop.blendMode || \"normal\";\n\t\t\tlet activeTex = destTex;\n\t\t\tlet activeView = destView;\n\t\t\tconst is3D = has3DTransform(target, lop);\n\t\t\tconst rotateX = target?.rotateX ?? lop.rotateX ?? 0;\n\t\t\tconst rotateY = target?.rotateY ?? lop.rotateY ?? 0;\n\t\t\tconst rotateZ = target?.rotateZ ?? lop.rotateZ ?? 0;\n\t\t\tconst translateZ = target?.translateZ ?? lop.translateZ ?? 0;\n\t\t\tconst perspective = target?.perspective ?? lop.perspective ?? 0;\n\t\t\tconst perspectiveOriginX = target?.perspectiveOriginX ?? lop.perspectiveOriginX ?? anchorX;\n\t\t\tconst perspectiveOriginY = target?.perspectiveOriginY ?? lop.perspectiveOriginY ?? anchorY;\n\t\t\tconst backfaceVisibility = target?.backfaceVisibility ?? lop.backfaceVisibility ?? \"visible\";\n\t\t\tlet quad3D = null;\n\t\t\tif (is3D) {\n\t\t\t\tconst m3d = Transform3DMath.buildLayer3DMatrix({\n\t\t\t\t\tx: localX,\n\t\t\t\t\ty: localY,\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\trotateXDeg: rotateX,\n\t\t\t\t\trotateYDeg: rotateY,\n\t\t\t\t\trotateZDeg: rotateZ !== 0 ? rotateZ : rotation,\n\t\t\t\t\tscaleX: scaleX * scale$1,\n\t\t\t\t\tscaleY: scaleY * scale$1,\n\t\t\t\t\tperspectivePx: perspective,\n\t\t\t\t\toriginXRatio: perspectiveOriginX,\n\t\t\t\t\toriginYRatio: perspectiveOriginY,\n\t\t\t\t\ttranslateZPx: translateZ\n\t\t\t\t});\n\t\t\t\tlet q = Transform3DMath.projectRectangleCorners(m3d, layerW, layerH);\n\t\t\t\tif (!parentMatrix.isIdentity) q = {\n\t\t\t\t\ttopLeft: parentMatrix.transformPoint(new DOMPoint(q.topLeft.x, q.topLeft.y)),\n\t\t\t\t\ttopRight: parentMatrix.transformPoint(new DOMPoint(q.topRight.x, q.topRight.y)),\n\t\t\t\t\tbottomLeft: parentMatrix.transformPoint(new DOMPoint(q.bottomLeft.x, q.bottomLeft.y)),\n\t\t\t\t\tbottomRight: parentMatrix.transformPoint(new DOMPoint(q.bottomRight.x, q.bottomRight.y))\n\t\t\t\t};\n\t\t\t\tif (backfaceVisibility === \"hidden\" && Transform3DMath.computeSignedArea(q) < 0) return;\n\t\t\t\tquad3D = q;\n\t\t\t}\n\t\t\tif (isContainer) {\n\t\t\t\tif (lop.transformStyle === \"preserve-3d\" && isTrue3D) {\n\t\t\t\t\tlet current3DMatrix = Matrix4Math.identity();\n\t\t\t\t\tconst containerX = parent3DMatrix !== null ? target?.x ?? lop.x ?? 0 : target?.x ?? lop.x ?? localX + layerW * .5;\n\t\t\t\t\tconst containerY = parent3DMatrix !== null ? target?.y ?? lop.y ?? 0 : target?.y ?? lop.y ?? localY + layerH * .5;\n\t\t\t\t\tconst containerZ = target?.z ?? lop.z ?? 0;\n\t\t\t\t\tcurrent3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.translate(containerX, containerY, containerZ));\n\t\t\t\t\tconst rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);\n\t\t\t\t\tif (rzRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateZ(rzRad));\n\t\t\t\t\tif (ryRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateY(ryRad));\n\t\t\t\t\tif (rxRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateX(rxRad));\n\t\t\t\t\tconst csX = (target?.scaleX ?? lop.scaleX ?? 1) * scale$1;\n\t\t\t\t\tconst csY = (target?.scaleY ?? lop.scaleY ?? 1) * scale$1;\n\t\t\t\t\tconst csZ = (target?.scaleZ ?? lop.scaleZ ?? 1) * scale$1;\n\t\t\t\t\tif (csX !== 1 || csY !== 1 || csZ !== 1) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.scale(csX, csY, csZ));\n\t\t\t\t\tif (parent3DMatrix) current3DMatrix = Matrix4Math.multiply(parent3DMatrix, current3DMatrix);\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, activeTex, activeView, excludes, layerOpacity, new DOMMatrix(), null, layerW, layerH, current3DMatrix, false);\n\t\t\t\t\t\tactiveTex = res.finalTex;\n\t\t\t\t\t\tactiveView = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (isTrue3D) {\n\t\t\t\t\tconst texW$1 = Math.max(1, Math.ceil(layerW));\n\t\t\t\t\tconst texH$1 = Math.max(1, Math.ceil(layerH));\n\t\t\t\t\tconst groupExcludes$1 = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes,\n\t\t\t\t\t\t...pendingTextures()\n\t\t\t\t\t];\n\t\t\t\t\tconst groupTex$1 = ctx.renderer.getTemporaryTexture(texW$1, texH$1, groupExcludes$1);\n\t\t\t\t\tconst groupView$1 = groupTex$1.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW$1, texH$1, \"clear\").end();\n\t\t\t\t\tconst br$2 = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, 0, { opacity: 1 });\n\t\t\t\t\t\tbgPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tlet activeGroupTex$1 = groupTex$1;\n\t\t\t\t\tlet activeGroupView$1 = groupView$1;\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex$1, groupView$1, [groupTex$1, ...groupExcludes$1], 1, new DOMMatrix(), rect, texW$1, texH$1, null, false);\n\t\t\t\t\t\tactiveGroupTex$1 = res.finalTex;\n\t\t\t\t\t\tactiveGroupView$1 = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\tconst borderResult$2 = !isTrue3D && lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex$1, ...groupExcludes$1]) : null;\n\t\t\t\t\tif (borderResult$2) {\n\t\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$2.borderTex, {\n\t\t\t\t\t\t\tx: borderResult$2.ox,\n\t\t\t\t\t\t\ty: borderResult$2.oy,\n\t\t\t\t\t\t\twidth: borderResult$2.ow,\n\t\t\t\t\t\t\theight: borderResult$2.oh\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tborderPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tconst quadOpts = {\n\t\t\t\t\t\tposition: [\n\t\t\t\t\t\t\tlocalX + layerW * .5,\n\t\t\t\t\t\t\tlocalY + layerH * .5,\n\t\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t\t],\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH,\n\t\t\t\t\t\ttextureExtent: [layerW / activeGroupTex$1.width, layerH / activeGroupTex$1.height],\n\t\t\t\t\t\trotation: [\n\t\t\t\t\t\t\ttarget?.rotateX ?? lop.rotateX ?? 0,\n\t\t\t\t\t\t\ttarget?.rotateY ?? lop.rotateY ?? 0,\n\t\t\t\t\t\t\t(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation\n\t\t\t\t\t\t],\n\t\t\t\t\t\tscale: [\n\t\t\t\t\t\t\tscale$1 * scaleX,\n\t\t\t\t\t\t\tscale$1 * scaleY,\n\t\t\t\t\t\t\ttarget?.scaleZ ?? lop.scaleZ ?? 1\n\t\t\t\t\t\t],\n\t\t\t\t\t\tanchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],\n\t\t\t\t\t\tborderRadius: br$2,\n\t\t\t\t\t\tborderWidth: lop.borderWidth,\n\t\t\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\t\t\topacity: layerOpacity,\n\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\t\tmaterial: target?.material ?? lop.material,\n\t\t\t\t\t\tshininess: target?.shininess ?? lop.shininess,\n\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness,\n\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity,\n\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,\n\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic,\n\t\t\t\t\t\t...surfaceProps(target, lop),\n\t\t\t\t\t\t...reliefOpts(lop.id, localX, localY, layerW, layerH)\n\t\t\t\t\t};\n\t\t\t\t\tif (parent3DMatrix) {\n\t\t\t\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\t\t\tquadOpts.modelMatrix = Matrix4Math.multiply(parent3DMatrix, r3d$1.quadModelMatrix({\n\t\t\t\t\t\t\t...quadOpts,\n\t\t\t\t\t\t\tposition: [\n\t\t\t\t\t\t\t\ttarget?.x ?? lop.x ?? 0,\n\t\t\t\t\t\t\t\ttarget?.y ?? lop.y ?? 0,\n\t\t\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\towner: lop.id,\n\t\t\t\t\t\tkind: \"quad\",\n\t\t\t\t\t\ttexture: activeGroupTex$1,\n\t\t\t\t\t\topts: quadOpts\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (is3D && quad3D) {\n\t\t\t\t\tconst texW$1 = Math.max(1, Math.ceil(layerW));\n\t\t\t\t\tconst texH$1 = Math.max(1, Math.ceil(layerH));\n\t\t\t\t\tconst groupExcludes$1 = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t];\n\t\t\t\t\tconst groupTex$1 = ctx.renderer.getTemporaryTexture(texW$1, texH$1, groupExcludes$1);\n\t\t\t\t\tconst groupView$1 = groupTex$1.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW$1, texH$1, \"clear\").end();\n\t\t\t\t\tconst br$2 = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, br$2, { opacity: 1 });\n\t\t\t\t\t\tbgPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tlet activeGroupTex$1 = groupTex$1;\n\t\t\t\t\tlet activeGroupView$1 = groupView$1;\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex$1, groupView$1, [groupTex$1, ...groupExcludes$1], 1, new DOMMatrix(), rect, texW$1, texH$1, null, false);\n\t\t\t\t\t\tactiveGroupTex$1 = res.finalTex;\n\t\t\t\t\t\tactiveGroupView$1 = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\tconst borderResult$2 = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex$1, ...groupExcludes$1]) : null;\n\t\t\t\t\tif (borderResult$2) {\n\t\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$2.borderTex, {\n\t\t\t\t\t\t\tx: borderResult$2.ox,\n\t\t\t\t\t\t\ty: borderResult$2.oy,\n\t\t\t\t\t\t\twidth: borderResult$2.ow,\n\t\t\t\t\t\t\theight: borderResult$2.oh\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tborderPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tconst container3DShutter = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\t\t\tif (container3DShutter > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\t\t\tseekTimeline(compiled, shiftedFrame - 1, fps);\n\t\t\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\t\t\tseekTimeline(compiled, shiftedFrame, fps);\n\t\t\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\t\t\tactiveGroupTex$1 = ctx.renderer.applyMotionBlur(encoder, activeGroupTex$1, vx, vy, container3DShutter, 16, [\n\t\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tactiveGroupView$1 = activeGroupTex$1.createView();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") drawProjectedQuad(ctx, encoder, activeView, activeGroupTex$1, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst compositeExcludes$1 = [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\tactiveGroupTex$1,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (borderResult$2) compositeExcludes$1.push(borderResult$2.borderTex);\n\t\t\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, compositeExcludes$1);\n\t\t\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\t\tdrawProjectedQuad(ctx, encoder, layerView, activeGroupTex$1, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst shouldClip = (target?.overflow ?? lop.overflow) === \"hidden\";\n\t\t\t\tconst scissorRect = shouldClip ? computeContainerScissor(layerMatrix, layerW, layerH) : null;\n\t\t\t\tconst clipRadius = shouldClip ? Math.min(target?.borderRadius ?? lop.borderRadius ?? 0, layerW / 2, layerH / 2) : 0;\n\t\t\t\tif ((kind === \"flex\" || kind === \"block\") && (!Array.isArray(lop.effects) || lop.effects.length === 0) && clipRadius <= 0 && !shouldPaintContainerBackground(kind, lop.background) && layerOpacity === 1 && blendMode === \"normal\" && !lop.borderWidth && !lop.borderColor && (typeof lop.relighting !== \"object\" || !lop.relighting) && (typeof lop.relight !== \"object\" || !lop.relight) && (typeof target?.relighting !== \"object\" || !target?.relighting) && (typeof target?.relight !== \"object\" || !target?.relight) && (typeof lop.deflicker !== \"object\" || !lop.deflicker) && (typeof target?.deflicker !== \"object\" || !target?.deflicker)) {\n\t\t\t\t\tif (scissorRect) ctx.renderer.pushScissorIntersect(scissorRect);\n\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children ?? [], activeTex, activeView, excludes, accumulatedOpacity, layerMatrix, rect, targetW, targetH, null, isRootScene);\n\t\t\t\t\tif (scissorRect) ctx.renderer.popScissor();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tif ((!nodeVM.children || nodeVM.children.length === 0) && (!Array.isArray(lop.effects) || lop.effects.length === 0) && blendMode === \"normal\" && !(target?.motionBlurShutter ?? lop.motionBlurShutter) && (typeof lop.relighting !== \"object\" || !lop.relighting) && (typeof lop.relight !== \"object\" || !lop.relight) && (typeof target?.relighting !== \"object\" || !target?.relighting) && (typeof target?.relight !== \"object\" || !target?.relight) && (typeof lop.deflicker !== \"object\" || !lop.deflicker) && (typeof target?.deflicker !== \"object\" || !target?.deflicker)) {\n\t\t\t\t\tif (layerOpacity <= 0) return {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t\tconst br$2 = Math.min(target?.borderRadius ?? lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tconst paint = shouldPaintContainerBackground(kind, lop.background);\n\t\t\t\t\tconst border = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t], rasterScaleOf(layerMatrix, layerW, layerH)) : null;\n\t\t\t\t\tif (paint || border) {\n\t\t\t\t\t\tconst pass$1 = ctx.renderer.beginFrame(encoder, activeView, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\t\tif (paint) ctx.renderer.drawRect(pass$1, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, br$2, { opacity: layerOpacity });\n\t\t\t\t\t\tif (border) ctx.renderer.drawTexture(pass$1, border.borderTex, {\n\t\t\t\t\t\t\tx: border.ox,\n\t\t\t\t\t\t\ty: border.oy,\n\t\t\t\t\t\t\twidth: border.ow,\n\t\t\t\t\t\t\theight: border.oh\n\t\t\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\t\tpass$1.end();\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0 && (!Array.isArray(lop.effects) || lop.effects.length === 0) && layerOpacity === 1 && blendMode === \"normal\" && !(target?.motionBlurShutter ?? lop.motionBlurShutter) && (typeof lop.relighting !== \"object\" || !lop.relighting) && (typeof lop.relight !== \"object\" || !lop.relight) && (typeof target?.relighting !== \"object\" || !target?.relighting) && (typeof target?.relight !== \"object\" || !target?.relight) && (typeof lop.deflicker !== \"object\" || !lop.deflicker) && (typeof target?.deflicker !== \"object\" || !target?.deflicker) && (clipRadius <= 0 || childrenClearOfCorners(nodeVM.children, rect, clipRadius))) {\n\t\t\t\t\tconst br$2 = Math.min(target?.borderRadius ?? lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, activeView, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, br$2, { opacity: 1 });\n\t\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\t\tbgPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tif (scissorRect) ctx.renderer.pushScissorIntersect(scissorRect);\n\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, activeTex, activeView, excludes, accumulatedOpacity, layerMatrix, rect, targetW, targetH, null, isRootScene);\n\t\t\t\t\tif (scissorRect) ctx.renderer.popScissor();\n\t\t\t\t\tactiveTex = res.finalTex;\n\t\t\t\t\tactiveView = res.finalView;\n\t\t\t\t\tconst border = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t], rasterScaleOf(layerMatrix, layerW, layerH)) : null;\n\t\t\t\t\tif (border) {\n\t\t\t\t\t\tconst pass$1 = ctx.renderer.beginFrame(encoder, activeView, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\t\tctx.renderer.drawTexture(pass$1, border.borderTex, {\n\t\t\t\t\t\t\tx: border.ox,\n\t\t\t\t\t\t\ty: border.oy,\n\t\t\t\t\t\t\twidth: border.ow,\n\t\t\t\t\t\t\theight: border.oh\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\t\tpass$1.end();\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst groupExcludes = [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tconst groupTex = ctx.renderer.getTemporaryTexture(targetW, targetH, groupExcludes);\n\t\t\t\tconst groupView = groupTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, groupView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\tconst br$1 = Math.min(target?.borderRadius ?? lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH\n\t\t\t\t\t}, lop.background, br$1, { opacity: layerOpacity });\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tbgPass.end();\n\t\t\t\t}\n\t\t\t\tlet activeGroupTex = groupTex;\n\t\t\t\tlet activeGroupView = groupView;\n\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\tif (scissorRect) ctx.renderer.pushScissorIntersect(scissorRect);\n\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex, groupView, [groupTex, ...groupExcludes], layerOpacity, layerMatrix, rect, targetW, targetH, null, false);\n\t\t\t\t\tif (scissorRect) ctx.renderer.popScissor();\n\t\t\t\t\tactiveGroupTex = res.finalTex;\n\t\t\t\t\tactiveGroupView = res.finalView;\n\t\t\t\t}\n\t\t\t\tif (clipRadius > 0) {\n\t\t\t\t\tconst maskTex = ctx.renderer.getTemporaryTexture(targetW, targetH, [activeGroupTex, ...groupExcludes]);\n\t\t\t\t\tconst maskPass = ctx.renderer.beginFrame(encoder, maskTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"clear\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawRect(maskPass, {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH\n\t\t\t\t\t}, \"#ffffff\", clipRadius);\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tmaskPass.end();\n\t\t\t\t\tactiveGroupTex = ctx.renderer.composite(encoder, activeGroupTex, maskTex, \"mask-in\", [\n\t\t\t\t\t\tactiveGroupTex,\n\t\t\t\t\t\tmaskTex,\n\t\t\t\t\t\t...groupExcludes\n\t\t\t\t\t]);\n\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t}\n\t\t\t\tconst borderResult$1 = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$1, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex, ...groupExcludes], rasterScaleOf(layerMatrix, layerW, layerH)) : null;\n\t\t\t\tif (borderResult$1) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$1.borderTex, {\n\t\t\t\t\t\tx: borderResult$1.ox,\n\t\t\t\t\t\ty: borderResult$1.oy,\n\t\t\t\t\t\twidth: borderResult$1.ow,\n\t\t\t\t\t\theight: borderResult$1.oh\n\t\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tconst containerShutter = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\t\tif (containerShutter > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\t\tseekTimeline(compiled, shiftedFrame - 1, fps);\n\t\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\t\tseekTimeline(compiled, shiftedFrame, fps);\n\t\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\t\tactiveGroupTex = ctx.renderer.applyMotionBlur(encoder, activeGroupTex, vx, vy, containerShutter, 16, [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst deflickerFromEffects = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"TemporalDeflicker\" || e?.op === \"Deflicker\" || e?.constructor?.name === \"TemporalDeflicker\") : void 0;\n\t\t\t\tconst rawDeflicker = target?.deflicker ?? lop.deflicker ?? deflickerFromEffects;\n\t\t\t\tconst deflickerOpts$1 = typeof rawDeflicker === \"object\" && rawDeflicker !== null ? rawDeflicker : void 0;\n\t\t\t\tif (deflickerOpts$1) {\n\t\t\t\t\tconst deflickerPipe = getTemporalDeflickerPipeline(ctx.device, lop.id || `layer_${i}`);\n\t\t\t\t\tif (shiftedFrame === 0) deflickerPipe.reset();\n\t\t\t\t\tactiveGroupTex = deflickerPipe.execute(activeGroupTex, deflickerOpts$1, encoder);\n\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t}\n\t\t\t\tconst relightEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"Relight3D\" || e?.constructor?.name === \"Relight3D\") : void 0;\n\t\t\t\tconst rawRelight = target?.relighting ?? lop.relighting ?? (typeof lop.relight === \"object\" ? lop.relight : void 0) ?? relightEffect;\n\t\t\t\tconst relightOpts$1 = typeof rawRelight === \"object\" && rawRelight !== null ? rawRelight : void 0;\n\t\t\t\tif (relightOpts$1) {\n\t\t\t\t\tconst relightPipeline = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\");\n\t\t\t\t\tconst r3dInstance = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\t\tconst activeLights = synthesizeRelightLights(relightOpts$1, sceneLights, rect, compositionFrame, fps ?? 24);\n\t\t\t\t\tconst lightsBuffer = r3dInstance.getOrCreateLightsBuffer(activeLights);\n\t\t\t\t\tconst relitTex = ctx.renderer.getTemporaryTexture(targetW, targetH, [\n\t\t\t\t\t\tactiveGroupTex,\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t]);\n\t\t\t\t\tconst relitView = relitTex.createView();\n\t\t\t\t\tconst normalTex = relightOpts$1.normalTexture ?? relightOpts$1.normalMap;\n\t\t\t\t\trelightPipeline.execute(encoder, relitView, activeGroupTex, normalTex, lightsBuffer, {\n\t\t\t\t\t\tviewportWidth: targetW,\n\t\t\t\t\t\tviewportHeight: targetH,\n\t\t\t\t\t\tlayerX: 0,\n\t\t\t\t\t\tlayerY: 0,\n\t\t\t\t\t\troughness: resolveFrameNumber(target?.roughness ?? target?.relightRoughness ?? relightOpts$1.specularRoughness ?? relightOpts$1.roughness, .35, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tspecularStrength: resolveFrameNumber(target?.specularStrength ?? target?.relightSpecularStrength ?? relightOpts$1.specularStrength, .7, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tmetallic: resolveFrameNumber(target?.metallic ?? target?.relightMetallic ?? relightOpts$1.metallic, 0, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tambientIntensity: resolveFrameNumber(target?.ambientIntensity ?? target?.relightAmbientIntensity ?? relightOpts$1.ambientIntensity, .15, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tdepthScale: resolveFrameNumber(target?.depthScale ?? target?.relightDepthScale ?? relightOpts$1.depthScale, 1, compositionFrame, fps ?? 24),\n\t\t\t\t\t\topacity: 1\n\t\t\t\t\t}, \"clear\");\n\t\t\t\t\tactiveGroupTex = relitTex;\n\t\t\t\t\tactiveGroupView = relitView;\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(lop.effects) && lop.effects.length > 0) {\n\t\t\t\t\tconst reach = shouldClip ? effectsReach(lop.effects) : null;\n\t\t\t\t\tconst postEffects = await applyLayerEffectsInRegion(reach === null ? null : clampRect(expandRect(computeContainerScissor(layerMatrix, layerW, layerH), reach), targetW, targetH), lop.effects, activeGroupTex, targetW, targetH, ctx, encoder, props, drawChild, [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t], shiftedFrame, compositionFrame, fps ?? 24, isVideoMode, lop.id ?? `container_${i}`);\n\t\t\t\t\tactiveGroupTex = postEffects.texture;\n\t\t\t\t\tactiveGroupView = postEffects.view;\n\t\t\t\t}\n\t\t\t\tconst compositeExcludes = [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tif (borderResult$1) compositeExcludes.push(borderResult$1.borderTex);\n\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, activeGroupTex, blendMode, compositeExcludes);\n\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!(layerW > 0 && layerH > 0)) return {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t\tconst br = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\tconst leafDeflickerEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"TemporalDeflicker\" || e?.constructor?.name === \"TemporalDeflicker\") : void 0;\n\t\t\tconst deflickerOpts = target?.deflicker ?? lop.deflicker ?? leafDeflickerEffect;\n\t\t\tconst leafRelightEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"Relight3D\" || e?.constructor?.name === \"Relight3D\") : void 0;\n\t\t\tconst rawLeafRelight = target?.relighting ?? lop.relighting ?? (typeof lop.relight === \"object\" ? lop.relight : void 0) ?? leafRelightEffect;\n\t\t\tconst relightOpts = typeof rawLeafRelight === \"object\" && rawLeafRelight !== null ? rawLeafRelight : void 0;\n\t\t\tconst shutterAngle = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\tconst hasEffects = kind !== \"media\" && Array.isArray(lop.effects) && lop.effects.length > 0;\n\t\t\tconst rasterScale = isTrue3D || is3D || deflickerOpts || kind === \"media\" && !drawsInLayerUnits(nodeVM.children?.[0]) ? 1 : rasterScaleOf(layerMatrix, layerW, layerH, hasEffects ? effectsMaxPixelScale(lop.effects) : void 0);\n\t\t\tconst raster = new DOMMatrix([\n\t\t\t\trasterScale,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\trasterScale,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t]);\n\t\t\tconst texW = Math.ceil(layerW * rasterScale);\n\t\t\tconst texH = Math.ceil(layerH * rasterScale);\n\t\t\tconst savedScissors = ctx.renderer.suspendScissors?.() ?? [];\n\t\t\tconst localTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\tactiveTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...excludes\n\t\t\t]);\n\t\t\tconst localView = localTex.createView();\n\t\t\tctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, texW, texH, \"clear\").end();\n\t\t\tlet content;\n\t\t\tlet isCaption = false;\n\t\t\tif (kind === \"media\") {\n\t\t\t\tcontent = nodeVM.children?.[0];\n\t\t\t\tisCaption = content?.operation?.dataType === \"Caption\" || lop.dataType === \"Caption\" || (content?.operation)?.srtText !== void 0;\n\t\t\t} else if (kind === \"text\") {\n\t\t\t\tconst rawSpans = target?.spans ?? lop.spans;\n\t\t\t\tconst spanFps = fps ?? 24;\n\t\t\t\tconst spans = rawSpans?.length ? resolveTextSpans(rawSpans, {\n\t\t\t\t\tframe: compositionFrame,\n\t\t\t\t\tfps: spanFps,\n\t\t\t\t\ttime: compositionFrame / spanFps,\n\t\t\t\t\tduration: composeDuration / 1e3,\n\t\t\t\t\tdurationMs: composeDuration,\n\t\t\t\t\tprogress: composeDuration > 0 ? Math.min(1, compositionFrame / spanFps * 1e3 / composeDuration) : 0,\n\t\t\t\t\tdeltaTime: 1 / spanFps\n\t\t\t\t}) : void 0;\n\t\t\t\tconst fullText = spans ? spansText(spans) : lop.text ?? \"\";\n\t\t\t\tlet displayText = fullText;\n\t\t\t\tlet resolvedAnimators = rawAnimators;\n\t\t\t\tif (Array.isArray(rawAnimators) && rawAnimators.length > 0) resolvedAnimators = rawAnimators.map((animator, idx) => {\n\t\t\t\t\tconst a = {\n\t\t\t\t\t\t...animator,\n\t\t\t\t\t\ttransform: { ...animator.transform ?? {} }\n\t\t\t\t\t};\n\t\t\t\t\tif (idx === 0) {\n\t\t\t\t\t\tconst offsetVal = typeof target?.offset === \"number\" ? target.offset : typeof target?.animatorOffset === \"number\" ? target.animatorOffset : void 0;\n\t\t\t\t\t\tconst rangeStartVal = typeof target?.rangeStart === \"number\" ? target.rangeStart : typeof target?.animatorRangeStart === \"number\" ? target.animatorRangeStart : void 0;\n\t\t\t\t\t\tconst rangeEndVal = typeof target?.rangeEnd === \"number\" ? target.rangeEnd : typeof target?.animatorRangeEnd === \"number\" ? target.animatorRangeEnd : void 0;\n\t\t\t\t\t\tif (offsetVal !== void 0) a.offset = offsetVal;\n\t\t\t\t\t\tif (rangeStartVal !== void 0) a.rangeStart = rangeStartVal;\n\t\t\t\t\t\tif (rangeEndVal !== void 0) a.rangeEnd = rangeEndVal;\n\t\t\t\t\t\tif (Array.isArray(a.selectors)) a.selectors = a.selectors.map((s) => {\n\t\t\t\t\t\t\tif (s.type === \"range\") return {\n\t\t\t\t\t\t\t\t...s,\n\t\t\t\t\t\t\t\t...offsetVal !== void 0 ? { offset: offsetVal } : {},\n\t\t\t\t\t\t\t\t...rangeStartVal !== void 0 ? { start: rangeStartVal } : {},\n\t\t\t\t\t\t\t\t...rangeEndVal !== void 0 ? { end: rangeEndVal } : {}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn s;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\t\t\t\tconst hasTypewriter = Boolean(lop.typewriter || target?.typewriter);\n\t\t\t\tconst textTrack = lop.animation?.tracks?.find((t) => t.prop === \"text\");\n\t\t\t\tif (!hasTypewriter && (textTrack !== void 0 || typeof target?.text === \"number\") && fullText.length > 0) {\n\t\t\t\t\tconst progress = typeof target?.text === \"number\" ? Math.max(0, Math.min(1, target.text)) : 1;\n\t\t\t\t\tconst countsUnits = typeof target?.text === \"number\" && target.text > 1.0001;\n\t\t\t\t\tif (progress >= 1 && !countsUnits) displayText = fullText;\n\t\t\t\t\telse if (progress <= 0) displayText = \"\";\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst presetType = textTrack?.keyframes?.find((k) => k.presetType)?.presetType ?? \"typewriter\";\n\t\t\t\t\t\tconst textNumeric = typeof target?.text === \"number\" ? target.text : null;\n\t\t\t\t\t\tconst isDirectCount = textNumeric !== null && textNumeric > 1.0001;\n\t\t\t\t\t\tif (presetType === \"word-reveal\" || presetType === \"karaoke\") {\n\t\t\t\t\t\t\tconst tokens = fullText.split(/(\\s+)/);\n\t\t\t\t\t\t\tconst wordIndices = [];\n\t\t\t\t\t\t\ttokens.forEach((token, idx) => {\n\t\t\t\t\t\t\t\tif (token.trim().length > 0) wordIndices.push(idx);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst visibleWordCount = isDirectCount && textNumeric !== null ? Math.min(wordIndices.length, Math.round(textNumeric)) : Math.round(wordIndices.length * progress);\n\t\t\t\t\t\t\tif (visibleWordCount === 0) displayText = \"\";\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst lastTokenIdx = wordIndices[Math.min(wordIndices.length - 1, visibleWordCount - 1)];\n\t\t\t\t\t\t\t\tdisplayText = tokens.slice(0, lastTokenIdx + 1).join(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (presetType === \"line-reveal\") {\n\t\t\t\t\t\t\tconst lines = fullText.split(\"\\n\");\n\t\t\t\t\t\t\tconst visibleLineCount = isDirectCount && textNumeric !== null ? Math.min(lines.length, Math.round(textNumeric)) : Math.round(lines.length * progress);\n\t\t\t\t\t\t\tdisplayText = lines.slice(0, Math.max(0, visibleLineCount)).join(\"\\n\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst visibleChars = isDirectCount && textNumeric !== null ? Math.min(fullText.length, Math.round(textNumeric)) : Math.round(fullText.length * progress);\n\t\t\t\t\t\t\tdisplayText = fullText.slice(0, visibleChars);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontent = {\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toperation: {\n\t\t\t\t\t\top: \"text\",\n\t\t\t\t\t\ttext: displayText,\n\t\t\t\t\t\tspans: spans && displayText !== fullText ? fitSpansToText(spans, displayText) : spans,\n\t\t\t\t\t\tanimators: resolvedAnimators,\n\t\t\t\t\t\tpathOptions: target?.pathOptions ?? lop.pathOptions,\n\t\t\t\t\t\ttypewriter: target?.typewriter ?? lop.typewriter,\n\t\t\t\t\t\tmarquee: target?.marquee ?? lop.marquee,\n\t\t\t\t\t\ttextProgress: typeof target?.text === \"number\" ? target.text : void 0,\n\t\t\t\t\t\tfirstMargin: target?.firstMargin ?? lop.firstMargin,\n\t\t\t\t\t\tlastMargin: target?.lastMargin ?? lop.lastMargin,\n\t\t\t\t\t\tbaselineShift: target?.baselineShift ?? lop.baselineShift,\n\t\t\t\t\t\tsignals: virtualMedia?.operation?.signals ?? virtualMedia?.signals,\n\t\t\t\t\t\tfontSize: target?.fontSize ?? lop.fontSize,\n\t\t\t\t\t\tfontFamily: lop.fontFamily,\n\t\t\t\t\t\tfontStyle: lop.fontStyle,\n\t\t\t\t\t\tfontWeight: lop.fontWeight,\n\t\t\t\t\t\tfontVariations: lop.fontVariations,\n\t\t\t\t\t\tfill: target?.fill ?? target?.color ?? lop.fill,\n\t\t\t\t\t\talign: lop.align,\n\t\t\t\t\t\tdirection: lop.direction,\n\t\t\t\t\t\tverticalAlign: lop.verticalAlign,\n\t\t\t\t\t\tletterSpacing: target?.letterSpacing ?? lop.letterSpacing,\n\t\t\t\t\t\tlineHeight: lop.lineHeight,\n\t\t\t\t\t\tpadding: lop.padding,\n\t\t\t\t\t\ttextBackgroundColor: target?.textBackgroundColor ?? target?.background ?? lop.background,\n\t\t\t\t\t\tborderRadius: lop.borderRadius,\n\t\t\t\t\t\tstroke: target?.stroke ?? target?.strokeColor ?? lop.stroke,\n\t\t\t\t\t\tstrokeWidth: target?.strokeWidth ?? lop.strokeWidth,\n\t\t\t\t\t\tstrokeAlign: lop.strokeAlign,\n\t\t\t\t\t\ttextShadow: lop.textShadow,\n\t\t\t\t\t\tshadows: lop.shadows,\n\t\t\t\t\t\tx: isPathText ? 0 : padX,\n\t\t\t\t\t\ty: isPathText ? 0 : padY,\n\t\t\t\t\t\twidth: isPathText ? targetW : lop.width !== void 0 ? rect.width : void 0,\n\t\t\t\t\t\theight: isPathText ? targetH : lop.height !== void 0 ? rect.height : void 0\n\t\t\t\t\t},\n\t\t\t\t\tchildren: []\n\t\t\t\t};\n\t\t\t}\n\t\t\tlet glyphBatches = null;\n\t\t\tlet layerHasRaster = true;\n\t\t\tif (content) {\n\t\t\t\tconst contentDurationMs = getActiveMediaMetadata(content)?.durationMs ?? composeDuration;\n\t\t\t\tconst layerDurationInMS = Math.max(1, Math.round(contentDurationMs / 1e3 * (fps ?? 24))) / (fps ?? 24) * 1e3;\n\t\t\t\tconst contentIsImageCompositor = content.operation?.op === \"Compositor\" && content.operation?.dataType === \"Image\";\n\t\t\t\tconst captureGlyphs = isTrue3D && kind === \"text\";\n\t\t\t\tconst rasterDrawsBefore = ctx.renderer.rasterDrawCount;\n\t\t\t\tif (captureGlyphs) ctx.renderer.slugPipeline.beginCapture();\n\t\t\t\tctx.renderer.pushTransform(raster);\n\t\t\t\ttry {\n\t\t\t\t\tawait drawChild(content, {\n\t\t\t\t\t\tcontainerWidth: layerW,\n\t\t\t\t\t\tcontainerHeight: layerH,\n\t\t\t\t\t\trenderId: `${props.renderId}-l${i}`,\n\t\t\t\t\t\tdurationMs: layerDurationInMS,\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\tfps,\n\t\t\t\t\t\t...typeof lop.dpr === \"number\" && { dpr: lop.dpr },\n\t\t\t\t\t\texcludeTextures: [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t],\n\t\t\t\t\t\tisVideoMode: isVideoMode && !contentIsImageCompositor,\n\t\t\t\t\t\t...isVideoMode && lop.timeRemap && kind === \"media\" && lop.dataType === \"Video\" && { sourceTimeSec: mediaSourceTime(lop.timeRemap, Math.max(0, shiftedFrame - (lop.startFrame ?? 0)), fps ?? 24) },\n\t\t\t\t\t\t...isVideoMode && { frame: lop.timeRemap && kind === \"media\" && lop.dataType === \"Video\" ? Math.max(0, shiftedFrame - (lop.startFrame ?? 0)) : Math.max(0, shiftedFrame - (lop.startFrame ?? 0)) + (lop.mediaStartFrame ?? lop.trimStartFrames ?? (lop.trimStartSec != null ? Math.round(lop.trimStartSec * (fps ?? 24)) : 0)) },\n\t\t\t\t\t\tcompositionFrame,\n\t\t\t\t\t\t...isCaption && {\n\t\t\t\t\t\t\tfontFamily: lop.fontFamily,\n\t\t\t\t\t\t\tfontSize: target?.fontSize ?? lop.fontSize,\n\t\t\t\t\t\t\tfontWeight: lop.fontWeight,\n\t\t\t\t\t\t\tfontStyle: lop.fontStyle,\n\t\t\t\t\t\t\tfill: lop.fill,\n\t\t\t\t\t\t\tcolor: lop.fill,\n\t\t\t\t\t\t\talign: lop.align ?? \"center\",\n\t\t\t\t\t\t\tdirection: lop.direction,\n\t\t\t\t\t\t\tverticalAlign: lop.verticalAlign ?? lop.textAlignVertical,\n\t\t\t\t\t\t\tlineHeight: lop.lineHeight,\n\t\t\t\t\t\t\tletterSpacing: lop.letterSpacing,\n\t\t\t\t\t\t\ttextBackgroundColor: lop.background ?? lop.textBackgroundColor,\n\t\t\t\t\t\t\tborderRadius: lop.borderRadius ?? lop.strokeRadius,\n\t\t\t\t\t\t\tstrokeRadius: lop.strokeRadius ?? lop.borderRadius,\n\t\t\t\t\t\t\tstroke: lop.stroke,\n\t\t\t\t\t\t\tstrokeWidth: lop.strokeWidth,\n\t\t\t\t\t\t\tshadows: lop.shadows,\n\t\t\t\t\t\t\tpadding: lop.padding,\n\t\t\t\t\t\t\tmaxWidth: lop.maxWidth ?? layerW\n\t\t\t\t\t\t}\n\t\t\t\t\t}, localView, localTex, texW, texH);\n\t\t\t\t} finally {\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tif (captureGlyphs) glyphBatches = ctx.renderer.slugPipeline.endCapture();\n\t\t\t\t}\n\t\t\t\tlayerHasRaster = ctx.renderer.rasterDrawCount !== rasterDrawsBefore;\n\t\t\t} else if (kind === \"shape\") {\n\t\t\t\tconst shapePass = ctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tconst shapeConfig = {\n\t\t\t\t\tshapeType: lop.shapeType ?? lop.shape ?? \"rect\",\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\tpath: target?.d ?? lop.d ?? lop.path,\n\t\t\t\t\tcornerRadius: target?.cornerRadius ?? lop.cornerRadius ?? lop.borderRadius ?? lop.radius ?? 0,\n\t\t\t\t\tstarPoints: lop.starPoints ?? 5,\n\t\t\t\t\tstarInnerRadiusRatio: target?.starInnerRadiusRatio ?? lop.starInnerRadiusRatio ?? .5,\n\t\t\t\t\tpolygonSides: lop.polygonSides ?? 5\n\t\t\t\t};\n\t\t\t\tconst fillType = lop.fillType ?? \"solid\";\n\t\t\t\tconst fillColor = target?.fillColor ?? target?.fill ?? lop.fillColor ?? lop.fill ?? \"#38bdf8\";\n\t\t\t\tconst color2 = target?.gradientEndColor ?? lop.gradientEndColor ?? lop.fillColor2 ?? \"#9333ea\";\n\t\t\t\tlet startX = lop.fillStartX;\n\t\t\t\tlet startY = lop.fillStartY;\n\t\t\t\tlet endX = lop.fillEndX;\n\t\t\t\tlet endY = lop.fillEndY;\n\t\t\t\tif (fillType === \"linear\" && startX === void 0 && lop.gradientAngle !== void 0) {\n\t\t\t\t\tconst rad = lop.gradientAngle * Math.PI / 180;\n\t\t\t\t\tconst cx = layerW / 2;\n\t\t\t\t\tconst cy = layerH / 2;\n\t\t\t\t\tconst half = (Math.abs(layerW * Math.cos(rad)) + Math.abs(layerH * Math.sin(rad))) / 2;\n\t\t\t\t\tstartX = cx - Math.cos(rad) * half;\n\t\t\t\t\tstartY = cy - Math.sin(rad) * half;\n\t\t\t\t\tendX = cx + Math.cos(rad) * half;\n\t\t\t\t\tendY = cy + Math.sin(rad) * half;\n\t\t\t\t}\n\t\t\t\tconst fillConfig = {\n\t\t\t\t\ttype: fillType,\n\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\tcolor2,\n\t\t\t\t\tstartX,\n\t\t\t\t\tstartY,\n\t\t\t\t\tendX,\n\t\t\t\t\tendY,\n\t\t\t\t\tcx: lop.fillCx,\n\t\t\t\t\tcy: lop.fillCy,\n\t\t\t\t\tradius: lop.fillRadius\n\t\t\t\t};\n\t\t\t\tconst strokeWidth = target?.strokeWidth ?? lop.strokeWidth ?? 0;\n\t\t\t\tconst strokeColor = target?.strokeColor ?? lop.strokeColor ?? lop.stroke ?? \"#ffffff\";\n\t\t\t\tconst strokeLineCap = lop.strokeLineCap ?? \"round\";\n\t\t\t\tconst strokeDashArray = parseDashArray(lop.strokeDashArray);\n\t\t\t\tconst strokeDashOffset = target?.strokeDashOffset ?? lop.strokeDashOffset ?? 0;\n\t\t\t\tconst trimStart = target?.trimStart ?? lop.trimStart ?? 0;\n\t\t\t\tconst trimEnd = target?.trimEnd ?? lop.trimEnd ?? 1;\n\t\t\t\tconst trimOffset = target?.trimOffset ?? lop.trimOffset ?? 0;\n\t\t\t\tctx.renderer.pushTransform(raster);\n\t\t\t\tctx.renderer.drawShape(shapePass, shapeConfig, fillConfig, strokeWidth > 0 ? {\n\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\twidth: strokeWidth,\n\t\t\t\t\tcap: strokeLineCap,\n\t\t\t\t\ttrimStart,\n\t\t\t\t\ttrimEnd,\n\t\t\t\t\ttrimOffset,\n\t\t\t\t\tdashArray: strokeDashArray,\n\t\t\t\t\tdashOffset: strokeDashOffset\n\t\t\t\t} : void 0);\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tshapePass.end();\n\t\t\t}\n\t\t\tif (glyphBatches && glyphBatches.length > 0 && (deflickerOpts || relightOpts || shutterAngle > 0 || hasEffects)) {\n\t\t\t\tconst glyphPass = ctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tctx.renderer.slugPipeline.drawBatches(glyphPass, glyphBatches, texW, texH);\n\t\t\t\tglyphPass.end();\n\t\t\t\tglyphBatches = null;\n\t\t\t\tlayerHasRaster = true;\n\t\t\t}\n\t\t\tlet finalTex = localTex;\n\t\t\tif (!isTrue3D && br > 0 && !isCaption && kind !== \"shape\") {\n\t\t\t\tconst maskTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\t\tlocalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t\tconst maskView = maskTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, maskView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"clear\").end();\n\t\t\t\tconst maskPass = ctx.renderer.beginFrame(encoder, maskView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tctx.renderer.pushTransform(raster);\n\t\t\t\tctx.renderer.drawRect(maskPass, {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH\n\t\t\t\t}, {\n\t\t\t\t\tr: 1,\n\t\t\t\t\tg: 1,\n\t\t\t\t\tb: 1,\n\t\t\t\t\ta: 1\n\t\t\t\t}, br);\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tmaskPass.end();\n\t\t\t\tfinalTex = ctx.renderer.composite(encoder, localTex, maskTex, \"mask-in\", [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t}\n\t\t\tif (deflickerOpts) {\n\t\t\t\tconst deflickerPipe = getTemporalDeflickerPipeline(ctx.device, lop.id || `layer_${i}`);\n\t\t\t\tif (shiftedFrame === 0) deflickerPipe.reset();\n\t\t\t\tfinalTex = deflickerPipe.execute(finalTex, deflickerOpts, encoder);\n\t\t\t}\n\t\t\tif (relightOpts) {\n\t\t\t\tconst relightPipeline = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\");\n\t\t\t\tconst r3dInstance = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\tconst extentW = texW / rasterScale;\n\t\t\t\tconst extentH = texH / rasterScale;\n\t\t\t\tconst activeLights = synthesizeRelightLights(relightOpts, sceneLights, {\n\t\t\t\t\tx: sampledX,\n\t\t\t\t\ty: sampledY,\n\t\t\t\t\twidth: extentW,\n\t\t\t\t\theight: extentH\n\t\t\t\t}, compositionFrame, fps ?? 24);\n\t\t\t\tconst lightsBuffer = r3dInstance.getOrCreateLightsBuffer(activeLights);\n\t\t\t\tconst relitTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\t\tfinalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t\tconst relitView = relitTex.createView();\n\t\t\t\tconst normalTex = relightOpts.normalTexture ?? relightOpts.normalMap;\n\t\t\t\trelightPipeline.execute(encoder, relitView, finalTex, normalTex, lightsBuffer, {\n\t\t\t\t\tviewportWidth: extentW,\n\t\t\t\t\tviewportHeight: extentH,\n\t\t\t\t\tlayerX: sampledX,\n\t\t\t\t\tlayerY: sampledY,\n\t\t\t\t\troughness: resolveFrameNumber(target?.roughness ?? target?.relightRoughness ?? relightOpts.specularRoughness ?? relightOpts.roughness, .35, compositionFrame, fps ?? 24),\n\t\t\t\t\tspecularStrength: resolveFrameNumber(target?.specularStrength ?? target?.relightSpecularStrength ?? relightOpts.specularStrength, .7, compositionFrame, fps ?? 24),\n\t\t\t\t\tmetallic: resolveFrameNumber(target?.metallic ?? target?.relightMetallic ?? relightOpts.metallic, 0, compositionFrame, fps ?? 24),\n\t\t\t\t\tambientIntensity: resolveFrameNumber(target?.ambientIntensity ?? target?.relightAmbientIntensity ?? relightOpts.ambientIntensity, .15, compositionFrame, fps ?? 24),\n\t\t\t\t\tdepthScale: resolveFrameNumber(target?.depthScale ?? target?.relightDepthScale ?? relightOpts.depthScale, 1, compositionFrame, fps ?? 24),\n\t\t\t\t\topacity: 1\n\t\t\t\t}, \"clear\");\n\t\t\t\tfinalTex = relitTex;\n\t\t\t}\n\t\t\tlet blurPadX = 0;\n\t\t\tlet blurPadY = 0;\n\t\t\tif (shutterAngle > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\tseekTimeline(compiled, shiftedFrame - 1, fps);\n\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\tseekTimeline(compiled, shiftedFrame, fps);\n\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\tif (!isTrue3D && !(is3D && quad3D)) {\n\t\t\t\t\t\tconst reach = shutterAngle / 360;\n\t\t\t\t\t\tconst side = ctx.device.limits.maxTextureDimension2D;\n\t\t\t\t\t\tconst padX$1 = Math.min(Math.ceil(Math.abs(vx) * rasterScale * reach), Math.max(0, Math.floor((side - texW) / 2)));\n\t\t\t\t\t\tconst padY$1 = Math.min(Math.ceil(Math.abs(vy) * rasterScale * reach), Math.max(0, Math.floor((side - texH) / 2)));\n\t\t\t\t\t\tblurPadX = padX$1 / rasterScale;\n\t\t\t\t\t\tblurPadY = padY$1 / rasterScale;\n\t\t\t\t\t\tconst paddedTex = ctx.renderer.getTemporaryTexture(texW + padX$1 * 2, texH + padY$1 * 2, [\n\t\t\t\t\t\t\tfinalTex,\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tconst padPass = ctx.renderer.beginFrame(encoder, paddedTex.createView(), {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, paddedTex.width, paddedTex.height, \"clear\");\n\t\t\t\t\t\tctx.renderer.drawTexture(padPass, finalTex, {\n\t\t\t\t\t\t\tx: padX$1,\n\t\t\t\t\t\t\ty: padY$1,\n\t\t\t\t\t\t\twidth: texW,\n\t\t\t\t\t\t\theight: texH\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tpadPass.end();\n\t\t\t\t\t\tfinalTex = paddedTex;\n\t\t\t\t\t}\n\t\t\t\t\tconst streakPx = Math.hypot(vx, vy) * rasterScale * (shutterAngle / 360) * 2;\n\t\t\t\t\tconst samples = Math.min(128, Math.max(16, Math.ceil(streakPx / 2)));\n\t\t\t\t\tfinalTex = ctx.renderer.applyMotionBlur(encoder, finalTex, vx * rasterScale, vy * rasterScale, shutterAngle, samples, [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (kind !== \"media\" && Array.isArray(lop.effects) && lop.effects.length > 0) finalTex = (await applyLayerEffects(lop.effects, finalTex, texW, texH, ctx, encoder, props, drawChild, [\n\t\t\t\tlocalTex,\n\t\t\t\tactiveTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...excludes\n\t\t\t], shiftedFrame, compositionFrame, fps ?? 24, isVideoMode, lop.id ?? `leaf_${i}`, rasterScale)).texture;\n\t\t\tconst borderExcludes = [\n\t\t\t\tlocalTex,\n\t\t\t\tfinalTex,\n\t\t\t\tactiveTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...excludes\n\t\t\t];\n\t\t\tconst borderResult = !isTrue3D && lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", borderExcludes, rasterScale) : null;\n\t\t\tif (savedScissors.length > 0) ctx.renderer.resumeScissors?.(savedScissors);\n\t\t\tif (isTrue3D) {\n\t\t\t\tconst renderedTex = finalTex;\n\t\t\t\tif (borderResult) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, renderedTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult.borderTex, {\n\t\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\t\theight: borderResult.oh\n\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tconst quadOpts = {\n\t\t\t\t\tposition: [\n\t\t\t\t\t\tlocalX + layerW * .5,\n\t\t\t\t\t\tlocalY + layerH * .5,\n\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t],\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\ttextureExtent: [layerW * rasterScale / texW, layerH * rasterScale / texH],\n\t\t\t\t\trotation: [\n\t\t\t\t\t\ttarget?.rotateX ?? lop.rotateX ?? 0,\n\t\t\t\t\t\ttarget?.rotateY ?? lop.rotateY ?? 0,\n\t\t\t\t\t\t(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation\n\t\t\t\t\t],\n\t\t\t\t\tscale: [\n\t\t\t\t\t\tscale$1 * scaleX,\n\t\t\t\t\t\tscale$1 * scaleY,\n\t\t\t\t\t\ttarget?.scaleZ ?? lop.scaleZ ?? 1\n\t\t\t\t\t],\n\t\t\t\t\tanchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],\n\t\t\t\t\tborderRadius: br,\n\t\t\t\t\tborderWidth: lop.borderWidth,\n\t\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\t\topacity: layerOpacity,\n\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\tmaterial: target?.material ?? lop.material,\n\t\t\t\t\tshininess: target?.shininess ?? lop.shininess,\n\t\t\t\t\troughness: target?.roughness ?? lop.roughness,\n\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity,\n\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,\n\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic,\n\t\t\t\t\t...surfaceProps(target, lop),\n\t\t\t\t\t...reliefOpts(lop.id, localX, localY, layerW, layerH)\n\t\t\t\t};\n\t\t\t\tif (parent3DMatrix) {\n\t\t\t\t\tconst r3d$1 = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\t\tquadOpts.modelMatrix = Matrix4Math.multiply(parent3DMatrix, r3d$1.quadModelMatrix({\n\t\t\t\t\t\t...quadOpts,\n\t\t\t\t\t\tposition: [\n\t\t\t\t\t\t\ttarget?.x ?? lop.x ?? 0,\n\t\t\t\t\t\t\ttarget?.y ?? lop.y ?? 0,\n\t\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t\t]\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tconst quadHasContent = layerHasRaster || Boolean(quadOpts.borderWidth && quadOpts.borderWidth > 0 && quadOpts.borderColor);\n\t\t\t\tif (!glyphBatches || quadHasContent) pending3DItems.push({\n\t\t\t\t\towner: lop.id,\n\t\t\t\t\tkind: \"quad\",\n\t\t\t\t\ttexture: renderedTex,\n\t\t\t\t\topts: quadOpts\n\t\t\t\t});\n\t\t\t\tif (glyphBatches && glyphBatches.length > 0) pending3DItems.push({\n\t\t\t\t\towner: lop.id,\n\t\t\t\t\tkind: \"slug\",\n\t\t\t\t\tbatches: glyphBatches,\n\t\t\t\t\topts: quadOpts,\n\t\t\t\t\tstackBase: quadHasContent ? 1 : 0\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (is3D && quad3D) {\n\t\t\t\tconst renderedTex = finalTex;\n\t\t\t\tif (borderResult) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, renderedTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult.borderTex, {\n\t\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\t\theight: borderResult.oh\n\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") drawProjectedQuad(ctx, encoder, activeView, renderedTex, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\telse {\n\t\t\t\t\tconst layerExcludes = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\trenderedTex,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t];\n\t\t\t\t\tif (borderResult) layerExcludes.push(borderResult.borderTex);\n\t\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, layerExcludes);\n\t\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\tdrawProjectedQuad(ctx, encoder, layerView, renderedTex, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") {\n\t\t\t\tconst drawPass = ctx.renderer.beginFrame(encoder, activeView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\tctx.renderer.drawTexture(drawPass, finalTex, {\n\t\t\t\t\tx: -blurPadX,\n\t\t\t\t\ty: -blurPadY,\n\t\t\t\t\twidth: layerW + blurPadX * 2,\n\t\t\t\t\theight: layerH + blurPadY * 2\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tif (borderResult) ctx.renderer.drawTexture(drawPass, borderResult.borderTex, {\n\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\theight: borderResult.oh\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tdrawPass.end();\n\t\t\t} else {\n\t\t\t\tconst layerExcludes = [\n\t\t\t\t\tfinalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tif (borderResult) layerExcludes.push(borderResult.borderTex);\n\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, layerExcludes);\n\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\tconst drawPass = ctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\tctx.renderer.drawTexture(drawPass, finalTex, {\n\t\t\t\t\tx: -blurPadX,\n\t\t\t\t\ty: -blurPadY,\n\t\t\t\t\twidth: layerW + blurPadX * 2,\n\t\t\t\t\theight: layerH + blurPadY * 2\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tif (borderResult) ctx.renderer.drawTexture(drawPass, borderResult.borderTex, {\n\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\theight: borderResult.oh\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tdrawPass.end();\n\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\tactiveView = activeTex.createView();\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t};\n\t\tconst initialExcludes = [\n\t\t\tcompTex,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t];\n\t\tcurrentCompTex = (await renderNodeTree(virtualMedia.children ?? [], compTex, compView, initialExcludes, 1, new DOMMatrix(), null, nativeWidth, nativeHeight, null, true)).finalTex;\n\t\tif (history && camera) history.recordFrame(shiftedFrame, camera);\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"load\");\n\t\tctx.renderer.drawTexture(finalPass, currentCompTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: props.containerWidth ?? targetWidth,\n\t\t\theight: props.containerHeight ?? targetHeight\n\t\t}, { opacity });\n\t\targs.pass = finalPass;\n\t}\n};\n/** Whether a composition's camera asks for shutter motion blur. */\nfunction sceneMotionBlur(virtualMedia) {\n\treturn collectNodeOps(virtualMedia.children).some((vm) => {\n\t\tconst op = vm.operation;\n\t\treturn op?.kind === \"camera\" && Boolean(op.motionBlur);\n\t});\n}\n/**\n* Renders `frame` of the composition into a scratch target only to record\n* its 3D motion history (the frame after it reads it).\n*/\nasync function renderMotionHistory(args, frame) {\n\tconst { ctx, encoder, props, targetTexture, targetWidth, targetHeight } = args;\n\tconst excludeTextures = [...props.excludeTextures ?? [], targetTexture];\n\tconst scratch = ctx.renderer.getTemporaryTexture(targetWidth, targetHeight, excludeTextures);\n\tconst view = scratch.createView();\n\tconst sub = {\n\t\t...args,\n\t\ttargetView: view,\n\t\ttargetTexture: scratch,\n\t\tpass: ctx.renderer.beginFrame(encoder, view, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\"),\n\t\tprops: {\n\t\t\t...props,\n\t\t\tframe,\n\t\t\t...props.compositionFrame !== void 0 && { compositionFrame: props.compositionFrame - 1 },\n\t\t\tmotionHistoryOnly: true,\n\t\t\texcludeTextures\n\t\t}\n\t};\n\tawait CompositorWebGPURenderer(sub);\n\tsub.pass.end();\n}\n/** Pixels of room around a border texture for its anti-aliased edge. */\nconst BORDER_AA_MARGIN = 2;\n/**\n* A `w`×`h` box's border as a texture, `rasterScale` pixels per layout px,\n* and the rect it covers in layout px (around the box, at its origin).\n*/\nfunction createBorderTexture(ctx, encoder, w, h, br, borderWidth, borderColor, strokeAlign, excludeTextures, rasterScale = 1) {\n\tif (w <= 0 || h <= 0 || !borderColor || !borderWidth || borderWidth <= 0) return null;\n\tlet ox = 0;\n\tlet oy = 0;\n\tlet ow = w;\n\tlet oh = h;\n\tlet outerRadius = br;\n\tlet innerRadius = br;\n\tif (strokeAlign === \"inside\") {\n\t\tox = 0;\n\t\toy = 0;\n\t\tow = w;\n\t\toh = h;\n\t\touterRadius = br;\n\t\tinnerRadius = Math.max(0, br - borderWidth);\n\t} else if (strokeAlign === \"outside\") {\n\t\tox = -borderWidth;\n\t\toy = -borderWidth;\n\t\tow = w + 2 * borderWidth;\n\t\toh = h + 2 * borderWidth;\n\t\touterRadius = br + borderWidth;\n\t\tinnerRadius = br;\n\t} else {\n\t\tox = -borderWidth / 2;\n\t\toy = -borderWidth / 2;\n\t\tow = w + borderWidth;\n\t\toh = h + borderWidth;\n\t\touterRadius = br + borderWidth / 2;\n\t\tinnerRadius = Math.max(0, br - borderWidth / 2);\n\t}\n\tif (br <= 0) {\n\t\touterRadius = 0;\n\t\tinnerRadius = 0;\n\t}\n\tif (ow <= 0 || oh <= 0) return null;\n\tconst m = BORDER_AA_MARGIN;\n\tconst borderTexW = Math.ceil((ow + 2 * m) * rasterScale);\n\tconst borderTexH = Math.ceil((oh + 2 * m) * rasterScale);\n\tconst raster = new DOMMatrix([\n\t\trasterScale,\n\t\t0,\n\t\t0,\n\t\trasterScale,\n\t\t0,\n\t\t0\n\t]);\n\tconst outerTex = ctx.renderer.getTemporaryTexture(borderTexW, borderTexH, excludeTextures);\n\tconst outerView = outerTex.createView();\n\tctx.renderer.beginFrame(encoder, outerView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, borderTexW, borderTexH, \"clear\").end();\n\tconst outerDrawPass = ctx.renderer.beginFrame(encoder, outerView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, borderTexW, borderTexH, \"load\");\n\tctx.renderer.pushTransform(raster);\n\tctx.renderer.drawRect(outerDrawPass, {\n\t\tx: m,\n\t\ty: m,\n\t\twidth: ow,\n\t\theight: oh\n\t}, borderColor, outerRadius);\n\tctx.renderer.popTransform();\n\touterDrawPass.end();\n\tconst innerW = ow - 2 * borderWidth;\n\tconst innerH = oh - 2 * borderWidth;\n\tif (innerW > 0 && innerH > 0) {\n\t\tconst innerTex = ctx.renderer.getTemporaryTexture(borderTexW, borderTexH, [outerTex, ...excludeTextures]);\n\t\tconst innerView = innerTex.createView();\n\t\tctx.renderer.beginFrame(encoder, innerView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, borderTexW, borderTexH, \"clear\").end();\n\t\tconst innerDrawPass = ctx.renderer.beginFrame(encoder, innerView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, borderTexW, borderTexH, \"load\");\n\t\tctx.renderer.pushTransform(raster);\n\t\tctx.renderer.drawRect(innerDrawPass, {\n\t\t\tx: m + borderWidth,\n\t\t\ty: m + borderWidth,\n\t\t\twidth: innerW,\n\t\t\theight: innerH\n\t\t}, {\n\t\t\tr: 1,\n\t\t\tg: 1,\n\t\t\tb: 1,\n\t\t\ta: 1\n\t\t}, innerRadius);\n\t\tctx.renderer.popTransform();\n\t\tinnerDrawPass.end();\n\t\treturn {\n\t\t\tborderTex: ctx.renderer.composite(encoder, outerTex, innerTex, \"mask-out\", excludeTextures),\n\t\t\tox: ox - m,\n\t\t\toy: oy - m,\n\t\t\tow: borderTexW / rasterScale,\n\t\t\toh: borderTexH / rasterScale\n\t\t};\n\t}\n\treturn {\n\t\tborderTex: outerTex,\n\t\tox: ox - m,\n\t\toy: oy - m,\n\t\tow: borderTexW / rasterScale,\n\t\toh: borderTexH / rasterScale\n\t};\n}\n\n//#endregion\n//#region src/renderers/audio-processor.ts\nconst compositorLayerAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tconst op = virtualMedia.operation;\n\tif (!op) return;\n\tconst numChannels = channels.length;\n\tif (numChannels === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tif (op.op === \"Compositor\") {\n\t\tconst master = resolveNumber(op.volume, 1);\n\t\tif (master === 1) return;\n\t\tfor (let c = 0; c < numChannels; c++) {\n\t\t\tconst ch = channels[c];\n\t\t\tfor (let i = 0; i < ch.length; i++) ch[i] *= master;\n\t\t}\n\t\treturn;\n\t}\n\tconst volume = resolveNumber(op.volume, 1);\n\tconst muted = resolveBoolean(op.muted, false);\n\tconst animation = op.animation;\n\tconst fps = ctx?.fps ?? 24;\n\tconst keyed = keyedGain(op);\n\tif (!keyed.volume && !keyed.muted) return;\n\tconst { tl, stub } = compileLayerTimeline(op.id || op.inputHandleId || \"layer\", animation, volume, muted, fps);\n\tconst startTimeSec = (ctx?.elapsedMs ?? 0) / 1e3;\n\tconst subChunkSize = 128;\n\ttl.seek(startTimeSec);\n\tlet lastVol = stub.volume;\n\tlet lastMuted = stub.muted;\n\tconst applied = (keyed.volume ? 1 : volume) * (!keyed.muted && muted ? 0 : 1);\n\tfor (let i = 0; i < numSamples; i += subChunkSize) {\n\t\tconst nextI = Math.min(numSamples, i + subChunkSize);\n\t\tconst tNext = startTimeSec + nextI / sampleRate;\n\t\ttl.seek(tNext);\n\t\tconst nextVol = stub.volume;\n\t\tconst nextMuted = stub.muted;\n\t\tfor (let j = i; j < nextI; j++) {\n\t\t\tconst p = (j - i) / (nextI - i);\n\t\t\tconst currentVol = Math.min(1, Math.max(0, lastVol + (nextVol - lastVol) * p));\n\t\t\tconst finalGain = (j - i < (nextI - i) / 2 ? lastMuted : nextMuted) ? 0 : currentVol;\n\t\t\tconst relativeGain = applied === 0 ? 0 : finalGain / applied;\n\t\t\tif (relativeGain !== 1) for (let c = 0; c < numChannels; c++) channels[c][j] *= relativeGain;\n\t\t}\n\t\tlastVol = nextVol;\n\t\tlastMuted = nextMuted;\n\t}\n};\naudioRegistry.register(\"CompositorLayer\", compositorLayerAudioProcessor);\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: CompositorWebGPURenderer });\n\n//#endregion\nexport { compileTimeline as a, setCachedTimeline as c, compileLayerTimeline as i, Transform3DMath as n, getCachedTimeline as o, has3DTransform as r, seekTimeline as s, renderers_default as t };\n//# sourceMappingURL=renderers-CrRYcARA.mjs.map"],"mappings":"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"}