@spawnite/engine 0.1.0-beta.15

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 (2563) hide show
  1. package/LICENSE.md +169 -0
  2. package/README.md +92 -0
  3. package/dist/-MLBVTaO.js +1 -0
  4. package/dist/28wIPE7L.js +1 -0
  5. package/dist/3rj0AvB6.js +1 -0
  6. package/dist/5L-NcwKR.js +1 -0
  7. package/dist/B-qLcgSf.js +1 -0
  8. package/dist/B0WN1jqX.js +41 -0
  9. package/dist/B1OUgdbN.js +1 -0
  10. package/dist/BEL83Bb6.js +1 -0
  11. package/dist/BGDOC3Q-.js +1 -0
  12. package/dist/BGM1SnEr.js +1 -0
  13. package/dist/BH6Ftfg9.js +1 -0
  14. package/dist/BJIJuxaE.js +1 -0
  15. package/dist/BJclgjKG.js +1 -0
  16. package/dist/BKc2k2s6.js +1 -0
  17. package/dist/BLB4-b4b.js +2 -0
  18. package/dist/BQnBIIt8.js +1 -0
  19. package/dist/BR3nbYwS.js +7 -0
  20. package/dist/BV9hGHeu.js +623 -0
  21. package/dist/BWOKsReG.js +1 -0
  22. package/dist/BWlq9jqw.js +1 -0
  23. package/dist/BXmxKBbF.js +3 -0
  24. package/dist/BYXhtwWy.js +1 -0
  25. package/dist/B_HFa2lJ.js +1 -0
  26. package/dist/BciVglt5.js +1 -0
  27. package/dist/Bfg1Y9_2.js +1 -0
  28. package/dist/Bh-CVkQx.js +1 -0
  29. package/dist/BiH9xCBB.js +1 -0
  30. package/dist/BobsCMiL.js +9 -0
  31. package/dist/Bp238wbZ.js +1 -0
  32. package/dist/Bpe0g5hX.js +1 -0
  33. package/dist/BrfUaL46.js +2 -0
  34. package/dist/Bw06YsIc.js +1 -0
  35. package/dist/Bydoy8wO.js +1 -0
  36. package/dist/BzaiZux2.js +1 -0
  37. package/dist/C25qqozO.js +1 -0
  38. package/dist/C6Ja5Z7G.js +1 -0
  39. package/dist/CCh4CnV9.js +1 -0
  40. package/dist/CEuuijY1.js +1 -0
  41. package/dist/CHntUxHl.js +1 -0
  42. package/dist/CIq9KviM.js +1 -0
  43. package/dist/CQPA3y5T.js +1 -0
  44. package/dist/CRfoqBKG.js +1 -0
  45. package/dist/CSXcU95U.js +1 -0
  46. package/dist/CU0epHFG.js +3 -0
  47. package/dist/CVgRrBP4.js +1 -0
  48. package/dist/CZV99t6a.js +7 -0
  49. package/dist/Cg33N9Ej.js +1 -0
  50. package/dist/Chcm92bZ.js +1 -0
  51. package/dist/CjiCdqiE.js +2 -0
  52. package/dist/Cp5beIll.js +1 -0
  53. package/dist/Cq6VqPHb.js +2 -0
  54. package/dist/CwZDkslT.js +1 -0
  55. package/dist/D3Y2LHFe.js +1 -0
  56. package/dist/D3wyrZ2_.js +1 -0
  57. package/dist/D8jIS84n.js +1 -0
  58. package/dist/DCIejHqp.js +1 -0
  59. package/dist/DHsBnfoU.js +1 -0
  60. package/dist/DJSpRhXB.js +1 -0
  61. package/dist/DOeUeeKs.js +1 -0
  62. package/dist/DR9bHgf0.js +1 -0
  63. package/dist/DRnuSAbu.js +1 -0
  64. package/dist/DSb1ApLU.js +1 -0
  65. package/dist/DXtppcZ7.js +1 -0
  66. package/dist/DZIhHLUn.js +1 -0
  67. package/dist/DgMhVbMU.js +1 -0
  68. package/dist/Dh5kh1nX.js +1 -0
  69. package/dist/DiGFL8kd.js +1 -0
  70. package/dist/DkKmurqu.js +1 -0
  71. package/dist/DlkDsMQd.js +1 -0
  72. package/dist/DnNEzpz-.js +1 -0
  73. package/dist/Dqx9hHBK.js +1 -0
  74. package/dist/DsgWLyZo.js +1 -0
  75. package/dist/DucRBEvN.js +1 -0
  76. package/dist/Dwcms3jX.js +1 -0
  77. package/dist/Dwfie-ev.js +1 -0
  78. package/dist/DyHjwN2H.js +1 -0
  79. package/dist/SMby3e6M.js +4 -0
  80. package/dist/THIRD-PARTY-NOTICES +329 -0
  81. package/dist/UJDr3Nrd.js +1 -0
  82. package/dist/V70ADx0g.js +2 -0
  83. package/dist/abilities.d.ts +1 -0
  84. package/dist/abilities.js +1 -0
  85. package/dist/core.d.ts +1 -0
  86. package/dist/core.js +1 -0
  87. package/dist/devtools.d.ts +1 -0
  88. package/dist/devtools.js +1 -0
  89. package/dist/dragAndDrop.d.ts +1 -0
  90. package/dist/dragAndDrop.js +1 -0
  91. package/dist/eYC1fQo5.js +1 -0
  92. package/dist/eslint.js +1 -0
  93. package/dist/hQBGE7c4.js +1 -0
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.js +297 -0
  96. package/dist/internal/cli.js +1 -0
  97. package/dist/internal/devServer.js +2 -0
  98. package/dist/internal/devtools.js +1 -0
  99. package/dist/internal/room.js +1 -0
  100. package/dist/inventory.d.ts +1 -0
  101. package/dist/inventory.js +1 -0
  102. package/dist/jMKXPXIH.js +33 -0
  103. package/dist/looks/dusk.d.ts +1 -0
  104. package/dist/looks/dusk.js +1 -0
  105. package/dist/looks/morning.d.ts +1 -0
  106. package/dist/looks/morning.js +1 -0
  107. package/dist/looks/night.d.ts +1 -0
  108. package/dist/looks/night.js +1 -0
  109. package/dist/looks/noon.d.ts +1 -0
  110. package/dist/looks/noon.js +1 -0
  111. package/dist/looks/overcast.d.ts +1 -0
  112. package/dist/looks/overcast.js +1 -0
  113. package/dist/npcs.d.ts +1 -0
  114. package/dist/npcs.js +1 -0
  115. package/dist/public.d.ts +18818 -0
  116. package/dist/replay.d.ts +1 -0
  117. package/dist/replay.js +1 -0
  118. package/dist/testing.d.ts +542 -0
  119. package/dist/testing.js +1 -0
  120. package/dist/three.d.ts +1 -0
  121. package/dist/three.js +1 -0
  122. package/dist/tracks.d.ts +1 -0
  123. package/dist/tracks.js +1 -0
  124. package/dist/vite.d.ts +123 -0
  125. package/dist/vite.js +1 -0
  126. package/dist/weapons.d.ts +1 -0
  127. package/dist/weapons.js +1 -0
  128. package/dist/wiki/engine/ai/metadata.md +143 -0
  129. package/dist/wiki/engine/audio/sound.md +72 -0
  130. package/dist/wiki/engine/audio/voice.md +153 -0
  131. package/dist/wiki/engine/behaviours/abilities.md +328 -0
  132. package/dist/wiki/engine/behaviours/bob.md +37 -0
  133. package/dist/wiki/engine/behaviours/chase.md +158 -0
  134. package/dist/wiki/engine/behaviours/cooldowns.md +83 -0
  135. package/dist/wiki/engine/behaviours/dialog.md +172 -0
  136. package/dist/wiki/engine/behaviours/health.md +330 -0
  137. package/dist/wiki/engine/behaviours/interact.md +41 -0
  138. package/dist/wiki/engine/behaviours/inventory.md +266 -0
  139. package/dist/wiki/engine/behaviours/loot.md +90 -0
  140. package/dist/wiki/engine/behaviours/pickup.md +149 -0
  141. package/dist/wiki/engine/behaviours/resources.md +274 -0
  142. package/dist/wiki/engine/behaviours/routines.md +99 -0
  143. package/dist/wiki/engine/behaviours/spin.md +36 -0
  144. package/dist/wiki/engine/behaviours/stats.md +220 -0
  145. package/dist/wiki/engine/behaviours/targeting.md +155 -0
  146. package/dist/wiki/engine/behaviours/track-mover.md +121 -0
  147. package/dist/wiki/engine/behaviours/track-trigger.md +117 -0
  148. package/dist/wiki/engine/behaviours/trigger.md +158 -0
  149. package/dist/wiki/engine/behaviours/weapon.md +462 -0
  150. package/dist/wiki/engine/entities/camera.md +326 -0
  151. package/dist/wiki/engine/entities/entity.mdx +1063 -0
  152. package/dist/wiki/engine/entities/npc.md +64 -0
  153. package/dist/wiki/engine/entities/player.md +435 -0
  154. package/dist/wiki/engine/errors/SP0001.md +20 -0
  155. package/dist/wiki/engine/errors/SP0002.md +20 -0
  156. package/dist/wiki/engine/errors/SP0003.md +20 -0
  157. package/dist/wiki/engine/errors/SP0008.md +20 -0
  158. package/dist/wiki/engine/errors/SP0009.md +20 -0
  159. package/dist/wiki/engine/errors/SP0010.md +20 -0
  160. package/dist/wiki/engine/errors/SP0011.md +20 -0
  161. package/dist/wiki/engine/errors/SP0014.md +20 -0
  162. package/dist/wiki/engine/errors/SP0015.md +20 -0
  163. package/dist/wiki/engine/errors/SP0016.md +20 -0
  164. package/dist/wiki/engine/errors/SP0017.md +20 -0
  165. package/dist/wiki/engine/errors/SP0018.md +20 -0
  166. package/dist/wiki/engine/errors/SP0019.md +20 -0
  167. package/dist/wiki/engine/errors/SP0020.md +20 -0
  168. package/dist/wiki/engine/errors/SP0021.md +20 -0
  169. package/dist/wiki/engine/errors/SP0022.md +20 -0
  170. package/dist/wiki/engine/errors/SP0023.md +20 -0
  171. package/dist/wiki/engine/errors/SP0024.md +20 -0
  172. package/dist/wiki/engine/errors/SP0025.md +20 -0
  173. package/dist/wiki/engine/errors/SP0026.md +22 -0
  174. package/dist/wiki/engine/errors/SP0027.md +20 -0
  175. package/dist/wiki/engine/errors/SP0028.md +20 -0
  176. package/dist/wiki/engine/errors/SP0029.md +20 -0
  177. package/dist/wiki/engine/errors/SP0030.md +20 -0
  178. package/dist/wiki/engine/errors/SP0031.md +20 -0
  179. package/dist/wiki/engine/errors/SP0034.md +20 -0
  180. package/dist/wiki/engine/errors/SP0035.md +20 -0
  181. package/dist/wiki/engine/errors/SP0036.md +20 -0
  182. package/dist/wiki/engine/errors/SP0037.md +20 -0
  183. package/dist/wiki/engine/errors/SP0038.md +20 -0
  184. package/dist/wiki/engine/errors/SP0039.md +20 -0
  185. package/dist/wiki/engine/errors/SP0040.md +20 -0
  186. package/dist/wiki/engine/errors/SP0041.md +20 -0
  187. package/dist/wiki/engine/errors/SP0042.md +20 -0
  188. package/dist/wiki/engine/errors/SP0043.md +20 -0
  189. package/dist/wiki/engine/errors/SP0045.md +20 -0
  190. package/dist/wiki/engine/errors/SP0046.md +20 -0
  191. package/dist/wiki/engine/errors/SP0047.md +20 -0
  192. package/dist/wiki/engine/errors/SP0048.md +20 -0
  193. package/dist/wiki/engine/errors/SP0049.md +20 -0
  194. package/dist/wiki/engine/errors/SP0050.md +20 -0
  195. package/dist/wiki/engine/errors/SP0051.md +20 -0
  196. package/dist/wiki/engine/errors/SP0052.md +20 -0
  197. package/dist/wiki/engine/errors/SP0053.md +20 -0
  198. package/dist/wiki/engine/errors/SP0054.md +20 -0
  199. package/dist/wiki/engine/errors/SP0055.md +20 -0
  200. package/dist/wiki/engine/errors/SP0056.md +20 -0
  201. package/dist/wiki/engine/errors/SP0057.md +20 -0
  202. package/dist/wiki/engine/errors/SP0058.md +20 -0
  203. package/dist/wiki/engine/errors/SP0059.md +20 -0
  204. package/dist/wiki/engine/errors/SP0060.md +20 -0
  205. package/dist/wiki/engine/errors/SP0061.md +20 -0
  206. package/dist/wiki/engine/errors/SP0064.md +20 -0
  207. package/dist/wiki/engine/errors/SP0065.md +20 -0
  208. package/dist/wiki/engine/errors/SP0066.md +20 -0
  209. package/dist/wiki/engine/errors/SP0067.md +20 -0
  210. package/dist/wiki/engine/errors/SP0070.md +20 -0
  211. package/dist/wiki/engine/errors/SP0071.md +20 -0
  212. package/dist/wiki/engine/errors/SP0072.md +20 -0
  213. package/dist/wiki/engine/errors/SP0073.md +20 -0
  214. package/dist/wiki/engine/errors/SP0074.md +20 -0
  215. package/dist/wiki/engine/errors/SP0075.md +20 -0
  216. package/dist/wiki/engine/errors/SP0076.md +20 -0
  217. package/dist/wiki/engine/errors/SP0077.md +20 -0
  218. package/dist/wiki/engine/errors/SP0078.md +20 -0
  219. package/dist/wiki/engine/errors/SP0079.md +20 -0
  220. package/dist/wiki/engine/errors/SP0080.md +20 -0
  221. package/dist/wiki/engine/errors/SP0081.md +20 -0
  222. package/dist/wiki/engine/errors/SP0082.md +20 -0
  223. package/dist/wiki/engine/errors/SP0083.md +20 -0
  224. package/dist/wiki/engine/errors/SP0084.md +20 -0
  225. package/dist/wiki/engine/errors/SP0085.md +20 -0
  226. package/dist/wiki/engine/errors/SP0086.md +20 -0
  227. package/dist/wiki/engine/errors/SP0087.md +20 -0
  228. package/dist/wiki/engine/errors/SP0089.md +20 -0
  229. package/dist/wiki/engine/errors/SP0090.md +20 -0
  230. package/dist/wiki/engine/errors/SP0091.md +20 -0
  231. package/dist/wiki/engine/errors/SP0092.md +20 -0
  232. package/dist/wiki/engine/errors/SP0093.md +20 -0
  233. package/dist/wiki/engine/errors/SP0094.md +20 -0
  234. package/dist/wiki/engine/errors/SP0095.md +20 -0
  235. package/dist/wiki/engine/errors/SP0096.md +20 -0
  236. package/dist/wiki/engine/errors/SP0097.md +20 -0
  237. package/dist/wiki/engine/errors/SP0098.md +20 -0
  238. package/dist/wiki/engine/errors/SP0099.md +20 -0
  239. package/dist/wiki/engine/errors/SP0100.md +20 -0
  240. package/dist/wiki/engine/errors/SP0101.md +20 -0
  241. package/dist/wiki/engine/errors/SP0102.md +20 -0
  242. package/dist/wiki/engine/errors/SP0103.md +20 -0
  243. package/dist/wiki/engine/errors/SP0104.md +20 -0
  244. package/dist/wiki/engine/errors/SP0105.md +20 -0
  245. package/dist/wiki/engine/errors/SP0106.md +20 -0
  246. package/dist/wiki/engine/errors/SP0107.md +20 -0
  247. package/dist/wiki/engine/errors/SP0108.md +20 -0
  248. package/dist/wiki/engine/errors/SP0109.md +20 -0
  249. package/dist/wiki/engine/errors/SP0110.md +20 -0
  250. package/dist/wiki/engine/errors/SP0111.md +20 -0
  251. package/dist/wiki/engine/errors/SP0112.md +20 -0
  252. package/dist/wiki/engine/errors/SP0113.md +20 -0
  253. package/dist/wiki/engine/errors/SP0114.md +20 -0
  254. package/dist/wiki/engine/errors/SP0115.md +20 -0
  255. package/dist/wiki/engine/errors/SP0116.md +20 -0
  256. package/dist/wiki/engine/errors/SP0117.md +20 -0
  257. package/dist/wiki/engine/errors/SP0118.md +20 -0
  258. package/dist/wiki/engine/errors/SP0119.md +20 -0
  259. package/dist/wiki/engine/errors/SP0120.md +20 -0
  260. package/dist/wiki/engine/errors/SP0121.md +20 -0
  261. package/dist/wiki/engine/errors/SP0122.md +20 -0
  262. package/dist/wiki/engine/errors/SP0125.md +20 -0
  263. package/dist/wiki/engine/errors/SP0126.md +20 -0
  264. package/dist/wiki/engine/errors/SP0132.md +20 -0
  265. package/dist/wiki/engine/errors/SP0133.md +20 -0
  266. package/dist/wiki/engine/errors/SP0134.md +20 -0
  267. package/dist/wiki/engine/errors/SP0137.md +20 -0
  268. package/dist/wiki/engine/errors/SP0138.md +20 -0
  269. package/dist/wiki/engine/errors/SP0139.md +20 -0
  270. package/dist/wiki/engine/errors/SP0143.md +20 -0
  271. package/dist/wiki/engine/errors/SP0145.md +20 -0
  272. package/dist/wiki/engine/errors/SP0146.md +20 -0
  273. package/dist/wiki/engine/errors/SP0147.md +20 -0
  274. package/dist/wiki/engine/errors/SP0148.md +20 -0
  275. package/dist/wiki/engine/errors/SP0149.md +20 -0
  276. package/dist/wiki/engine/errors/SP0150.md +20 -0
  277. package/dist/wiki/engine/errors/SP0151.md +20 -0
  278. package/dist/wiki/engine/errors/SP0152.md +20 -0
  279. package/dist/wiki/engine/errors/SP0154.md +20 -0
  280. package/dist/wiki/engine/errors/SP0157.md +20 -0
  281. package/dist/wiki/engine/errors/SP0158.md +20 -0
  282. package/dist/wiki/engine/errors/SP0159.md +20 -0
  283. package/dist/wiki/engine/errors/SP0160.md +20 -0
  284. package/dist/wiki/engine/errors/SP0161.md +20 -0
  285. package/dist/wiki/engine/errors/SP0162.md +20 -0
  286. package/dist/wiki/engine/errors/SP0163.md +20 -0
  287. package/dist/wiki/engine/errors/SP0164.md +20 -0
  288. package/dist/wiki/engine/errors/SP0165.md +20 -0
  289. package/dist/wiki/engine/errors/SP0166.md +20 -0
  290. package/dist/wiki/engine/errors/SP0167.md +20 -0
  291. package/dist/wiki/engine/errors/SP0169.md +20 -0
  292. package/dist/wiki/engine/errors/SP0175.md +20 -0
  293. package/dist/wiki/engine/errors/SP0176.md +20 -0
  294. package/dist/wiki/engine/errors/SP0177.md +20 -0
  295. package/dist/wiki/engine/errors/SP0178.md +20 -0
  296. package/dist/wiki/engine/errors/SP0179.md +20 -0
  297. package/dist/wiki/engine/errors/SP0180.md +20 -0
  298. package/dist/wiki/engine/errors/SP0181.md +20 -0
  299. package/dist/wiki/engine/errors/SP0182.md +20 -0
  300. package/dist/wiki/engine/errors/SP0183.md +20 -0
  301. package/dist/wiki/engine/errors/SP0184.md +20 -0
  302. package/dist/wiki/engine/errors/SP0185.md +20 -0
  303. package/dist/wiki/engine/errors/SP0186.md +20 -0
  304. package/dist/wiki/engine/errors/SP0187.md +20 -0
  305. package/dist/wiki/engine/errors/SP0188.md +20 -0
  306. package/dist/wiki/engine/errors/SP0189.md +20 -0
  307. package/dist/wiki/engine/errors/SP0190.md +20 -0
  308. package/dist/wiki/engine/errors/SP0191.md +20 -0
  309. package/dist/wiki/engine/errors/SP0192.md +20 -0
  310. package/dist/wiki/engine/errors/SP0193.md +20 -0
  311. package/dist/wiki/engine/errors/SP0194.md +20 -0
  312. package/dist/wiki/engine/errors/SP0195.md +20 -0
  313. package/dist/wiki/engine/errors/SP0196.md +20 -0
  314. package/dist/wiki/engine/errors/SP0197.md +20 -0
  315. package/dist/wiki/engine/errors/SP0198.md +20 -0
  316. package/dist/wiki/engine/errors/SP0199.md +20 -0
  317. package/dist/wiki/engine/errors/SP0200.md +20 -0
  318. package/dist/wiki/engine/errors/SP0202.md +20 -0
  319. package/dist/wiki/engine/errors/SP0203.md +20 -0
  320. package/dist/wiki/engine/errors/SP0204.md +20 -0
  321. package/dist/wiki/engine/errors/SP0205.md +20 -0
  322. package/dist/wiki/engine/errors/SP0206.md +20 -0
  323. package/dist/wiki/engine/errors/SP0207.md +20 -0
  324. package/dist/wiki/engine/errors/SP0208.md +20 -0
  325. package/dist/wiki/engine/errors/SP0210.md +20 -0
  326. package/dist/wiki/engine/errors/SP0211.md +20 -0
  327. package/dist/wiki/engine/errors/SP0212.md +20 -0
  328. package/dist/wiki/engine/errors/SP0213.md +20 -0
  329. package/dist/wiki/engine/errors/SP0214.md +20 -0
  330. package/dist/wiki/engine/errors/SP0215.md +20 -0
  331. package/dist/wiki/engine/errors/SP0216.md +20 -0
  332. package/dist/wiki/engine/errors/SP0219.md +20 -0
  333. package/dist/wiki/engine/errors/SP0220.md +20 -0
  334. package/dist/wiki/engine/errors/SP0221.md +20 -0
  335. package/dist/wiki/engine/errors/SP0225.md +20 -0
  336. package/dist/wiki/engine/errors/SP0228.md +20 -0
  337. package/dist/wiki/engine/errors/SP0229.md +20 -0
  338. package/dist/wiki/engine/errors/SP0230.md +20 -0
  339. package/dist/wiki/engine/errors/SP0231.md +20 -0
  340. package/dist/wiki/engine/errors/SP0232.md +20 -0
  341. package/dist/wiki/engine/errors/SP0233.md +20 -0
  342. package/dist/wiki/engine/errors/SP0234.md +20 -0
  343. package/dist/wiki/engine/errors/SP0235.md +20 -0
  344. package/dist/wiki/engine/errors/SP0236.md +20 -0
  345. package/dist/wiki/engine/errors/SP0237.md +20 -0
  346. package/dist/wiki/engine/errors/SP0238.md +20 -0
  347. package/dist/wiki/engine/errors/SP0239.md +20 -0
  348. package/dist/wiki/engine/errors/SP0240.md +20 -0
  349. package/dist/wiki/engine/errors/SP0241.md +20 -0
  350. package/dist/wiki/engine/errors/SP0242.md +20 -0
  351. package/dist/wiki/engine/errors/SP0243.md +20 -0
  352. package/dist/wiki/engine/errors/SP0244.md +20 -0
  353. package/dist/wiki/engine/errors/SP0245.md +20 -0
  354. package/dist/wiki/engine/errors/SP0247.md +20 -0
  355. package/dist/wiki/engine/errors/SP0249.md +20 -0
  356. package/dist/wiki/engine/errors/SP0250.md +20 -0
  357. package/dist/wiki/engine/errors/SP0251.md +20 -0
  358. package/dist/wiki/engine/errors/SP0252.md +20 -0
  359. package/dist/wiki/engine/errors/SP0253.md +20 -0
  360. package/dist/wiki/engine/errors/SP0254.md +20 -0
  361. package/dist/wiki/engine/errors/SP0255.md +20 -0
  362. package/dist/wiki/engine/errors/SP0256.md +20 -0
  363. package/dist/wiki/engine/errors/SP0257.md +20 -0
  364. package/dist/wiki/engine/errors/SP0258.md +20 -0
  365. package/dist/wiki/engine/errors/SP0259.md +20 -0
  366. package/dist/wiki/engine/errors/SP0260.md +20 -0
  367. package/dist/wiki/engine/errors/SP0270.md +20 -0
  368. package/dist/wiki/engine/errors/SP0271.md +20 -0
  369. package/dist/wiki/engine/errors/SP0272.md +20 -0
  370. package/dist/wiki/engine/errors/SP0273.md +20 -0
  371. package/dist/wiki/engine/errors/SP0274.md +20 -0
  372. package/dist/wiki/engine/errors/SP0275.md +20 -0
  373. package/dist/wiki/engine/errors/SP0276.md +20 -0
  374. package/dist/wiki/engine/errors/SP0277.md +20 -0
  375. package/dist/wiki/engine/errors/SP0278.md +20 -0
  376. package/dist/wiki/engine/errors/SP0279.md +20 -0
  377. package/dist/wiki/engine/errors/SP0280.md +20 -0
  378. package/dist/wiki/engine/errors/SP0281.md +20 -0
  379. package/dist/wiki/engine/errors/SP0282.md +20 -0
  380. package/dist/wiki/engine/errors/SP0283.md +20 -0
  381. package/dist/wiki/engine/errors/SP0284.md +20 -0
  382. package/dist/wiki/engine/errors/SP0285.md +20 -0
  383. package/dist/wiki/engine/errors/SP0286.md +20 -0
  384. package/dist/wiki/engine/errors/SP0287.md +20 -0
  385. package/dist/wiki/engine/errors/SP0288.md +20 -0
  386. package/dist/wiki/engine/errors/SP0289.md +20 -0
  387. package/dist/wiki/engine/errors/SP0290.md +20 -0
  388. package/dist/wiki/engine/errors/SP0291.md +20 -0
  389. package/dist/wiki/engine/errors/SP0292.md +20 -0
  390. package/dist/wiki/engine/errors/SP0293.md +20 -0
  391. package/dist/wiki/engine/errors/SP0294.md +20 -0
  392. package/dist/wiki/engine/errors/SP0295.md +20 -0
  393. package/dist/wiki/engine/errors/SP0296.md +20 -0
  394. package/dist/wiki/engine/errors/SP0297.md +20 -0
  395. package/dist/wiki/engine/errors/SP0298.md +20 -0
  396. package/dist/wiki/engine/errors/SP0299.md +20 -0
  397. package/dist/wiki/engine/errors/SP0300.md +20 -0
  398. package/dist/wiki/engine/errors/SP0301.md +20 -0
  399. package/dist/wiki/engine/errors/SP0302.md +20 -0
  400. package/dist/wiki/engine/errors/SP0303.md +20 -0
  401. package/dist/wiki/engine/errors/SP0304.md +20 -0
  402. package/dist/wiki/engine/errors/SP0305.md +20 -0
  403. package/dist/wiki/engine/errors/SP0306.md +20 -0
  404. package/dist/wiki/engine/errors/SP0307.md +20 -0
  405. package/dist/wiki/engine/errors/SP0308.md +20 -0
  406. package/dist/wiki/engine/errors/SP0309.md +20 -0
  407. package/dist/wiki/engine/errors/SP0310.md +20 -0
  408. package/dist/wiki/engine/errors/SP0311.md +20 -0
  409. package/dist/wiki/engine/errors/SP0312.md +20 -0
  410. package/dist/wiki/engine/errors/SP0313.md +20 -0
  411. package/dist/wiki/engine/errors/SP0314.md +20 -0
  412. package/dist/wiki/engine/errors/SP0315.md +20 -0
  413. package/dist/wiki/engine/errors/SP0316.md +20 -0
  414. package/dist/wiki/engine/errors/SP0317.md +20 -0
  415. package/dist/wiki/engine/errors/SP0318.md +20 -0
  416. package/dist/wiki/engine/errors/SP0319.md +20 -0
  417. package/dist/wiki/engine/errors/SP0320.md +20 -0
  418. package/dist/wiki/engine/errors/SP0321.md +20 -0
  419. package/dist/wiki/engine/errors/SP0322.md +20 -0
  420. package/dist/wiki/engine/errors/SP0323.md +20 -0
  421. package/dist/wiki/engine/errors/SP0324.md +20 -0
  422. package/dist/wiki/engine/errors/SP0325.md +20 -0
  423. package/dist/wiki/engine/errors/SP0326.md +20 -0
  424. package/dist/wiki/engine/errors/SP0327.md +20 -0
  425. package/dist/wiki/engine/errors/SP0328.md +20 -0
  426. package/dist/wiki/engine/errors/SP0329.md +20 -0
  427. package/dist/wiki/engine/errors/SP0330.md +20 -0
  428. package/dist/wiki/engine/errors/SP0331.md +20 -0
  429. package/dist/wiki/engine/errors/SP0332.md +20 -0
  430. package/dist/wiki/engine/errors/SP0333.md +20 -0
  431. package/dist/wiki/engine/errors/SP0334.md +20 -0
  432. package/dist/wiki/engine/errors/SP0335.md +20 -0
  433. package/dist/wiki/engine/errors/SP0336.md +20 -0
  434. package/dist/wiki/engine/errors/SP0337.md +20 -0
  435. package/dist/wiki/engine/errors/SP0338.md +20 -0
  436. package/dist/wiki/engine/errors/SP0339.md +20 -0
  437. package/dist/wiki/engine/errors/SP0340.md +20 -0
  438. package/dist/wiki/engine/errors/SP0341.md +20 -0
  439. package/dist/wiki/engine/errors/SP0342.md +20 -0
  440. package/dist/wiki/engine/errors/SP0343.md +20 -0
  441. package/dist/wiki/engine/errors/SP0344.md +20 -0
  442. package/dist/wiki/engine/errors/SP0346.md +20 -0
  443. package/dist/wiki/engine/errors/SP0347.md +20 -0
  444. package/dist/wiki/engine/errors/SP0348.md +20 -0
  445. package/dist/wiki/engine/errors/SP0349.md +20 -0
  446. package/dist/wiki/engine/errors/SP0350.md +20 -0
  447. package/dist/wiki/engine/errors/SP0351.md +20 -0
  448. package/dist/wiki/engine/errors/SP0352.md +20 -0
  449. package/dist/wiki/engine/errors/SP0353.md +20 -0
  450. package/dist/wiki/engine/errors/SP0354.md +20 -0
  451. package/dist/wiki/engine/errors/SP0355.md +20 -0
  452. package/dist/wiki/engine/errors/SP0356.md +20 -0
  453. package/dist/wiki/engine/errors/SP0357.md +20 -0
  454. package/dist/wiki/engine/errors/SP0358.md +20 -0
  455. package/dist/wiki/engine/errors/SP0359.md +20 -0
  456. package/dist/wiki/engine/errors/SP0360.md +20 -0
  457. package/dist/wiki/engine/errors/SP0361.md +20 -0
  458. package/dist/wiki/engine/errors/SP0362.md +20 -0
  459. package/dist/wiki/engine/errors/SP0363.md +20 -0
  460. package/dist/wiki/engine/errors/SP0364.md +20 -0
  461. package/dist/wiki/engine/errors/SP0365.md +20 -0
  462. package/dist/wiki/engine/errors/SP0366.md +20 -0
  463. package/dist/wiki/engine/errors/SP0367.md +20 -0
  464. package/dist/wiki/engine/errors/SP0368.md +20 -0
  465. package/dist/wiki/engine/errors/SP0369.md +20 -0
  466. package/dist/wiki/engine/errors/SP0370.md +20 -0
  467. package/dist/wiki/engine/errors/SP0371.md +20 -0
  468. package/dist/wiki/engine/errors/SP0372.md +20 -0
  469. package/dist/wiki/engine/errors/SP0373.md +20 -0
  470. package/dist/wiki/engine/errors/SP0374.md +20 -0
  471. package/dist/wiki/engine/errors/SP0375.md +20 -0
  472. package/dist/wiki/engine/errors/SP0376.md +20 -0
  473. package/dist/wiki/engine/errors/SP0377.md +20 -0
  474. package/dist/wiki/engine/errors/SP0378.md +20 -0
  475. package/dist/wiki/engine/errors/SP0379.md +20 -0
  476. package/dist/wiki/engine/errors/SP0380.md +20 -0
  477. package/dist/wiki/engine/errors/SP0381.md +20 -0
  478. package/dist/wiki/engine/errors/SP0382.md +20 -0
  479. package/dist/wiki/engine/errors/SP0383.md +20 -0
  480. package/dist/wiki/engine/errors/SP0384.md +20 -0
  481. package/dist/wiki/engine/errors/SP0385.md +20 -0
  482. package/dist/wiki/engine/errors/SP0386.md +20 -0
  483. package/dist/wiki/engine/errors/SP0387.md +21 -0
  484. package/dist/wiki/engine/errors/SP0388.md +20 -0
  485. package/dist/wiki/engine/errors/SP0389.md +20 -0
  486. package/dist/wiki/engine/errors/SP0390.md +20 -0
  487. package/dist/wiki/engine/errors/SP0391.md +20 -0
  488. package/dist/wiki/engine/errors/SP0392.md +20 -0
  489. package/dist/wiki/engine/errors/SP0393.md +20 -0
  490. package/dist/wiki/engine/errors/SP0394.md +20 -0
  491. package/dist/wiki/engine/errors/SP0395.md +20 -0
  492. package/dist/wiki/engine/errors/SP0396.md +20 -0
  493. package/dist/wiki/engine/errors/SP0397.md +20 -0
  494. package/dist/wiki/engine/errors/SP0398.md +20 -0
  495. package/dist/wiki/engine/errors/SP0399.md +20 -0
  496. package/dist/wiki/engine/errors/SP0400.md +20 -0
  497. package/dist/wiki/engine/errors/SP0401.md +20 -0
  498. package/dist/wiki/engine/errors/SP0402.md +20 -0
  499. package/dist/wiki/engine/errors/SP0403.md +20 -0
  500. package/dist/wiki/engine/errors/SP0404.md +20 -0
  501. package/dist/wiki/engine/errors/SP0405.md +20 -0
  502. package/dist/wiki/engine/errors/SP0406.md +20 -0
  503. package/dist/wiki/engine/errors/SP0407.md +20 -0
  504. package/dist/wiki/engine/errors/SP0408.md +20 -0
  505. package/dist/wiki/engine/errors/SP0409.md +20 -0
  506. package/dist/wiki/engine/errors/SP0410.md +20 -0
  507. package/dist/wiki/engine/errors/SP0411.md +20 -0
  508. package/dist/wiki/engine/errors/SP0412.md +20 -0
  509. package/dist/wiki/engine/errors/SP0413.md +20 -0
  510. package/dist/wiki/engine/errors/SP0414.md +20 -0
  511. package/dist/wiki/engine/errors/SP0415.md +20 -0
  512. package/dist/wiki/engine/errors/SP0416.md +20 -0
  513. package/dist/wiki/engine/errors/SP0417.md +20 -0
  514. package/dist/wiki/engine/errors/SP0418.md +20 -0
  515. package/dist/wiki/engine/errors/SP0419.md +20 -0
  516. package/dist/wiki/engine/errors/SP0420.md +20 -0
  517. package/dist/wiki/engine/errors/SP0421.md +20 -0
  518. package/dist/wiki/engine/errors/SP0422.md +20 -0
  519. package/dist/wiki/engine/errors/SP0423.md +20 -0
  520. package/dist/wiki/engine/errors/SP0427.md +20 -0
  521. package/dist/wiki/engine/errors/SP0428.md +20 -0
  522. package/dist/wiki/engine/errors/SP0429.md +20 -0
  523. package/dist/wiki/engine/errors/SP0430.md +20 -0
  524. package/dist/wiki/engine/errors/SP0431.md +20 -0
  525. package/dist/wiki/engine/errors/SP0432.md +20 -0
  526. package/dist/wiki/engine/errors/SP0433.md +20 -0
  527. package/dist/wiki/engine/errors/SP0434.md +20 -0
  528. package/dist/wiki/engine/errors/SP0435.md +20 -0
  529. package/dist/wiki/engine/errors/SP0436.md +20 -0
  530. package/dist/wiki/engine/errors/SP0437.md +20 -0
  531. package/dist/wiki/engine/errors/SP0438.md +20 -0
  532. package/dist/wiki/engine/errors/SP0439.md +20 -0
  533. package/dist/wiki/engine/errors/SP0440.md +20 -0
  534. package/dist/wiki/engine/errors/SP0442.md +20 -0
  535. package/dist/wiki/engine/errors/SP0443.md +20 -0
  536. package/dist/wiki/engine/errors/SP0444.md +20 -0
  537. package/dist/wiki/engine/errors/SP0445.md +20 -0
  538. package/dist/wiki/engine/errors/SP0446.md +20 -0
  539. package/dist/wiki/engine/errors/SP0447.md +20 -0
  540. package/dist/wiki/engine/errors/SP0448.md +20 -0
  541. package/dist/wiki/engine/errors/SP0449.md +20 -0
  542. package/dist/wiki/engine/errors/SP0450.md +20 -0
  543. package/dist/wiki/engine/errors/SP0451.md +20 -0
  544. package/dist/wiki/engine/errors/SP0452.md +20 -0
  545. package/dist/wiki/engine/errors/SP0453.md +20 -0
  546. package/dist/wiki/engine/errors/SP0454.md +20 -0
  547. package/dist/wiki/engine/errors/SP0455.md +20 -0
  548. package/dist/wiki/engine/errors/SP0456.md +20 -0
  549. package/dist/wiki/engine/errors/SP0457.md +20 -0
  550. package/dist/wiki/engine/errors/SP0458.md +20 -0
  551. package/dist/wiki/engine/errors/SP0459.md +20 -0
  552. package/dist/wiki/engine/errors/SP0460.md +20 -0
  553. package/dist/wiki/engine/errors/SP0461.md +20 -0
  554. package/dist/wiki/engine/errors/SP0462.md +20 -0
  555. package/dist/wiki/engine/errors/SP0463.md +20 -0
  556. package/dist/wiki/engine/errors/SP0464.md +20 -0
  557. package/dist/wiki/engine/errors/SP0465.md +20 -0
  558. package/dist/wiki/engine/errors/SP0466.md +20 -0
  559. package/dist/wiki/engine/errors/SP0467.md +20 -0
  560. package/dist/wiki/engine/errors/SP0468.md +20 -0
  561. package/dist/wiki/engine/errors/SP0469.md +20 -0
  562. package/dist/wiki/engine/errors/SP0470.md +20 -0
  563. package/dist/wiki/engine/errors/SP0471.md +20 -0
  564. package/dist/wiki/engine/errors/SP0472.md +20 -0
  565. package/dist/wiki/engine/errors/SP0473.md +20 -0
  566. package/dist/wiki/engine/errors/SP0474.md +20 -0
  567. package/dist/wiki/engine/errors/SP0475.md +20 -0
  568. package/dist/wiki/engine/errors/SP0476.md +20 -0
  569. package/dist/wiki/engine/errors/SP0477.md +20 -0
  570. package/dist/wiki/engine/errors/SP0478.md +20 -0
  571. package/dist/wiki/engine/errors/SP0479.md +20 -0
  572. package/dist/wiki/engine/errors/SP0480.md +20 -0
  573. package/dist/wiki/engine/errors/SP0481.md +20 -0
  574. package/dist/wiki/engine/errors/SP0482.md +20 -0
  575. package/dist/wiki/engine/errors/SP0483.md +20 -0
  576. package/dist/wiki/engine/errors/SP0484.md +20 -0
  577. package/dist/wiki/engine/errors/SP0497.md +20 -0
  578. package/dist/wiki/engine/errors/SP0498.md +20 -0
  579. package/dist/wiki/engine/errors/SP0500.md +20 -0
  580. package/dist/wiki/engine/errors/SP0501.md +20 -0
  581. package/dist/wiki/engine/errors/SP0502.md +20 -0
  582. package/dist/wiki/engine/errors/SP0503.md +20 -0
  583. package/dist/wiki/engine/errors/SP0504.md +20 -0
  584. package/dist/wiki/engine/errors/SP0505.md +20 -0
  585. package/dist/wiki/engine/errors/SP0506.md +20 -0
  586. package/dist/wiki/engine/errors/SP0507.md +20 -0
  587. package/dist/wiki/engine/errors/SP0508.md +20 -0
  588. package/dist/wiki/engine/errors/SP0509.md +20 -0
  589. package/dist/wiki/engine/errors/SP0510.md +20 -0
  590. package/dist/wiki/engine/errors/SP0511.md +20 -0
  591. package/dist/wiki/engine/errors/SP0512.md +20 -0
  592. package/dist/wiki/engine/errors/SP0513.md +20 -0
  593. package/dist/wiki/engine/errors/SP0514.md +20 -0
  594. package/dist/wiki/engine/errors/SP0515.md +20 -0
  595. package/dist/wiki/engine/errors/SP0516.md +20 -0
  596. package/dist/wiki/engine/errors/SP0517.md +20 -0
  597. package/dist/wiki/engine/errors/SP0518.md +20 -0
  598. package/dist/wiki/engine/errors/SP0519.md +20 -0
  599. package/dist/wiki/engine/errors/SP0520.md +20 -0
  600. package/dist/wiki/engine/errors/SP0521.md +20 -0
  601. package/dist/wiki/engine/errors/SP0522.md +20 -0
  602. package/dist/wiki/engine/errors/SP0523.md +20 -0
  603. package/dist/wiki/engine/errors/SP0524.md +20 -0
  604. package/dist/wiki/engine/errors/SP0525.md +20 -0
  605. package/dist/wiki/engine/errors/SP0526.md +20 -0
  606. package/dist/wiki/engine/errors/SP0527.md +20 -0
  607. package/dist/wiki/engine/errors/SP0528.md +20 -0
  608. package/dist/wiki/engine/errors/SP0529.md +20 -0
  609. package/dist/wiki/engine/errors/SP0530.md +20 -0
  610. package/dist/wiki/engine/errors/SP0531.md +20 -0
  611. package/dist/wiki/engine/errors/SP0532.md +20 -0
  612. package/dist/wiki/engine/errors/SP0533.md +20 -0
  613. package/dist/wiki/engine/errors/SP0534.md +20 -0
  614. package/dist/wiki/engine/errors/SP0535.md +20 -0
  615. package/dist/wiki/engine/errors/SP0536.md +20 -0
  616. package/dist/wiki/engine/errors/SP0537.md +20 -0
  617. package/dist/wiki/engine/errors/SP0538.md +20 -0
  618. package/dist/wiki/engine/errors/SP0539.md +20 -0
  619. package/dist/wiki/engine/errors/SP0540.md +20 -0
  620. package/dist/wiki/engine/errors/SP0541.md +20 -0
  621. package/dist/wiki/engine/errors/SP0542.md +20 -0
  622. package/dist/wiki/engine/errors/SP0543.md +20 -0
  623. package/dist/wiki/engine/errors/SP0545.md +20 -0
  624. package/dist/wiki/engine/errors/SP0546.md +20 -0
  625. package/dist/wiki/engine/errors/SP0547.md +20 -0
  626. package/dist/wiki/engine/errors/SP0548.md +20 -0
  627. package/dist/wiki/engine/errors/SP0549.md +20 -0
  628. package/dist/wiki/engine/errors/SP0550.md +20 -0
  629. package/dist/wiki/engine/errors/SP0551.md +20 -0
  630. package/dist/wiki/engine/errors/SP0552.md +20 -0
  631. package/dist/wiki/engine/errors/SP0553.md +20 -0
  632. package/dist/wiki/engine/errors/SP0554.md +20 -0
  633. package/dist/wiki/engine/errors/SP0555.md +20 -0
  634. package/dist/wiki/engine/errors/SP0556.md +20 -0
  635. package/dist/wiki/engine/errors/SP0557.md +20 -0
  636. package/dist/wiki/engine/errors/SP0558.md +20 -0
  637. package/dist/wiki/engine/errors/SP0559.md +20 -0
  638. package/dist/wiki/engine/errors/SP0560.md +20 -0
  639. package/dist/wiki/engine/errors/SP0561.md +20 -0
  640. package/dist/wiki/engine/errors/SP0562.md +20 -0
  641. package/dist/wiki/engine/errors/SP0563.md +20 -0
  642. package/dist/wiki/engine/errors/SP0564.md +20 -0
  643. package/dist/wiki/engine/errors/SP0565.md +20 -0
  644. package/dist/wiki/engine/errors/SP0566.md +20 -0
  645. package/dist/wiki/engine/errors/SP0567.md +20 -0
  646. package/dist/wiki/engine/errors/SP0568.md +20 -0
  647. package/dist/wiki/engine/errors/SP0569.md +20 -0
  648. package/dist/wiki/engine/errors/SP0570.md +20 -0
  649. package/dist/wiki/engine/errors/index.md +504 -0
  650. package/dist/wiki/engine/graphics/crt-material.md +64 -0
  651. package/dist/wiki/engine/graphics/energy-orb-material.md +52 -0
  652. package/dist/wiki/engine/graphics/instanced-model.md +89 -0
  653. package/dist/wiki/engine/graphics/looks.md +196 -0
  654. package/dist/wiki/engine/graphics/particles.md +185 -0
  655. package/dist/wiki/engine/graphics/portal-material.md +49 -0
  656. package/dist/wiki/engine/graphics/post-processing.md +130 -0
  657. package/dist/wiki/engine/graphics/renderer.md +103 -0
  658. package/dist/wiki/engine/graphics/shader.md +331 -0
  659. package/dist/wiki/engine/graphics/skinned-batch.md +115 -0
  660. package/dist/wiki/engine/graphics/track-scatter.md +124 -0
  661. package/dist/wiki/engine/graphics/track-surface.md +107 -0
  662. package/dist/wiki/engine/graphics/water-material.md +60 -0
  663. package/dist/wiki/engine/graphics/webgpu.md +87 -0
  664. package/dist/wiki/engine/structure/game.md +301 -0
  665. package/dist/wiki/engine/structure/levels.md +239 -0
  666. package/dist/wiki/engine/structure/plugins.md +423 -0
  667. package/dist/wiki/engine/structure/round.md +229 -0
  668. package/dist/wiki/engine/structure/saves.md +251 -0
  669. package/dist/wiki/engine/structure/scene.md +69 -0
  670. package/dist/wiki/engine/structure/states.md +202 -0
  671. package/dist/wiki/engine/structure/systems.md +242 -0
  672. package/dist/wiki/engine/structure/track-level.md +73 -0
  673. package/dist/wiki/engine/structure/world.md +371 -0
  674. package/dist/wiki/engine/testing/agent-state.md +131 -0
  675. package/dist/wiki/engine/testing/dev-server.md +101 -0
  676. package/dist/wiki/engine/testing/devtools-wiki.md +80 -0
  677. package/dist/wiki/engine/testing/devtools.md +143 -0
  678. package/dist/wiki/engine/testing/directing.md +125 -0
  679. package/dist/wiki/engine/testing/director.md +285 -0
  680. package/dist/wiki/engine/testing/editing.md +71 -0
  681. package/dist/wiki/engine/testing/errors.md +146 -0
  682. package/dist/wiki/engine/testing/frame.md +175 -0
  683. package/dist/wiki/engine/testing/headless.md +133 -0
  684. package/dist/wiki/engine/testing/hitches.md +140 -0
  685. package/dist/wiki/engine/testing/joins.md +129 -0
  686. package/dist/wiki/engine/testing/measuring.md +97 -0
  687. package/dist/wiki/engine/testing/performance.md +48 -0
  688. package/dist/wiki/engine/testing/processes.md +87 -0
  689. package/dist/wiki/engine/testing/replay-storage.md +156 -0
  690. package/dist/wiki/engine/testing/replay.md +230 -0
  691. package/dist/wiki/engine/testing/runs.md +162 -0
  692. package/dist/wiki/engine/testing/which-tool.md +155 -0
  693. package/dist/wiki/engine/ui/action-bar.md +121 -0
  694. package/dist/wiki/engine/ui/bar.md +54 -0
  695. package/dist/wiki/engine/ui/billboard.md +64 -0
  696. package/dist/wiki/engine/ui/button.md +69 -0
  697. package/dist/wiki/engine/ui/controls.md +131 -0
  698. package/dist/wiki/engine/ui/counter.md +40 -0
  699. package/dist/wiki/engine/ui/devtools-panel.md +69 -0
  700. package/dist/wiki/engine/ui/drag-and-drop.md +134 -0
  701. package/dist/wiki/engine/ui/floating-text.md +129 -0
  702. package/dist/wiki/engine/ui/graphics-quality.md +254 -0
  703. package/dist/wiki/engine/ui/heading.md +43 -0
  704. package/dist/wiki/engine/ui/hud.md +100 -0
  705. package/dist/wiki/engine/ui/icon.md +34 -0
  706. package/dist/wiki/engine/ui/image.md +38 -0
  707. package/dist/wiki/engine/ui/index.md +59 -0
  708. package/dist/wiki/engine/ui/joystick.md +32 -0
  709. package/dist/wiki/engine/ui/modal.md +95 -0
  710. package/dist/wiki/engine/ui/panel.md +100 -0
  711. package/dist/wiki/engine/ui/settings.md +303 -0
  712. package/dist/wiki/engine/ui/tap.md +33 -0
  713. package/dist/wiki/engine/ui/text.md +56 -0
  714. package/dist/wiki/engine/ui/theme.md +119 -0
  715. package/dist/wiki/engine/ui/window.md +68 -0
  716. package/dist/wmIDrLkF.js +1 -0
  717. package/dist/yhuZzG90.js +1 -0
  718. package/dist/z3YXvfLT.js +1 -0
  719. package/dist-browser/@pixiv/three-vrm/nodes.js +1 -0
  720. package/dist-browser/@pixiv/three-vrm.js +1 -0
  721. package/dist-browser/@react-three/drei/exports/-accumulative-shadows.js +1 -0
  722. package/dist-browser/@react-three/drei/exports/-adaptive-dpr.js +1 -0
  723. package/dist-browser/@react-three/drei/exports/-adaptive-events.js +1 -0
  724. package/dist-browser/@react-three/drei/exports/-arcball-controls.js +1 -0
  725. package/dist-browser/@react-three/drei/exports/-ascii-renderer.js +1 -0
  726. package/dist-browser/@react-three/drei/exports/-b-b-anchor.js +1 -0
  727. package/dist-browser/@react-three/drei/exports/-backdrop.js +1 -0
  728. package/dist-browser/@react-three/drei/exports/-bake-shadows.js +1 -0
  729. package/dist-browser/@react-three/drei/exports/-billboard.js +1 -0
  730. package/dist-browser/@react-three/drei/exports/-bounds.js +1 -0
  731. package/dist-browser/@react-three/drei/exports/-box.js +1 -0
  732. package/dist-browser/@react-three/drei/exports/-bvh.js +1 -0
  733. package/dist-browser/@react-three/drei/exports/-camera-controls-impl.js +1 -0
  734. package/dist-browser/@react-three/drei/exports/-camera-controls.js +1 -0
  735. package/dist-browser/@react-three/drei/exports/-camera-shake.js +1 -0
  736. package/dist-browser/@react-three/drei/exports/-capsule.js +1 -0
  737. package/dist-browser/@react-three/drei/exports/-catmull-rom-line.js +1 -0
  738. package/dist-browser/@react-three/drei/exports/-caustics.js +1 -0
  739. package/dist-browser/@react-three/drei/exports/-center.js +1 -0
  740. package/dist-browser/@react-three/drei/exports/-circle.js +1 -0
  741. package/dist-browser/@react-three/drei/exports/-clone.js +1 -0
  742. package/dist-browser/@react-three/drei/exports/-cloud-instance.js +1 -0
  743. package/dist-browser/@react-three/drei/exports/-cloud.js +1 -0
  744. package/dist-browser/@react-three/drei/exports/-clouds.js +1 -0
  745. package/dist-browser/@react-three/drei/exports/-computed-attribute.js +1 -0
  746. package/dist-browser/@react-three/drei/exports/-cone.js +1 -0
  747. package/dist-browser/@react-three/drei/exports/-contact-shadows.js +1 -0
  748. package/dist-browser/@react-three/drei/exports/-cube-camera.js +1 -0
  749. package/dist-browser/@react-three/drei/exports/-cube-texture.js +1 -0
  750. package/dist-browser/@react-three/drei/exports/-cubic-bezier-line.js +1 -0
  751. package/dist-browser/@react-three/drei/exports/-curve-modifier.js +1 -0
  752. package/dist-browser/@react-three/drei/exports/-cycle-raycast.js +1 -0
  753. package/dist-browser/@react-three/drei/exports/-cylinder.js +1 -0
  754. package/dist-browser/@react-three/drei/exports/-decal.js +1 -0
  755. package/dist-browser/@react-three/drei/exports/-detailed.js +1 -0
  756. package/dist-browser/@react-three/drei/exports/-detect-g-p-u.js +1 -0
  757. package/dist-browser/@react-three/drei/exports/-device-orientation-controls.js +1 -0
  758. package/dist-browser/@react-three/drei/exports/-dodecahedron.js +1 -0
  759. package/dist-browser/@react-three/drei/exports/-drag-controls.js +1 -0
  760. package/dist-browser/@react-three/drei/exports/-edges.js +1 -0
  761. package/dist-browser/@react-three/drei/exports/-effects.js +1 -0
  762. package/dist-browser/@react-three/drei/exports/-environment-cube.js +1 -0
  763. package/dist-browser/@react-three/drei/exports/-environment-map.js +1 -0
  764. package/dist-browser/@react-three/drei/exports/-environment-portal.js +1 -0
  765. package/dist-browser/@react-three/drei/exports/-environment.js +1 -0
  766. package/dist-browser/@react-three/drei/exports/-example.js +1 -0
  767. package/dist-browser/@react-three/drei/exports/-extrude.js +1 -0
  768. package/dist-browser/@react-three/drei/exports/-face-controls.js +1 -0
  769. package/dist-browser/@react-three/drei/exports/-face-landmarker-defaults.js +1 -0
  770. package/dist-browser/@react-three/drei/exports/-face-landmarker.js +1 -0
  771. package/dist-browser/@react-three/drei/exports/-facemesh-datas.js +1 -0
  772. package/dist-browser/@react-three/drei/exports/-facemesh-eye-defaults.js +1 -0
  773. package/dist-browser/@react-three/drei/exports/-facemesh-eye.js +1 -0
  774. package/dist-browser/@react-three/drei/exports/-facemesh.js +1 -0
  775. package/dist-browser/@react-three/drei/exports/-fbo.js +1 -0
  776. package/dist-browser/@react-three/drei/exports/-fbx.js +1 -0
  777. package/dist-browser/@react-three/drei/exports/-first-person-controls.js +1 -0
  778. package/dist-browser/@react-three/drei/exports/-fisheye.js +1 -0
  779. package/dist-browser/@react-three/drei/exports/-float.js +1 -0
  780. package/dist-browser/@react-three/drei/exports/-fly-controls.js +1 -0
  781. package/dist-browser/@react-three/drei/exports/-gizmo-helper.js +1 -0
  782. package/dist-browser/@react-three/drei/exports/-gizmo-viewcube.js +1 -0
  783. package/dist-browser/@react-three/drei/exports/-gizmo-viewport.js +1 -0
  784. package/dist-browser/@react-three/drei/exports/-gltf.js +1 -0
  785. package/dist-browser/@react-three/drei/exports/-gradient-texture.js +1 -0
  786. package/dist-browser/@react-three/drei/exports/-gradient-type.js +1 -0
  787. package/dist-browser/@react-three/drei/exports/-grid.js +1 -0
  788. package/dist-browser/@react-three/drei/exports/-helper.js +1 -0
  789. package/dist-browser/@react-three/drei/exports/-html.js +1 -0
  790. package/dist-browser/@react-three/drei/exports/-hud.js +1 -0
  791. package/dist-browser/@react-three/drei/exports/-icosahedron.js +1 -0
  792. package/dist-browser/@react-three/drei/exports/-image.js +1 -0
  793. package/dist-browser/@react-three/drei/exports/-instance.js +1 -0
  794. package/dist-browser/@react-three/drei/exports/-instanced-attribute.js +1 -0
  795. package/dist-browser/@react-three/drei/exports/-instances.js +1 -0
  796. package/dist-browser/@react-three/drei/exports/-is-object.js +1 -0
  797. package/dist-browser/@react-three/drei/exports/-keyboard-controls.js +1 -0
  798. package/dist-browser/@react-three/drei/exports/-ktx2.js +1 -0
  799. package/dist-browser/@react-three/drei/exports/-lathe.js +1 -0
  800. package/dist-browser/@react-three/drei/exports/-lightformer.js +1 -0
  801. package/dist-browser/@react-three/drei/exports/-line.js +1 -0
  802. package/dist-browser/@react-three/drei/exports/-loader.js +1 -0
  803. package/dist-browser/@react-three/drei/exports/-map-controls.js +1 -0
  804. package/dist-browser/@react-three/drei/exports/-marching-cube.js +1 -0
  805. package/dist-browser/@react-three/drei/exports/-marching-cubes.js +1 -0
  806. package/dist-browser/@react-three/drei/exports/-marching-plane.js +1 -0
  807. package/dist-browser/@react-three/drei/exports/-mask.js +1 -0
  808. package/dist-browser/@react-three/drei/exports/-matcap-texture.js +1 -0
  809. package/dist-browser/@react-three/drei/exports/-merged.js +1 -0
  810. package/dist-browser/@react-three/drei/exports/-mesh-discard-material.js +1 -0
  811. package/dist-browser/@react-three/drei/exports/-mesh-distort-material.js +1 -0
  812. package/dist-browser/@react-three/drei/exports/-mesh-portal-material.js +1 -0
  813. package/dist-browser/@react-three/drei/exports/-mesh-reflector-material.js +1 -0
  814. package/dist-browser/@react-three/drei/exports/-mesh-refraction-material.js +1 -0
  815. package/dist-browser/@react-three/drei/exports/-mesh-transmission-material.js +1 -0
  816. package/dist-browser/@react-three/drei/exports/-mesh-wobble-material.js +1 -0
  817. package/dist-browser/@react-three/drei/exports/-motion-path-controls.js +1 -0
  818. package/dist-browser/@react-three/drei/exports/-multi-material.js +1 -0
  819. package/dist-browser/@react-three/drei/exports/-normal-texture.js +1 -0
  820. package/dist-browser/@react-three/drei/exports/-octahedron.js +1 -0
  821. package/dist-browser/@react-three/drei/exports/-orbit-controls.js +1 -0
  822. package/dist-browser/@react-three/drei/exports/-orthographic-camera.js +1 -0
  823. package/dist-browser/@react-three/drei/exports/-outlines.js +1 -0
  824. package/dist-browser/@react-three/drei/exports/-performance-monitor.js +1 -0
  825. package/dist-browser/@react-three/drei/exports/-perspective-camera.js +1 -0
  826. package/dist-browser/@react-three/drei/exports/-pivot-controls.js +1 -0
  827. package/dist-browser/@react-three/drei/exports/-plane.js +1 -0
  828. package/dist-browser/@react-three/drei/exports/-point-material-impl.js +1 -0
  829. package/dist-browser/@react-three/drei/exports/-point-material.js +1 -0
  830. package/dist-browser/@react-three/drei/exports/-point.js +1 -0
  831. package/dist-browser/@react-three/drei/exports/-pointer-lock-controls.js +1 -0
  832. package/dist-browser/@react-three/drei/exports/-points-buffer.js +1 -0
  833. package/dist-browser/@react-three/drei/exports/-points.js +1 -0
  834. package/dist-browser/@react-three/drei/exports/-polyhedron.js +1 -0
  835. package/dist-browser/@react-three/drei/exports/-position-mesh.js +1 -0
  836. package/dist-browser/@react-three/drei/exports/-position-point.js +1 -0
  837. package/dist-browser/@react-three/drei/exports/-positional-audio.js +1 -0
  838. package/dist-browser/@react-three/drei/exports/-preload.js +1 -0
  839. package/dist-browser/@react-three/drei/exports/-presentation-controls.js +1 -0
  840. package/dist-browser/@react-three/drei/exports/-progress.js +1 -0
  841. package/dist-browser/@react-three/drei/exports/-quadratic-bezier-line.js +1 -0
  842. package/dist-browser/@react-three/drei/exports/-randomized-light.js +1 -0
  843. package/dist-browser/@react-three/drei/exports/-render-cube-texture.js +1 -0
  844. package/dist-browser/@react-three/drei/exports/-render-texture.js +1 -0
  845. package/dist-browser/@react-three/drei/exports/-resize.js +1 -0
  846. package/dist-browser/@react-three/drei/exports/-ring.js +1 -0
  847. package/dist-browser/@react-three/drei/exports/-rounded-box-geometry.js +1 -0
  848. package/dist-browser/@react-three/drei/exports/-rounded-box.js +1 -0
  849. package/dist-browser/@react-three/drei/exports/-sampler.js +1 -0
  850. package/dist-browser/@react-three/drei/exports/-screen-quad.js +1 -0
  851. package/dist-browser/@react-three/drei/exports/-screen-sizer.js +1 -0
  852. package/dist-browser/@react-three/drei/exports/-screen-space.js +1 -0
  853. package/dist-browser/@react-three/drei/exports/-screen-video-texture.js +1 -0
  854. package/dist-browser/@react-three/drei/exports/-scroll-controls.js +1 -0
  855. package/dist-browser/@react-three/drei/exports/-scroll.js +1 -0
  856. package/dist-browser/@react-three/drei/exports/-segment-object.js +1 -0
  857. package/dist-browser/@react-three/drei/exports/-segment.js +1 -0
  858. package/dist-browser/@react-three/drei/exports/-segments.js +1 -0
  859. package/dist-browser/@react-three/drei/exports/-select.js +1 -0
  860. package/dist-browser/@react-three/drei/exports/-shadow-alpha.js +1 -0
  861. package/dist-browser/@react-three/drei/exports/-shadow.js +1 -0
  862. package/dist-browser/@react-three/drei/exports/-shape.js +1 -0
  863. package/dist-browser/@react-three/drei/exports/-sky.js +1 -0
  864. package/dist-browser/@react-three/drei/exports/-soft-shadows.js +1 -0
  865. package/dist-browser/@react-three/drei/exports/-sparkles.js +1 -0
  866. package/dist-browser/@react-three/drei/exports/-sphere.js +1 -0
  867. package/dist-browser/@react-three/drei/exports/-splat.js +1 -0
  868. package/dist-browser/@react-three/drei/exports/-spot-light-shadow.js +1 -0
  869. package/dist-browser/@react-three/drei/exports/-spot-light.js +1 -0
  870. package/dist-browser/@react-three/drei/exports/-sprite-animator.js +1 -0
  871. package/dist-browser/@react-three/drei/exports/-stage.js +1 -0
  872. package/dist-browser/@react-three/drei/exports/-stars.js +1 -0
  873. package/dist-browser/@react-three/drei/exports/-stats-gl.js +1 -0
  874. package/dist-browser/@react-three/drei/exports/-stats.js +1 -0
  875. package/dist-browser/@react-three/drei/exports/-svg.js +1 -0
  876. package/dist-browser/@react-three/drei/exports/-tetrahedron.js +1 -0
  877. package/dist-browser/@react-three/drei/exports/-text.js +1 -0
  878. package/dist-browser/@react-three/drei/exports/-text3-d.js +1 -0
  879. package/dist-browser/@react-three/drei/exports/-texture.js +1 -0
  880. package/dist-browser/@react-three/drei/exports/-torus-knot.js +1 -0
  881. package/dist-browser/@react-three/drei/exports/-torus.js +1 -0
  882. package/dist-browser/@react-three/drei/exports/-trackball-controls.js +1 -0
  883. package/dist-browser/@react-three/drei/exports/-trail-texture.js +1 -0
  884. package/dist-browser/@react-three/drei/exports/-trail.js +1 -0
  885. package/dist-browser/@react-three/drei/exports/-transform-controls.js +1 -0
  886. package/dist-browser/@react-three/drei/exports/-tube.js +1 -0
  887. package/dist-browser/@react-three/drei/exports/-video-texture.js +1 -0
  888. package/dist-browser/@react-three/drei/exports/-view.js +1 -0
  889. package/dist-browser/@react-three/drei/exports/-webcam-video-texture.js +1 -0
  890. package/dist-browser/@react-three/drei/exports/-wireframe.js +1 -0
  891. package/dist-browser/@react-three/drei/exports/accumulative-context.js +1 -0
  892. package/dist-browser/@react-three/drei/exports/calc-pos-from-angles.js +1 -0
  893. package/dist-browser/@react-three/drei/exports/calculate-scale-factor.js +1 -0
  894. package/dist-browser/@react-three/drei/exports/check-if-frame-is-empty.js +1 -0
  895. package/dist-browser/@react-three/drei/exports/create-instances.js +1 -0
  896. package/dist-browser/@react-three/drei/exports/get-first-frame.js +1 -0
  897. package/dist-browser/@react-three/drei/exports/is-web-g-l2-available.js +1 -0
  898. package/dist-browser/@react-three/drei/exports/mesh-bounds.js +1 -0
  899. package/dist-browser/@react-three/drei/exports/shader-material.js +1 -0
  900. package/dist-browser/@react-three/drei/exports/use-animations.js +1 -0
  901. package/dist-browser/@react-three/drei/exports/use-aspect.js +1 -0
  902. package/dist-browser/@react-three/drei/exports/use-b-v-h.js +1 -0
  903. package/dist-browser/@react-three/drei/exports/use-bounds.js +1 -0
  904. package/dist-browser/@react-three/drei/exports/use-box-projected-env.js +1 -0
  905. package/dist-browser/@react-three/drei/exports/use-camera.js +1 -0
  906. package/dist-browser/@react-three/drei/exports/use-context-bridge.js +1 -0
  907. package/dist-browser/@react-three/drei/exports/use-cube-camera.js +1 -0
  908. package/dist-browser/@react-three/drei/exports/use-cube-texture.js +1 -0
  909. package/dist-browser/@react-three/drei/exports/use-cursor.js +1 -0
  910. package/dist-browser/@react-three/drei/exports/use-depth-buffer.js +1 -0
  911. package/dist-browser/@react-three/drei/exports/use-detect-g-p-u.js +1 -0
  912. package/dist-browser/@react-three/drei/exports/use-environment.js +1 -0
  913. package/dist-browser/@react-three/drei/exports/use-f-b-o.js +1 -0
  914. package/dist-browser/@react-three/drei/exports/use-f-b-x.js +1 -0
  915. package/dist-browser/@react-three/drei/exports/use-face-controls.js +1 -0
  916. package/dist-browser/@react-three/drei/exports/use-face-landmarker.js +1 -0
  917. package/dist-browser/@react-three/drei/exports/use-font.js +1 -0
  918. package/dist-browser/@react-three/drei/exports/use-g-l-t-f.js +1 -0
  919. package/dist-browser/@react-three/drei/exports/use-gizmo-context.js +1 -0
  920. package/dist-browser/@react-three/drei/exports/use-helper.js +1 -0
  921. package/dist-browser/@react-three/drei/exports/use-intersect.js +1 -0
  922. package/dist-browser/@react-three/drei/exports/use-k-t-x2.js +1 -0
  923. package/dist-browser/@react-three/drei/exports/use-keyboard-controls.js +1 -0
  924. package/dist-browser/@react-three/drei/exports/use-mask.js +1 -0
  925. package/dist-browser/@react-three/drei/exports/use-matcap-texture.js +1 -0
  926. package/dist-browser/@react-three/drei/exports/use-motion.js +1 -0
  927. package/dist-browser/@react-three/drei/exports/use-normal-texture.js +1 -0
  928. package/dist-browser/@react-three/drei/exports/use-performance-monitor.js +1 -0
  929. package/dist-browser/@react-three/drei/exports/use-progress.js +1 -0
  930. package/dist-browser/@react-three/drei/exports/use-scroll.js +1 -0
  931. package/dist-browser/@react-three/drei/exports/use-select.js +1 -0
  932. package/dist-browser/@react-three/drei/exports/use-sprite-animator.js +1 -0
  933. package/dist-browser/@react-three/drei/exports/use-sprite-loader.js +1 -0
  934. package/dist-browser/@react-three/drei/exports/use-surface-sampler.js +1 -0
  935. package/dist-browser/@react-three/drei/exports/use-texture.js +1 -0
  936. package/dist-browser/@react-three/drei/exports/use-trail-texture.js +1 -0
  937. package/dist-browser/@react-three/drei/exports/use-trail.js +1 -0
  938. package/dist-browser/@react-three/drei/exports/use-video-texture.js +1 -0
  939. package/dist-browser/@react-three/drei.js +1 -0
  940. package/dist-browser/@react-three/fiber.js +1 -0
  941. package/dist-browser/@react-three/postprocessing.js +1 -0
  942. package/dist-browser/@spawnite/engine/abilities.js +1 -0
  943. package/dist-browser/@spawnite/engine/core.js +1 -0
  944. package/dist-browser/@spawnite/engine/dragAndDrop.js +1 -0
  945. package/dist-browser/@spawnite/engine/inventory.js +1 -0
  946. package/dist-browser/@spawnite/engine/looks/dusk.js +1 -0
  947. package/dist-browser/@spawnite/engine/looks/morning.js +1 -0
  948. package/dist-browser/@spawnite/engine/looks/night.js +1 -0
  949. package/dist-browser/@spawnite/engine/looks/noon.js +1 -0
  950. package/dist-browser/@spawnite/engine/looks/overcast.js +1 -0
  951. package/dist-browser/@spawnite/engine/npcs.js +1 -0
  952. package/dist-browser/@spawnite/engine/rounds.js +1 -0
  953. package/dist-browser/@spawnite/engine/three.js +1 -0
  954. package/dist-browser/@spawnite/engine/tracks.js +1 -0
  955. package/dist-browser/@spawnite/engine/weapons.js +1 -0
  956. package/dist-browser/@spawnite/engine.js +376 -0
  957. package/dist-browser/@spawnite/schema/exports/-agent-state.js +1 -0
  958. package/dist-browser/@spawnite/schema/exports/-app-message-type.js +1 -0
  959. package/dist-browser/@spawnite/schema/exports/-channel-handshake.js +1 -0
  960. package/dist-browser/@spawnite/schema/exports/-clip-clock.js +1 -0
  961. package/dist-browser/@spawnite/schema/exports/-clip-record-action.js +1 -0
  962. package/dist-browser/@spawnite/schema/exports/-clip-shape.js +1 -0
  963. package/dist-browser/@spawnite/schema/exports/-collision-shape.js +1 -0
  964. package/dist-browser/@spawnite/schema/exports/-cover-kind.js +1 -0
  965. package/dist-browser/@spawnite/schema/exports/-credential-kind.js +1 -0
  966. package/dist-browser/@spawnite/schema/exports/-device-class.js +1 -0
  967. package/dist-browser/@spawnite/schema/exports/-engine-save-name.js +1 -0
  968. package/dist-browser/@spawnite/schema/exports/-favorite-kind.js +1 -0
  969. package/dist-browser/@spawnite/schema/exports/-model-style.js +1 -0
  970. package/dist-browser/@spawnite/schema/exports/-page-connection-status.js +1 -0
  971. package/dist-browser/@spawnite/schema/exports/-page-message-type.js +1 -0
  972. package/dist-browser/@spawnite/schema/exports/-performance-stats-mode.js +1 -0
  973. package/dist-browser/@spawnite/schema/exports/-prop-shape.js +1 -0
  974. package/dist-browser/@spawnite/schema/exports/-quality-group.js +1 -0
  975. package/dist-browser/@spawnite/schema/exports/-quality-level.js +1 -0
  976. package/dist-browser/@spawnite/schema/exports/-room-mode.js +1 -0
  977. package/dist-browser/@spawnite/schema/exports/-save-owner-change.js +1 -0
  978. package/dist-browser/@spawnite/schema/exports/-save-section.js +1 -0
  979. package/dist-browser/@spawnite/schema/exports/-scatter-family.js +1 -0
  980. package/dist-browser/@spawnite/schema/exports/-scatter-kind.js +1 -0
  981. package/dist-browser/@spawnite/schema/exports/-shot-angle.js +1 -0
  982. package/dist-browser/@spawnite/schema/exports/-voice-mode.js +1 -0
  983. package/dist-browser/@spawnite/schema/exports/-wiki-scope.js +1 -0
  984. package/dist-browser/@spawnite/schema/exports/add-asset-input.js +1 -0
  985. package/dist-browser/@spawnite/schema/exports/add-behaviour-input.js +1 -0
  986. package/dist-browser/@spawnite/schema/exports/add-dialog-input.js +1 -0
  987. package/dist-browser/@spawnite/schema/exports/add-entity-input.js +1 -0
  988. package/dist-browser/@spawnite/schema/exports/add-hud-input.js +1 -0
  989. package/dist-browser/@spawnite/schema/exports/add-item-input.js +1 -0
  990. package/dist-browser/@spawnite/schema/exports/add-map-input.js +1 -0
  991. package/dist-browser/@spawnite/schema/exports/add-npc-input.js +1 -0
  992. package/dist-browser/@spawnite/schema/exports/add-panel-input.js +1 -0
  993. package/dist-browser/@spawnite/schema/exports/add-scene-input.js +1 -0
  994. package/dist-browser/@spawnite/schema/exports/add-shader-input.js +1 -0
  995. package/dist-browser/@spawnite/schema/exports/agent-activity-event.js +1 -0
  996. package/dist-browser/@spawnite/schema/exports/agent-heartbeat-milliseconds.js +1 -0
  997. package/dist-browser/@spawnite/schema/exports/app-channel-version.js +1 -0
  998. package/dist-browser/@spawnite/schema/exports/app-credential.js +1 -0
  999. package/dist-browser/@spawnite/schema/exports/app-inset-edges.js +1 -0
  1000. package/dist-browser/@spawnite/schema/exports/app-insets.js +1 -0
  1001. package/dist-browser/@spawnite/schema/exports/app-message-versions.js +1 -0
  1002. package/dist-browser/@spawnite/schema/exports/app-message.js +1 -0
  1003. package/dist-browser/@spawnite/schema/exports/app-player.js +1 -0
  1004. package/dist-browser/@spawnite/schema/exports/app-settings-message.js +1 -0
  1005. package/dist-browser/@spawnite/schema/exports/asset-catalog.js +1 -0
  1006. package/dist-browser/@spawnite/schema/exports/asset-category.js +1 -0
  1007. package/dist-browser/@spawnite/schema/exports/asset-declaration.js +1 -0
  1008. package/dist-browser/@spawnite/schema/exports/asset-entry.js +1 -0
  1009. package/dist-browser/@spawnite/schema/exports/asset-filters.js +1 -0
  1010. package/dist-browser/@spawnite/schema/exports/asset-key.js +1 -0
  1011. package/dist-browser/@spawnite/schema/exports/asset-kind.js +1 -0
  1012. package/dist-browser/@spawnite/schema/exports/asset-licence.js +1 -0
  1013. package/dist-browser/@spawnite/schema/exports/asset-manifest.js +1 -0
  1014. package/dist-browser/@spawnite/schema/exports/asset-source.js +1 -0
  1015. package/dist-browser/@spawnite/schema/exports/asset-style.js +1 -0
  1016. package/dist-browser/@spawnite/schema/exports/asset-url.js +1 -0
  1017. package/dist-browser/@spawnite/schema/exports/assets-site.js +1 -0
  1018. package/dist-browser/@spawnite/schema/exports/brush-shapes.js +1 -0
  1019. package/dist-browser/@spawnite/schema/exports/build-save-manifest-entry.js +1 -0
  1020. package/dist-browser/@spawnite/schema/exports/bundle-file.js +1 -0
  1021. package/dist-browser/@spawnite/schema/exports/bundle-limits.js +1 -0
  1022. package/dist-browser/@spawnite/schema/exports/bundle-manifest-file.js +1 -0
  1023. package/dist-browser/@spawnite/schema/exports/bundle-manifest.js +1 -0
  1024. package/dist-browser/@spawnite/schema/exports/bundle-page-folder.js +1 -0
  1025. package/dist-browser/@spawnite/schema/exports/bundle-server-folder.js +1 -0
  1026. package/dist-browser/@spawnite/schema/exports/carried-setting-key-list.js +1 -0
  1027. package/dist-browser/@spawnite/schema/exports/carried-setting-keys.js +1 -0
  1028. package/dist-browser/@spawnite/schema/exports/carried-settings.js +1 -0
  1029. package/dist-browser/@spawnite/schema/exports/catalog-row.js +1 -0
  1030. package/dist-browser/@spawnite/schema/exports/cell-paint.js +1 -0
  1031. package/dist-browser/@spawnite/schema/exports/channel-connect.js +1 -0
  1032. package/dist-browser/@spawnite/schema/exports/channel-hello.js +1 -0
  1033. package/dist-browser/@spawnite/schema/exports/chat-folder-name.js +1 -0
  1034. package/dist-browser/@spawnite/schema/exports/chat-path.js +1 -0
  1035. package/dist-browser/@spawnite/schema/exports/chat-post.js +1 -0
  1036. package/dist-browser/@spawnite/schema/exports/chat-read-folder-name.js +1 -0
  1037. package/dist-browser/@spawnite/schema/exports/check-game-slug.js +1 -0
  1038. package/dist-browser/@spawnite/schema/exports/check-model-input.js +1 -0
  1039. package/dist-browser/@spawnite/schema/exports/check-save-migrations.js +1 -0
  1040. package/dist-browser/@spawnite/schema/exports/check-save-publish.js +1 -0
  1041. package/dist-browser/@spawnite/schema/exports/check-sound-input.js +1 -0
  1042. package/dist-browser/@spawnite/schema/exports/clip-finish.js +1 -0
  1043. package/dist-browser/@spawnite/schema/exports/clip-meta.js +1 -0
  1044. package/dist-browser/@spawnite/schema/exports/clip-name.js +1 -0
  1045. package/dist-browser/@spawnite/schema/exports/clips-folder-name.js +1 -0
  1046. package/dist-browser/@spawnite/schema/exports/clips-path.js +1 -0
  1047. package/dist-browser/@spawnite/schema/exports/compare-save-manifest-entries.js +1 -0
  1048. package/dist-browser/@spawnite/schema/exports/compare-shots-input.js +1 -0
  1049. package/dist-browser/@spawnite/schema/exports/component-name.js +1 -0
  1050. package/dist-browser/@spawnite/schema/exports/condition-seconds.js +1 -0
  1051. package/dist-browser/@spawnite/schema/exports/connection-message.js +1 -0
  1052. package/dist-browser/@spawnite/schema/exports/create-quality-schema.js +1 -0
  1053. package/dist-browser/@spawnite/schema/exports/create-site.js +1 -0
  1054. package/dist-browser/@spawnite/schema/exports/create-tagged-save-value-schema.js +1 -0
  1055. package/dist-browser/@spawnite/schema/exports/credential-versions.js +1 -0
  1056. package/dist-browser/@spawnite/schema/exports/day-hour.js +1 -0
  1057. package/dist-browser/@spawnite/schema/exports/day-length.js +1 -0
  1058. package/dist-browser/@spawnite/schema/exports/default-player-settings.js +1 -0
  1059. package/dist-browser/@spawnite/schema/exports/default-room-players.js +1 -0
  1060. package/dist-browser/@spawnite/schema/exports/default-room-send-rate.js +1 -0
  1061. package/dist-browser/@spawnite/schema/exports/describe-entity-input.js +1 -0
  1062. package/dist-browser/@spawnite/schema/exports/describe-map-input.js +1 -0
  1063. package/dist-browser/@spawnite/schema/exports/describe-save-publish-refusal.js +1 -0
  1064. package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-file.js +1 -0
  1065. package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-meta-name.js +1 -0
  1066. package/dist-browser/@spawnite/schema/exports/dev-saves-folder.js +1 -0
  1067. package/dist-browser/@spawnite/schema/exports/dev-server-file.js +1 -0
  1068. package/dist-browser/@spawnite/schema/exports/dev-server-prefix.js +1 -0
  1069. package/dist-browser/@spawnite/schema/exports/devtools-favorites.js +1 -0
  1070. package/dist-browser/@spawnite/schema/exports/devtools-presets.js +1 -0
  1071. package/dist-browser/@spawnite/schema/exports/direct-link.js +1 -0
  1072. package/dist-browser/@spawnite/schema/exports/edit-material-input.js +1 -0
  1073. package/dist-browser/@spawnite/schema/exports/edit-terrain-input.js +1 -0
  1074. package/dist-browser/@spawnite/schema/exports/engine-build-meta-name.js +1 -0
  1075. package/dist-browser/@spawnite/schema/exports/engine-build-path.js +1 -0
  1076. package/dist-browser/@spawnite/schema/exports/engine-label.js +1 -0
  1077. package/dist-browser/@spawnite/schema/exports/engine-origin.js +1 -0
  1078. package/dist-browser/@spawnite/schema/exports/engine-save-readers.js +1 -0
  1079. package/dist-browser/@spawnite/schema/exports/engine-save-schemas.js +1 -0
  1080. package/dist-browser/@spawnite/schema/exports/error-reports-config.js +1 -0
  1081. package/dist-browser/@spawnite/schema/exports/error-reports-meta-name.js +1 -0
  1082. package/dist-browser/@spawnite/schema/exports/error-reports-path.js +1 -0
  1083. package/dist-browser/@spawnite/schema/exports/favorite-field.js +1 -0
  1084. package/dist-browser/@spawnite/schema/exports/filter-assets.js +1 -0
  1085. package/dist-browser/@spawnite/schema/exports/find-particle-effect-excess.js +1 -0
  1086. package/dist-browser/@spawnite/schema/exports/find-room-settings-problems.js +1 -0
  1087. package/dist-browser/@spawnite/schema/exports/find-terrain-cell.js +1 -0
  1088. package/dist-browser/@spawnite/schema/exports/fingerprint-save-schema.js +1 -0
  1089. package/dist-browser/@spawnite/schema/exports/format-clip-length.js +1 -0
  1090. package/dist-browser/@spawnite/schema/exports/format-clip-size.js +1 -0
  1091. package/dist-browser/@spawnite/schema/exports/format-link-conditions.js +1 -0
  1092. package/dist-browser/@spawnite/schema/exports/framed-shot-schema.js +1 -0
  1093. package/dist-browser/@spawnite/schema/exports/fullscreen-answer-message.js +1 -0
  1094. package/dist-browser/@spawnite/schema/exports/fullscreen-message.js +1 -0
  1095. package/dist-browser/@spawnite/schema/exports/game-materials-name.js +1 -0
  1096. package/dist-browser/@spawnite/schema/exports/game-materials-schema.js +1 -0
  1097. package/dist-browser/@spawnite/schema/exports/game-origin.js +1 -0
  1098. package/dist-browser/@spawnite/schema/exports/game-page-path.js +1 -0
  1099. package/dist-browser/@spawnite/schema/exports/game-save-key.js +1 -0
  1100. package/dist-browser/@spawnite/schema/exports/grid-map.js +1 -0
  1101. package/dist-browser/@spawnite/schema/exports/ground-rule-schema.js +1 -0
  1102. package/dist-browser/@spawnite/schema/exports/ground-schema.js +1 -0
  1103. package/dist-browser/@spawnite/schema/exports/hud-slot.js +1 -0
  1104. package/dist-browser/@spawnite/schema/exports/init-message.js +1 -0
  1105. package/dist-browser/@spawnite/schema/exports/init-save.js +1 -0
  1106. package/dist-browser/@spawnite/schema/exports/insets-message.js +1 -0
  1107. package/dist-browser/@spawnite/schema/exports/is-additive-schema-change.js +1 -0
  1108. package/dist-browser/@spawnite/schema/exports/is-game-id.js +1 -0
  1109. package/dist-browser/@spawnite/schema/exports/is-game-slug.js +1 -0
  1110. package/dist-browser/@spawnite/schema/exports/is-kept-label.js +1 -0
  1111. package/dist-browser/@spawnite/schema/exports/is-link-direct.js +1 -0
  1112. package/dist-browser/@spawnite/schema/exports/is-older-reader.js +1 -0
  1113. package/dist-browser/@spawnite/schema/exports/is-particle-effect-looping.js +1 -0
  1114. package/dist-browser/@spawnite/schema/exports/is-room-players.js +1 -0
  1115. package/dist-browser/@spawnite/schema/exports/is-room-send-rate.js +1 -0
  1116. package/dist-browser/@spawnite/schema/exports/item-definition.js +1 -0
  1117. package/dist-browser/@spawnite/schema/exports/join-room-input.js +1 -0
  1118. package/dist-browser/@spawnite/schema/exports/leave-message.js +1 -0
  1119. package/dist-browser/@spawnite/schema/exports/left-message.js +1 -0
  1120. package/dist-browser/@spawnite/schema/exports/list-assets-input.js +1 -0
  1121. package/dist-browser/@spawnite/schema/exports/list-clips-input.js +1 -0
  1122. package/dist-browser/@spawnite/schema/exports/list-templates-input.js +1 -0
  1123. package/dist-browser/@spawnite/schema/exports/list-wiki-input.js +1 -0
  1124. package/dist-browser/@spawnite/schema/exports/long-call-input.js +1 -0
  1125. package/dist-browser/@spawnite/schema/exports/longest-timeout-seconds.js +1 -0
  1126. package/dist-browser/@spawnite/schema/exports/make-model-input.js +1 -0
  1127. package/dist-browser/@spawnite/schema/exports/map-base-schema.js +1 -0
  1128. package/dist-browser/@spawnite/schema/exports/map-path.js +1 -0
  1129. package/dist-browser/@spawnite/schema/exports/map-point.js +1 -0
  1130. package/dist-browser/@spawnite/schema/exports/map-post.js +1 -0
  1131. package/dist-browser/@spawnite/schema/exports/map-prop-schema.js +1 -0
  1132. package/dist-browser/@spawnite/schema/exports/map-props-patch.js +1 -0
  1133. package/dist-browser/@spawnite/schema/exports/map-props-schema.js +1 -0
  1134. package/dist-browser/@spawnite/schema/exports/map-schema.js +1 -0
  1135. package/dist-browser/@spawnite/schema/exports/map-sea-schema.js +1 -0
  1136. package/dist-browser/@spawnite/schema/exports/map-terrain-schema.js +1 -0
  1137. package/dist-browser/@spawnite/schema/exports/material-cover-schema.js +1 -0
  1138. package/dist-browser/@spawnite/schema/exports/material-look-schema.js +1 -0
  1139. package/dist-browser/@spawnite/schema/exports/material-name.js +1 -0
  1140. package/dist-browser/@spawnite/schema/exports/material-sets.js +1 -0
  1141. package/dist-browser/@spawnite/schema/exports/materials-schema.js +1 -0
  1142. package/dist-browser/@spawnite/schema/exports/max-error-report-bytes.js +1 -0
  1143. package/dist-browser/@spawnite/schema/exports/max-save-body-bytes.js +1 -0
  1144. package/dist-browser/@spawnite/schema/exports/max-save-body-ceiling-bytes.js +1 -0
  1145. package/dist-browser/@spawnite/schema/exports/max-save-unpacked-bytes.js +1 -0
  1146. package/dist-browser/@spawnite/schema/exports/max-save-unpacked-ceiling-bytes.js +1 -0
  1147. package/dist-browser/@spawnite/schema/exports/menu-message.js +1 -0
  1148. package/dist-browser/@spawnite/schema/exports/merge-carried-settings.js +1 -0
  1149. package/dist-browser/@spawnite/schema/exports/merge-save-highest.js +1 -0
  1150. package/dist-browser/@spawnite/schema/exports/model-reference-schema.js +1 -0
  1151. package/dist-browser/@spawnite/schema/exports/model-triangle-budget.js +1 -0
  1152. package/dist-browser/@spawnite/schema/exports/most-rejoin-hold-seconds.js +1 -0
  1153. package/dist-browser/@spawnite/schema/exports/most-room-players.js +1 -0
  1154. package/dist-browser/@spawnite/schema/exports/name-schema.js +1 -0
  1155. package/dist-browser/@spawnite/schema/exports/new-game-input.js +1 -0
  1156. package/dist-browser/@spawnite/schema/exports/package-room-hint.js +1 -0
  1157. package/dist-browser/@spawnite/schema/exports/package-room.js +1 -0
  1158. package/dist-browser/@spawnite/schema/exports/page-message-versions.js +1 -0
  1159. package/dist-browser/@spawnite/schema/exports/page-message.js +1 -0
  1160. package/dist-browser/@spawnite/schema/exports/page-settings-message.js +1 -0
  1161. package/dist-browser/@spawnite/schema/exports/parse-link-conditions.js +1 -0
  1162. package/dist-browser/@spawnite/schema/exports/particle-effect-limits.js +1 -0
  1163. package/dist-browser/@spawnite/schema/exports/particle-sprite-max-side.js +1 -0
  1164. package/dist-browser/@spawnite/schema/exports/place-loot-input.js +1 -0
  1165. package/dist-browser/@spawnite/schema/exports/place-props-input.js +1 -0
  1166. package/dist-browser/@spawnite/schema/exports/play-domain.js +1 -0
  1167. package/dist-browser/@spawnite/schema/exports/profile-game-input.js +1 -0
  1168. package/dist-browser/@spawnite/schema/exports/project-folder.js +1 -0
  1169. package/dist-browser/@spawnite/schema/exports/publish-assets-input.js +1 -0
  1170. package/dist-browser/@spawnite/schema/exports/publish-version-input.js +1 -0
  1171. package/dist-browser/@spawnite/schema/exports/query-map-input.js +1 -0
  1172. package/dist-browser/@spawnite/schema/exports/read-ai-tree-input.js +1 -0
  1173. package/dist-browser/@spawnite/schema/exports/read-chat-input.js +1 -0
  1174. package/dist-browser/@spawnite/schema/exports/read-clip-input.js +1 -0
  1175. package/dist-browser/@spawnite/schema/exports/read-clip-start-time.js +1 -0
  1176. package/dist-browser/@spawnite/schema/exports/read-game-id.js +1 -0
  1177. package/dist-browser/@spawnite/schema/exports/read-game-wiki-input.js +1 -0
  1178. package/dist-browser/@spawnite/schema/exports/read-package-room.js +1 -0
  1179. package/dist-browser/@spawnite/schema/exports/read-paint-grid.js +1 -0
  1180. package/dist-browser/@spawnite/schema/exports/read-particle-effect.js +1 -0
  1181. package/dist-browser/@spawnite/schema/exports/read-room-mode.js +1 -0
  1182. package/dist-browser/@spawnite/schema/exports/read-run-input.js +1 -0
  1183. package/dist-browser/@spawnite/schema/exports/read-save-mark.js +1 -0
  1184. package/dist-browser/@spawnite/schema/exports/read-save-record.js +1 -0
  1185. package/dist-browser/@spawnite/schema/exports/read-terrain-grid.js +1 -0
  1186. package/dist-browser/@spawnite/schema/exports/read-track-level.js +1 -0
  1187. package/dist-browser/@spawnite/schema/exports/read-wiki-input.js +1 -0
  1188. package/dist-browser/@spawnite/schema/exports/ready-message.js +1 -0
  1189. package/dist-browser/@spawnite/schema/exports/record-clip-input.js +1 -0
  1190. package/dist-browser/@spawnite/schema/exports/registry-entry.js +1 -0
  1191. package/dist-browser/@spawnite/schema/exports/registry-file.js +1 -0
  1192. package/dist-browser/@spawnite/schema/exports/registry-item-schema-url.js +1 -0
  1193. package/dist-browser/@spawnite/schema/exports/registry-item.js +1 -0
  1194. package/dist-browser/@spawnite/schema/exports/registry-schema-url.js +1 -0
  1195. package/dist-browser/@spawnite/schema/exports/registry.js +1 -0
  1196. package/dist-browser/@spawnite/schema/exports/resolve-room-settings.js +1 -0
  1197. package/dist-browser/@spawnite/schema/exports/reverse-wiki-relation.js +1 -0
  1198. package/dist-browser/@spawnite/schema/exports/room-send-rates.js +1 -0
  1199. package/dist-browser/@spawnite/schema/exports/save-codec-mark.js +1 -0
  1200. package/dist-browser/@spawnite/schema/exports/save-failed-message.js +1 -0
  1201. package/dist-browser/@spawnite/schema/exports/save-fingerprint-format.js +1 -0
  1202. package/dist-browser/@spawnite/schema/exports/save-limit-warning-share.js +1 -0
  1203. package/dist-browser/@spawnite/schema/exports/save-load-failed-message.js +1 -0
  1204. package/dist-browser/@spawnite/schema/exports/save-message.js +1 -0
  1205. package/dist-browser/@spawnite/schema/exports/save-now-message.js +1 -0
  1206. package/dist-browser/@spawnite/schema/exports/save-record-message.js +1 -0
  1207. package/dist-browser/@spawnite/schema/exports/saved-health-schema.js +1 -0
  1208. package/dist-browser/@spawnite/schema/exports/saved-level-schema.js +1 -0
  1209. package/dist-browser/@spawnite/schema/exports/saved-message.js +1 -0
  1210. package/dist-browser/@spawnite/schema/exports/saved-stack-schema.js +1 -0
  1211. package/dist-browser/@spawnite/schema/exports/saved-stat-schema.js +1 -0
  1212. package/dist-browser/@spawnite/schema/exports/saved-vector-schema.js +1 -0
  1213. package/dist-browser/@spawnite/schema/exports/scatter-kinds.js +1 -0
  1214. package/dist-browser/@spawnite/schema/exports/scene-name.js +1 -0
  1215. package/dist-browser/@spawnite/schema/exports/screenshot-input.js +1 -0
  1216. package/dist-browser/@spawnite/schema/exports/search-wiki-input.js +1 -0
  1217. package/dist-browser/@spawnite/schema/exports/seat-credential.js +1 -0
  1218. package/dist-browser/@spawnite/schema/exports/seat-message.js +1 -0
  1219. package/dist-browser/@spawnite/schema/exports/send-input-input.js +1 -0
  1220. package/dist-browser/@spawnite/schema/exports/servers-folder-name.js +1 -0
  1221. package/dist-browser/@spawnite/schema/exports/set-nickname-input.js +1 -0
  1222. package/dist-browser/@spawnite/schema/exports/set-trait-input.js +1 -0
  1223. package/dist-browser/@spawnite/schema/exports/set-visibility-input.js +1 -0
  1224. package/dist-browser/@spawnite/schema/exports/settings-schema.js +1 -0
  1225. package/dist-browser/@spawnite/schema/exports/shot-angle-schema.js +1 -0
  1226. package/dist-browser/@spawnite/schema/exports/shot-camera-schema.js +1 -0
  1227. package/dist-browser/@spawnite/schema/exports/shot-post.js +1 -0
  1228. package/dist-browser/@spawnite/schema/exports/shots-folder-name.js +1 -0
  1229. package/dist-browser/@spawnite/schema/exports/shots-path.js +1 -0
  1230. package/dist-browser/@spawnite/schema/exports/simulate-input.js +1 -0
  1231. package/dist-browser/@spawnite/schema/exports/slug-limits.js +1 -0
  1232. package/dist-browser/@spawnite/schema/exports/slugify-game-name.js +1 -0
  1233. package/dist-browser/@spawnite/schema/exports/snapshot-save-schema.js +1 -0
  1234. package/dist-browser/@spawnite/schema/exports/space-point-schema.js +1 -0
  1235. package/dist-browser/@spawnite/schema/exports/spawnite-folder-name.js +1 -0
  1236. package/dist-browser/@spawnite/schema/exports/start-playtest-input.js +1 -0
  1237. package/dist-browser/@spawnite/schema/exports/start-save-key.js +1 -0
  1238. package/dist-browser/@spawnite/schema/exports/steps-per-second.js +1 -0
  1239. package/dist-browser/@spawnite/schema/exports/store-age-bands.js +1 -0
  1240. package/dist-browser/@spawnite/schema/exports/store-page-limits.js +1 -0
  1241. package/dist-browser/@spawnite/schema/exports/store-page.js +1 -0
  1242. package/dist-browser/@spawnite/schema/exports/store-picture-rules.js +1 -0
  1243. package/dist-browser/@spawnite/schema/exports/store-picture.js +1 -0
  1244. package/dist-browser/@spawnite/schema/exports/tab-info.js +1 -0
  1245. package/dist-browser/@spawnite/schema/exports/tab-path.js +1 -0
  1246. package/dist-browser/@spawnite/schema/exports/tab-post.js +1 -0
  1247. package/dist-browser/@spawnite/schema/exports/tab-token-header.js +1 -0
  1248. package/dist-browser/@spawnite/schema/exports/tagged-save-value-schema.js +1 -0
  1249. package/dist-browser/@spawnite/schema/exports/terrain-brush.js +1 -0
  1250. package/dist-browser/@spawnite/schema/exports/terrain-fill.js +1 -0
  1251. package/dist-browser/@spawnite/schema/exports/terrain-map.js +1 -0
  1252. package/dist-browser/@spawnite/schema/exports/terrain-restore.js +1 -0
  1253. package/dist-browser/@spawnite/schema/exports/terrain-settlings.js +1 -0
  1254. package/dist-browser/@spawnite/schema/exports/terrain-stroke-shape.js +1 -0
  1255. package/dist-browser/@spawnite/schema/exports/terrain-stroke.js +1 -0
  1256. package/dist-browser/@spawnite/schema/exports/terrain-tools.js +1 -0
  1257. package/dist-browser/@spawnite/schema/exports/timeline-input.js +1 -0
  1258. package/dist-browser/@spawnite/schema/exports/to-display-name.js +1 -0
  1259. package/dist-browser/@spawnite/schema/exports/to-wiki-anchor.js +1 -0
  1260. package/dist-browser/@spawnite/schema/exports/track-level-schema.js +1 -0
  1261. package/dist-browser/@spawnite/schema/exports/untouched.js +1 -0
  1262. package/dist-browser/@spawnite/schema/exports/upload-store-page-input.js +1 -0
  1263. package/dist-browser/@spawnite/schema/exports/upload-version-input.js +1 -0
  1264. package/dist-browser/@spawnite/schema/exports/versions-of-save-manifest-entry.js +1 -0
  1265. package/dist-browser/@spawnite/schema/exports/versions-of.js +1 -0
  1266. package/dist-browser/@spawnite/schema/exports/view-schema.js +1 -0
  1267. package/dist-browser/@spawnite/schema/exports/voice-settings.js +1 -0
  1268. package/dist-browser/@spawnite/schema/exports/whoami-input.js +1 -0
  1269. package/dist-browser/@spawnite/schema/exports/wiki-overview-path.js +1 -0
  1270. package/dist-browser/@spawnite/schema/exports/wiki-page-path.js +1 -0
  1271. package/dist-browser/@spawnite/schema/exports/wiki-page-ref.js +1 -0
  1272. package/dist-browser/@spawnite/schema/exports/wiki-path-part.js +1 -0
  1273. package/dist-browser/@spawnite/schema/exports/wiki-site.js +1 -0
  1274. package/dist-browser/@spawnite/schema/exports/write-link-settings.js +1 -0
  1275. package/dist-browser/@spawnite/schema/exports/write-paint-grid.js +1 -0
  1276. package/dist-browser/@spawnite/schema/exports/write-save-record.js +1 -0
  1277. package/dist-browser/@spawnite/schema/exports/write-terrain-grid.js +1 -0
  1278. package/dist-browser/@spawnite/schema/exports/write-wiki-page-input.js +1 -0
  1279. package/dist-browser/@spawnite/schema/exports/z.js +1 -0
  1280. package/dist-browser/@spawnite/schema.js +1 -0
  1281. package/dist-browser/@spawnite/ui/motion.js +1 -0
  1282. package/dist-browser/@spawnite/ui.js +1 -0
  1283. package/dist-browser/THIRD-PARTY-NOTICES +2949 -0
  1284. package/dist-browser/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
  1285. package/dist-browser/assets/basis_transcoder-o4Hde_L7.js +19 -0
  1286. package/dist-browser/assets/draco_decoder-C32yEggz.wasm +0 -0
  1287. package/dist-browser/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
  1288. package/dist-browser/assets/draco_decoder-fzg4nYZr.js +34 -0
  1289. package/dist-browser/assets/draco_wasm_wrapper-DxJM36Ib.js +117 -0
  1290. package/dist-browser/assets/draco_wasm_wrapper-fZCQGLGb.js +116 -0
  1291. package/dist-browser/assets/rapier_wasm3d_bg-CcJdV3OS.wasm +0 -0
  1292. package/dist-browser/chunks/-8xKUVc-.js +1 -0
  1293. package/dist-browser/chunks/0Bppyo06.js +1 -0
  1294. package/dist-browser/chunks/0XBYBf4e.js +1 -0
  1295. package/dist-browser/chunks/1Pk4GW-o.js +1 -0
  1296. package/dist-browser/chunks/1TfeBVY_.js +1 -0
  1297. package/dist-browser/chunks/2GzBwp8F.js +1 -0
  1298. package/dist-browser/chunks/37dBpPRN.js +1 -0
  1299. package/dist-browser/chunks/3GDQ_l39.js +1 -0
  1300. package/dist-browser/chunks/4r3wlCT-.js +56 -0
  1301. package/dist-browser/chunks/51muForc.js +2 -0
  1302. package/dist-browser/chunks/5l3Kj8OA.js +25 -0
  1303. package/dist-browser/chunks/5v0sm-la.js +1 -0
  1304. package/dist-browser/chunks/6RSie8Zr.js +1 -0
  1305. package/dist-browser/chunks/6VxScSBj.js +1 -0
  1306. package/dist-browser/chunks/6r1L_s87.js +1 -0
  1307. package/dist-browser/chunks/703AF8IC.js +2 -0
  1308. package/dist-browser/chunks/7kk1UrXM.js +54 -0
  1309. package/dist-browser/chunks/7v-xFmSc.js +1 -0
  1310. package/dist-browser/chunks/8CwB1oG9.js +1 -0
  1311. package/dist-browser/chunks/8GjxAP3h.js +1 -0
  1312. package/dist-browser/chunks/8Pep1QKH.js +1 -0
  1313. package/dist-browser/chunks/8eSx71cM.js +1 -0
  1314. package/dist-browser/chunks/8qLBuj0B.js +1 -0
  1315. package/dist-browser/chunks/8uMFNz4F.js +48 -0
  1316. package/dist-browser/chunks/9BUmmiDi.js +64 -0
  1317. package/dist-browser/chunks/AEQH3xKs.js +1 -0
  1318. package/dist-browser/chunks/B04SdTxo.js +1 -0
  1319. package/dist-browser/chunks/B0d1OhsT.js +1 -0
  1320. package/dist-browser/chunks/B0d94ulh.js +1 -0
  1321. package/dist-browser/chunks/B0dIJJnS.js +104 -0
  1322. package/dist-browser/chunks/B0sEcOA4.js +1 -0
  1323. package/dist-browser/chunks/B17MsfBW.js +2 -0
  1324. package/dist-browser/chunks/B1Q2EYQa.js +409 -0
  1325. package/dist-browser/chunks/B1VGbFnq.js +1 -0
  1326. package/dist-browser/chunks/B1ZLDwkb.js +1 -0
  1327. package/dist-browser/chunks/B1gZ4XNT.js +1 -0
  1328. package/dist-browser/chunks/B2P8OKx4.js +114 -0
  1329. package/dist-browser/chunks/B2lwHY_A.js +1 -0
  1330. package/dist-browser/chunks/B2rfjAu3.js +1 -0
  1331. package/dist-browser/chunks/B3cpZ7qW.js +1 -0
  1332. package/dist-browser/chunks/B3zyuqQe.js +1 -0
  1333. package/dist-browser/chunks/B4HH7vxm.js +1 -0
  1334. package/dist-browser/chunks/B4L72GuI.js +1 -0
  1335. package/dist-browser/chunks/B4PXM93E.js +1 -0
  1336. package/dist-browser/chunks/B4dyXOK4.js +2 -0
  1337. package/dist-browser/chunks/B4f83JmW.js +1 -0
  1338. package/dist-browser/chunks/B4rtOA11.js +1 -0
  1339. package/dist-browser/chunks/B53Q2-Fw.js +42 -0
  1340. package/dist-browser/chunks/B5YG9Ima.js +35 -0
  1341. package/dist-browser/chunks/B5npwEiE.js +1 -0
  1342. package/dist-browser/chunks/B6TyyPfn.js +2280 -0
  1343. package/dist-browser/chunks/B6YPgX9B.js +1 -0
  1344. package/dist-browser/chunks/B7K2KMcP.js +289 -0
  1345. package/dist-browser/chunks/B8GCRzu-.js +1 -0
  1346. package/dist-browser/chunks/B8f3enUO.js +42 -0
  1347. package/dist-browser/chunks/B9dPPcmc.js +239 -0
  1348. package/dist-browser/chunks/B9n7U8x8.js +24 -0
  1349. package/dist-browser/chunks/BAcEoh4A.js +1 -0
  1350. package/dist-browser/chunks/BBTy17gV.js +23 -0
  1351. package/dist-browser/chunks/BBoWq_28.js +1 -0
  1352. package/dist-browser/chunks/BCEkROxA.js +1 -0
  1353. package/dist-browser/chunks/BCSDojKA.js +2 -0
  1354. package/dist-browser/chunks/BCnGjanZ.js +1 -0
  1355. package/dist-browser/chunks/BCy2Imwl.js +1 -0
  1356. package/dist-browser/chunks/BD93nK4k.js +1 -0
  1357. package/dist-browser/chunks/BDYWv4Pt.js +1 -0
  1358. package/dist-browser/chunks/BDntRBeD.js +1 -0
  1359. package/dist-browser/chunks/BE0sHH_C.js +1 -0
  1360. package/dist-browser/chunks/BE7yKwOS.js +1 -0
  1361. package/dist-browser/chunks/BFDqfrDx.js +61 -0
  1362. package/dist-browser/chunks/BFnCgym5.js +1 -0
  1363. package/dist-browser/chunks/BFpenkAR.js +1 -0
  1364. package/dist-browser/chunks/BFvqTjM2.js +1 -0
  1365. package/dist-browser/chunks/BG8QaCAl.js +1 -0
  1366. package/dist-browser/chunks/BGsrJU1n.js +219 -0
  1367. package/dist-browser/chunks/BGze3w87.js +1 -0
  1368. package/dist-browser/chunks/BHYG5big.js +1 -0
  1369. package/dist-browser/chunks/BHZuFsZC.js +26 -0
  1370. package/dist-browser/chunks/BHePouWp.js +1 -0
  1371. package/dist-browser/chunks/BIGc2B5x.js +106 -0
  1372. package/dist-browser/chunks/BIgbJOA7.js +1 -0
  1373. package/dist-browser/chunks/BIlEJ_uM.js +1 -0
  1374. package/dist-browser/chunks/BIrJsLCp.js +1 -0
  1375. package/dist-browser/chunks/BJCTIWwI.js +97 -0
  1376. package/dist-browser/chunks/BJWwGEft.js +22 -0
  1377. package/dist-browser/chunks/BJbnvkQD.js +33 -0
  1378. package/dist-browser/chunks/BJj_P5qy.js +40 -0
  1379. package/dist-browser/chunks/BKMmwIjP.js +1 -0
  1380. package/dist-browser/chunks/BL2b-bga.js +1 -0
  1381. package/dist-browser/chunks/BL3GFPpX.js +1 -0
  1382. package/dist-browser/chunks/BL3JqalM.js +1 -0
  1383. package/dist-browser/chunks/BLQoPgRQ.js +17 -0
  1384. package/dist-browser/chunks/BLdTHuK5.js +38 -0
  1385. package/dist-browser/chunks/BLxVM0Bx.js +1 -0
  1386. package/dist-browser/chunks/BMOXLfbG.js +1 -0
  1387. package/dist-browser/chunks/BMyF16Pb.js +1 -0
  1388. package/dist-browser/chunks/BN0JituG.js +1 -0
  1389. package/dist-browser/chunks/BNiTh9Zb.js +1 -0
  1390. package/dist-browser/chunks/BNm7BDEl.js +1 -0
  1391. package/dist-browser/chunks/BNucCtAC.js +1 -0
  1392. package/dist-browser/chunks/BOAa4bZ5.js +80 -0
  1393. package/dist-browser/chunks/BOIXSUZ_.js +1 -0
  1394. package/dist-browser/chunks/BOY2osHs.js +1 -0
  1395. package/dist-browser/chunks/BP9HooTj.js +1 -0
  1396. package/dist-browser/chunks/BPsQn259.js +1 -0
  1397. package/dist-browser/chunks/BPyPftW0.js +1 -0
  1398. package/dist-browser/chunks/BQl3ddsW.js +1 -0
  1399. package/dist-browser/chunks/BSaFdJJr.js +1 -0
  1400. package/dist-browser/chunks/BSb5Y-Am.js +1 -0
  1401. package/dist-browser/chunks/BSoHyLeW.js +1 -0
  1402. package/dist-browser/chunks/BUJHJVUo.js +1 -0
  1403. package/dist-browser/chunks/BV45MfzJ.js +206 -0
  1404. package/dist-browser/chunks/BWLobtMG.js +1 -0
  1405. package/dist-browser/chunks/BWX2omqC.js +1 -0
  1406. package/dist-browser/chunks/BX-IJ6Jw.js +1 -0
  1407. package/dist-browser/chunks/BZ67u85L.js +1 -0
  1408. package/dist-browser/chunks/BZL3DkMo.js +1 -0
  1409. package/dist-browser/chunks/BZkTFuN8.js +32 -0
  1410. package/dist-browser/chunks/B_olo1g0.js +1 -0
  1411. package/dist-browser/chunks/B_xcv6lP.js +1 -0
  1412. package/dist-browser/chunks/BadDFgpu.js +3 -0
  1413. package/dist-browser/chunks/BbIllpJG.js +1 -0
  1414. package/dist-browser/chunks/Bc7uTOHd.js +1 -0
  1415. package/dist-browser/chunks/BcH7_nnK.js +1 -0
  1416. package/dist-browser/chunks/Bdd_iq-Z.js +1 -0
  1417. package/dist-browser/chunks/BdkaRoRG.js +3 -0
  1418. package/dist-browser/chunks/BeUM0nnI.js +1 -0
  1419. package/dist-browser/chunks/BfkxY7do.js +13 -0
  1420. package/dist-browser/chunks/BfzfmpKY.js +1 -0
  1421. package/dist-browser/chunks/BgNGXLZH.js +1 -0
  1422. package/dist-browser/chunks/Bgmtnmc9.js +1 -0
  1423. package/dist-browser/chunks/BgtS-68o.js +1 -0
  1424. package/dist-browser/chunks/BhE7ED0P.js +1 -0
  1425. package/dist-browser/chunks/BhG-aLlJ.js +17 -0
  1426. package/dist-browser/chunks/BhtgOF9y.js +1 -0
  1427. package/dist-browser/chunks/BhvPhm_f.js +12 -0
  1428. package/dist-browser/chunks/Bhvb25xz.js +1 -0
  1429. package/dist-browser/chunks/Bi2imP0-.js +1 -0
  1430. package/dist-browser/chunks/Bi4f74NJ.js +1 -0
  1431. package/dist-browser/chunks/BiCMFIxo.js +1 -0
  1432. package/dist-browser/chunks/BiSn0Dtc.js +1 -0
  1433. package/dist-browser/chunks/BiU0PYSX.js +1 -0
  1434. package/dist-browser/chunks/BipZQXT8.js +1 -0
  1435. package/dist-browser/chunks/BiqCT0be.js +1 -0
  1436. package/dist-browser/chunks/BjVVweLJ.js +1 -0
  1437. package/dist-browser/chunks/BjeL5CV8.js +1 -0
  1438. package/dist-browser/chunks/BjikXbkr.js +1 -0
  1439. package/dist-browser/chunks/BkNRpWJF.js +1 -0
  1440. package/dist-browser/chunks/BkWdvCr2.js +1 -0
  1441. package/dist-browser/chunks/BkfYP8sS.js +1 -0
  1442. package/dist-browser/chunks/BkoAp3nt.js +17 -0
  1443. package/dist-browser/chunks/BkuNzUds.js +5 -0
  1444. package/dist-browser/chunks/BlDBqfnQ.js +1 -0
  1445. package/dist-browser/chunks/Blob4piG.js +1 -0
  1446. package/dist-browser/chunks/Bm-NgCJv.js +290 -0
  1447. package/dist-browser/chunks/BmwnZMHR.js +1 -0
  1448. package/dist-browser/chunks/Bn-oguIM.js +1 -0
  1449. package/dist-browser/chunks/Bn8JxKQd.js +947 -0
  1450. package/dist-browser/chunks/Bn8l74kN.js +1 -0
  1451. package/dist-browser/chunks/Bo2vvsC6.js +1 -0
  1452. package/dist-browser/chunks/BoJD7UsQ.js +5 -0
  1453. package/dist-browser/chunks/BoRPdfTd.js +1 -0
  1454. package/dist-browser/chunks/BoTmVVAp.js +1 -0
  1455. package/dist-browser/chunks/BoiOnH_p.js +1 -0
  1456. package/dist-browser/chunks/Bpe2I0GB.js +1 -0
  1457. package/dist-browser/chunks/BqD0o821.js +25 -0
  1458. package/dist-browser/chunks/BqXaJXLb.js +1 -0
  1459. package/dist-browser/chunks/BqsB_Ag5.js +1 -0
  1460. package/dist-browser/chunks/Br-JA8rZ.js +1 -0
  1461. package/dist-browser/chunks/Br2nhNMH.js +1 -0
  1462. package/dist-browser/chunks/BrezGx31.js +3 -0
  1463. package/dist-browser/chunks/BsZMTFvx.js +1 -0
  1464. package/dist-browser/chunks/Bt2nCTua.js +51 -0
  1465. package/dist-browser/chunks/BtM7kQaS.js +1 -0
  1466. package/dist-browser/chunks/BtZNIAhj.js +1 -0
  1467. package/dist-browser/chunks/Btgu8kW9.js +3 -0
  1468. package/dist-browser/chunks/Btjboa9G.js +248 -0
  1469. package/dist-browser/chunks/Btn1Hp7-.js +1 -0
  1470. package/dist-browser/chunks/Bu1cOMsK.js +1 -0
  1471. package/dist-browser/chunks/Bv2bGJo9.js +1 -0
  1472. package/dist-browser/chunks/BvK95JoS.js +1 -0
  1473. package/dist-browser/chunks/BvrPFs0h.js +1 -0
  1474. package/dist-browser/chunks/BvsNGgEj.js +1 -0
  1475. package/dist-browser/chunks/ByyEEkYz.js +1 -0
  1476. package/dist-browser/chunks/BzAJiB5u.js +1 -0
  1477. package/dist-browser/chunks/BzCmY2x1.js +68 -0
  1478. package/dist-browser/chunks/BzKtjbg2.js +1 -0
  1479. package/dist-browser/chunks/BzZ2lwsC.js +134 -0
  1480. package/dist-browser/chunks/BzcZWs3f.js +1 -0
  1481. package/dist-browser/chunks/BzuN4nW7.js +33 -0
  1482. package/dist-browser/chunks/BzwHJPea.js +1 -0
  1483. package/dist-browser/chunks/Bzy44bV2.js +4216 -0
  1484. package/dist-browser/chunks/C-O8NhHK.js +1 -0
  1485. package/dist-browser/chunks/C-_LmeNn.js +934 -0
  1486. package/dist-browser/chunks/C-ztiLpW.js +1 -0
  1487. package/dist-browser/chunks/C0Iji4Qk.js +1 -0
  1488. package/dist-browser/chunks/C12xlM79.js +1 -0
  1489. package/dist-browser/chunks/C1BDCorD.js +99 -0
  1490. package/dist-browser/chunks/C2Dm6eUt.js +1 -0
  1491. package/dist-browser/chunks/C2RePWen.js +1 -0
  1492. package/dist-browser/chunks/C2suuPFw.js +1 -0
  1493. package/dist-browser/chunks/C33aG9gN.js +1 -0
  1494. package/dist-browser/chunks/C3Y15gp1.js +1 -0
  1495. package/dist-browser/chunks/C3gvA1lh.js +1 -0
  1496. package/dist-browser/chunks/C3pLayiC.js +143 -0
  1497. package/dist-browser/chunks/C3wBsE11.js +1 -0
  1498. package/dist-browser/chunks/C4E_bIDB.js +1 -0
  1499. package/dist-browser/chunks/C4OFzvAP.js +1 -0
  1500. package/dist-browser/chunks/C4fzyzUE.js +1 -0
  1501. package/dist-browser/chunks/C5P0RHNI.js +1 -0
  1502. package/dist-browser/chunks/C6XZSTSj.js +39 -0
  1503. package/dist-browser/chunks/C784v2VA.js +1 -0
  1504. package/dist-browser/chunks/C7CUzsYJ.js +1 -0
  1505. package/dist-browser/chunks/C7FykdRJ.js +1 -0
  1506. package/dist-browser/chunks/C7RSxM0z.js +1 -0
  1507. package/dist-browser/chunks/C9J2i9In.js +2 -0
  1508. package/dist-browser/chunks/C9Kd-Lrf.js +1 -0
  1509. package/dist-browser/chunks/C9OKiK4z.js +15 -0
  1510. package/dist-browser/chunks/C9bAX0wX.js +1 -0
  1511. package/dist-browser/chunks/C9duFT9_.js +9 -0
  1512. package/dist-browser/chunks/CA52Vkpa.js +3 -0
  1513. package/dist-browser/chunks/CAB0sdkM.js +8 -0
  1514. package/dist-browser/chunks/CBcRTsvX.js +1 -0
  1515. package/dist-browser/chunks/CC8kNj4O.js +1 -0
  1516. package/dist-browser/chunks/CC_taxfs.js +1 -0
  1517. package/dist-browser/chunks/CCnjeop3.js +1 -0
  1518. package/dist-browser/chunks/CD1Phcj7.js +1 -0
  1519. package/dist-browser/chunks/CDBmfTua.js +1 -0
  1520. package/dist-browser/chunks/CDFKagMr.js +1 -0
  1521. package/dist-browser/chunks/CDZegpP1.js +1 -0
  1522. package/dist-browser/chunks/CD_-ZdOx.js +1 -0
  1523. package/dist-browser/chunks/CDmSfsbx.js +1 -0
  1524. package/dist-browser/chunks/CDy5CkBb.js +1 -0
  1525. package/dist-browser/chunks/CDyybrEA.js +1 -0
  1526. package/dist-browser/chunks/CENY_jwA.js +5 -0
  1527. package/dist-browser/chunks/CEfq3wMj.js +1 -0
  1528. package/dist-browser/chunks/CEtY4HlI.js +1 -0
  1529. package/dist-browser/chunks/CEtbZ-Ou.js +51 -0
  1530. package/dist-browser/chunks/CFVbNh1J.js +1 -0
  1531. package/dist-browser/chunks/CG5A_mHR.js +1 -0
  1532. package/dist-browser/chunks/CGFRQ0IS.js +3 -0
  1533. package/dist-browser/chunks/CGPPrudP.js +1 -0
  1534. package/dist-browser/chunks/CGZdRHCz.js +1 -0
  1535. package/dist-browser/chunks/CG_ggIC3.js +230 -0
  1536. package/dist-browser/chunks/CHD7Siks.js +61 -0
  1537. package/dist-browser/chunks/CHGAmNbz.js +24 -0
  1538. package/dist-browser/chunks/CH_3weAk.js +136 -0
  1539. package/dist-browser/chunks/CHnMaz0U.js +1 -0
  1540. package/dist-browser/chunks/CHx28aAq.js +1 -0
  1541. package/dist-browser/chunks/CIPEdQZg.js +1 -0
  1542. package/dist-browser/chunks/CIU50MA1.js +1 -0
  1543. package/dist-browser/chunks/CIXqygz5.js +42 -0
  1544. package/dist-browser/chunks/CIz-HH07.js +1585 -0
  1545. package/dist-browser/chunks/CJ4zQQhO.js +1 -0
  1546. package/dist-browser/chunks/CJD9mRmQ.js +1 -0
  1547. package/dist-browser/chunks/CJgknJ-O.js +12 -0
  1548. package/dist-browser/chunks/CL1lltpM.js +1 -0
  1549. package/dist-browser/chunks/CLxcu-z_.js +73 -0
  1550. package/dist-browser/chunks/CM3pB59z.js +1 -0
  1551. package/dist-browser/chunks/CM7fr6V2.js +1 -0
  1552. package/dist-browser/chunks/CMCldyjy.js +1 -0
  1553. package/dist-browser/chunks/CMhbdUh_.js +1 -0
  1554. package/dist-browser/chunks/CMj-G0tG.js +1 -0
  1555. package/dist-browser/chunks/CMy5JYMZ.js +1 -0
  1556. package/dist-browser/chunks/CNS048lI.js +1 -0
  1557. package/dist-browser/chunks/CO0SZ1hy.js +1 -0
  1558. package/dist-browser/chunks/COnv2PBF.js +2 -0
  1559. package/dist-browser/chunks/CP27PMpS.js +1 -0
  1560. package/dist-browser/chunks/CQRcPihd.js +6 -0
  1561. package/dist-browser/chunks/CRDIjF8C.js +2 -0
  1562. package/dist-browser/chunks/CRFCYrrv.js +1 -0
  1563. package/dist-browser/chunks/CRL527zA.js +1 -0
  1564. package/dist-browser/chunks/CRuuK4qI.js +1 -0
  1565. package/dist-browser/chunks/CSrliGR5.js +1 -0
  1566. package/dist-browser/chunks/CT24MROG.js +36 -0
  1567. package/dist-browser/chunks/CTKsfpS6.js +1 -0
  1568. package/dist-browser/chunks/CTovL-9G.js +1 -0
  1569. package/dist-browser/chunks/CU2_4WYp.js +1 -0
  1570. package/dist-browser/chunks/CVn3AkL4.js +3 -0
  1571. package/dist-browser/chunks/CW47wlpJ.js +1 -0
  1572. package/dist-browser/chunks/CWtE2FH4.js +6 -0
  1573. package/dist-browser/chunks/CWtqwiJb.js +1 -0
  1574. package/dist-browser/chunks/CX2yvOMR.js +32 -0
  1575. package/dist-browser/chunks/CXYvZiC5.js +1 -0
  1576. package/dist-browser/chunks/CY2_o-A_.js +1 -0
  1577. package/dist-browser/chunks/CYD5IpHG.js +1 -0
  1578. package/dist-browser/chunks/CYFmo-2d.js +1 -0
  1579. package/dist-browser/chunks/CYzJaZmG.js +1 -0
  1580. package/dist-browser/chunks/CZng9q4s.js +1 -0
  1581. package/dist-browser/chunks/C_3LSlp_.js +1 -0
  1582. package/dist-browser/chunks/C_popvm5.js +1 -0
  1583. package/dist-browser/chunks/Ca2qCbBO.js +227 -0
  1584. package/dist-browser/chunks/CaayFmFc.js +68 -0
  1585. package/dist-browser/chunks/CagC9ufD.js +6 -0
  1586. package/dist-browser/chunks/CamHr2sm.js +9 -0
  1587. package/dist-browser/chunks/Caw9wDgF.js +1 -0
  1588. package/dist-browser/chunks/CbRyzWz3.js +1 -0
  1589. package/dist-browser/chunks/CcQz6dxG.js +68 -0
  1590. package/dist-browser/chunks/CcUHIKVc.js +1 -0
  1591. package/dist-browser/chunks/Cd20lYkt.js +23 -0
  1592. package/dist-browser/chunks/Cdj8C4sv.js +1 -0
  1593. package/dist-browser/chunks/CeWzMWwP.js +1 -0
  1594. package/dist-browser/chunks/Ceeo2sCz.js +1 -0
  1595. package/dist-browser/chunks/CerF2aP5.js +1 -0
  1596. package/dist-browser/chunks/Cew-kv76.js +1 -0
  1597. package/dist-browser/chunks/Cf1F89pD.js +1 -0
  1598. package/dist-browser/chunks/Cff8_5zr.js +1 -0
  1599. package/dist-browser/chunks/Cgy6G_V-.js +1 -0
  1600. package/dist-browser/chunks/ChAqhjhd.js +243 -0
  1601. package/dist-browser/chunks/Chg_Q8x6.js +1 -0
  1602. package/dist-browser/chunks/Chx9z6ee.js +3 -0
  1603. package/dist-browser/chunks/Ci0DiZOM.js +1 -0
  1604. package/dist-browser/chunks/CiD_XHlg.js +1 -0
  1605. package/dist-browser/chunks/CjL-uP84.js +1 -0
  1606. package/dist-browser/chunks/CjPBNVRF.js +2 -0
  1607. package/dist-browser/chunks/CjTILWD4.js +3 -0
  1608. package/dist-browser/chunks/CkmGh-87.js +1 -0
  1609. package/dist-browser/chunks/ClZqxSEX.js +1 -0
  1610. package/dist-browser/chunks/CluBrQDl.js +1 -0
  1611. package/dist-browser/chunks/Clzbw8hC.js +104 -0
  1612. package/dist-browser/chunks/CmEJbuVc.js +1 -0
  1613. package/dist-browser/chunks/CmlWyQpr.js +1 -0
  1614. package/dist-browser/chunks/Cnh5-qw-.js +10 -0
  1615. package/dist-browser/chunks/CnwbVRym.js +1 -0
  1616. package/dist-browser/chunks/Co55Z6b-.js +34 -0
  1617. package/dist-browser/chunks/CoqDcyee.js +1 -0
  1618. package/dist-browser/chunks/CorZBnkZ.js +71 -0
  1619. package/dist-browser/chunks/CpKf07f9.js +72 -0
  1620. package/dist-browser/chunks/CqXobSJH.js +82 -0
  1621. package/dist-browser/chunks/CqwcKTEN.js +1 -0
  1622. package/dist-browser/chunks/Cs23D-lk.js +18 -0
  1623. package/dist-browser/chunks/CsT20qOq.js +1 -0
  1624. package/dist-browser/chunks/CsTuUPUb.js +1 -0
  1625. package/dist-browser/chunks/CtCvKs-8.js +1 -0
  1626. package/dist-browser/chunks/CtpF73Mi.js +1 -0
  1627. package/dist-browser/chunks/CuHid4qh.js +1 -0
  1628. package/dist-browser/chunks/CuhwmTWw.js +2 -0
  1629. package/dist-browser/chunks/Cv31r4NA.js +1 -0
  1630. package/dist-browser/chunks/CvVTau-c.js +1 -0
  1631. package/dist-browser/chunks/Cvdyeg_0.js +1 -0
  1632. package/dist-browser/chunks/CvgsNxMb.js +1 -0
  1633. package/dist-browser/chunks/Cvk3fWJd.js +31 -0
  1634. package/dist-browser/chunks/Cvq_OonK.js +1 -0
  1635. package/dist-browser/chunks/Cvzg7xRz.js +1039 -0
  1636. package/dist-browser/chunks/CwPUhsCN.js +111 -0
  1637. package/dist-browser/chunks/CwTYnDSQ.js +1 -0
  1638. package/dist-browser/chunks/CwVb7sDh.js +1 -0
  1639. package/dist-browser/chunks/CwkwVzf9.js +1 -0
  1640. package/dist-browser/chunks/Cwsm87qt.js +1 -0
  1641. package/dist-browser/chunks/CwtYJaZ0.js +1 -0
  1642. package/dist-browser/chunks/CxBgnQIE.js +1 -0
  1643. package/dist-browser/chunks/CxRCGV_D.js +1 -0
  1644. package/dist-browser/chunks/CxW3h7EP.js +1 -0
  1645. package/dist-browser/chunks/CxdFFqFC.js +1 -0
  1646. package/dist-browser/chunks/Cxl6U4QM.js +1 -0
  1647. package/dist-browser/chunks/CxqqJceE.js +262 -0
  1648. package/dist-browser/chunks/CyUjhzls.js +1 -0
  1649. package/dist-browser/chunks/CzHZycAX.js +1 -0
  1650. package/dist-browser/chunks/CzVBHx3T.js +1 -0
  1651. package/dist-browser/chunks/D-J5r5vm.js +502 -0
  1652. package/dist-browser/chunks/D-ZRVGDk.js +1 -0
  1653. package/dist-browser/chunks/D10MTZ8f.js +1 -0
  1654. package/dist-browser/chunks/D1dFmEHc.js +82 -0
  1655. package/dist-browser/chunks/D2SJBO5U.js +1 -0
  1656. package/dist-browser/chunks/D2bDAUlP.js +1 -0
  1657. package/dist-browser/chunks/D2qpNyTi.js +1 -0
  1658. package/dist-browser/chunks/D3Fr6yvq.js +1 -0
  1659. package/dist-browser/chunks/D3_eaTYS.js +1 -0
  1660. package/dist-browser/chunks/D3lBoMMr.js +29 -0
  1661. package/dist-browser/chunks/D5CFWMVX.js +1 -0
  1662. package/dist-browser/chunks/D5Cj4ub7.js +1 -0
  1663. package/dist-browser/chunks/D5EJDMZ-.js +2 -0
  1664. package/dist-browser/chunks/D6E_gImS.js +1 -0
  1665. package/dist-browser/chunks/D6XXX9Ue.js +1 -0
  1666. package/dist-browser/chunks/D6fd1dZA.js +1 -0
  1667. package/dist-browser/chunks/D852BHwA.js +40 -0
  1668. package/dist-browser/chunks/D8inQ_yL.js +1 -0
  1669. package/dist-browser/chunks/D9XZ_4Ga.js +145 -0
  1670. package/dist-browser/chunks/D9dlo-Ln.js +1 -0
  1671. package/dist-browser/chunks/DAB0WqX0.js +1 -0
  1672. package/dist-browser/chunks/DAH2JXIW.js +1 -0
  1673. package/dist-browser/chunks/DAPFhXVb.js +22 -0
  1674. package/dist-browser/chunks/DAxE8pMD.js +45 -0
  1675. package/dist-browser/chunks/DBj6QGQs.js +1 -0
  1676. package/dist-browser/chunks/DC3L5U86.js +1 -0
  1677. package/dist-browser/chunks/DC9vc-0L.js +1 -0
  1678. package/dist-browser/chunks/DCJlJ3lv.js +1 -0
  1679. package/dist-browser/chunks/DCaQLeIq.js +1 -0
  1680. package/dist-browser/chunks/DCc-gTDg.js +1 -0
  1681. package/dist-browser/chunks/DD2V7Wxl.js +1 -0
  1682. package/dist-browser/chunks/DD6onItE.js +1 -0
  1683. package/dist-browser/chunks/DDLmvpjg.js +1 -0
  1684. package/dist-browser/chunks/DDRCiC_a.js +1 -0
  1685. package/dist-browser/chunks/DEW70SgN.js +1 -0
  1686. package/dist-browser/chunks/DEucxoKb.js +1 -0
  1687. package/dist-browser/chunks/DF6Qh6eu.js +1 -0
  1688. package/dist-browser/chunks/DFtj_qQf.js +63 -0
  1689. package/dist-browser/chunks/DG4h2xXm.js +45 -0
  1690. package/dist-browser/chunks/DGYxR7PN.js +26 -0
  1691. package/dist-browser/chunks/DGlba0EV.js +1 -0
  1692. package/dist-browser/chunks/DHOehIg0.js +30 -0
  1693. package/dist-browser/chunks/DHiTLWtz.js +1 -0
  1694. package/dist-browser/chunks/DIHxCXEJ.js +1 -0
  1695. package/dist-browser/chunks/DII2y8tL.js +546 -0
  1696. package/dist-browser/chunks/DIcTMzLD.js +31 -0
  1697. package/dist-browser/chunks/DImXrYb5.js +1 -0
  1698. package/dist-browser/chunks/DIvOsQJS.js +393 -0
  1699. package/dist-browser/chunks/DJCfJlBy.js +1 -0
  1700. package/dist-browser/chunks/DKnN7RH0.js +1 -0
  1701. package/dist-browser/chunks/DKrOx_1M.js +1 -0
  1702. package/dist-browser/chunks/DMcWzziy.js +1 -0
  1703. package/dist-browser/chunks/DMk6G0lv.js +1 -0
  1704. package/dist-browser/chunks/DMyNEYzI.js +1 -0
  1705. package/dist-browser/chunks/DN0xP1fa.js +1 -0
  1706. package/dist-browser/chunks/DNef-bWt.js +1 -0
  1707. package/dist-browser/chunks/DNhTxxCh.js +1 -0
  1708. package/dist-browser/chunks/DNoIqPE7.js +1 -0
  1709. package/dist-browser/chunks/DNsR67l1.js +3 -0
  1710. package/dist-browser/chunks/DOEmZHjx.js +1 -0
  1711. package/dist-browser/chunks/DOFYt5cj.js +1 -0
  1712. package/dist-browser/chunks/DOWMFTFl.js +38 -0
  1713. package/dist-browser/chunks/DOYycP3M.js +1 -0
  1714. package/dist-browser/chunks/DOidSPk5.js +1 -0
  1715. package/dist-browser/chunks/DOvE9vCY.js +97 -0
  1716. package/dist-browser/chunks/DOyIRes1.js +1 -0
  1717. package/dist-browser/chunks/DPIksCnG.js +41 -0
  1718. package/dist-browser/chunks/DPNgRv8u.js +1 -0
  1719. package/dist-browser/chunks/DPXctdFS.js +27 -0
  1720. package/dist-browser/chunks/DPnn0uIO.js +1 -0
  1721. package/dist-browser/chunks/DQ0A9BJI.js +1 -0
  1722. package/dist-browser/chunks/DQbqNpgw.js +1 -0
  1723. package/dist-browser/chunks/DQea7zxR.js +1 -0
  1724. package/dist-browser/chunks/DSMSQCrr.js +36 -0
  1725. package/dist-browser/chunks/DSp9shD_.js +1 -0
  1726. package/dist-browser/chunks/DT0rWxA4.js +1176 -0
  1727. package/dist-browser/chunks/DTtjHrtM.js +1 -0
  1728. package/dist-browser/chunks/DV53iZve.js +64 -0
  1729. package/dist-browser/chunks/DVAMQgZs.js +1 -0
  1730. package/dist-browser/chunks/DVcRBsZ0.js +69 -0
  1731. package/dist-browser/chunks/DVrViq4W.js +1 -0
  1732. package/dist-browser/chunks/DWe0PJKb.js +1 -0
  1733. package/dist-browser/chunks/DWgUahRJ.js +1 -0
  1734. package/dist-browser/chunks/DXJRs_pC.js +1 -0
  1735. package/dist-browser/chunks/DXq97sWO.js +1 -0
  1736. package/dist-browser/chunks/DXzwsPHQ.js +8 -0
  1737. package/dist-browser/chunks/DYoIHzIt.js +2 -0
  1738. package/dist-browser/chunks/DZJGj1NY.js +1 -0
  1739. package/dist-browser/chunks/DZYUBtK-.js +10 -0
  1740. package/dist-browser/chunks/DZmRZ_iP.js +1 -0
  1741. package/dist-browser/chunks/D_MQ9Xc9.js +1 -0
  1742. package/dist-browser/chunks/D_V_oqfi.js +1 -0
  1743. package/dist-browser/chunks/D_fJrOcA.js +1 -0
  1744. package/dist-browser/chunks/DaE8j1Mj.js +1 -0
  1745. package/dist-browser/chunks/DaNJDW05.js +120 -0
  1746. package/dist-browser/chunks/DaqOKjgV.js +2 -0
  1747. package/dist-browser/chunks/DbM1VGG0.js +1 -0
  1748. package/dist-browser/chunks/DbVolxbX.js +1 -0
  1749. package/dist-browser/chunks/Dd3Azzh1.js +102 -0
  1750. package/dist-browser/chunks/Dd_HZKyk.js +1 -0
  1751. package/dist-browser/chunks/DePrIwoT.js +1 -0
  1752. package/dist-browser/chunks/Df-3V4RI.js +1 -0
  1753. package/dist-browser/chunks/DfPCBWZC.js +35 -0
  1754. package/dist-browser/chunks/DfTjtDZE.js +1 -0
  1755. package/dist-browser/chunks/Dfdpy3ar.js +1 -0
  1756. package/dist-browser/chunks/DhQi6uM8.js +1 -0
  1757. package/dist-browser/chunks/Dhq0zrZC.js +131 -0
  1758. package/dist-browser/chunks/DhrQ_H4H.js +1 -0
  1759. package/dist-browser/chunks/Di27GzYt.js +1 -0
  1760. package/dist-browser/chunks/Di8-zyqt.js +1 -0
  1761. package/dist-browser/chunks/DifZdnzu.js +1 -0
  1762. package/dist-browser/chunks/DikvOXI-.js +1 -0
  1763. package/dist-browser/chunks/Dj3lr7h3.js +33 -0
  1764. package/dist-browser/chunks/Dj8ovMlo.js +1 -0
  1765. package/dist-browser/chunks/DjcMDPrm.js +67 -0
  1766. package/dist-browser/chunks/DkVVho_1.js +1 -0
  1767. package/dist-browser/chunks/Dkh1AfX5.js +1 -0
  1768. package/dist-browser/chunks/DkwGHqUD.js +1 -0
  1769. package/dist-browser/chunks/Dl96d5U7.js +1 -0
  1770. package/dist-browser/chunks/DlW29B4u.js +3 -0
  1771. package/dist-browser/chunks/DmSNe3jl.js +387 -0
  1772. package/dist-browser/chunks/DmxSxKXn.js +1 -0
  1773. package/dist-browser/chunks/DnFdLC2j.js +1 -0
  1774. package/dist-browser/chunks/DnUyDgmE.js +1 -0
  1775. package/dist-browser/chunks/DnvK0nWc.js +1 -0
  1776. package/dist-browser/chunks/DoEd4p-l.js +1 -0
  1777. package/dist-browser/chunks/DoX7pGYd.js +140 -0
  1778. package/dist-browser/chunks/Dp6fzsZG.js +1 -0
  1779. package/dist-browser/chunks/DpM23pTz.js +33 -0
  1780. package/dist-browser/chunks/DpZZtTTL.js +2 -0
  1781. package/dist-browser/chunks/DqAbaJTn.js +1 -0
  1782. package/dist-browser/chunks/DqMSA0q-.js +1 -0
  1783. package/dist-browser/chunks/DqNrCZSo.js +1 -0
  1784. package/dist-browser/chunks/DqP3aSvp.js +43 -0
  1785. package/dist-browser/chunks/Dqi6K18W.js +1 -0
  1786. package/dist-browser/chunks/DqqKpYoS.js +2 -0
  1787. package/dist-browser/chunks/Dqqmos-r.js +1 -0
  1788. package/dist-browser/chunks/Dr26QZ_C.js +1 -0
  1789. package/dist-browser/chunks/DrRp_OBG.js +1 -0
  1790. package/dist-browser/chunks/Ds0gQyON.js +1 -0
  1791. package/dist-browser/chunks/DsNI9SjT.js +1 -0
  1792. package/dist-browser/chunks/DskxWO57.js +1 -0
  1793. package/dist-browser/chunks/DspI2fym.js +33 -0
  1794. package/dist-browser/chunks/DtbRpC-a.js +2 -0
  1795. package/dist-browser/chunks/Dtc9u0hV.js +1 -0
  1796. package/dist-browser/chunks/DtdxxwYW.js +1 -0
  1797. package/dist-browser/chunks/Du2r_IDC.js +1 -0
  1798. package/dist-browser/chunks/DuiL5B5s.js +1 -0
  1799. package/dist-browser/chunks/DvMRww-v.js +1 -0
  1800. package/dist-browser/chunks/Dvzw_jou.js +1 -0
  1801. package/dist-browser/chunks/DwsXVYGF.js +1 -0
  1802. package/dist-browser/chunks/DxVZve2V.js +89 -0
  1803. package/dist-browser/chunks/Dy4Ev-pT.js +1 -0
  1804. package/dist-browser/chunks/DyGuOmo0.js +1 -0
  1805. package/dist-browser/chunks/DyXA-iwx.js +1 -0
  1806. package/dist-browser/chunks/Dypqlsev.js +1 -0
  1807. package/dist-browser/chunks/Dyqt3CuN.js +1 -0
  1808. package/dist-browser/chunks/DyxvzuFy.js +284 -0
  1809. package/dist-browser/chunks/DzMSiy_7.js +1 -0
  1810. package/dist-browser/chunks/DzaY1F1G.js +1 -0
  1811. package/dist-browser/chunks/EtRHumNJ.js +1 -0
  1812. package/dist-browser/chunks/FASUCRk-.js +3 -0
  1813. package/dist-browser/chunks/FeUl7sn8.js +1 -0
  1814. package/dist-browser/chunks/FjuaFAN8.js +25 -0
  1815. package/dist-browser/chunks/FsV9kMlK.js +1 -0
  1816. package/dist-browser/chunks/GB4zXBMC.js +1 -0
  1817. package/dist-browser/chunks/Guirowam.js +8 -0
  1818. package/dist-browser/chunks/HJHNBZzR.js +1 -0
  1819. package/dist-browser/chunks/HOXwa5Zi.js +1 -0
  1820. package/dist-browser/chunks/HhGGA2q1.js +1 -0
  1821. package/dist-browser/chunks/HjLsj9Wb.js +1 -0
  1822. package/dist-browser/chunks/ILniMPMQ.js +1 -0
  1823. package/dist-browser/chunks/IPgW5q-o.js +1 -0
  1824. package/dist-browser/chunks/IRJFdyYz.js +1 -0
  1825. package/dist-browser/chunks/J1EyHJSp.js +1 -0
  1826. package/dist-browser/chunks/JtVcQQeX.js +5 -0
  1827. package/dist-browser/chunks/KYZpoAyE.js +1 -0
  1828. package/dist-browser/chunks/KjHCb3-W.js +2 -0
  1829. package/dist-browser/chunks/Kp8JypHd.js +441 -0
  1830. package/dist-browser/chunks/Ku6I7UKh.js +1 -0
  1831. package/dist-browser/chunks/KzprlngN.js +1 -0
  1832. package/dist-browser/chunks/L5CwTQJI.js +4 -0
  1833. package/dist-browser/chunks/L9tCceA2.js +150 -0
  1834. package/dist-browser/chunks/L_tB79W_.js +1 -0
  1835. package/dist-browser/chunks/MDiJyUbk.js +1 -0
  1836. package/dist-browser/chunks/MaXgxQlM.js +1 -0
  1837. package/dist-browser/chunks/N5x7ZUws.js +1 -0
  1838. package/dist-browser/chunks/NZYk81nU.js +1 -0
  1839. package/dist-browser/chunks/Np7O_rbA.js +1 -0
  1840. package/dist-browser/chunks/Oo8Rc01u.js +1 -0
  1841. package/dist-browser/chunks/OtECxeEN.js +9 -0
  1842. package/dist-browser/chunks/OtOkABqS.js +158 -0
  1843. package/dist-browser/chunks/Oyc0qEPK.js +1 -0
  1844. package/dist-browser/chunks/PDPf8POY.js +1 -0
  1845. package/dist-browser/chunks/QRJE7tia.js +1 -0
  1846. package/dist-browser/chunks/Q_sagimg.js +1 -0
  1847. package/dist-browser/chunks/QgFqrot_.js +1 -0
  1848. package/dist-browser/chunks/QpPH2K9r.js +1 -0
  1849. package/dist-browser/chunks/R8vFmq4f.js +1 -0
  1850. package/dist-browser/chunks/RxUw8kPH.js +1 -0
  1851. package/dist-browser/chunks/SO6iJj34.js +1 -0
  1852. package/dist-browser/chunks/SWr9_u-k.js +13 -0
  1853. package/dist-browser/chunks/TQJJL2UK.js +27 -0
  1854. package/dist-browser/chunks/UE6Xi3ol.js +1 -0
  1855. package/dist-browser/chunks/VGXLiJ0S.js +1 -0
  1856. package/dist-browser/chunks/VMH7wDAk.js +1 -0
  1857. package/dist-browser/chunks/VwXcqbG4.js +23 -0
  1858. package/dist-browser/chunks/Wmd1pmNu.js +1 -0
  1859. package/dist-browser/chunks/XTdr3vkK.js +1 -0
  1860. package/dist-browser/chunks/XaLSS-X1.js +23 -0
  1861. package/dist-browser/chunks/XhPbWY7N.js +1 -0
  1862. package/dist-browser/chunks/Y4nknrnT.js +1 -0
  1863. package/dist-browser/chunks/Y9xF8jFn.js +23 -0
  1864. package/dist-browser/chunks/_-SUJuni.js +1 -0
  1865. package/dist-browser/chunks/_M7-qabf.js +101 -0
  1866. package/dist-browser/chunks/_qsNVwXW.js +1 -0
  1867. package/dist-browser/chunks/_vvwCLWQ.js +1 -0
  1868. package/dist-browser/chunks/b6V8XMYY.js +1 -0
  1869. package/dist-browser/chunks/bA3FB4mi.js +3 -0
  1870. package/dist-browser/chunks/bAf7cF9y.js +1 -0
  1871. package/dist-browser/chunks/bhrkTdEx.js +538 -0
  1872. package/dist-browser/chunks/dFGbvMHe.js +1 -0
  1873. package/dist-browser/chunks/dOIX3hJ7.js +1 -0
  1874. package/dist-browser/chunks/eUYPiZ2p.js +1 -0
  1875. package/dist-browser/chunks/eUiHGfWU.js +1 -0
  1876. package/dist-browser/chunks/f6_vnw-E.js +1 -0
  1877. package/dist-browser/chunks/fE2ZfJiX.js +1 -0
  1878. package/dist-browser/chunks/gZQtAM7h.js +2 -0
  1879. package/dist-browser/chunks/h8XD1xl-.js +1 -0
  1880. package/dist-browser/chunks/hEdm-zUW.js +1 -0
  1881. package/dist-browser/chunks/hWCYme74.js +1 -0
  1882. package/dist-browser/chunks/hfB064S0.js +1 -0
  1883. package/dist-browser/chunks/hlEBxUea.js +1 -0
  1884. package/dist-browser/chunks/j5sGo2Pt.js +1 -0
  1885. package/dist-browser/chunks/kG0ku-oF.js +1 -0
  1886. package/dist-browser/chunks/kLNROLfT.js +1 -0
  1887. package/dist-browser/chunks/kggDnku6.js +1 -0
  1888. package/dist-browser/chunks/klRtNUrN.js +1 -0
  1889. package/dist-browser/chunks/lOD1Gn8c.js +1 -0
  1890. package/dist-browser/chunks/lrh33Ko2.js +1 -0
  1891. package/dist-browser/chunks/mB6FoGFb.js +1 -0
  1892. package/dist-browser/chunks/msmucz6Z.js +1 -0
  1893. package/dist-browser/chunks/nEtJtbDE.js +1 -0
  1894. package/dist-browser/chunks/nvwS1LmH.js +1 -0
  1895. package/dist-browser/chunks/oqmnhzmi.js +2 -0
  1896. package/dist-browser/chunks/pICTBHHN.js +1 -0
  1897. package/dist-browser/chunks/pU4H1b3r.js +43 -0
  1898. package/dist-browser/chunks/qBpAlJSP.js +1 -0
  1899. package/dist-browser/chunks/qCjqID6v.js +1 -0
  1900. package/dist-browser/chunks/r-cfH8A5.js +1 -0
  1901. package/dist-browser/chunks/rgDalb_G.js +1 -0
  1902. package/dist-browser/chunks/rolldown-runtime-hePW80VL.js +1 -0
  1903. package/dist-browser/chunks/sdmDudQj.js +1 -0
  1904. package/dist-browser/chunks/shRf5cdU.js +1 -0
  1905. package/dist-browser/chunks/tvcsfh86.js +1 -0
  1906. package/dist-browser/chunks/tz7IArSg.js +1 -0
  1907. package/dist-browser/chunks/u--BrnjZ.js +1 -0
  1908. package/dist-browser/chunks/uBIymjUX.js +1 -0
  1909. package/dist-browser/chunks/uHO_HSNA.js +1 -0
  1910. package/dist-browser/chunks/uZz_bF7-.js +1 -0
  1911. package/dist-browser/chunks/uc0Y9KUA.js +1 -0
  1912. package/dist-browser/chunks/ud6upqGO.js +2 -0
  1913. package/dist-browser/chunks/udTuD3NU.js +1 -0
  1914. package/dist-browser/chunks/ul0Kb67V.js +38 -0
  1915. package/dist-browser/chunks/uq1wJ3hU.js +322 -0
  1916. package/dist-browser/chunks/vA_owFWw.js +1 -0
  1917. package/dist-browser/chunks/vgYSnL0k.js +1 -0
  1918. package/dist-browser/chunks/vjQO9b4G.js +1 -0
  1919. package/dist-browser/chunks/vm1kntVK.js +18 -0
  1920. package/dist-browser/chunks/vnMr9U1p.js +1 -0
  1921. package/dist-browser/chunks/vyik5ymL.js +1 -0
  1922. package/dist-browser/chunks/w2RB3fs9.js +1 -0
  1923. package/dist-browser/chunks/wmdxOiEL.js +1 -0
  1924. package/dist-browser/chunks/xtpWQ17d.js +27 -0
  1925. package/dist-browser/chunks/yRMgu4ay.js +3 -0
  1926. package/dist-browser/chunks/yYrq3lUc.js +42 -0
  1927. package/dist-browser/chunks/yieoIIce.js +1 -0
  1928. package/dist-browser/chunks/yzr1keSX.js +38 -0
  1929. package/dist-browser/chunks/z94mqM9o.js +1 -0
  1930. package/dist-browser/chunks/zSWKwMId.js +1 -0
  1931. package/dist-browser/importmap.json +1761 -0
  1932. package/dist-browser/koota/react.js +1 -0
  1933. package/dist-browser/koota.js +1 -0
  1934. package/dist-browser/postprocessing.js +1 -0
  1935. package/dist-browser/react/jsx-runtime.js +1 -0
  1936. package/dist-browser/react-dom/client.js +1 -0
  1937. package/dist-browser/react-dom.js +1 -0
  1938. package/dist-browser/react.js +1 -0
  1939. package/dist-browser/release.json +11655 -0
  1940. package/dist-browser/three/addons/Addons.js +1 -0
  1941. package/dist-browser/three/addons/animation/AnimationClipCreator.js +1 -0
  1942. package/dist-browser/three/addons/animation/CCDIKSolver.js +1 -0
  1943. package/dist-browser/three/addons/capabilities/WebGL.js +1 -0
  1944. package/dist-browser/three/addons/capabilities/WebGPU.js +1 -0
  1945. package/dist-browser/three/addons/controls/ArcballControls.js +1 -0
  1946. package/dist-browser/three/addons/controls/DragControls.js +1 -0
  1947. package/dist-browser/three/addons/controls/FirstPersonControls.js +1 -0
  1948. package/dist-browser/three/addons/controls/FlyControls.js +1 -0
  1949. package/dist-browser/three/addons/controls/MapControls.js +1 -0
  1950. package/dist-browser/three/addons/controls/OrbitControls.js +1 -0
  1951. package/dist-browser/three/addons/controls/PointerLockControls.js +1 -0
  1952. package/dist-browser/three/addons/controls/TrackballControls.js +1 -0
  1953. package/dist-browser/three/addons/controls/TransformControls.js +1 -0
  1954. package/dist-browser/three/addons/csm/CSM.js +1 -0
  1955. package/dist-browser/three/addons/csm/CSMFrustum.js +1 -0
  1956. package/dist-browser/three/addons/csm/CSMHelper.js +1 -0
  1957. package/dist-browser/three/addons/csm/CSMShader.js +1 -0
  1958. package/dist-browser/three/addons/csm/CSMShadowNode.js +1 -0
  1959. package/dist-browser/three/addons/curves/CurveExtras.js +1 -0
  1960. package/dist-browser/three/addons/curves/NURBSCurve.js +1 -0
  1961. package/dist-browser/three/addons/curves/NURBSSurface.js +1 -0
  1962. package/dist-browser/three/addons/curves/NURBSUtils.js +1 -0
  1963. package/dist-browser/three/addons/curves/NURBSVolume.js +1 -0
  1964. package/dist-browser/three/addons/effects/AnaglyphEffect.js +1 -0
  1965. package/dist-browser/three/addons/effects/AsciiEffect.js +1 -0
  1966. package/dist-browser/three/addons/effects/OutlineEffect.js +1 -0
  1967. package/dist-browser/three/addons/effects/ParallaxBarrierEffect.js +1 -0
  1968. package/dist-browser/three/addons/effects/StereoEffect.js +1 -0
  1969. package/dist-browser/three/addons/environments/ColorEnvironment.js +1 -0
  1970. package/dist-browser/three/addons/environments/DebugEnvironment.js +1 -0
  1971. package/dist-browser/three/addons/environments/RoomEnvironment.js +1 -0
  1972. package/dist-browser/three/addons/exporters/DRACOExporter.js +1 -0
  1973. package/dist-browser/three/addons/exporters/EXRExporter.js +1 -0
  1974. package/dist-browser/three/addons/exporters/GLTFExporter.js +1 -0
  1975. package/dist-browser/three/addons/exporters/KTX2Exporter.js +1 -0
  1976. package/dist-browser/three/addons/exporters/OBJExporter.js +1 -0
  1977. package/dist-browser/three/addons/exporters/PLYExporter.js +1 -0
  1978. package/dist-browser/three/addons/exporters/STLExporter.js +1 -0
  1979. package/dist-browser/three/addons/exporters/USDZExporter.js +1 -0
  1980. package/dist-browser/three/addons/generators/CityGenerator.js +1 -0
  1981. package/dist-browser/three/addons/generators/ForestGenerator.js +1 -0
  1982. package/dist-browser/three/addons/generators/TerrainGenerator.js +1 -0
  1983. package/dist-browser/three/addons/generators/TreeGenerator.js +1 -0
  1984. package/dist-browser/three/addons/generators/city/BenchGenerator.js +1 -0
  1985. package/dist-browser/three/addons/generators/city/CarGenerator.js +1 -0
  1986. package/dist-browser/three/addons/generators/city/CityGeneratorUtils.js +1 -0
  1987. package/dist-browser/three/addons/generators/city/HydrantGenerator.js +1 -0
  1988. package/dist-browser/three/addons/generators/city/InstancedMeshGenerator.js +1 -0
  1989. package/dist-browser/three/addons/generators/city/PersonGenerator.js +1 -0
  1990. package/dist-browser/three/addons/generators/city/SidewalkGenerator.js +1 -0
  1991. package/dist-browser/three/addons/generators/city/SkyscraperGenerator.js +1 -0
  1992. package/dist-browser/three/addons/generators/city/StreetTreeGenerator.js +1 -0
  1993. package/dist-browser/three/addons/generators/city/StreetlightGenerator.js +1 -0
  1994. package/dist-browser/three/addons/generators/city/TrafficlightGenerator.js +1 -0
  1995. package/dist-browser/three/addons/generators/city/TrashcanGenerator.js +1 -0
  1996. package/dist-browser/three/addons/geometries/BoxLineGeometry.js +1 -0
  1997. package/dist-browser/three/addons/geometries/ConvexGeometry.js +1 -0
  1998. package/dist-browser/three/addons/geometries/DecalGeometry.js +1 -0
  1999. package/dist-browser/three/addons/geometries/LoftGeometry.js +1 -0
  2000. package/dist-browser/three/addons/geometries/ParametricFunctions.js +1 -0
  2001. package/dist-browser/three/addons/geometries/ParametricGeometry.js +1 -0
  2002. package/dist-browser/three/addons/geometries/RoundedBoxGeometry.js +1 -0
  2003. package/dist-browser/three/addons/geometries/TeapotGeometry.js +1 -0
  2004. package/dist-browser/three/addons/geometries/TextGeometry.js +1 -0
  2005. package/dist-browser/three/addons/gpgpu/BitonicSort.js +1 -0
  2006. package/dist-browser/three/addons/gpgpu/CountingSort.js +1 -0
  2007. package/dist-browser/three/addons/helpers/AnimationPathHelper.js +1 -0
  2008. package/dist-browser/three/addons/helpers/LightProbeGridHelper.js +1 -0
  2009. package/dist-browser/three/addons/helpers/LightProbeGridHelperWebGL.js +80 -0
  2010. package/dist-browser/three/addons/helpers/LightProbeHelper.js +1 -0
  2011. package/dist-browser/three/addons/helpers/LightProbeHelperGPU.js +1 -0
  2012. package/dist-browser/three/addons/helpers/OctreeHelper.js +1 -0
  2013. package/dist-browser/three/addons/helpers/PositionalAudioHelper.js +1 -0
  2014. package/dist-browser/three/addons/helpers/RapierHelper.js +1 -0
  2015. package/dist-browser/three/addons/helpers/RectAreaLightHelper.js +1 -0
  2016. package/dist-browser/three/addons/helpers/TextureHelper.js +1 -0
  2017. package/dist-browser/three/addons/helpers/TextureHelperGPU.js +1 -0
  2018. package/dist-browser/three/addons/helpers/VertexNormalsHelper.js +1 -0
  2019. package/dist-browser/three/addons/helpers/VertexTangentsHelper.js +1 -0
  2020. package/dist-browser/three/addons/helpers/ViewHelper.js +1 -0
  2021. package/dist-browser/three/addons/inspector/Extension.js +1 -0
  2022. package/dist-browser/three/addons/inspector/Inspector.js +1 -0
  2023. package/dist-browser/three/addons/inspector/RendererInspector.js +1 -0
  2024. package/dist-browser/three/addons/inspector/extensions/color-grading/ColorGrading.js +1 -0
  2025. package/dist-browser/three/addons/inspector/extensions/color-grading/ColorWheel.js +1 -0
  2026. package/dist-browser/three/addons/inspector/extensions/color-grading/CurveEditor.js +1 -0
  2027. package/dist-browser/three/addons/inspector/extensions/color-grading/LUT3DStyle.js +1 -0
  2028. package/dist-browser/three/addons/inspector/extensions/color-grading/LUTMath.js +1 -0
  2029. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/BrightnessModule.js +1 -0
  2030. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ColorWheelModule.js +1 -0
  2031. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ContrastModule.js +1 -0
  2032. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/CurvesModule.js +1 -0
  2033. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureHueModule.js +1 -0
  2034. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureModule.js +1 -0
  2035. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/HueModule.js +1 -0
  2036. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ImportedCubeModule.js +1 -0
  2037. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/Module.js +1 -0
  2038. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/OutputModule.js +1 -0
  2039. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/RendererModule.js +1 -0
  2040. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SatVibranceModule.js +1 -0
  2041. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SaturationModule.js +1 -0
  2042. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/VibranceModule.js +1 -0
  2043. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +1 -0
  2044. package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -0
  2045. package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -0
  2046. package/dist-browser/three/addons/inspector/tabs/Console.js +1 -0
  2047. package/dist-browser/three/addons/inspector/tabs/Memory.js +1 -0
  2048. package/dist-browser/three/addons/inspector/tabs/Parameters.js +1 -0
  2049. package/dist-browser/three/addons/inspector/tabs/Performance.js +1 -0
  2050. package/dist-browser/three/addons/inspector/tabs/Settings.js +1 -0
  2051. package/dist-browser/three/addons/inspector/tabs/Timeline.js +1 -0
  2052. package/dist-browser/three/addons/inspector/tabs/Viewer.js +1 -0
  2053. package/dist-browser/three/addons/inspector/ui/Graph.js +1 -0
  2054. package/dist-browser/three/addons/inspector/ui/Item.js +1 -0
  2055. package/dist-browser/three/addons/inspector/ui/List.js +1 -0
  2056. package/dist-browser/three/addons/inspector/ui/Profiler.js +1 -0
  2057. package/dist-browser/three/addons/inspector/ui/Style.js +1 -0
  2058. package/dist-browser/three/addons/inspector/ui/Tab.js +1 -0
  2059. package/dist-browser/three/addons/inspector/ui/Values.js +1 -0
  2060. package/dist-browser/three/addons/inspector/ui/utils.js +1 -0
  2061. package/dist-browser/three/addons/interaction/InteractionManager.js +1 -0
  2062. package/dist-browser/three/addons/interactive/HTMLMesh.js +1 -0
  2063. package/dist-browser/three/addons/interactive/InteractiveGroup.js +1 -0
  2064. package/dist-browser/three/addons/interactive/SelectionBox.js +1 -0
  2065. package/dist-browser/three/addons/interactive/SelectionHelper.js +1 -0
  2066. package/dist-browser/three/addons/libs/chevrotain.module.min.js +1 -0
  2067. package/dist-browser/three/addons/libs/demuxer_mp4.js +1 -0
  2068. package/dist-browser/three/addons/libs/fflate.module.js +1 -0
  2069. package/dist-browser/three/addons/libs/ktx-parse.module.js +1 -0
  2070. package/dist-browser/three/addons/libs/lil-gui.module.min.js +4 -0
  2071. package/dist-browser/three/addons/libs/meshopt_clusterizer.module.js +1 -0
  2072. package/dist-browser/three/addons/libs/meshopt_decoder.module.js +1 -0
  2073. package/dist-browser/three/addons/libs/meshopt_simplifier.module.js +1 -0
  2074. package/dist-browser/three/addons/libs/mikktspace.module.js +1 -0
  2075. package/dist-browser/three/addons/libs/motion-controllers.module.js +1 -0
  2076. package/dist-browser/three/addons/libs/potpack.module.js +1 -0
  2077. package/dist-browser/three/addons/libs/stats.module.js +1 -0
  2078. package/dist-browser/three/addons/libs/surfaceNet.js +1 -0
  2079. package/dist-browser/three/addons/libs/tween.module.js +1 -0
  2080. package/dist-browser/three/addons/libs/utif.module.js +1 -0
  2081. package/dist-browser/three/addons/libs/zstddec.module.js +1 -0
  2082. package/dist-browser/three/addons/lighting/ClusteredLighting.js +1 -0
  2083. package/dist-browser/three/addons/lighting/DynamicLighting.js +1 -0
  2084. package/dist-browser/three/addons/lighting/LightProbeGrid.js +1 -0
  2085. package/dist-browser/three/addons/lighting/LightProbeGridUtils.js +1 -0
  2086. package/dist-browser/three/addons/lighting/LightProbeGridWebGL.js +135 -0
  2087. package/dist-browser/three/addons/lighting/vxgi/VXGIConeTracer.js +1 -0
  2088. package/dist-browser/three/addons/lighting/vxgi/VXGINode.js +1 -0
  2089. package/dist-browser/three/addons/lighting/vxgi/VXGISceneCollector.js +1 -0
  2090. package/dist-browser/three/addons/lighting/vxgi/VXGIVolume.js +1 -0
  2091. package/dist-browser/three/addons/lights/LightProbeGenerator.js +1 -0
  2092. package/dist-browser/three/addons/lights/RectAreaLightTexturesLib.js +1 -0
  2093. package/dist-browser/three/addons/lights/RectAreaLightUniformsLib.js +1 -0
  2094. package/dist-browser/three/addons/lights/SunLight.js +1 -0
  2095. package/dist-browser/three/addons/lights/SunLightNode.js +1 -0
  2096. package/dist-browser/three/addons/lights/SunLightShadow.js +1 -0
  2097. package/dist-browser/three/addons/lights/SunShadowNode.js +1 -0
  2098. package/dist-browser/three/addons/lines/Line2.js +1 -0
  2099. package/dist-browser/three/addons/lines/LineGeometry.js +1 -0
  2100. package/dist-browser/three/addons/lines/LineMaterial.js +1 -0
  2101. package/dist-browser/three/addons/lines/LineSegments2.js +1 -0
  2102. package/dist-browser/three/addons/lines/LineSegmentsGeometry.js +1 -0
  2103. package/dist-browser/three/addons/lines/Wireframe.js +1 -0
  2104. package/dist-browser/three/addons/lines/WireframeGeometry2.js +1 -0
  2105. package/dist-browser/three/addons/lines/webgpu/Line2.js +1 -0
  2106. package/dist-browser/three/addons/lines/webgpu/LineSegments2.js +1 -0
  2107. package/dist-browser/three/addons/lines/webgpu/Wireframe.js +1 -0
  2108. package/dist-browser/three/addons/loaders/3DMLoader.js +1 -0
  2109. package/dist-browser/three/addons/loaders/3MFLoader.js +1 -0
  2110. package/dist-browser/three/addons/loaders/AMFLoader.js +1 -0
  2111. package/dist-browser/three/addons/loaders/BVHLoader.js +1 -0
  2112. package/dist-browser/three/addons/loaders/ColladaLoader.js +1 -0
  2113. package/dist-browser/three/addons/loaders/DDSLoader.js +1 -0
  2114. package/dist-browser/three/addons/loaders/DRACOLoader.js +1 -0
  2115. package/dist-browser/three/addons/loaders/EXRLoader.js +1 -0
  2116. package/dist-browser/three/addons/loaders/FBXLoader.js +1 -0
  2117. package/dist-browser/three/addons/loaders/FontLoader.js +1 -0
  2118. package/dist-browser/three/addons/loaders/GCodeLoader.js +1 -0
  2119. package/dist-browser/three/addons/loaders/GLTFGaussianSplatLoaderExtension.js +1 -0
  2120. package/dist-browser/three/addons/loaders/GLTFLoader.js +1 -0
  2121. package/dist-browser/three/addons/loaders/GaussianSplatPLYLoader.js +1 -0
  2122. package/dist-browser/three/addons/loaders/HDRCubeTextureLoader.js +1 -0
  2123. package/dist-browser/three/addons/loaders/HDRLoader.js +1 -0
  2124. package/dist-browser/three/addons/loaders/IESLoader.js +1 -0
  2125. package/dist-browser/three/addons/loaders/KMZLoader.js +1 -0
  2126. package/dist-browser/three/addons/loaders/KSPLATLoader.js +1 -0
  2127. package/dist-browser/three/addons/loaders/KTX2Loader.js +1 -0
  2128. package/dist-browser/three/addons/loaders/KTXLoader.js +1 -0
  2129. package/dist-browser/three/addons/loaders/LDrawLoader.js +1 -0
  2130. package/dist-browser/three/addons/loaders/LUT3dlLoader.js +1 -0
  2131. package/dist-browser/three/addons/loaders/LUTCubeLoader.js +1 -0
  2132. package/dist-browser/three/addons/loaders/LUTImageLoader.js +1 -0
  2133. package/dist-browser/three/addons/loaders/LWOLoader.js +1 -0
  2134. package/dist-browser/three/addons/loaders/MD2Loader.js +1 -0
  2135. package/dist-browser/three/addons/loaders/MDDLoader.js +1 -0
  2136. package/dist-browser/three/addons/loaders/MTLLoader.js +1 -0
  2137. package/dist-browser/three/addons/loaders/MaterialXLoader.js +1 -0
  2138. package/dist-browser/three/addons/loaders/NRRDLoader.js +1 -0
  2139. package/dist-browser/three/addons/loaders/OBJLoader.js +1 -0
  2140. package/dist-browser/three/addons/loaders/PCDLoader.js +1 -0
  2141. package/dist-browser/three/addons/loaders/PDBLoader.js +1 -0
  2142. package/dist-browser/three/addons/loaders/PLYLoader.js +1 -0
  2143. package/dist-browser/three/addons/loaders/PVRLoader.js +1 -0
  2144. package/dist-browser/three/addons/loaders/RGBELoader.js +1 -0
  2145. package/dist-browser/three/addons/loaders/SPLATLoader.js +1 -0
  2146. package/dist-browser/three/addons/loaders/SPZLoader.js +1 -0
  2147. package/dist-browser/three/addons/loaders/STLLoader.js +1 -0
  2148. package/dist-browser/three/addons/loaders/SVGLoader.js +1 -0
  2149. package/dist-browser/three/addons/loaders/TDSLoader.js +1 -0
  2150. package/dist-browser/three/addons/loaders/TGALoader.js +1 -0
  2151. package/dist-browser/three/addons/loaders/TIFFLoader.js +1 -0
  2152. package/dist-browser/three/addons/loaders/TTFLoader.js +1 -0
  2153. package/dist-browser/three/addons/loaders/USDLoader.js +1 -0
  2154. package/dist-browser/three/addons/loaders/USDZLoader.js +1 -0
  2155. package/dist-browser/three/addons/loaders/UltraHDRLoader.js +1 -0
  2156. package/dist-browser/three/addons/loaders/VOXLoader.js +1 -0
  2157. package/dist-browser/three/addons/loaders/VRMLLoader.js +1 -0
  2158. package/dist-browser/three/addons/loaders/VTKLoader.js +1 -0
  2159. package/dist-browser/three/addons/loaders/XYZLoader.js +1 -0
  2160. package/dist-browser/three/addons/loaders/collada/ColladaComposer.js +1 -0
  2161. package/dist-browser/three/addons/loaders/collada/ColladaParser.js +1 -0
  2162. package/dist-browser/three/addons/loaders/lwo/IFFParser.js +1 -0
  2163. package/dist-browser/three/addons/loaders/lwo/LWO2Parser.js +1 -0
  2164. package/dist-browser/three/addons/loaders/lwo/LWO3Parser.js +1 -0
  2165. package/dist-browser/three/addons/loaders/materialx/MaterialXArchive.js +1 -0
  2166. package/dist-browser/three/addons/loaders/materialx/MaterialXDocument.js +1 -0
  2167. package/dist-browser/three/addons/loaders/materialx/MaterialXHextile.js +1 -0
  2168. package/dist-browser/three/addons/loaders/materialx/MaterialXInterfaceValidation.js +1 -0
  2169. package/dist-browser/three/addons/loaders/materialx/MaterialXLog.js +1 -0
  2170. package/dist-browser/three/addons/loaders/materialx/MaterialXNodeInterfaceRegistry.js +1 -0
  2171. package/dist-browser/three/addons/loaders/materialx/MaterialXNodeLibrary.js +1 -0
  2172. package/dist-browser/three/addons/loaders/materialx/MaterialXSurfaceMappings.js +1 -0
  2173. package/dist-browser/three/addons/loaders/materialx/MaterialXUtils.js +1 -0
  2174. package/dist-browser/three/addons/loaders/materialx/compile/MaterialXCompileRegistry.js +1 -0
  2175. package/dist-browser/three/addons/loaders/materialx/parse/MaterialXParser.js +1 -0
  2176. package/dist-browser/three/addons/loaders/usd/USDAParser.js +1 -0
  2177. package/dist-browser/three/addons/loaders/usd/USDCParser.js +1 -0
  2178. package/dist-browser/three/addons/loaders/usd/USDComposer.js +1 -0
  2179. package/dist-browser/three/addons/materials/LDrawConditionalLineMaterial.js +1 -0
  2180. package/dist-browser/three/addons/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  2181. package/dist-browser/three/addons/materials/WoodNodeMaterial.js +42 -0
  2182. package/dist-browser/three/addons/math/Capsule.js +1 -0
  2183. package/dist-browser/three/addons/math/ColorConverter.js +1 -0
  2184. package/dist-browser/three/addons/math/ColorSpaces.js +1 -0
  2185. package/dist-browser/three/addons/math/ConvexHull.js +1 -0
  2186. package/dist-browser/three/addons/math/ImprovedNoise.js +1 -0
  2187. package/dist-browser/three/addons/math/Lut.js +1 -0
  2188. package/dist-browser/three/addons/math/MeshSurfaceSampler.js +1 -0
  2189. package/dist-browser/three/addons/math/OBB.js +1 -0
  2190. package/dist-browser/three/addons/math/Octree.js +1 -0
  2191. package/dist-browser/three/addons/math/SimplexNoise.js +1 -0
  2192. package/dist-browser/three/addons/misc/ConvexObjectBreaker.js +1 -0
  2193. package/dist-browser/three/addons/misc/GPUComputationRenderer.js +1 -0
  2194. package/dist-browser/three/addons/misc/Gyroscope.js +1 -0
  2195. package/dist-browser/three/addons/misc/MD2Character.js +1 -0
  2196. package/dist-browser/three/addons/misc/MD2CharacterComplex.js +1 -0
  2197. package/dist-browser/three/addons/misc/MorphAnimMesh.js +1 -0
  2198. package/dist-browser/three/addons/misc/MorphBlendMesh.js +1 -0
  2199. package/dist-browser/three/addons/misc/ProgressiveLightMap.js +1 -0
  2200. package/dist-browser/three/addons/misc/ProgressiveLightMapGPU.js +1 -0
  2201. package/dist-browser/three/addons/misc/RollerCoaster.js +1 -0
  2202. package/dist-browser/three/addons/misc/Sculptor.js +1 -0
  2203. package/dist-browser/three/addons/misc/SculptorMesh.js +1 -0
  2204. package/dist-browser/three/addons/misc/SculptorTools.js +1 -0
  2205. package/dist-browser/three/addons/misc/SculptorUtils.js +1 -0
  2206. package/dist-browser/three/addons/misc/TileCreasedNormalsPlugin.js +1 -0
  2207. package/dist-browser/three/addons/misc/TubePainter.js +1 -0
  2208. package/dist-browser/three/addons/misc/Volume.js +1 -0
  2209. package/dist-browser/three/addons/misc/VolumeSlice.js +1 -0
  2210. package/dist-browser/three/addons/modifiers/CurveModifier.js +1 -0
  2211. package/dist-browser/three/addons/modifiers/CurveModifierGPU.js +1 -0
  2212. package/dist-browser/three/addons/modifiers/EdgeSplitModifier.js +1 -0
  2213. package/dist-browser/three/addons/modifiers/SimplifyModifier.js +1 -0
  2214. package/dist-browser/three/addons/modifiers/TessellateModifier.js +1 -0
  2215. package/dist-browser/three/addons/objects/GaussianSplat.js +1 -0
  2216. package/dist-browser/three/addons/objects/GroundedSkybox.js +1 -0
  2217. package/dist-browser/three/addons/objects/Lensflare.js +1 -0
  2218. package/dist-browser/three/addons/objects/LensflareMesh.js +1 -0
  2219. package/dist-browser/three/addons/objects/MarchingCubes.js +1 -0
  2220. package/dist-browser/three/addons/objects/Reflector.js +1 -0
  2221. package/dist-browser/three/addons/objects/ReflectorForSSRPass.js +1 -0
  2222. package/dist-browser/three/addons/objects/Refractor.js +1 -0
  2223. package/dist-browser/three/addons/objects/ShadowMesh.js +1 -0
  2224. package/dist-browser/three/addons/objects/Sky.js +1 -0
  2225. package/dist-browser/three/addons/objects/SkyMesh.js +1 -0
  2226. package/dist-browser/three/addons/objects/Water.js +1 -0
  2227. package/dist-browser/three/addons/objects/Water2.js +1 -0
  2228. package/dist-browser/three/addons/objects/Water2Mesh.js +1 -0
  2229. package/dist-browser/three/addons/objects/WaterMesh.js +1 -0
  2230. package/dist-browser/three/addons/offscreen/jank.js +1 -0
  2231. package/dist-browser/three/addons/offscreen/offscreen.js +0 -0
  2232. package/dist-browser/three/addons/offscreen/scene.js +1 -0
  2233. package/dist-browser/three/addons/physics/AmmoPhysics.js +1 -0
  2234. package/dist-browser/three/addons/physics/JoltPhysics.js +1 -0
  2235. package/dist-browser/three/addons/physics/RapierPhysics.js +1 -0
  2236. package/dist-browser/three/addons/postprocessing/AfterimagePass.js +1 -0
  2237. package/dist-browser/three/addons/postprocessing/BloomPass.js +1 -0
  2238. package/dist-browser/three/addons/postprocessing/BokehPass.js +1 -0
  2239. package/dist-browser/three/addons/postprocessing/ClearPass.js +1 -0
  2240. package/dist-browser/three/addons/postprocessing/CubeTexturePass.js +1 -0
  2241. package/dist-browser/three/addons/postprocessing/DotScreenPass.js +1 -0
  2242. package/dist-browser/three/addons/postprocessing/EffectComposer.js +1 -0
  2243. package/dist-browser/three/addons/postprocessing/FXAAPass.js +1 -0
  2244. package/dist-browser/three/addons/postprocessing/FilmPass.js +1 -0
  2245. package/dist-browser/three/addons/postprocessing/GTAOPass.js +1 -0
  2246. package/dist-browser/three/addons/postprocessing/GlitchPass.js +1 -0
  2247. package/dist-browser/three/addons/postprocessing/HalftonePass.js +1 -0
  2248. package/dist-browser/three/addons/postprocessing/LUTPass.js +1 -0
  2249. package/dist-browser/three/addons/postprocessing/MaskPass.js +1 -0
  2250. package/dist-browser/three/addons/postprocessing/OutlinePass.js +1 -0
  2251. package/dist-browser/three/addons/postprocessing/OutputPass.js +1 -0
  2252. package/dist-browser/three/addons/postprocessing/Pass.js +1 -0
  2253. package/dist-browser/three/addons/postprocessing/RenderPass.js +1 -0
  2254. package/dist-browser/three/addons/postprocessing/RenderPixelatedPass.js +1 -0
  2255. package/dist-browser/three/addons/postprocessing/RenderTransitionPass.js +1 -0
  2256. package/dist-browser/three/addons/postprocessing/SAOPass.js +1 -0
  2257. package/dist-browser/three/addons/postprocessing/SMAAPass.js +1 -0
  2258. package/dist-browser/three/addons/postprocessing/SSAARenderPass.js +1 -0
  2259. package/dist-browser/three/addons/postprocessing/SSAOPass.js +1 -0
  2260. package/dist-browser/three/addons/postprocessing/SSRPass.js +1 -0
  2261. package/dist-browser/three/addons/postprocessing/SavePass.js +1 -0
  2262. package/dist-browser/three/addons/postprocessing/ShaderPass.js +1 -0
  2263. package/dist-browser/three/addons/postprocessing/TAARenderPass.js +1 -0
  2264. package/dist-browser/three/addons/postprocessing/TexturePass.js +1 -0
  2265. package/dist-browser/three/addons/postprocessing/UnrealBloomPass.js +1 -0
  2266. package/dist-browser/three/addons/renderers/CSS2DRenderer.js +1 -0
  2267. package/dist-browser/three/addons/renderers/CSS3DRenderer.js +1 -0
  2268. package/dist-browser/three/addons/renderers/Projector.js +1 -0
  2269. package/dist-browser/three/addons/renderers/SVGRenderer.js +1 -0
  2270. package/dist-browser/three/addons/shaders/ACESFilmicToneMappingShader.js +1 -0
  2271. package/dist-browser/three/addons/shaders/AfterimageShader.js +1 -0
  2272. package/dist-browser/three/addons/shaders/BasicShader.js +1 -0
  2273. package/dist-browser/three/addons/shaders/BleachBypassShader.js +1 -0
  2274. package/dist-browser/three/addons/shaders/BlendShader.js +1 -0
  2275. package/dist-browser/three/addons/shaders/BokehShader.js +1 -0
  2276. package/dist-browser/three/addons/shaders/BokehShader2.js +1 -0
  2277. package/dist-browser/three/addons/shaders/BrightnessContrastShader.js +1 -0
  2278. package/dist-browser/three/addons/shaders/ColorCorrectionShader.js +1 -0
  2279. package/dist-browser/three/addons/shaders/ColorifyShader.js +1 -0
  2280. package/dist-browser/three/addons/shaders/ConvolutionShader.js +1 -0
  2281. package/dist-browser/three/addons/shaders/CopyShader.js +1 -0
  2282. package/dist-browser/three/addons/shaders/DOFMipMapShader.js +1 -0
  2283. package/dist-browser/three/addons/shaders/DepthLimitedBlurShader.js +1 -0
  2284. package/dist-browser/three/addons/shaders/DigitalGlitch.js +1 -0
  2285. package/dist-browser/three/addons/shaders/DotScreenShader.js +1 -0
  2286. package/dist-browser/three/addons/shaders/ExposureShader.js +1 -0
  2287. package/dist-browser/three/addons/shaders/FXAAShader.js +1 -0
  2288. package/dist-browser/three/addons/shaders/FilmShader.js +1 -0
  2289. package/dist-browser/three/addons/shaders/FocusShader.js +1 -0
  2290. package/dist-browser/three/addons/shaders/FreiChenShader.js +1 -0
  2291. package/dist-browser/three/addons/shaders/GTAOShader.js +1 -0
  2292. package/dist-browser/three/addons/shaders/GammaCorrectionShader.js +1 -0
  2293. package/dist-browser/three/addons/shaders/HalftoneShader.js +1 -0
  2294. package/dist-browser/three/addons/shaders/HorizontalBlurShader.js +1 -0
  2295. package/dist-browser/three/addons/shaders/HorizontalTiltShiftShader.js +1 -0
  2296. package/dist-browser/three/addons/shaders/HueSaturationShader.js +1 -0
  2297. package/dist-browser/three/addons/shaders/KaleidoShader.js +1 -0
  2298. package/dist-browser/three/addons/shaders/LuminosityHighPassShader.js +1 -0
  2299. package/dist-browser/three/addons/shaders/LuminosityShader.js +1 -0
  2300. package/dist-browser/three/addons/shaders/MirrorShader.js +1 -0
  2301. package/dist-browser/three/addons/shaders/NormalMapShader.js +1 -0
  2302. package/dist-browser/three/addons/shaders/OutputShader.js +1 -0
  2303. package/dist-browser/three/addons/shaders/PoissonDenoiseShader.js +1 -0
  2304. package/dist-browser/three/addons/shaders/RGBShiftShader.js +1 -0
  2305. package/dist-browser/three/addons/shaders/SAOShader.js +1 -0
  2306. package/dist-browser/three/addons/shaders/SMAAShader.js +1 -0
  2307. package/dist-browser/three/addons/shaders/SSAOShader.js +1 -0
  2308. package/dist-browser/three/addons/shaders/SSRShader.js +1 -0
  2309. package/dist-browser/three/addons/shaders/SepiaShader.js +1 -0
  2310. package/dist-browser/three/addons/shaders/SobelOperatorShader.js +1 -0
  2311. package/dist-browser/three/addons/shaders/SubsurfaceScatteringShader.js +1 -0
  2312. package/dist-browser/three/addons/shaders/TechnicolorShader.js +1 -0
  2313. package/dist-browser/three/addons/shaders/ToonShader.js +1 -0
  2314. package/dist-browser/three/addons/shaders/TriangleBlurShader.js +1 -0
  2315. package/dist-browser/three/addons/shaders/UnpackDepthRGBAShader.js +1 -0
  2316. package/dist-browser/three/addons/shaders/VelocityShader.js +1 -0
  2317. package/dist-browser/three/addons/shaders/VerticalBlurShader.js +1 -0
  2318. package/dist-browser/three/addons/shaders/VerticalTiltShiftShader.js +1 -0
  2319. package/dist-browser/three/addons/shaders/VignetteShader.js +1 -0
  2320. package/dist-browser/three/addons/shaders/VolumeShader.js +1 -0
  2321. package/dist-browser/three/addons/shaders/WaterRefractionShader.js +1 -0
  2322. package/dist-browser/three/addons/textures/FlakesTexture.js +1 -0
  2323. package/dist-browser/three/addons/transpiler/AST.js +1 -0
  2324. package/dist-browser/three/addons/transpiler/GLSLDecoder.js +1 -0
  2325. package/dist-browser/three/addons/transpiler/Linker.js +1 -0
  2326. package/dist-browser/three/addons/transpiler/ShaderToyDecoder.js +1 -0
  2327. package/dist-browser/three/addons/transpiler/TSLEncoder.js +55 -0
  2328. package/dist-browser/three/addons/transpiler/Transpiler.js +1 -0
  2329. package/dist-browser/three/addons/transpiler/TranspilerUtils.js +1 -0
  2330. package/dist-browser/three/addons/transpiler/WGSLEncoder.js +30 -0
  2331. package/dist-browser/three/addons/tsl/WebGLNodesHandler.js +1 -0
  2332. package/dist-browser/three/addons/tsl/display/AfterImageNode.js +1 -0
  2333. package/dist-browser/three/addons/tsl/display/AnaglyphPassNode.js +1 -0
  2334. package/dist-browser/three/addons/tsl/display/BilateralBlurNode.js +1 -0
  2335. package/dist-browser/three/addons/tsl/display/BleachBypass.js +1 -0
  2336. package/dist-browser/three/addons/tsl/display/BloomNode.js +1 -0
  2337. package/dist-browser/three/addons/tsl/display/CRT.js +1 -0
  2338. package/dist-browser/three/addons/tsl/display/ChromaticAberrationNode.js +1 -0
  2339. package/dist-browser/three/addons/tsl/display/DenoiseNode.js +1 -0
  2340. package/dist-browser/three/addons/tsl/display/DepthOfFieldNode.js +1 -0
  2341. package/dist-browser/three/addons/tsl/display/DotScreenNode.js +1 -0
  2342. package/dist-browser/three/addons/tsl/display/FSR1Node.js +1 -0
  2343. package/dist-browser/three/addons/tsl/display/FXAANode.js +1 -0
  2344. package/dist-browser/three/addons/tsl/display/FilmNode.js +1 -0
  2345. package/dist-browser/three/addons/tsl/display/GTAONode.js +1 -0
  2346. package/dist-browser/three/addons/tsl/display/GaussianBlurNode.js +1 -0
  2347. package/dist-browser/three/addons/tsl/display/GodraysNode.js +1 -0
  2348. package/dist-browser/three/addons/tsl/display/ImportanceSampledEnvironment.js +1 -0
  2349. package/dist-browser/three/addons/tsl/display/LensflareNode.js +1 -0
  2350. package/dist-browser/three/addons/tsl/display/Lut3DNode.js +1 -0
  2351. package/dist-browser/three/addons/tsl/display/MotionBlur.js +1 -0
  2352. package/dist-browser/three/addons/tsl/display/OITPassNode.js +1 -0
  2353. package/dist-browser/three/addons/tsl/display/OutlineNode.js +1 -0
  2354. package/dist-browser/three/addons/tsl/display/ParallaxBarrierPassNode.js +1 -0
  2355. package/dist-browser/three/addons/tsl/display/PixelationPassNode.js +1 -0
  2356. package/dist-browser/three/addons/tsl/display/RGBShiftNode.js +1 -0
  2357. package/dist-browser/three/addons/tsl/display/RecurrentDenoiseNode.js +1 -0
  2358. package/dist-browser/three/addons/tsl/display/RetroPassNode.js +1 -0
  2359. package/dist-browser/three/addons/tsl/display/SMAANode.js +1 -0
  2360. package/dist-browser/three/addons/tsl/display/SSAAPassNode.js +1 -0
  2361. package/dist-browser/three/addons/tsl/display/SSAONode.js +1 -0
  2362. package/dist-browser/three/addons/tsl/display/SSGINode.js +1 -0
  2363. package/dist-browser/three/addons/tsl/display/SSRNode.js +1 -0
  2364. package/dist-browser/three/addons/tsl/display/SSSNode.js +1 -0
  2365. package/dist-browser/three/addons/tsl/display/Sepia.js +1 -0
  2366. package/dist-browser/three/addons/tsl/display/Shape.js +1 -0
  2367. package/dist-browser/three/addons/tsl/display/SharpenNode.js +1 -0
  2368. package/dist-browser/three/addons/tsl/display/SobelOperatorNode.js +1 -0
  2369. package/dist-browser/three/addons/tsl/display/StereoCompositePassNode.js +1 -0
  2370. package/dist-browser/three/addons/tsl/display/StereoPassNode.js +1 -0
  2371. package/dist-browser/three/addons/tsl/display/TAAUNode.js +1 -0
  2372. package/dist-browser/three/addons/tsl/display/TRAANode.js +1 -0
  2373. package/dist-browser/three/addons/tsl/display/TemporalReprojectNode.js +1 -0
  2374. package/dist-browser/three/addons/tsl/display/TransitionNode.js +1 -0
  2375. package/dist-browser/three/addons/tsl/display/boxBlur.js +1 -0
  2376. package/dist-browser/three/addons/tsl/display/depthAwareBlend.js +1 -0
  2377. package/dist-browser/three/addons/tsl/display/depthAwareBlur.js +1 -0
  2378. package/dist-browser/three/addons/tsl/display/hashBlur.js +1 -0
  2379. package/dist-browser/three/addons/tsl/display/radialBlur.js +1 -0
  2380. package/dist-browser/three/addons/tsl/lighting/ClusteredLightsNode.js +1 -0
  2381. package/dist-browser/three/addons/tsl/lighting/DynamicLightsNode.js +1 -0
  2382. package/dist-browser/three/addons/tsl/lighting/LightProbeGridNode.js +1 -0
  2383. package/dist-browser/three/addons/tsl/lighting/data/AmbientLightDataNode.js +1 -0
  2384. package/dist-browser/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +1 -0
  2385. package/dist-browser/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +1 -0
  2386. package/dist-browser/three/addons/tsl/lighting/data/PointLightDataNode.js +1 -0
  2387. package/dist-browser/three/addons/tsl/lighting/data/SpotLightDataNode.js +1 -0
  2388. package/dist-browser/three/addons/tsl/math/Bayer.js +1 -0
  2389. package/dist-browser/three/addons/tsl/math/curlNoise.js +1 -0
  2390. package/dist-browser/three/addons/tsl/math/voronoiNoise.js +1 -0
  2391. package/dist-browser/three/addons/tsl/shadows/TileShadowNode.js +1 -0
  2392. package/dist-browser/three/addons/tsl/shadows/TileShadowNodeHelper.js +1 -0
  2393. package/dist-browser/three/addons/tsl/utils/GroundedSkybox.js +1 -0
  2394. package/dist-browser/three/addons/tsl/utils/RNoise.js +1 -0
  2395. package/dist-browser/three/addons/tsl/utils/Raymarching.js +1 -0
  2396. package/dist-browser/three/addons/tsl/utils/SoftParticles.js +1 -0
  2397. package/dist-browser/three/addons/tsl/utils/SpecularHelpers.js +1 -0
  2398. package/dist-browser/three/addons/tsl/utils/TAAUtils.js +1 -0
  2399. package/dist-browser/three/addons/utils/BufferGeometryUtils.js +1 -0
  2400. package/dist-browser/three/addons/utils/CameraUtils.js +1 -0
  2401. package/dist-browser/three/addons/utils/ColorUtils.js +1 -0
  2402. package/dist-browser/three/addons/utils/GaussianSplatUtils.js +1 -0
  2403. package/dist-browser/three/addons/utils/GeometryCompressionUtils.js +1 -0
  2404. package/dist-browser/three/addons/utils/GeometryUtils.js +1 -0
  2405. package/dist-browser/three/addons/utils/LDrawUtils.js +1 -0
  2406. package/dist-browser/three/addons/utils/SceneOptimizer.js +1 -0
  2407. package/dist-browser/three/addons/utils/SceneUtils.js +1 -0
  2408. package/dist-browser/three/addons/utils/ShadowMapViewer.js +1 -0
  2409. package/dist-browser/three/addons/utils/ShadowMapViewerGPU.js +1 -0
  2410. package/dist-browser/three/addons/utils/SkeletonUtils.js +1 -0
  2411. package/dist-browser/three/addons/utils/SortUtils.js +1 -0
  2412. package/dist-browser/three/addons/utils/UVsDebug.js +1 -0
  2413. package/dist-browser/three/addons/utils/WebGLTextureUtils.js +1 -0
  2414. package/dist-browser/three/addons/utils/WebGPUTextureUtils.js +1 -0
  2415. package/dist-browser/three/addons/utils/WorkerPool.js +1 -0
  2416. package/dist-browser/three/addons/webxr/ARButton.js +1 -0
  2417. package/dist-browser/three/addons/webxr/OculusHandModel.js +1 -0
  2418. package/dist-browser/three/addons/webxr/OculusHandPointerModel.js +1 -0
  2419. package/dist-browser/three/addons/webxr/Text2D.js +1 -0
  2420. package/dist-browser/three/addons/webxr/VRButton.js +1 -0
  2421. package/dist-browser/three/addons/webxr/WebGLXRFallback.js +1 -0
  2422. package/dist-browser/three/addons/webxr/XRButton.js +1 -0
  2423. package/dist-browser/three/addons/webxr/XRControllerModelFactory.js +1 -0
  2424. package/dist-browser/three/addons/webxr/XREstimatedLight.js +1 -0
  2425. package/dist-browser/three/addons/webxr/XRHandMeshModel.js +1 -0
  2426. package/dist-browser/three/addons/webxr/XRHandModelFactory.js +1 -0
  2427. package/dist-browser/three/addons/webxr/XRHandPrimitiveModel.js +1 -0
  2428. package/dist-browser/three/addons/webxr/XRPlanes.js +1 -0
  2429. package/dist-browser/three/addons.js +1 -0
  2430. package/dist-browser/three/tsl.js +1 -0
  2431. package/dist-browser/three/webgpu.js +1 -0
  2432. package/dist-browser/three.js +1 -0
  2433. package/dist-browser/three.quarks.js +1 -0
  2434. package/dist-browser/zustand/middleware.js +1 -0
  2435. package/dist-browser/zustand/shallow.js +1 -0
  2436. package/dist-browser/zustand/vanilla.js +1 -0
  2437. package/dist-browser/zustand.js +1 -0
  2438. package/package.json +194 -0
  2439. package/rapier/LICENSE +201 -0
  2440. package/rapier/NOTICE +23 -0
  2441. package/rapier/simd/coarena.js +1 -0
  2442. package/rapier/simd/control/character_controller.js +1 -0
  2443. package/rapier/simd/control/index.js +1 -0
  2444. package/rapier/simd/control/pid_controller.js +1 -0
  2445. package/rapier/simd/control/ray_cast_vehicle_controller.js +1 -0
  2446. package/rapier/simd/dynamics/ccd_solver.js +1 -0
  2447. package/rapier/simd/dynamics/coefficient_combine_rule.js +1 -0
  2448. package/rapier/simd/dynamics/impulse_joint.js +1 -0
  2449. package/rapier/simd/dynamics/impulse_joint_set.js +1 -0
  2450. package/rapier/simd/dynamics/index.js +1 -0
  2451. package/rapier/simd/dynamics/integration_parameters.js +1 -0
  2452. package/rapier/simd/dynamics/island_manager.js +1 -0
  2453. package/rapier/simd/dynamics/multibody_joint.js +1 -0
  2454. package/rapier/simd/dynamics/multibody_joint_set.js +1 -0
  2455. package/rapier/simd/dynamics/rigid_body.js +1 -0
  2456. package/rapier/simd/dynamics/rigid_body_set.js +1 -0
  2457. package/rapier/simd/exports.js +1 -0
  2458. package/rapier/simd/geometry/broad_phase.js +1 -0
  2459. package/rapier/simd/geometry/collider.js +1 -0
  2460. package/rapier/simd/geometry/collider_set.js +1 -0
  2461. package/rapier/simd/geometry/contact.js +1 -0
  2462. package/rapier/simd/geometry/feature.js +1 -0
  2463. package/rapier/simd/geometry/index.js +1 -0
  2464. package/rapier/simd/geometry/interaction_groups.js +0 -0
  2465. package/rapier/simd/geometry/narrow_phase.js +1 -0
  2466. package/rapier/simd/geometry/point.js +1 -0
  2467. package/rapier/simd/geometry/ray.js +1 -0
  2468. package/rapier/simd/geometry/shape.js +1 -0
  2469. package/rapier/simd/geometry/toi.js +1 -0
  2470. package/rapier/simd/init.js +0 -0
  2471. package/rapier/simd/math.js +1 -0
  2472. package/rapier/simd/pipeline/debug_render_pipeline.js +1 -0
  2473. package/rapier/simd/pipeline/event_queue.js +1 -0
  2474. package/rapier/simd/pipeline/index.js +1 -0
  2475. package/rapier/simd/pipeline/physics_hooks.js +1 -0
  2476. package/rapier/simd/pipeline/physics_pipeline.js +1 -0
  2477. package/rapier/simd/pipeline/query_pipeline.js +1 -0
  2478. package/rapier/simd/pipeline/serialization_pipeline.js +1 -0
  2479. package/rapier/simd/pipeline/world.js +1 -0
  2480. package/rapier/simd/rapier.js +1 -0
  2481. package/rapier/simd/rapier_wasm3d.js +1 -0
  2482. package/rapier/simd/rapier_wasm3d_bg.js +1 -0
  2483. package/rapier/simd/rapier_wasm3d_bg.wasm +0 -0
  2484. package/rapier/simd/raw.js +1 -0
  2485. package/rapier/simd-compat/rapier.mjs +1 -0
  2486. package/rapier/types/coarena.d.ts +15 -0
  2487. package/rapier/types/control/character_controller.d.ts +191 -0
  2488. package/rapier/types/control/index.d.ts +3 -0
  2489. package/rapier/types/control/pid_controller.d.ts +50 -0
  2490. package/rapier/types/control/ray_cast_vehicle_controller.d.ts +277 -0
  2491. package/rapier/types/dynamics/ccd_solver.d.ts +15 -0
  2492. package/rapier/types/dynamics/coefficient_combine_rule.d.ts +13 -0
  2493. package/rapier/types/dynamics/impulse_joint.d.ts +375 -0
  2494. package/rapier/types/dynamics/impulse_joint_set.d.ts +79 -0
  2495. package/rapier/types/dynamics/index.d.ts +10 -0
  2496. package/rapier/types/dynamics/integration_parameters.d.ts +57 -0
  2497. package/rapier/types/dynamics/island_manager.d.ts +24 -0
  2498. package/rapier/types/dynamics/multibody_joint.d.ts +42 -0
  2499. package/rapier/types/dynamics/multibody_joint_set.d.ts +76 -0
  2500. package/rapier/types/dynamics/rigid_body.d.ts +803 -0
  2501. package/rapier/types/dynamics/rigid_body_set.d.ts +78 -0
  2502. package/rapier/types/exports.d.ts +8 -0
  2503. package/rapier/types/geometry/broad_phase.d.ts +164 -0
  2504. package/rapier/types/geometry/collider.d.ts +996 -0
  2505. package/rapier/types/geometry/collider_set.d.ts +72 -0
  2506. package/rapier/types/geometry/contact.d.ts +36 -0
  2507. package/rapier/types/geometry/feature.d.ts +6 -0
  2508. package/rapier/types/geometry/index.d.ts +11 -0
  2509. package/rapier/types/geometry/interaction_groups.d.ts +18 -0
  2510. package/rapier/types/geometry/narrow_phase.d.ts +130 -0
  2511. package/rapier/types/geometry/point.d.ts +58 -0
  2512. package/rapier/types/geometry/ray.d.ts +108 -0
  2513. package/rapier/types/geometry/shape.d.ts +632 -0
  2514. package/rapier/types/geometry/toi.d.ts +44 -0
  2515. package/rapier/types/init.d.ts +5 -0
  2516. package/rapier/types/math.d.ts +98 -0
  2517. package/rapier/types/pipeline/debug_render_pipeline.d.ts +40 -0
  2518. package/rapier/types/pipeline/event_queue.d.ts +101 -0
  2519. package/rapier/types/pipeline/index.d.ts +7 -0
  2520. package/rapier/types/pipeline/physics_hooks.d.ts +39 -0
  2521. package/rapier/types/pipeline/physics_pipeline.d.ts +12 -0
  2522. package/rapier/types/pipeline/query_pipeline.d.ts +38 -0
  2523. package/rapier/types/pipeline/serialization_pipeline.d.ts +37 -0
  2524. package/rapier/types/pipeline/world.d.ts +602 -0
  2525. package/rapier/types/rapier.d.ts +3 -0
  2526. package/rapier/types/rapier_wasm3d.d.ts +2204 -0
  2527. package/rapier/types/rapier_wasm3d_bg.wasm.d.ts +582 -0
  2528. package/rapier/types/raw.d.ts +1 -0
  2529. package/readable/rounds/LevelBanner.tsx +44 -0
  2530. package/readable/rounds/Round.tsx +228 -0
  2531. package/readable/rounds/RoundScreen.tsx +89 -0
  2532. package/readable/rounds/dist/LevelBanner.d.ts +13 -0
  2533. package/readable/rounds/dist/LevelBanner.d.ts.map +1 -0
  2534. package/readable/rounds/dist/LevelBanner.js +20 -0
  2535. package/readable/rounds/dist/LevelBanner.js.map +1 -0
  2536. package/readable/rounds/dist/Round.d.ts +74 -0
  2537. package/readable/rounds/dist/Round.d.ts.map +1 -0
  2538. package/readable/rounds/dist/Round.js +137 -0
  2539. package/readable/rounds/dist/Round.js.map +1 -0
  2540. package/readable/rounds/dist/RoundScreen.d.ts +39 -0
  2541. package/readable/rounds/dist/RoundScreen.d.ts.map +1 -0
  2542. package/readable/rounds/dist/RoundScreen.js +23 -0
  2543. package/readable/rounds/dist/RoundScreen.js.map +1 -0
  2544. package/readable/rounds/dist/index.d.ts +7 -0
  2545. package/readable/rounds/dist/index.d.ts.map +1 -0
  2546. package/readable/rounds/dist/index.js +11 -0
  2547. package/readable/rounds/dist/index.js.map +1 -0
  2548. package/readable/rounds/dist/rounds.d.ts +16 -0
  2549. package/readable/rounds/dist/rounds.d.ts.map +1 -0
  2550. package/readable/rounds/dist/rounds.js +82 -0
  2551. package/readable/rounds/dist/rounds.js.map +1 -0
  2552. package/readable/rounds/dist/rules.d.ts +65 -0
  2553. package/readable/rounds/dist/rules.d.ts.map +1 -0
  2554. package/readable/rounds/dist/rules.js +150 -0
  2555. package/readable/rounds/dist/rules.js.map +1 -0
  2556. package/readable/rounds/dist/traits.d.ts +103 -0
  2557. package/readable/rounds/dist/traits.d.ts.map +1 -0
  2558. package/readable/rounds/dist/traits.js +79 -0
  2559. package/readable/rounds/dist/traits.js.map +1 -0
  2560. package/readable/rounds/index.ts +11 -0
  2561. package/readable/rounds/rounds.ts +117 -0
  2562. package/readable/rounds/rules.ts +182 -0
  2563. package/readable/rounds/traits.ts +82 -0
@@ -0,0 +1,538 @@
1
+ import{$a as e,$r as t,Aa as n,Ar as r,As as i,At as a,B as o,Bn as s,Bt as c,Ca as l,Da as u,Ea as d,Eo as f,Fa as p,Fi as m,Fs as h,Ga as g,Gs as _,Ha as v,Hn as y,Ht as b,Ia as ee,Ii as te,Io as ne,Ir as re,Ja as ie,Jr as ae,Js as oe,Ka as se,Ki as ce,Kr as le,La as ue,Lo as de,Lr as fe,Ls as pe,Lt as me,Ma as he,Mr as ge,Ms as _e,Na as ve,Nn as ye,Nr as be,Nt as xe,Oa as Se,Or as Ce,Os as we,Pa as Te,Pn as Ee,Pr as De,Pt as Oe,Q as ke,Qi as Ae,Qr as je,Qt as Me,R as Ne,Ra as Pe,Rs as x,Rt as Fe,Sa as Ie,So as Le,Sr as Re,Ss as ze,Ta as Be,Tr as Ve,U as He,Ua as Ue,V as We,Va as Ge,Vn as Ke,Vo as qe,Vt as Je,Wn as Ye,Wo as Xe,Wr as Ze,Wt as Qe,Xa as $e,Xi as et,Xn as tt,Xr as nt,Ya as rt,Yn as it,Yo as at,Yr as ot,Zi as st,Zn as ct,_a as lt,_i as ut,_n as dt,ac as ft,ai as pt,ar as mt,bn as ht,bo as gt,cc as _t,ci as vt,cn as yt,co as bt,d as xt,da as St,dn as Ct,do as wt,ea as Tt,et as Et,fn as Dt,fs as Ot,ft as kt,ga as At,go as jt,gt as Mt,ha as Nt,hc as Pt,ic as S,ii as Ft,ja as It,jn as Lt,jo as Rt,js as zt,ka as Bt,ks as Vt,lc as Ht,ma as Ut,mc as Wt,mi as Gt,mn as Kt,mo as qt,nc as Jt,ni as Yt,no as Xt,nt as Zt,oi as Qt,oo as $t,or as en,pc as C,pn as tn,po as nn,pt as rn,qa as an,qr as on,qs as sn,ra as cn,ri as ln,rt as un,si as dn,so as fn,ss as pn,to as mn,ui as hn,uo as gn,vi as _n,vo as vn,vr as yn,wa as bn,wo as xn,xa as Sn,xo as Cn,xs as wn,y as Tn,ya as En,yn as Dn,yo as On,zs as kn}from"./BoJD7UsQ.js";var An=`alphaMap.alphaTest.anisotropy.anisotropyMap.anisotropyRotation.aoMap.aoMapIntensity.attenuationColor.attenuationDistance.bumpMap.bumpScale.clearcoat.clearcoatMap.clearcoatNormalMap.clearcoatNormalScale.clearcoatRoughness.color.dashOffset.dashSize.dispersion.displacementBias.displacementMap.displacementScale.emissive.emissiveIntensity.emissiveMap.envMap.envMapIntensity.envMapRotation.gapSize.gradientMap.ior.iridescence.iridescenceIOR.iridescenceMap.iridescenceThickness.iridescenceThicknessMap.lightMap.lightMapIntensity.linewidth.map.matcap.metalness.metalnessMap.normalMap.normalScale.opacity.reflectivity.retroreflectivity.rotation.roughness.roughnessMap.scale.sheen.sheenColor.sheenColorMap.sheenRoughness.sheenRoughnessMap.shininess.size.specular.specularColor.specularColorMap.specularIntensity.specularIntensityMap.specularMap.steps.thickness.transmission.transmissionMap`.split(`.`),jn=new WeakMap,Mn=new WeakMap,Nn=new WeakMap,Pn=new WeakMap,Fn=class{constructor(e){this.renderObjects=new WeakMap,this.hasNode=this.containsNode(e),this.hasAnimation=e.object.isSkinnedMesh===!0,this.refreshUniforms=An,this.renderId=0}firstInitialization(e){return this.renderObjects.has(e)===!1&&(this.getRenderObjectData(e),!0)}hasDynamicInstancing(e){return e.isInstancedMesh===!0&&(e.instanceMatrix.usage===35048||e.instanceColor!==null&&e.instanceColor.usage===35048)}needsVelocity(e){let t=e.getMRT();return t!==null&&t.has(`velocity`)}getRenderObjectData(e){let t=this.renderObjects.get(e);if(t===void 0){let{geometry:n,object:r}=e;if(t={geometryId:n.id,geometryVersion:this.getGeometryData(n)._version,materialVersion:this.getMaterialData(e.material)._version,worldMatrix:r.matrixWorld.clone()},r.center&&(t.center=r.center.clone()),r.morphTargetInfluences&&(t.morphTargetInfluences=r.morphTargetInfluences.slice()),r.isInstancedMesh===!0&&(t.instanceMatrixVersion=r.instanceMatrix.version,t.instanceColorVersion=r.instanceColor===null?null:r.instanceColor.version,t.morphTextureVersion=r.morphTexture===null?null:r.morphTexture.version),r.isBatchedMesh===!0&&(t.matricesTextureVersion=r._matricesTexture.version,t.colorsTextureVersion=r._colorsTexture===null?null:r._colorsTexture.version,t.indirectTextureVersion=r._indirectTexture.version),e.bundle!==null&&(t.version=e.bundle.version),e.material.transmission>0){let{width:n,height:r}=e.context;t.bufferWidth=n,t.bufferHeight=r}let{environmentIntensity:i,environmentRotation:a}=e.scene;t.environmentIntensity=i,t.environmentRotation=a.clone(),t.lights=this.getLightsData(e.lightsNode.getBuiltinLights(),[]),this.renderObjects.set(e,t)}return t}getAttributesData(e){let t={};for(let n in e){let r=e[n];t[n]={id:r.isInterleavedBufferAttribute?r.data.uuid:r.id,version:r.isInterleavedBufferAttribute?r.data.version:r.version}}return t}containsNode(e){let t=e.material;for(let e in t)if(t[e]&&t[e].isNode)return!0;return!!(e.context.modelViewMatrix||e.context.modelNormalViewMatrix||e.context.getAO||e.context.getShadow)}getGeometryData(e){let t=Nn.get(e);return t===void 0&&(t={_renderId:-1,_version:0,attributes:this.getAttributesData(e.attributes),indexId:e.index?e.index.id:null,indexVersion:e.index?e.index.version:null,drawRange:{start:e.drawRange.start,count:e.drawRange.count}},e.addEventListener(`dispose`,()=>{t._version++}),Nn.set(e,t)),t}getTextureData(e){let t=Pn.get(e);if(t===void 0){t={_version:0};let n=()=>{t._version++};e.renderTarget===null?e.addEventListener(`dispose`,n):e.renderTarget.addEventListener(`dispose`,n),Pn.set(e,t)}return t}getMaterialData(e){let t=Mn.get(e);if(t===void 0){t={_renderId:-1,_version:0};for(let n of this.refreshUniforms){let r=e[n];r!==void 0&&(r===null?t[n]=null:typeof r==`object`&&r.clone!==void 0?r.isTexture===!0?t[n]={id:r.id,version:0,cacheVersion:this.getTextureData(r)._version}:t[n]=r.clone():t[n]=r)}Mn.set(e,t)}return t}equals(e,t,n){let{object:r,material:i,geometry:a}=e,o=this.getRenderObjectData(e);if(o.worldMatrix.equals(r.matrixWorld)!==!0)return o.worldMatrix.copy(r.matrixWorld),!1;let s=this.getMaterialData(e.material);if(s._renderId!==n){s._renderId=n;let e=!1;for(let t in s){let n=s[t],r=i[t];if(t!==`_renderId`&&t!==`_version`){if(n===null||r==null)n!==(r===void 0?null:r)&&(s[t]=r==null?null:r.isTexture===!0?{id:r.id,version:r.version,cacheVersion:this.getTextureData(r)._version}:typeof r==`object`&&r.clone!==void 0?r.clone():r,e=!0);else if(n.equals!==void 0)n.equals(r)===!1&&(n.copy(r),e=!0);else if(r.isTexture===!0){let t=this.getTextureData(r);(n.id!==r.id||n.version!==r.version||n.cacheVersion!==t._version)&&(n.id=r.id,n.version=r.version,n.cacheVersion=t._version,e=!0)}else n!==r&&(s[t]=r,e=!0)}}e===!0&&s._version++}if(o.materialVersion!==s._version)return o.materialVersion=s._version,!1;if(s.transmission>0){let{width:t,height:n}=e.context;if(o.bufferWidth!==t||o.bufferHeight!==n)return o.bufferWidth=t,o.bufferHeight=n,!1}if(o.geometryId!==a.id)return o.geometryId=a.id,o.geometryVersion=this.getGeometryData(a)._version,!1;let c=this.getGeometryData(e.geometry);if(c._renderId!==n){c._renderId=n;let e=!1,t=a.attributes,r=c.attributes,i=0,o=0;for(let e in t)i++;for(let n in r){o++;let i=r[n],a=t[n];if(a===void 0){delete r[n],e=!0;continue}let s=a.isInterleavedBufferAttribute?a.data.uuid:a.id,c=a.isInterleavedBufferAttribute?a.data.version:a.version;(i.id!==s||i.version!==c)&&(i.id=s,i.version=c,e=!0)}o!==i&&(c.attributes=this.getAttributesData(t),e=!0);let s=a.index,l=s?s.id:null,u=s?s.version:null;(c.indexId!==l||c.indexVersion!==u)&&(c.indexId=l,c.indexVersion=u,e=!0),(c.drawRange.start!==a.drawRange.start||c.drawRange.count!==a.drawRange.count)&&(c.drawRange.start=a.drawRange.start,c.drawRange.count=a.drawRange.count,e=!0),e===!0&&c._version++}if(o.geometryVersion!==c._version)return o.geometryVersion=c._version,!1;if(o.morphTargetInfluences){let e=!1;for(let t=0;t<o.morphTargetInfluences.length;t++)o.morphTargetInfluences[t]!==r.morphTargetInfluences[t]&&(o.morphTargetInfluences[t]=r.morphTargetInfluences[t],e=!0);if(e)return!1}if(r.isInstancedMesh===!0){let e=r.instanceColor===null?null:r.instanceColor.version,t=r.morphTexture===null?null:r.morphTexture.version;if(o.instanceMatrixVersion!==r.instanceMatrix.version||o.instanceColorVersion!==e||o.morphTextureVersion!==t)return o.instanceMatrixVersion=r.instanceMatrix.version,o.instanceColorVersion=e,o.morphTextureVersion=t,!1}if(r.isBatchedMesh===!0){let e=r._colorsTexture===null?null:r._colorsTexture.version;if(o.matricesTextureVersion!==r._matricesTexture.version||o.colorsTextureVersion!==e||o.indirectTextureVersion!==r._indirectTexture.version)return o.matricesTextureVersion=r._matricesTexture.version,o.colorsTextureVersion=e,o.indirectTextureVersion=r._indirectTexture.version,!1}if(o.lights)for(let e=0;e<t.length;e++){let n=o.lights[e],r=t[e];if(n.map!==r.map||n.cacheVersion!==r.cacheVersion||n.shadowMapWidth!==r.shadowMapWidth||n.shadowMapHeight!==r.shadowMapHeight)return n.map=r.map,n.cacheVersion=r.cacheVersion,n.shadowMapWidth=r.shadowMapWidth,n.shadowMapHeight=r.shadowMapHeight,!1}let l=e.scene;return l.environment!==null&&i.envMap===null&&(o.environmentIntensity!==l.environmentIntensity||o.environmentRotation.equals(l.environmentRotation)===!1)?(o.environmentIntensity=l.environmentIntensity,o.environmentRotation.copy(l.environmentRotation),!1):o.center&&o.center.equals(r.center)===!1?(o.center.copy(r.center),!1):(e.bundle!==null&&(o.version=e.bundle.version),!0)}getLightsData(e,t){t.length=0;for(let n of e){let e=null;n.isSpotLight===!0&&n.map!==null&&(e={map:n.map.version,cacheVersion:this.getTextureData(n.map)._version}),n.castShadow===!0&&n.shadow!==void 0&&(e===null&&(e={}),e.shadowMapWidth=n.shadow.mapSize.width,e.shadowMapHeight=n.shadow.mapSize.height),e!==null&&t.push(e)}return t}getLights(e,t){let n=jn.get(e);return n===void 0&&(n={renderId:-1,lightsData:[]},jn.set(e,n)),n.renderId===t?n.lightsData:(n.renderId=t,this.getLightsData(e.getBuiltinLights(),n.lightsData),n.lightsData)}needsRefresh(e,t){if(this.hasNode||this.hasAnimation||this.hasDynamicInstancing(e.object)||this.firstInitialization(e)||this.needsVelocity(t.renderer))return gn.FULL;let{renderId:n}=t,r=gn.NONE;this.renderId!==n&&(this.renderId=n,r=gn.SHARED);let i=e.object.static===!0,a=e.bundle!==null&&e.bundle.static===!0&&this.getRenderObjectData(e).version===e.bundle.version;if(i||a)return r;let o=this.getLights(e.lightsNode,n);return this.equals(e,o,n)===!1&&(r=gn.FULL),r}},In=[/^StackTrace\.js$/,/^TSLCore\.js$/,/^.*Node\.js$/,/^three\.webgpu.*\.js$/];function Ln(e){let t=/(?:at\s+(.+?)\s+\()?(?:(.+?)@)?([^@\s()]+):(\d+):(\d+)/;return e.split(`
2
+ `).map(e=>{let n=e.match(t);if(!n)return null;let r=n[1]||n[2]||``,i=n[3].split(`?`)[0],a=parseInt(n[4],10),o=parseInt(n[5],10);return{fn:r,file:i.split(`/`).pop(),line:a,column:o}}).filter(e=>e&&!In.some(t=>t.test(e.file)))}var Rn=class{constructor(e=null){this.isStackTrace=!0,this.stack=Ln(e||Error().stack)}getLocation(){if(this.stack.length===0)return`[Unknown location]`;let e=this.stack[0],t=e.fn;return`${t?`"${t}()" at `:``}"${e.file}:${e.line}"`}getError(e){return this.stack.length===0?e:`${e}\n${this.stack.map(e=>{let t=`${e.file}:${e.line}:${e.column}`;return e.fn?` at ${e.fn} (${t})`:` at ${t}`}).join(`
3
+ `)}`}};function zn(e,t=0){let n=3735928559^t,r=1103547991^t;if(Array.isArray(e))for(let t=0,i;t<e.length;t++)i=e[t],n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);else for(let t=0,i;t<e.length;t++)i=e.charCodeAt(t),n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677);return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}var Bn=e=>zn(e),Vn=e=>zn(e),Hn=(...e)=>zn(e),Un=new Map([[1,`float`],[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),Wn=new WeakMap;function Gn(e){return Un.get(e)}function Kn(e){if(/[iu]?vec\d/.test(e))return e.startsWith(`ivec`)?Int32Array:e.startsWith(`uvec`)?Uint32Array:Float32Array;if(/mat\d/.test(e)||/float/.test(e))return Float32Array;if(/uint/.test(e))return Uint32Array;if(/int/.test(e))return Int32Array;throw Error(`THREE.NodeUtils: Unsupported type: ${e}`)}function qn(e){if(/float|int|uint|bool/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 9;if(/mat4/.test(e))return 16;S(`TSL: Unsupported type: ${e}`,new Rn)}function Jn(e){if(/float|int|uint|bool/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e))return 3;if(/vec4/.test(e)||/mat2/.test(e))return 4;if(/mat3/.test(e))return 12;if(/mat4/.test(e))return 16;S(`TSL: Unsupported type: ${e}`,new Rn)}function Yn(e){if(/float|int|uint|bool/.test(e))return 1;if(/vec2/.test(e))return 2;if(/vec3/.test(e)||/vec4/.test(e))return 4;if(/mat2/.test(e))return 2;if(/mat3/.test(e)||/mat4/.test(e))return 4;S(`TSL: Unsupported type: ${e}`,new Rn)}function Xn(e){if(e==null)return null;let t=typeof e;return e.isNode===!0?`node`:t===`number`?`float`:t===`boolean`?`bool`:t===`string`?`string`:t===`function`?`shader`:e.isVector2===!0?`vec2`:e.isVector3===!0?`vec3`:e.isVector4===!0?`vec4`:e.isMatrix2===!0?`mat2`:e.isMatrix3===!0?`mat3`:e.isMatrix4===!0?`mat4`:e.isColor===!0?`color`:e instanceof ArrayBuffer?`ArrayBuffer`:null}function Zn(e){if(e.isDepthTexture===!0)return`float`;let t=e.format,n;n=t===1028||t===1029||t===1026||t===1027||t===1021?1:t===1030||t===1031?2:t===1022||t===1032?3:4;let r;if(r=e.type===1014?`uint`:e.type===1013?`int`:`float`,n===1)return r;let i=Gn(n);return r!==`float`&&(i=r[0]+i),i}function Qn(e,...t){let n=e?e.slice(-4):void 0;return t.length===1&&(n===`vec2`?t=[t[0],t[0]]:n===`vec3`?t=[t[0],t[0],t[0]]:n===`vec4`&&(t=[t[0],t[0],t[0],t[0]])),e===`color`?new Et(...t):n===`vec2`?new pe(...t):n===`vec3`?new x(...t):n===`vec4`?new kn(...t):n===`mat2`?new ae(...t):n===`mat3`?new ot(...t):n===`mat4`?new nt(...t):e===`bool`?t[0]||!1:e===`float`||e===`int`||e===`uint`?t[0]||0:e===`string`?t[0]||``:e===`ArrayBuffer`?tr(t[0]):null}function $n(e){let t=Wn.get(e);return t===void 0&&(t={},Wn.set(e,t)),t}function er(e){let t=``,n=new Uint8Array(e);for(let e=0;e<n.length;e++)t+=String.fromCharCode(n[e]);return btoa(t)}function tr(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0)).buffer}function nr(e){return e[0]!==void 0&&e[0]!==null&&(e[0].isNode||Object.getPrototypeOf(e[0])!==Object.prototype)}var rr=Object.freeze({__proto__:null,arrayBufferToBase64:er,base64ToArrayBuffer:tr,getAlignmentFromType:Yn,getDataFromObject:$n,getLengthFromType:qn,getMemoryLengthFromType:Jn,getTextureType:Zn,getTypeFromLength:Gn,getTypedArrayFromType:Kn,getValueFromType:Qn,getValueType:Xn,hash:Hn,hashArray:Vn,hashString:Bn,isArrayAsParameter:nr}),ir={VERTEX:`vertex`,FRAGMENT:`fragment`},w={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},ar={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},or={READ_ONLY:`readOnly`,WRITE_ONLY:`writeOnly`,READ_WRITE:`readWrite`},sr=[`fragment`,`vertex`],cr=[`setup`,`analyze`,`generate`],lr=[...sr,`compute`],ur=[`x`,`y`,`z`,`w`],dr={analyze:`setup`,generate:`analyze`},fr=0,T=class e extends yt{static get type(){return`Node`}constructor(t=null){super(),this.nodeType=t,this.updateType=w.NONE,this.updateBeforeType=w.NONE,this.updateAfterType=w.NONE,this.version=0,this.name=``,this.global=!1,this.parents=!1,this.isNode=!0,this._beforeNodes=null,this._cacheKey=null,this._uuid=null,this._cacheKeyVersion=0,this.id=fr++,this.stackTrace=null,e.captureStackTrace===!0&&(this.stackTrace=new Rn)}set needsUpdate(e){e===!0&&this.version++}get uuid(){return this._uuid===null&&(this._uuid=on.generateUUID()),this._uuid}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this),this}onFrameUpdate(e){return this.onUpdate(e,w.FRAME)}onRenderUpdate(e){return this.onUpdate(e,w.RENDER)}onObjectUpdate(e){return this.onUpdate(e,w.OBJECT)}onReference(e){return this.updateReference=e.bind(this),this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of this._getChildren())yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}_getChildren(e=new Set){let t=[];e.add(this);for(let n of Object.getOwnPropertyNames(this)){let r=this[n];if(!(n.startsWith(`_`)===!0||e.has(r))){if(Array.isArray(r)===!0)for(let e=0;e<r.length;e++){let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}else if(r&&r.isNode===!0)t.push({property:n,childNode:r});else if(r&&Object.getPrototypeOf(r)===Object.prototype)for(let e in r){if(e.startsWith(`_`)===!0)continue;let i=r[e];i&&i.isNode===!0&&t.push({property:n,index:e,childNode:i})}}}return t}getCacheKey(e=!1,t=null){if(e||=this.version!==this._cacheKeyVersion,e===!0||this._cacheKey===null){t===null&&(t=new Set);let n=[];for(let{property:r,childNode:i}of this._getChildren(t))n.push(Bn(r.slice(0,-4)),i.getCacheKey(e,t));this._cacheKey=Hn(Vn(n),this.customCacheKey()),this._cacheKeyVersion=this.version}return this._cacheKey}customCacheKey(){return this.id}getScope(){return this}getHash(){return String(this.id)}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getMemberType(){return`void`}getNodeType(e,t=null){let n=e.getDataFromNode(this),r;return t===null?(r=n.type,r===void 0&&(r=this.generateNodeType(e),n.type=r)):(n.typeFromOutput=n.typeFromOutput||{},r=n.typeFromOutput[t],r===void 0&&(r=this.generateNodeType(e,t),n.typeFromOutput[t]=r)),r}generateNodeType(e,t=null){let n=e.getNodeProperties(this);return n.outputNode?n.outputNode.getNodeType(e,t):this.nodeType}getShared(e){let t=this.getHash(e),n=e.getNodeFromHash(t),r=null;if(n&&n!==this)r=n;else if(e.context.overrideNodes){let t=e.context.overrideNodes.get(this);if(t){let n=e.getDataFromNode(this);n.isOverwritten===!0?r=n.sharedNode:(n.isOverwritten=!0,r=t(e).overrideNode(this,null),n.sharedNode=r)}}return r||this}getArrayCount(){return null}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+n++]=e;return t.outputNode||null}analyze(e,t=null){let n=e.increaseUsage(this);if(this.parents===!0){let n=e.getDataFromNode(this,`any`);n.stages=n.stages||{},n.stages[e.shaderStage]=n.stages[e.shaderStage]||[],n.stages[e.shaderStage].push(t)}if(n===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e,this)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){C(`Abstract function.`)}updateAfter(){C(`Abstract function.`)}update(){C(`Abstract function.`)}before(e){return this._beforeNodes===null&&(this._beforeNodes=[]),this._beforeNodes.push(e),this}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);if(this._beforeNodes!==null){let n=this._beforeNodes;this._beforeNodes=null;for(let r of n)r.build(e,t);this._beforeNodes=n}let r=e.getDataFromNode(this);r.buildStages=r.buildStages||{},r.buildStages[e.buildStage]=!0;let i=dr[e.buildStage];if(i&&r.buildStages[i]!==!0){let t=e.getBuildStage();e.setBuildStage(i),this.build(e),e.setBuildStage(t)}e.addChain(this);let a=null,o=e.getBuildStage();if(o===`setup`){e.addNode(this),this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){t.initialized=!0,t.outputNode=this.setup(e)||t.outputNode||null;for(let n of Object.values(t))if(n&&n.isNode===!0){if(n.parents===!0){let t=e.getNodeProperties(n);t.parents=t.parents||[],t.parents.push(this)}n.build(e)}e.addSequentialNode(this)}a=t.outputNode}else if(o===`analyze`)this.analyze(e,t);else if(o===`generate`){if(this.generate.length<2){let n=this.getNodeType(e),r=e.getDataFromNode(this);a=r.snippet,a===void 0?r.generated===void 0?(r.generated=!0,a=this.generate(e)||``,r.snippet=a):(C(`Node: Recursion detected.`,this),a=`/* Recursion detected. */`):r.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),a=e.format(a,n,t)}else a=this.generate(e,t)||``;a===``&&t!==null&&t!==`void`&&t!==`OutputType`&&(S(`TSL: Invalid generated code, expected a "${t}".`),a=e.generateConst(t))}return e.removeChain(this),a}getSerializeChildren(){return this._getChildren()}serialize(e){let t=this.getSerializeChildren(),n={};for(let{property:r,index:i,childNode:a}of t)i===void 0?n[r]=a.toJSON(e.meta).uuid:(n[r]===void 0&&(n[r]=Number.isInteger(i)?[]:{}),n[r][i]=a.toJSON(e.meta).uuid);Object.keys(n).length>0&&(e.inputNodes=n)}deserialize(e){if(e.inputNodes!==void 0){let t=e.meta.nodes;for(let n in e.inputNodes)if(Array.isArray(e.inputNodes[n])){let r=[];for(let i of e.inputNodes[n])r.push(t[i]);this[n]=r}else if(typeof e.inputNodes[n]==`object`){let r={};for(let i in e.inputNodes[n])r[i]=t[e.inputNodes[n][i]];this[n]=r}else{let r=e.inputNodes[n];this[n]=t[r]}}}toJSON(e){let{uuid:t,type:n}=this,r=e===void 0||typeof e==`string`;r&&(e={textures:{},images:{},nodes:{}});let i=e.nodes[t];i===void 0&&(i={uuid:t,type:n,meta:e,metadata:{version:4.7,type:`Node`,generator:`Node.toJSON`}},r!==!0&&(e.nodes[i.uuid]=i),this.serialize(i),delete i.meta);function a(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(r){let t=a(e.textures),n=a(e.images),r=a(e.nodes);t.length>0&&(i.textures=t),n.length>0&&(i.images=n),r.length>0&&(i.nodes=r)}return i}};T.captureStackTrace=!1;var pr=class extends T{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}generateNodeType(e){return this.node.getElementType(e)}getMemberType(e,t){return this.node.getMemberType(e,t)}generate(e){let t=this.indexNode.getNodeType(e);return`${this.node.build(e)}[ ${this.indexNode.build(e,!e.isVector(t)&&e.isInteger(t)?t:`uint`)} ]`}},mr=class extends T{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}generateNodeType(e){let t=this.node.getNodeType(e),n=null;for(let r of this.convertTo.split(`|`))(n===null||e.getTypeLength(t)===e.getTypeLength(r))&&(n=r);return n}serialize(e){super.serialize(e),e.convertTo=this.convertTo}deserialize(e){super.deserialize(e),this.convertTo=e.convertTo}generate(e,t){let n=this.node,r=this.getNodeType(e),i=n.build(e,r);return e.format(i,r,t)}},hr=class extends T{static get type(){return`TempNode`}constructor(e=null){super(e),this.isTempNode=!0}hasDependencies(e){return e.getDataFromNode(this).usageCount>1}build(e,t){if(e.getBuildStage()===`generate`){let n=e.getVectorType(this.getNodeType(e,t)),r=e.getDataFromNode(this);if(r.propertyName!==void 0)return e.format(r.propertyName,n,t);if(n!==`void`&&t!==`void`&&this.hasDependencies(e)){let i=super.build(e,n),a=e.getVarFromNode(this,null,n),o=e.getPropertyName(a);return e.addLineFlowCode(`${o} = ${i}`,this),r.snippet=i,r.propertyName=o,e.format(r.propertyName,n,t)}}return super.build(e,t)}},gr=class extends hr{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}generateNodeType(e){return this.nodeType===null?e.getTypeFromLength(this.nodes.reduce((t,n)=>t+e.getTypeLength(n.getNodeType(e)),0)):e.getVectorType(this.nodeType)}generate(e,t){let n=this.getNodeType(e),r=e.getTypeLength(n),i=this.nodes,a=e.getComponentType(n),o=[],s=0;for(let t of i){if(s>=r){S(`TSL: Length of parameters exceeds maximum length of function '${n}()' type.`,this.stackTrace);break}let i=t.getNodeType(e),c=e.getTypeLength(i),l;if(s+c>r&&(S(`TSL: Length of '${n}()' data exceeds maximum length of output type.`,this.stackTrace),c=r-s,i=e.getTypeFromLength(c)),s+=c,l=t.build(e,i),e.getComponentType(i)!==a){let t=e.getTypeFromLength(c,a);l=e.format(l,i,t)}o.push(l)}let c=`${e.getType(n)}( ${o.join(`, `)} )`;return e.format(c,n,t)}},_r=ur.join(``),vr=class extends T{static get type(){return`SplitNode`}constructor(e,t=`x`){super(),this.node=e,this.components=t,this.isSplitNode=!0}getVectorLength(){let e=this.components.length;for(let t of this.components)e=Math.max(ur.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}generateNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}getScope(){return this.node.getScope()}generate(e,t){let n=this.node,r=e.getTypeLength(n.getNodeType(e)),i=null;if(r>1){let a=null;this.getVectorLength()>=r&&(a=e.getTypeFromLength(this.getVectorLength(),this.getComponentType(e)));let o=n.build(e,a);i=this.components.length===r&&this.components===_r.slice(0,this.components.length)?e.format(o,a,t):e.format(`${o}.${this.components}`,this.getNodeType(e),t)}else i=n.build(e,t);return i}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}},yr=class extends hr{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getComponentType(r.getNodeType(e)),o=e.getTypeFromLength(n.length,a),s=r.build(e,o),c=t.build(e,i),l=e.getTypeLength(i),u=[];for(let e=0;e<l;e++){let t=ur[e];t===n[0]?(u.push(s),e+=n.length-1):u.push(c+`.`+t)}return`${e.getType(i)}( ${u.join(`, `)} )`}},br=class extends hr{static get type(){return`FlipNode`}constructor(e,t){super(),this.sourceNode=e,this.components=t}generateNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{components:t,sourceNode:n}=this,r=this.getNodeType(e),i=n.build(e),a=e.getVarFromNode(this),o=e.getPropertyName(a);e.addLineFlowCode(o+` = `+i,this);let s=e.getTypeLength(r),c=[],l=0;for(let e=0;e<s;e++){let n=ur[e];n===t[l]?(c.push(`1.0 - `+(o+`.`+n)),l++):c.push(o+`.`+n)}return`${e.getType(r)}( ${c.join(`, `)} )`}},xr=class extends T{static get type(){return`InputNode`}constructor(e,t=null){super(t),this.isInputNode=!0,this.value=e,this.precision=null}generateNodeType(){return this.nodeType===null?Xn(this.value):this.nodeType}getInputType(e){return this.getNodeType(e)}setPrecision(e){return this.precision=e,this}serialize(e){super.serialize(e),e.value=this.value,this.value&&this.value.toArray&&(e.value=this.value.toArray()),e.valueType=Xn(this.value),e.nodeType=this.nodeType,e.valueType===`ArrayBuffer`&&(e.value=er(e.value)),e.precision=this.precision}deserialize(e){super.deserialize(e),this.nodeType=e.nodeType,this.value=Array.isArray(e.value)?Qn(e.valueType,...e.value):e.value,this.precision=e.precision||null,this.value&&this.value.fromArray&&(this.value=this.value.fromArray(e.value))}generate(){C(`Abstract function.`)}},Sr=/float|u?int/,Cr=class extends xr{static get type(){return`ConstNode`}constructor(e,t=null){super(e,t),this.isConstNode=!0}generateConst(e){return e.generateConst(this.getNodeType(e),this.value)}generate(e,t){let n=this.getNodeType(e);return Sr.test(n)&&Sr.test(t)?e.generateConst(t,this.value):e.format(this.generateConst(e),n,t)}},wr=class extends T{static get type(){return`MemberNode`}constructor(e,t){super(),this.structNode=e,this.property=t,this.isMemberNode=!0}hasMember(e){return this.structNode.isMemberNode&&this.structNode.hasMember(e)===!1?!1:this.structNode.getMemberType(e,this.property)!==`void`}generateNodeType(e){return this.hasMember(e)===!1?`float`:this.structNode.getMemberType(e,this.property)}getMemberType(e,t){if(this.hasMember(e)===!1)return`float`;let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}generate(e){if(this.hasMember(e)===!1){C(`TSL: Member "${this.property}" does not exist in struct.`,this.stackTrace);let t=this.getNodeType(e);return e.generateConst(t)}return this.structNode.build(e)+`.`+this.property}},Tr=null,Er=new Map;function E(e,t){if(Er.has(e)){C(`TSL: Redefinition of method chaining '${e}'.`);return}if(typeof t!=`function`)throw Error(`THREE.TSL: Node element ${e} is not a function`);Er.set(e,t),e!==`assign`&&(T.prototype[e]=function(...e){return this.isStackNode?this.addToStack(t(...e)):t(this,...e)},T.prototype[e+`Assign`]=function(...e){return this.isStackNode?this.assign(e[0],t(...e)):this.assign(t(this,...e))})}var Dr=e=>e.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Or=e=>Dr(e).split(``).sort().join(``);T.prototype.assign=function(...e){if(this.isStackNode!==!0)return Tr===null?S(`TSL: No stack defined for assign operation. Make sure the assign is inside a Fn().`,new Rn):Tr.assign(this,...e),this;{let t=Er.get(`assign`);return this.addToStack(t(...e))}},T.prototype.toVarIntent=function(){return this},T.prototype.get=function(e){return new wr(this,e)};var kr={};function Ar(e,t,n){kr[e]=kr[t]=kr[n]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new vr(this,e),this._cache[e]=t),t},set(t){this[e].assign(D(t))}};let r=e.toUpperCase(),i=t.toUpperCase(),a=n.toUpperCase();T.prototype[`set`+r]=T.prototype[`set`+i]=T.prototype[`set`+a]=function(t){let n=Or(e);return new yr(this,n,D(t))},T.prototype[`flip`+r]=T.prototype[`flip`+i]=T.prototype[`flip`+a]=function(){let t=Or(e);return new br(this,t)}}var jr=[`x`,`y`,`z`,`w`],Mr=[`r`,`g`,`b`,`a`],Nr=[`s`,`t`,`p`,`q`];for(let e=0;e<4;e++){let t=jr[e],n=Mr[e],r=Nr[e];Ar(t,n,r);for(let i=0;i<4;i++){t=jr[e]+jr[i],n=Mr[e]+Mr[i],r=Nr[e]+Nr[i],Ar(t,n,r);for(let a=0;a<4;a++){t=jr[e]+jr[i]+jr[a],n=Mr[e]+Mr[i]+Mr[a],r=Nr[e]+Nr[i]+Nr[a],Ar(t,n,r);for(let o=0;o<4;o++)t=jr[e]+jr[i]+jr[a]+jr[o],n=Mr[e]+Mr[i]+Mr[a]+Mr[o],r=Nr[e]+Nr[i]+Nr[a]+Nr[o],Ar(t,n,r)}}}for(let e=0;e<32;e++)kr[e]={get(){this._cache=this._cache||{};let t=this._cache[e];return t===void 0&&(t=new pr(this,new Cr(e,`uint`)),this._cache[e]=t),t},set(t){this[e].assign(D(t))}};Object.defineProperties(T.prototype,kr);var Pr=function(e,t=null){let n=Xn(e);return n===`node`?e:t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`?D($r(e,t)):n===`shader`?e.isFn?e:j(e):e},Fr=function(e,t=null){for(let n in e)e[n]=D(e[n],t);return e},Ir=function(e,t=null){let n=e.length;for(let r=0;r<n;r++)e[r]=D(e[r],t);return e},Lr=function(e,t=null,n=null,r=null){function i(e){return r===null?e=D(e):(e=D(Object.assign(e,r)),r.intent===!0&&(e=e.toVarIntent())),e}let a,o=t,s,c;function l(t){let n;return n=o?/[a-z]/i.test(o)?o+`()`:o:e.type,s!==void 0&&t.length<s?(S(`TSL: "${n}" parameter length is less than minimum required.`,new Rn),t.concat(Array(s-t.length).fill(0))):c!==void 0&&t.length>c?(S(`TSL: "${n}" parameter length exceeds limit.`,new Rn),t.slice(0,c)):t}return t===null?a=(...t)=>i(new e(...oi(l(t)))):n===null?a=(...n)=>i(new e(t,...oi(l(n)))):(n=D(n),a=(...r)=>i(new e(t,...oi(l(r)),n))),a.setParameterLength=(...e)=>(e.length===1?s=c=e[0]:e.length===2&&([s,c]=e),a),a.setName=e=>(o=e,a),a},Rr=function(e,...t){return new e(...oi(t))},zr=class extends T{constructor(e,t){super(),this.shaderNode=e,this.rawInputs=t,this.isShaderCallNodeInternal=!0}generateNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}getElementType(e){return this.getOutputNode(e).getElementType(e)}getMemberType(e,t){return this.getOutputNode(e).getMemberType(e,t)}call(e){let{shaderNode:t,rawInputs:n}=this,r=e.getNodeProperties(t),i=e.getClosestSubBuild(t.subBuilds)||``,a=i||`default`;if(r[a])return r[a];let o=e.subBuildFn,s=e.fnCall;e.subBuildFn=i,e.fnCall=this;let c=null;if(t.layout){if(n){let r=t.layout.inputs;if(nr(n)){let t=n;for(let n=0;n<r.length;n++){let r=t[n];r&&r.isNode&&r.build(e)}}else{let t=n[0];for(let n of r){let r=t[n.name];r&&r.isNode&&r.build(e)}}}let r=e.buildFunctionNode(t);e.addInclude(r);let i=n?Br(n):null;c=r.call(i)}else{let r=new Proxy(e,{get:(e,t,n)=>{let r;return r=Symbol.iterator===t?function*(){yield void 0}:Reflect.get(e,t,n),r}}),i=n?Vr(n):null,a=Array.isArray(n)?n.length>0:n!==null,o=t.jsFunc;c=D(a||o.length>1?o(i,r):o(r))}return e.subBuildFn=o,e.fnCall=s,t.once&&(r[a]=c),c}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}getOutputNode(e){let t=e.getNodeProperties(this),n=e.getSubBuildOutput(this);return t[n]=t[n]||this.setupOutput(e),t[n].subBuild=e.getClosestSubBuild(this),t[n]}build(e,t=null){let n=null,r=e.getBuildStage(),i=e.getNodeProperties(this),a=e.getSubBuildOutput(this),o=this.getOutputNode(e),s=e.fnCall;if(e.fnCall=this,r===`setup`){let t=e.getSubBuildProperty(`initialized`,this);if(i[t]!==!0&&(i[t]=!0,i[a]=this.getOutputNode(e),i[a].build(e),this.shaderNode.subBuilds))for(let t of e.chaining){let n=e.getDataFromNode(t,`any`);n.subBuilds=n.subBuilds||new Set;for(let e of this.shaderNode.subBuilds)n.subBuilds.add(e)}n=i[a]}else r===`analyze`?o.build(e,t):r===`generate`&&(n=o.build(e,t)||``);return e.fnCall=s,n}};function Br(e){let t;return ai(e),t=nr(e)?[...e]:e[0],t}function Vr(e){let t=0;return ai(e),new Proxy(e,{get:(n,r,i)=>{let a;if(r===`length`)return a=e.length,a;if(Symbol.iterator===r)a=function*(){for(let t of e)yield D(t)};else{if(e.length>0){if(Object.getPrototypeOf(e[0])===Object.prototype){let n=e[0];a=n[r]===void 0?n[t++]:Reflect.get(n,r,i)}else e[0]instanceof T&&(a=e[r]===void 0?e[t++]:Reflect.get(e,r,i))}else a=Reflect.get(n,r,i);a=D(a)}return a}})}var Hr=class extends T{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}getLayout(){return this.layout}call(e=null){return new zr(this,e)}setup(){return this.call()}},Ur=[!1,!0],Wr=[0,1,2,3],Gr=[-1,-2],Kr=[.5,1.5,1/3,1e-6,1e6,Math.PI,Math.PI*2,1/Math.PI,2/Math.PI,1/(Math.PI*2),Math.PI/2],qr=new Map;for(let e of Ur)qr.set(e,new Cr(e));var Jr=new Map;for(let e of Wr)Jr.set(e,new Cr(e,`uint`));var Yr=new Map([...Jr].map(e=>new Cr(e.value,`int`)));for(let e of Gr)Yr.set(e,new Cr(e,`int`));var Xr=new Map([...Yr].map(e=>new Cr(e.value)));for(let e of Kr)Xr.set(e,new Cr(e));for(let e of Kr)Xr.set(-e,new Cr(-e));var Zr={bool:qr,uint:Jr,ints:Yr,float:Xr},Qr=new Map([...qr,...Xr]),$r=(e,t)=>Qr.has(e)?Qr.get(e):e.isNode===!0?e:new Cr(e,t),ei=function(e,t=null){return(...n)=>{for(let t of n)if(t===void 0)return S(`TSL: Invalid parameter for the type "${e}".`,new Rn),new Cr(0,e);if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>{let t=typeof e;return t!==`object`&&t!==`function`}))&&(n=[Qn(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return ii(t.get(n[0]));if(n.length===1){let t=$r(n[0],e);return t.nodeType===e?ii(t):ii(new mr(t,e))}return ii(new gr(n.map(e=>$r(e)),e))}};function ti(e){return e&&e.isNode&&e.traverse(t=>{t.isConstNode&&(e=t.value)}),!!e}var ni=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function ri(e,t){return new Hr(e,t)}var D=(e,t=null)=>Pr(e,t),ii=(e,t=null)=>D(e,t).toVarIntent(),ai=(e,t=null)=>new Fr(e,t),oi=(e,t=null)=>new Ir(e,t),O=(e,t=null,n=null,r=null)=>new Lr(e,t,n,r),k=(e,...t)=>new Rr(e,...t),A=(e,t=null,n=null,r={})=>new Lr(e,t,n,{...r,intent:!0}),si=(e,t)=>new Proxy(e,{get(e,n,r){return Reflect.get(t,n,r)},set(e,n,r){return Reflect.set(t,n,r)}}),ci=0,li=class extends T{constructor(e,t=null){super();let n=null;t!==null&&(typeof t==`object`?n=t.return:(typeof t==`string`?n=t:S(`TSL: Invalid layout type.`,new Rn),t=null)),this.shaderNode=new ri(e,n),t!==null&&this.setLayout(t),this.isFn=!0}setLayout(e){let t=this.shaderNode.nodeType;if(typeof e.inputs!=`object`){let n={name:`fn`+ci++,type:t,inputs:[]};for(let t in e)t!==`return`&&n.inputs.push({name:t,type:e[t]});e=n}return this.shaderNode.setLayout(e),this}generateNodeType(e){return this.shaderNode.getNodeType(e)||`float`}call(...e){let t=this.shaderNode.call(e);return this.shaderNode.nodeType===`void`&&t.toStack(),t.toVarIntent()}once(e=null){return this.shaderNode.once=!0,this.shaderNode.subBuilds=e,this}generate(e){let t=this.getNodeType(e);return S(`TSL: "Fn()" was declared but not invoked. Try calling it like "Fn()( ...params )".`,this.stackTrace),e.generateConst(t)}};function j(e,t=null){let n=new li(e,t);return new Proxy(()=>{},{apply(e,t,r){return n.call(...r)},get(e,t,r){return Reflect.get(n,t,r)},set(e,t,r,i){return Reflect.set(n,t,r,i)}})}var ui=e=>{Tr=e},di=()=>Tr,M=(...e)=>Tr.If(...e),fi=(...e)=>Tr.Switch(...e);function pi(e){return Tr&&Tr.addToStack(e),e}E(`toStack`,pi);var mi=new ei(`color`),N=new ei(`float`,Zr.float),P=new ei(`int`,Zr.ints),F=new ei(`uint`,Zr.uint),hi=new ei(`bool`,Zr.bool),I=new ei(`vec2`),gi=new ei(`ivec2`),_i=new ei(`uvec2`),vi=new ei(`bvec2`),L=new ei(`vec3`),yi=new ei(`ivec3`),bi=new ei(`uvec3`),xi=new ei(`bvec3`),R=new ei(`vec4`),Si=new ei(`ivec4`),Ci=new ei(`uvec4`),wi=new ei(`bvec4`),Ti=new ei(`mat2`),Ei=new ei(`mat3`),Di=new ei(`mat4`);E(`toColor`,mi),E(`toFloat`,N),E(`toInt`,P),E(`toUint`,F),E(`toBool`,hi),E(`toVec2`,I),E(`toIVec2`,gi),E(`toUVec2`,_i),E(`toBVec2`,vi),E(`toVec3`,L),E(`toIVec3`,yi),E(`toUVec3`,bi),E(`toBVec3`,xi),E(`toVec4`,R),E(`toIVec4`,Si),E(`toUVec4`,Ci),E(`toBVec4`,wi),E(`toMat2`,Ti),E(`toMat3`,Ei),E(`toMat4`,Di);var Oi=O(pr).setParameterLength(2),ki=(e,t)=>new mr(D(e),t),Ai=(e,t)=>new vr(D(e),t);E(`element`,Oi),E(`convert`,ki);var z=class extends T{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1,r=null){super(e),this.name=t,this.varying=n,this.placeholderNode=D(r),this.isPropertyNode=!0,this.global=!0}getNodeType(e){let t=super.getNodeType(e);return t===`output`?e.getOutputType():t}customCacheKey(){return Bn(this.type+`:`+(this.name||``)+`:`+(this.varying?`1`:`0`))}getHash(e){return this.name||super.getHash(e)}generate(e){let t;if(this.varying===!0)t=e.getVaryingFromNode(this,this.name),t.needsInterpolation=!0;else if(t=e.getVarFromNode(this,this.name),this.placeholderNode!==null&&e.hasWriteUsage(this)===!1){let n=this.placeholderNode.build(e,this.getNodeType(e));e.addLineFlowCode(`${e.getPropertyName(t)} = ${n}`,this)}return e.getPropertyName(t)}},ji=(e,t,n=null)=>new z(e,t,!1,n),Mi=(e,t,n=null)=>new z(e,t,!0,n),B=k(z,`vec4`,`DiffuseColor`),Ni=k(z,`vec3`,`DiffuseContribution`),Pi=k(z,`vec3`,`EmissiveColor`),Fi=k(z,`float`,`Roughness`),Ii=k(z,`float`,`Metalness`),Li=k(z,`float`,`Clearcoat`),Ri=k(z,`float`,`ClearcoatRoughness`),zi=k(z,`vec3`,`Sheen`),Bi=k(z,`float`,`SheenRoughness`),Vi=k(z,`float`,`Iridescence`),Hi=k(z,`float`,`IridescenceIOR`),Ui=k(z,`float`,`IridescenceThickness`),Wi=k(z,`float`,`AlphaT`),Gi=k(z,`float`,`Anisotropy`),Ki=k(z,`vec3`,`AnisotropyT`),qi=k(z,`vec3`,`AnisotropyB`),Ji=k(z,`color`,`SpecularColor`),Yi=k(z,`color`,`SpecularColorBlended`),Xi=k(z,`float`,`SpecularF90`),Zi=k(z,`float`,`Shininess`),Qi=k(z,`output`,`Output`),$i=k(z,`float`,`dashSize`),ea=k(z,`float`,`gapSize`),ta=k(z,`float`,`pointWidth`),na=k(z,`float`,`IOR`),ra=k(z,`float`,`Transmission`),ia=k(z,`float`,`Thickness`),aa=k(z,`float`,`AttenuationDistance`),oa=k(z,`color`,`AttenuationColor`),sa=k(z,`float`,`Dispersion`),ca=k(z,`float`,`Retroreflectivity`),la=k(z,`float`,`AmbientOcclusion`,!1,1),ua=class extends T{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1,r=null){super(`string`),this.name=e,this.shared=t,this.order=n,this.updateType=r,this.isUniformGroup=!0}update(){this.needsUpdate=!0}serialize(e){super.serialize(e),e.name=this.name,e.version=this.version,e.shared=this.shared}deserialize(e){super.deserialize(e),this.name=e.name,this.version=e.version,this.shared=e.shared}},da=(e,t=1,n=null)=>new ua(e,!1,t,n),fa=(e,t=0,n=null)=>new ua(e,!0,t,n),pa=fa(`frame`,0,w.FRAME),V=fa(`render`,0,w.RENDER),ma=da(`object`,1,w.OBJECT),ha=class extends xr{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=ma}setName(e){return this.name=e,this}label(e){return C(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Rn),this.setName(e)}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}getSharedNode(e){let t=this.getUniformHash(e),n=e.getNodeFromHash(t);return n===void 0&&(e.setHashNode(this,t),n=this),n}onUpdate(e,t){return e=e.bind(this),super.onUpdate(t=>{let n=e(t,this);n!==void 0&&(this.value=n)},t)}getInputType(e){let t=super.getInputType(e);return t===`bool`&&(t=`uint`),t}generate(e,t){let n=this.getNodeType(e),r=this.getSharedNode(e),i=r.getInputType(e),a=e.getUniformFromNode(r,i,e.shaderStage,this.name||e.context.nodeName),o=e.getPropertyName(a);e.context.nodeName!==void 0&&delete e.context.nodeName;let s=o;if(n===`bool`){let t=e.getDataFromNode(this),r=t.propertyName;if(r===void 0){let a=e.getVarFromNode(this,null,`bool`);r=e.getPropertyName(a),t.propertyName=r,s=e.format(o,i,n),e.addLineFlowCode(`${r} = ${s}`,this)}s=r}return e.format(s,n,t)}},H=(e,t)=>{let n=ni(t||e);if(n===e&&(e=Qn(n)),e&&e.isNode===!0){let t=e.value;e.traverse(e=>{e.isConstNode===!0&&(t=e.value)}),e=t}return new ha(e,n)},ga=class extends hr{static get type(){return`ArrayNode`}constructor(e,t,n=null){super(e),this.count=t,this.values=n,this.isArrayNode=!0}getArrayCount(){return this.count}generateNodeType(e){return this.nodeType===null?this.values[0].getNodeType(e):this.nodeType}getElementType(e){return this.getNodeType(e)}getMemberType(e,t){return this.nodeType===null?this.values[0].getMemberType(e,t):super.getMemberType(e,t)}generate(e){let t=this.getNodeType(e);return e.generateArray(t,this.count,this.values)}},_a=(...e)=>{let t;if(e.length===1){let n=e[0].map(e=>D(e));t=new ga(null,n.length,n)}else{let n=e[0],r=e[1];t=new ga(n,r)}return t};E(`toArray`,(e,t)=>_a(Array(t).fill(e)));var va=class extends hr{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t,this.isAssignNode=!0}hasDependencies(){return!1}generateNodeType(e,t){return t===`void`?`void`:this.targetNode.getNodeType(e)}needsSplitAssign(e){let{targetNode:t}=this;if(e.isAvailable(`swizzleAssign`)===!1&&t.isSplitNode&&t.components.length>1){let n=e.getTypeLength(t.node.getNodeType(e));return ur.join(``).slice(0,n)!==t.components}return!1}setup(e){let{targetNode:t,sourceNode:n}=this,r=t.getScope(),i=e.getDataFromNode(r);i.assign=!0;let a=e.getNodeProperties(this);a.sourceNode=n,a.targetNode=t.context({assign:!0})}generate(e,t){let{targetNode:n,sourceNode:r}=e.getNodeProperties(this),i=this.needsSplitAssign(e),a=n.build(e),o=n.getNodeType(e),s=r.build(e,o),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=a);else if(i){let r=e.getVarFromNode(this,null,o),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node,l=c.node.context({assign:!0}).build(e);for(let t=0;t<c.components.length;t++){let n=c.components[t];e.addLineFlowCode(`${l}.${n} = ${i}[ ${t} ]`,this)}t!==`void`&&(u=a)}else u=`${a} = ${s}`,(t===`void`||c===`void`)&&(e.addLineFlowCode(u,this),t!==`void`&&(u=a));return l.initialized=!0,e.format(u,o,t)}},ya=O(va).setParameterLength(2);E(`assign`,ya);var ba=class extends hr{static get type(){return`FunctionCallNode`}constructor(e=null,t={}){super(),this.functionNode=e,this.parameters=t}setParameters(e){return this.parameters=e,this}getParameters(){return this.parameters}generateNodeType(e){return this.functionNode.getNodeType(e)}getMemberType(e,t){return this.functionNode.getMemberType(e,t)}generate(e){let t=[],n=this.functionNode,r=n.getInputs(e),i=this.parameters,a=(t,n)=>{let r=n.type,i=r===`pointer`,a;return a=i?`&`+t.build(e):t.build(e,r),a};if(Array.isArray(i)){if(i.length>r.length)S(`TSL: The number of provided parameters exceeds the expected number of inputs in 'Fn()'.`),i.length=r.length;else if(i.length<r.length)for(S(`TSL: The number of provided parameters is less than the expected number of inputs in 'Fn()'.`);i.length<r.length;)i.push(N(0));for(let e=0;e<i.length;e++)t.push(a(i[e],r[e]))}else for(let e of r){let n=i[e.name];n===void 0?(S(`TSL: Input '${e.name}' not found in \'Fn()\'.`),t.push(a(N(0),e))):t.push(a(n,e))}return`${n.build(e,`property`)}( ${t.join(`, `)} )`}},xa=(e,...t)=>(t=t.length>1||t[0]&&t[0].isNode===!0?oi(t):ai(t[0]),new ba(D(e),t));E(`call`,xa);var Sa={"==":`equal`,"!=":`notEqual`,"<":`lessThan`,">":`greaterThan`,"<=":`lessThanEqual`,">=":`greaterThanEqual`,"%":`mod`},Ca=class e extends hr{static get type(){return`OperatorNode`}constructor(t,n,r,...i){if(super(),i.length>0){let a=new e(t,n,r);for(let n=0;n<i.length-1;n++)a=new e(t,a,i[n]);n=a,r=i[i.length-1]}this.op=t,this.aNode=n,this.bNode=r,this.isOperatorNode=!0}getOperatorMethod(e,t){return e.getMethod(Sa[this.op],t)}generateNodeType(e,t=null){let n=this.op,r=this.aNode,i=this.bNode,a=r.getNodeType(e),o=i?i.getNodeType(e):null;if(a===`void`||o===`void`)return t||`void`;if(n===`%`)return a;if(n===`~`||n===`&`||n===`|`||n===`^`||n===`>>`||n===`<<`)return e.getIntegerType(a);if(n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`!`){let t=e.getTypeLength(a);return t>1?`bvec${t}`:`bool`}if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`){let t=Math.max(e.getTypeLength(a),e.getTypeLength(o));return t>1?`bvec${t}`:`bool`}if(e.isMatrix(a)){if(o===`float`)return a;if(e.isVector(o))return e.getVectorFromMatrix(a);if(e.isMatrix(o))return a}else if(e.isMatrix(o)){if(a===`float`)return o;if(e.isVector(a))return e.getVectorFromMatrix(o)}return e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,{aNode:r,bNode:i}=this,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i?i.getNodeType(e):null,n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`||n===`!=`?e.isVector(o)?s=o:e.isVector(s)?o=s:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):n===`%`?(o=a,s=e.isInteger(o)&&e.isInteger(s)?s:o):e.isMatrix(o)?s===`float`?s=`float`:e.isVector(s)?s=e.getVectorFromMatrix(o):e.isMatrix(s)||(o=s=a):o=e.isMatrix(s)?o===`float`?`float`:e.isVector(o)?e.getVectorFromMatrix(s):s=a:s=a);let c=r.build(e,o),l=i?i.build(e,s):null,u=e.getFunctionOperator(n);if(t!==`void`){let r=e.renderer.coordinateSystem===_;if(n===`==`||n===`!=`||n===`<`||n===`>`||n===`<=`||n===`>=`)return r&&e.isVector(o)?e.format(`${this.getOperatorMethod(e,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(n===`%`)return e.isInteger(s)?e.format(`( ${c} % ${l} )`,a,t):e.format(`${this.getOperatorMethod(e,a)}( ${c}, ${l} )`,a,t);if(n===`!`)return r&&e.isVector(o)?e.format(`not( ${c} )`,t):e.format(`( ${n} ${c} )`,o,t);if(n===`~`)return e.format(`( ${n} ${c} )`,o,t);if(u)return e.format(`${u}( ${c}, ${l} )`,a,t);if(e.isMatrix(o)&&s===`float`)return e.format(`( ${l} ${n} ${c} )`,a,t);if(o===`float`&&e.isMatrix(s))return e.format(`${c} ${n} ${l}`,a,t);{let i=`( ${c} ${n} ${l} )`;return!r&&a===`bool`&&e.isVector(o)&&e.isVector(s)&&(i=`all${i}`),e.format(i,a,t)}}if(o!==`void`)return u?e.format(`${u}( ${c}, ${l} )`,a,t):e.isMatrix(o)&&s===`float`?e.format(`${l} ${n} ${c}`,a,t):e.format(`${c} ${n} ${l}`,a,t)}serialize(e){super.serialize(e),e.op=this.op}deserialize(e){super.deserialize(e),this.op=e.op}},wa=A(Ca,`+`).setParameterLength(2,1/0).setName(`add`),U=A(Ca,`-`).setParameterLength(2,1/0).setName(`sub`),W=A(Ca,`*`).setParameterLength(2,1/0).setName(`mul`),Ta=A(Ca,`/`).setParameterLength(2,1/0).setName(`div`),Ea=A(Ca,`%`).setParameterLength(2).setName(`mod`),Da=A(Ca,`==`).setParameterLength(2).setName(`equal`),Oa=A(Ca,`!=`).setParameterLength(2).setName(`notEqual`),ka=A(Ca,`<`).setParameterLength(2).setName(`lessThan`),Aa=A(Ca,`>`).setParameterLength(2).setName(`greaterThan`),ja=A(Ca,`<=`).setParameterLength(2).setName(`lessThanEqual`),Ma=A(Ca,`>=`).setParameterLength(2).setName(`greaterThanEqual`),Na=A(Ca,`&&`).setParameterLength(2,1/0).setName(`and`),Pa=A(Ca,`||`).setParameterLength(2,1/0).setName(`or`),Fa=A(Ca,`!`).setParameterLength(1).setName(`not`),Ia=A(Ca,`^^`).setParameterLength(2).setName(`xor`),La=A(Ca,`&`).setParameterLength(2).setName(`bitAnd`),Ra=A(Ca,`~`).setParameterLength(1).setName(`bitNot`),za=A(Ca,`|`).setParameterLength(2).setName(`bitOr`),Ba=A(Ca,`^`).setParameterLength(2).setName(`bitXor`),Va=A(Ca,`<<`).setParameterLength(2).setName(`shiftLeft`),Ha=A(Ca,`>>`).setParameterLength(2).setName(`shiftRight`),Ua=j(([e])=>(e.addAssign(1),e)),Wa=j(([e])=>(e.subAssign(1),e)),Ga=j(([e])=>{let t=P(e).toConst();return e.addAssign(1),t}),Ka=j(([e])=>{let t=P(e).toConst();return e.subAssign(1),t});E(`add`,wa),E(`sub`,U),E(`mul`,W),E(`div`,Ta),E(`mod`,Ea),E(`equal`,Da),E(`notEqual`,Oa),E(`lessThan`,ka),E(`greaterThan`,Aa),E(`lessThanEqual`,ja),E(`greaterThanEqual`,Ma),E(`and`,Na),E(`or`,Pa),E(`not`,Fa),E(`xor`,Ia),E(`bitAnd`,La),E(`bitNot`,Ra),E(`bitOr`,za),E(`bitXor`,Ba),E(`shiftLeft`,Va),E(`shiftRight`,Ha),E(`incrementBefore`,Ua),E(`decrementBefore`,Wa),E(`increment`,Ga),E(`decrement`,Ka);var G=class e extends hr{static get type(){return`MathNode`}constructor(t,n,r=null,i=null){if(super(),(t===e.MAX||t===e.MIN)&&arguments.length>3){let a=new e(t,n,r);for(let n=3;n<arguments.length-1;n++)a=new e(t,a,arguments[n]);n=a,r=arguments[arguments.length-1],i=null}this.method=t,this.aNode=n,this.bNode=r,this.cNode=i,this.isMathNode=!0}getInputType(e){let t=this.aNode.getNodeType(e),n=this.bNode?this.bNode.getNodeType(e):null,r=this.cNode?this.cNode.getNodeType(e):null,i=e.isMatrix(t)?0:e.getTypeLength(t),a=e.isMatrix(n)?0:e.getTypeLength(n),o=e.isMatrix(r)?0:e.getTypeLength(r);return i>a&&i>o?t:a>o?n:o>i?r:t}generateNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT||n===e.DETERMINANT?`float`:n===e.CROSS?`vec3`:n===e.ALL||n===e.ANY?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):this.getInputType(t)}setup(t){let{aNode:n,bNode:r,method:i}=this,a=null;if(i===e.ONE_MINUS)a=U(1,n);else if(i===e.RECIPROCAL)a=Ta(1,n);else if(i===e.DIFFERENCE)a=Eo(U(n,r));else if(i===e.TRANSFORM_DIRECTION){let e,i;t.isMatrix(n.getNodeType(t))?(e=n,i=r):(e=r,i=n),a=fo(W(e,R(L(i),0)).xyz)}return a===null?super.setup(t):a}generate(t,n){if(t.getNodeProperties(this).outputNode)return super.generate(t,n);let r=this.method,i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=this.cNode,l=t.renderer.coordinateSystem;if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);{let u=[];return r===e.CROSS?u.push(o.build(t,i),s.build(t,i)):l===2e3&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l===2e3&&(r===e.MIN||r===e.MAX)?u.push(o.build(t,a),s.build(t,t.getTypeLength(s.getNodeType(t))===1?t.getComponentType(a):a)):r===e.REFRACT?u.push(o.build(t,a),s.build(t,a),c.build(t,`float`)):r===e.MIX?u.push(o.build(t,a),s.build(t,a),c.build(t,t.getTypeLength(c.getNodeType(t))===1?`float`:a)):(l===2001&&r===e.ATAN&&s!==null&&(r=`atan2`),t.shaderStage!==`fragment`&&(r===e.DFDX||r===e.DFDY)&&(S(`TSL: '${r}' is not supported in the ${t.shaderStage} stage.`,this.stackTrace),r=`/*`+r+`*/`),u.push(o.build(t,a)),s!==null&&u.push(s.build(t,a)),c!==null&&u.push(c.build(t,a))),t.format(`${t.getMethod(r,i)}( ${u.join(`, `)} )`,i,n)}}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};G.ALL=`all`,G.ANY=`any`,G.RADIANS=`radians`,G.DEGREES=`degrees`,G.EXP=`exp`,G.EXP2=`exp2`,G.LOG=`log`,G.LOG2=`log2`,G.SQRT=`sqrt`,G.INVERSE_SQRT=`inversesqrt`,G.FLOOR=`floor`,G.CEIL=`ceil`,G.NORMALIZE=`normalize`,G.FRACT=`fract`,G.SIN=`sin`,G.SINH=`sinh`,G.COS=`cos`,G.COSH=`cosh`,G.TAN=`tan`,G.TANH=`tanh`,G.ASIN=`asin`,G.ASINH=`asinh`,G.ACOS=`acos`,G.ACOSH=`acosh`,G.ATAN=`atan`,G.ATANH=`atanh`,G.ABS=`abs`,G.SIGN=`sign`,G.LENGTH=`length`,G.NEGATE=`negate`,G.ONE_MINUS=`oneMinus`,G.DFDX=`dFdx`,G.DFDY=`dFdy`,G.ROUND=`round`,G.RECIPROCAL=`reciprocal`,G.TRUNC=`trunc`,G.FWIDTH=`fwidth`,G.TRANSPOSE=`transpose`,G.DETERMINANT=`determinant`,G.INVERSE=`inverse`,G.EQUALS=`equals`,G.MIN=`min`,G.MAX=`max`,G.STEP=`step`,G.REFLECT=`reflect`,G.DISTANCE=`distance`,G.DIFFERENCE=`difference`,G.DOT=`dot`,G.CROSS=`cross`,G.POW=`pow`,G.TRANSFORM_DIRECTION=`transformDirection`,G.MIX=`mix`,G.CLAMP=`clamp`,G.REFRACT=`refract`,G.SMOOTHSTEP=`smoothstep`,G.FACEFORWARD=`faceforward`;var qa=N(1e-6),Ja=N(1e6),Ya=N(Math.PI),Xa=N(Math.PI*2),Za=N(Math.PI*2),Qa=N(Math.PI*.5),$a=A(G,G.ALL).setParameterLength(1),eo=A(G,G.ANY).setParameterLength(1),to=A(G,G.RADIANS).setParameterLength(1),no=A(G,G.DEGREES).setParameterLength(1),ro=A(G,G.EXP).setParameterLength(1),io=A(G,G.EXP2).setParameterLength(1),ao=A(G,G.LOG).setParameterLength(1),oo=A(G,G.LOG2).setParameterLength(1),so=A(G,G.SQRT).setParameterLength(1),co=A(G,G.INVERSE_SQRT).setParameterLength(1),lo=A(G,G.FLOOR).setParameterLength(1),uo=A(G,G.CEIL).setParameterLength(1),fo=A(G,G.NORMALIZE).setParameterLength(1),po=A(G,G.FRACT).setParameterLength(1),mo=A(G,G.SIN).setParameterLength(1),ho=A(G,G.SINH).setParameterLength(1),go=A(G,G.COS).setParameterLength(1),_o=A(G,G.COSH).setParameterLength(1),vo=A(G,G.TAN).setParameterLength(1),yo=A(G,G.TANH).setParameterLength(1),bo=A(G,G.ASIN).setParameterLength(1),xo=A(G,G.ASINH).setParameterLength(1),So=A(G,G.ACOS).setParameterLength(1),Co=A(G,G.ACOSH).setParameterLength(1),wo=A(G,G.ATAN).setParameterLength(1,2),To=A(G,G.ATANH).setParameterLength(1),Eo=A(G,G.ABS).setParameterLength(1),Do=A(G,G.SIGN).setParameterLength(1),Oo=A(G,G.LENGTH).setParameterLength(1),ko=A(G,G.NEGATE).setParameterLength(1),Ao=A(G,G.ONE_MINUS).setParameterLength(1),jo=A(G,G.DFDX).setParameterLength(1),Mo=A(G,G.DFDY).setParameterLength(1),No=A(G,G.ROUND).setParameterLength(1),Po=A(G,G.RECIPROCAL).setParameterLength(1),Fo=A(G,G.TRUNC).setParameterLength(1),Io=A(G,G.FWIDTH).setParameterLength(1),Lo=A(G,G.TRANSPOSE).setParameterLength(1),Ro=A(G,G.DETERMINANT).setParameterLength(1),zo=A(G,G.INVERSE).setParameterLength(1),Bo=A(G,G.MIN).setParameterLength(2,1/0),Vo=A(G,G.MAX).setParameterLength(2,1/0),Ho=A(G,G.STEP).setParameterLength(2),Uo=A(G,G.REFLECT).setParameterLength(2),Wo=A(G,G.DISTANCE).setParameterLength(2),Go=A(G,G.DIFFERENCE).setParameterLength(2),Ko=A(G,G.DOT).setParameterLength(2),qo=A(G,G.CROSS).setParameterLength(2),Jo=A(G,G.POW).setParameterLength(2),Yo=e=>W(e,e),Xo=e=>W(e,e,e),Zo=e=>W(e,e,e,e),Qo=A(G,G.TRANSFORM_DIRECTION).setParameterLength(2),$o=(e,t)=>fo(W(t,R(L(e),0)).xyz),es=(e,t)=>fo(R(L(e),0).mul(t).xyz),ts=e=>W(Do(e),Jo(Eo(e),1/3)),ns=e=>Ko(e,e),K=A(G,G.MIX).setParameterLength(3),rs=(e,t=0,n=1)=>new G(G.CLAMP,D(e),D(t),D(n)),is=e=>rs(e),as=A(G,G.REFRACT).setParameterLength(3),os=A(G,G.SMOOTHSTEP).setParameterLength(3),ss=A(G,G.FACEFORWARD).setParameterLength(3),cs=j(([e])=>po(mo(Ea(Ko(e.xy,I(12.9898,78.233)),Ya)).mul(43758.5453))),ls=(e,t,n)=>K(t,n,e),us=(e,t,n)=>os(t,n,e),ds=(e,t)=>Ho(t,e),fs=ss,ps=co;E(`all`,$a),E(`any`,eo),E(`radians`,to),E(`degrees`,no),E(`exp`,ro),E(`exp2`,io),E(`log`,ao),E(`log2`,oo),E(`sqrt`,so),E(`inverseSqrt`,co),E(`floor`,lo),E(`ceil`,uo),E(`normalize`,fo),E(`fract`,po),E(`sin`,mo),E(`sinh`,ho),E(`cos`,go),E(`cosh`,_o),E(`tan`,vo),E(`tanh`,yo),E(`asin`,bo),E(`asinh`,xo),E(`acos`,So),E(`acosh`,Co),E(`atan`,wo),E(`atanh`,To),E(`abs`,Eo),E(`sign`,Do),E(`length`,Oo),E(`lengthSq`,ns),E(`negate`,ko),E(`oneMinus`,Ao),E(`dFdx`,jo),E(`dFdy`,Mo),E(`round`,No),E(`reciprocal`,Po),E(`trunc`,Fo),E(`fwidth`,Io),E(`min`,Bo),E(`max`,Vo),E(`step`,ds),E(`reflect`,Uo),E(`distance`,Wo),E(`dot`,Ko),E(`cross`,qo),E(`pow`,Jo),E(`pow2`,Yo),E(`pow3`,Xo),E(`pow4`,Zo),E(`transformDirection`,Qo),E(`transformNormalByViewMatrix`,$o),E(`transformNormalByInverseViewMatrix`,es),E(`mix`,ls),E(`clamp`,rs),E(`refract`,as),E(`smoothstep`,us),E(`faceForward`,ss),E(`difference`,Go),E(`saturate`,is),E(`cbrt`,ts),E(`transpose`,Lo),E(`determinant`,Ro),E(`inverse`,zo),E(`rand`,cs);var ms=class extends T{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}generateNodeType(e){let{ifNode:t,elseNode:n}=e.getNodeProperties(this);if(t===void 0)return e.flowBuildStage(this,`setup`),this.getNodeType(e);let r=t.getNodeType(e);if(n!==null){let t=n.getNodeType(e);if(e.getTypeLength(t)>e.getTypeLength(r))return t}return r}setup(e){let t=this.condNode,n=this.ifNode.isolate(),r=this.elseNode?this.elseNode.isolate():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.context.uniformFlow,o=e.getNodeProperties(this);o.condNode=t,o.ifNode=a?n:n.context({nodeBlock:n}),o.elseNode=r?a?r:r.context({nodeBlock:r}):null}generate(e,t){let n=this.getNodeType(e),r=e.getDataFromNode(this);if(r.nodeProperty!==void 0)return r.nodeProperty;let{condNode:i,ifNode:a,elseNode:o}=e.getNodeProperties(this),s=e.currentFunctionNode,c=t!==`void`,l=c?ji(n).build(e):``;r.nodeProperty=l;let u=i.build(e,`bool`);if(e.context.uniformFlow&&o!==null){let r=a.build(e,n),i=o.build(e,n),s=e.getTernary(u,r,i);return e.format(s,n,t)}e.addFlowCode(`\n${e.tab}if ( ${u} ) {\n\n`).addFlowTab();let d=a.build(e,n);if(d&&(c?d=l+` = `+d+`;`:(d=`return `+d+`;`,s===null&&(C(`TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`,this.stackTrace),d=`// `+d))),e.removeFlowTab().addFlowCode(e.tab+` `+d+`
4
+
5
+ `+e.tab+`}`),o!==null){e.addFlowCode(` else {
6
+
7
+ `).addFlowTab();let t=o.build(e,n);t&&(c?t=l+` = `+t+`;`:(t=`return `+t+`;`,s===null&&(C(`TSL: Return statement used in an inline 'Fn()'. Define a layout struct to allow return values.`,this.stackTrace),t=`// `+t))),e.removeFlowTab().addFlowCode(e.tab+` `+t+`
8
+
9
+ `+e.tab+`}
10
+
11
+ `)}else e.addFlowCode(`
12
+
13
+ `);return e.format(l,n,t)}},hs=O(ms).setParameterLength(2,3);E(`select`,hs);var gs=class extends T{static get type(){return`ContextNode`}constructor(e=null,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}generateNodeType(e){return this.node.getNodeType(e)}getFlowContextData(){let e=[];return this.traverse(t=>{t.isContextNode===!0&&e.push(t.value)}),Object.assign({},...e)}getMemberType(e,t){return this.node.getMemberType(e,t)}analyze(e){if(e.increaseUsage(this)===1){let t=e.addContext(this.value);this.node.build(e,this),e.setContext(t)}}setup(e){let t=e.addContext(this.value),n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.addContext(this.value),r=this.node.build(e,t);return e.setContext(n),r}},_s=(e=null,t={})=>{let n=e;return(n===null||n.isNode!==!0)&&(t=n||t,n=null),new gs(n,t)},vs=e=>_s(e,{uniformFlow:!0}),ys=(e,t)=>_s(e,{nodeName:t});function bs(e,t,n=null){return _s(n,{getShadow:({light:n,shadowColorNode:r})=>t===n?r.mul(e):r})}function xs(e,t=null){return _s(t,{getAO:(t,{material:n})=>n.transparent===!0?t:t===null?e:t.mul(e)})}function Ss(e,t,n=null){let r=e.max(.001);return _s(n,{getAO:(e,{material:t})=>t.transparent===!0?e:e===null?r:e.mul(r),getGI:(e,{material:n})=>{if(n.transparent===!0)return e;let i=t.div(r);return e===null?i:e.add(i)}})}function Cs(e,t){return C(`TSL: "label()" has been deprecated. Use "setName()" instead.`),ys(e,t)}E(`context`,_s),E(`label`,Cs),E(`uniformFlow`,vs),E(`setName`,ys),E(`builtinShadowContext`,(e,t,n)=>bs(t,n,e)),E(`builtinAOContext`,(e,t)=>xs(t,e)),E(`builtinGIContext`,(e,t,n)=>Ss(t,n,e));var ws=class extends T{static get type(){return`VarNode`}constructor(e,t=null,n=!1){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0,this.readOnly=n,this.parents=!0,this.intent=!1}setIntent(e){return this.intent=e,this}isIntent(e){return e.getDataFromNode(this).forceDeclaration!==!0&&this.intent}getIntent(){return this.intent}getMemberType(e,t){return this.node.getMemberType(e,t)}getElementType(e){return this.node.getElementType(e)}generateNodeType(e){return this.node.getNodeType(e)}getArrayCount(e){return this.node.getArrayCount(e)}isAssign(e){return e.getDataFromNode(this).assign}build(...e){let t=e[0],n=this.getShared(t);if(this!==n)return n.build(...e);if(this._hasStack(t)===!1&&t.buildStage===`setup`&&(t.context.nodeLoop||t.context.nodeBlock)){let e=!1;if(this.node.isShaderCallNodeInternal&&this.node.shaderNode.getLayout()===null&&t.fnCall&&t.fnCall.shaderNode&&t.getDataFromNode(this.node.shaderNode).hasLoop){let n=t.getDataFromNode(this);n.forceDeclaration=!0,e=!0}let n=t.getBaseStack();e?n.addToStackBefore(this):n.addToStack(this)}return this.isIntent(t)&&this.isAssign(t)!==!0?this.node.build(...e):super.build(...e)}generate(e){let{node:t,name:n,readOnly:r}=this,{renderer:i}=e,a=i.backend.isWebGPUBackend===!0,o=!1,s=!1;r&&(o=e.isDeterministic(t),s=a?r:o);let c=this.getNodeType(e);if(c==`void`)return this.isIntent(e)!==!0&&S(`TSL: ".toVar()" can not be used with void type.`,this.stackTrace),t.build(e);let l=e.getVectorType(c),u=t.build(e,l),d=e.getVarFromNode(this,n,l,void 0,s),f=e.getPropertyName(d),p=f;if(s){if(a)p=o?`const ${f}`:`let ${f}`;else{let n=t.getArrayCount(e);p=`const ${e.getVar(d.type,f,n)}`}}return e.addLineFlowCode(`${p} = ${u}`,this),f}_hasStack(e){return e.getDataFromNode(this).stack!==void 0}},Ts=O(ws),Es=(e,t=null)=>Ts(e,t).toStack(),Ds=(e,t=null)=>Ts(e,t,!0).toStack(),Os=e=>Ts(e).setIntent(!0).toStack();E(`toVar`,Es),E(`toConst`,Ds),E(`toVarIntent`,Os);var ks=class extends T{static get type(){return`SubBuild`}constructor(e,t,n=null){super(n),this.node=e,this.name=t,this.isSubBuildNode=!0}generateNodeType(e){if(this.nodeType!==null)return this.nodeType;e.addSubBuild(this.name);let t=this.node.getNodeType(e);return e.removeSubBuild(),t}build(e,...t){e.addSubBuild(this.name);let n=this.node.build(e,...t);return e.removeSubBuild(),n}},As=(e,t,n=null)=>new ks(D(e),t,n),js=class extends T{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=As(e,`VERTEX`),this.name=t,this.isVaryingNode=!0,this.interpolationType=null,this.interpolationSampling=null,this.global=!0}setInterpolation(e,t=null){return this.interpolationType=e,this.interpolationSampling=t,this}getHash(e){return this.name||super.getHash(e)}generateNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e),a=this.interpolationType,o=this.interpolationSampling;t.varying=n=e.getVaryingFromNode(this,r,i,a,o),t.node=As(this.node,`VERTEX`)}return n.needsInterpolation||(n.needsInterpolation=e.shaderStage===`fragment`),n}setup(e){this.setupVarying(e),e.flowNodeFromShaderStage(ir.VERTEX,this.node)}analyze(e){this.setupVarying(e),e.flowNodeFromShaderStage(ir.VERTEX,this.node)}generate(e){let t=e.getSubBuildProperty(`property`,e.currentStack),n=e.getNodeProperties(this),r=this.setupVarying(e);if(n[t]===void 0){let i=this.getNodeType(e),a=e.getPropertyName(r,ir.VERTEX);if(e.shaderStage===ir.VERTEX){let t=n.node.build(e,i);e.addLineFlowCode(`${a} = ${t}`,this)}else e.flowNodeFromShaderStage(ir.VERTEX,n.node,i,a);n[t]=a}return e.getPropertyName(r)}},Ms=O(js).setParameterLength(1,2),Ns=e=>Ms(e);E(`toVarying`,Ms),E(`toVertexStage`,Ns);var Ps=j(([e])=>K(e.mul(.9478672986).add(.0521327014).pow(2.4),e.mul(.0773993808),e.lessThanEqual(.04045))).setLayout({name:`sRGBTransferEOTF`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Fs=j(([e])=>K(e.pow(.41666).mul(1.055).sub(.055),e.mul(12.92),e.lessThanEqual(.0031308))).setLayout({name:`sRGBTransferOETF`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Is=`WorkingColorSpace`,Ls=`OutputColorSpace`,Rs=class extends hr{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}resolveColorSpace(e,t){return t===Is?Zt.workingColorSpace:t===Ls?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{colorNode:t}=this,n=this.resolveColorSpace(e,this.source),r=this.resolveColorSpace(e,this.target),i=t;return Zt.enabled===!1||n===r||!n||!r?i:(Zt.getTransfer(n)===`srgb`&&(i=R(Ps(i.rgb),i.a)),Zt.getPrimaries(n)!==Zt.getPrimaries(r)&&(i=R(Ei(Zt._getMatrix(new ot,n,r)).mul(i.rgb),i.a)),Zt.getTransfer(r)===`srgb`&&(i=R(Fs(i.rgb),i.a)),i)}},zs=(e,t)=>new Rs(D(e),Is,t),Bs=(e,t)=>new Rs(D(e),t,Is),Vs=(e,t,n)=>new Rs(D(e),t,n);E(`workingToColorSpace`,zs),E(`colorSpaceToWorking`,Bs);var Hs=class extends pr{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}generateNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(e),r=this.getNodeType(e);return e.format(t,n,r)}},Us=class extends T{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=w.OBJECT}setGroup(e){return this.group=e,this}element(e){return new Hs(this,D(e))}setNodeType(e){let t=H(null,e);this.group!==null&&t.setGroup(this.group),this.node=t}generateNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;e<t.length;e++)n=n[t[e]];return n}updateReference(e){return this.reference=this.object===null?e.object:this.object,this.reference}setup(){return this.updateValue(),this.node}update(){this.updateValue()}updateValue(){this.node===null&&this.setNodeType(this.uniformType);let e=this.getValueFromReference();Array.isArray(e)?this.node.array=e:this.node.value=e}},Ws=(e,t,n)=>new Us(e,t,n),Gs=class extends Us{static get type(){return`RendererReferenceNode`}constructor(e,t,n=null){super(e,t,n),this.renderer=n,this.setGroup(V)}updateReference(e){return this.reference=this.renderer===null?e.renderer:this.renderer,this.reference}},Ks=(e,t,n=null)=>new Gs(e,t,n),qs=class extends hr{static get type(){return`ToneMappingNode`}constructor(e,t=Ys,n=null){super(`vec3`),this._toneMapping=e,this.exposureNode=t,this.colorNode=n}customCacheKey(){return Hn(this._toneMapping)}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup(e){let t=this.colorNode||e.context.color,n=this._toneMapping;if(n===0)return t;let r=null,i=e.renderer.library.getToneMappingFunction(n);return i===null?(S(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=R(i(t.rgb,this.exposureNode),t.a),r}},Js=(e,t,n)=>new qs(e,D(t),D(n)),Ys=Ks(`toneMappingExposure`,`float`);E(`toneMapping`,(e,t,n)=>Js(t,n,e));var Xs=new WeakMap;function Zs(e,t){let n=Xs.get(e);return n===void 0&&(n=new tt(e,t),Xs.set(e,n)),n}var Qs=class extends xr{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=at,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&e.itemSize<=4&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){let t;if(this.bufferStride===0&&this.bufferOffset===0){let n=e.globalCache.getData(this.value);n===void 0&&(n={node:this},e.globalCache.setData(this.value,n)),t=n.node.id}else t=this.id;return String(t)}generateNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=e.getTypeLength(t),r=this.value,i=this.bufferStride||n,a=this.bufferOffset,o;o=r.isInterleavedBuffer===!0?r:r.isBufferAttribute===!0?Zs(r.array,i):Zs(r,i);let s=new ct(o,n,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.context.nodeName;n!==void 0&&delete e.context.nodeName;let r=e.getBufferAttributeFromNode(this,t,n),i=e.getPropertyName(r),a=null;if(e.shaderStage===`vertex`||e.shaderStage===`compute`)this.name=i,a=i;else{let r;n&&(r=n+`Varying`),a=Ms(this,r).build(e,t)}return a}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}};function $s(e,t=null,n=0,r=0,i=at,a=!1){return t===`mat3`||t===null&&e.itemSize===9?Ei(new Qs(e,`vec3`,9,0).setUsage(i).setInstanced(a),new Qs(e,`vec3`,9,3).setUsage(i).setInstanced(a),new Qs(e,`vec3`,9,6).setUsage(i).setInstanced(a)):t===`mat4`||t===null&&e.itemSize===16?Di(new Qs(e,`vec4`,16,0).setUsage(i).setInstanced(a),new Qs(e,`vec4`,16,4).setUsage(i).setInstanced(a),new Qs(e,`vec4`,16,8).setUsage(i).setInstanced(a),new Qs(e,`vec4`,16,12).setUsage(i).setInstanced(a)):new Qs(e,t,n,r).setUsage(i)}var ec=(e,t=null,n=0,r=0)=>$s(e,t,n,r),tc=(e,t=null,n=0,r=0)=>$s(e,t,n,r,Me),nc=(e,t=null,n=0,r=0)=>$s(e,t,n,r,at,!0),rc=(e,t=null,n=0,r=0)=>$s(e,t,n,r,Me,!0);E(`toAttribute`,e=>ec(e.value,e.bufferType));var ic=class e extends T{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:Ms(this).build(t,n),a}};ic.VERTEX=`vertex`,ic.INSTANCE=`instance`,ic.SUBGROUP=`subgroup`,ic.INVOCATION_LOCAL=`invocationLocal`,ic.INVOCATION_SUBGROUP=`invocationSubgroup`,ic.DRAW=`draw`;var ac=k(ic,ic.VERTEX),oc=k(ic,ic.INSTANCE),sc=k(ic,ic.SUBGROUP),cc=k(ic,ic.INVOCATION_SUBGROUP),lc=k(ic,ic.INVOCATION_LOCAL),uc=k(ic,ic.DRAW),dc=class extends T{static get type(){return`ComputeNode`}constructor(e,t){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.workgroupSize=t,this.count=null,this.dispatchSize=null,this.version=1,this.name=``,this.onInitFunction=null,this.countNode=null,this.updateBeforeType=w.FRAME}setName(e){return this.name=e,this}label(e){return C(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Rn),this.setName(e)}onInit(e){return this.onInitFunction=e,this}getUpdateBeforeType(e){return e.compute===this?w.NONE:this.updateBeforeType}updateBefore({renderer:e}){e.compute(this)}setup(e){this.count!==null&&this.countNode===null&&(this.countNode=H(this.count,`uint`).onObjectUpdate(()=>this.count));let t=this.computeNode.build(e);if(t){let n=e.getNodeProperties(this);n.outputComputeNode=t.outputNode,t.outputNode=null}return t}generate(e,t){let{shaderStage:n}=e;if(n===`compute`){let t=this.computeNode.build(e,`void`);if(t!==``&&e.addLineFlowCode(t,this),this.count!==null&&e.allowEarlyReturns===!0){let t=this.countNode.build(e,`uint`),n=oc.build(e,`uint`);e.flow.code=`${e.tab}if ( ${n} >= ${t} ) { return; }\n\n${e.flow.code}`}}else{let n=e.getNodeProperties(this).outputComputeNode;if(n)return n.build(e,t)}}},fc=(e,t=[64])=>{(t.length===0||t.length>3)&&S(`TSL: compute() workgroupSize must have 1, 2, or 3 elements`,new Rn);for(let e=0;e<t.length;e++){let n=t[e];(typeof n!=`number`||n<=0||!Number.isInteger(n))&&S(`TSL: compute() workgroupSize element at index [ ${e} ] must be a positive integer`,new Rn)}for(;t.length<3;)t.push(1);return new dc(D(e),t)},pc=(e,t,n)=>{let r=fc(e,n);return typeof t==`number`?r.count=t:r.dispatchSize=t,r};E(`compute`,pc),E(`computeKernel`,fc);var mc=class extends T{static get type(){return`IsolateNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isIsolateNode=!0}generateNodeType(e){let t=e.getCache(),n=e.getCacheFromNode(this,this.parent);e.setCache(n);let r=this.node.getNodeType(e);return e.setCache(t),r}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}setParent(e){return this.parent=e,this}getParent(){return this.parent}},hc=e=>new mc(D(e));function gc(e,t=!0){return C(`TSL: "cache()" has been deprecated. Use "isolate()" instead.`),hc(e).setParent(t)}E(`cache`,gc),E(`isolate`,hc);var _c=class extends T{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}generateNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}},vc=O(_c).setParameterLength(2);E(`bypass`,vc);var yc=j(([e,t,n,r=N(0),i=N(1),a=hi(!1)])=>{let o=e.sub(t).div(n.sub(t));return ti(a)&&(o=o.clamp()),o.mul(i.sub(r)).add(r)});function bc(e,t,n,r=N(0),i=N(1)){return yc(e,t,n,r,i,!0)}E(`remap`,yc),E(`remapClamp`,bc);var xc=class extends T{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(r,n,t)}},Sc=O(xc).setParameterLength(1,2),Cc=e=>(e?hs(e,Sc(`discard`)):Sc(`discard`)).toStack(),wc=()=>Sc(`return`).toStack();E(`discard`,Cc);var Tc=j(([e])=>R(e.rgb.mul(e.a),e.a),{color:`vec4`,return:`vec4`}),Ec=j(([e])=>e.a.equal(0).select(R(0),R(e.rgb.div(e.a),e.a)),{color:`vec4`,return:`vec4`}),Dc=class extends hr{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this._toneMapping=t,this.outputColorSpace=n,this.isRenderOutputNode=!0}setToneMapping(e){return this._toneMapping=e,this}getToneMapping(){return this._toneMapping}setup({context:e}){let t=this.colorNode||e.color;t=R(t.rgb,t.a.clamp(0,1)),t=Ec(t);let n=(this._toneMapping===null?e.toneMapping:this._toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==Zt.workingColorSpace&&(t=t.workingToColorSpace(r)),t=Tc(t),t}},Oc=(e,t=null,n=null)=>new Dc(D(e),t,n);E(`renderOutput`,Oc);var kc=class extends hr{static get type(){return`DebugNode`}constructor(e,t=null){super(),this.node=e,this.callback=t}generateNodeType(e){return this.node.getNodeType(e)}setup(e){return this.node.build(e)}analyze(e){return this.node.build(e)}generate(e){let t=this.callback,n=this.node.build(e);if(t!==null)t(e,n);else{let t=`--- TSL debug - `+e.shaderStage+` shader ---`,r=`-`.repeat(t.length),i=``;i+=`// #`+t+`#
14
+ `,i+=e.flow.code.replace(/^\t/gm,``)+`
15
+ `,i+=`/* ... */ `+n+` /* ... */
16
+ `,i+=`// #`+r+`#
17
+ `,Ht(i)}return n}},Ac=(e,t=null)=>new kc(D(e),t).toStack();E(`debug`,Ac);var jc=class extends yt{constructor(){super(),this._renderer=null,this.currentFrame=null,this.isRunning=!1,this.enabled=!0}get nodeFrame(){return this._renderer._nodes.nodeFrame}setRenderer(e){return this._renderer=e,this}getRenderer(){return this._renderer}begin(){this.isRunning=!0}finish(){this.isRunning=!1}inspect(){}computeAsync(){}beginCompute(){}finishCompute(){}beginRender(){}finishRender(){}copyTextureToTexture(){}copyFramebufferToTexture(){}dispose(){this.isRunning===!0&&this.finish(),this.dispatchEvent({type:`dispose`})}},Mc=class extends T{static get type(){return`InspectorNode`}constructor(e,t=``,n=null){super(),this.node=e,this.name=t,this.callback=n,this.updateType=w.FRAME,this.isInspectorNode=!0}getName(){return this.name||this.node.name}update(e){e.renderer.inspector.inspect(this)}generateNodeType(e){return this.node.getNodeType(e)}setup(e){let t=this.node;return e.context.inspector===!0&&this.callback!==null&&(t=this.callback(t)),e.renderer.backend.isWebGPUBackend!==!0&&e.renderer.inspector.constructor!==jc&&Wt(`TSL: ".toInspector()" is only available with WebGPU.`),t}};function Nc(e,t=``,n=null){return e=D(e),e.before(new Mc(e,t,n))}E(`toInspector`,Nc);function Pc(e){C(`TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add`,e)}var Fc=class extends T{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}generateNodeType(e){let t=this.nodeType;if(t===null){let n=this.getAttributeName(e);if(e.hasGeometryAttribute(n)){let r=e.geometry.getAttribute(n);t=e.getTypeFromAttribute(r)}else t=`float`}return t}setAttributeName(e){return this._attributeName=e,this}getAttributeName(){return this._attributeName}generate(e){let t=this.getAttributeName(e),n=this.getNodeType(e);if(e.hasGeometryAttribute(t)===!0){let r=e.geometry.getAttribute(t),i=e.getTypeFromAttribute(r),a=e.getAttribute(t,i);return e.shaderStage===`vertex`?e.format(a.name,i,n):Ms(this).build(e,n)}return C(`AttributeNode: Vertex attribute "${t}" not found on geometry.`),e.generateConst(n)}serialize(e){super.serialize(e),e.global=this.global,e._attributeName=this._attributeName}deserialize(e){super.deserialize(e),this.global=e.global,this._attributeName=e._attributeName}},Ic=(e,t=null)=>new Fc(e,t),Lc=(e=0)=>Ic(`uv`+(e>0?e:``),`vec2`),Rc=class extends T{static get type(){return`TextureSizeNode`}constructor(e,t=null){super(`uvec2`),this.isTextureSizeNode=!0,this.textureNode=e,this.levelNode=t}generate(e){let t=this.textureNode.build(e,`property`),n=this.levelNode===null?`0`:this.levelNode.build(e,`int`),r=e.generateTextureSize(this.textureNode.value,t,n);return e.format(r,this.getNodeType(e))}},zc=O(Rc).setParameterLength(1,2),Bc=class extends ha{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=w.FRAME}get textureNode(){return this._textureNode}get texture(){return this._textureNode.value}update(){let e=this.texture,t=e.images,n=t&&t.length>0?t[0]&&t[0].image||t[0]:e.image;if(n&&n.width!==void 0){let{width:e,height:t}=n;this.value=Math.log2(Math.max(e,t))}}},Vc=O(Bc).setParameterLength(1),Hc=class extends Error{constructor(e,t=null){super(e),this.name=`NodeError`,this.stackTrace=t}},Uc=new pn,Wc=class extends ha{static get type(){return`TextureNode`}constructor(e=Uc,t=null,n=null,r=null){super(e),this.isTextureNode=!0,this.uvNode=t,this.levelNode=n,this.biasNode=r,this.compareNode=null,this.depthNode=null,this.gradNode=null,this.gatherNode=null,this.offsetNode=null,this.sampler=!0,this.updateMatrix=!1,this.updateType=w.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this._flipYUniform=null,this._samplerComparison=!1,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}generateNodeType(){return this.gatherNode===null?Zn(this.value):`vec4`}getInputType(){return`texture`}getDefaultUV(){return Lc(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=H(this.value.matrix)),this._matrixUniform.mul(L(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this}setupUV(e,t){return e.isFlipY()&&(this._flipYUniform===null&&(this._flipYUniform=H(!1)),t=t.toVar(),t=this.sampler?this._flipYUniform.select(t.flipY(),t):this._flipYUniform.select(t.setY(P(zc(this,this.levelNode).y).sub(t.y).sub(1)),t)),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.value;if(!n||n.isTexture!==!0)throw new Hc("THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().",this.stackTrace);let r=j(()=>{let t=this.uvNode;return(t===null||e.context.forceUVContext===!0)&&e.context.getUV&&(t=e.context.getUV(this,e)),t||=this.getDefaultUV(),this.updateMatrix===!0&&(t=this.getTransformedUV(t)),t=this.setupUV(e,t),this.updateType=this._matrixUniform!==null||this._flipYUniform!==null?w.OBJECT:w.NONE,t})(),i=this.levelNode;i===null&&e.context.getTextureLevel&&(i=e.context.getTextureLevel(this));let a=null,o=null;if(this.compareNode!==null){if(e.renderer.hasCompatibility(un.TEXTURE_COMPARE))a=this.compareNode;else{let e=n.compareFunction;e===null||e===513||e===515||e===516||e===518?o=this.compareNode:(a=this.compareNode,Wt(`TSL: Only "LessCompare", "LessEqualCompare", "GreaterCompare" and "GreaterEqualCompare" are supported for depth texture comparison fallback.`))}}t.uvNode=r,t.levelNode=i,t.biasNode=this.biasNode,t.compareNode=a,t.compareStepNode=o,t.gradNode=this.gradNode,t.gatherNode=this.gatherNode,t.depthNode=this.depthNode,t.offsetNode=this.offsetNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateOffset(e,t){return t.build(e,`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s,c,l,u){let d=this.value,f;return f=i?e.generateTextureBias(d,t,n,i,a,l):s?e.generateTextureGrad(d,t,n,s,a,l):c?o?e.generateTextureGatherCompare(d,t,n,o,a,l,u):e.generateTextureGather(d,t,n,c,a,l,u):o?e.generateTextureCompare(d,t,n,o,a,l):this.sampler===!1?e.generateTextureLoad(d,t,n,r,a,l):r?e.generateTextureLevel(d,t,n,r,a,l):e.generateTexture(d,t,n,a,l),f}generate(e,t){let n=this.value,r=e.getNodeProperties(this),i=super.generate(e,`property`);if(/^sampler/.test(t)){if(t===`samplerComparison`){this._samplerComparison=!0;let t=this.getSharedNode(e);t._samplerComparison=!0}return i+`_sampler`}if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=this.getNodeType(e),s=a.propertyName;if(s===void 0){let{uvNode:t,levelNode:c,biasNode:l,compareNode:u,compareStepNode:d,depthNode:f,gradNode:p,gatherNode:m,offsetNode:h}=r,g=this.generateUV(e,t),_=c?c.build(e,`float`):null,v=l?l.build(e,`float`):null,y=f?f.build(e,`int`):null,b=u?u.build(e,`float`):null,ee=d?d.build(e,`float`):null,te=p?[p[0].build(e,`vec2`),p[1].build(e,`vec2`)]:null,ne=m?m.build(e,`int`):null,re=h?this.generateOffset(e,h):null,ie=this._flipYUniform?this._flipYUniform.build(e,`bool`):null,ae=y;ae===null&&n.isArrayTexture&&this.isTexture3DNode!==!0&&(ae=`0`);let oe=e.getVarFromNode(this);s=e.getPropertyName(oe);let se=this.generateSnippet(e,i,g,_,v,ae,b,te,ne,re,ie),ce;if(ce=n.isDepthTexture===!0&&ne===null?`float`:n.type===1014?`uvec4`:n.type===1013?`ivec4`:`vec4`,se=e.format(se,ce,o),ee!==null){let t=n.compareFunction;se=t===516||t===518?Ho(Sc(se,o),Sc(ee,`float`)).build(e,o):Ho(Sc(ee,`float`),Sc(se,o)).build(e,o)}e.addLineFlowCode(`${s} = ${se}`,this),a.snippet=se,a.propertyName=s}let c=s;return e.needsToWorkingColorSpace(n)&&(c=Bs(Sc(c,o),n.colorSpace).setup(e).build(e,o)),e.format(c,o,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}sample(e){let t=this.clone();return t.uvNode=D(e),t.referenceNode=this.getBase(),D(t)}load(e){return this.sample(e).setSampler(!1)}blur(e){let t=this.clone();t.biasNode=D(e).mul(Vc(t)),t.referenceNode=this.getBase();let n=t.value;return t.generateMipmaps===!1&&(n&&n.generateMipmaps===!1||n.minFilter===1003||n.magFilter===1003)&&(C(`TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.`),t.biasNode=null),D(t)}level(e){let t=this.clone();return t.levelNode=D(e),t.referenceNode=this.getBase(),D(t)}size(e){return zc(this,e)}bias(e){let t=this.clone();return t.biasNode=D(e),t.referenceNode=this.getBase(),D(t)}getBase(){return this.referenceNode?this.referenceNode.getBase():this}compare(e){let t=this.clone();return t.compareNode=D(e),t.referenceNode=this.getBase(),D(t)}grad(e,t){let n=this.clone();return n.gradNode=[D(e),D(t)],n.referenceNode=this.getBase(),D(n)}gather(e=0){let t=this.clone();return t.gatherNode=D(e),t.referenceNode=this.getBase(),D(t)}isSampleCompare(){return this.compareNode!==null||this._samplerComparison===!0}depth(e){let t=this.clone();return t.depthNode=D(e),t.referenceNode=this.getBase(),D(t)}offset(e){let t=this.clone();return t.offsetNode=D(e),t.referenceNode=this.getBase(),D(t)}serialize(e){super.serialize(e),e.value=this.value.toJSON(e.meta).uuid,e.sampler=this.sampler,e.updateMatrix=this.updateMatrix,e.updateType=this.updateType}deserialize(e){super.deserialize(e),this.value=e.meta.textures[e.value],this.sampler=e.sampler,this.updateMatrix=e.updateMatrix,this.updateType=e.updateType}update(){let e=this.value,t=this._matrixUniform;t!==null&&(t.value=e.matrix),e.matrixAutoUpdate===!0&&e.updateMatrix();let n=this._flipYUniform;n!==null&&(n.value=e.image instanceof ImageBitmap&&e.flipY===!0||e.isRenderTargetTexture===!0||e.isFramebufferTexture===!0||e.isDepthTexture===!0)}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.gatherNode=this.gatherNode,e.offsetNode=this.offsetNode,e}},Gc=O(Wc).setParameterLength(1,4).setName(`texture`),q=(e=Uc,t=null,n=null,r=null)=>{let i;return e&&e.isTextureNode===!0?(i=D(e.clone()),i.referenceNode=e.getBase(),t!==null&&(i.uvNode=D(t)),n!==null&&(i.levelNode=D(n)),r!==null&&(i.biasNode=D(r))):i=Gc(e,t,n,r),i},Kc=(e=Uc)=>q(e),qc=(...e)=>q(...e).setSampler(!1),Jc=(e,t,n)=>q(e,t).level(n),Yc=e=>(e.isNode===!0?e:q(e)).convert(`sampler`),Xc=e=>(e.isNode===!0?e:q(e)).convert(`samplerComparison`),Zc=class extends ha{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n,this.updateRanges=[]}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}},Qc=(e,t,n)=>new Zc(e,t,n),$c=class extends pr{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType(e),r=this.node.getPaddedType();return e.format(t,r,n)}},el=class extends Zc{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null),this.array=e,this.elementType=t===null?Xn(e[0]):t,this.paddedType=this.getPaddedType(),this.updateType=w.RENDER,this.isArrayBufferNode=!0}generateNodeType(){return this.paddedType}getElementType(){return this.elementType}getPaddedType(){let e=this.elementType,t=`vec4`;return e===`mat2`?t=`mat2`:/mat/.test(e)===!0?t=`mat4`:e.charAt(0)===`i`?t=`ivec4`:e.charAt(0)===`u`&&(t=`uvec4`),t}update(){this.updateBuffer()}onUpdate(e,t){return e=e.bind(this),super.onUpdate((t,n)=>{e(t,n),this.updateBuffer()},t)}updateBuffer(){let{array:e,value:t}=this,n=this.elementType;if(n===`float`||n===`int`||n===`uint`)for(let n=0;n<e.length;n++){let r=n*4;t[r]=e[n]}else if(n===`color`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.r,t[r+1]=i.g,t[r+2]=i.b||0}else if(n===`mat2`)for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+3]=i.elements[3]}else if(n===`mat3`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];t[r]=i.elements[0],t[r+1]=i.elements[1],t[r+2]=i.elements[2],t[r+4]=i.elements[3],t[r+5]=i.elements[4],t[r+6]=i.elements[5],t[r+8]=i.elements[6],t[r+9]=i.elements[7],t[r+10]=i.elements[8],t[r+15]=1}else if(n===`mat4`)for(let n=0;n<e.length;n++){let r=n*16,i=e[n];for(let e=0;e<i.elements.length;e++)t[r+e]=i.elements[e]}else for(let n=0;n<e.length;n++){let r=n*4,i=e[n];t[r]=i.x,t[r+1]=i.y,t[r+2]=i.z||0,t[r+3]=i.w||0}}setup(e){let t=this.array.length,n=this.elementType,r=Float32Array,i=this.paddedType,a=e.getTypeLength(i);return n.charAt(0)===`i`&&(r=Int32Array),n.charAt(0)===`u`&&(r=Uint32Array),this.value=new r(t*a),this.bufferCount=t,this.bufferType=i,this.updateBuffer(),super.setup(e)}element(e){return new $c(this,D(e))}},tl=(e,t)=>new el(e,t),nl=class extends T{constructor(e){super(`float`),this.name=e,this.isBuiltinNode=!0}generate(){return this.name}},rl=O(nl).setParameterLength(1),il,al,ol=class e extends T{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}generateNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(al),al.multiplyScalar(t.getPixelRatio())):al.copy(n.viewport):n===null?t.getDrawingBufferSize(il):(il.width=n.width,il.height=n.height)}setup(){let t=this.scope,n=null;n=t===e.SIZE?H(il||=new pe).setGroup(V):t===e.VIEWPORT?H(al||=new kn).setGroup(V):I(ul.div(ll));let r=w.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(r=w.RENDER),this.updateType=r,n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(ll).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};ol.COORDINATE=`coordinate`,ol.VIEWPORT=`viewport`,ol.SIZE=`size`,ol.UV=`uv`;var sl=H(1).setGroup(V).onRenderUpdate(({renderer:e})=>e.getPixelRatio()),cl=k(ol,ol.UV),ll=k(ol,ol.SIZE),ul=k(ol,ol.COORDINATE),dl=k(ol,ol.VIEWPORT),fl=dl.zw,pl=ul.sub(dl.xy),ml=pl.div(fl),hl=null,gl=null,_l=null,vl=null,yl=null,bl=null,xl=null,Sl=null,Cl=null,wl=null,Tl=null,El=null,Dl=null,Ol=null,kl=H(0,`uint`).setName(`u_cameraIndex`).setGroup(fa(`cameraIndex`)).toVarying(`v_cameraIndex`),Al=H(`float`).setName(`cameraNear`).setGroup(V).onRenderUpdate(({camera:e})=>e.near),jl=H(`float`).setName(`cameraFar`).setGroup(V).onRenderUpdate(({camera:e})=>e.far),Ml=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrix);gl===null?gl=tl(n).setGroup(V).setName(`cameraProjectionMatrices`):gl.array=n,t=gl.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else hl===null&&(hl=H(e.projectionMatrix).setName(`cameraProjectionMatrix`).setGroup(V).onRenderUpdate(({camera:e})=>e.projectionMatrix)),t=hl;return t}).once()(),Nl=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.projectionMatrixInverse);vl===null?vl=tl(n).setGroup(V).setName(`cameraProjectionMatricesInverse`):vl.array=n,t=vl.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else _l===null&&(_l=H(e.projectionMatrixInverse).setName(`cameraProjectionMatrixInverse`).setGroup(V).onRenderUpdate(({camera:e})=>e.projectionMatrixInverse)),t=_l;return t}).once()(),Pl=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorldInverse);bl===null?bl=tl(n).setGroup(V).setName(`cameraViewMatrices`):bl.array=n,t=bl.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else yl===null&&(yl=H(e.matrixWorldInverse).setName(`cameraViewMatrix`).setGroup(V).onRenderUpdate(({camera:e})=>e.matrixWorldInverse)),t=yl;return t}).once()(),Fl=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.matrixWorld);Sl===null?Sl=tl(n).setGroup(V).setName(`cameraWorldMatrices`):Sl.array=n,t=Sl.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else xl===null&&(xl=H(e.matrixWorld).setName(`cameraWorldMatrix`).setGroup(V).onRenderUpdate(({camera:e})=>e.matrixWorld)),t=xl;return t}).once()(),Il=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.normalMatrix);wl===null?wl=tl(n).setGroup(V).setName(`cameraNormalMatrices`):wl.array=n,t=wl.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else Cl===null&&(Cl=H(e.normalMatrix).setName(`cameraNormalMatrix`).setGroup(V).onRenderUpdate(({camera:e})=>e.normalMatrix)),t=Cl;return t}).once()(),Ll=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t=0,r=e.cameras.length;t<r;t++)n.push(new x);El===null?El=tl(n).setGroup(V).setName(`cameraPositions`).onRenderUpdate(({camera:e},t)=>{let n=e.cameras,r=t.array;for(let e=0,t=n.length;e<t;e++)r[e].setFromMatrixPosition(n[e].matrixWorld)}):El.array=n,t=El.element(e.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else Tl===null&&(Tl=H(new x).setName(`cameraPosition`).setGroup(V).onRenderUpdate(({camera:e},t)=>t.value.setFromMatrixPosition(e.matrixWorld))),t=Tl;return t}).once()(),Rl=j(({camera:e})=>{let t;if(e.isArrayCamera&&e.cameras.length>0){let n=[];for(let t of e.cameras)n.push(t.viewport);Ol===null?Ol=tl(n,`vec4`).setGroup(V).setName(`cameraViewports`):Ol.array=n,t=Ol.element(kl)}else Dl===null&&(Dl=R(0,0,ll.x,ll.y).toConst(`cameraViewport`)),t=Dl;return t}).once()(),zl=new ne,Bl=class e extends T{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=w.OBJECT,this.uniformNode=new ha(null)}generateNodeType(){let t=this.scope;if(t===e.WORLD_MATRIX)return`mat4`;if(t===e.POSITION||t===e.VIEW_POSITION||t===e.DIRECTION||t===e.SCALE)return`vec3`;if(t===e.RADIUS)return`float`}update(t){let n=this.object3d,r=this.uniformNode,i=this.scope;if(i===e.WORLD_MATRIX)r.value=n.matrixWorld;else if(i===e.POSITION)r.value=r.value||new x,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new x,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new x,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new x,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}else if(i===e.RADIUS){let e=t.object.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),zl.copy(e.boundingSphere).applyMatrix4(n.matrixWorld),r.value=zl.radius}}generate(t){let n=this.scope;return n===e.WORLD_MATRIX?this.uniformNode.nodeType=`mat4`:n===e.POSITION||n===e.VIEW_POSITION||n===e.DIRECTION||n===e.SCALE?this.uniformNode.nodeType=`vec3`:n===e.RADIUS&&(this.uniformNode.nodeType=`float`),this.uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Bl.WORLD_MATRIX=`worldMatrix`,Bl.POSITION=`position`,Bl.SCALE=`scale`,Bl.VIEW_POSITION=`viewPosition`,Bl.DIRECTION=`direction`,Bl.RADIUS=`radius`;var Vl=O(Bl,Bl.DIRECTION).setParameterLength(1),Hl=O(Bl,Bl.WORLD_MATRIX).setParameterLength(1),Ul=O(Bl,Bl.POSITION).setParameterLength(1),Wl=O(Bl,Bl.SCALE).setParameterLength(1),Gl=O(Bl,Bl.VIEW_POSITION).setParameterLength(1),Kl=O(Bl,Bl.RADIUS).setParameterLength(1),ql=new nt,Jl=class extends Bl{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}},Yl=k(Jl,Jl.DIRECTION),Xl=k(Jl,Jl.WORLD_MATRIX),Zl=k(Jl,Jl.POSITION),Ql=k(Jl,Jl.SCALE),$l=k(Jl,Jl.VIEW_POSITION),eu=k(Jl,Jl.RADIUS),tu=H(new ot).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),nu=H(new nt).onObjectUpdate(({object:e},t)=>t.value.copy(e.matrixWorld).invert()),ru=j(e=>e.context.modelViewMatrix||iu).once()().toVar(`modelViewMatrix`),iu=Pl.mul(Xl),au=j(e=>{e.context.isHighPrecisionModelViewMatrix=!0;let t=e.camera,n;if(t.isArrayCamera&&t.cameras.length>0){let e=[];for(let n=0;n<t.cameras.length;n++)e.push(new nt);n=tl(e).onObjectUpdate(({object:e,camera:t},n)=>{let r=t.cameras,i=n.array;for(let t=0,n=r.length;t<n;t++)i[t].multiplyMatrices(r[t].matrixWorldInverse,e.matrixWorld)}).element(t.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else n=H(`mat4`).onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld));return n}).once()().toVar(`highpModelViewMatrix`),ou=j(e=>{let t=e.context.isHighPrecisionModelViewMatrix,n=e.camera,r;if(n.isArrayCamera&&n.cameras.length>0){let e=[];for(let t=0;t<n.cameras.length;t++)e.push(new ot);r=tl(e).onObjectUpdate(({object:e,camera:t},n)=>{let r=t.cameras,i=n.array;for(let t=0,n=r.length;t<n;t++)ql.multiplyMatrices(r[t].matrixWorldInverse,e.matrixWorld),i[t].getNormalMatrix(ql)}).element(n.isMultiViewCamera?rl(`gl_ViewID_OVR`):kl)}else r=H(`mat3`).onObjectUpdate(({object:e,camera:n})=>(t!==!0&&e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix)));return r}).once()().toVar(`highpModelNormalViewMatrix`),su=j(e=>e.shaderStage===`fragment`?e.context.clipSpace.toVarying(`v_clipSpace`):(Wt("TSL: `clipSpace` is only available in fragment stage."),R())).once()(),cu=Ic(`position`,`vec3`),lu=cu.toVarying(`positionLocal`),uu=cu.toVarying(`positionPrevious`),du=j(e=>Xl.mul(lu).xyz.toVarying(e.getSubBuildProperty(`v_positionWorld`)),`vec3`).once([`POSITION`])(),fu=j(()=>lu.transformDirection(Xl).toVarying(`v_positionWorldDirection`).normalize().toVar(`positionWorldDirection`),`vec3`).once([`POSITION`])(),pu=j(e=>{if(e.shaderStage===`fragment`&&e.material.vertexNode){let e=Nl.mul(su);return e.xyz.div(e.w).toVar(`positionView`)}return e.context.setupPositionView().toVarying(`v_positionView`)},`vec3`).once([`POSITION`,`VERTEX`])(),mu=j(e=>{let t;return t=e.camera.isOrthographicCamera?L(0,0,1):pu.negate().toVarying(`v_positionViewDirection`).normalize(),t.toVar(`positionViewDirection`)},`vec3`).once([`POSITION`])(),hu=class extends T{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){if(e.shaderStage!==`fragment`)return`true`;let{material:t}=e;return t.side===1?`false`:e.getFrontFacing()}},gu=k(hu),_u=N(gu).mul(2).sub(1),vu=j(([e],{material:t})=>{let n=t.side;return n===1?e=e.mul(-1):n===2&&(e=e.mul(_u)),e}),yu=e=>(Wt(`TSL: "directionToFaceDirection()" has been renamed to "negateOnBackSide()".`),vu(e)),bu=Ic(`normal`,`vec3`),xu=j(e=>e.geometry.hasAttribute(`normal`)===!1?(C(`TSL: Vertex attribute "normal" not found on geometry.`),L(0,1,0)):bu,`vec3`).once()().toVar(`normalLocal`),Su=pu.dFdx().cross(pu.dFdy()).normalize().toVar(`normalFlat`),Cu=j(e=>{let t;return t=e.isFlatShading()?Su:Ou(xu).toVarying(`v_normalViewGeometry`).normalize(),t},`vec3`).once()().toVar(`normalViewGeometry`),wu=j(e=>{let t=Cu.transformNormalByInverseViewMatrix(Pl);return e.isFlatShading()!==!0&&(t=t.toVarying(`v_normalWorldGeometry`)),t.normalize().toVar(`normalWorldGeometry`)},`vec3`).once()(),J=j(e=>{let t;return e.subBuildFn===`NORMAL`||e.subBuildFn===`VERTEX`?(t=Cu,e.isFlatShading()!==!0&&(t=vu(t))):t=e.context.setupNormal().context({getUV:null,getTextureLevel:null}),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`normalView`),Tu=J.transformNormalByInverseViewMatrix(Pl).toVar(`normalWorld`),Eu=j(({subBuildFn:e,context:t})=>{let n;return n=e===`NORMAL`||e===`VERTEX`?J:t.setupClearcoatNormal().context({getUV:null,getTextureLevel:null}),n},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`clearcoatNormalView`),Du=j(([e,t=Xl])=>Ei(t).inverse().transpose().mul(e).normalize());E(`transformNormal`,Du);var Ou=j(([e],t)=>{let n=t.context.modelNormalViewMatrix;return n?e.transformNormalByViewMatrix(n):tu.mul(e).transformNormalByViewMatrix(Pl)}),ku=j(()=>(C(`TSL: "transformedNormalView" is deprecated. Use "normalView" instead.`),J)).once([`NORMAL`,`VERTEX`])(),Au=j(()=>(C(`TSL: "transformedNormalWorld" is deprecated. Use "normalWorld" instead.`),Tu)).once([`NORMAL`,`VERTEX`])(),ju=j(()=>(C(`TSL: "transformedClearcoatNormalView" is deprecated. Use "clearcoatNormalView" instead.`),Eu)).once([`NORMAL`,`VERTEX`])(),Mu=new nt,Nu=H(0).onReference(({material:e})=>e).onObjectUpdate(({material:e})=>e.refractionRatio),Pu=H(1).onReference(({material:e})=>e).onObjectUpdate(function({material:e,scene:t}){return e.envMap?e.envMapIntensity:t.environmentIntensity}),Fu=H(new nt).onReference(function(e){return e.material}).onObjectUpdate(function({material:e,scene:t}){let n=(t.environment!==null||t.environmentNode&&t.environmentNode.isNode)&&e.envMap===null?t.environmentRotation:e.envMapRotation;return n?Mu.makeRotationFromEuler(n).transpose():Mu.identity(),Mu}),Iu=mu.negate().reflect(J),Lu=mu.negate().refract(J,Nu),Ru=Iu.transformDirection(Fl).toVar(`reflectVector`),zu=Lu.transformDirection(Fl).toVar(`refractVector`),Bu=new Mt,Vu=class extends Wc{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return this.value.isDepthTexture===!0?`cubeDepthTexture`:`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?Ru:e.mapping===302?zu:(S(`CubeTextureNode: Mapping "%s" not supported.`,e.mapping),L(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return n.isDepthTexture===!0?e.renderer.coordinateSystem===2001?L(t.x,t.y.negate(),t.z):t:(t=Fu.mul(t),(e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture)&&(t=L(t.x.negate(),t.yz)),t)}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}},Hu=O(Vu).setParameterLength(1,4).setName(`cubeTexture`),Uu=(e=Bu,t=null,n=null,r=null)=>{let i;return e&&e.isCubeTextureNode===!0?(i=D(e.clone()),i.referenceNode=e,t!==null&&(i.uvNode=D(t)),n!==null&&(i.levelNode=D(n)),r!==null&&(i.biasNode=D(r))):i=Hu(e,t,n,r),i},Wu=(e=Bu)=>Hu(e),Gu=class extends T{static get type(){return`ReferenceNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.name=null,this.updateType=w.OBJECT}element(e){return new Hs(this,D(e))}setGroup(e){return this.group=e,this}setName(e){return this.name=e,this}label(e){return C(`TSL: "label()" has been deprecated. Use "setName()" instead.`),this.setName(e)}setNodeType(e){let t=null;this.count===null?Array.isArray(this.getValueFromReference())?(t=tl(null,e),t.updateType=w.OBJECT):t=e===`texture`?q(null):e===`cubeTexture`?Uu(null):H(null,e):t=Qc(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.setName(this.name),this.node=t}generateNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;e<t.length;e++)n=n[t[e]];return n}updateReference(e){return this.reference=this.object===null?e.object:this.object,this.reference}setup(){return this.updateValue(),this.node}update(){this.updateValue()}updateValue(){this.node===null&&this.setNodeType(this.uniformType);let e=this.getValueFromReference();Array.isArray(e)?this.node.array=e:this.node.value=e}},Ku=(e,t,n)=>new Gu(e,t,n),qu=(e,t,n,r)=>new Gu(e,t,r,n),Ju=class extends Gu{static get type(){return`MaterialReferenceNode`}constructor(e,t,n=null){super(e,t,n),this.material=n,this.isMaterialReferenceNode=!0}updateReference(e){return this.reference=this.material===null?e.material:this.material,this.reference}},Yu=(e,t,n=null)=>new Ju(e,t,n),Xu=Lc(),Zu=pu.dFdx(),Qu=pu.dFdy(),$u=Xu.dFdx(),ed=Xu.dFdy(),td=J,nd=Qu.cross(td),rd=td.cross(Zu),id=nd.mul($u.x).add(rd.mul(ed.x)),ad=nd.mul($u.y).add(rd.mul(ed.y)),od=id.dot(id).max(ad.dot(ad)),sd=od.equal(0).select(0,od.inverseSqrt()),cd=id.mul(sd).toVar(`tangentViewFrame`),ld=ad.mul(sd).toVar(`bitangentViewFrame`),ud=Ic(`tangent`,`vec4`),dd=ud.xyz.toVar(`tangentLocal`),fd=j(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?ru.mul(R(dd,0)).xyz.toVarying(`v_tangentView`).normalize():cd,e.isFlatShading()!==!0&&(t=vu(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`tangentView`),pd=fd.transformDirection(Fl).toVarying(`v_tangentWorld`).normalize().toVar(`tangentWorld`),md=j(([e,t],n)=>{let r=e.mul(ud.w).xyz;return n.subBuildFn===`NORMAL`&&n.isFlatShading()!==!0&&(r=r.toVarying(t)),r}).once([`NORMAL`]),hd=md(bu.cross(ud),`v_bitangentGeometry`).normalize().toVar(`bitangentGeometry`),gd=md(xu.cross(dd),`v_bitangentLocal`).normalize().toVar(`bitangentLocal`),_d=j(e=>{let t;return t=e.subBuildFn===`VERTEX`||e.geometry.hasAttribute(`tangent`)?md(J.cross(fd),`v_bitangentView`).normalize():ld,e.isFlatShading()!==!0&&(t=vu(t)),t},`vec3`).once([`NORMAL`,`VERTEX`])().toVar(`bitangentView`),vd=md(Tu.cross(pd),`v_bitangentWorld`).normalize().toVar(`bitangentWorld`),yd=Ei(fd,_d,J).toVar(`TBNViewMatrix`),bd=mu.mul(yd),xd=(e,t)=>e.sub(bd.mul(t)),Sd=j(()=>{let e=qi.cross(mu);return e=e.cross(qi).normalize(),e=K(e,J,Gi.mul(Fi.oneMinus()).oneMinus().pow2().pow2()).normalize(),e}).once()(),Cd=e=>D(e).mul(.5).add(.5),wd=e=>D(e).mul(2).sub(1),Td=e=>L(e,so(is(N(1).sub(Ko(e,e))))),Ed=e=>(Wt(`TSL: "directionToColor()" has been renamed to "packNormalToRGB()".`),Cd(e)),Dd=e=>(Wt(`TSL: "colorToDirection()" has been renamed to "unpackRGBToNormal()".`),wd(e)),Od=class extends hr{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0,this.unpackNormalMode=``}setup(e){let{normalMapType:t,scaleNode:n,unpackNormalMode:r}=this,i=this.node.mul(2).sub(1);if(t===0?r===`rg`?i=Td(i.xy):r===`ga`?i=Td(i.yw):r!==``&&S(`THREE.NodeMaterial: Unexpected unpack normal mode: ${r}`):r!==``&&S(`THREE.NodeMaterial: Normal map type '${t}' is not compatible with unpack normal mode '${r}'`),n!==null){let t=n;e.isFlatShading()===!0&&(t=vu(t)),i=L(i.xy.mul(t),i.z)}let a=null;return t===1?a=Ou(i):t===0?a=yd.mul(i).normalize():(S(`NodeMaterial: Unsupported normal map type: ${t}`),a=J),a}},kd=O(Od).setParameterLength(1,2),Ad=j(({textureNode:e,bumpScale:t})=>{let n=t=>e.isolate().context({getUV:e=>t(e.uvNode||Lc()),forceUVContext:!0}),r=N(n(e=>e));return I(N(n(e=>e.add(e.dFdx()))).sub(r),N(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),jd=j(e=>{let{surf_pos:t,surf_norm:n,dHdxy:r}=e,i=t.dFdx().normalize(),a=t.dFdy().normalize(),o=n,s=a.cross(o),c=o.cross(i),l=i.dot(s).mul(_u),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Md=class extends hr{static get type(){return`BumpMapNode`}constructor(e,t=null){super(`vec3`),this.textureNode=e,this.scaleNode=t}setup(e){if(e.material.wireframe===!0)return J;let t=this.scaleNode===null?1:this.scaleNode;return jd({surf_pos:pu,surf_norm:J,dHdxy:Ad({textureNode:this.textureNode,bumpScale:t})})}},Nd=O(Md).setParameterLength(1,2),Pd=new Map,Y=class e extends T{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=Pd.get(e);return n===void 0&&(n=Yu(e,t),Pd.set(e,n)),n}getFloat(e){return this.getCache(e,`float`)}getColor(e){return this.getCache(e,`color`)}getTexture(e){return this.getCache(e===`map`?`map`:e+`Map`,`texture`)}setup(t){let n=t.context.material,r=this.scope,i=null;if(r===e.COLOR){let e=n.color===void 0?L():this.getColor(r);i=n.map&&n.map.isTexture===!0?e.mul(this.getTexture(`map`)):e}else if(r===e.OPACITY){let e=this.getFloat(r);i=n.alphaMap&&n.alphaMap.isTexture===!0?e.mul(this.getTexture(`alpha`)):e}else if(r===e.SPECULAR_STRENGTH)i=n.specularMap&&n.specularMap.isTexture===!0?this.getTexture(`specular`).r:N(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularIntensityMap&&n.specularIntensityMap.isTexture===!0?e.mul(this.getTexture(r).a):e}else if(r===e.SPECULAR_COLOR){let e=this.getColor(r);i=n.specularColorMap&&n.specularColorMap.isTexture===!0?e.mul(this.getTexture(r).rgb):e}else if(r===e.ROUGHNESS){let e=this.getFloat(r);i=n.roughnessMap&&n.roughnessMap.isTexture===!0?e.mul(this.getTexture(r).g):e}else if(r===e.METALNESS){let e=this.getFloat(r);i=n.metalnessMap&&n.metalnessMap.isTexture===!0?e.mul(this.getTexture(r).b):e}else if(r===e.EMISSIVE){let e=this.getFloat(`emissiveIntensity`),t=this.getColor(r).mul(e);i=n.emissiveMap&&n.emissiveMap.isTexture===!0?t.mul(this.getTexture(r)):t}else if(r===e.NORMAL)n.normalMap?(i=kd(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType,(n.normalMap.format==1030||n.normalMap.format==36285||n.normalMap.format==37490)&&(i.unpackNormalMode=`rg`)):i=n.bumpMap?Nd(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):J;else if(r===e.CLEARCOAT){let e=this.getFloat(r);i=n.clearcoatMap&&n.clearcoatMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_ROUGHNESS){let e=this.getFloat(r);i=n.clearcoatRoughnessMap&&n.clearcoatRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).r):e}else if(r===e.CLEARCOAT_NORMAL)i=n.clearcoatNormalMap?kd(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):J;else if(r===e.SHEEN){let e=this.getColor(`sheenColor`).mul(this.getFloat(`sheen`));i=n.sheenColorMap&&n.sheenColorMap.isTexture===!0?e.mul(this.getTexture(`sheenColor`).rgb):e}else if(r===e.SHEEN_ROUGHNESS){let e=this.getFloat(r);i=n.sheenRoughnessMap&&n.sheenRoughnessMap.isTexture===!0?e.mul(this.getTexture(r).a):e,i=i.clamp(1e-4,1)}else if(r===e.ANISOTROPY){if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=Ti(bf.x,bf.y,bf.y.negate(),bf.x).mul(e.rg.mul(2).sub(I(1)).normalize().mul(e.b))}else i=bf}else if(r===e.IRIDESCENCE_THICKNESS){let e=Ku(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Ku(`0`,`float`,n.iridescenceThicknessRange);i=e.sub(t).mul(this.getTexture(r).g).add(t)}else i=e}else if(r===e.TRANSMISSION){let e=this.getFloat(r);i=n.transmissionMap?e.mul(this.getTexture(r).r):e}else if(r===e.THICKNESS){let e=this.getFloat(r);i=n.thicknessMap?e.mul(this.getTexture(r).g):e}else if(r===e.IOR)i=this.getFloat(r);else if(r===e.LIGHT_MAP)i=n.lightMap?this.getTexture(r).rgb.mul(this.getFloat(`lightMapIntensity`)):L(0);else if(r===e.AO)i=n.aoMap?this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1):N(1);else if(r===e.LINE_DASH_OFFSET)i=n.dashOffset?this.getFloat(r):N(0);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};Y.ALPHA_TEST=`alphaTest`,Y.COLOR=`color`,Y.OPACITY=`opacity`,Y.SHININESS=`shininess`,Y.SPECULAR=`specular`,Y.SPECULAR_STRENGTH=`specularStrength`,Y.SPECULAR_INTENSITY=`specularIntensity`,Y.SPECULAR_COLOR=`specularColor`,Y.REFLECTIVITY=`reflectivity`,Y.ROUGHNESS=`roughness`,Y.METALNESS=`metalness`,Y.NORMAL=`normal`,Y.CLEARCOAT=`clearcoat`,Y.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,Y.CLEARCOAT_NORMAL=`clearcoatNormal`,Y.EMISSIVE=`emissive`,Y.ROTATION=`rotation`,Y.SHEEN=`sheen`,Y.SHEEN_ROUGHNESS=`sheenRoughness`,Y.ANISOTROPY=`anisotropy`,Y.IRIDESCENCE=`iridescence`,Y.IRIDESCENCE_IOR=`iridescenceIOR`,Y.IRIDESCENCE_THICKNESS=`iridescenceThickness`,Y.IOR=`ior`,Y.TRANSMISSION=`transmission`,Y.THICKNESS=`thickness`,Y.ATTENUATION_DISTANCE=`attenuationDistance`,Y.ATTENUATION_COLOR=`attenuationColor`,Y.LINE_SCALE=`scale`,Y.LINE_DASH_SIZE=`dashSize`,Y.LINE_GAP_SIZE=`gapSize`,Y.LINE_WIDTH=`linewidth`,Y.LINE_DASH_OFFSET=`dashOffset`,Y.POINT_SIZE=`size`,Y.DISPERSION=`dispersion`,Y.RETROREFLECTIVITY=`retroreflectivity`,Y.LIGHT_MAP=`light`,Y.AO=`ao`;var Fd=k(Y,Y.ALPHA_TEST),Id=k(Y,Y.COLOR),Ld=k(Y,Y.SHININESS),Rd=k(Y,Y.EMISSIVE),zd=k(Y,Y.OPACITY),Bd=k(Y,Y.SPECULAR),Vd=k(Y,Y.SPECULAR_INTENSITY),Hd=k(Y,Y.SPECULAR_COLOR),Ud=k(Y,Y.SPECULAR_STRENGTH),Wd=k(Y,Y.REFLECTIVITY),Gd=k(Y,Y.ROUGHNESS),Kd=k(Y,Y.METALNESS),qd=k(Y,Y.NORMAL),Jd=k(Y,Y.CLEARCOAT),Yd=k(Y,Y.CLEARCOAT_ROUGHNESS),Xd=k(Y,Y.CLEARCOAT_NORMAL),Zd=k(Y,Y.ROTATION),Qd=k(Y,Y.SHEEN),$d=k(Y,Y.SHEEN_ROUGHNESS),ef=k(Y,Y.ANISOTROPY),tf=k(Y,Y.IRIDESCENCE),nf=k(Y,Y.IRIDESCENCE_IOR),rf=k(Y,Y.IRIDESCENCE_THICKNESS),af=k(Y,Y.TRANSMISSION),of=k(Y,Y.THICKNESS),sf=k(Y,Y.IOR),cf=k(Y,Y.ATTENUATION_DISTANCE),lf=k(Y,Y.ATTENUATION_COLOR),uf=k(Y,Y.LINE_SCALE),df=k(Y,Y.LINE_DASH_SIZE),ff=k(Y,Y.LINE_GAP_SIZE),pf=k(Y,Y.LINE_WIDTH),mf=k(Y,Y.LINE_DASH_OFFSET),hf=k(Y,Y.POINT_SIZE),gf=k(Y,Y.DISPERSION),_f=k(Y,Y.RETROREFLECTIVITY),vf=k(Y,Y.LIGHT_MAP),yf=k(Y,Y.AO),bf=H(new pe).onReference(function(e){return e.material}).onRenderUpdate(function({material:e}){this.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation))}),xf=j(e=>e.context.setupModelViewProjection(),`vec4`).once()().toVarying(`v_modelViewProjection`),Sf=class e extends T{static get type(){return`EventNode`}constructor(t,n){super(`void`),this.eventType=t,this.callback=n,t===e.OBJECT?this.updateType=w.OBJECT:t===e.MATERIAL?this.updateType=w.RENDER:t===e.FRAME?this.updateType=w.FRAME:t===e.AFTER_OBJECT?this.updateAfterType=w.OBJECT:t===e.BEFORE_OBJECT?this.updateBeforeType=w.OBJECT:t===e.BEFORE_MATERIAL?this.updateBeforeType=w.RENDER:t===e.BEFORE_FRAME&&(this.updateBeforeType=w.FRAME)}setup(t){let{eventType:n,callback:r}=this;if(n===e.BEFORE_RENDER_PIPELINE){let e=t.context.onBeforePipelineCallbacks;e&&e.push(r)}else if(n===e.AFTER_RENDER_PIPELINE){let e=t.context.onAfterPipelineCallbacks;e&&e.push(r)}return super.setup(t)}update(e){this.callback(e)}updateBefore(e){this.callback(e)}updateAfter(e){this.callback(e)}};Sf.OBJECT=`object`,Sf.MATERIAL=`material`,Sf.FRAME=`frame`,Sf.AFTER_OBJECT=`afterObject`,Sf.BEFORE_OBJECT=`beforeObject`,Sf.BEFORE_MATERIAL=`beforeMaterial`,Sf.BEFORE_FRAME=`beforeFrame`,Sf.BEFORE_RENDER_PIPELINE=`beforeRenderPipeline`,Sf.AFTER_RENDER_PIPELINE=`afterRenderPipeline`;var Cf=(e,t)=>new Sf(e,t).toStack(),wf=e=>Cf(Sf.OBJECT,e),Tf=e=>Cf(Sf.MATERIAL,e),Ef=e=>Cf(Sf.FRAME,e),Df=e=>Cf(Sf.AFTER_OBJECT,e),Of=e=>Cf(Sf.BEFORE_OBJECT,e),kf=e=>Cf(Sf.BEFORE_MATERIAL,e),Af=e=>Cf(Sf.BEFORE_FRAME,e),jf=e=>Cf(Sf.BEFORE_RENDER_PIPELINE,e),Mf=e=>Cf(Sf.AFTER_RENDER_PIPELINE,e),Nf=class extends pr{static get type(){return`StorageArrayElementNode`}constructor(e,t){super(e,t),this.isStorageArrayElementNode=!0}set storageBufferNode(e){this.node=e}get storageBufferNode(){return this.node}getMemberType(e,t){let n=this.storageBufferNode.structTypeNode;return n?n.getMemberType(e,t):`void`}setup(e){return e.isAvailable(`storageBuffer`)===!1&&this.node.isPBO===!0&&e.setupPBO(this.node),super.setup(e)}generate(e,t){let n,r=e.isContextAssign();if(n=e.isAvailable(`storageBuffer`)===!1?this.node.isPBO===!0&&r!==!0&&(this.node.value.isInstancedBufferAttribute||e.shaderStage!==`compute`)?e.generatePBO(this):this.node.build(e):super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}},Pf=O(Nf).setParameterLength(2),Ff=class extends Zc{static get type(){return`StorageBufferNode`}constructor(e,t=null,n=0){let r,i=null;t&&t.isStructTypeNode?(r=`struct`,i=t,(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(n=e.count)):t===null&&(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)?(r=Gn(e.itemSize),n=e.count):r=t,super(e,r,n),this.isStorageBufferNode=!0,this.structTypeNode=i,this.access=or.READ_WRITE,this.isAtomic=!1,this.isPBO=!1,this._attribute=null,this._varying=null,this.global=!0,e.isStorageBufferAttribute!==!0&&e.isStorageInstancedBufferAttribute!==!0&&(e.isInstancedBufferAttribute?e.isStorageInstancedBufferAttribute=!0:e.isStorageBufferAttribute=!0)}getHash(e){let t;if(this.bufferCount===0){let n=e.globalCache.getData(this.value);n===void 0&&(n={node:this},e.globalCache.setData(this.value,n)),t=n.node.id}else t=this.id;return String(t)}getInputType(){return this.value.isIndirectStorageBufferAttribute?`indirectStorageBuffer`:`storageBuffer`}element(e){return Pf(this,e)}setPBO(e){return this.isPBO=e,this}getPBO(){return this.isPBO}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess(or.READ_ONLY)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getAttributeData(){return this._attribute===null&&(this._attribute=ec(this.value),this._varying=Ms(this._attribute)),{attribute:this._attribute,varying:this._varying}}generateNodeType(e){if(this.structTypeNode!==null)return this.structTypeNode.getNodeType(e);if(e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generateNodeType(e);let{attribute:t}=this.getAttributeData();return t.getNodeType(e)}getMemberType(e,t){return this.structTypeNode===null?`void`:this.structTypeNode.getMemberType(e,t)}generate(e){if(this.structTypeNode!==null&&this.structTypeNode.build(e),e.isAvailable(`storageBuffer`)||e.isAvailable(`indirectStorageBuffer`))return super.generate(e);let{attribute:t,varying:n}=this.getAttributeData(),r=n.build(e);return e.registerTransform(r,t),r}},If=(e,t=null,n=0)=>new Ff(e,t,n),Lf=new WeakMap,Rf=new WeakMap,zf=new WeakMap;function Bf(e,t){let n,r=Math.max(t.count,1);if(t.isStorageInstancedBufferAttribute===!0)n=If(t,`mat4`,r).element(oc);else if(r*16*4<=e.getUniformBufferLimit())n=Qc(t.array,`mat4`,r).element(oc);else{let e=Lf.get(t);e||(e=new Ye(t.array,16,1),Lf.set(t,e));let r=t.usage===35048?rc:nc;n=Di(r(e,`vec4`,16,0),r(e,`vec4`,16,4),r(e,`vec4`,16,8),r(e,`vec4`,16,12))}return n}function Vf(e,t,n){let r=zf.get(e);if(r===void 0){let i=t.clone();r={previousInstanceMatrix:i,node:Bf(n,i)},zf.set(e,r)}return r.node}var Hf=Mi(`vec3`,`vInstanceColor`),Uf=j(([e,t=null],n)=>{let r=e.isStorageInstancedBufferAttribute===!0,i=t&&t.isStorageInstancedBufferAttribute===!0,a=Bf(n,e),o=null;r||Math.max(e.count,1)*16*4>n.getUniformBufferLimit()&&(o=Lf.get(e));let s=null,c=null;if(t){if(i)s=If(t,`vec3`,Math.max(t.count,1)).element(oc);else{let e=Rf.get(t);e||(e=new y(t.array,3),Rf.set(t,e)),c=e,s=L((t.usage===35048?rc:nc)(e,`vec3`,3,0))}}(o!==null||c!==null)&&Af(()=>{o!==null&&o.version!==e.version&&(o.clearUpdateRanges(),o.updateRanges.push(...e.updateRanges),e.clearUpdateRanges(),o.version=e.version),t&&c!==null&&c.version!==t.version&&(c.clearUpdateRanges(),c.updateRanges.push(...t.updateRanges),t.clearUpdateRanges(),c.version=t.version)});let l=a.mul(lu).xyz;if(lu.assign(l),n.needsPreviousData()){let t=n.object;Df(({object:t})=>{let{previousInstanceMatrix:n}=zf.get(t);n.array.set(e.array),n.version=e.version;let r=Lf.get(n);r!==void 0&&(r.version=e.version)});let r=Vf(t,e,n);uu.assign(r.mul(uu).xyz)}if(n.hasGeometryAttribute(`normal`)){let e=Du(xu,a);xu.assign(e)}s!==null&&Hf.assign(s)},`void`),Wf=j(([e])=>{let{instanceMatrix:t,instanceColor:n}=e;Uf(t,n)},`void`),Gf=new WeakMap,Kf=j(([e,t])=>{let n=P(zc(qc(e),0).x).toConst(),r=P(t);return qc(e,gi(r.mod(n).toConst(),r.div(n).toConst()))}),qf=j(([e,t])=>{let n=P(zc(qc(e),0).x).toConst();return qc(e,gi(P(t).mod(n).toConst(),P(t).div(n).toConst())).x});function Jf(e,t){let n=P(zc(qc(e),0).x).toConst(),r=N(t).mul(4).toInt().toConst(),i=r.mod(n).toConst(),a=r.div(n).toConst();return Di(qc(e,gi(i,a)),qc(e,gi(i.add(1),a)),qc(e,gi(i.add(2),a)),qc(e,gi(i.add(3),a)))}function Yf(e,t){let n=Gf.get(e);if(n===void 0){let{image:r,format:i,type:a}=e._matricesTexture,o=new Oe(r.data.slice(),r.width,r.height,i,a);n={previousMatricesTexture:o,node:Jf(o,t)},Gf.set(e,n)}return n.node}var Xf=Mi(`vec4`,`vBatchColor`),Zf=Mi(`uint`,`vBatchIndirectId`),Qf=j(([e],t)=>{let n=t.getDrawIndex()===null?oc:uc,r=qf(e._indirectTexture,P(n));Zf.assign(r);let i=Jf(e._matricesTexture,r),a=e._colorsTexture;if(a!==null){let e=Kf(a,r);Xf.assign(e)}let o=Ei(i);if(lu.assign(i.mul(lu)),t.needsPreviousData()){Df(({object:e})=>{let t=Gf.get(e);t.previousMatricesTexture.image.data.set(e._matricesTexture.image.data),t.previousMatricesTexture.needsUpdate=!0});let t=Yf(e,r);uu.assign(t.mul(uu).xyz)}let s=xu.div(L(o[0].dot(o[0]),o[1].dot(o[1]),o[2].dot(o[2]))),c=o.mul(s).xyz;xu.assign(c),t.hasGeometryAttribute(`tangent`)&&dd.mulAssign(o)},`void`),$f=new WeakMap,ep=new WeakMap;function tp(e){return{element:t=>{let n=P(zc(e).x).toConst(),r=P(t).mul(4).toConst(),i=r.div(n).toConst(),a=r.sub(i.mul(n)).toConst();return Di(e.load(gi(a,i)),e.load(gi(a.add(1),i)),e.load(gi(a.add(2),i)),e.load(gi(a.add(3),i)))}}}function np(e,t){let n;if(t.bones.length*16*4<=e.getUniformBufferLimit())n=qu(`skeleton.boneMatrices`,`mat4`,t.bones.length);else{t.boneTexture===null&&t.computeBoneTexture();let e=q(t.boneTexture);wf(({object:t})=>{let n=t.skeleton;n.boneTexture===null&&n.computeBoneTexture(),e.value=n.boneTexture}),n=tp(e)}return n}function rp(e,t,n,r,i,a){let o=e.element(i.x),s=e.element(i.y),c=e.element(i.z),l=e.element(i.w),u=n.mul(t),d=wa(o.mul(a.x).mul(u),s.mul(a.y).mul(u),c.mul(a.z).mul(u),l.mul(a.w).mul(u));return r.mul(d).xyz}function ip(e,t,n,r,i,a,o){let s=e.element(a.x),c=e.element(a.y),l=e.element(a.z),u=e.element(a.w),d=wa(o.x.mul(s),o.y.mul(c),o.z.mul(l),o.w.mul(u));d=i.mul(d).mul(r);let f=Ei(d);return{skinNormal:f.mul(t),skinTangent:f.mul(n)}}function ap(e,t,n,r,i,a){let o=t.skeleton,s=ep.get(o);if(s===void 0){if(o.update(),o.bones.length*16*4<=e.getUniformBufferLimit()){let e=new Float32Array(o.boneMatrices);s={previousBoneMatrices:e,previousBoneTexture:null,node:Qc(e,`mat4`,o.bones.length)}}else{o.boneTexture===null&&o.computeBoneTexture();let{width:e,height:t}=o.boneTexture.image,n=new Float32Array(o.boneMatrices),r=new Oe(n,e,t,Sn,Kt);r.needsUpdate=!0,s={previousBoneMatrices:n,previousBoneTexture:r,node:tp(q(r))}}ep.set(o,s)}return rp(s.node,uu,n,r,i,a)}var op=j(([e],t)=>{let n=Ic(`skinIndex`,`uvec4`),r=Ic(`skinWeight`,`vec4`),i=Ku(`bindMatrix`,`mat4`),a=Ku(`bindMatrixInverse`,`mat4`),o=np(t,e.skeleton);if(wf(({object:e,frameId:t})=>{let n=e.skeleton;if($f.get(n)!==t){$f.set(n,t);let e=ep.get(n);e!==void 0&&(e.previousBoneMatrices.set(n.boneMatrices),e.previousBoneTexture!==null&&(e.previousBoneTexture.needsUpdate=!0)),n.update()}}),t.needsPreviousData()){let o=ap(t,e,i,a,n,r);uu.assign(o)}let s=rp(o,lu,i,a,n,r);if(lu.assign(s),t.hasGeometryAttribute(`normal`)){let{skinNormal:e,skinTangent:s}=ip(o,xu,dd,i,a,n,r);xu.assign(e),t.hasGeometryAttribute(`tangent`)&&dd.assign(s)}},`void`),sp=j(([e,t=null],n)=>{let r=If(new y(e.geometry.getAttribute(`position`).array,3),`vec3`).setPBO(!0).toReadOnly().element(oc).toVar(),i=If(new y(new Uint32Array(e.geometry.getAttribute(`skinIndex`).array),4),`uvec4`).setPBO(!0).toReadOnly().element(oc).toVar(),a=If(new y(e.geometry.getAttribute(`skinWeight`).array,4),`vec4`).setPBO(!0).toReadOnly().element(oc).toVar(),o=H(e.bindMatrix,`mat4`),s=H(e.bindMatrixInverse,`mat4`),c=Qc(e.skeleton.boneMatrices,`mat4`,e.skeleton.bones.length),l=e.skeleton;if(wf(({frameId:e})=>{if($f.get(l)!==e){$f.set(l,e);let t=ep.get(l);t!==void 0&&(t.previousBoneMatrices.set(l.boneMatrices),t.previousBoneTexture!==null&&(t.previousBoneTexture.needsUpdate=!0)),l.update()}}),n.needsPreviousData()){let t=ap(n,e,o,s,i,a);uu.assign(t)}let u=rp(c,r,o,s,i,a);if(t!==null&&t.assign(u),n.hasGeometryAttribute(`normal`)){let{skinNormal:e,skinTangent:t}=ip(c,xu,dd,o,s,i,a);xu.assign(e),n.hasGeometryAttribute(`tangent`)&&dd.assign(t)}return u}),cp=class extends T{static get type(){return`LoopNode`}constructor(e=[]){super(`void`),this.params=e}getVarName(e){return String.fromCharCode(105+e)}getProperties(e){let t=e.getNodeProperties(this);if(t.stackNode!==void 0)return t;let n={},r=this._getInternalParams();for(let e=0,t=r.length-1;e<t;e++){let t=r[e],i=t.isNode!==!0&&t.name||this.getVarName(e);n[i]=Sc(i,t.isNode!==!0&&t.type||`int`)}let i=e.addStack(),a=r[r.length-1](n);t.returnsNode=a.context({nodeLoop:a}),t.stackNode=i;let o=r[0];if(o.isNode!==!0&&typeof o.update==`function`){let e=j(o.update)(n);t.updateNode=e.context({nodeLoop:e})}return e.removeStack(),t}_getInternalParams(){let e=this.params;return typeof e[0]==`function`?[hi(!0),e[0]]:e}setup(e){if(this.getProperties(e),e.fnCall){let t=e.getDataFromNode(e.fnCall.shaderNode);t.hasLoop=!0}}generate(e){let t=this.getProperties(e),n=this._getInternalParams(),r=t.stackNode;for(let r=0,i=n.length-1;r<i;r++){let i=n[r],a=!1,o=null,s=null,c=null,l=null,u=null,d=null;i.isNode?i.getNodeType(e)===`bool`?(a=!0,l=`bool`,s=i.build(e,l)):(l=`int`,c=this.getVarName(r),o=`0`,s=i.build(e,l),u=`<`):(l=i.type||`int`,c=i.name||this.getVarName(r),o=i.start,s=i.end,u=i.condition,d=i.update,typeof o==`number`?o=e.generateConst(l,o):o&&o.isNode&&(o=o.build(e,l)),typeof s==`number`?s=e.generateConst(l,s):s&&s.isNode&&(s=s.build(e,l)),o!==void 0&&s===void 0?(o+=` - 1`,s=`0`,u=`>=`):s!==void 0&&o===void 0&&(o=`0`,u=`<`),u===void 0&&(u=Number(o)>Number(s)?`>=`:`<`));let f;if(a)f=`while ( ${s} )`;else{let n={start:o,end:s},r=n.start,i=n.end,a,p=()=>u.includes(`<`)?`+=`:`-=`;if(d!=null)switch(typeof d){case`function`:a=e.flowStagesNode(t.updateNode,`void`).code.replace(/\t|;/g,``);break;case`number`:a=c+` `+p()+` `+e.generateConst(l,d);break;case`string`:a=c+` `+d;break;default:d.isNode?a=c+` `+p()+` `+d.build(e):(S(`TSL: 'Loop( { update: ... } )' is not a function, string or number.`,this.stackTrace),a=`break /* invalid update */`)}else d=l===`int`||l===`uint`?u.includes(`<`)?`++`:`--`:p()+` 1.`,a=c+` `+d;f=`for ( ${e.getVar(l,c)+` = `+r}; ${c+` `+u+` `+i}; ${a} )`}e.addFlowCode((r===0?`
18
+ `:``)+e.tab+f+` {
19
+
20
+ `).addFlowTab()}let i=r.build(e,`void`);t.returnsNode.build(e,`void`),e.removeFlowTab().addFlowCode(`
21
+ `+e.tab+i);for(let t=0,r=n.length-1;t<r;t++)e.addFlowCode((t===0?``:e.tab)+`}
22
+
23
+ `).removeFlowTab();e.addFlowTab()}},X=(...e)=>new cp(oi(e,`int`)).toStack(),lp=()=>Sc(`continue`).toStack(),up=()=>Sc(`break`).toStack(),dp=new WeakMap,fp=new kn,pp=new WeakMap,mp=j(({bufferMap:e,influence:t,stride:n,width:r,depth:i,offset:a})=>{let o=P(ac).mul(n).add(a),s=o.div(r);return qc(e,gi(o.sub(s.mul(r)),s)).depth(i).xyz.mul(t)});function hp(e){let t=e.morphAttributes.position!==void 0,n=e.morphAttributes.normal!==void 0,r=e.morphAttributes.color!==void 0,i=e.morphAttributes.position||e.morphAttributes.normal||e.morphAttributes.color,a=i===void 0?0:i.length,o=dp.get(e);if(o===void 0||o.count!==a){o!==void 0&&o.texture.dispose();let i=e.morphAttributes.position||[],s=e.morphAttributes.normal||[],c=e.morphAttributes.color||[],l=0;t===!0&&(l=1),n===!0&&(l=2),r===!0&&(l=3);let u=e.attributes.position.count*l,d=1,f=4096;u>f&&(d=Math.ceil(u/f),u=f);let p=new Float32Array(u*d*4*a),m=new xe(p,u,d,a);m.type=Kt,m.needsUpdate=!0;let h=l*4;for(let e=0;e<a;e++){let a=i[e],o=s[e],l=c[e],f=u*d*4*e;for(let e=0;e<a.count;e++){let i=e*h;t===!0&&(fp.fromBufferAttribute(a,e),p[f+i+0]=fp.x,p[f+i+1]=fp.y,p[f+i+2]=fp.z,p[f+i+3]=0),n===!0&&(fp.fromBufferAttribute(o,e),p[f+i+4]=fp.x,p[f+i+5]=fp.y,p[f+i+6]=fp.z,p[f+i+7]=0),r===!0&&(fp.fromBufferAttribute(l,e),p[f+i+8]=fp.x,p[f+i+9]=fp.y,p[f+i+10]=fp.z,p[f+i+11]=l.itemSize===4?fp.w:1)}}o={count:a,texture:m,stride:l,size:new pe(u,d)},dp.set(e,o);function g(){m.dispose(),dp.delete(e),e.removeEventListener(`dispose`,g)}e.addEventListener(`dispose`,g)}return o}var gp=j(([e])=>{let{geometry:t}=e,n=t.morphAttributes.position!==void 0,r=t.hasAttribute(`normal`)&&t.morphAttributes.normal!==void 0,i=t.morphAttributes.position||t.morphAttributes.normal||t.morphAttributes.color,a=i===void 0?0:i.length;if(a===0)return;let o=pp.get(e);(o===void 0||o.count!==a)&&(o={base:H(1),influences:e.morphTargetInfluences?tl(e.morphTargetInfluences,`float`):null,count:a},pp.set(e,o));let{base:s,influences:c}=o,{texture:l,stride:u,size:d}=hp(t);n===!0&&lu.mulAssign(s),r===!0&&xu.mulAssign(s);let f=P(d.width);X(a,({i:t})=>{let i=N(0).toVar();e.count>1&&e.morphTexture!==null&&e.morphTexture!==void 0?i.assign(qc(e.morphTexture,gi(P(t).add(1),P(oc))).r):i.assign(c.element(t).toVar()),M(i.notEqual(0),()=>{n===!0&&lu.addAssign(mp({bufferMap:l,influence:i,stride:u,width:f,depth:t,offset:P(0)})),r===!0&&xu.addAssign(mp({bufferMap:l,influence:i,stride:u,width:f,depth:t,offset:P(1)}))})}),wf(({object:e})=>{let{base:t,influences:n}=o;t.value=e.geometry.morphTargetsRelative?1:1-e.morphTargetInfluences.reduce((e,t)=>e+t,0),n&&(n.array=e.morphTargetInfluences,n.update())})},`void`),_p=class extends T{static get type(){return`LightingNode`}constructor(){super(`vec3`),this.isLightingNode=!0}},vp=class extends _p{static get type(){return`AONode`}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}},yp=class extends gs{static get type(){return`LightingContextNode`}constructor(e,t=null,n=[],r=null,i=null){super(e),this.lightingModel=t,this.materialLightings=n,this.backdropNode=r,this.backdropAlphaNode=i,this._value=null}getContext(){let{materialLightings:e,backdropNode:t,backdropAlphaNode:n}=this,r={directDiffuse:L().toVar(`directDiffuse`),directSpecular:L().toVar(`directSpecular`),indirectDiffuse:L().toVar(`indirectDiffuse`),indirectSpecular:L().toVar(`indirectSpecular`)};return{radiance:L().toVar(`radiance`),irradiance:L().toVar(`irradiance`),iblIrradiance:L().toVar(`iblIrradiance`),ambientOcclusion:N(1).toVar(`ambientOcclusion`),reflectedLight:r,materialLightings:e,backdrop:t,backdropAlpha:n}}setup(e){return this.value=this._value||=this.getContext(),this.value.lightingModel=this.lightingModel||e.context.lightingModel,super.setup(e)}},bp=O(yp),xp=class extends _p{static get type(){return`IrradianceNode`}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}},Sp=new pe,Cp=class extends Wc{static get type(){return`ViewportTextureNode`}constructor(e=cl,t=null,n=null){let r=null;n===null?(r=new dt,r.minFilter=ge,n=r):r=n,super(n,e,t),this.generateMipmaps=!1,this.defaultFramebuffer=r,this.isOutputTextureNode=!0,this.updateBeforeType=w.RENDER,this._cacheTextures=new WeakMap}getTextureForReference(e=null){let t,n;if(this.referenceNode?(t=this.referenceNode.defaultFramebuffer,n=this.referenceNode._cacheTextures):(t=this.defaultFramebuffer,n=this._cacheTextures),e===null)return t;if(n.has(e)===!1){let r=t.clone();n.set(e,r)}return n.get(e)}updateReference(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;return this.value=this.getTextureForReference(i),this.value}updateBefore(e){let t=e.renderer,n=t.getRenderTarget(),r=t.getCanvasTarget(),i=n||r;i===null?t.getDrawingBufferSize(Sp):i.getDrawingBufferSize?i.getDrawingBufferSize(Sp):Sp.set(i.width,i.height);let a=this.getTextureForReference(i);(a.image.width!==Sp.width||a.image.height!==Sp.height)&&(a.image.width=Sp.width,a.image.height=Sp.height,a.needsUpdate=!0);let o=a.generateMipmaps;a.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(a),a.generateMipmaps=o}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}},wp=O(Cp).setParameterLength(0,3),Tp=O(Cp,null,null,{generateMipmaps:!0}).setParameterLength(0,3),Ep=Tp(),Dp=(e=cl,t=null)=>Ep.sample(e,t),Op=null,kp=class extends Cp{static get type(){return`ViewportDepthTextureNode`}constructor(e=cl,t=null,n=null){n===null&&(Op===null&&(Op=new b),n=Op),super(e,t,n)}},Ap=O(kp).setParameterLength(0,3),jp=class e extends T{static get type(){return`ViewportDepthNode`}constructor(e,t=null){super(`float`),this.scope=e,this.valueNode=t,this.isViewportDepthNode=!0}generate(t){let{scope:n}=this;return n===e.DEPTH_BASE?t.getFragDepth():super.generate(t)}setup({camera:t}){let{scope:n}=this,r=this.valueNode,i=null;return n===e.DEPTH_BASE?r!==null&&(i=Bp().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?Fp(pu.z,Al,jl):Mp(pu.z,Al,jl):n===e.LINEAR_DEPTH&&(i=r===null?Mp(pu.z,Al,jl):t.isPerspectiveCamera?Mp(Lp(r,Al,jl),Al,jl):r),i}};jp.DEPTH_BASE=`depthBase`,jp.DEPTH=`depth`,jp.LINEAR_DEPTH=`linearDepth`;var Mp=(e,t,n)=>e.add(t).div(t.sub(n)),Np=(e,t,n)=>e.add(n).div(n.sub(t)),Pp=j(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?n.sub(t).mul(e).sub(n):t.sub(n).mul(e).sub(t)),Fp=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),Ip=(e,t,n)=>t.mul(e.add(n)).div(e.mul(t.sub(n))),Lp=j(([e,t,n],r)=>r.renderer.reversedDepthBuffer===!0?t.mul(n).div(t.sub(n).mul(e).sub(t)):t.mul(n).div(n.sub(t).mul(e).sub(n))),Rp=(e,t,n)=>{t=t.max(1e-6).toVar();let r=oo(e.negate().div(t)),i=oo(n.div(t));return r.div(i)},zp=(e,t,n)=>{let r=e.mul(ao(n.div(t)));return N(Math.E).pow(r).mul(t).negate()},Bp=O(jp,jp.DEPTH_BASE),Vp=k(jp,jp.DEPTH),Hp=O(jp,jp.LINEAR_DEPTH).setParameterLength(0,1),Up=Hp(Ap());Vp.assign=e=>Bp(e);var Wp=class e extends T{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let{intersectionPlanes:n,unionPlanes:r}=t.clippingContext;return this.hardwareClipping=t.hardwareClipping,this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n,r):this.scope===e.HARDWARE?this.setupHardwareClipping(r,t):this.setupDefault(n,r)}setupAlphaToCoverage(e,t){return j(()=>{let n=N().toVar(`distanceToPlane`),r=N().toVar(`distanceToGradient`),i=N(1).toVar(`clipOpacity`),a=t.length;if(this.hardwareClipping===!1&&a>0){let e=tl(t).setGroup(V);X(a,({i:t})=>{let a=e.element(t);n.assign(pu.dot(a.xyz).negate().add(a.w)),r.assign(n.fwidth().div(2)),i.mulAssign(os(r.negate(),r,n))})}let o=e.length;if(o>0){let t=tl(e).setGroup(V),a=N(1).toVar(`intersectionClipOpacity`);X(o,({i:e})=>{let i=t.element(e);n.assign(pu.dot(i.xyz).negate().add(i.w)),r.assign(n.fwidth().div(2)),a.mulAssign(os(r.negate(),r,n).oneMinus())}),i.mulAssign(a.oneMinus())}B.a.mulAssign(i),B.a.equal(0).discard()})()}setupDefault(e,t){return j(()=>{let n=t.length;if(this.hardwareClipping===!1&&n>0){let e=tl(t).setGroup(V);X(n,({i:t})=>{let n=e.element(t);pu.dot(n.xyz).greaterThan(n.w).discard()})}let r=e.length;if(r>0){let t=tl(e).setGroup(V),n=hi(!0).toVar(`clipped`);X(r,({i:e})=>{let r=t.element(e);n.assign(pu.dot(r.xyz).greaterThan(r.w).and(n))}),n.discard()}})()}setupHardwareClipping(e,t){let n=e.length;return t.enableHardwareClipping(n),j(()=>{let r=tl(e).setGroup(V),i=rl(t.getClipDistance());X(n,({i:e})=>{let t=r.element(e),n=pu.dot(t.xyz).sub(t.w).negate();i.element(e).assign(n)})})()}};Wp.ALPHA_TO_COVERAGE=`alphaToCoverage`,Wp.DEFAULT=`default`,Wp.HARDWARE=`hardware`;var Gp=()=>new Wp,Kp=()=>new Wp(Wp.ALPHA_TO_COVERAGE),qp=()=>new Wp(Wp.HARDWARE),Jp=.05,Yp=j(([e])=>po(W(1e4,mo(W(17,e.x).add(W(.1,e.y)))).mul(wa(.1,Eo(mo(W(13,e.y).add(e.x))))))),Xp=j(([e])=>Yp(I(Yp(e.xy),e.z))),Zp=j(([e])=>{let t=Vo(Oo(jo(e.xyz)),Oo(Mo(e.xyz))),n=N(1).div(N(Jp).mul(t)).toVar(`pixScale`),r=I(io(lo(oo(n))),io(uo(oo(n)))),i=I(Xp(lo(r.x.mul(e.xyz))),Xp(lo(r.y.mul(e.xyz)))),a=po(oo(n)),o=wa(W(a.oneMinus(),i.x),W(a,i.y)),s=Bo(a,a.oneMinus()),c=L(o.mul(o).div(W(2,s).mul(U(1,s))),o.sub(W(.5,s)).div(U(1,s)),U(1,U(1,o).mul(U(1,o)).div(W(2,s).mul(U(1,s)))));return rs(o.lessThan(s.oneMinus()).select(o.lessThan(s).select(c.x,c.y),c.z),1e-6,1)}).setLayout({name:`getAlphaHashThreshold`,type:`float`,inputs:[{name:`position`,type:`vec3`}]}),Qp=class extends Fc{static get type(){return`VertexColorNode`}constructor(e){super(null,`vec4`),this.isVertexColorNode=!0,this.index=e}getAttributeName(){let e=this.index;return`color`+(e>0?e:``)}generate(e){let t=this.getAttributeName(e),n=e.hasGeometryAttribute(t),r;return r=n===!0?super.generate(e):e.generateConst(this.nodeType,new kn(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}},$p=(e=0)=>new Qp(e),em=class extends Ze{static get type(){return`NodeMaterial`}get type(){return this.constructor.type}set type(e){}constructor(){super(),this.isNodeMaterial=!0,this.fog=!0,this.lights=!1,this.lightsNode=null,this.envNode=null,this.aoNode=null,this.colorNode=null,this.normalNode=null,this.opacityNode=null,this.backdropNode=null,this.backdropAlphaNode=null,this.alphaTestNode=null,this.maskNode=null,this.maskShadowNode=null,this.positionNode=null,this.geometryNode=null,this.depthNode=null,this.receivedShadowPositionNode=null,this.castShadowPositionNode=null,this.receivedShadowNode=null,this.castShadowNode=null,this.outputNode=null,this.mrtNode=null,this.fragmentNode=null,this.vertexNode=null,this.contextNode=null}_getNodeChildren(){let e=[];for(let t of Object.getOwnPropertyNames(this)){if(t.startsWith(`_`)===!0)continue;let n=this[t];n&&n.isNode===!0&&e.push({property:t,childNode:n})}return e}customProgramCacheKey(){let e=[];for(let{property:t,childNode:n}of this._getNodeChildren())e.push(Bn(t.slice(0,-4)),n.getCacheKey());return this.type+Vn(e)}build(e){this.setup(e)}setupObserver(e){return new Fn(e)}setup(e){e.context.setupNormal=()=>As(this.setupNormal(e),`NORMAL`,`vec3`),e.context.setupPositionView=()=>this.setupPositionView(e),e.context.setupModelViewProjection=()=>this.setupModelViewProjection(e);let t=e.renderer,n=t.getRenderTarget();e.addStack();let r=this.setupVertex(e),i=As(this.vertexNode||r,`VERTEX`);e.context.clipSpace=i,e.stack.outputNode=i,this.setupHardwareClipping(e),this.geometryNode!==null&&(e.stack.outputNode=e.stack.outputNode.bypass(this.geometryNode)),e.addFlow(`vertex`,e.removeStack()),e.addStack();let a,o=this.setupClipping(e);if((this.depthWrite===!0||this.depthTest===!0)&&(n===null?t.depth===!0&&this.setupDepth(e):n.depthBuffer===!0&&this.setupDepth(e)),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupAmbientOcclusion(e),this.setupVariants(e);let r=this.setupLighting(e);o!==null&&e.stack.addToStack(o);let i=R(r,B.a).max(0);a=this.setupOutput(e,i),Qi.assign(a);let s=this.outputNode!==null;if(s&&(a=this.outputNode),e.context.getOutput&&(a=e.context.getOutput(a,e)),n!==null){let e=t.getMRT(),n=this.mrtNode;e===null?n!==null&&(a=n):(s&&Qi.assign(a),a=e,n!==null&&(a=e.merge(n)))}}else{let t=this.fragmentNode;t.isOutputStructNode!==!0&&(t=t.convert(e.getOutputType())),a=this.setupOutput(e,t)}e.stack.outputNode=a,e.addFlow(`fragment`,e.removeStack()),e.observer=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;let{unionPlanes:t,intersectionPlanes:n}=e.clippingContext,r=null;if(t.length>0||n.length>0){let t=e.renderer.currentSamples;this.alphaToCoverage&&t>1?r=Kp():e.stack.addToStack(Gp())}return r}setupHardwareClipping(e){if(e.hardwareClipping=!1,e.clippingContext===null)return;let t=e.clippingContext.unionPlanes.length;t>0&&t<=8&&e.isAvailable(`clipDistance`)&&(e.stack.addToStack(qp()),e.hardwareClipping=!0)}setupDepth(e){let{renderer:t,camera:n}=e,r=this.depthNode;if(r===null){let e=t.getMRT();e&&e.has(`depth`)?r=e.get(`depth`):t.logarithmicDepthBuffer===!0&&(r=n.isPerspectiveCamera?Rp(pu.z,Al,jl):Mp(pu.z,Al,jl))}r!==null&&Vp.assign(r).toStack()}setupPositionView(){return ru.mul(lu).xyz}setupModelViewProjection(){return Ml.mul(pu)}setupVertex(e){return e.addStack(),this.setupPosition(e),e.context.position=e.removeStack(),xf}setupPosition(e){let{object:t,geometry:n}=e;if((n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&gp(t),t.isSkinnedMesh===!0&&op(t),this.displacementMap){let e=Yu(`displacementMap`,`texture`),t=Yu(`displacementScale`,`float`),n=Yu(`displacementBias`,`float`);lu.addAssign(xu.normalize().mul(e.x.mul(t).add(n)))}return t.isBatchedMesh&&Qf(t),t.isInstancedMesh&&t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&Wf(t),this.positionNode!==null&&lu.assign(As(this.positionNode,`POSITION`,`vec3`)),lu}setupDiffuseColor(e){let{object:t,geometry:n}=e;this.maskNode!==null&&hi(this.maskNode).not().discard();let r=this.colorNode?R(this.colorNode):Id;this.vertexColors===!0&&n.hasAttribute(`color`)&&(r=r.mul($p())),t.instanceColor&&(r=Hf.mul(r)),t.isBatchedMesh&&t._colorsTexture&&(r=Xf.mul(r)),B.assign(r);let i=this.opacityNode?N(this.opacityNode):zd;B.a.assign(B.a.mul(i));let a=null;(this.alphaTestNode!==null||this.alphaTest>0)&&(a=this.alphaTestNode===null?Fd:N(this.alphaTestNode),this.alphaToCoverage===!0?(B.a=os(a,a.add(Io(B.a)),B.a),B.a.lessThanEqual(0).discard()):B.a.lessThanEqual(a).discard()),this.alphaHash===!0&&B.a.lessThan(Zp(lu)).discard(),e.isOpaque()&&B.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?L(0):B.rgb}setupNormal(){return this.normalNode?L(this.normalNode):qd}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?Yu(`envMap`,`cubeTexture`):Yu(`envMap`,`texture`)),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new xp(vf)),t}setupMaterialLightings(e){let t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);let r=this.setupLightMap(e);if(r&&r.isLightingNode&&t.push(r),e.context.ambientOcclusion&&t.push(new vp(e.context.ambientOcclusion)),e.context.getGI){let n=e.context.getGI(null,e);n!==null&&t.push(new xp(n))}return t}setupAmbientOcclusion(e){let t=this.aoNode;t===null&&e.material.aoMap&&(t=yf),e.context.getAO&&(t=e.context.getAO(t,e)),t!==null&&(la.assign(t),e.context.ambientOcclusion=la)}setupLightingModel(){}setupLighting(e){let{material:t}=e,{backdropNode:n,backdropAlphaNode:r,emissiveNode:i}=this,a=this.lights===!0&&e.renderer.lighting.enabled,o=a||this.lightsNode!==null,s=a?this.setupMaterialLightings(e):[],c=o?this.lightsNode||e.lightsNode:null,l=this.setupOutgoingLight(e);return c&&(s.length>0||c.getScope().hasLights)?l=bp(c,this.setupLightingModel(e)||null,s,n,r):n!==null&&(l=L(r===null?n:K(l,n,r))),(i&&i.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(Pi.assign(L(i||Rd)),l=l.add(Pi)),l}setupFog(e,t){let n=e.fogNode;return n&&(Qi.assign(t),t=R(n.toVar())),t}setupPremultipliedAlpha(e,t){return Tc(t)}setupOutput(e,t){return this.fog===!0&&(t=this.setupFog(e,t)),this.premultipliedAlpha===!0&&(t=this.setupPremultipliedAlpha(e,t)),t}setDefaultValues(e){for(let t in e){let n=e[t];this[t]===void 0&&(this[t]=n,n&&n.clone&&(this[t]=n.clone()))}let t=Object.getOwnPropertyDescriptors(e.constructor.prototype);for(let e in t)Object.getOwnPropertyDescriptor(this.constructor.prototype,e)===void 0&&t[e].get!==void 0&&Object.defineProperty(this.constructor.prototype,e,t[e])}toJSON(e){let t=e===void 0||typeof e==`string`;t&&(e={textures:{},images:{},nodes:{}});let n=Ze.prototype.toJSON.call(this,e);n.inputNodes={};for(let{property:t,childNode:r}of this._getNodeChildren())n.inputNodes[t]=r.toJSON(e).uuid;function r(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=r(e.textures),i=r(e.images),a=r(e.nodes);t.length>0&&(n.textures=t),i.length>0&&(n.images=i),a.length>0&&(n.nodes=a)}return n}copy(e){let t=Object.getOwnPropertyDescriptors(this.constructor.prototype);for(let n in t)if(t[n].set!==void 0&&e[n]!==void 0){let t=e[n];this[n]&&this[n].copy!==void 0?this[n].copy(t):this[n]=t}for(let t in this)if(!/^(?:is[A-Z]|_)|^(?:id|uuid|version|type|userData|clippingPlanes)$/.test(t)&&this[t]!==void 0&&e[t]!==void 0){let n=e[t];this[t]&&this[t].copy!==void 0?this[t].copy(n):this[t]=n}return this.clippingPlanes=e.clippingPlanes?e.clippingPlanes.map(e=>e.clone()):null,this.userData=JSON.parse(JSON.stringify(e.userData)),this}},tm=new Re,nm=class extends em{static get type(){return`LineBasicNodeMaterial`}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.setDefaultValues(tm),this.setValues(e)}},rm=new Ve,im=class extends em{static get type(){return`LineDashedNodeMaterial`}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.setDefaultValues(rm),this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){let e=this.offsetNode?N(this.offsetNode):mf,t=this.dashScaleNode?N(this.dashScaleNode):uf,n=this.dashSizeNode?N(this.dashSizeNode):df,r=this.gapSizeNode?N(this.gapSizeNode):ff;$i.assign(n),ea.assign(r);let i=Ms(Ic(`lineDistance`).mul(t));(e?i.add(e):i).mod($i.add(ea)).greaterThan($i).discard()}},am=new Ve,om=Mi(`vec3`,`worldStart`),sm=Mi(`vec3`,`worldEnd`),cm=Mi(`float`,`lineDistance`),lm=Mi(`vec4`,`worldPos`),um=j(({start:e,end:t})=>{let n=Ml.element(2).element(2),r=Ml.element(3).element(2);return n.greaterThan(0).select(r.negate().div(n.add(1)),r.mul(-.5).div(n)).sub(e.z).div(t.z.sub(e.z))},{start:`vec4`,end:`vec4`,return:`float`}),dm=j(({p1:e,p2:t,p3:n,p4:r})=>{let i=e.sub(n),a=r.sub(n),o=t.sub(e),s=i.dot(a),c=a.dot(o),l=i.dot(o),u=a.dot(a),d=o.dot(o).mul(u).sub(c.mul(c)),f=s.mul(c).sub(l.mul(u)).div(d).clamp();return I(f,s.add(c.mul(f)).div(u).clamp())},{p1:`vec3`,p2:`vec3`,p3:`vec3`,p4:`vec3`,return:`vec2`}),fm=j(({material:e})=>{let t=e._useDash,n=e._useWorldUnits,r=Ic(`instanceStart`),i=Ic(`instanceEnd`),a=R(ru.mul(R(r,1))).toVar(`start`),o=R(ru.mul(R(i,1))).toVar(`end`),s,c;t&&(s=N(Ic(`instanceDistanceStart`)).toVar(`distanceStart`),c=N(Ic(`instanceDistanceEnd`)).toVar(`distanceEnd`)),n&&(om.assign(a.xyz),sm.assign(o.xyz));let l=dl.z.div(dl.w);if(M(Ml.element(2).element(3).equal(-1),()=>{M(a.z.lessThan(0).and(o.z.greaterThan(0)),()=>{let e=um({start:a,end:o});o.assign(R(K(a.xyz,o.xyz,e),o.w)),t&&c.assign(K(s,c,e))}).ElseIf(o.z.lessThan(0).and(a.z.greaterThanEqual(0)),()=>{let e=um({start:o,end:a});a.assign(R(K(o.xyz,a.xyz,e),a.w)),t&&s.assign(K(c,s,e))})}),t){let t=e.dashScaleNode?N(e.dashScaleNode):uf,n=e.offsetNode?N(e.offsetNode):mf,r=cu.y.lessThan(.5).select(t.mul(s),t.mul(c));r=r.add(n),cm.assign(r)}let u=Ml.mul(a),d=Ml.mul(o),f=u.xyz.div(u.w),p=d.xyz.div(d.w),m=p.xy.sub(f.xy).toVar();m.x.assign(m.x.mul(l)),m.assign(m.normalize());let h=R().toVar();if(n){let e=o.xyz.sub(a.xyz).normalize(),n=K(a.xyz,o.xyz,.5).normalize(),r=e.cross(n).normalize(),i=e.cross(r);lm.assign(cu.y.lessThan(.5).select(a,o));let s=pf.mul(.5);lm.addAssign(R(cu.x.lessThan(0).select(r.mul(s),r.mul(s).negate()),0)),t||(lm.addAssign(R(cu.y.lessThan(.5).select(e.mul(s).negate(),e.mul(s)),0)),lm.addAssign(R(i.mul(s),0)),M(cu.y.greaterThan(1).or(cu.y.lessThan(0)),()=>{lm.subAssign(R(i.mul(2).mul(s),0))})),h.assign(Ml.mul(lm));let c=L().toVar();c.assign(cu.y.lessThan(.5).select(f,p)),h.z.assign(c.z.mul(h.w))}else{let e=I(m.y,m.x.negate()).toVar(`offset`);m.x.assign(m.x.div(l)),e.x.assign(e.x.div(l)),e.assign(cu.x.lessThan(0).select(e.negate(),e)),M(cu.y.lessThan(0),()=>{e.assign(e.sub(m))}).ElseIf(cu.y.greaterThan(1),()=>{e.assign(e.add(m))}),e.assign(e.mul(pf)),e.assign(e.div(dl.w.div(sl))),h.assign(cu.y.lessThan(.5).select(u,d)),e.assign(e.mul(h.w)),h.assign(h.add(R(e,0,0)))}return h})(),pm=j(({material:e,renderer:t})=>{let n=e._useAlphaToCoverage,r=e._useDash,i=e._useWorldUnits,a=Lc();if(r){let t=e.dashSizeNode?N(e.dashSizeNode):df,n=e.gapSizeNode?N(e.gapSizeNode):ff;$i.assign(t),ea.assign(n),a.y.lessThan(-1).or(a.y.greaterThan(1)).discard(),cm.mod($i.add(ea)).greaterThan($i).discard()}let o=N(1).toVar(`alpha`);if(i){let e=lm.xyz.normalize().mul(1e5),i=sm.sub(om),a=dm({p1:om,p2:sm,p3:L(0,0,0),p4:e}),s=om.add(i.mul(a.x)),c=e.mul(a.y),l=s.sub(c).length().div(pf);if(!r){if(n&&t.currentSamples>0){let e=l.fwidth();o.assign(os(e.negate().add(.5),e.add(.5),l).oneMinus())}else l.greaterThan(.5).discard()}}else if(n&&t.currentSamples>0){let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1)),n=e.mul(e).add(t.mul(t)),r=N(n.fwidth()).toVar(`dlen`);M(a.y.abs().greaterThan(1),()=>{o.assign(os(r.oneMinus(),r.add(1),n).oneMinus())})}else M(a.y.abs().greaterThan(1),()=>{let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1));e.mul(e).add(t.mul(t)).greaterThan(1).discard()});return o})(),mm=class extends em{static get type(){return`Line2NodeMaterial`}constructor(e={}){super(),this.isLine2NodeMaterial=!0,this.setDefaultValues(am),this.vertexColors=e.vertexColors,this.dashOffset=0,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.blending=0,this._useDash=e.dashed,this._useAlphaToCoverage=!0,this._useWorldUnits=!1,this.setValues(e)}setupDiffuseColor(e){if(super.setupDiffuseColor(e),B.a.mulAssign(pm),this.vertexColors===!0&&e.geometry.hasAttribute(`instanceColorStart`)){let e=Ic(`instanceColorStart`),t=Ic(`instanceColorEnd`),n=cu.y.lessThan(.5).select(e,t);B.rgb.mulAssign(n)}this.transparent&&B.rgb.assign(B.rgb.mul(B.a).add(Dp().rgb.mul(B.a.oneMinus())))}setupPosition(e){let t=nu.mul(Fl).mul(Nl).mul(fm);return lu.assign(t.xyz.div(t.w)),e.needsPreviousData()&&uu.assign(lu),super.setupPosition(e)}get lineColorNode(){return this.colorNode}set lineColorNode(e){Wt(`Line2NodeMaterial: "lineColorNode" has been deprecated. Use "colorNode" instead.`),this.colorNode=e}get worldUnits(){return this._useWorldUnits}set worldUnits(e){this._useWorldUnits!==e&&(this._useWorldUnits=e,this.needsUpdate=!0)}get dashed(){return this._useDash}set dashed(e){this._useDash!==e&&(this._useDash=e,this.needsUpdate=!0)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}},hm=new Ft,gm=class extends em{static get type(){return`MeshNormalNodeMaterial`}constructor(e){super(),this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(hm),this.setValues(e)}setupDiffuseColor(){let e=this.opacityNode?N(this.opacityNode):zd;B.assign(Bs(R(Cd(J),e),Le))}},_m=j(([e=fu])=>I(e.z.atan(e.x).mul(1/(Math.PI*2)).add(.5),e.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5))),vm=j(([e=Lc()])=>{let t=e.x.sub(.5).mul(Math.PI*2),n=e.y.sub(.5).mul(Math.PI),r=n.cos();return L(r.mul(t.cos()),n.sin(),r.mul(t.sin()))}),ym=class extends wt{constructor(e=1,t={}){super(e,e,t),this.isCubeRenderTarget=!0;let n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Mt(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){let n=t.minFilter,r=t.generateMipmaps;t.generateMipmaps=!0,this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i=new Ne(5,5,5),a=_m(fu),o=new em;o.colorNode=q(t,a,0),o.side=1,o.blending=0;let s=new je(i,o),c=new xn;c.add(s),t.minFilter===1008&&(t.minFilter=Ce);let l=new kt(1,10,this),u=e.getMRT();return e.setMRT(null),l.update(e,c),e.setMRT(u),t.minFilter=n,t.generateMipmaps=r,s.geometry.dispose(),s.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}},bm=new WeakMap,xm=class extends hr{static get type(){return`CubeMapNode`}constructor(e){super(`vec3`),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=Uu(null);let t=new Mt;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=w.RENDER}updateBefore(e){let{renderer:t,material:n}=e,r=this.envNode;if(r.isTextureNode||r.isMaterialReferenceNode){let e=r.isTextureNode?r.value:n[r.property];if(e&&e.isTexture){let n=e.mapping;if(n===303||n===304){if(bm.has(e)){let t=bm.get(e);wm(t,e.mapping),this._cubeTexture=t}else{let n=e.image;if(Sm(n)){let r=new ym(n.height);r.fromEquirectangularTexture(t,e),wm(r.texture,e.mapping),this._cubeTexture=r.texture,bm.set(e,r.texture),e.addEventListener(`dispose`,Cm)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}};function Sm(e){return e!=null&&e.height>0}function Cm(e){let t=e.target;t.removeEventListener(`dispose`,Cm);let n=bm.get(t);n!==void 0&&(bm.delete(t),n.dispose())}function wm(e,t){t===303?e.mapping=301:t===304&&(e.mapping=302)}var Tm=O(xm).setParameterLength(1),Em=class extends _p{static get type(){return`BasicEnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=Tm(this.envNode)}},Dm=class extends _p{static get type(){return`BasicLightMapNode`}constructor(e=null){super(),this.lightMapNode=e}setup(e){let t=N(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}},Om=class{start(e){e.lightsNode.setupLights(e,e.lightsNode.getLightNodes(e)),this.indirect(e)}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}},km=class extends Om{constructor(){super()}indirect({context:e}){let t=e.ambientOcclusion,n=e.reflectedLight,r=e.irradianceLightMap;n.indirectDiffuse.assign(R(0)),r?n.indirectDiffuse.addAssign(r):n.indirectDiffuse.addAssign(R(1,1,1,0)),n.indirectDiffuse.mulAssign(t),n.indirectDiffuse.mulAssign(B.rgb)}finish(e){let{material:t,context:n}=e,r=n.outgoingLight,i=e.context.environment;if(i)switch(t.combine){case 0:r.rgb.assign(K(r.rgb,r.rgb.mul(i.rgb),Ud.mul(Wd)));break;case 1:r.rgb.assign(K(r.rgb,i.rgb,Ud.mul(Wd)));break;case 2:r.rgb.addAssign(i.rgb.mul(Ud.mul(Wd)));break;default:C(`BasicLightingModel: Unsupported .combine value:`,t.combine)}}},Am=new t,jm=class extends em{static get type(){return`MeshBasicNodeMaterial`}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Am),this.setValues(e)}setupNormal(){return vu(Cu)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Em(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new Dm(vf)),t}setupOutgoingLight(){return B.rgb}setupLightingModel(){return new km}},Mm=j(({f0:e,f90:t,dotVH:n})=>{let r=n.mul(-5.55473).sub(6.98316).mul(n).exp2();return e.mul(r.oneMinus()).add(t.mul(r))}),Nm=j(e=>e.diffuseColor.mul(1/Math.PI)),Pm=()=>N(.25),Fm=j(({dotNH:e})=>Zi.mul(N(.5)).add(1).mul(N(1/Math.PI)).mul(e.pow(Zi))),Im=j(({lightDirection:e})=>{let t=e.add(mu).normalize(),n=J.dot(t).clamp(),r=Mm({f0:Ji,f90:1,dotVH:mu.dot(t).clamp()}),i=Pm(),a=Fm({dotNH:n});return r.mul(i).mul(a)}),Lm=class extends km{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=J.dot(e).clamp().mul(t);n.directDiffuse.addAssign(r.mul(Nm({diffuseColor:B.rgb}))),this.specular===!0&&n.directSpecular.addAssign(r.mul(Im({lightDirection:e})).mul(Ud))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(Nm({diffuseColor:B}))),r.indirectDiffuse.mulAssign(t)}},Rm=new Yt,zm=class extends em{static get type(){return`MeshLambertNodeMaterial`}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Rm),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Em(t):null}setupLightingModel(){return new Lm(!1)}},Bm=new pt,Vm=class extends em{static get type(){return`MeshPhongNodeMaterial`}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(Bm),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Em(t):null}setupLightingModel(){return new Lm}setupVariants(){let e=(this.shininessNode?N(this.shininessNode):Ld).max(1e-4);Zi.assign(e);let t=this.specularNode||Bd;Ji.assign(t)}},Hm=j(e=>{if(e.geometry.hasAttribute(`normal`)===!1)return N(0);let t=Cu.dFdx().abs().max(Cu.dFdy().abs());return t.x.max(t.y).max(t.z)}),Um=j(e=>{let{roughness:t}=e,n=Hm(),r=t.max(.0525);return r=r.add(n),r=r.min(1),r}),Wm=j(({alpha:e,dotNL:t,dotNV:n})=>{let r=e.pow2(),i=t.mul(r.add(r.oneMinus().mul(n.pow2())).sqrt()),a=n.mul(r.add(r.oneMinus().mul(t.pow2())).sqrt());return Ta(.5,i.add(a).max(qa))}).setLayout({name:`V_GGX_SmithCorrelated`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNL`,type:`float`},{name:`dotNV`,type:`float`}]}),Gm=j(({alphaT:e,alphaB:t,dotTV:n,dotBV:r,dotTL:i,dotBL:a,dotNV:o,dotNL:s})=>{let c=s.mul(L(e.mul(n),t.mul(r),o).length()),l=o.mul(L(e.mul(i),t.mul(a),s).length());return Ta(.5,c.add(l).max(qa))}).setLayout({name:`V_GGX_SmithCorrelated_Anisotropic`,type:`float`,inputs:[{name:`alphaT`,type:`float`,qualifier:`in`},{name:`alphaB`,type:`float`,qualifier:`in`},{name:`dotTV`,type:`float`,qualifier:`in`},{name:`dotBV`,type:`float`,qualifier:`in`},{name:`dotTL`,type:`float`,qualifier:`in`},{name:`dotBL`,type:`float`,qualifier:`in`},{name:`dotNV`,type:`float`,qualifier:`in`},{name:`dotNL`,type:`float`,qualifier:`in`}]}),Km=j(({alpha:e,dotNH:t})=>{let n=e.pow2(),r=t.pow2().mul(n.oneMinus()).oneMinus();return n.div(r.pow2()).mul(1/Math.PI)}).setLayout({name:`D_GGX`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNH`,type:`float`}]}),qm=N(1/Math.PI),Jm=j(({alphaT:e,alphaB:t,dotNH:n,dotTH:r,dotBH:i})=>{let a=e.mul(t),o=L(t.mul(r),e.mul(i),a.mul(n)),s=o.dot(o),c=a.div(s);return qm.mul(a.mul(c.pow2()))}).setLayout({name:`D_GGX_Anisotropic`,type:`float`,inputs:[{name:`alphaT`,type:`float`,qualifier:`in`},{name:`alphaB`,type:`float`,qualifier:`in`},{name:`dotNH`,type:`float`,qualifier:`in`},{name:`dotTH`,type:`float`,qualifier:`in`},{name:`dotBH`,type:`float`,qualifier:`in`}]}),Ym=j(({lightDirection:e,f0:t,f90:n,roughness:r,f:i,normalView:a=J,viewDirection:o=mu,USE_IRIDESCENCE:s,USE_ANISOTROPY:c})=>{let l=r.pow2(),u=e.add(o).normalize(),d=a.dot(e).clamp(),f=a.dot(o).clamp(),p=a.dot(u).clamp(),m=Mm({f0:t,f90:n,dotVH:o.dot(u).clamp()}),h,g;if(ti(s)&&(m=Vi.mix(m,i)),ti(c)){let t=Ki.dot(e),n=Ki.dot(o),r=Ki.dot(u),i=qi.dot(e),a=qi.dot(o),s=qi.dot(u);h=Gm({alphaT:Wi,alphaB:l,dotTV:n,dotBV:a,dotTL:t,dotBL:i,dotNV:f,dotNL:d}),g=Jm({alphaT:Wi,alphaB:l,dotNH:p,dotTH:r,dotBH:s})}else h=Wm({alpha:l,dotNL:d,dotNV:f}),g=Km({alpha:l,dotNH:p});return m.mul(h).mul(g)}),Xm=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Zm=null,Qm=j(({roughness:e,dotNV:t})=>{Zm===null&&(Zm=new Oe(Xm,16,16,mn,ye),Zm.name=`DFG_LUT`,Zm.minFilter=Ce,Zm.magFilter=Ce,Zm.wrapS=ke,Zm.wrapT=ke,Zm.generateMipmaps=!1,Zm.needsUpdate=!0);let n=I(e,t);return q(Zm,n).rg}),$m=j(e=>{let{dotNV:t,specularColor:n,specularF90:r,roughness:i}=e,a=Qm({dotNV:t,roughness:i});return n.mul(a.x).add(r.mul(a.y))}),eh=j(({f:e,f90:t,dotVH:n})=>{let r=n.oneMinus().saturate(),i=r.mul(r),a=r.mul(i,i).clamp(0,.9999);return e.sub(L(t).mul(a)).div(a.oneMinus())}).setLayout({name:`Schlick_to_F0`,type:`vec3`,inputs:[{name:`f`,type:`vec3`},{name:`f90`,type:`float`},{name:`dotVH`,type:`float`}]}),th=j(({roughness:e,dotNH:t})=>{let n=e.pow2(),r=N(1).div(n),i=t.pow2().oneMinus().max(.0078125);return N(2).add(r).mul(i.pow(r.mul(.5))).div(2*Math.PI)}).setLayout({name:`D_Charlie`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`dotNH`,type:`float`}]}),nh=j(({dotNV:e,dotNL:t})=>N(1).div(N(4).mul(t.add(e).sub(t.mul(e)))).clamp()).setLayout({name:`V_Neubelt`,type:`float`,inputs:[{name:`dotNV`,type:`float`},{name:`dotNL`,type:`float`}]}),rh=j(({lightDirection:e})=>{let t=e.add(mu).normalize(),n=J.dot(e).clamp(),r=J.dot(mu).clamp(),i=th({roughness:Bi,dotNH:J.dot(t).clamp()}),a=nh({dotNV:r,dotNL:n});return zi.mul(i).mul(a)}),ih=j(({N:e,V:t,roughness:n})=>{let r=I(n,e.dot(t).saturate().oneMinus().sqrt());return r.assign(r.mul(.984375).add(.0078125)),r}).setLayout({name:`LTC_Uv`,type:`vec2`,inputs:[{name:`N`,type:`vec3`},{name:`V`,type:`vec3`},{name:`roughness`,type:`float`}]}),ah=j(({f:e})=>{let t=e.length();return Vo(t.mul(t).add(e.z).div(t.add(1)),0)}).setLayout({name:`LTC_ClippedSphereFormFactor`,type:`float`,inputs:[{name:`f`,type:`vec3`}]}),oh=j(({v1:e,v2:t})=>{let n=e.dot(t),r=n.abs().toVar(),i=r.mul(.0145206).add(.4965155).mul(r).add(.8543985).toVar(),a=r.add(4.1616724).mul(r).add(3.417594).toVar(),o=i.div(a),s=n.greaterThan(0).select(o,Vo(n.mul(n).oneMinus(),1e-7).inverseSqrt().mul(.5).sub(o));return e.cross(t).mul(s)}).setLayout({name:`LTC_EdgeVectorFormFactor`,type:`vec3`,inputs:[{name:`v1`,type:`vec3`},{name:`v2`,type:`vec3`}]}),sh=j(({N:e,V:t,P:n,mInv:r,p0:i,p1:a,p2:o,p3:s})=>{let c=a.sub(i).toVar(),l=s.sub(i).toVar(),u=c.cross(l),d=L().toVar();return M(u.dot(n.sub(i)).greaterThanEqual(0),()=>{let c=t.sub(e.mul(t.dot(e))).normalize(),l=e.cross(c).negate(),u=r.mul(Ei(c,l,e).transpose()).toVar(),f=u.mul(i.sub(n)).normalize().toVar(),p=u.mul(a.sub(n)).normalize().toVar(),m=u.mul(o.sub(n)).normalize().toVar(),h=u.mul(s.sub(n)).normalize().toVar(),g=L(0).toVar();g.addAssign(oh({v1:f,v2:p})),g.addAssign(oh({v1:p,v2:m})),g.addAssign(oh({v1:m,v2:h})),g.addAssign(oh({v1:h,v2:f})),d.assign(L(ah({f:g})))}),d}).setLayout({name:`LTC_Evaluate`,type:`vec3`,inputs:[{name:`N`,type:`vec3`},{name:`V`,type:`vec3`},{name:`P`,type:`vec3`},{name:`mInv`,type:`mat3`},{name:`p0`,type:`vec3`},{name:`p1`,type:`vec3`},{name:`p2`,type:`vec3`},{name:`p3`,type:`vec3`}]}),ch=j(({P:e,p0:t,p1:n,p2:r,p3:i})=>{let a=n.sub(t).toVar(),o=i.sub(t).toVar(),s=a.cross(o),c=L().toVar();return M(s.dot(e.sub(t)).greaterThanEqual(0),()=>{let a=t.sub(e).normalize().toVar(),o=n.sub(e).normalize().toVar(),s=r.sub(e).normalize().toVar(),l=i.sub(e).normalize().toVar(),u=L(0).toVar();u.addAssign(oh({v1:a,v2:o})),u.addAssign(oh({v1:o,v2:s})),u.addAssign(oh({v1:s,v2:l})),u.addAssign(oh({v1:l,v2:a})),c.assign(L(ah({f:u.abs()})))}),c}).setLayout({name:`LTC_Evaluate_Volume`,type:`vec3`,inputs:[{name:`P`,type:`vec3`},{name:`p0`,type:`vec3`},{name:`p1`,type:`vec3`},{name:`p2`,type:`vec3`},{name:`p3`,type:`vec3`}]}),lh=1/6,uh=e=>W(lh,W(e,W(e,e.negate().add(3)).sub(3)).add(1)),dh=e=>W(lh,W(e,W(e,W(3,e).sub(6))).add(4)),fh=e=>W(lh,W(e,W(e,W(-3,e).add(3)).add(3)).add(1)),ph=e=>W(lh,Jo(e,3)),mh=e=>uh(e).add(dh(e)),hh=e=>fh(e).add(ph(e)),gh=e=>wa(-1,dh(e).div(uh(e).add(dh(e)))),_h=e=>wa(1,ph(e).div(fh(e).add(ph(e)))),vh=(e,t,n)=>{let r=e.uvNode,i=W(r,t.zw).add(.5),a=lo(i),o=po(i),s=mh(o.x),c=hh(o.x),l=gh(o.x),u=_h(o.x),d=gh(o.y),f=_h(o.y),p=I(a.x.add(l),a.y.add(d)).sub(.5).mul(t.xy),m=I(a.x.add(u),a.y.add(d)).sub(.5).mul(t.xy),h=I(a.x.add(l),a.y.add(f)).sub(.5).mul(t.xy),g=I(a.x.add(u),a.y.add(f)).sub(.5).mul(t.xy),_=mh(o.y).mul(wa(s.mul(e.sample(p).level(n)),c.mul(e.sample(m).level(n)))),v=hh(o.y).mul(wa(s.mul(e.sample(h).level(n)),c.mul(e.sample(g).level(n))));return _.add(v)},yh=j(([e,t])=>{let n=I(e.size(P(t))),r=I(e.size(P(t.add(1)))),i=Ta(1,n),a=Ta(1,r),o=vh(e,R(i,n),lo(t)),s=vh(e,R(a,r),uo(t));return po(t).mix(o,s)}),bh=j(([e,t])=>yh(e,t.mul(Vc(e)))),xh=j(([e,t,n,r,i])=>{let a=L(as(t.negate(),fo(e),Ta(1,r))),o=L(Oo(i[0].xyz),Oo(i[1].xyz),Oo(i[2].xyz));return fo(a).mul(n.mul(o))}).setLayout({name:`getVolumeTransmissionRay`,type:`vec3`,inputs:[{name:`n`,type:`vec3`},{name:`v`,type:`vec3`},{name:`thickness`,type:`float`},{name:`ior`,type:`float`},{name:`modelMatrix`,type:`mat4`}]}),Sh=j(([e,t])=>e.mul(rs(t.mul(2).sub(2),0,1))).setLayout({name:`applyIorToRoughness`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`ior`,type:`float`}]}),Ch=Tp(),wh=Dp(),Th=j(([e,t,n],{material:r})=>yh((r.side===1?Ch:wh).sample(e.mul(Rl.zw).add(Rl.xy).div(ll)),oo(Rl.z).mul(Sh(t,n)))),Eh=j(([e,t,n])=>(M(n.notEqual(0),()=>ro(ao(t).negate().div(n).negate().mul(e))),L(1))).setLayout({name:`volumeAttenuation`,type:`vec3`,inputs:[{name:`transmissionDistance`,type:`float`},{name:`attenuationColor`,type:`vec3`},{name:`attenuationDistance`,type:`float`}]}),Dh=j(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m])=>{let h,g;if(m){h=R().toVar(),g=L().toVar();let i=u.sub(1).mul(m.mul(.025)),a=L(u.sub(i),u,u.add(i));X({start:0,end:3},({i})=>{let u=a.element(i),m=xh(e,t,d,u,s),_=o.add(m),v=l.mul(c.mul(R(_,1))),y=I(v.xy.div(v.w)).toVar();y.addAssign(1),y.divAssign(2),y.assign(I(y.x,y.y.oneMinus()));let b=Th(y,n,u);h.element(i).assign(b.element(i)),h.a.addAssign(b.a),g.element(i).assign(r.element(i).mul(Eh(Oo(m),f,p).element(i)))}),h.a.divAssign(3)}else{let i=xh(e,t,d,u,s),a=o.add(i),m=l.mul(c.mul(R(a,1))),_=I(m.xy.div(m.w)).toVar();_.addAssign(1),_.divAssign(2),_.assign(I(_.x,_.y.oneMinus())),h=Th(_,n,u),g=r.mul(Eh(Oo(i),f,p))}let _=g.rgb.mul(h.rgb),v=L($m({dotNV:e.dot(t).clamp(),specularColor:i,specularF90:a,roughness:n})),y=g.r.add(g.g,g.b).div(3);return R(v.oneMinus().mul(_),h.a.oneMinus().mul(y).oneMinus())}),Oh=Ei(3.2404542,-1.5371385,-.4985314,-.969266,1.8760108,.041556,.0556434,-.2040259,1.0572252),kh=e=>{let t=e.sqrt();return L(1).add(t).div(L(1).sub(t))},Ah=(e,t)=>e.sub(t).div(e.add(t)).pow2(),jh=(e,t)=>{let n=e.mul(2*Math.PI*1e-9),r=L(54856e-17,44201e-17,52481e-17),i=L(1681e3,1795300,2208400),a=L(43278e5,93046e5,66121e5),o=N(9747e-17*Math.sqrt(2*Math.PI*45282e5)).mul(n.mul(2239900).add(t.x).cos()).mul(n.pow2().mul(-45282e5).exp()),s=r.mul(a.mul(2*Math.PI).sqrt()).mul(i.mul(n).add(t).cos()).mul(n.pow2().negate().mul(a).exp());return s=L(s.x.add(o),s.y,s.z).div(1.0685e-7),Oh.mul(s)},Mh=j(({outsideIOR:e,eta2:t,cosTheta1:n,thinFilmThickness:r,baseF0:i})=>{let a=K(e,t,os(0,.03,r)),o=e.div(a).pow2().mul(n.pow2().oneMinus()).oneMinus();M(o.lessThan(0),()=>L(1));let s=o.sqrt(),c=Mm({f0:Ah(a,e),f90:1,dotVH:n}),l=c.oneMinus(),u=a.lessThan(e).select(Math.PI,0),d=N(Math.PI).sub(u),f=kh(i.clamp(0,.9999)),p=Mm({f0:Ah(f,a.toVec3()),f90:1,dotVH:s}),m=L(f.x.lessThan(a).select(Math.PI,0),f.y.lessThan(a).select(Math.PI,0),f.z.lessThan(a).select(Math.PI,0)),h=a.mul(r,s,2),g=L(d).add(m),_=c.mul(p).clamp(1e-5,.9999),v=_.sqrt(),y=l.pow2().mul(p).div(L(1).sub(_)),b=c.add(y).toVar(),ee=y.sub(l).toVar();return X({start:1,end:2,condition:`<=`,name:`m`},({m:e})=>{ee.mulAssign(v);let t=jh(N(e).mul(h),N(e).mul(g)).mul(2);b.addAssign(ee.mul(t))}),b.max(L(0))}).setLayout({name:`evalIridescence`,type:`vec3`,inputs:[{name:`outsideIOR`,type:`float`},{name:`eta2`,type:`float`},{name:`cosTheta1`,type:`float`},{name:`thinFilmThickness`,type:`float`},{name:`baseF0`,type:`vec3`}]}),Nh=j(({normal:e,viewDir:t,roughness:n})=>{let r=e.dot(t).saturate(),i=n.mul(n),a=n.add(.1).reciprocal(),o=N(-1.9362).add(n.mul(1.0678)).add(i.mul(.4573)).sub(a.mul(.8469)),s=N(-.6014).add(n.mul(.5538)).sub(i.mul(.467)).sub(a.mul(.1255));return o.mul(r).add(s).exp().saturate()}),Ph=L(.04),Fh=N(1),Ih=class extends Om{constructor(e=!1,t=!1,n=!1,r=!1,i=!1,a=!1,o=!1){super(),this.clearcoat=e,this.sheen=t,this.iridescence=n,this.anisotropy=r,this.transmission=i,this.dispersion=a,this.retroreflection=o,this.clearcoatRadiance=null,this.clearcoatSpecularDirect=null,this.clearcoatSpecularIndirect=null,this.sheenSpecularDirect=null,this.sheenSpecularIndirect=null,this.iridescenceFresnel=null,this.iridescenceF0Dielectric=null,this.iridescenceF0Metallic=null,this.dfg=null,this.multiScatteringCompensation=null}start(e){if(this.clearcoat===!0&&(this.clearcoatRadiance=L().toVar(`clearcoatRadiance`),this.clearcoatSpecularDirect=L().toVar(`clearcoatSpecularDirect`),this.clearcoatSpecularIndirect=L().toVar(`clearcoatSpecularIndirect`)),this.sheen===!0&&(this.sheenSpecularDirect=L().toVar(`sheenSpecularDirect`),this.sheenSpecularIndirect=L().toVar(`sheenSpecularIndirect`)),this.iridescence===!0){let e=J.dot(mu).clamp(),t=Mh({outsideIOR:N(1),eta2:Hi,cosTheta1:e,thinFilmThickness:Ui,baseF0:Ji}),n=Mh({outsideIOR:N(1),eta2:Hi,cosTheta1:e,thinFilmThickness:Ui,baseF0:B.rgb});this.iridescenceFresnel=K(t,n,Ii),this.iridescenceF0Dielectric=eh({f:t,f90:1,dotVH:e}),this.iridescenceF0Metallic=eh({f:n,f90:1,dotVH:e})}if(this.transmission===!0){let t=du,n=Ll.sub(du).normalize(),r=Tu,i=e.context;i.backdrop=Dh(r,n,Fi,Ni,Yi,Xi,t,Xl,Pl,Ml,na,ia,oa,aa,this.dispersion?sa:null),i.backdropAlpha=ra,B.a.mulAssign(K(1,i.backdrop.a,ra))}let t=J.dot(mu).clamp();this.dfg=Qm({roughness:Fi,dotNV:t}).toConst(`dfg`);let n=this.dfg.x.add(this.dfg.y);this.multiScatteringCompensation=Yi.mul(n.reciprocal().sub(1)).add(1).toConst(`multiScatteringCompensation`),super.start(e)}computeMultiscattering(e,t,n,r,i=null){let a=this.dfg,o=i?Vi.mix(r,i):r,s=o.mul(a.x).add(n.mul(a.y)),c=a.x.add(a.y).oneMinus(),l=o.add(o.oneMinus().mul(.047619)),u=s.mul(l).div(c.mul(l).oneMinus());e.addAssign(s),t.addAssign(u.mul(c))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=J.dot(e).clamp().mul(t).toVar();if(this.sheen===!0){this.sheenSpecularDirect.addAssign(r.mul(rh({lightDirection:e})));let t=Nh({normal:J,viewDir:mu,roughness:Bi}),n=Nh({normal:J,viewDir:e,roughness:Bi}),i=zi.r.max(zi.g).max(zi.b).mul(t.max(n)).oneMinus();r.mulAssign(i)}if(this.clearcoat===!0){let n=Eu.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(n.mul(Ym({lightDirection:e,f0:Ph,f90:Fh,roughness:Ri,normalView:Eu})))}let i=e.add(mu).normalize(),a=Mm({f0:Ji,f90:Xi,dotVH:mu.dot(i).clamp()}),o=Ym({lightDirection:e,f0:Yi,f90:1,roughness:Fi,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy});if(this.retroreflection===!0){let t=mu.negate().reflect(J),n=e.add(t).normalize(),r=Mm({f0:Ji,f90:Xi,dotVH:t.dot(n).clamp()}),i=Ym({lightDirection:e,viewDirection:t,f0:Yi,f90:1,roughness:Fi,f:this.iridescenceFresnel,USE_IRIDESCENCE:this.iridescence,USE_ANISOTROPY:this.anisotropy});a=K(a,r,ca.clamp()),o=K(o,i,ca.clamp())}n.directDiffuse.addAssign(r.mul(Nm({diffuseColor:Ni})).mul(a.oneMinus())),n.directSpecular.addAssign(r.mul(o).mul(this.multiScatteringCompensation))}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r,reflectedLight:i,ltc_1:a,ltc_2:o}){let s=t.add(n).sub(r),c=t.sub(n).sub(r),l=t.sub(n).add(r),u=t.add(n).add(r),d=J,f=mu,p=pu.toVar(),m=ih({N:d,V:f,roughness:Fi}),h=a.sample(m).toVar(),g=o.sample(m).toVar(),_=Ei(L(h.x,0,h.y),L(0,1,0),L(h.z,0,h.w)).toVar(),v=Yi.mul(g.x).add(Xi.sub(Yi).mul(g.y)).toVar();if(i.directSpecular.addAssign(e.mul(v).mul(sh({N:d,V:f,P:p,mInv:_,p0:s,p1:c,p2:l,p3:u}))),i.directDiffuse.addAssign(e.mul(Ni).mul(sh({N:d,V:f,P:p,mInv:Ei(1,0,0,0,1,0,0,0,1),p0:s,p1:c,p2:l,p3:u}))),this.clearcoat===!0){let t=Eu,n=ih({N:t,V:f,roughness:Ri}),r=a.sample(n),i=o.sample(n),d=Ei(L(r.x,0,r.y),L(0,1,0),L(r.z,0,r.w)),m=Ph.mul(i.x).add(Fh.sub(Ph).mul(i.y));this.clearcoatSpecularDirect.addAssign(e.mul(m).mul(sh({N:t,V:f,P:p,mInv:d,p0:s,p1:c,p2:l,p3:u})))}}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e),this.ambientOcclusion(e)}indirectDiffuse(e){let{irradiance:t,reflectedLight:n}=e.context,r=L().toVar(),i=L().toVar();this.computeMultiscattering(r,i,Xi,Ji,this.iridescenceF0Dielectric);let a=t.mul(Nm({diffuseColor:Ni})).mul(r.add(i).oneMinus()).toVar();if(this.sheen===!0){let e=Nh({normal:J,viewDir:mu,roughness:Bi});this.sheenSpecularIndirect.addAssign(t.mul(zi,e,1/Math.PI));let n=zi.r.max(zi.g).max(zi.b).mul(e).oneMinus();a.mulAssign(n)}n.indirectDiffuse.addAssign(a)}indirectSpecular(e){let{radiance:t,iblIrradiance:n,reflectedLight:r}=e.context;if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(n.mul(zi,Nh({normal:J,viewDir:mu,roughness:Bi}),1/Math.PI)),this.clearcoat===!0){let e=$m({dotNV:Eu.dot(mu).clamp(),specularColor:Ph,specularF90:Fh,roughness:Ri});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(e))}let i=L().toVar(`singleScatteringDielectric`),a=L().toVar(`multiScatteringDielectric`),o=L().toVar(`singleScatteringMetallic`),s=L().toVar(`multiScatteringMetallic`);this.computeMultiscattering(i,a,Xi,Ji,this.iridescenceF0Dielectric),this.computeMultiscattering(o,s,Xi,B.rgb,this.iridescenceF0Metallic);let c=K(i,o,Ii),l=K(a,s,Ii),u=i.add(a),d=Ni.mul(u.oneMinus()),f=n.mul(1/Math.PI),p=t.mul(c).add(l.mul(f)).toVar(),m=d.mul(f).toVar();if(this.sheen===!0){let e=Nh({normal:J,viewDir:mu,roughness:Bi}),t=zi.r.max(zi.g).max(zi.b).mul(e).oneMinus();p.mulAssign(t),m.mulAssign(t)}r.indirectSpecular.addAssign(p),r.indirectDiffuse.addAssign(m)}ambientOcclusion(e){let{ambientOcclusion:t,reflectedLight:n}=e.context,r=J.dot(mu).clamp().add(t),i=Fi.mul(-16).oneMinus().negate().exp2(),a=t.sub(r.pow(i).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(t),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(t),n.indirectDiffuse.mulAssign(t),n.indirectSpecular.mulAssign(a)}finish({context:e}){let{outgoingLight:t}=e;if(this.clearcoat===!0){let e=Mm({dotVH:Eu.dot(mu).clamp(),f0:Ph,f90:Fh}),n=t.mul(Li.mul(e).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(Li));t.assign(n)}if(this.sheen===!0){let e=t.add(this.sheenSpecularDirect,this.sheenSpecularIndirect);t.assign(e)}}},Lh=2.399963229728653,Rh=N(1),zh=N(-2),Bh=N(.8),Vh=N(-1),Hh=N(.4),Uh=N(2),Wh=N(.305),Gh=N(3),Kh=N(.21),qh=N(4),Jh=N(4),Yh=N(16),Xh=j(([e])=>{let t=L(Eo(e)).toVar(),n=N(-1).toVar();return M(t.x.greaterThan(t.z),()=>{M(t.x.greaterThan(t.y),()=>{n.assign(hs(e.x.greaterThan(0),0,3))}).Else(()=>{n.assign(hs(e.y.greaterThan(0),1,4))})}).Else(()=>{M(t.z.greaterThan(t.y),()=>{n.assign(hs(e.z.greaterThan(0),2,5))}).Else(()=>{n.assign(hs(e.y.greaterThan(0),1,4))})}),n}).setLayout({name:`getFace`,type:`float`,inputs:[{name:`direction`,type:`vec3`}]}),Zh=j(([e,t])=>{let n=I().toVar();return M(t.equal(0),()=>{n.assign(I(e.z,e.y).div(Eo(e.x)))}).ElseIf(t.equal(1),()=>{n.assign(I(e.x.negate(),e.z.negate()).div(Eo(e.y)))}).ElseIf(t.equal(2),()=>{n.assign(I(e.x.negate(),e.y).div(Eo(e.z)))}).ElseIf(t.equal(3),()=>{n.assign(I(e.z.negate(),e.y).div(Eo(e.x)))}).ElseIf(t.equal(4),()=>{n.assign(I(e.x.negate(),e.z).div(Eo(e.y)))}).Else(()=>{n.assign(I(e.x,e.y).div(Eo(e.z)))}),W(.5,n.add(1))}).setLayout({name:`getUV`,type:`vec2`,inputs:[{name:`direction`,type:`vec3`},{name:`face`,type:`float`}]}),Qh=j(([e])=>{let t=N(0).toVar();return M(e.greaterThanEqual(Bh),()=>{t.assign(Rh.sub(e).mul(Vh.sub(zh)).div(Rh.sub(Bh)).add(zh))}).ElseIf(e.greaterThanEqual(Hh),()=>{t.assign(Bh.sub(e).mul(Uh.sub(Vh)).div(Bh.sub(Hh)).add(Vh))}).ElseIf(e.greaterThanEqual(Wh),()=>{t.assign(Hh.sub(e).mul(Gh.sub(Uh)).div(Hh.sub(Wh)).add(Uh))}).ElseIf(e.greaterThanEqual(Kh),()=>{t.assign(Wh.sub(e).mul(qh.sub(Gh)).div(Wh.sub(Kh)).add(Gh))}).Else(()=>{t.assign(N(-2).mul(oo(W(1.16,e))))}),t}).setLayout({name:`roughnessToMip`,type:`float`,inputs:[{name:`roughness`,type:`float`}]}),$h=j(([e,t,n,r,i,a])=>{let o=N(n),s=L(t),c=rs(Qh(o),zh,a),l=po(c),u=lo(c),d=L(eg(e,s,u,r,i,a)).toVar();return M(l.notEqual(0),()=>{let t=L(eg(e,s,u.add(1),r,i,a)).toVar();d.assign(K(d,t,l))}),d}),eg=j(([e,t,n,r,i,a])=>{let o=N(n).toVar(),s=L(t),c=N(Xh(s)).toVar(),l=N(Vo(Jh.sub(o),0)).toVar();o.assign(Vo(o,Jh));let u=N(io(o)).toVar(),d=I(Zh(s,c).mul(u.sub(2)).add(1)).toVar();return M(c.greaterThan(2),()=>{d.y.addAssign(u),c.subAssign(3)}),d.x.addAssign(c.mul(u)),d.x.addAssign(l.mul(W(3,Yh))),d.y.addAssign(W(4,io(a).sub(u))),d.x.mulAssign(r),d.y.mulAssign(i),e.sample(d).grad(I(),I())}),tg=j(({SAMPLES:e,sigma:t,outputDirection:n,mipInt:r,envMap:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=L(0).toVar();return M(t.equal(0),()=>{c.assign(eg(i,n,r,a,o,s))}).Else(()=>{let l=fo(qo(hs(Eo(n.z).lessThan(.999),L(0,0,1),L(1,0,0)),n)).toVar(),u=qo(n,l).toVar(),d=Bo(t.mul(3),Math.PI),f=ro(d.mul(d).mul(-.5).div(t.mul(t))).oneMinus().toVar(),p=N(0).toVar();X({start:P(0),end:e},({i:d})=>{let m=N(d).add(.5).div(N(e)),h=t.mul(so(ao(m.mul(f).oneMinus()).mul(-2))).toVar(),g=N(d).mul(Lh).toVar(),_=l.mul(go(g)).add(u.mul(mo(g))),v=n.mul(go(h)).add(_.mul(mo(h))),y=mo(h).div(h).toVar();c.addAssign(eg(i,v,r,a,o,s).mul(y)),p.addAssign(y)}),c.divAssign(p)}),R(c,1)}),ng=j(([e])=>{let t=F(e).toVar();return t.assign(t.shiftLeft(F(16)).bitOr(t.shiftRight(F(16)))),t.assign(t.bitAnd(F(1431655765)).shiftLeft(F(1)).bitOr(t.bitAnd(F(2863311530)).shiftRight(F(1)))),t.assign(t.bitAnd(F(858993459)).shiftLeft(F(2)).bitOr(t.bitAnd(F(3435973836)).shiftRight(F(2)))),t.assign(t.bitAnd(F(252645135)).shiftLeft(F(4)).bitOr(t.bitAnd(F(4042322160)).shiftRight(F(4)))),t.assign(t.bitAnd(F(16711935)).shiftLeft(F(8)).bitOr(t.bitAnd(F(4278255360)).shiftRight(F(8)))),N(t).mul(23283064365386963e-26)}),rg=j(([e,t])=>I(N(e).div(N(t)),ng(e))),ig=j(([e,t,n])=>{let r=n.mul(n).toConst(),i=L(1,0,0).toConst(),a=qo(t,i).toConst(),o=so(e.x).toConst(),s=W(2,3.14159265359).mul(e.y).toConst(),c=o.mul(go(s)).toConst(),l=o.mul(mo(s)).toVar(),u=W(.5,t.z.add(1)).toConst();l.assign(u.oneMinus().mul(so(c.mul(c).oneMinus())).add(u.mul(l)));let d=i.mul(c).add(a.mul(l)).add(t.mul(so(Vo(0,c.mul(c).add(l.mul(l)).oneMinus()))));return fo(L(r.mul(d.x),r.mul(d.y),Vo(0,d.z)))}),ag=j(({roughness:e,mipInt:t,envMap:n,N_immutable:r,GGX_SAMPLES:i,CUBEUV_TEXEL_WIDTH:a,CUBEUV_TEXEL_HEIGHT:o,CUBEUV_MAX_MIP:s})=>{let c=L(r).toVar(),l=L(0).toVar(),u=N(0).toVar();return M(e.lessThan(.001),()=>{l.assign(eg(n,c,t,a,o,s))}).Else(()=>{let r=fo(qo(hs(Eo(c.z).lessThan(.999),L(0,0,1),L(1,0,0)),c)).toVar(),d=qo(c,r).toVar();X({start:F(0),end:i},({i:f})=>{let p=ig(rg(f,i),L(0,0,1),e),m=fo(r.mul(p.x).add(d.mul(p.y)).add(c.mul(p.z))),h=fo(m.mul(Ko(c,m).mul(2)).sub(c)),g=Vo(Ko(c,h),0);M(g.greaterThan(0),()=>{let e=eg(n,h,t,a,o,s);l.addAssign(e.mul(g)),u.addAssign(g)})}),M(u.greaterThan(0),()=>{l.assign(l.div(u))})}),R(l,1)}),og=4,sg=6,cg=20,lg=256,ug=new ce(-1,1,1,-1,0,1),dg=new et(90,1),fg=new Et,pg=null,mg=0,hg=0,gg=new x,_g=new x,vg=new WeakMap,yg=[3,1,5,0,4,2],bg=Ic(`outputDirection`).normalize(),xg=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._lodMeshes=[],this._blurMaterial=null,this._ggxMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._backgroundBox=null}get _hasInitialized(){return this._renderer.hasInitialized()}fromScene(e,t=0,n=.1,r=100,i={}){let{size:a=256,position:o=gg,renderTarget:s=null}=i;if(this._setSize(a),this._hasInitialized===!1)throw Error(`THREE.PMREMGenerator: .fromScene() called before the backend is initialized. Use "await renderer.init();" before using this method.`);pg=this._renderer.getRenderTarget(),mg=this._renderer.getActiveCubeFace(),hg=this._renderer.getActiveMipmapLevel();let c=s||this._allocateTarget(!0);return this._init(c),this._sceneToCubeUV(e,n,r,c,o),t>0&&this._blur(c,0,0,t),this._applyPMREM(c),this._cleanup(c),c}async fromSceneAsync(e,t=0,n=.1,r=100,i={}){return Wt(`PMREMGenerator: ".fromSceneAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this.fromScene(e,t,n,r,i)}fromEquirectangular(e,t=null){if(this._hasInitialized===!1)throw Error(`THREE.PMREMGenerator: .fromEquirectangular() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this._fromTexture(e,t)}async fromEquirectangularAsync(e,t=null){return Wt(`PMREMGenerator: ".fromEquirectangularAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}fromCubemap(e,t=null){if(this._hasInitialized===!1)throw Error(`THREE.PMREMGenerator: .fromCubemap() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this._fromTexture(e,t)}async fromCubemapAsync(e,t=null){return Wt(`PMREMGenerator: ".fromCubemapAsync()" is deprecated. Use "await renderer.init()" instead.`),await this._renderer.init(),this._fromTexture(e,t)}async compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Dg(),await this._compileMaterial(this._cubemapMaterial))}async compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Og(),await this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSizeFromTexture(e){e.mapping===301||e.mapping===302?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4)}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(pg,mg,hg),e.scissorTest=!1,this._setViewport(e,0,0,e.width,e.height)}_fromTexture(e,t){this._setSizeFromTexture(e),pg=this._renderer.getRenderTarget(),mg=this._renderer.getActiveCubeFace(),hg=this._renderer.getActiveMipmapLevel();let n=t||this._allocateTarget(!1);return this._init(n),this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTarget(e){return Cg(3*Math.max(this._cubeSize,112),4*this._cubeSize,e)}_init(e){if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e.width||this._pingPongRenderTarget.height!==e.height){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Cg(e.width,e.height);let{_lodMax:t}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods}=Sg(t)),this._blurMaterial=Tg(t,e.width,e.height),this._ggxMaterial=Eg(t,e.width,e.height)}}async _compileMaterial(e){let t=new je(new We,e);await this._renderer.compile(t,ug)}_sceneToCubeUV(e,n,r,i,a){let o=dg;o.near=n,o.far=r;let s=[1,1,1,1,-1,1],c=[1,-1,1,-1,1,-1],l=this._renderer,u=l.autoClear;l.getClearColor(fg),l.autoClear=!1,this._backgroundBox===null&&(this._backgroundBox=new je(new Ne,new t({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let d=this._backgroundBox,f=d.material,p=!1,m=e.background;m?m.isColor&&(f.color.copy(m),e.background=null,p=!0):(f.color.copy(fg),p=!0),l.setRenderTarget(i),l.clear(),p&&l.render(d,o);for(let t=0;t<6;t++){let n=t%3;n===0?(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+c[t],a.y,a.z)):n===1?(o.up.set(0,0,s[t]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+c[t],a.z)):(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+c[t]));let r=this._cubeSize;this._setViewport(i,n*r,t>2?r:0,r,r),l.render(e,o)}l.autoClear=u,e.background=m}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?this._cubemapMaterial===null&&(this._cubemapMaterial=Dg(e)):this._equirectMaterial===null&&(this._equirectMaterial=Og(e));let i=r?this._cubemapMaterial:this._equirectMaterial;i.fragmentNode.value=e;let a=this._lodMeshes[0];a.material=i;let o=this._cubeSize;this._setViewport(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,ug)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let t=1;t<r;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let r=this._renderer,i=this._pingPongRenderTarget,a=this._ggxMaterial,o=this._lodMeshes[n];o.material=a;let s=vg.get(a),c=n/(this._lodMeshes.length-1),l=t/(this._lodMeshes.length-1),u=Math.sqrt(c*c-l*l)*(c*1.25),{_lodMax:d}=this,f=this._sizeLods[n],p=3*f*(n>d-og?n-d+og:0),m=4*(this._cubeSize-f);e.texture.frame=(e.texture.frame||0)+1,s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,this._setViewport(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,ug),i.texture.frame=(i.texture.frame||0)+1,s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,this._setViewport(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,ug)}_blur(e,t,n,r){let i=this._pingPongRenderTarget,a=Math.min(r,Math.PI)/Math.SQRT2;this._blurPass(e,i,t,n,a),this._blurPass(i,e,n,n,a)}_blurPass(e,t,n,r,i){let a=this._renderer,o=this._blurMaterial,s=this._lodMeshes[r];s.material=o;let c=vg.get(o);e.texture.frame=(e.texture.frame||0)+1,c.envMap.value=e.texture,c.sigma.value=i,c.mipInt.value=this._lodMax-n;let l=this._sizeLods[r],u=3*l*(r>this._lodMax-og?r-this._lodMax+og:0),d=4*(this._cubeSize-l);this._setViewport(t,u,d,3*l,2*l),a.setRenderTarget(t),a.render(s,ug)}_setViewport(e,t,n,r,i){this._renderer.isWebGLRenderer?(e.viewport.set(t,e.height-i-n,r,i),e.scissor.set(t,e.height-i-n,r,i)):(e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i))}};function Sg(e){let t=[],n=[],r=e,i=e-og+1+sg;for(let e=0;e<i;e++){let e=2**r;t.push(e);let i=1/(e-2),a=-i,s=1+i,c=[a,a,s,a,s,s,a,a,s,s,a,s],l=new Float32Array(108),u=new Float32Array(108);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,r=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0],i=yg[e];l.set(r,18*i);for(let e=0;e<6;e++){let t=c[e*2]*2-1,n=c[e*2+1]*2-1;i===0?_g.set(1,n,t):i===1?_g.set(-t,1,-n):i===2?_g.set(-t,n,1):i===3?_g.set(-1,n,-t):i===4?_g.set(-t,-1,n):_g.set(t,n,-1),_g.toArray(u,(i*6+e)*3)}}let d=new We;d.setAttribute(`position`,new o(l,3)),d.setAttribute(`outputDirection`,new o(u,3)),n.push(new je(d,null)),r>og&&r--}return{lodMeshes:n,sizeLods:t}}function Cg(e,t,n){let r=new wt(e,t,{magFilter:Ce,minFilter:Ce,generateMipmaps:!1,type:ye,format:Sn,colorSpace:De,depthBuffer:n});return r.texture.mapping=306,r.texture.name=`PMREM.cubeUv`,r.texture.isPMREMTexture=!0,r.scissorTest=!0,r}function wg(e){let t=new em;return t.depthTest=!1,t.depthWrite=!1,t.blending=0,t.name=`PMREM_${e}`,t}function Tg(e,t,n){let r={envMap:q(),sigma:H(0),mipInt:H(0),CUBEUV_TEXEL_WIDTH:N(1/t),CUBEUV_TEXEL_HEIGHT:N(1/n),CUBEUV_MAX_MIP:N(e)},i=wg(`blur`);return i.fragmentNode=tg({...r,outputDirection:bg,SAMPLES:P(cg)}),vg.set(i,r),i}function Eg(e,t,n){let r={envMap:q(),roughness:H(0),mipInt:H(0),CUBEUV_TEXEL_WIDTH:N(1/t),CUBEUV_TEXEL_HEIGHT:N(1/n),CUBEUV_MAX_MIP:N(e)},i=wg(`ggx`);return i.fragmentNode=ag({...r,N_immutable:bg,GGX_SAMPLES:F(lg)}),vg.set(i,r),i}function Dg(e){let t=wg(`cubemap`);return t.fragmentNode=Uu(e,bg),t}function Og(e){let t=wg(`equirect`);return t.fragmentNode=q(e,_m(bg),0),t}var kg=new WeakMap;function Ag(e){let t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(2**t,112)),texelHeight:n,maxMip:t}}function jg(e,t,n){let r=Mg(t),i=r.get(e);if((i===void 0?-1:i.pmremVersion)!==e.pmremVersion){let t=e.image;if(e.isCubeTexture){if(Pg(t))i=n.fromCubemap(e,i);else return null}else if(Fg(t))i=n.fromEquirectangular(e,i);else return null;if(i.pmremVersion=e.pmremVersion,r.has(e)===!1){let t=()=>{e.removeEventListener(`dispose`,t);let n=r.get(e);n!==void 0&&(n.dispose(),r.delete(e))};e.addEventListener(`dispose`,t)}r.set(e,i)}return i.texture}function Mg(e){let t=kg.get(e);return t===void 0&&(t=new WeakMap,kg.set(e,t)),t}var Ng=class extends hr{static get type(){return`PMREMNode`}constructor(e,t=null,n=null){super(`vec3`),this._value=e,this._pmrem=null,this.uvNode=t,this.levelNode=n,this._generator=null;let r=new pn;r.isRenderTargetTexture=!0,this._texture=q(r),this._width=H(0),this._height=H(0),this._maxMip=H(0),this.updateBeforeType=w.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){let t=Ag(e.image.height);this._texture.value=e,this._width.value=t.texelWidth,this._height.value=t.texelHeight,this._maxMip.value=t.maxMip}updateBefore(e){let t=this._pmrem,n=t?t.pmremVersion:-1,r=this._value;n!==r.pmremVersion&&(t=r.isPMREMTexture===!0||r.mapping===306?r:jg(r,e.renderer,this._generator),t!==null&&(this._pmrem=t,this.updateFromTexture(t)))}setup(e){this._generator===null&&(this._generator=new xg(e.renderer)),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this,e)),t=this._pmrem===null||this._pmrem.isRenderTargetTexture?Fu.mul(L(t.x,t.y.negate(),t.z)):Fu.mul(t);let n=this.levelNode;return n===null&&e.context.getTextureLevel&&(n=e.context.getTextureLevel(this)),$h(this._texture,t,n,this._width,this._height,this._maxMip)}dispose(){super.dispose(),this._generator!==null&&this._generator.dispose()}};function Pg(e){if(e==null)return!1;let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function Fg(e){return e!=null&&e.height>0}var Ig=O(Ng).setParameterLength(1,3),Lg=new WeakMap,Rg=class extends _p{static get type(){return`EnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){let{material:t}=e,n=this.envNode;if(n.isTextureNode||n.isMaterialReferenceNode){let r=n.isTextureNode?n.value:t[n.property],i=this._getPMREMNodeCache(e.renderer),a=i.get(r);a===void 0&&(a=Ig(r),i.set(r,a)),n=a}let r=t.useAnisotropy===!0||t.anisotropy>0?Sd:J,i=hc(n.context(zg(Fi,r)).mul(Pu));if(t.useRetroreflection===!0||t.retroreflectivity>0){let e=hc(n.context(Bg(Fi,r)).mul(Pu));i=ca.clamp().mix(i,e)}let a=hc(n.context(Vg(Tu)).mul(Math.PI).mul(Pu));e.context.radiance.addAssign(i),e.context.iblIrradiance.addAssign(a);let o=e.context.lightingModel.clearcoatRadiance;if(o){let e=hc(n.context(zg(Ri,Eu)).mul(Pu));o.addAssign(e)}}_getPMREMNodeCache(e){let t=Lg.get(e);return t===void 0&&(t=new WeakMap,Lg.set(e,t)),t}},zg=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=mu.negate().reflect(t),n=Zo(e).mix(n,t).normalize(),n=n.transformDirection(Fl)),n),getTextureLevel:()=>e}},Bg=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=Zo(e).mix(mu,t).normalize(),n=n.transformDirection(Fl)),n),getTextureLevel:()=>e}},Vg=e=>({getUV:()=>e,getTextureLevel:()=>N(1)}),Hg=new dn,Ug=class extends em{static get type(){return`MeshStandardNodeMaterial`}constructor(e){super(),this.isMeshStandardNodeMaterial=!0,this.lights=!0,this.emissiveNode=null,this.metalnessNode=null,this.roughnessNode=null,this.setDefaultValues(Hg),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new Rg(t):null}setupLightingModel(){return new Ih}setupSpecular(){let e=K(L(.04),B.rgb,Ii);Ji.assign(L(.04)),Yi.assign(e),Xi.assign(1)}setupVariants(){let e=this.metalnessNode?N(this.metalnessNode):Kd;Ii.assign(e);let t=this.roughnessNode?N(this.roughnessNode):Gd;t=Um({roughness:t}),Fi.assign(t),this.setupSpecular(),Ni.assign(B.rgb.mul(e.oneMinus()))}},Wg=new Qt,Gg=class extends Ug{static get type(){return`MeshPhysicalNodeMaterial`}constructor(e){super(),this.isMeshPhysicalNodeMaterial=!0,this.clearcoatNode=null,this.clearcoatRoughnessNode=null,this.clearcoatNormalNode=null,this.sheenNode=null,this.sheenRoughnessNode=null,this.iridescenceNode=null,this.iridescenceIORNode=null,this.iridescenceThicknessNode=null,this.specularIntensityNode=null,this.specularColorNode=null,this.iorNode=null,this.transmissionNode=null,this.thicknessNode=null,this.attenuationDistanceNode=null,this.attenuationColorNode=null,this.dispersionNode=null,this.retroreflectivityNode=null,this.anisotropyNode=null,this.setDefaultValues(Wg),this.setValues(e)}get useClearcoat(){return this.clearcoat>0||this.clearcoatNode!==null}get useIridescence(){return this.iridescence>0||this.iridescenceNode!==null}get useSheen(){return this.sheen>0||this.sheenNode!==null}get useAnisotropy(){return this.anisotropy>0||this.anisotropyNode!==null}get useTransmission(){return this.transmission>0||this.transmissionNode!==null}get useDispersion(){return this.dispersion>0||this.dispersionNode!==null}get useRetroreflection(){return this.retroreflectivity>0||this.retroreflectivityNode!==null}setupSpecular(){let e=this.iorNode?N(this.iorNode):sf,t=this.specularColorNode?L(this.specularColorNode):Hd,n=this.specularIntensityNode?N(this.specularIntensityNode):Vd;na.assign(e),Ji.assign(Bo(Yo(na.sub(1).div(na.add(1))).mul(t),L(1)).mul(n)),Yi.assign(K(Ji,B.rgb,Ii)),Xi.assign(K(n,1,Ii))}setupLightingModel(){return new Ih(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion,this.useRetroreflection)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){let e=this.clearcoatNode?N(this.clearcoatNode):Jd,t=this.clearcoatRoughnessNode?N(this.clearcoatRoughnessNode):Yd;Li.assign(e),Ri.assign(Um({roughness:t}))}if(this.useSheen){let e=this.sheenNode?L(this.sheenNode):Qd,t=this.sheenRoughnessNode?N(this.sheenRoughnessNode):$d;zi.assign(e),Bi.assign(t)}if(this.useRetroreflection){let e=this.retroreflectivityNode?N(this.retroreflectivityNode):_f;ca.assign(e)}if(this.useIridescence){let e=this.iridescenceNode?N(this.iridescenceNode):tf,t=this.iridescenceIORNode?N(this.iridescenceIORNode):nf,n=this.iridescenceThicknessNode?N(this.iridescenceThicknessNode):rf;Vi.assign(e),Hi.assign(t),Ui.assign(n)}if(this.useAnisotropy){let e=(this.anisotropyNode?I(this.anisotropyNode):ef).toVar();Gi.assign(e.length()),M(Gi.equal(0),()=>{e.assign(I(1,0))}).Else(()=>{e.divAssign(I(Gi)),Gi.assign(Gi.saturate())}),Wi.assign(Gi.pow2().mix(Fi.pow2(),1)),Ki.assign(yd[0].mul(e.x).add(yd[1].mul(e.y))),qi.assign(yd[1].mul(e.x).sub(yd[0].mul(e.y)))}if(this.useTransmission){let e=this.transmissionNode?N(this.transmissionNode):af,t=this.thicknessNode?N(this.thicknessNode):of,n=this.attenuationDistanceNode?N(this.attenuationDistanceNode):cf,r=this.attenuationColorNode?L(this.attenuationColorNode):lf;if(ra.assign(e),ia.assign(t),aa.assign(n),oa.assign(r),this.useDispersion){let e=this.dispersionNode?N(this.dispersionNode):gf;sa.assign(e)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?L(this.clearcoatNormalNode):Xd}setup(e){e.context.setupClearcoatNormal=()=>As(this.setupClearcoatNormal(e),`NORMAL`,`vec3`),super.setup(e)}},Kg=class extends Ih{constructor(e=!1,t=!1,n=!1,r=!1,i=!1,a=!1,o=!1){super(e,t,n,r,i,a),this.useSSS=o}direct({lightDirection:e,lightColor:t,reflectedLight:n},r){if(this.useSSS===!0){let{thicknessColorNode:i,thicknessDistortionNode:a,thicknessAmbientNode:o,thicknessAttenuationNode:s,thicknessPowerNode:c,thicknessScaleNode:l}=r.material,u=e.add(J.mul(a)).normalize(),d=L(N(mu.dot(u.negate()).saturate().pow(c).mul(l)).add(o).mul(i));n.directDiffuse.addAssign(d.mul(s.mul(t)))}super.direct({lightDirection:e,lightColor:t,reflectedLight:n},r)}},qg=class extends Gg{static get type(){return`MeshSSSNodeMaterial`}constructor(e){super(e),this.thicknessColorNode=null,this.thicknessDistortionNode=N(.1),this.thicknessAmbientNode=N(0),this.thicknessAttenuationNode=N(.1),this.thicknessPowerNode=N(2),this.thicknessScaleNode=N(10)}get useSSS(){return this.thicknessColorNode!==null}setupLightingModel(){return new Kg(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion,this.useSSS)}},Jg=j(({normal:e,lightDirection:t,builder:n})=>{let r=I(e.dot(t).mul(.5).add(.5),0);if(n.material.gradientMap)return L(Yu(`gradientMap`,`texture`).context({getUV:()=>r}).r);{let e=r.fwidth().mul(.5);return K(L(.7),L(1),os(N(.7).sub(e.x),N(.7).add(e.x),r.x))}}),Yg=class extends Om{direct({lightDirection:e,lightColor:t,reflectedLight:n},r){let i=Jg({normal:J,lightDirection:e,builder:r}).mul(t);n.directDiffuse.addAssign(i.mul(Nm({diffuseColor:B.rgb})))}indirect(e){let{ambientOcclusion:t,irradiance:n,reflectedLight:r}=e.context;r.indirectDiffuse.addAssign(n.mul(Nm({diffuseColor:B}))),r.indirectDiffuse.mulAssign(t)}},Xg=new vt,Zg=class extends em{static get type(){return`MeshToonNodeMaterial`}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Xg),this.setValues(e)}setupLightingModel(){return new Yg}},Qg=j(()=>{let e=L(mu.z,0,mu.x.negate()).normalize(),t=mu.cross(e);return I(e.dot(J),t.dot(J)).mul(.495).add(.5)}).once([`NORMAL`,`VERTEX`])().toVar(`matcapUV`),$g=new ln,e_=class extends em{static get type(){return`MeshMatcapNodeMaterial`}constructor(e){super(),this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues($g),this.setValues(e)}setupVariants(e){let t=Qg,n;n=e.material.matcap?Yu(`matcap`,`texture`).context({getUV:()=>t}):L(K(.2,.8,t.y)),B.rgb.mulAssign(n.rgb)}},t_=class extends hr{static get type(){return`RotateNode`}constructor(e,t,n=`XYZ`){super(),this.positionNode=e,this.rotationNode=t,this._order=n}customCacheKey(){return Bn(this._order)}setOrder(e){return this._order=e,this}getOrder(){return this._order}generateNodeType(e){return this.positionNode.getNodeType(e)}setup(e){let{rotationNode:t,positionNode:n}=this;if(this.getNodeType(e)===`vec2`){let e=t.cos(),r=t.sin();return Ti(e,r,r.negate(),e).mul(n)}{let e=t,r=this._order,i={X:Di(R(1,0,0,0),R(0,go(e.x),mo(e.x),0),R(0,mo(e.x).negate(),go(e.x),0),R(0,0,0,1)),Y:Di(R(go(e.y),0,mo(e.y).negate(),0),R(0,1,0,0),R(mo(e.y),0,go(e.y),0),R(0,0,0,1)),Z:Di(R(go(e.z),mo(e.z),0,0),R(mo(e.z).negate(),go(e.z),0,0),R(0,0,1,0),R(0,0,0,1))};return i[r.charAt(0)].mul(i[r.charAt(1)]).mul(i[r.charAt(2)]).mul(R(n,1)).xyz}}serialize(e){super.serialize(e),e.order=this._order}deserialize(e){super.deserialize(e),this._order=e.order}},n_=O(t_).setParameterLength(2,3),r_=new Xe,i_=class extends em{static get type(){return`SpriteNodeMaterial`}constructor(e){super(),this.isSpriteNodeMaterial=!0,this._useSizeAttenuation=!0,this.positionNode=null,this.rotationNode=null,this.scaleNode=null,this.transparent=!0,this.setDefaultValues(r_),this.setValues(e)}setupPositionView(e){let{object:t,camera:n}=e,{positionNode:r,rotationNode:i,scaleNode:a,sizeAttenuation:o}=this,s=ru.mul(L(r||0)),c=I(Xl[0].xyz.length(),Xl[1].xyz.length());a!==null&&(c=c.mul(I(a))),n.isPerspectiveCamera&&o===!1&&(c=c.mul(s.z.negate()));let l=cu.xy;if(t.center&&t.center.isVector2===!0){let e=Ws(`center`,`vec2`,t);l=l.sub(e.sub(.5))}l=l.mul(c);let u=N(i||Zd),d=n_(l,u);return R(s.xy.add(d),s.zw)}get sizeAttenuation(){return this._useSizeAttenuation}set sizeAttenuation(e){this._useSizeAttenuation!==e&&(this._useSizeAttenuation=e,this.needsUpdate=!0)}},a_=new cn,o_=new pe,s_=class extends i_{static get type(){return`PointsNodeMaterial`}constructor(e){super(),this.sizeNode=null,this.isPointsNodeMaterial=!0,this.setDefaultValues(a_),this.setValues(e)}setupPositionView(){let{positionNode:e}=this;return ru.mul(L(e||lu)).xyz}setupVertexSprite(e){let{material:t,camera:n}=e,{rotationNode:r,scaleNode:i,sizeNode:a,sizeAttenuation:o}=this,s=super.setupVertex(e);if(t.isNodeMaterial!==!0)return s;let c=a===null?hf:I(a);c=c.mul(sl),n.isPerspectiveCamera&&o===!0&&(c=c.mul(c_.div(pu.z.negate()))),i&&i.isNode&&(c=c.mul(I(i)));let l=cu.xy;if(r&&r.isNode){let e=N(r);l=n_(l,e)}return l=l.mul(c),l=l.div(fl.div(2)),l=l.mul(s.w),s=s.add(R(l,0,0)),s}setupVertex(e){return e.object.isPoints?super.setupVertex(e):this.setupVertexSprite(e)}get alphaToCoverage(){return this._useAlphaToCoverage}set alphaToCoverage(e){this._useAlphaToCoverage!==e&&(this._useAlphaToCoverage=e,this.needsUpdate=!0)}},c_=H(1).setGroup(V).onRenderUpdate(function({renderer:e}){let t=e.getSize(o_);this.value=.5*t.y}),l_=class extends Om{constructor(){super(),this.shadowNode=N(1).toVar(`shadowMask`)}direct({lightNode:e}){e.shadowNode!==null&&this.shadowNode.mulAssign(e.shadowNode)}finish({context:e}){B.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(B.rgb)}},u_=new f,d_=class extends em{static get type(){return`ShadowNodeMaterial`}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.transparent=!0,this.setDefaultValues(u_),this.setValues(e)}setupLightingModel(){return new l_}},f_=ji(`vec3`),p_=ji(`vec3`),m_=ji(`vec3`),h_=class extends Om{constructor(){super()}start(e){let{material:t}=e,n=ji(`vec3`),r=ji(`vec3`),i=ji(`bool`);M(Ll.sub(du).length().greaterThan(eu.mul(2)),()=>{n.assign(Ll),r.assign(du),i.assign(!0)}).Else(()=>{n.assign(du),r.assign(Ll),i.assign(!1)});let a=r.sub(n),o=H(`int`).onRenderUpdate(({material:e})=>e.steps),s=a.length().div(o).toVar(),c=a.normalize().toVar(),l=N(0).toVar(),u=L(1).toVar();t.offsetNode&&l.addAssign(t.offsetNode.mul(s)),X(o,()=>{let r=n.add(c.mul(l)),a=Pl.mul(R(r,1)).xyz;t.depthNode!==null&&(p_.assign(Hp(Fp(a.z,Al,jl))),e.context.sceneDepthNode=Hp(t.depthNode).toVar()),e.context.positionWorld=r,e.context.shadowPositionWorld=r,e.context.positionView=a,f_.assign(0);let o,d;t.scatteringNode&&(o=t.scatteringNode({positionRay:r})),t.scatteringEmissiveNode&&(d=t.scatteringEmissiveNode({positionRay:r})),super.start(e),o&&f_.mulAssign(o);let f=f_.mul(.01).toVar();d&&f.addAssign(d.mul(.01));let p=f_.mul(.01).negate().mul(s).exp();M(i,()=>{m_.addAssign(f.mul(u).mul(s))}).Else(()=>{m_.assign(m_.mul(p).add(f.mul(s)))}),u.mulAssign(p),l.addAssign(s)})}scatteringLight(e,t){let n=t.context.sceneDepthNode;n?M(n.greaterThanEqual(p_),()=>{f_.addAssign(e)}):f_.addAssign(e)}direct({lightNode:e,lightColor:t},n){if(e.isAnalyticLightNode!==!0||e.light.distance===void 0)return;let r=t.xyz.toVar();e.shadowNode!==null&&r.mulAssign(e.shadowNode),this.scatteringLight(r,n)}directRectArea({lightColor:e,lightPosition:t,halfWidth:n,halfHeight:r},i){let a=t.add(n).sub(r),o=t.sub(n).sub(r),s=t.sub(n).add(r),c=t.add(n).add(r),l=i.context.positionView,u=e.xyz.mul(ch({P:l,p0:a,p1:o,p2:s,p3:c})).pow(1.5);this.scatteringLight(u,i)}finish(e){e.context.outgoingLight.assign(m_)}},g_=class extends em{static get type(){return`VolumeNodeMaterial`}constructor(e){super(),this.isVolumeNodeMaterial=!0,this.steps=25,this.offsetNode=null,this.scatteringNode=null,this.lights=!0,this.transparent=!0,this.side=1,this.depthTest=!1,this.depthWrite=!1,this.setValues(e)}setupLightingModel(){return new h_}},__=class{constructor(e,t,n){this.renderer=e,this.nodes=t,this.info=n,this._context=typeof self<`u`?self:null,this._animationLoop=null,this._requestId=null}start(){let e=(t,n)=>{this._requestId=this._context.requestAnimationFrame(e),this.renderer._inspector.isRunning&&this.renderer._inspector.finish(),this.info.autoReset===!0&&this.info.reset(),this.nodes.nodeFrame.update(),this.info.frame=this.nodes.nodeFrame.frameId,this.renderer._inspector.begin(),this._animationLoop!==null&&this._animationLoop(t,n)};e()}stop(){this.renderer._inspector.isRunning&&this.renderer._inspector.finish(),this._context!==null&&this._context.cancelAnimationFrame(this._requestId),this._requestId=null}getAnimationLoop(){return this._animationLoop}setAnimationLoop(e){this._animationLoop=e}getContext(){return this._context}setContext(e){this._context=e}dispose(){this.stop()}},v_=class{constructor(){this.weakMaps={}}_getWeakMap(e){let t=e.length,n=this.weakMaps[t];return n===void 0&&(n=new WeakMap,this.weakMaps[t]=n),n}get(e){let t=this._getWeakMap(e);for(let n=0;n<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return;return t.get(e[e.length-1])}set(e,t){let n=this._getWeakMap(e);for(let t=0;t<e.length-1;t++){let r=e[t];n.has(r)===!1&&n.set(r,new WeakMap),n=n.get(r)}return n.set(e[e.length-1],t),this}delete(e){let t=this._getWeakMap(e);for(let n=0;n<e.length-1;n++)if(t=t.get(e[n]),t===void 0)return!1;return t.delete(e[e.length-1])}},y_=0,b_=new WeakMap;function x_(e){let t=Object.keys(e),n=b_.get(e.constructor);if(n===void 0){n=[];let t=Object.getPrototypeOf(e);for(;t;){let e=Object.getOwnPropertyDescriptors(t);for(let t in e){let r=e[t];r&&typeof r.get==`function`&&n.push(t)}t=Object.getPrototypeOf(t)}b_.set(e.constructor,n)}for(let e=0;e<n.length;e++)t.push(n[e]);return t}var S_=class{constructor(e,t,n,r,i,a,o,s,c,l){this.id=y_++,this._nodes=e,this._geometries=t,this.renderer=n,this.object=r,this.material=i,this.scene=a,this.camera=o,this.lightsNode=s,this.context=c,this.geometry=r.geometry,this.version=i.version,this.drawRange=null,this.attributes=null,this.attributesId=null,this.pipeline=null,this.group=null,this.vertexBuffers=null,this.drawParams=null,this.bundle=null,this.clippingContext=l,this.clippingContextCacheKey=l===null?``:l.cacheKey,this.initialNodesCacheKey=this.getDynamicCacheKey(),this.initialCacheKey=this.getCacheKey(),this._nodeBuilderState=null,this._bindings=null,this._monitor=null,this._sourceMaterial=n._currentSourceMaterial,this.onDispose=null,this.isRenderObject=!0,this.onMaterialDispose=()=>{this.dispose()},this.onGeometryDispose=()=>{this.attributes=null,this.attributesId=null},this.onObjectDispose=()=>{this.dispose()},this.object.addEventListener(`dispose`,this.onObjectDispose),this.material.addEventListener(`dispose`,this.onMaterialDispose),this.geometry.addEventListener(`dispose`,this.onGeometryDispose),this._sourceMaterial!==null&&this._sourceMaterial.addEventListener(`dispose`,this.onMaterialDispose)}updateClipping(e){this.clippingContext=e}get clippingNeedsUpdate(){return this.clippingContext===null||this.clippingContext.cacheKey===this.clippingContextCacheKey?!1:(this.clippingContextCacheKey=this.clippingContext.cacheKey,!0)}get hardwareClippingPlanes(){return this.getNodeBuilderState().hardwareClipping===!0?this.clippingContext.unionClippingCount:0}getNodeBuilderState(){return this._nodeBuilderState||=this._nodes.getForRender(this)}getMonitor(){return this._monitor||=this.getNodeBuilderState().observer}getBindings(){return this._bindings||=this.getNodeBuilderState().createBindings()}getBindingGroup(e){for(let t of this.getBindings())if(t.name===e)return t}getIndex(){return this._geometries.getIndex(this)}getIndirect(){return this._geometries.getIndirect(this)}getIndirectOffset(){return this._geometries.getIndirectOffset(this)}getChainArray(){return[this.object,this.material,this.context,this.lightsNode]}setGeometry(e){this.geometry=e,this.attributes=null,this.attributesId=null}getAttributes(){if(this.attributes!==null)return this.attributes;let e=this.getNodeBuilderState().nodeAttributes,t=this.geometry,n=[],r=new Set,i={};for(let a of e){let e;if(a.node&&a.node.attribute?e=a.node.attribute:(e=t.getAttribute(a.name),e!==void 0&&(e.isInterleavedBufferAttribute?i[a.name]=e.data.uuid:i[a.name]=e.id)),e===void 0)continue;n.push(e);let o=e.isInterleavedBufferAttribute?e.data:e;r.add(o)}return this.attributes=n,this.attributesId=i,this.vertexBuffers=Array.from(r.values()),n}getVertexBuffers(){return this.vertexBuffers===null&&this.getAttributes(),this.vertexBuffers}getDrawParameters(){let{object:e,material:t,geometry:n,group:r,drawRange:i}=this,a=this.drawParams||={vertexCount:0,firstVertex:0,instanceCount:0,firstInstance:0},o=this.getIndex(),s=o!==null,c=1;if(n.isInstancedBufferGeometry===!0?c=n.instanceCount:e.count!==void 0&&(c=Math.max(0,e.count)),c===0)return null;if(a.instanceCount=c,e.isBatchedMesh===!0)return a;let l=1;t.wireframe===!0&&!e.isPoints&&!e.isLineSegments&&!e.isLine&&!e.isLineLoop&&(l=2);let u=i.start*l,d=(i.start+i.count)*l;r!==null&&(u=Math.max(u,r.start*l),d=Math.min(d,(r.start+r.count)*l));let f=n.attributes.position,p=1/0;s?p=o.count:f!=null&&(p=f.count),u=Math.max(u,0),d=Math.min(d,p);let m=d-u;return m<0||m===1/0?null:(a.vertexCount=m,a.firstVertex=u,a)}getGeometryCacheKey(){let{geometry:e}=this,t=``;for(let n of Object.keys(e.attributes).sort()){let r=e.attributes[n];t+=n+`,`,r.data&&(t+=r.data.stride+`,`),r.offset&&(t+=r.offset+`,`),r.itemSize&&(t+=r.itemSize+`,`),r.normalized&&(t+=`n,`)}for(let n of Object.keys(e.morphAttributes).sort()){let r=e.morphAttributes[n];t+=`morph-`+n+`,`;for(let e=0,n=r.length;e<n;e++){let n=r[e];t+=n.id+`,`}}return e.index&&(t+=`index,`),t}getMaterialCacheKey(){let{object:e,material:t,renderer:n}=this,r=t.customProgramCacheKey();for(let e of x_(t)){if(/^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test(e))continue;let i=t[e],a;if(i!==null){let t=typeof i;t===`number`?a=e===`side`?String(i):i===0?`0`:`1`:t===`object`?(a=`{`,i.isTexture&&(a+=i.mapping,n.backend.isWebGPUBackend===!0&&(a+=i.magFilter,a+=i.minFilter,a+=i.wrapS,a+=i.wrapT,a+=i.wrapR)),a+=`}`):a=String(i)}else a=String(i);r+=a+`,`}return r+=this.clippingContextCacheKey+`,`,e.geometry&&(r+=this.getGeometryCacheKey()),e.skeleton&&(r+=e.skeleton.bones.length+`,`),e.isBatchedMesh&&(r+=e._matricesTexture.uuid+`,`,e._colorsTexture!==null&&(r+=e._colorsTexture.uuid+`,`)),(e.isInstancedMesh||e.count>1)&&(r+=e.uuid+`,`),r+=this.context.id+`,`,r+=e.receiveShadow+`,`,Bn(r)}get needsGeometryUpdate(){if(this.geometry.id!==this.object.geometry.id)return!0;if(this.attributes!==null){let e=this.attributesId;for(let t in e){let n=this.geometry.getAttribute(t);if(n===void 0)return!0;let r=n.isInterleavedBufferAttribute?n.data.uuid:n.id;if(e[t]!==r)return!0}}return!1}get needsUpdate(){return this.initialNodesCacheKey!==this.getDynamicCacheKey()||this.clippingNeedsUpdate}getDynamicCacheKey(){let e=0;return this.material.isShadowPassMaterial!==!0&&(e=this._nodes.getCacheKey(this.scene,this.lightsNode)),this.camera.isArrayCamera&&(e=Hn(e,this.camera.cameras.length)),this.object.receiveShadow&&(e=Hn(e,1)),e=Hn(e,this.renderer.contextNode.id,this.renderer.contextNode.version),e}getCacheKey(){return this.getMaterialCacheKey()+this.getDynamicCacheKey()}dispose(){this.object.removeEventListener(`dispose`,this.onObjectDispose),this.material.removeEventListener(`dispose`,this.onMaterialDispose),this.geometry.removeEventListener(`dispose`,this.onGeometryDispose),this._sourceMaterial!==null&&this._sourceMaterial.removeEventListener(`dispose`,this.onMaterialDispose),this.onDispose()}},C_=[],w_=class{constructor(e,t,n,r,i,a){this.renderer=e,this.nodes=t,this.geometries=n,this.pipelines=r,this.bindings=i,this.info=a,this._chainMaps={},this._renderObjects=new Set}get(e,t,n,r,i,a,o,s){let c=this.getChainMap(s);C_[0]=e,C_[1]=t,C_[2]=a,C_[3]=i;let l=c.get(C_);return l===void 0?(l=this.createRenderObject(this.nodes,this.geometries,this.renderer,e,t,n,r,i,a,o,s),c.set(C_,l)):(l.camera=r,l.updateClipping(o),l.needsGeometryUpdate&&l.setGeometry(e.geometry),(l.version!==t.version||l.needsUpdate)&&(l.initialCacheKey===l.getCacheKey()?l.version=t.version:(l.dispose(),l=this.get(e,t,n,r,i,a,o,s)))),C_[0]=null,C_[1]=null,C_[2]=null,C_[3]=null,l}getChainMap(e=`default`){return this._chainMaps[e]||(this._chainMaps[e]=new v_)}dispose(){for(let e of this._renderObjects)e.dispose();this._renderObjects.clear(),this._chainMaps={}}createRenderObject(e,t,n,r,i,a,o,s,c,l,u){let d=this.getChainMap(u),f=new S_(e,t,n,r,i,a,o,s,c,l);return f.onDispose=()=>{this.pipelines.delete(f),this.bindings.deleteForRender(f),this.nodes.delete(f),d.delete(f.getChainArray()),this._renderObjects.delete(f)},this._renderObjects.add(f),f}},T_=class{constructor(){this.data=new WeakMap}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}delete(e){let t=null;return this.data.has(e)&&(t=this.data.get(e),this.data.delete(e)),t}has(e){return this.data.has(e)}dispose(){this.data=new WeakMap}},E_={VERTEX:1,INDEX:2,STORAGE:3,INDIRECT:4},D_=16,O_=class extends T_{constructor(e,t){super(),this.backend=e,this.info=t}delete(e){let t=super.delete(e);return t!==null&&(this.backend.destroyAttribute(e),this.info.destroyAttribute(e)),t}update(e,t){let n=this.get(e);if(n.version===void 0)t===E_.VERTEX?(this.backend.createAttribute(e),this.info.createAttribute(e)):t===E_.INDEX?(this.backend.createIndexAttribute(e),this.info.createIndexAttribute(e)):t===E_.STORAGE?(this.backend.createStorageAttribute(e),this.info.createStorageAttribute(e)):t===E_.INDIRECT&&(this.backend.createIndirectStorageAttribute(e),this.info.createIndirectStorageAttribute(e)),n.version=this._getBufferAttribute(e).version;else{let t=this._getBufferAttribute(e);(n.version<t.version||t.usage===35048)&&(this.backend.updateAttribute(e),n.version=t.version)}}_getBufferAttribute(e){return e.isInterleavedBufferAttribute&&(e=e.data),e}};function k_(e){return e.index===null?e.attributes.position.version:e.index.version}function A_(e){return e.index===null?e.attributes.position.id:e.index.id}function j_(e){let t=[],n=e.index,r=e.attributes.position;if(n!==null){let e=n.array;for(let n=0,r=e.length;n<r;n+=3){let r=e[n+0],i=e[n+1],a=e[n+2];t.push(r,i,i,a,a,r)}}else{let e=r.array;for(let n=0,r=e.length/3-1;n<r;n+=3){let e=n+0,r=n+1,i=n+2;t.push(e,r,r,i,i,e)}}let i=new(r.count>=65535?ze:wn)(t,1);return i.version=k_(e),i.__id=A_(e),i}var M_=class extends T_{constructor(e,t){super(),this.attributes=e,this.info=t,this.wireframes=new WeakMap,this.attributeCall=new WeakMap,this._geometryDisposeListeners=new Map}has(e){let t=e.geometry;return super.has(t)&&this.get(t).initialized===!0}updateForRender(e){this.has(e)===!1&&this.initGeometry(e),this.updateAttributes(e)}initGeometry(e){let t=e.geometry,n=this.get(t);n.initialized=!0,this.info.memory.geometries++;let r=()=>{this.info.memory.geometries--;let n=t.index;n!==null&&this.attributes.delete(n);for(let e of Object.values(t.attributes))this.attributes.delete(e);let i=this.wireframes.get(t);i!==void 0&&this.attributes.delete(i);let a=new Set(Object.values(e.geometry.attributes));for(let t of e.getAttributes())a.has(t)===!1&&this.attributes.delete(t);t.removeEventListener(`dispose`,r),this._geometryDisposeListeners.delete(t)};t.addEventListener(`dispose`,r),this._geometryDisposeListeners.set(t,r)}updateAttributes(e){let t=e.getAttributes();for(let e of t)e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute?this.updateAttribute(e,E_.STORAGE):this.updateAttribute(e,E_.VERTEX);let n=this.getIndex(e);n!==null&&this.updateAttribute(n,E_.INDEX);let r=e.geometry.indirect;r!==null&&this.updateAttribute(r,E_.INDIRECT)}updateAttribute(e,t){let n=this.info.render.calls;e.isInterleavedBufferAttribute?this.attributeCall.get(e)===void 0?(this.attributes.update(e,t),this.attributeCall.set(e,n)):this.attributeCall.get(e.data)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e.data,n),this.attributeCall.set(e,n)):this.attributeCall.get(e)!==n&&(this.attributes.update(e,t),this.attributeCall.set(e,n))}getIndirect(e){return e.geometry.indirect}getIndirectOffset(e){return e.geometry.indirectOffset}getIndex(e){let{geometry:t,material:n}=e,r=t.index;if(n.wireframe===!0){let e=this.wireframes,n=e.get(t);n===void 0?(n=j_(t),e.set(t,n)):(n.version!==k_(t)||n.__id!==A_(t))&&(this.attributes.delete(n),n=j_(t),e.set(t,n)),r=n}return r}dispose(){for(let[e,t]of this._geometryDisposeListeners.entries())e.removeEventListener(`dispose`,t);this._geometryDisposeListeners.clear()}},N_=class{constructor(){this.autoReset=!0,this.frame=0,this.calls=0,this.render={calls:0,frameCalls:0,drawCalls:0,triangles:0,points:0,lines:0,timestamp:0},this.compute={calls:0,frameCalls:0,timestamp:0},this.memory={attributes:0,attributesSize:0,geometries:0,indexAttributes:0,indexAttributesSize:0,indirectStorageAttributes:0,indirectStorageAttributesSize:0,programs:0,programsSize:0,readbackBuffers:0,readbackBuffersSize:0,renderTargets:0,storageAttributes:0,storageAttributesSize:0,textures:0,texturesSize:0,uniformBuffers:0,uniformBuffersSize:0,total:0},this.memoryMap=new WeakMap}update(e,t,n){this.render.drawCalls++,e.isMesh||e.isSprite?this.render.triangles+=t/3*n:e.isPoints?this.render.points+=n*t:e.isLineSegments?this.render.lines+=t/2*n:e.isLine?this.render.lines+=n*(t-1):S(`WebGPUInfo: Unknown object type.`)}reset(){this.render.drawCalls=0,this.render.frameCalls=0,this.compute.frameCalls=0,this.render.triangles=0,this.render.points=0,this.render.lines=0}dispose(){this.reset(),this.calls=0,this.render.calls=0,this.compute.calls=0,this.render.timestamp=0,this.compute.timestamp=0;for(let e in this.memory)this.memory[e]=0;this.memoryMap=new WeakMap}createTexture(e){let t=this._getTextureMemorySize(e);this.memoryMap.set(e,t),this.memory.textures++,this.memory.total+=t,this.memory.texturesSize+=t}destroyTexture(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.textures--,this.memory.total-=t,this.memory.texturesSize-=t}_createAttribute(e,t){let n=this._getAttributeMemorySize(e);this.memoryMap.set(e,{size:n,type:t}),this.memory[t]++,this.memory.total+=n,this.memory[t+`Size`]+=n}createAttribute(e){this._createAttribute(e,`attributes`)}createIndexAttribute(e){this._createAttribute(e,`indexAttributes`)}createStorageAttribute(e){this._createAttribute(e,`storageAttributes`)}createIndirectStorageAttribute(e){this._createAttribute(e,`indirectStorageAttributes`)}destroyAttribute(e){let t=this.memoryMap.get(e);t&&(this.memoryMap.delete(e),this.memory[t.type]--,this.memory.total-=t.size,this.memory[t.type+`Size`]-=t.size)}createReadbackBuffer(e){let t=e.maxByteLength;this.memoryMap.set(e,{size:t,type:`readbackBuffers`}),this.memory.readbackBuffers++,this.memory.total+=t,this.memory.readbackBuffersSize+=t}destroyReadbackBuffer(e){let{size:t}=this.memoryMap.get(e);this.memoryMap.delete(e),this.memory.readbackBuffers--,this.memory.total-=t,this.memory.readbackBuffersSize-=t}createUniformBuffer(e){let t=e.byteLength;this.memoryMap.set(e,{size:t,type:`uniformBuffers`}),this.memory.uniformBuffers++,this.memory.total+=t,this.memory.uniformBuffersSize+=t}destroyUniformBuffer(e){let t=this.memoryMap.get(e);t&&(this.memoryMap.delete(e),this.memory.uniformBuffers--,this.memory.total-=t.size,this.memory.uniformBuffersSize-=t.size)}createProgram(e){let t=e.code.length;this.memoryMap.set(e,t),this.memory.programs++,this.memory.total+=t,this.memory.programsSize+=t}destroyProgram(e){let t=this.memoryMap.get(e)||0;this.memoryMap.delete(e),this.memory.programs--,this.memory.total-=t,this.memory.programsSize-=t}_getTextureMemorySize(e){if(e.isCompressedTexture)return 1;let t=1;e.type===1010||e.type===1009?t=1:e.type===1011||e.type===1012||e.type===1016?t=2:(e.type===1013||e.type===1014||e.type===1015)&&(t=4);let n=4;e.format===1021||e.format===1028||e.format===1029||e.format===1026||e.format===1027?n=1:e.format===1030||e.format===1031?n=2:(e.format===1022||e.format===1032)&&(n=3);let r=t*n;e.type===1017||e.type===1018?r=2:(e.type===1020||e.type===35902||e.type===35899)&&(r=4);let i=e.width||1,a=e.height||1,o=e.isCubeTexture?6:e.depth||1,s=i*a*o*r,c=e.mipmaps;if(c&&c.length>0){let e=0;for(let t=0;t<c.length;t++){let n=c[t];if(n.data)e+=n.data.byteLength;else{let s=n.width||Math.max(1,i>>t),c=n.height||Math.max(1,a>>t);e+=s*c*o*r}}s+=e}else e.generateMipmaps&&(s*=1.333);return Math.round(s)}_getAttributeMemorySize(e){return e.isInterleavedBufferAttribute&&(e=e.data),e.array?e.array.byteLength:e.count&&e.itemSize?e.count*e.itemSize*4:0}},P_=class{constructor(e){this.cacheKey=e,this.usedTimes=0}},F_=class extends P_{constructor(e,t,n){super(e),this.vertexProgram=t,this.fragmentProgram=n}},I_=class extends P_{constructor(e,t){super(e),this.computeProgram=t,this.isComputePipeline=!0}},L_=0,R_=class{constructor(e,t,n,r=null,i=null){this.id=L_++,this.code=e,this.stage=t,this.name=n,this.transforms=r,this.attributes=i,this.usedTimes=0}},z_=class extends T_{constructor(e,t,n){super(),this.backend=e,this.nodes=t,this.info=n,this.bindings=null,this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}getForCompute(e,t,n=null){let{backend:r}=this,i=this.get(e);if(this._needsComputeUpdate(e)){let a=i.pipeline;a&&(a.usedTimes--,a.computeProgram.usedTimes--);let o=this.nodes.getForCompute(e),s=this.programs.compute.get(o.computeShader);s===void 0&&(a&&a.computeProgram.usedTimes===0&&this._releaseProgram(a.computeProgram),s=new R_(o.computeShader,`compute`,e.name,o.transforms,o.nodeAttributes),this.programs.compute.set(o.computeShader,s),r.createProgram(s),this.info.createProgram(s));let c=this._getComputeCacheKey(e,s),l=this.caches.get(c);l===void 0&&(a&&a.usedTimes===0&&this._releasePipeline(a),l=this._getComputePipeline(e,s,c,t,n)),l.usedTimes++,s.usedTimes++,i.version=e.version,i.pipeline=l}return i.pipeline}getForRender(e,t=null){let{backend:n}=this,r=this.get(e);if(this._needsRenderUpdate(e)){let i=r.pipeline;i&&(i.usedTimes--,i.vertexProgram.usedTimes--,i.fragmentProgram.usedTimes--);let a=e.getNodeBuilderState(),o=e.material?e.material.name:``,s=this.programs.vertex.get(a.vertexShader);s===void 0&&(i&&i.vertexProgram.usedTimes===0&&this._releaseProgram(i.vertexProgram),s=new R_(a.vertexShader,`vertex`,o),this.programs.vertex.set(a.vertexShader,s),n.createProgram(s),this.info.createProgram(s));let c=this.programs.fragment.get(a.fragmentShader);c===void 0&&(i&&i.fragmentProgram.usedTimes===0&&this._releaseProgram(i.fragmentProgram),c=new R_(a.fragmentShader,`fragment`,o),this.programs.fragment.set(a.fragmentShader,c),n.createProgram(c),this.info.createProgram(c));let l=this._getRenderCacheKey(e,s,c),u=this.caches.get(l);u===void 0?(i&&i.usedTimes===0&&this._releasePipeline(i),u=this._getRenderPipeline(e,s,c,l,t)):e.pipeline=u,u.usedTimes++,s.usedTimes++,c.usedTimes++,r.pipeline=u}return r.pipeline}isReady(e){let t=this.get(e).pipeline;if(t===void 0)return!1;let n=this.backend.get(t);return n.pipeline!==void 0&&n.pipeline!==null}delete(e){let t=this.get(e).pipeline;return t&&(t.usedTimes--,t.usedTimes===0&&this._releasePipeline(t),t.isComputePipeline?(t.computeProgram.usedTimes--,t.computeProgram.usedTimes===0&&this._releaseProgram(t.computeProgram)):(t.fragmentProgram.usedTimes--,t.vertexProgram.usedTimes--,t.vertexProgram.usedTimes===0&&this._releaseProgram(t.vertexProgram),t.fragmentProgram.usedTimes===0&&this._releaseProgram(t.fragmentProgram))),super.delete(e)}dispose(){super.dispose(),this.caches=new Map,this.programs={vertex:new Map,fragment:new Map,compute:new Map}}updateForRender(e){this.getForRender(e)}_getComputePipeline(e,t,n,r,i){n||=this._getComputeCacheKey(e,t);let a=this.caches.get(n);return a===void 0&&(a=new I_(n,t),this.caches.set(n,a),this.backend.createComputePipeline(a,r,i)),a}_getRenderPipeline(e,t,n,r,i){r||=this._getRenderCacheKey(e,t,n);let a=this.caches.get(r);return a===void 0&&(a=new F_(r,t,n),this.caches.set(r,a),e.pipeline=a,this.backend.createRenderPipeline(e,i)),a}_getComputeCacheKey(e,t){return e.id+`,`+t.id}_getRenderCacheKey(e,t,n){return t.id+`,`+n.id+`,`+this.backend.getRenderCacheKey(e)}_releasePipeline(e){this.caches.delete(e.cacheKey)}_releaseProgram(e){let t=e.code,n=e.stage;this.programs[n].delete(t),this.info.destroyProgram(e)}_needsComputeUpdate(e){let t=this.get(e);return t.pipeline===void 0||t.version!==e.version}_needsRenderUpdate(e){return this.get(e).pipeline===void 0||this.backend.needsRenderUpdate(e)}},B_=class extends T_{constructor(e,t,n,r,i,a){super(),this.backend=e,this.textures=n,this.pipelines=i,this.attributes=r,this.nodes=t,this.info=a,this.pipelines.bindings=this}getForRender(e){let t=e.getBindings(),n=this.get(e);return n.initialized!==!0&&(this._createBindings(t),n.initialized=!0),t}getForCompute(e){let t=this.nodes.getForCompute(e).bindings,n=this.get(e);return(n.initialized!==!0||n.bindings!==t)&&(n.bindings!==void 0&&this._destroyBindings(n.bindings),this._createBindings(t),n.initialized=!0,n.bindings=t),t}updateForCompute(e){this._updateBindings(this.getForCompute(e))}updateForRender(e){this._updateBindings(this.getForRender(e))}updateSharedForRender(e){let t=this.getForRender(e);for(let e of t)for(let t of e.bindings)if((t.isNodeUniformsGroup===!0||t.isNodeUniformBuffer===!0)&&t.groupNode.shared===!0){if(this.nodes.updateGroup(t)===!1)continue;t.update()&&this.backend.updateBinding(t),t.updateRanges.length>0&&t.clearUpdateRanges()}}deleteForCompute(e){let t=this.get(e).bindings||this.nodes.getForCompute(e).bindings;this._destroyBindings(t),this.delete(e)}deleteForRender(e){let t=e.getBindings();this._destroyBindings(t),this.delete(e)}_createBindings(e){for(let t of e){let n=this.get(t);if(n.bindGroup===void 0){for(let e of t.bindings)if(e.isUniformBuffer)this.backend.createUniformBuffer(e),this.info.createUniformBuffer(e);else if(e.isSampledTexture)this.textures.updateTexture(e.texture);else if(e.isSampler)this.textures.updateSampler(e);else if(e.isStorageBuffer){let t=e.attribute,n=t.isIndirectStorageBufferAttribute?E_.INDIRECT:E_.STORAGE;this.attributes.update(t,n)}this.backend.createBindings(t,e,``),n.bindGroup=t,n.usedTimes=1}else n.usedTimes++}}_destroyBindings(e){for(let t of e){let e=this.get(t);if(e.usedTimes--,e.usedTimes===0){for(let e of t.bindings)if(e.isUniformBuffer)this.backend.destroyUniformBuffer(e),this.info.destroyUniformBuffer(e),e.release();else if(e.isSampler){if(e.isSampledTexture!==!0)this.backend.destroySampler(e);else if(e.texture!==null){let n=this.textures.get(e.texture);n.bindGroups!==void 0&&n.bindGroups.delete(t)}e.release()}this.backend.deleteBindGroupData(t),this.delete(t)}}}_updateBindings(e){for(let t of e)this._update(t,e)}_update(e,t){let{backend:n}=this,r=!1,i=!0,a=``,o=0;for(let t of e.bindings)if(this.nodes.updateGroup(t)!==!1){if(t.isStorageBuffer){let e=t.attribute,i=e.isIndirectStorageBufferAttribute?E_.INDIRECT:E_.STORAGE,o=n.get(t);this.attributes.update(e,i),o.attribute!==e&&(o.attribute=e,r=!0),a+=e.id+`,`}if(t.isUniformBuffer)t.update()&&n.updateBinding(t);else if(t.isSampledTexture){let s=t.update(),c=t.texture,l=this.textures.get(c);if(s&&(this.textures.updateTexture(c),t.generation!==l.generation&&(t.generation=l.generation,r=!0),l.bindGroups.add(e)),n.get(c).externalTexture!==void 0||l.isDefaultTexture?i=!1:(a+=c.id+`,`,o+=c.version),c.isStorageTexture===!0&&c.mipmapsAutoUpdate===!0){let e=this.get(c);t.store===!0?e.needsMipmap=!0:this.textures.needsMipmaps(c)&&e.needsMipmap===!0&&(this.backend.generateMipmaps(c),e.needsMipmap=!1)}}else if(t.isSampler&&t.update()){let e=this.textures.updateSampler(t);t.samplerKey!==e&&(t.samplerKey=e,r=!0)}t.isBuffer&&t.updateRanges.length>0&&t.clearUpdateRanges()}r===!0&&this.backend.updateBindings(e,t,i?a:``,o)}},V_=Object.freeze([]);function H_(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:e.z-t.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function U_(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:t.z-e.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function W_(e){return(e.transmission>0||e.transmissionNode&&e.transmissionNode.isNode)&&e.side===2&&e.forceSinglePass===!1}var G_=class{constructor(e,t,n){this.renderItems=[],this.renderItemsIndex=0,this.opaque=[],this.transparentDoublePass=[],this.transparent=[],this.bundles=[],this.lighting=e,this.lightsNode=e.getNode(t),this.lightsArray=[],this.scene=t,this.camera=n,this.occlusionQueryCount=0,this.frameId=-1,this._lastOcclusionObject=null}begin(){return this.renderItemsIndex=0,this.opaque.length=0,this.transparentDoublePass.length=0,this.transparent.length=0,this.bundles.length=0,this.lightsArray.length=0,this.occlusionQueryCount=0,this}getNextRenderItem(e,t,n,r,i,a,o){let s=this.renderItems[this.renderItemsIndex];return s===void 0?(s={id:e.id,object:e,geometry:t,material:n,groupOrder:r,renderOrder:e.renderOrder,z:i,group:a,clippingContext:o},this.renderItems[this.renderItemsIndex]=s):(s.id=e.id,s.object=e,s.geometry=t,s.material=n,s.groupOrder=r,s.renderOrder=e.renderOrder,s.z=i,s.group=a,s.clippingContext=o),this.renderItemsIndex++,s}push(e,t,n,r,i,a,o){this.camera.reversedDepth===!0&&(i=-i);let s=this.getNextRenderItem(e,t,n,r,i,a,o);e.occlusionTest===!0&&this._lastOcclusionObject!==e&&(this.occlusionQueryCount++,this._lastOcclusionObject=e),n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(W_(n)&&this.transparentDoublePass.push(s),this.transparent.push(s)):this.opaque.push(s)}unshift(e,t,n,r,i,a,o){let s=this.getNextRenderItem(e,t,n,r,i,a,o);n.transparent===!0||n.transmission>0||n.transmissionNode&&n.transmissionNode.isNode||n.backdropNode&&n.backdropNode.isNode?(W_(n)&&this.transparentDoublePass.unshift(s),this.transparent.unshift(s)):this.opaque.unshift(s)}pushBundle(e){this.bundles.push(e)}pushLight(e){this.lightsArray.push(e)}sort(e,t){this.opaque.length>1&&this.opaque.sort(e||H_),this.transparentDoublePass.length>1&&this.transparentDoublePass.sort(t||U_),this.transparent.length>1&&this.transparent.sort(t||U_)}finish(){this.lightsNode.setLights(this.lighting.enabled?this.lightsArray:V_);for(let e=this.renderItemsIndex,t=this.renderItems.length;e<t;e++){let t=this.renderItems[e];if(t.id===null)break;K_(t)}this._lastOcclusionObject=null}clear(){for(let e=0,t=this.renderItems.length;e<t;e++){let t=this.renderItems[e];if(t.id===null)break;K_(t)}this.opaque.length=0,this.transparentDoublePass.length=0,this.transparent.length=0,this.bundles.length=0}};function K_(e){e.id=null,e.object=null,e.geometry=null,e.material=null,e.groupOrder=null,e.renderOrder=null,e.z=null,e.group=null,e.clippingContext=null}var q_=[],J_=class{constructor(){this.lists=new v_,this._activeLists=new Set,this._frameId=-1}get(e,t,n){let r=this.lists;q_[0]=e,q_[1]=t,q_[2]=n;let i=r.get(q_);return i===void 0&&(i=new G_(n,e,t),r.set(q_,i)),q_[0]=null,q_[1]=null,q_[2]=null,i.frameId=this._frameId,this._activeLists.add(i),i}update(e){if(e!==this._frameId){this._frameId=e;for(let t of this._activeLists)e-t.frameId>10&&(t.clear(),this._activeLists.delete(t))}}dispose(){this.lists=new v_,this._activeLists.clear(),this._frameId=-1}},Y_=0,X_=class{constructor(){this.id=Y_++,this.mrt=null,this.color=!0,this.clearColor=!0,this.clearColorValue={r:0,g:0,b:0,a:1},this.depth=!0,this.clearDepth=!0,this.clearDepthValue=1,this.stencil=!1,this.clearStencil=!0,this.clearStencilValue=1,this.viewport=!1,this.viewportValue=new kn,this.scissor=!1,this.scissorValue=new kn,this.renderTarget=null,this.textures=null,this.depthTexture=null,this.activeCubeFace=0,this.activeMipmapLevel=0,this.sampleCount=1,this.width=0,this.height=0,this.occlusionQueryCount=0,this.clippingContext=null,this.camera=null,this.fullscreenPass=!1,this.isRenderContext=!0}getCacheKey(){return Z_(this)}};function Z_(e){let{textures:t,activeCubeFace:n,activeMipmapLevel:r}=e,i=[n,r];for(let e of t)i.push(e.id);return Vn(i)}var Q_=class{constructor(e){this.renderer=e,this._renderContexts={}}get(e=null,t=null,n=0){let r;if(e===null)r=`default`;else{let t=e.texture.format,n=e.texture.type;r=`${e.textures.length}:${t}:${n}:${e.samples}:${e.depthBuffer}:${e.stencilBuffer}`}let i=t===null?`default`:t.id,a=r+`-`+i+`-`+n,o=this._renderContexts[a];return o===void 0&&(o=new X_,o.mrt=t,this._renderContexts[a]=o),e!==null&&(o.sampleCount=e.samples===0?1:e.samples),o.clearDepthValue=this.renderer.getClearDepth(),o.clearStencilValue=this.renderer.getClearStencil(),o}dispose(){this._renderContexts={}}},$_=new x,ev=class extends T_{constructor(e,t,n){super(),this.renderer=e,this.backend=t,this.info=n,this._htmlTextures=new Set}updateRenderTarget(e,t=0){let n=this.get(e),r=e.samples===0?1:e.samples,a=n.depthTextureMips||={},o=e.textures,s=this.getSize(o[0]),l=s.width>>t,u=s.height>>t,d=e.depthTexture||a[t],f=e.depthBuffer===!0||e.stencilBuffer===!0,p=!1,m=d!==void 0&&d.image!==void 0&&d.image.depth>1,h=s.depth>1&&(e.useArrayDepthTexture||e.multiview||m);d===void 0&&f&&(d=new b,d.format=e.stencilBuffer?Je:c,d.type=e.stencilBuffer?i:_e,d.image.width=l,d.image.height=u,d.image.depth=s.depth,d.renderTarget=e,a[t]=d),d&&(d.isArrayTexture=h),(n.width!==s.width||s.height!==n.height)&&(p=!0,d&&d.renderTarget===e&&(d.needsUpdate=!0,d.image.width=l,d.image.height=u,d.image.depth=h?s.depth:1)),n.width=s.width,n.height=s.height,n.textures=o,n.depthTexture=d||null,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,n.renderTarget=e,n.sampleCount!==r&&(p=!0,d&&d.renderTarget===e&&(d.needsUpdate=!0),n.sampleCount=r);let g={sampleCount:r};if(e.isXRRenderTarget!==!0){for(let e=0;e<o.length;e++){let t=o[e];p&&(t.needsUpdate=!0),this.updateTexture(t,g)}d&&this.updateTexture(d,g)}n.initialized!==!0&&(n.initialized=!0,this.info.memory.renderTargets++,n.onDispose=()=>{this._destroyRenderTarget(e)},e.addEventListener(`dispose`,n.onDispose))}updateTexture(e,t={}){let n=this.get(e);if(n.initialized===!0&&n.version===e.version)return;let r=e.isRenderTargetTexture||e.isDepthTexture||e.isFramebufferTexture,i=this.backend;if(r&&n.initialized===!0&&i.destroyTexture(e),e.isFramebufferTexture){let t=this.renderer.getRenderTarget();e.type=t?t.texture.type:we}if(e.isHTMLTexture&&e.image){let t=this.renderer.domElement;if(`requestPaint`in t){if(t.hasAttribute(`layoutsubtree`)||t.setAttribute(`layoutsubtree`,`true`),e.image.parentNode!==t&&t.appendChild(e.image),this._htmlTextures.size===0){let e=this._htmlTextures;t.onpaint=t=>{let n=t&&t.changedElements;for(let t of e)(!n||n.includes(t.image))&&(t.needsUpdate=!0)}}this._htmlTextures.add(e)}}let{width:a,height:o,depth:s}=this.getSize(e);if(t.width=a,t.height=o,t.depth=s,t.needsMipmaps=this.needsMipmaps(e),t.levels=t.needsMipmaps?this.getMipLevels(e,a,o):1,e.isCubeTexture&&e.mipmaps.length>0&&t.levels++,r||e.isStorageTexture===!0||e.isExternalTexture===!0)i.createTexture(e,t),n.generation=e.version;else if(e.version>0){let r=e.image;if(r===void 0)C(`Renderer: Texture marked for update but image is undefined.`);else if(r.complete===!1)C(`Renderer: Texture marked for update but image is incomplete.`);else{if(e.images){let n=[];for(let t of e.images)n.push(t);t.images=n}else t.image=r;(n.isDefaultTexture===void 0||n.isDefaultTexture===!0)&&(i.createTexture(e,t),n.isDefaultTexture=!1,n.generation=e.version),e.source.dataReady===!0&&i.updateTexture(e,t);let a=e.isStorageTexture===!0&&e.mipmapsAutoUpdate===!1;t.needsMipmaps&&e.mipmaps.length===0&&!a&&i.generateMipmaps(e),e.onUpdate&&e.onUpdate(e)}}else i.createDefaultTexture(e),n.isDefaultTexture=!0,n.generation=e.version;n.initialized!==!0&&(n.initialized=!0,n.generation=e.version,n.bindGroups=new Set,this.info.createTexture(e),e.isVideoTexture&&Zt.enabled===!0&&Zt.getTransfer(e.colorSpace)!==`srgb`&&C(`WebGPURenderer: Video textures must use a color space with a sRGB transfer function, e.g. SRGBColorSpace.`),n.onDispose=()=>{this._destroyTexture(e)},e.addEventListener(`dispose`,n.onDispose)),n.version=e.version}updateSampler(e){return this.backend.updateSampler(e)}getSize(e,t=$_){let n=e.images?e.images[0]:e.image;return n?(n.image!==void 0&&(n=n.image),e.isHTMLTexture?(t.width=n.offsetWidth||1,t.height=n.offsetHeight||1,t.depth=1):typeof HTMLVideoElement<`u`&&n instanceof HTMLVideoElement?(t.width=n.videoWidth||1,t.height=n.videoHeight||1,t.depth=1):typeof VideoFrame<`u`&&n instanceof VideoFrame?(t.width=n.displayWidth||1,t.height=n.displayHeight||1,t.depth=1):(t.width=n.width||1,t.height=n.height||1,t.depth=e.isCubeTexture?6:n.depth||1)):t.width=t.height=t.depth=1,t}getMipLevels(e,t,n){let r;return r=e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture===!0?1:Math.floor(Math.log2(Math.max(t,n)))+1,r}needsMipmaps(e){return e.generateMipmaps===!0||e.mipmaps.length>0}_destroyRenderTarget(e){if(this.has(e)===!0){let t=this.get(e),n=t.textures,r=t.depthTexture;e.removeEventListener(`dispose`,t.onDispose);for(let e=0;e<n.length;e++)this._destroyTexture(n[e]);r&&r.renderTarget===e&&this._destroyTexture(r),this.delete(e),this.backend.delete(e),this.info.memory.renderTargets--}}_destroyTexture(e){if(this.has(e)===!0){let t=this.get(e);e.removeEventListener(`dispose`,t.onDispose);let n=t.isDefaultTexture;if(this.backend.destroyTexture(e,n),t.bindGroups)for(let n of t.bindGroups){let t=this.backend.get(n);t.groups=void 0,t.versions=void 0;for(let t of n.bindings)t.isSampler&&t.texture===e&&(t.isSampledTexture!==!0&&this.backend.destroySampler(t),t.reset(),t.release())}this._htmlTextures.delete(e),this.delete(e),this.info.destroyTexture(e)}}},tv=class extends Et{constructor(e,t,n,r=1){super(e,t,n),this.a=r}set(e,t,n,r=1){return this.a=r,super.set(e,t,n)}copy(e){return e.a!==void 0&&(this.a=e.a),super.copy(e)}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b,yield this.a}},nv=class extends gs{static get type(){return`OverrideContextNode`}constructor(e,t=null){super(t,{overrideNodes:e}),this.isOverrideContextNode=!0}getFlowContextData(){let e=[];this.traverse(t=>{t.isOverrideContextNode===!0&&e.push(t.value.overrideNodes)});let t=new Map(e.flatMap(e=>Array.from(e.entries()))),n=super.getFlowContextData();return n.overrideNodes=t,n}};function rv(e,t=null,n=null){if(t&&t.isNode){let e=t;t=()=>e}return new nv(new Map([[e,t]]),n)}E(`overrideNode`,(e,t,n)=>rv(t,n,e));function iv(e,t=null){let n=new Map;for(let[t,r]of e){let e=r===null?null:typeof r==`function`?r:()=>r;n.set(t,e)}return new nv(n,t)}E(`overrideNodes`,(e,t)=>iv(t,e));var av=class extends z{static get type(){return`ParameterNode`}constructor(e,t=null){super(e,t),this.isParameterNode=!0}getMemberType(e,t){let n=this.getNodeType(e),r=e.getStructTypeNode(n),i;return r===null?(S(`TSL: Member "${t}" not found in struct "${n}".`,new Rn),i=`float`):i=r.getMemberType(e,t),i}getHash(){return String(this.id)}generate(){return this.name}},ov=(e,t)=>new av(e,t),sv=class extends T{static get type(){return`StackNode`}constructor(e=null){super(),this.nodes=[],this.outputNode=null,this.parent=e,this._currentCond=null,this._expressionNode=null,this._currentNode=null,this._nodeDataLibrary=new Map,this.isStackNode=!0}getElementType(e){return this.outputNode?this.outputNode.getElementType(e):`void`}generateNodeType(e){return this.outputNode?this.outputNode.getNodeType(e):`void`}getMemberType(e,t){return this.outputNode?this.outputNode.getMemberType(e,t):`void`}addToStack(e,t=-1){if(e.isNode!==!0)return S(`TSL: Invalid node added to stack.`,new Rn),this;if(t===-1){if(this._currentNode){let e=this._nodeDataLibrary.get(this._currentNode);e===void 0&&(e={delta:0},this._nodeDataLibrary.set(this._currentNode,e)),e.delta++,t=this.nodes.indexOf(this._currentNode)+e.delta}else t=this.nodes.length}return this.nodes.splice(t,0,e),this}addToStackBefore(e){let t=this._currentNode?this.nodes.indexOf(this._currentNode):0;return this.addToStack(e,t)}If(e,t){let n=new ri(t);return this._currentCond=hs(e,n),this.addToStack(this._currentCond)}ElseIf(e,t){let n=hs(e,new ri(t));return this._currentCond.elseNode=n,this._currentCond=n,this}Else(e){return this._currentCond.elseNode=new ri(e),this}Switch(e){return this._expressionNode=D(e),this}Case(...e){let t=[];if(e.length>=2)for(let n=0;n<e.length-1;n++)t.push(this._expressionNode.equal(D(e[n])));else S(`TSL: Invalid parameter length. Case() requires at least two parameters.`,new Rn);let n=e[e.length-1],r=new ri(n),i=t[0];for(let e=1;e<t.length;e++)i=i.or(t[e]);let a=hs(i,r);return this._currentCond===null?(this._currentCond=a,this.addToStack(this._currentCond)):(this._currentCond.elseNode=a,this._currentCond=a,this)}Default(e){return this.Else(e),this}setup(e){let t=e.getNodeProperties(this),n=0;for(let r of this.getChildren())r.isVarNode&&r.isIntent(e)&&r.isAssign(e)!==!0||(t[`node`+n++]=r);return t.outputNode||null}build(e,...t){let n=di(),r=e.buildStage;ui(this),e.setActiveStack(this);for(let t=0;t<this.nodes.length;t++){let n=this.nodes[t],i=this._currentNode;if(this._currentNode=n,!(n.isVarNode&&n.isIntent(e)&&n.isAssign(e)!==!0)){if(r===`setup`)n.build(e);else if(r===`analyze`)n.build(e,this);else if(r===`generate`){let t=e.getDataFromNode(n,`any`).stages,r=t&&t[e.shaderStage];if(n.isVarNode&&r&&r.length===1&&r[0]&&r[0].isStackNode)continue;n.build(e,`void`)}this._currentNode=i}}let i;if(this.outputNode){let n=this.outputNode.build(e,...t);(e.buildStage!==`generate`||this.outputNode.getNodeType(e)!==`void`)&&(i=n)}else i=super.build(e,...t);return ui(n),e.removeActiveStack(this),i}},cv=O(sv).setParameterLength(0,1);function lv(e){return Object.entries(e).map(([e,t])=>typeof t==`string`?{name:e,type:t,atomic:!1}:{name:e,type:t.type,atomic:t.atomic||!1})}var uv=class extends T{static get type(){return`StructTypeNode`}constructor(e,t=null){super(`struct`),this.membersLayout=lv(e),this.name=t,this.isStructTypeNode=!0}getLength(){let e=1,t=0;for(let n of this.membersLayout){let r=n.type,i=Jn(r),a=Yn(r);e=Math.max(e,a);let o=t%e%a;o!==0&&(t+=a-o),t+=i}return Math.ceil(t/e)*e}getMemberType(e,t){let n=this.membersLayout.find(e=>e.name===t);return n?n.type:`void`}generateNodeType(e){return e.getStructTypeFromNode(this,this.membersLayout,this.name).name}setup(e){e.getStructTypeFromNode(this,this.membersLayout,this.name),e.addInclude(this)}generate(e){return this.getNodeType(e)}},dv=class extends T{static get type(){return`StructNode`}constructor(e,t){super(`vec3`),this.structTypeNode=e,this.values=t,this.isStructNode=!0}generateNodeType(e){return this.structTypeNode.getNodeType(e)}getMemberType(e,t){return this.structTypeNode.getMemberType(e,t)}_getChildren(){let e=super._getChildren(),t=e.find(e=>e.childNode===this.structTypeNode);return e.splice(e.indexOf(t),1),e.push(t),e}generate(e){let t=e.getVarFromNode(this),n=t.type,r=e.getPropertyName(t);return e.addLineFlowCode(`${r} = ${e.generateStruct(n,this.structTypeNode.membersLayout,this.values)}`,this),t.name}},fv=(e,t=null)=>{let n=new uv(e,t);return si((...t)=>{let r=null;if(t.length>0){if(nr(t)){r={};let n=Object.keys(e);for(let e=0;e<t.length;e++)r[n[e]]=D(t[e])}else r=t[0]}return new dv(n,r)},n)},pv=class extends T{static get type(){return`OutputStructNode`}constructor(...e){super(),this.members=e,this.isOutputStructNode=!0}generateNodeType(){return`OutputType`}generate(e){let t=e.getDataFromNode(this);if(t.membersLayout===void 0){let n=this.members,r=[];for(let t=0;t<n.length;t++){let i=`m`+t,a=n[t].getNodeType(e);r.push({name:i,type:a,index:t})}t.membersLayout=r,t.structType=e.getOutputStructTypeFromNode(this,t.membersLayout)}let n=e.getOutputStructName(),r=this.members,i=n===``?``:n+`.`;for(let n=0;n<r.length;n++){let a=r[n].build(e,t.membersLayout[n].type);e.addLineFlowCode(`${i}m${n} = ${a}`,this)}return n}},mv=O(pv),hv=class{constructor(e=1){this.blending=e,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.premultiplyAlpha=!1}copy(e){return this.blending=e.blending,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.premultiplyAlpha=e.premultiplyAlpha,this}clone(){return new this.constructor().copy(this)}},gv=new hv(0),_v=new hv(6);function vv(e,t){for(let n=0;n<e.length;n++)if(e[n].name===t)return n;return-1}var yv=class extends pv{static get type(){return`MRTNode`}constructor(e){super(),this.outputNodes=e,this.blendModes={output:_v},this.clearColors={},this.isMRTNode=!0}setBlendMode(e,t){return this.blendModes[e]=t,this}getBlendMode(e){return this.blendModes[e]||gv}setClearColor(e,t,n=1){let r=this.clearColors[e]||(this.clearColors[e]=new tv);return r.set(t),r.a=n,this}getClearColor(e){return this.clearColors[e]||null}has(e){return this.outputNodes[e]!==void 0}get(e){return this.outputNodes[e]}merge(e){let t={...this.outputNodes,...e.outputNodes},n={...this.blendModes,...e.blendModes},r={...this.clearColors,...e.clearColors},i=bv(t);return i.blendModes=n,i.clearColors=r,i}setup(e){let t=this.outputNodes,n=e.renderer.getRenderTarget(),r=[],i=n.textures;for(let n in t){let a=vv(i,n);if(a===-1)continue;let o=e.getOutputType(a);r[a]=t[n].convert(o)}return this.members=r,super.setup(e)}},bv=O(yv),xv=class extends hr{static get type(){return`BitcastNode`}constructor(e,t,n=null){super(),this.valueNode=e,this.conversionType=t,this.inputType=n,this.isBitcastNode=!0}generateNodeType(e){if(this.inputType!==null){let t=this.valueNode.getNodeType(e),n=e.getTypeLength(t);return e.getTypeFromLength(n,this.conversionType)}return this.conversionType}generate(e){let t=this.getNodeType(e),n=``;if(this.inputType!==null){let t=this.valueNode.getNodeType(e);n=e.getTypeLength(t)===1?this.inputType:e.changeComponentType(t,this.inputType)}else n=this.valueNode.getNodeType(e);return`${e.getBitcastMethod(t,n)}( ${this.valueNode.build(e,n)} )`}},Sv=A(xv).setParameterLength(2),Cv=e=>new xv(e,`int`,`float`),wv=e=>new xv(e,`uint`,`float`),Tv=e=>new xv(e,`float`,`int`),Ev=e=>new xv(e,`float`,`uint`),Dv={},Ov=class e extends G{static get type(){return`BitcountNode`}constructor(e,t){super(e,t),this.isBitcountNode=!0}_resolveElementType(e,t,n){n===`int`?t.assign(Sv(e,`uint`)):t.assign(e)}_returnDataNode(e){switch(e){case`uint`:return F;case`int`:return P;case`uvec2`:return _i;case`uvec3`:return bi;case`uvec4`:return Ci;case`ivec2`:return gi;case`ivec3`:return yi;case`ivec4`:return Si}}_createTrailingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return j(([e])=>{M(e.equal(F(0)),()=>F(32));let r=F(0);this._resolveElementType(e,r,t);let i=wv(N(r.bitAnd(ko(r)))).shiftRight(23).sub(127);return n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createLeadingZerosBaseLayout(e,t){let n=this._returnDataNode(t);return j(([e])=>{M(e.equal(F(0)),()=>F(32));let r=F(0),i=F(0);return this._resolveElementType(e,r,t),M(r.shiftRight(16).equal(0),()=>{i.addAssign(16),r.shiftLeftAssign(16)}),M(r.shiftRight(24).equal(0),()=>{i.addAssign(8),r.shiftLeftAssign(8)}),M(r.shiftRight(28).equal(0),()=>{i.addAssign(4),r.shiftLeftAssign(4)}),M(r.shiftRight(30).equal(0),()=>{i.addAssign(2),r.shiftLeftAssign(2)}),M(r.shiftRight(31).equal(0),()=>{i.addAssign(1)}),n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createOneBitsBaseLayout(e,t){let n=this._returnDataNode(t);return j(([e])=>{let r=F(0);this._resolveElementType(e,r,t),r.assign(r.sub(r.shiftRight(F(1)).bitAnd(F(1431655765)))),r.assign(r.bitAnd(F(858993459)).add(r.shiftRight(F(2)).bitAnd(F(858993459))));let i=r.add(r.shiftRight(F(4))).bitAnd(F(252645135)).mul(F(16843009)).shiftRight(F(24));return n(i)}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}_createMainLayout(e,t,n,r){let i=this._returnDataNode(t);return j(([e])=>{if(n===1)return i(r(e));{let t=i(0),a=[`x`,`y`,`z`,`w`];for(let i=0;i<n;i++){let n=a[i];t[n].assign(r(e[n]))}return t}}).setLayout({name:e,type:t,inputs:[{name:`value`,type:t}]})}setup(t){let{method:n,aNode:r}=this,{renderer:i}=t;if(i.backend.isWebGPUBackend)return super.setup(t);let a=this.getInputType(t),o=t.getElementType(a),s=t.getTypeLength(a),c=`${n}_base_${o}`,l=`${n}_${a}`,u=Dv[c];if(u===void 0){switch(n){case e.COUNT_LEADING_ZEROS:u=this._createLeadingZerosBaseLayout(c,o);break;case e.COUNT_TRAILING_ZEROS:u=this._createTrailingZerosBaseLayout(c,o);break;case e.COUNT_ONE_BITS:u=this._createOneBitsBaseLayout(c,o)}Dv[c]=u}let d=Dv[l];return d===void 0&&(d=this._createMainLayout(l,a,s,u),Dv[l]=d),j(()=>d(r))()}static get COUNT_TRAILING_ZEROS(){return`countTrailingZeros`}static get COUNT_LEADING_ZEROS(){return`countLeadingZeros`}static get COUNT_ONE_BITS(){return`countOneBits`}},kv=A(Ov,Ov.COUNT_TRAILING_ZEROS).setParameterLength(1),Av=A(Ov,Ov.COUNT_LEADING_ZEROS).setParameterLength(1),jv=A(Ov,Ov.COUNT_ONE_BITS).setParameterLength(1),Mv=j(([e])=>{let t=e.toUint().mul(747796405).add(2891336453),n=t.shiftRight(t.shiftRight(28).add(4)).bitXor(t).mul(277803737);return n.shiftRight(22).bitXor(n).toFloat().mul(1/2**32)}),Nv=(e,t)=>Jo(W(4,e.mul(U(1,e))),t),Pv=(e,t)=>hs(e.lessThan(.5),Jo(W(2,e),t).mul(.5),U(1,Jo(W(2,U(1,e)),t).mul(.5))),Fv=(e,t,n)=>Jo(Ta(Jo(e,t),wa(Jo(e,t),Jo(U(1,e),n))),Ta(1,t)),Iv=(e,t)=>{let n=Eo(Ya.mul(t.mul(e).sub(1))).max(1e-6).toConst();return mo(n).div(n)},Lv=class extends hr{static get type(){return`PackFloatNode`}constructor(e,t){super(),this.vectorNode=t,this.encoding=e,this.layout=`2x16`,this.isPackFloatNode=!0}generateNodeType(){return`uint`}generate(e){let t=this.vectorNode.getNodeType(e);return`${e.getFloatPackingMethod(this.encoding,this.layout)}(${this.vectorNode.build(e,t)})`}},Rv=A(Lv,`snorm`).setParameterLength(1),zv=A(Lv,`unorm`).setParameterLength(1),Bv=A(Lv,`float16`).setParameterLength(1),Vv=A(Lv,`snorm`,null,{layout:`4x8`}).setParameterLength(1),Hv=A(Lv,`unorm`,null,{layout:`4x8`}).setParameterLength(1),Uv=class e extends hr{static get type(){return`Packed4x8IntegerNode`}constructor(e,t,n=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.isPacked4x8IntegerNode=!0}getInputType(){let t=this.method;return t===e.PACK4X_I8||t===e.PACK4X_I8_CLAMP?`ivec4`:t===e.PACK4X_U8||t===e.PACK4X_U8_CLAMP?`uvec4`:`uint`}generateNodeType(){let t=this.method;return t===e.DOT4_I8_PACKED?`int`:t===e.UNPACK4X_I8?`ivec4`:t===e.UNPACK4X_U8?`uvec4`:`uint`}_getEmulatedFn(){switch(this.method){case e.DOT4_U8_PACKED:return Zv;case e.DOT4_I8_PACKED:return Qv;case e.PACK4X_I8:return Gv;case e.PACK4X_U8:return Wv;case e.PACK4X_I8_CLAMP:return qv;case e.PACK4X_U8_CLAMP:return Kv;case e.UNPACK4X_I8:return Xv;case e.UNPACK4X_U8:return Jv}}setup(e){if(e.renderer.backend.isWebGPUBackend===!0&&typeof navigator<`u`&&navigator.gpu!==void 0&&navigator.gpu.wgslLanguageFeatures!==void 0&&navigator.gpu.wgslLanguageFeatures.has(`packed_4x8_integer_dot_product`))return super.setup(e);let{aNode:t,bNode:n}=this,r=this._getEmulatedFn();return n===null?r(t):r(t,n)}generate(e,t){if(e.getNodeProperties(this).outputNode)return super.generate(e,t);let n=this.getNodeType(e),r=this.getInputType(),i=[this.aNode.build(e,r)];return this.bNode!==null&&i.push(this.bNode.build(e,r)),e.format(`${this.method}( ${i.join(`, `)} )`,n,t)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}static get DOT4_U8_PACKED(){return`dot4U8Packed`}static get DOT4_I8_PACKED(){return`dot4I8Packed`}static get PACK4X_I8(){return`pack4xI8`}static get PACK4X_U8(){return`pack4xU8`}static get PACK4X_I8_CLAMP(){return`pack4xI8Clamp`}static get PACK4X_U8_CLAMP(){return`pack4xU8Clamp`}static get UNPACK4X_I8(){return`unpack4xI8`}static get UNPACK4X_U8(){return`unpack4xU8`}},Wv=j(([e])=>{let t=e.x.bitAnd(F(255)),n=e.y.bitAnd(F(255)),r=e.z.bitAnd(F(255)),i=e.w.bitAnd(F(255));return t.bitOr(n.shiftLeft(F(8))).bitOr(r.shiftLeft(F(16))).bitOr(i.shiftLeft(F(24)))}).setLayout({name:`tsl_packed4x8_pack4xU8`,type:`uint`,inputs:[{name:`v`,type:`uvec4`}]}),Gv=j(([e])=>Wv(Ci(e))).setLayout({name:`tsl_packed4x8_pack4xI8`,type:`uint`,inputs:[{name:`v`,type:`ivec4`}]}),Kv=j(([e])=>Wv(rs(e,Ci(0),Ci(255)))).setLayout({name:`tsl_packed4x8_pack4xU8Clamp`,type:`uint`,inputs:[{name:`v`,type:`uvec4`}]}),qv=j(([e])=>Gv(rs(e,Si(-128),Si(127)))).setLayout({name:`tsl_packed4x8_pack4xI8Clamp`,type:`uint`,inputs:[{name:`v`,type:`ivec4`}]}),Jv=j(([e])=>Ci(e.bitAnd(F(255)),e.shiftRight(F(8)).bitAnd(F(255)),e.shiftRight(F(16)).bitAnd(F(255)),e.shiftRight(F(24)).bitAnd(F(255)))).setLayout({name:`tsl_packed4x8_unpack4xU8`,type:`uvec4`,inputs:[{name:`v`,type:`uint`}]});function Yv(e,t){return P(e.shiftLeft(F(24-t))).shiftRight(P(24))}var Xv=j(([e])=>Si(Yv(e,0),Yv(e,8),Yv(e,16),Yv(e,24))).setLayout({name:`tsl_packed4x8_unpack4xI8`,type:`ivec4`,inputs:[{name:`v`,type:`uint`}]}),Zv=j(([e,t])=>{let n=Jv(e),r=Jv(t);return n.x.mul(r.x).add(n.y.mul(r.y)).add(n.z.mul(r.z)).add(n.w.mul(r.w))}).setLayout({name:`tsl_packed4x8_dot4U8Packed`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`}]}),Qv=j(([e,t])=>{let n=Xv(e),r=Xv(t);return n.x.mul(r.x).add(n.y.mul(r.y)).add(n.z.mul(r.z)).add(n.w.mul(r.w))}).setLayout({name:`tsl_packed4x8_dot4I8Packed`,type:`int`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`}]}),$v=A(Uv,Uv.DOT4_U8_PACKED).setParameterLength(2),ey=A(Uv,Uv.DOT4_I8_PACKED).setParameterLength(2),ty=A(Uv,Uv.PACK4X_I8).setParameterLength(1),ny=A(Uv,Uv.PACK4X_U8).setParameterLength(1),ry=A(Uv,Uv.PACK4X_I8_CLAMP).setParameterLength(1),iy=A(Uv,Uv.PACK4X_U8_CLAMP).setParameterLength(1),ay=A(Uv,Uv.UNPACK4X_I8).setParameterLength(1),oy=A(Uv,Uv.UNPACK4X_U8).setParameterLength(1),sy=class extends hr{static get type(){return`UnpackFloatNode`}constructor(e,t){super(),this.uintNode=t,this.encoding=e,this.layout=`2x16`,this.isUnpackFloatNode=!0}generateNodeType(){return this.layout===`4x8`?`vec4`:`vec2`}generate(e){let t=this.uintNode.getNodeType(e);return`${e.getFloatUnpackingMethod(this.encoding,this.layout)}(${this.uintNode.build(e,t)})`}},cy=A(sy,`snorm`).setParameterLength(1),ly=A(sy,`unorm`).setParameterLength(1),uy=A(sy,`float16`).setParameterLength(1),dy=A(sy,`snorm`,null,{layout:`4x8`}).setParameterLength(1),fy=A(sy,`unorm`,null,{layout:`4x8`}).setParameterLength(1),py=j(([e])=>e.fract().sub(.5).abs()).setLayout({name:`tri`,type:`float`,inputs:[{name:`x`,type:`float`}]}),my=j(([e])=>L(py(e.z.add(py(e.y.mul(1)))),py(e.z.add(py(e.x.mul(1)))),py(e.y.add(py(e.x.mul(1)))))).setLayout({name:`tri3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),hy=j(([e,t,n])=>{let r=L(e).toVar(),i=N(1.4).toVar(),a=N(0).toVar(),o=L(r).toVar();return X({start:N(0),end:N(3),type:`float`,condition:`<=`},()=>{let e=L(my(o.mul(2))).toVar();r.addAssign(e.add(n.mul(N(.1).mul(t)))),o.mulAssign(1.8),i.mulAssign(1.5),r.mulAssign(1.2);let s=N(py(r.z.add(py(r.x.add(py(r.y)))))).toVar();a.addAssign(s.div(i)),o.addAssign(.14)}),a}).setLayout({name:`triNoise3D`,type:`float`,inputs:[{name:`position`,type:`vec3`},{name:`speed`,type:`float`},{name:`time`,type:`float`}]}),gy=class extends T{static get type(){return`FunctionOverloadingNode`}constructor(e=[],...t){super(),this.functionNodes=e,this.parametersNodes=t,this._candidateFn=null,this.global=!0}generateNodeType(e){return this.getCandidateFn(e).shaderNode.layout.type}getCandidateFn(e){let t=this.parametersNodes,n=this._candidateFn;if(n===null){let r=null,i=-1;for(let n of this.functionNodes){let a=n.shaderNode.layout;if(a===null)throw Error(`THREE.FunctionOverloadingNode: FunctionNode must be a layout.`);let o=a.inputs;if(t.length===o.length){let a=0;for(let n=0;n<t.length;n++){let r=t[n],i=o[n];r.getNodeType(e)===i.type&&a++}a>i&&(r=n,i=a)}}this._candidateFn=n=r}return n}setup(e){return this.getCandidateFn(e)(...this.parametersNodes)}},_y=O(gy),vy=e=>(...t)=>_y(e,...t),yy=H(0).setGroup(V).onRenderUpdate(e=>e.time),by=H(0).setGroup(V).onRenderUpdate(e=>e.deltaTime),xy=H(0,`uint`).setGroup(V).onRenderUpdate(e=>e.frameId),Sy=(e=yy)=>e.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5),Cy=(e=yy)=>e.fract().round(),wy=(e=yy)=>e.add(.5).fract().mul(2).sub(1).abs(),Ty=(e=yy)=>e.fract();function Ey(e,t=null){return _s(t,{getUV:typeof e==`function`?e:()=>e})}var Dy=j(([e,t,n=I(.5)])=>n_(e.sub(n),t).add(n)),Oy=j(([e,t,n=I(.5)])=>{let r=e.sub(n),i=r.dot(r),a=i.mul(i).mul(t);return e.add(r.mul(a))}),ky=j(({position:e=null,horizontal:t=!0,vertical:n=!1,horizontalRotation:r=!1})=>{let i;i=e===null?du.sub(Xl.mul(R(cu,0)).xyz):D(e);let a=Xl.toVar();a[3][0]=i.x,a[3][1]=i.y,a[3][2]=i.z;let o=Pl.mul(a),s=Xl[0].length(),c=Xl[1].length(),l=Xl[2].length(),u,d,f;if(ti(r)){let e=a[3].xyz,t=Ll.sub(e),n=L(t.x,0,t.z).normalize(),r=L(n.z,0,n.x.negate());u=Pl.mul(R(r,0)).xyz.mul(s),d=Pl[1].xyz.mul(c),f=Pl.mul(R(n,0)).xyz.mul(l)}else ti(t)&&(u=L(s,0,0)),ti(n)&&(d=L(0,c,0)),f=L(0,0,1);return u&&(o[0][0]=u.x,o[0][1]=u.y,o[0][2]=u.z),d&&(o[1][0]=d.x,o[1][1]=d.y,o[1][2]=d.z),f&&(o[2][0]=f.x,o[2][1]=f.y,o[2][2]=f.z),Ml.mul(o).mul(cu)}),Ay=j(([e=null])=>{let t=Hp();return Hp(Ap(e)).sub(t).lessThan(0).select(cl,e)}),jy=j(([e,t=Lc(),n=N(0)])=>{let r=e.x,i=e.y,a=n.mod(r.mul(i)).floor(),o=a.mod(r),s=i.sub(a.add(1).div(r).ceil()),c=e.reciprocal(),l=I(o,s);return t.add(l).mul(c)}),My=j(([e,t=null,n=null,r=N(1),i=lu,a=xu])=>{let o=a.abs().normalize();o=o.div(o.dot(L(1)));let s=i.yz.mul(r),c=i.zx.mul(r),l=i.xy.mul(r),u=e.value,d=t===null?u:t.value,f=n===null?u:n.value;return wa(q(u,s).mul(o.x),q(d,c).mul(o.y),q(f,l).mul(o.z))}),Ny=(...e)=>My(...e),Py=new st,Fy=new x,Iy=new x,Ly=new x,Ry=new nt,zy=new x(0,0,-1),By=new kn,Vy=new x,Hy=new x,Uy=new kn,Wy=new pe,Gy=new wt,Ky=cl.flipX();Gy.depthTexture=new b(1,1);var qy=!1,Jy=class e extends Wc{static get type(){return`ReflectorNode`}constructor(e={}){super(e.defaultTexture||Gy.texture,Ky),this._reflectorBaseNode=e.reflector||new Yy(this,e),this._depthNode=null,this.setUpdateMatrix(!1)}get reflector(){return this._reflectorBaseNode}get target(){return this._reflectorBaseNode.target}getDepthNode(){if(this._depthNode===null){if(this._reflectorBaseNode.depth!==!0)throw Error(`THREE.ReflectorNode: Depth node can only be requested when the reflector is created with { depth: true }. `);this._depthNode=new e({defaultTexture:Gy.depthTexture,reflector:this._reflectorBaseNode})}return this._depthNode}setup(e){return e.object.isQuadMesh||this._reflectorBaseNode.build(e),super.setup(e)}clone(){let e=new this.constructor(this.reflectorNode);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.gatherNode=this.gatherNode,e.offsetNode=this.offsetNode,e._reflectorBaseNode=this._reflectorBaseNode,e}dispose(){super.dispose(),this._reflectorBaseNode.dispose()}},Yy=class extends T{static get type(){return`ReflectorBaseNode`}constructor(e,t={}){super();let{target:n=new m,resolutionScale:r=1,generateMipmaps:i=!1,bounces:a=!0,depth:o=!1,samples:s=0}=t;this.textureNode=e,this.target=n,this.resolutionScale=r,t.resolution!==void 0&&(Wt(`ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".`),this.resolutionScale=t.resolution),this.generateMipmaps=i,this.bounces=a,this.depth=o,this.samples=s,this.updateBeforeType=a?w.RENDER:w.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new Map,this.forceUpdate=!1,this.hasOutput=!1}_updateResolution(e,t){let n=this.resolutionScale;t.getDrawingBufferSize(Wy),e.setSize(Math.round(Wy.width*n),Math.round(Wy.height*n))}setup(e){return this._updateResolution(Gy,e.renderer),super.setup(e)}dispose(){super.dispose();for(let e of this.renderTargets.values())e.dispose()}getVirtualCamera(e){let t=this.virtualCameras.get(e);return t===void 0&&(t=e.clone(),this.virtualCameras.set(e,t)),t}getRenderTarget(e){let t=this.renderTargets.get(e);return t===void 0&&(t=new wt(1,1,{type:ye,samples:this.samples}),this.generateMipmaps===!0&&(t.texture.minFilter=r,t.texture.generateMipmaps=!0),this.depth===!0&&(t.depthTexture=new b),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&qy)return!1;qy=!0;let{scene:t,camera:n,renderer:r,material:i}=e,{target:a}=this,o=this.getVirtualCamera(n),s=this.getRenderTarget(o);r.getDrawingBufferSize(Wy),this._updateResolution(s,r),Iy.setFromMatrixPosition(a.matrixWorld),Ly.setFromMatrixPosition(n.matrixWorld),Ry.extractRotation(a.matrixWorld),Fy.set(0,0,1),Fy.applyMatrix4(Ry),Vy.subVectors(Iy,Ly);let c=Vy.dot(Fy)>0,l=!1;if(c===!0&&this.forceUpdate===!1){if(this.hasOutput===!1){qy=!1;return}l=!0}Vy.reflect(Fy).negate(),Vy.add(Iy),Ry.extractRotation(n.matrixWorld),zy.set(0,0,-1),zy.applyMatrix4(Ry),zy.add(Ly),Hy.subVectors(Iy,zy),Hy.reflect(Fy).negate(),Hy.add(Iy),o.coordinateSystem=n.coordinateSystem,o.position.copy(Vy),o.up.set(0,1,0),o.up.applyMatrix4(Ry),o.up.reflect(Fy),o.lookAt(Hy),o.near=n.near,o.far=n.far,o.updateMatrixWorld(),o.projectionMatrix.copy(n.projectionMatrix),Py.setFromNormalAndCoplanarPoint(Fy,Iy),Py.applyMatrix4(o.matrixWorldInverse),By.set(Py.normal.x,Py.normal.y,Py.normal.z,Py.constant);let u=o.projectionMatrix;Uy.x=(Math.sign(By.x)+u.elements[8])/u.elements[0],Uy.y=(Math.sign(By.y)+u.elements[9])/u.elements[5],Uy.z=-1,Uy.w=(1+u.elements[10])/u.elements[14],By.multiplyScalar(1/By.dot(Uy)),u.elements[2]=By.x,u.elements[6]=By.y,u.elements[10]=r.coordinateSystem===2001?By.z-0:By.z+1-0,u.elements[14]=By.w,this.textureNode.value=s.texture,this.depth===!0&&(this.textureNode.getDepthNode().value=s.depthTexture),i.visible=!1;let d=r.getRenderTarget(),f=r.getMRT(),p=r.autoClear;r.setMRT(null),r.setRenderTarget(s),r.autoClear=!0;let m=t.name;t.name=(t.name||`Scene`)+` [ Reflector ]`,l?(r.clear(),this.hasOutput=!1):(r.render(t,o),this.hasOutput=!0),t.name=m,r.setMRT(f),r.setRenderTarget(d),r.autoClear=p,i.visible=!0,qy=!1,this.forceUpdate=!1}get resolution(){return Wt(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale}set resolution(e){Wt(`ReflectorNode: The "resolution" property has been renamed to "resolutionScale".`),this.resolutionScale=e}},Xy=e=>new Jy(e),Zy=new ce(-1,1,1,-1,0,1),Qy=new class extends We{constructor(e=!1){super();let t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute(`position`,new tn([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new tn(t,2))}},$y=R(_a([-1,-1,3]).element(ac),_a([3,-1,-1]).element(ac),0,1),eb=class extends je{constructor(e){super(Qy,e),this.camera=Zy,this.isQuadMesh=!0}async renderAsync(e){Wt(`QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await e.init(),e.render(this,Zy)}render(e){let t=this.material.vertexNode;this.material.vertexNode=$y,e.render(this,Zy),this.material.vertexNode=t}};function tb(e,t={}){return t.toneMapping=e.toneMapping,t.toneMappingExposure=e.toneMappingExposure,t.outputColorSpace=e.outputColorSpace,t.renderTarget=e.getRenderTarget(),t.activeCubeFace=e.getActiveCubeFace(),t.activeMipmapLevel=e.getActiveMipmapLevel(),t.renderObjectFunction=e.getRenderObjectFunction(),t.pixelRatio=e.getPixelRatio(),t.mrt=e.getMRT(),t.clearColor=e.getClearColor(t.clearColor||new Et),t.clearAlpha=e.getClearAlpha(),t.autoClear=e.autoClear,t.scissorTest=e.getScissorTest(),t}function nb(e,t){return t=tb(e,t),e.setMRT(null),e.setRenderObjectFunction(null),e.setClearColor(0,1),e.autoClear=!0,t}function rb(e,t){e.toneMapping=t.toneMapping,e.toneMappingExposure=t.toneMappingExposure,e.outputColorSpace=t.outputColorSpace,e.setRenderTarget(t.renderTarget,t.activeCubeFace,t.activeMipmapLevel),e.setRenderObjectFunction(t.renderObjectFunction),e.setPixelRatio(t.pixelRatio),e.setMRT(t.mrt),e.setClearColor(t.clearColor,t.clearAlpha),e.autoClear=t.autoClear,e.setScissorTest(t.scissorTest)}function ib(e,t={}){return t.background=e.background,t.backgroundNode=e.backgroundNode,t.overrideMaterial=e.overrideMaterial,t}function ab(e,t){return t=ib(e,t),e.background=null,e.backgroundNode=null,e.overrideMaterial=null,t}function ob(e,t){e.background=t.background,e.backgroundNode=t.backgroundNode,e.overrideMaterial=t.overrideMaterial}function sb(e,t,n={}){return n=tb(e,n),n=ib(t,n),n}function cb(e,t,n){return n=nb(e,n),n=ab(t,n),n}function lb(e,t,n){rb(e,n),ob(t,n)}var ub=Object.freeze({__proto__:null,resetRendererAndSceneState:cb,resetRendererState:nb,resetSceneState:ab,restoreRendererAndSceneState:lb,restoreRendererState:rb,restoreSceneState:ob,saveRendererAndSceneState:sb,saveRendererState:tb,saveSceneState:ib}),db=new pe,fb=class extends Wc{static get type(){return`RTTNode`}constructor(e,t=null,n=null,r={}){let{autoUpdate:i=!0,resolutionScale:a=1}=r,o=new wt(t??1,n??1,{type:ye,...r});super(o.texture,Lc()),this.isRTTNode=!0,this.node=e,this.width=t,this.height=n,this.renderTarget=o,this.textureNeedsUpdate=!0,this.autoUpdate=i,this._resolutionScale=a,this._quadMesh=new eb(new em),this._rendererState={},this.updateBeforeType=w.FRAME}get autoResize(){return this.width===null}setup(e){return this._quadMesh.material.contextNode=_s(e.getSharedContext()),this._quadMesh.material.fragmentNode=this.node,this._quadMesh.material.name=`RTT`,this._quadMesh.material.needsUpdate=!0,super.setup(e)}setSize(e,t){let n=Math.floor(e*this._resolutionScale),r=Math.floor(t*this._resolutionScale);this.renderTarget.setSize(n,r),this.textureNeedsUpdate=!0}setResolutionScale(e){return this._resolutionScale=e,this.autoResize===!1&&this.setSize(this.width,this.height),this}getResolutionScale(){return this._resolutionScale}set value(e){this.renderTarget&&e!==this.renderTarget.texture&&S(`TSL: "rtt()" does not allow overwriting the value.`)}get value(){return this.renderTarget?this.renderTarget.texture:null}updateBefore(e){let{renderer:t}=e;if(this.textureNeedsUpdate===!1&&this.autoUpdate===!1)return;if(this.textureNeedsUpdate=!1,this.autoResize===!0){let e=t.getDrawingBufferSize(db),n=Math.floor(e.width*this._resolutionScale),r=Math.floor(e.height*this._resolutionScale);(n!==this.renderTarget.width||r!==this.renderTarget.height)&&(this.renderTarget.setSize(n,r),this.textureNeedsUpdate=!0)}let n=`RTT`,r=this.name||this.node.name;r&&(n=r+` [ `+n+` ]`),this._quadMesh.name=n,nb(t,this._rendererState),t.setRenderTarget(this.renderTarget),this._quadMesh.render(t),rb(t,this._rendererState)}clone(){let e=new Wc(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}dispose(){this.renderTarget.dispose(),this._quadMesh.material.dispose(),super.dispose()}},pb=(e,...t)=>new fb(D(e),...t),mb=(e,...t)=>e.isSampleNode||e.isTextureNode?e:e.isPassNode?e.getTextureNode():pb(e,...t),hb=j(([e,t,n],r)=>{let i;r.renderer.coordinateSystem===2001?(e=I(e.x,e.y.oneMinus()).mul(2).sub(1),i=R(L(e,t),1)):i=R(L(e.x,e.y.oneMinus(),t).mul(2).sub(1),1);let a=R(n.mul(i));return a.xyz.div(a.w)}),gb=j(([e,t])=>{let n=t.mul(R(e,1)),r=n.xy.div(n.w).mul(.5).add(.5).toVar();return I(r.x,r.y.oneMinus())}),_b=j(([e])=>{let t=e.xy.div(e.w).mul(.5).add(.5).toVar();return I(t.x,t.y.oneMinus())}).setLayout({name:`getScreenPositionFromClip`,type:`vec2`,inputs:[{name:`clipPosition`,type:`vec4`}]}),vb=j(([e,t,n])=>{let r=zc(qc(t)),i=gi(e.mul(r)).toVar(),a=qc(t,i).toVar(),o=qc(t,i.sub(gi(2,0))).toVar(),s=qc(t,i.sub(gi(1,0))).toVar(),c=qc(t,i.add(gi(1,0))).toVar(),l=qc(t,i.add(gi(2,0))).toVar(),u=qc(t,i.add(gi(0,2))).toVar(),d=qc(t,i.add(gi(0,1))).toVar(),f=qc(t,i.sub(gi(0,1))).toVar(),p=qc(t,i.sub(gi(0,2))).toVar(),m=Eo(U(N(2).mul(s).sub(o),a)).toVar(),h=Eo(U(N(2).mul(c).sub(l),a)).toVar(),g=Eo(U(N(2).mul(d).sub(u),a)).toVar(),_=Eo(U(N(2).mul(f).sub(p),a)).toVar(),v=hb(e,a,n).toVar();return fo(qo(m.lessThan(h).select(v.sub(hb(e.sub(I(N(1).div(r.x),0)),s,n)),v.negate().add(hb(e.add(I(N(1).div(r.x),0)),c,n))),g.lessThan(_).select(v.sub(hb(e.add(I(0,N(1).div(r.y))),d,n)),v.negate().add(hb(e.sub(I(0,N(1).div(r.y))),f,n)))))}),yb=j(([e])=>po(N(52.9829189).mul(po(Ko(e,I(.06711056,.00583715)))))).setLayout({name:`interleavedGradientNoise`,type:`float`,inputs:[{name:`position`,type:`vec2`}]}),bb=j(([e,t,n])=>{let r=N(2.399963229728653),i=so(N(e).add(.5).div(N(t))),a=N(e).mul(r).add(n);return I(go(a),mo(a)).mul(i)}).setLayout({name:`vogelDiskSample`,type:`vec2`,inputs:[{name:`sampleIndex`,type:`int`},{name:`samplesCount`,type:`int`},{name:`phi`,type:`float`}]}),xb=class extends T{static get type(){return`SampleNode`}constructor(e,t=null){super(),this.callback=e,this.uvNode=t,this.isSampleNode=!0}setup(){return this.sample(Lc())}sample(e){return this.callback(e)}},Sb=(e,t=null)=>new xb(e,D(t)),Cb=class extends y{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageInstancedBufferAttribute=!0}},wb=class extends o{constructor(e,t,n=Float32Array){let r=ArrayBuffer.isView(e)?e:new n(e*t);super(r,t),this.isStorageBufferAttribute=!0}},Tb=(e,t=`float`)=>{let n,r;return t.isStructTypeNode===!0?(n=t.getLength(),r=Kn(`float`)):(n=qn(t),r=Kn(t)),If(new wb(e,n,r),t,e)},Eb=(e,t=`float`)=>{let n,r;t.isStructTypeNode===!0?(n=t.getLength(),r=Kn(`float`)):(n=qn(t),r=Kn(t));let i=new Cb(e,n,r);return If(i,t,i.count)},Db=class extends T{static get type(){return`PointUVNode`}constructor(){super(`vec2`),this.isPointUVNode=!0}generate(){return`vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )`}},Ob=k(Db),kb=new nt,Ab=H(0).setGroup(V).onRenderUpdate(({scene:e})=>e.backgroundBlurriness),jb=H(1).setGroup(V).onRenderUpdate(({scene:e})=>e.backgroundIntensity),Mb=H(new nt).setGroup(V).onRenderUpdate(({scene:e})=>{let t=e.background;return t!==null&&t.isTexture&&t.mapping!==300||e.backgroundNode&&e.backgroundNode.isNode?kb.makeRotationFromEuler(e.backgroundRotation).transpose():kb.identity(),kb}),Nb=class extends Wc{static get type(){return`StorageTextureNode`}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.mipLevel=0,this.isStorageTextureNode=!0,this.access=or.WRITE_ONLY}getInputType(){return`storageTexture`}getTransformedUV(e){return e}setup(e){super.setup(e);let t=e.getNodeProperties(this);return t.storeNode=this.storeNode,t}setAccess(e){return this.access=e,this}setMipLevel(e){return this.mipLevel=e,this}generate(e,t){return this.storeNode===null?super.generate(e,t):(this.generateStore(e),``)}generateSnippet(e,t,n,r,i,a,o,s,c){let l=this.value;return e.generateStorageTextureLoad(l,t,n,r,a,c)}toReadWrite(){return this.setAccess(or.READ_WRITE)}toReadOnly(){return this.setAccess(or.READ_ONLY)}toWriteOnly(){return this.setAccess(or.WRITE_ONLY)}store(e,t){let n=this.clone();return n.referenceNode=this.getBase(),n.uvNode=e,n.storeNode=t,t!==null&&n.toStack(),n}generateStore(e){let{uvNode:t,storeNode:n,depthNode:r}=e.getNodeProperties(this),i=super.generate(e,`property`),a=t.build(e,this.value.is3DTexture===!0?`uvec3`:`uvec2`),o=e.getTypeFromLength(4,e.getComponentTypeFromTexture(this.value)),s=n.build(e,o),c=r?r.build(e,`int`):null,l=e.generateTextureStore(this.value,i,a,c,s);e.addLineFlowCode(l,this)}clone(){let e=super.clone();return e.storeNode=this.storeNode,e.mipLevel=this.mipLevel,e.access=this.access,e}},Pb=O(Nb).setParameterLength(1,3),Fb=(e,t,n)=>{let r;return e.isStorageTextureNode===!0?r=e.store(t,n):(r=Pb(e,t,n),n!==null&&r.toStack()),r},Ib=class extends Nb{static get type(){return`StorageTexture3DNode`}constructor(e,t,n=null){super(e,t,n),this.isStorageTexture3DNode=!0}getDefaultUV(){return L(.5,.5,.5)}setUpdateMatrix(){}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}generateOffset(e,t){return t.build(e,`ivec3`)}},Lb=O(Ib).setParameterLength(1,3),Rb=j(({texture:e,uv:t})=>{let n=1e-4,r=L().toVar();return M(t.x.lessThan(n),()=>{r.assign(L(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(L(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(L(0,0,1))}).ElseIf(t.x.greaterThan(.9999),()=>{r.assign(L(-1,0,0))}).ElseIf(t.y.greaterThan(.9999),()=>{r.assign(L(0,-1,0))}).ElseIf(t.z.greaterThan(.9999),()=>{r.assign(L(0,0,-1))}).Else(()=>{let n=.01,i=e.sample(t.add(L(-.01,0,0))).r.sub(e.sample(t.add(L(n,0,0))).r),a=e.sample(t.add(L(0,-.01,0))).r.sub(e.sample(t.add(L(0,n,0))).r),o=e.sample(t.add(L(0,0,-.01))).r.sub(e.sample(t.add(L(0,0,n))).r);r.assign(L(i,a,o))}),r.normalize()}),zb=class extends Wc{static get type(){return`Texture3DNode`}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return`texture3D`}getDefaultUV(){return L(.5,.5,.5)}setUpdateMatrix(){}generateUV(e,t){return t.build(e,this.sampler===!0?`vec3`:`ivec3`)}generateOffset(e,t){return t.build(e,`ivec3`)}normal(e){return Rb({texture:this,uv:e})}},Bb=O(zb).setParameterLength(1,3),Vb=(...e)=>Bb(...e).setSampler(!1),Hb=(e,t,n)=>Bb(e,t).level(n),Ub=class extends Gu{static get type(){return`UserDataNode`}constructor(e,t,n=null){super(e,t,n),this.userData=n}updateReference(e){return this.reference=this.userData===null?e.object.userData:this.userData,this.reference}},Wb=(e,t,n)=>new Ub(e,t,n),Gb=new WeakMap,Kb=class extends hr{static get type(){return`VelocityNode`}constructor(){super(`vec2`),this.projectionMatrix=null,this.updateType=w.OBJECT,this.updateAfterType=w.OBJECT,this.previousModelWorldMatrix=H(new nt),this.previousProjectionMatrix=H(new nt).setGroup(V),this.previousCameraViewMatrix=H(new nt)}setProjectionMatrix(e){this.projectionMatrix=e}update({frameId:e,camera:t,object:n}){let r=Jb(n);this.previousModelWorldMatrix.value.copy(r);let i=qb(t);i.frameId!==e&&(i.frameId=e,i.previousProjectionMatrix===void 0?(i.previousProjectionMatrix=new nt,i.previousCameraViewMatrix=new nt,i.currentProjectionMatrix=new nt,i.currentCameraViewMatrix=new nt,i.previousProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(i.previousProjectionMatrix.copy(i.currentProjectionMatrix),i.previousCameraViewMatrix.copy(i.currentCameraViewMatrix)),i.currentProjectionMatrix.copy(this.projectionMatrix||t.projectionMatrix),i.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(i.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(i.previousCameraViewMatrix))}updateAfter({object:e}){Jb(e).copy(e.matrixWorld)}setup(){let e=this.projectionMatrix===null?Ml:H(this.projectionMatrix),t=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),n=e.mul(ru).mul(lu),r=this.previousProjectionMatrix.mul(t).mul(uu);return U(n.xy.div(n.w),r.xy.div(r.w))}};function qb(e){let t=Gb.get(e);return t===void 0&&(t={},Gb.set(e,t)),t}function Jb(e,t=0){let n=qb(e),r=n[t];return r===void 0&&(n[t]=r=new nt,n[t].copy(e.matrixWorld)),r}var Yb=k(Kb),Xb=j(([e,t])=>Bo(1,e.oneMinus().div(t)).oneMinus()).setLayout({name:`blendBurn`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Zb=j(([e,t])=>Bo(e.div(t.oneMinus()),1)).setLayout({name:`blendDodge`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Qb=j(([e,t])=>e.oneMinus().mul(t.oneMinus()).oneMinus()).setLayout({name:`blendScreen`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),$b=j(([e,t])=>K(e.mul(2).mul(t),e.oneMinus().mul(2).mul(t.oneMinus()).oneMinus(),Ho(.5,e))).setLayout({name:`blendOverlay`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),ex=j(([e,t])=>{let n=t.a.add(e.a.mul(t.a.oneMinus()));return R(t.rgb.mul(t.a).add(e.rgb.mul(e.a).mul(t.a.oneMinus())).div(n),n)}).setLayout({name:`blendColor`,type:`vec4`,inputs:[{name:`base`,type:`vec4`},{name:`blend`,type:`vec4`}]}),tx=j(([e])=>ax(e.rgb)),nx=j(([e,t=N(1)])=>t.mix(ax(e.rgb),e.rgb).max(0)),rx=j(([e,t=N(0)])=>{let n=wa(e.r,e.g,e.b).div(3),r=e.r.max(e.g.max(e.b)),i=r.sub(n).mul(t).mul(-3);return K(e.rgb,r,i).max(0)}),ix=j(([e,t=N(1)])=>{let n=L(.57735,.57735,.57735),r=t.cos();return L(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(Ko(n,e.rgb).mul(r.oneMinus()))))).max(0)}),ax=(e,t=L(Zt.getLuminanceCoefficients(new x)))=>Ko(e,t),ox=j(([e,t=L(1),n=L(0),r=L(1),i=N(1),a=L(Zt.getLuminanceCoefficients(new x,De))])=>{let o=e.rgb.dot(L(a)),s=Vo(e.rgb.mul(t).add(n),0),c=s.pow(r);return M(s.r.greaterThan(0),()=>{s.r.assign(c.r)}),M(s.g.greaterThan(0),()=>{s.g.assign(c.g)}),M(s.b.greaterThan(0),()=>{s.b.assign(c.b)}),s.assign(o.add(s.sub(o).mul(i)).max(0)),R(s.rgb,e.a)}),sx=j(([e,t])=>e.mul(t).floor().div(t)),cx=null,lx=class extends Cp{static get type(){return`ViewportSharedTextureNode`}constructor(e=cl,t=null){cx===null&&(cx=new dt),super(e,t,cx)}getTextureForReference(){return cx}updateReference(){return this}},ux=O(lx).setParameterLength(0,2),dx=new pe,fx=class extends Wc{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.isPassTextureNode=!0,this.setUpdateMatrix(!1)}setup(e){let t=e.getNodeProperties(this);return t.passNode=this.passNode,super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},px=class extends fx{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n,this.isPassMultipleTextureNode=!0}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){let e=new this.constructor(this.passNode,this.textureName,this.previousTexture);return e.uvNode=this.uvNode,e.levelNode=this.levelNode,e.biasNode=this.biasNode,e.sampler=this.sampler,e.depthNode=this.depthNode,e.compareNode=this.compareNode,e.gradNode=this.gradNode,e.gatherNode=this.gatherNode,e.offsetNode=this.offsetNode,e}},mx=class e extends hr{static get type(){return`PassNode`}constructor(t,n,r,i={}){super(`vec4`),this.scope=t,this.scene=n,this.camera=r,this.options=i,this._width=1,this._height=1;let a=new wt(this._width,this._height,{type:ye,...i});a.texture.name=`output`;let o=null;(this.scope===e.DEPTH||i.depthBuffer!==!1)&&(o=i.depthTexture||new b,o.isRenderTargetTexture=!0,o.name=`depth`,a.depthTexture=o),this.renderTarget=a,this.overrideMaterial=null,this.transparent=!0,this.opaque=!0,this.lighting=null,this.autoClear=i.autoClear===void 0||i.autoClear,this.autoClearColor=i.autoClearColor===void 0||i.autoClearColor,this.autoClearDepth=i.autoClearDepth===void 0||i.autoClearDepth,this.autoClearStencil=i.autoClearStencil===void 0||i.autoClearStencil,this.contextNode=null,this._contextNodeCache=null,this._textures={output:a.texture},o!==null&&(this._textures.depth=o),this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=H(0),this._cameraFar=H(0),this._mrt=null,this._layers=null,this._resolutionScale=1,this._viewport=null,this._scissor=null,this.isPassNode=!0,this.updateBeforeType=w.FRAME,this.global=!0}setResolutionScale(e){return this._resolutionScale=e,this}getResolutionScale(){return this._resolutionScale}setResolution(e){return C(`PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead.`),this.setResolutionScale(e)}getResolution(){return C(`PassNode: .getResolution() is deprecated. Use .getResolutionScale() instead.`),this.getResolutionScale()}setLayers(e){return this._layers=e,this}getLayers(){return this._layers}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getTexture(e){let t=this._textures[e];if(t===void 0){if(e===`depth`)throw Error(`THREE.PassNode: Depth texture is not available for this pass.`);t=this.renderTarget.texture.clone(),t.name=e,this._textures[e]=t,this.renderTarget.textures.push(t)}return t}getPreviousTexture(e){let t=this._previousTextures[e];return t===void 0&&(t=this.getTexture(e).clone(),this._previousTextures[e]=t),t}toggleTexture(e){let t=this._previousTextures[e];if(t!==void 0){let n=this._textures[e],r=this.renderTarget.textures.indexOf(n);this.renderTarget.textures[r]=t,this._textures[e]=t,this._previousTextures[e]=n,this._textureNodes[e].updateTexture(),this._previousTextureNodes[e].updateTexture()}}getTextureNode(e=`output`){let t=this._textureNodes[e];return t===void 0&&(t=new px(this,e),t.updateTexture(),this._textureNodes[e]=t),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),t=new px(this,e,!0),t.updateTexture(),this._previousTextureNodes[e]=t),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=Lp(this.getTextureNode(e),n,r)}return t}getLinearDepthNode(e=`depth`){let t=this._linearDepthNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar,i=this.getViewZNode(e);this._linearDepthNodes[e]=t=Mp(i,n,r)}return t}async compileAsync(e){let t=e.getRenderTarget(),n=e.getMRT();e.setRenderTarget(this.renderTarget),e.setMRT(this._mrt),await e.compileAsync(this.scene,this.camera),e.setRenderTarget(t),e.setMRT(n)}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,this.renderTarget.texture.type=t.getOutputBufferType(),t.reversedDepthBuffer===!0&&this.renderTarget.depthTexture!==null&&(this.renderTarget.depthTexture.type=Kt),this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n}=this,r,i=t.getOutputRenderTarget();i&&i.isXRRenderTarget===!0?(r=t.xr.getCamera(),t.xr.updateCamera(r),dx.set(i.width,i.height)):(r=this.camera,t.getDrawingBufferSize(dx)),this.setSize(dx.width,dx.height);let a=t.getRenderTarget(),o=t.getMRT(),s=t.autoClear,c=t.autoClearColor,l=t.autoClearDepth,u=t.autoClearStencil,d=t.transparent,f=t.opaque,p=t.lighting,m=r.layers.mask,h=t.contextNode,g=n.overrideMaterial;this._cameraNear.value=r.near,this._cameraFar.value=r.far,this._layers!==null&&(r.layers.mask=this._layers.mask);for(let e in this._previousTextures)this.toggleTexture(e);this.overrideMaterial!==null&&(n.overrideMaterial=this.overrideMaterial),t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.autoClear=this.autoClear,t.autoClearColor=this.autoClearColor,t.autoClearDepth=this.autoClearDepth,t.autoClearStencil=this.autoClearStencil,t.transparent=this.transparent,t.opaque=this.opaque,this.lighting!==null&&(t.lighting=this.lighting),this.contextNode!==null&&((this._contextNodeCache===null||this._contextNodeCache.version!==this.version)&&(this._contextNodeCache={version:this.version,context:_s({...t.contextNode.getFlowContextData(),...this.contextNode.getFlowContextData()})}),t.contextNode=this._contextNodeCache.context);let _=n.name;n.name=this.name?this.name:n.name,t.render(n,r),n.name=_,n.overrideMaterial=g,t.setRenderTarget(a),t.setMRT(o),t.autoClear=s,t.autoClearColor=c,t.autoClearDepth=l,t.autoClearStencil=u,t.transparent=d,t.opaque=f,t.contextNode=h,t.lighting=p,r.layers.mask=m}setSize(e,t){this._width=e,this._height=t;let n=Math.floor(this._width*this._resolutionScale),r=Math.floor(this._height*this._resolutionScale);this.renderTarget.setSize(n,r),this._scissor===null?this.renderTarget.scissorTest=!1:(this.renderTarget.scissor.copy(this._scissor).multiplyScalar(this._resolutionScale).floor(),this.renderTarget.scissorTest=!0),this._viewport!==null&&this.renderTarget.viewport.copy(this._viewport).multiplyScalar(this._resolutionScale).floor()}setScissor(e,t,n,r){e===null?this._scissor=null:(this._scissor===null&&(this._scissor=new kn),e.isVector4?this._scissor.copy(e):this._scissor.set(e,t,n,r))}setViewport(e,t,n,r){e===null?this._viewport=null:(this._viewport===null&&(this._viewport=new kn),e.isVector4?this._viewport.copy(e):this._viewport.set(e,t,n,r))}dispose(){super.dispose(),this.renderTarget.dispose()}static get COLOR(){return`color`}static get DEPTH(){return`depth`}},hx=(e,t,n)=>new mx(mx.COLOR,e,t,n),gx=(e,t)=>new fx(e,t),_x=(e,t,n)=>new mx(mx.DEPTH,e,t,n),vx=class extends mx{static get type(){return`ToonOutlinePassNode`}constructor(e,t,n,r,i){super(mx.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=i,this._materialCache=new WeakMap,this.name=`Outline Pass`}updateBefore(e){let{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((e,n,r,i,a,o,s,c)=>{if((a.isMeshToonMaterial||a.isMeshToonNodeMaterial)&&a.wireframe===!1){let l=this._getOutlineMaterial(a);t.renderObject(e,n,r,i,l,o,s,c)}t.renderObject(e,n,r,i,a,o,s,c)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){let e=new em;e.isMeshToonOutlineMaterial=!0,e.name=`Toon_Outline`,e.side=1;let t=xu.negate(),n=Ml.mul(ru),r=N(1),i=n.mul(R(lu,1)),a=n.mul(R(lu.add(t),1)),o=fo(i.sub(a));return e.vertexNode=i.add(o.mul(this.thicknessNode).mul(i.w).mul(r)),e.colorNode=R(this.colorNode,this.alphaNode),e}_getOutlineMaterial(e){let t=this._materialCache.get(e);return t===void 0&&(t=this._createMaterial(),this._materialCache.set(e,t)),t}},yx=(e,t,n=new Et(0,0,0),r=.003,i=1)=>new vx(e,t,D(n),D(r),D(i)),bx=j(([e,t])=>e.mul(t).clamp()).setLayout({name:`linearToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),xx=j(([e,t])=>(e=e.mul(t),e.div(e.add(1)).clamp())).setLayout({name:`reinhardToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Sx=j(([e,t])=>{e=e.mul(t),e=e.sub(.004).max(0);let n=e.mul(e.mul(6.2).add(.5)),r=e.mul(e.mul(6.2).add(1.7)).add(.06);return n.div(r).pow(2.2)}).setLayout({name:`cineonToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Cx=j(([e])=>{let t=e.mul(e.add(.0245786)).sub(90537e-9),n=e.mul(e.add(.432951).mul(.983729)).add(.238081);return t.div(n)}),wx=j(([e,t])=>{let n=Ei(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),r=Ei(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return e=e.mul(t).div(.6),e=n.mul(e),e=Cx(e),e=r.mul(e),e.clamp()}).setLayout({name:`acesFilmicToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Tx=Ei(L(1.6605,-.1246,-.0182),L(-.5876,1.1329,-.1006),L(-.0728,-.0083,1.1187)),Ex=Ei(L(.6274,.0691,.0164),L(.3293,.9195,.088),L(.0433,.0113,.8956)),Dx=j(([e])=>{let t=L(e).toVar(),n=L(t.mul(t)).toVar(),r=L(n.mul(n)).toVar();return N(15.5).mul(r.mul(n)).sub(W(40.14,r.mul(t))).add(W(31.96,r).sub(W(6.868,n.mul(t))).add(W(.4298,n).add(W(.1191,t).sub(.00232))))}),Ox=j(([e,t])=>{let n=L(e).toVar(),r=Ei(L(.856627153315983,.137318972929847,.11189821299995),L(.0951212405381588,.761241990602591,.0767994186031903),L(.0482516061458583,.101439036467562,.811302368396859)),i=Ei(L(1.1271005818144368,-.1413297634984383,-.14132976349843826),L(-.11060664309660323,1.157823702216272,-.11060664309660294),L(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=N(-12.47393),o=N(4.026069);return n.mulAssign(t),n.assign(Ex.mul(n)),n.assign(r.mul(n)),n.assign(Vo(n,1e-10)),n.assign(oo(n)),n.assign(n.sub(a).div(o.sub(a))),n.assign(rs(n,0,1)),n.assign(Dx(n)),n.assign(i.mul(n)),n.assign(Jo(Vo(L(0),n),L(2.2))),n.assign(Tx.mul(n)),n.assign(rs(n,0,1)),n}).setLayout({name:`agxToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),kx=j(([e,t])=>{let n=N(.76),r=N(.15);e=e.mul(t);let i=Bo(e.r,Bo(e.g,e.b)),a=hs(i.lessThan(.08),i.sub(W(6.25,i.mul(i))),.04);e.subAssign(a);let o=Vo(e.r,Vo(e.g,e.b));M(o.lessThan(n),()=>e);let s=U(1,n),c=U(1,s.mul(s).div(o.add(s.sub(n))));e.mulAssign(c.div(o));let l=U(1,Ta(1,r.mul(o.sub(c)).add(1)));return K(e,L(c),l)}).setLayout({name:`neutralToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Ax=class extends T{static get type(){return`CodeNode`}constructor(e=``,t=[],n=``){super(`code`),this.isCodeNode=!0,this.global=!0,this.code=e,this.includes=t,this.language=n}setIncludes(e){return this.includes=e,this}getIncludes(){return this.includes}generate(e){let t=this.getIncludes(e);for(let n of t)n.build(e,`void`);let n=e.getCodeFromNode(this,this.getNodeType(e));return n.code=this.code,n.code}serialize(e){super.serialize(e),e.code=this.code,e.language=this.language}deserialize(e){super.deserialize(e),this.code=e.code,this.language=e.language}},jx=O(Ax).setParameterLength(1,3),Mx=(e,t)=>jx(e,t,`js`),Nx=(e,t)=>jx(e,t,`wgsl`),Px=(e,t)=>jx(e,t,`glsl`),Fx=class extends Ax{static get type(){return`FunctionNode`}constructor(e=``,t=[],n=``){super(e,t,n)}generateNodeType(e){return this.getNodeFunction(e).type}getMemberType(e,t){let n=this.getNodeType(e);return e.getStructTypeNode(n).getMemberType(e,t)}getInputs(e){return this.getNodeFunction(e).inputs}getNodeFunction(e){let t=e.getDataFromNode(this),n=t.nodeFunction;return n===void 0&&(n=e.parser.parseFunction(this.code),t.nodeFunction=n),n}generate(e,t){super.generate(e);let n=this.getNodeFunction(e),r=n.name,i=n.type,a=e.getCodeFromNode(this,i);if(r!==``){let t=e.getDataFromNode(this);t.declarationRegistered!==!0&&(a.name=r,e.registerDeclaration(a),t.declarationRegistered=!0)}let o=e.getPropertyName(a);return a.code=this.getNodeFunction(e).getCode(o)+`
24
+ `,t===`property`?o:e.format(`${o}()`,i,t)}},Ix=(e,t=[],n=``)=>{let r=new Fx(e,t,n);return si((...e)=>r.call(...e),r)},Lx=(e,t)=>Ix(e,t,`glsl`),Rx=(e,t)=>Ix(e,t,`wgsl`);function zx(e){let t,n=e.context.getViewZ;return n!==void 0&&(t=n(this)),(t||pu.z).negate()}var Bx=j(([e,t],n)=>os(e,t,zx(n))),Vx=j(([e],t)=>{let n=zx(t);return e.mul(e,n,n).negate().exp().oneMinus()}),Hx=j(([e,t],n)=>{let r=zx(n),i=t.sub(du.y).max(0).toConst().mul(r).toConst();return e.mul(e,i,i).negate().exp().oneMinus()}),Ux=j(([e,t])=>R(t.toFloat().mix(Qi.rgb,e.toVec3()),Qi.a)),Wx=null,Gx=null,Kx=class extends T{static get type(){return`RangeNode`}constructor(e=N(),t=N()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){let t=this.getConstNode(this.minNode),n=this.getConstNode(this.maxNode),r=e.getTypeLength(Xn(t.value)),i=e.getTypeLength(Xn(n.value));return r>i?r:i}generateNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):`float`}getConstNode(e){let t=null;if(e.traverse(e=>{e.isConstNode===!0&&(t=e)}),t===null)throw new Hc(`THREE.TSL: No "ConstNode" found in node graph.`,this.stackTrace);return t}setup(e){let t=e.object,n=null;if(t.count>1){let r=this.getConstNode(this.minNode),i=this.getConstNode(this.maxNode),a=r.value,o=i.value,s=e.getTypeLength(Xn(a)),c=e.getTypeLength(Xn(o));Wx||=new kn,Gx||=new kn,Wx.setScalar(0),Gx.setScalar(0),s===1?Wx.setScalar(a):a.isColor?Wx.set(a.r,a.g,a.b,1):Wx.set(a.x,a.y,a.z||0,a.w||0),c===1?Gx.setScalar(o):o.isColor?Gx.set(o.r,o.g,o.b,1):Gx.set(o.x,o.y,o.z||0,o.w||0);let l=4*t.count,u=new Float32Array(l);for(let e=0;e<l;e++){let t=e%4,n=Wx.getComponent(t),r=Gx.getComponent(t);u[e]=on.lerp(n,r,Math.random())}let d=this.getNodeType(e);if(t.count*4*4<=e.getUniformBufferLimit())n=Qc(u,`vec4`,t.count).element(oc).convert(d);else{let t=new y(u,4);e.geometry.setAttribute(`__range`+this.id,t),n=nc(t).convert(d)}}else n=N(0);return n}},qx=O(Kx).setParameterLength(2),Jx=class extends T{static get type(){return`ComputeBuiltinNode`}constructor(e,t){super(t),this._builtinName=e}getHash(e){return this.getBuiltinName(e)}generateNodeType(){return this.nodeType}setBuiltinName(e){return this._builtinName=e,this}getBuiltinName(){return this._builtinName}hasBuiltin(e){return e.hasBuiltin(this._builtinName)}generate(e,t){let n=this.getBuiltinName(e),r=this.getNodeType(e);return e.shaderStage===`compute`?e.format(n,r,t):(C(`TSL: Compute built-in value "${n}" can not be accessed in the ${e.shaderStage} stage`),e.generateConst(r))}serialize(e){super.serialize(e),e.global=this.global,e._builtinName=this._builtinName}deserialize(e){super.deserialize(e),this.global=e.global,this._builtinName=e._builtinName}},Yx=(e,t)=>new Jx(e,t),Xx=Yx(`numWorkgroups`,`uvec3`),Zx=Yx(`workgroupId`,`uvec3`),Qx=Yx(`globalId`,`uvec3`),$x=Yx(`localId`,`uvec3`),eS=Yx(`subgroupSize`,`uint`),tS=class extends T{constructor(e){super(),this.scope=e,this.isBarrierNode=!0}setup(e){e.allowEarlyReturns=!1,e.allowGlobalVariables=!1}generate(e){let{scope:t}=this,{renderer:n,shaderStage:r}=e,i=`${t}Barrier`;r!==`compute`&&S(`TSL: "${i}" is not supported in the ${r} stage and can only be executed in compute.`),n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${i}() \n`):e.addLineFlowCode(`${i}()`,this)}},nS=O(tS),rS=()=>nS(`workgroup`).toStack(),iS=()=>nS(`storage`).toStack(),aS=()=>nS(`texture`).toStack(),oS=class extends pr{constructor(e,t){super(e,t),this.isWorkgroupInfoElementNode=!0}generate(e,t){let n,r=e.isContextAssign();if(n=super.generate(e),r!==!0){let r=this.getNodeType(e);n=e.format(n,r,t)}return n}},sS=class extends T{constructor(e,t,n=0){super(t),this.bufferType=t,this.bufferCount=n,this.isAtomic=!1,this.isWorkgroupInfoNode=!0,this.elementType=t,this.scope=e,this.name=``}setName(e){return this.name=e,this}label(e){return C(`TSL: "label()" has been deprecated. Use "setName()" instead.`,new Rn),this.setName(e)}setScope(e){return this.scope=e,this}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}getElementType(){return this.elementType}getInputType(){return`${this.scope}Array`}element(e){return new oS(this,e)}generate(e){e.shaderStage!==`compute`&&S(`TSL: "workgroupArray()" can only be executed within the compute shader stage`);let t=this.name===``?`${this.scope}Array_${this.id}`:this.name;return e.getScopedArray(t,this.scope.toLowerCase(),this.bufferType,this.bufferCount,this.isAtomic)}},cS=(e,t)=>new sS(`Workgroup`,e,t),lS=class extends T{static get type(){return`AtomicFunctionNode`}constructor(e,t,n){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.parents=!0}getInputType(e){return this.pointerNode.getNodeType(e)}generateNodeType(e){return this.getInputType(e)}generate(e){let t=this.method;e.shaderStage===`vertex`&&S(`TSL: "${this.method}" is not supported in the vertex stage.`);let n=e.getNodeProperties(this),r=n.parents,i=this.getNodeType(e),a=this.getInputType(e),o=this.pointerNode,s=this.valueNode,c=[];c.push(`&${o.build(e,a)}`),s!==null&&c.push(s.build(e,a));let l=`${e.getMethod(t,i)}( ${c.join(`, `)} )`;if(r&&r.length===1&&r[0].isStackNode===!0)e.addLineFlowCode(l,this);else return n.constNode===void 0&&(n.constNode=Sc(l,i).toConst()),n.constNode.build(e)}static get ATOMIC_LOAD(){return`atomicLoad`}static get ATOMIC_STORE(){return`atomicStore`}static get ATOMIC_ADD(){return`atomicAdd`}static get ATOMIC_SUB(){return`atomicSub`}static get ATOMIC_MAX(){return`atomicMax`}static get ATOMIC_MIN(){return`atomicMin`}static get ATOMIC_AND(){return`atomicAnd`}static get ATOMIC_OR(){return`atomicOr`}static get ATOMIC_XOR(){return`atomicXor`}},uS=O(lS),dS=(e,t,n)=>uS(e,t,n).toStack(),fS=e=>dS(lS.ATOMIC_LOAD,e,null),pS=(e,t)=>dS(lS.ATOMIC_STORE,e,t),mS=(e,t)=>dS(lS.ATOMIC_ADD,e,t),hS=(e,t)=>dS(lS.ATOMIC_SUB,e,t),gS=(e,t)=>dS(lS.ATOMIC_MAX,e,t),_S=(e,t)=>dS(lS.ATOMIC_MIN,e,t),vS=(e,t)=>dS(lS.ATOMIC_AND,e,t),yS=(e,t)=>dS(lS.ATOMIC_OR,e,t),bS=(e,t)=>dS(lS.ATOMIC_XOR,e,t),Z=class e extends hr{static get type(){return`SubgroupFunctionNode`}constructor(e,t=null,n=null){super(),this.method=e,this.aNode=t,this.bNode=n}getInputType(e){let t=this.aNode?this.aNode.getNodeType(e):null,n=this.bNode?this.bNode.getNodeType(e):null;return(e.isMatrix(t)?0:e.getTypeLength(t))>(e.isMatrix(n)?0:e.getTypeLength(n))?t:n}generateNodeType(t){let n=this.method;return n===e.SUBGROUP_ELECT?`bool`:n===e.SUBGROUP_BALLOT?`uvec4`:this.getInputType(t)}generate(t,n){let r=this.method;t.shaderStage===`vertex`&&S(`TSL: "${this.method}" is not supported in the vertex shader stage.`);let i=this.getNodeType(t),a=this.getInputType(t),o=this.aNode,s=this.bNode,c=[];if(r===e.SUBGROUP_BROADCAST||r===e.SUBGROUP_SHUFFLE||r===e.QUAD_BROADCAST){let e=s.getNodeType(t);c.push(o.build(t,i),s.build(t,e===`float`?`int`:i))}else r===e.SUBGROUP_SHUFFLE_XOR||r===e.SUBGROUP_SHUFFLE_DOWN||r===e.SUBGROUP_SHUFFLE_UP?c.push(o.build(t,i),s.build(t,`uint`)):(o!==null&&c.push(o.build(t,a)),s!==null&&c.push(s.build(t,a)));let l=c.length===0?`()`:`( ${c.join(`, `)} )`;return t.format(`${t.getMethod(r,i)}${l}`,i,n)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}static get SUBGROUP_ELECT(){return`subgroupElect`}static get SUBGROUP_BALLOT(){return`subgroupBallot`}static get SUBGROUP_ADD(){return`subgroupAdd`}static get SUBGROUP_INCLUSIVE_ADD(){return`subgroupInclusiveAdd`}static get SUBGROUP_EXCLUSIVE_ADD(){return`subgroupExclusiveAdd`}static get SUBGROUP_MUL(){return`subgroupMul`}static get SUBGROUP_INCLUSIVE_MUL(){return`subgroupInclusiveMul`}static get SUBGROUP_EXCLUSIVE_MUL(){return`subgroupExclusiveMul`}static get SUBGROUP_AND(){return`subgroupAnd`}static get SUBGROUP_OR(){return`subgroupOr`}static get SUBGROUP_XOR(){return`subgroupXor`}static get SUBGROUP_MIN(){return`subgroupMin`}static get SUBGROUP_MAX(){return`subgroupMax`}static get SUBGROUP_ALL(){return`subgroupAll`}static get SUBGROUP_ANY(){return`subgroupAny`}static get SUBGROUP_BROADCAST_FIRST(){return`subgroupBroadcastFirst`}static get QUAD_SWAP_X(){return`quadSwapX`}static get QUAD_SWAP_Y(){return`quadSwapY`}static get QUAD_SWAP_DIAGONAL(){return`quadSwapDiagonal`}static get SUBGROUP_BROADCAST(){return`subgroupBroadcast`}static get SUBGROUP_SHUFFLE(){return`subgroupShuffle`}static get SUBGROUP_SHUFFLE_XOR(){return`subgroupShuffleXor`}static get SUBGROUP_SHUFFLE_UP(){return`subgroupShuffleUp`}static get SUBGROUP_SHUFFLE_DOWN(){return`subgroupShuffleDown`}static get QUAD_BROADCAST(){return`quadBroadcast`}},xS=A(Z,Z.SUBGROUP_ELECT).setParameterLength(0),SS=A(Z,Z.SUBGROUP_BALLOT).setParameterLength(1),CS=A(Z,Z.SUBGROUP_ADD).setParameterLength(1),wS=A(Z,Z.SUBGROUP_INCLUSIVE_ADD).setParameterLength(1),TS=A(Z,Z.SUBGROUP_EXCLUSIVE_ADD).setParameterLength(1),ES=A(Z,Z.SUBGROUP_MUL).setParameterLength(1),DS=A(Z,Z.SUBGROUP_INCLUSIVE_MUL).setParameterLength(1),OS=A(Z,Z.SUBGROUP_EXCLUSIVE_MUL).setParameterLength(1),kS=A(Z,Z.SUBGROUP_AND).setParameterLength(1),AS=A(Z,Z.SUBGROUP_OR).setParameterLength(1),jS=A(Z,Z.SUBGROUP_XOR).setParameterLength(1),MS=A(Z,Z.SUBGROUP_MIN).setParameterLength(1),NS=A(Z,Z.SUBGROUP_MAX).setParameterLength(1),PS=A(Z,Z.SUBGROUP_ALL).setParameterLength(1),FS=A(Z,Z.SUBGROUP_ANY).setParameterLength(1),IS=A(Z,Z.SUBGROUP_BROADCAST_FIRST).setParameterLength(1),LS=A(Z,Z.QUAD_SWAP_X).setParameterLength(1),RS=A(Z,Z.QUAD_SWAP_Y).setParameterLength(1),zS=A(Z,Z.QUAD_SWAP_DIAGONAL).setParameterLength(1),BS=A(Z,Z.SUBGROUP_BROADCAST).setParameterLength(2),VS=A(Z,Z.SUBGROUP_SHUFFLE).setParameterLength(2),HS=A(Z,Z.SUBGROUP_SHUFFLE_XOR).setParameterLength(2),US=A(Z,Z.SUBGROUP_SHUFFLE_UP).setParameterLength(2),WS=A(Z,Z.SUBGROUP_SHUFFLE_DOWN).setParameterLength(2),GS=A(Z,Z.QUAD_BROADCAST).setParameterLength(1),KS;function qS(e){KS||=new WeakMap;let t=KS.get(e);return t===void 0&&KS.set(e,t={}),t}function JS(e){let t=qS(e);return t.shadowMatrix||=H(`mat4`).setGroup(V).onRenderUpdate(t=>((e.castShadow!==!0||t.renderer.shadowMap.enabled===!1)&&(e.shadow.camera.coordinateSystem!==t.camera.coordinateSystem&&(e.shadow.camera.coordinateSystem=t.camera.coordinateSystem,e.shadow.camera.updateProjectionMatrix()),e.shadow.updateMatrices(e)),e.shadow.matrix))}function YS(e,t=du){let n=JS(e).mul(t);return n.xyz.div(n.w)}function XS(e){let t=qS(e);return t.position||=H(new x).setGroup(V).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.matrixWorld))}function ZS(e){let t=qS(e);return t.targetPosition||=H(new x).setGroup(V).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.target.matrixWorld))}function QS(e){let t=qS(e);return t.viewPosition||=H(new x).setGroup(V).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new x,n.value.setFromMatrixPosition(e.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)})}var $S=e=>Pl.transformDirection(XS(e).sub(ZS(e))),eC=ji(`vec3`,`totalDiffuse`),tC=ji(`vec3`,`totalSpecular`),nC=ji(`vec3`,`outgoingLight`),rC=e=>e.sort((e,t)=>e.id-t.id),iC=(e,t)=>{for(let n of t)if(n.isAnalyticLightNode&&n.light.id===e)return n;return null},aC=new WeakMap,oC=[],sC=class extends T{static get type(){return`LightsNode`}constructor(){super(`vec3`),this.totalDiffuseNode=eC,this.totalSpecularNode=tC,this.outgoingLightNode=nC,this._lights=[],this.global=!0}customCacheKey(){let e=this.getBuiltinLights();for(let t=0;t<e.length;t++){let n=e[t];if(oC.push(n.id),oC.push(+!!n.castShadow),n.isSpotLight===!0){let e=n.map===null?-1:n.map.id,t=n.colorNode?n.colorNode.getCacheKey():-1;oC.push(e,t)}}let t=Vn(oC);return oC.length=0,t}getHash(e){let t=e.getDataFromNode(this);if(t.lightNodesHash===void 0){let n=this.setupLightsNode(e);t.lightNodes=n;let r=[];for(let e of n)r.push(e.getHash());t.lightNodesHash=`lights-`+r.join(`,`)}return t.lightNodesHash}analyze(e){let t=e.getNodeProperties(this);for(let n of t.nodes)n.build(e);t.outputNode.build(e)}setupLightsNode(e){let t=e.getDataFromNode(this),n=[],r=t.lightNodes||null,i=e.context.materialLightings,a=this.getBuiltinLights(),o=rC([...i,...a]),s=e.renderer.library;for(let e of o)if(e.isNode)n.push(e);else{let t=null;if(r!==null&&(t=iC(e.id,r)),t===null){let n=s.getLightNodeClass(e.constructor);if(n===null){C(`LightsNode.setupNodeLights: Light node not found for ${e.constructor.name}`);continue}aC.has(e)===!1&&aC.set(e,new n(e)),t=aC.get(e)}n.push(t)}return n}setupDirectLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.direct({...n,lightNode:t,reflectedLight:i},e)}setupDirectRectAreaLight(e,t,n){let{lightingModel:r,reflectedLight:i}=e.context;r.directRectArea({...n,lightNode:t,reflectedLight:i},e)}setupLights(e,t){for(let n of t)n.build(e)}getLightNodes(e){let t=e.getDataFromNode(this);return t.lightNodes===void 0&&(t.lightNodes=this.setupLightsNode(e)),t.lightNodes}setup(e){let t=e.lightsNode;e.lightsNode=this;let n=this.outgoingLightNode,r=e.context,i=r.lightingModel,a=e.getNodeProperties(this);if(i){let{totalDiffuseNode:t,totalSpecularNode:o}=this;r.outgoingLight=n,a.nodes=e.addStack().nodes,i.start(e);let{backdrop:s,backdropAlpha:c}=r,{directDiffuse:l,directSpecular:u,indirectDiffuse:d,indirectSpecular:f}=r.reflectedLight,p=l.add(d);s!==null&&(p=L(c===null?s:c.mix(p,s))),t.assign(p),o.assign(u.add(f)),n.assign(t.add(o)),i.finish(e),n=n.bypass(e.removeStack())}else a.nodes=[];return e.lightsNode=t,n}setLights(e){return this._lights=e,this}getLights(){return this._lights}getBuiltinLights(){return this._lights}get hasLights(){return this._lights.length>0}},cC=(e=[])=>new sC().setLights(e),lC=new WeakMap,uC=new v_,dC=[],fC=e=>{let t=lC.get(e);return t===void 0&&(t=new em,t.colorNode=R(0,0,0,1),t.isShadowPassMaterial=!0,t.name=`ShadowMaterial`,t.blending=0,t.fog=!1,lC.set(e,t)),t},pC=e=>{let t=lC.get(e);t!==void 0&&(t.dispose(),lC.delete(e))},mC=(e,t,n,r)=>{dC[0]=e,dC[1]=t;let i=uC.get(dC);return(i===void 0||i.shadowType!==n||i.useVelocity!==r)&&(i=(i,a,o,s,c,l,u,d,f)=>{(i.castShadow===!0||i.receiveShadow&&n===3)&&(r&&($n(i).useVelocity=!0),i.onBeforeShadow(e,i,o,t.camera,s,a.overrideMaterial,l),e.renderObject(i,a,o,s,c,l,u,d,f),i.onAfterShadow(e,i,o,t.camera,s,a.overrideMaterial,l))},i.shadowType=n,i.useVelocity=r,uC.set(dC,i)),dC[0]=null,dC[1]=null,i},hC=class extends T{static get type(){return`ShadowBaseNode`}constructor(e){super(),this.light=e,this.updateBeforeType=w.RENDER,this.isShadowBaseNode=!0}getShadowMaterial(){return fC(this.light)}disposeShadowMaterial(){pC(this.light)}getShadowRenderObjectFunction(e,t=this.light.shadow){let n=e.shadowMap.type,r=e.getMRT();return mC(e,t,n,r?r.has(`velocity`):!1)}setupShadowPosition({context:e,material:t}){gC.assign(t.receivedShadowPositionNode||e.shadowPositionWorld||du)}},gC=ji(`vec3`,`shadowPositionWorld`),_C=j(({depthTexture:e,shadowCoord:t,depthLayer:n})=>{let r=q(e,t.xy).setName(`t_basic`);return e.isArrayTexture&&(r=r.depth(n)),r.compare(t.z)}),vC=j(({depthTexture:e,shadowCoord:t,shadow:n,depthLayer:r})=>{let i=(t,n)=>{let i=q(e,t);return e.isArrayTexture&&(i=i.depth(r)),i.compare(n)},a=Ku(`mapSize`,`vec2`,n).setGroup(V),o=Ku(`radius`,`float`,n).setGroup(V),s=I(1).div(a),c=o.mul(s.x),l=yb(ul.xy).mul(6.28318530718);return wa(i(t.xy.add(bb(0,5,l).mul(c)),t.z),i(t.xy.add(bb(1,5,l).mul(c)),t.z),i(t.xy.add(bb(2,5,l).mul(c)),t.z),i(t.xy.add(bb(3,5,l).mul(c)),t.z),i(t.xy.add(bb(4,5,l).mul(c)),t.z)).mul(1/5)}),yC=j(({depthTexture:e,shadowCoord:t,depthLayer:n},r)=>{let i=q(e).sample(t.xy);e.isArrayTexture&&(i=i.depth(n)),i=i.rg;let a=i.x,o=Vo(1e-7,i.y.mul(i.y)),s=r.renderer.reversedDepthBuffer?Ho(a,t.z):Ho(t.z,a),c=N(1).toVar();return M(s.notEqual(1),()=>{let e=t.z.sub(a),n=o.div(o.add(e.mul(e)));n=rs(U(n,.3).div(.65)),c.assign(Vo(s,n))}),c}),bC=j(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=N(0).toVar(`meanVertical`),o=N(0).toVar(`squareMeanVertical`),s=e.lessThanEqual(N(1)).select(N(0),N(2).div(e.sub(1))),c=e.lessThanEqual(N(1)).select(N(0),N(-1));return X({start:P(0),end:P(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(N(e).mul(s)),u=r.sample(wa(ul.xy,I(0,l).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),u=u.x,a.addAssign(u),o.addAssign(u.mul(u))}),a.divAssign(e),o.divAssign(e),I(a,so(o.sub(a.mul(a)).max(0)))}),xC=j(({samples:e,radius:t,size:n,shadowPass:r,depthLayer:i})=>{let a=N(0).toVar(`meanHorizontal`),o=N(0).toVar(`squareMeanHorizontal`),s=e.lessThanEqual(N(1)).select(N(0),N(2).div(e.sub(1))),c=e.lessThanEqual(N(1)).select(N(0),N(-1));return X({start:P(0),end:P(e),type:`int`,condition:`<`},({i:e})=>{let l=c.add(N(e).mul(s)),u=r.sample(wa(ul.xy,I(l,0).mul(t)).div(n));r.value.isArrayTexture&&(u=u.depth(i)),a.addAssign(u.x),o.addAssign(wa(u.y.mul(u.y),u.x.mul(u.x)))}),a.divAssign(e),o.divAssign(e),I(a,so(o.sub(a.mul(a)).max(0)))}),SC=[_C,vC,null,yC],CC,wC=new eb,TC=class extends hC{static get type(){return`ShadowNode`}constructor(e,t=null){super(e),this.shadow=t||e.shadow,this.shadowMap=null,this.vsmShadowMapVertical=null,this.vsmShadowMapHorizontal=null,this.vsmMaterialVertical=null,this.vsmMaterialHorizontal=null,this._node=null,this._currentShadowType=null,this._cameraFrameId=new WeakMap,this.isShadowNode=!0,this.depthLayer=0}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:i,depthLayer:a}){let o=r.x.greaterThanEqual(0).and(r.x.lessThanEqual(1)).and(r.y.greaterThanEqual(0)).and(r.y.lessThanEqual(1)).and(r.z.lessThanEqual(1)),s=t({depthTexture:n,shadowCoord:r,shadow:i,depthLayer:a});return o.select(s,N(1))}setupShadowCoord(e,t){let{shadow:n}=this,{renderer:r}=e,i=n.biasNode||Ku(`bias`,`float`,n).setGroup(V),a=t,o;if(n.camera.isOrthographicCamera||r.logarithmicDepthBuffer!==!0)a=a.xyz.div(a.w),o=a.z;else{let e=a.w;a=a.xy.div(e);let t=Ku(`near`,`float`,n.camera).setGroup(V),r=Ku(`far`,`float`,n.camera).setGroup(V);o=Rp(e.negate(),t,r)}return a=L(a.x,a.y.oneMinus(),r.reversedDepthBuffer?o.sub(i):o.add(i)),a}getShadowFilterFn(e){return SC[e]}setupRenderTarget(e,t){let n=new b(e.mapSize.width,e.mapSize.height);n.name=`ShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let r=t.createRenderTarget(e.mapSize.width,e.mapSize.height);return r.texture.name=`ShadowMap`,r.texture.type=e.mapType,r.depthTexture=n,{shadowMap:r,depthTexture:n}}setupShadow(e){let{renderer:t,camera:n}=e,{light:r,shadow:i}=this,{depthTexture:a,shadowMap:o}=this.setupRenderTarget(i,e),s=t.shadowMap.type,c=t.hasCompatibility(un.TEXTURE_COMPARE);if(s===1&&c?(a.minFilter=Ce,a.magFilter=Ce):(a.minFilter=Gt,a.magFilter=Gt),i.camera.coordinateSystem=n.coordinateSystem,i.camera.updateProjectionMatrix(),s===3&&i.isPointLightShadow!==!0){a.compareFunction=null,o.depth>1?(o._vsmShadowMapVertical||(o._vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:mn,type:ye,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapVertical.texture.name=`VSMVertical`),this.vsmShadowMapVertical=o._vsmShadowMapVertical,o._vsmShadowMapHorizontal||(o._vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:mn,type:ye,depth:o.depth,depthBuffer:!1}),o._vsmShadowMapHorizontal.texture.name=`VSMHorizontal`),this.vsmShadowMapHorizontal=o._vsmShadowMapHorizontal):(this.vsmShadowMapVertical=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:mn,type:ye,depthBuffer:!1}),this.vsmShadowMapHorizontal=e.createRenderTarget(i.mapSize.width,i.mapSize.height,{format:mn,type:ye,depthBuffer:!1}));let t=q(a);a.isArrayTexture&&(t=t.depth(this.depthLayer));let n=q(this.vsmShadowMapVertical.texture);a.isArrayTexture&&(n=n.depth(this.depthLayer));let r=Ku(`blurSamples`,`float`,i).setGroup(V),s=Ku(`radius`,`float`,i).setGroup(V),c=Ku(`mapSize`,`vec2`,i).setGroup(V),l=_s(e.getSharedContext()),u=this.vsmMaterialVertical||=new em;u.contextNode=l,u.fragmentNode=bC({samples:r,radius:s,size:c,shadowPass:t,depthLayer:this.depthLayer}),u.name=`VSMVertical`,u=this.vsmMaterialHorizontal||=new em,u.contextNode=l,u.fragmentNode=xC({samples:r,radius:s,size:c,shadowPass:n,depthLayer:this.depthLayer}),u.name=`VSMHorizontal`}let l=Ku(`intensity`,`float`,i).setGroup(V),u=Ku(`normalBias`,`float`,i).setGroup(V),d=JS(r),f=Tu.mul(u),p;p=!t.highPrecision||e.material.receivedShadowPositionNode||e.context.shadowPositionWorld?d.mul(gC.add(f)):H(`mat4`).onObjectUpdate(({object:e},t)=>t.value.multiplyMatrices(d.value,e.matrixWorld)).mul(lu).add(d.mul(R(f,0)));let m=this.setupShadowCoord(e,p),h=i.filterNode||this.getShadowFilterFn(t.shadowMap.type)||null;if(h===null)throw Error(`THREE.WebGPURenderer: Shadow map type not supported yet.`);let g=s===3&&i.isPointLightShadow!==!0?this.vsmShadowMapHorizontal.texture:a,_=this.setupShadowFilter(e,{filterFn:h,shadowTexture:o.texture,depthTexture:g,shadowCoord:m,shadow:i,depthLayer:this.depthLayer}),v;t.shadowMap.transmitted===!0&&(o.texture.isCubeTexture?v=Uu(o.texture,m.xyz):(v=q(o.texture,m),a.isArrayTexture&&(v=v.depth(this.depthLayer))));let y;y=v?K(1,_.rgb.mix(v,1),l.mul(v.a)).toVar():K(1,_,l).toVar(),this.shadowMap=o,this.shadow.map=o;let b=`${this.light.type} Shadow [ ${this.light.name||`ID: `+this.light.id} ]`;return v&&y.toInspector(`${b} / Color`,()=>this.shadowMap.texture.isCubeTexture?Uu(this.shadowMap.texture,vm()):q(this.shadowMap.texture)),y.toInspector(`${b} / Depth`,()=>{let e=Ku(`near`,`float`,this.shadow.camera),t=Ku(`far`,`float`,this.shadow.camera),n;n=this.shadowMap.texture.isCubeTexture?Uu(this.shadowMap.depthTexture,vm()).r:q(this.shadowMap.depthTexture).r;let r;return r=this.shadow.camera.isPerspectiveCamera?Lp(n,e,t):Pp(n,e,t),r=Mp(r,e,t),r.oneMinus()})}setup(e){if(e.renderer.shadowMap.enabled!==!1)return j(()=>{let t=e.renderer.shadowMap.type;this._currentShadowType!==t&&(this._reset(),this._node=null);let n=this._node;return this.setupShadowPosition(e),n===null&&(this._node=n=this.setupShadow(e),this._currentShadowType=t),e.material.receivedShadowNode&&(n=e.material.receivedShadowNode(n)),n})()}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e;t.updateMatrices(r),n.setSize(t.mapSize.width,t.mapSize.height,n.depth);let o=a.name;a.name=`Shadow Map [ ${r.name||`ID: `+r.id} ]`,i.render(a,t.camera),a.name=o}updateShadow(e){let{shadowMap:t,shadow:n}=this,{renderer:r,scene:i,camera:a}=e,o=r.shadowMap.type,s=t.depthTexture.version;this._depthVersionCached=s;let c=n.camera.layers.mask;n.camera.layers.mask&4294967294||(n.camera.layers.mask=a.layers.mask);let l=r.getRenderObjectFunction();CC=cb(r,i,CC),i.overrideMaterial=this.getShadowMaterial(),r.setRenderObjectFunction(this.getShadowRenderObjectFunction(r,this.shadow||this.light.shadow)),r.setClearColor(0,0),r.setRenderTarget(t),this.renderShadow(e),r.setRenderObjectFunction(l),o===3&&n.isPointLightShadow!==!0&&this.vsmPass(r),n.camera.layers.mask=c,lb(r,i,CC)}vsmPass(e){let{shadow:t}=this,n=this.shadowMap.depth;this.vsmShadowMapVertical.setSize(t.mapSize.width,t.mapSize.height,n),this.vsmShadowMapHorizontal.setSize(t.mapSize.width,t.mapSize.height,n),e.setRenderTarget(this.vsmShadowMapVertical),wC.material=this.vsmMaterialVertical,wC.render(e),e.setRenderTarget(this.vsmShadowMapHorizontal),wC.material=this.vsmMaterialHorizontal,wC.render(e)}dispose(){this._reset(),super.dispose()}_reset(){this._currentShadowType=null,this.disposeShadowMaterial(),this.shadowMap&&=(this.shadowMap.dispose(),null),this.vsmShadowMapVertical!==null&&(this.vsmShadowMapVertical.dispose(),this.vsmShadowMapVertical=null,this.vsmMaterialVertical.dispose(),this.vsmMaterialVertical=null),this.vsmShadowMapHorizontal!==null&&(this.vsmShadowMapHorizontal.dispose(),this.vsmShadowMapHorizontal=null,this.vsmMaterialHorizontal.dispose(),this.vsmMaterialHorizontal=null)}updateBefore(e){if(e.renderer._isPreCompiling===!0)return;let{shadow:t}=this,n=t.needsUpdate||t.autoUpdate;n&&(this._cameraFrameId.get(e.camera)===e.frameId&&(n=!1),this._cameraFrameId.set(e.camera,e.frameId)),n&&(this.updateShadow(e),this.shadowMap.depthTexture.version===this._depthVersionCached&&(t.needsUpdate=!1))}},EC=(e,t)=>new TC(e,t),DC=new Et,OC=new nt,kC=new x,AC=new x,jC=[new x(1,0,0),new x(-1,0,0),new x(0,-1,0),new x(0,1,0),new x(0,0,1),new x(0,0,-1)],MC=[new x(0,-1,0),new x(0,-1,0),new x(0,0,-1),new x(0,0,1),new x(0,-1,0),new x(0,-1,0)],NC=[new x(1,0,0),new x(-1,0,0),new x(0,1,0),new x(0,-1,0),new x(0,0,1),new x(0,0,-1)],PC=[new x(0,-1,0),new x(0,-1,0),new x(0,0,1),new x(0,0,-1),new x(0,-1,0),new x(0,-1,0)],FC=j(({depthTexture:e,bd3D:t,dp:n})=>Uu(e,t).compare(n)),IC=j(({depthTexture:e,bd3D:t,dp:n,shadow:r})=>{let i=Ku(`radius`,`float`,r).setGroup(V),a=Ku(`mapSize`,`vec2`,r).setGroup(V),o=i.div(a.x),s=Eo(t),c=fo(qo(t,s.x.greaterThan(s.z).select(L(0,1,0),L(1,0,0)))),l=qo(t,c),u=yb(ul.xy).mul(6.28318530718),d=bb(0,5,u),f=bb(1,5,u),p=bb(2,5,u),m=bb(3,5,u),h=bb(4,5,u);return Uu(e,t.add(c.mul(d.x).add(l.mul(d.y)).mul(o))).compare(n).add(Uu(e,t.add(c.mul(f.x).add(l.mul(f.y)).mul(o))).compare(n)).add(Uu(e,t.add(c.mul(p.x).add(l.mul(p.y)).mul(o))).compare(n)).add(Uu(e,t.add(c.mul(m.x).add(l.mul(m.y)).mul(o))).compare(n)).add(Uu(e,t.add(c.mul(h.x).add(l.mul(h.y)).mul(o))).compare(n)).mul(1/5)}),LC=j(({filterFn:e,depthTexture:t,shadowCoord:n,shadow:r},i)=>{let a=n.xyz.toConst(),o=a.abs().toConst(),s=o.x.max(o.y).max(o.z),c=H(`float`).setGroup(V).onRenderUpdate(()=>r.camera.near),l=H(`float`).setGroup(V).onRenderUpdate(()=>r.camera.far),u=Ku(`bias`,`float`,r).setGroup(V),d=N(1).toVar();return M(s.sub(l).lessThanEqual(0).and(s.sub(c).greaterThanEqual(0)),()=>{let n;i.renderer.reversedDepthBuffer?(n=Ip(s.negate(),c,l),n.subAssign(u)):i.renderer.logarithmicDepthBuffer?(n=Rp(s.negate(),c,l),n.addAssign(u)):(n=Fp(s.negate(),c,l),n.addAssign(u));let o=a.normalize();d.assign(e({depthTexture:t,bd3D:o,dp:n,shadow:r}))}),d}),RC=class extends TC{static get type(){return`PointShadowNode`}constructor(e,t=null){super(e,t)}getShadowFilterFn(e){return e===0?FC:IC}setupShadowCoord(e,t){return t}setupShadowFilter(e,{filterFn:t,depthTexture:n,shadowCoord:r,shadow:i}){return LC({filterFn:t,depthTexture:n,shadowCoord:r,shadow:i})}setupRenderTarget(e,t){let n=new rn(e.mapSize.width);n.name=`PointShadowDepthTexture`,n.compareFunction=t.renderer.reversedDepthBuffer?518:515;let r=t.createCubeRenderTarget(e.mapSize.width);return r.texture.name=`PointShadowMap`,r.depthTexture=n,{shadowMap:r,depthTexture:n}}renderShadow(e){let{shadow:t,shadowMap:n,light:r}=this,{renderer:i,scene:a}=e,o=t.camera,s=t.matrix,c=i.coordinateSystem===sn,l=c?jC:NC,u=c?MC:PC;n.setSize(t.mapSize.width,t.mapSize.width);let d=i.autoClear,f=i.getClearColor(DC),p=i.getClearAlpha();i.autoClear=!1,i.setClearColor(t.clearColor,t.clearAlpha);for(let e=0;e<6;e++){i.setRenderTarget(n,e),i.clear();let c=r.distance||o.far;c!==o.far&&(o.far=c,o.updateProjectionMatrix()),kC.setFromMatrixPosition(r.matrixWorld),o.position.copy(kC),AC.copy(o.position),AC.add(l[e]),o.up.copy(u[e]),o.lookAt(AC),o.updateMatrixWorld(),s.makeTranslation(-kC.x,-kC.y,-kC.z),OC.multiplyMatrices(o.projectionMatrix,o.matrixWorldInverse),t._frustum.setFromProjectionMatrix(OC,o.coordinateSystem,o.reversedDepth);let d=a.name;a.name=`Point Light Shadow [ ${r.name||`ID: `+r.id} ] - Face ${e+1}`,i.render(a,o),a.name=d}i.autoClear=d,i.setClearColor(f,p)}},zC=(e,t)=>new RC(e,t),BC=class extends _p{static get type(){return`AnalyticLightNode`}constructor(e=null){super(),this.light=e,this.color=new Et,this.colorNode=e&&e.colorNode||H(this.color).setGroup(V),this.baseColorNode=null,this.shadowNode=null,this.shadowColorNode=null,this.isAnalyticLightNode=!0,this.updateType=w.FRAME,e&&e.shadow&&(this._shadowDisposeListener=()=>{this.disposeShadow()},e.addEventListener(`dispose`,this._shadowDisposeListener))}dispose(){this._shadowDisposeListener&&this.light.removeEventListener(`dispose`,this._shadowDisposeListener),super.dispose()}disposeShadow(){this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null),this.shadowColorNode=null,this.baseColorNode!==null&&(this.colorNode=this.baseColorNode,this.baseColorNode=null)}getHash(){return this.light.uuid}getLightVector(e){return QS(this.light).sub(e.context.positionView||pu)}setupDirect(){}setupDirectRectArea(){}setupShadowNode(){return EC(this.light)}setupShadow(e){let{renderer:t}=e;if(t.shadowMap.enabled===!1)return;let n=this.shadowColorNode;if(n===null){let e=this.light.shadow.shadowNode,t;t=e===void 0?this.setupShadowNode():D(e),this.shadowNode=t,this.shadowColorNode=n=this.colorNode.mul(t),this.baseColorNode=this.colorNode}e.context.getShadow&&(n=e.context.getShadow(this,e)),this.colorNode=n}setup(e){this.colorNode=this.baseColorNode||this.colorNode,this.light.castShadow?e.object.receiveShadow&&this.setupShadow(e):this.shadowNode!==null&&(this.shadowNode.dispose(),this.shadowNode=null,this.shadowColorNode=null);let t=this.setupDirect(e),n=this.setupDirectRectArea(e);t&&e.lightsNode.setupDirectLight(e,this,t),n&&e.lightsNode.setupDirectRectAreaLight(e,this,n)}update(){let{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}},VC=j(({lightDistance:e,cutoffDistance:t,decayExponent:n})=>{let r=e.pow(n).max(.01).reciprocal();return t.greaterThan(0).select(r.mul(e.div(t).pow4().oneMinus().clamp().pow2()),r)}),HC=({color:e,lightVector:t,cutoffDistance:n,decayExponent:r})=>{let i=t.normalize(),a=VC({lightDistance:t.length(),cutoffDistance:n,decayExponent:r});return{lightDirection:i,lightColor:e.mul(a)}},UC=class extends BC{static get type(){return`PointLightNode`}constructor(e=null){super(e),this.cutoffDistanceNode=H(0).setGroup(V),this.decayExponentNode=H(2).setGroup(V)}update(e){let{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setupShadowNode(){return zC(this.light)}setupDirect(e){return HC({color:this.colorNode,lightVector:this.getLightVector(e),cutoffDistance:this.cutoffDistanceNode,decayExponent:this.decayExponentNode})}},WC=j(([e=Lc()])=>{let t=e.mul(2),n=t.x.floor(),r=t.y.floor();return n.add(r).mod(2).sign()}),GC=j(([e=Lc()],{renderer:t,material:n})=>{let r=ns(e.mul(2).sub(1)),i;if(n.alphaToCoverage&&t.currentSamples>0){let e=N(r.fwidth()).toVar();i=os(e.oneMinus(),e.add(1),r).oneMinus()}else i=hs(r.greaterThan(1),0,1);return i}),KC=(e,t=0)=>{e=I(e),t=N(t);let n=W(t,Math.PI/180),r=mo(n),i=go(n),a=e.x,o=e.y;return I(wa(W(i,a),W(r,o)),U(W(i,o),W(r,a)))},qC=(e,t=0,n=L(0,1,0))=>{e=L(e),t=N(t),n=L(n);let r=fo(n),i=W(t,Math.PI/180),a=mo(i),o=go(i),s=U(1,o);return e.mul(o).add(e.cross(r).mul(a)).add(r.mul(r.dot(e).mul(s)))},JC=j(([e,t,n])=>{let r=N(n).toVar(),i=N(t).toVar();return hs(hi(e).toVar(),i,r).uniformFlow()}).setLayout({name:`mx_select`,type:`float`,inputs:[{name:`b`,type:`bool`},{name:`t`,type:`float`},{name:`f`,type:`float`}]}),YC=j(([e,t])=>{let n=hi(t).toVar(),r=N(e).toVar();return hs(n,r.negate(),r).uniformFlow()}).setLayout({name:`mx_negate_if`,type:`float`,inputs:[{name:`val`,type:`float`},{name:`b`,type:`bool`}]}),XC=j(([e])=>P(lo(N(e).toVar()))).setLayout({name:`mx_floor`,type:`int`,inputs:[{name:`x`,type:`float`}]}),ZC=j(([e,t])=>{let n=N(e).toVar();return t.assign(XC(n)),n.sub(N(t))}),QC=(e,t,n,r,i,a)=>{let o=N(U(1,i)).toVar();return U(1,a).mul(e.mul(o).add(t.mul(i))).add(a.mul(n.mul(o).add(r.mul(i))))},$C=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=N(U(1,c)).toVar(),f=N(U(1,l)).toVar();return N(U(1,u)).toVar().mul(f.mul(e.mul(d).add(t.mul(c))).add(l.mul(n.mul(d).add(r.mul(c))))).add(u.mul(f.mul(i.mul(d).add(a.mul(c))).add(l.mul(o.mul(d).add(s.mul(c))))))},ew=vy([j(([e,t,n,r,i,a])=>{let o=N(a).toVar(),s=N(i).toVar(),c=N(r).toVar(),l=N(n).toVar(),u=N(t).toVar();return QC(N(e).toVar(),u,l,c,s,o)}).setLayout({name:`mx_bilerp_0`,type:`float`,inputs:[{name:`v0`,type:`float`},{name:`v1`,type:`float`},{name:`v2`,type:`float`},{name:`v3`,type:`float`},{name:`s`,type:`float`},{name:`t`,type:`float`}]}),j(([e,t,n,r,i,a])=>{let o=N(a).toVar(),s=N(i).toVar(),c=L(r).toVar(),l=L(n).toVar(),u=L(t).toVar();return QC(L(e).toVar(),u,l,c,s,o)}).setLayout({name:`mx_bilerp_1`,type:`vec3`,inputs:[{name:`v0`,type:`vec3`},{name:`v1`,type:`vec3`},{name:`v2`,type:`vec3`},{name:`v3`,type:`vec3`},{name:`s`,type:`float`},{name:`t`,type:`float`}]})]),tw=vy([j(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=N(u).toVar(),f=N(l).toVar(),p=N(c).toVar(),m=N(s).toVar(),h=N(o).toVar(),g=N(a).toVar(),_=N(i).toVar(),v=N(r).toVar(),y=N(n).toVar(),b=N(t).toVar();return $C(N(e).toVar(),b,y,v,_,g,h,m,p,f,d)}).setLayout({name:`mx_trilerp_0`,type:`float`,inputs:[{name:`v0`,type:`float`},{name:`v1`,type:`float`},{name:`v2`,type:`float`},{name:`v3`,type:`float`},{name:`v4`,type:`float`},{name:`v5`,type:`float`},{name:`v6`,type:`float`},{name:`v7`,type:`float`},{name:`s`,type:`float`},{name:`t`,type:`float`},{name:`r`,type:`float`}]}),j(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=N(u).toVar(),f=N(l).toVar(),p=N(c).toVar(),m=L(s).toVar(),h=L(o).toVar(),g=L(a).toVar(),_=L(i).toVar(),v=L(r).toVar(),y=L(n).toVar(),b=L(t).toVar();return $C(L(e).toVar(),b,y,v,_,g,h,m,p,f,d)}).setLayout({name:`mx_trilerp_1`,type:`vec3`,inputs:[{name:`v0`,type:`vec3`},{name:`v1`,type:`vec3`},{name:`v2`,type:`vec3`},{name:`v3`,type:`vec3`},{name:`v4`,type:`vec3`},{name:`v5`,type:`vec3`},{name:`v6`,type:`vec3`},{name:`v7`,type:`vec3`},{name:`s`,type:`float`},{name:`t`,type:`float`},{name:`r`,type:`float`}]})]),nw=vy([j(([e,t,n])=>{let r=N(n).toVar(),i=N(t).toVar(),a=F(F(e).toVar().bitAnd(F(7))).toVar(),o=N(JC(a.lessThan(F(4)),i,r)).toVar(),s=N(W(2,JC(a.lessThan(F(4)),r,i))).toVar();return YC(o,hi(a.bitAnd(F(1)))).add(YC(s,hi(a.bitAnd(F(2)))))}).setLayout({name:`mx_gradient_float_0`,type:`float`,inputs:[{name:`hash`,type:`uint`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=N(t).toVar(),s=F(F(e).toVar().bitAnd(F(15))).toVar(),c=N(JC(s.lessThan(F(8)),o,a)).toVar(),l=N(JC(s.lessThan(F(4)),a,JC(s.equal(F(12)).or(s.equal(F(14))),o,i))).toVar();return YC(c,hi(s.bitAnd(F(1)))).add(YC(l,hi(s.bitAnd(F(2)))))}).setLayout({name:`mx_gradient_float_1`,type:`float`,inputs:[{name:`hash`,type:`uint`},{name:`x`,type:`float`},{name:`y`,type:`float`},{name:`z`,type:`float`}]})]),rw=vy([j(([e,t,n])=>{let r=N(n).toVar(),i=N(t).toVar(),a=bi(e).toVar();return L(nw(a.x,i,r),nw(a.y,i,r),nw(a.z,i,r))}).setLayout({name:`mx_gradient_vec3_0`,type:`vec3`,inputs:[{name:`hash`,type:`uvec3`},{name:`x`,type:`float`},{name:`y`,type:`float`}]}),j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=N(t).toVar(),s=bi(e).toVar();return L(nw(s.x,o,a,i),nw(s.y,o,a,i),nw(s.z,o,a,i))}).setLayout({name:`mx_gradient_vec3_1`,type:`vec3`,inputs:[{name:`hash`,type:`uvec3`},{name:`x`,type:`float`},{name:`y`,type:`float`},{name:`z`,type:`float`}]})]),iw=j(([e])=>W(.6616,N(e).toVar())).setLayout({name:`mx_gradient_scale2d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),aw=j(([e])=>W(.982,N(e).toVar())).setLayout({name:`mx_gradient_scale3d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),ow=vy([iw,j(([e])=>W(.6616,L(e).toVar())).setLayout({name:`mx_gradient_scale2d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),sw=vy([aw,j(([e])=>W(.982,L(e).toVar())).setLayout({name:`mx_gradient_scale3d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),cw=j(([e,t])=>{let n=P(t).toVar(),r=F(e).toVar();return r.shiftLeft(n).bitOr(r.shiftRight(P(32).sub(n)))}).setLayout({name:`mx_rotl32`,type:`uint`,inputs:[{name:`x`,type:`uint`},{name:`k`,type:`int`}]}),lw=j(([e,t,n])=>(e=F(e).toVar(),t=F(t).toVar(),n=F(n).toVar(),e.subAssign(n),e.bitXorAssign(cw(n,P(4))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(cw(e,P(6))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(cw(t,P(8))),t.addAssign(e),e.subAssign(n),e.bitXorAssign(cw(n,P(16))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(cw(e,P(19))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(cw(t,P(4))),t.addAssign(e),bi(e,t,n))).setLayout({name:`mx_bjmix`,type:`uvec3`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),uw=j(([e,t,n])=>{let r=F(n).toVar(),i=F(t).toVar(),a=F(e).toVar();return r.bitXorAssign(i),r.subAssign(cw(i,P(14))),a.bitXorAssign(r),a.subAssign(cw(r,P(11))),i.bitXorAssign(a),i.subAssign(cw(a,P(25))),r.bitXorAssign(i),r.subAssign(cw(i,P(16))),a.bitXorAssign(r),a.subAssign(cw(r,P(4))),i.bitXorAssign(a),i.subAssign(cw(a,P(14))),r.bitXorAssign(i),r.subAssign(cw(i,P(24))),r}).setLayout({name:`mx_bjfinal`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),dw=j(([e])=>N(F(e).toVar()).div(N(F(4294967295)))).setLayout({name:`mx_bits_to_01`,type:`float`,inputs:[{name:`bits`,type:`uint`}]}),fw=j(([e])=>{let t=N(e).toVar();return t.mul(t).mul(t).mul(t.mul(t.mul(6).sub(15)).add(10))}).setLayout({name:`mx_fade`,type:`float`,inputs:[{name:`t`,type:`float`}]}),pw=vy([j(([e])=>{let t=P(e).toVar(),n=F(F(1)).toVar(),r=F(F(3735928559).add(n.shiftLeft(F(2))).add(F(13))).toVar();return uw(r.add(F(t)),r,r)}).setLayout({name:`mx_hash_int_0`,type:`uint`,inputs:[{name:`x`,type:`int`}]}),j(([e,t])=>{let n=P(t).toVar(),r=P(e).toVar(),i=F(F(2)).toVar(),a=F().toVar(),o=F().toVar(),s=F().toVar();return a.assign(o.assign(s.assign(F(3735928559).add(i.shiftLeft(F(2))).add(F(13))))),a.addAssign(F(r)),o.addAssign(F(n)),uw(a,o,s)}).setLayout({name:`mx_hash_int_1`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),j(([e,t,n])=>{let r=P(n).toVar(),i=P(t).toVar(),a=P(e).toVar(),o=F(F(3)).toVar(),s=F().toVar(),c=F().toVar(),l=F().toVar();return s.assign(c.assign(l.assign(F(3735928559).add(o.shiftLeft(F(2))).add(F(13))))),s.addAssign(F(a)),c.addAssign(F(i)),l.addAssign(F(r)),uw(s,c,l)}).setLayout({name:`mx_hash_int_2`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]}),j(([e,t,n,r])=>{let i=P(r).toVar(),a=P(n).toVar(),o=P(t).toVar(),s=P(e).toVar(),c=F(F(4)).toVar(),l=F().toVar(),u=F().toVar(),d=F().toVar();l.assign(u.assign(d.assign(F(3735928559).add(c.shiftLeft(F(2))).add(F(13))))),l.addAssign(F(s)),u.addAssign(F(o)),d.addAssign(F(a));let f=bi(lw(l,u,d)).toVar();return l.assign(f.x),u.assign(f.y),d.assign(f.z),l.addAssign(F(i)),uw(l,u,d)}).setLayout({name:`mx_hash_int_3`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`},{name:`xx`,type:`int`}]}),j(([e,t,n,r,i])=>{let a=P(i).toVar(),o=P(r).toVar(),s=P(n).toVar(),c=P(t).toVar(),l=P(e).toVar(),u=F(F(5)).toVar(),d=F().toVar(),f=F().toVar(),p=F().toVar();d.assign(f.assign(p.assign(F(3735928559).add(u.shiftLeft(F(2))).add(F(13))))),d.addAssign(F(l)),f.addAssign(F(c)),p.addAssign(F(s));let m=bi(lw(d,f,p)).toVar();return d.assign(m.x),f.assign(m.y),p.assign(m.z),d.addAssign(F(o)),f.addAssign(F(a)),uw(d,f,p)}).setLayout({name:`mx_hash_int_4`,type:`uint`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`},{name:`xx`,type:`int`},{name:`yy`,type:`int`}]})]),mw=vy([j(([e,t])=>{let n=P(t).toVar(),r=F(pw(P(e).toVar(),n)).toVar(),i=bi().toVar();return i.x.assign(r.bitAnd(P(255))),i.y.assign(r.shiftRight(P(8)).bitAnd(P(255))),i.z.assign(r.shiftRight(P(16)).bitAnd(P(255))),i}).setLayout({name:`mx_hash_vec3_0`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`}]}),j(([e,t,n])=>{let r=P(n).toVar(),i=P(t).toVar(),a=F(pw(P(e).toVar(),i,r)).toVar(),o=bi().toVar();return o.x.assign(a.bitAnd(P(255))),o.y.assign(a.shiftRight(P(8)).bitAnd(P(255))),o.z.assign(a.shiftRight(P(16)).bitAnd(P(255))),o}).setLayout({name:`mx_hash_vec3_1`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]})]),hw=vy([j(([e])=>{let t=I(e).toVar(),n=P().toVar(),r=P().toVar(),i=N(ZC(t.x,n)).toVar(),a=N(ZC(t.y,r)).toVar(),o=N(fw(i)).toVar(),s=N(fw(a)).toVar();return ow(N(ew(nw(pw(n,r),i,a),nw(pw(n.add(P(1)),r),i.sub(1),a),nw(pw(n,r.add(P(1))),i,a.sub(1)),nw(pw(n.add(P(1)),r.add(P(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),j(([e])=>{let t=L(e).toVar(),n=P().toVar(),r=P().toVar(),i=P().toVar(),a=N(ZC(t.x,n)).toVar(),o=N(ZC(t.y,r)).toVar(),s=N(ZC(t.z,i)).toVar(),c=N(fw(a)).toVar(),l=N(fw(o)).toVar(),u=N(fw(s)).toVar();return sw(N(tw(nw(pw(n,r,i),a,o,s),nw(pw(n.add(P(1)),r,i),a.sub(1),o,s),nw(pw(n,r.add(P(1)),i),a,o.sub(1),s),nw(pw(n.add(P(1)),r.add(P(1)),i),a.sub(1),o.sub(1),s),nw(pw(n,r,i.add(P(1))),a,o,s.sub(1)),nw(pw(n.add(P(1)),r,i.add(P(1))),a.sub(1),o,s.sub(1)),nw(pw(n,r.add(P(1)),i.add(P(1))),a,o.sub(1),s.sub(1)),nw(pw(n.add(P(1)),r.add(P(1)),i.add(P(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`}]})]),gw=vy([j(([e])=>{let t=I(e).toVar(),n=P().toVar(),r=P().toVar(),i=N(ZC(t.x,n)).toVar(),a=N(ZC(t.y,r)).toVar(),o=N(fw(i)).toVar(),s=N(fw(a)).toVar();return ow(L(ew(rw(mw(n,r),i,a),rw(mw(n.add(P(1)),r),i.sub(1),a),rw(mw(n,r.add(P(1))),i,a.sub(1)),rw(mw(n.add(P(1)),r.add(P(1))),i.sub(1),a.sub(1)),o,s)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),j(([e])=>{let t=L(e).toVar(),n=P().toVar(),r=P().toVar(),i=P().toVar(),a=N(ZC(t.x,n)).toVar(),o=N(ZC(t.y,r)).toVar(),s=N(ZC(t.z,i)).toVar(),c=N(fw(a)).toVar(),l=N(fw(o)).toVar(),u=N(fw(s)).toVar();return sw(L(tw(rw(mw(n,r,i),a,o,s),rw(mw(n.add(P(1)),r,i),a.sub(1),o,s),rw(mw(n,r.add(P(1)),i),a,o.sub(1),s),rw(mw(n.add(P(1)),r.add(P(1)),i),a.sub(1),o.sub(1),s),rw(mw(n,r,i.add(P(1))),a,o,s.sub(1)),rw(mw(n.add(P(1)),r,i.add(P(1))),a.sub(1),o,s.sub(1)),rw(mw(n,r.add(P(1)),i.add(P(1))),a,o.sub(1),s.sub(1)),rw(mw(n.add(P(1)),r.add(P(1)),i.add(P(1))),a.sub(1),o.sub(1),s.sub(1)),c,l,u)).toVar())}).setLayout({name:`mx_perlin_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]})]),_w=vy([j(([e])=>dw(pw(P(XC(N(e).toVar())).toVar()))).setLayout({name:`mx_cell_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`float`}]}),j(([e])=>{let t=I(e).toVar();return dw(pw(P(XC(t.x)).toVar(),P(XC(t.y)).toVar()))}).setLayout({name:`mx_cell_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),j(([e])=>{let t=L(e).toVar();return dw(pw(P(XC(t.x)).toVar(),P(XC(t.y)).toVar(),P(XC(t.z)).toVar()))}).setLayout({name:`mx_cell_noise_float_2`,type:`float`,inputs:[{name:`p`,type:`vec3`}]}),j(([e])=>{let t=R(e).toVar();return dw(pw(P(XC(t.x)).toVar(),P(XC(t.y)).toVar(),P(XC(t.z)).toVar(),P(XC(t.w)).toVar()))}).setLayout({name:`mx_cell_noise_float_3`,type:`float`,inputs:[{name:`p`,type:`vec4`}]})]),vw=vy([j(([e])=>{let t=P(XC(N(e).toVar())).toVar();return L(dw(pw(t,P(0))),dw(pw(t,P(1))),dw(pw(t,P(2))))}).setLayout({name:`mx_cell_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`float`}]}),j(([e])=>{let t=I(e).toVar(),n=P(XC(t.x)).toVar(),r=P(XC(t.y)).toVar();return L(dw(pw(n,r,P(0))),dw(pw(n,r,P(1))),dw(pw(n,r,P(2))))}).setLayout({name:`mx_cell_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),j(([e])=>{let t=L(e).toVar(),n=P(lo(t.x)).toVar(),r=P(lo(t.y)).toVar(),i=P(lo(t.z)).toVar(),a=F(3735928588).toVar(),o=F().toVar(),s=F().toVar(),c=F().toVar();o.assign(s.assign(c.assign(a))),o.addAssign(F(n)),s.addAssign(F(r)),c.addAssign(F(i));let l=bi(lw(o,s,c)).toVar(),u=uw(l.x,l.y,l.z),d=uw(wa(l.x,F(1)),l.y,l.z),f=uw(wa(l.x,F(2)),l.y,l.z);return L(dw(u),dw(d),dw(f))}).setLayout({name:`mx_cell_noise_vec3_2`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),j(([e])=>{let t=R(e).toVar(),n=P(XC(t.x)).toVar(),r=P(XC(t.y)).toVar(),i=P(XC(t.z)).toVar(),a=P(XC(t.w)).toVar(),o=F(3735928592).toVar(),s=F().toVar(),c=F().toVar(),l=F().toVar();s.assign(c.assign(l.assign(o))),s.addAssign(F(n)),c.addAssign(F(r)),l.addAssign(F(i));let u=bi(lw(s,c,l)).toVar();return s.assign(u.x),c.assign(u.y),l.assign(u.z),s.addAssign(F(a)),L(dw(uw(s,c,l)),dw(uw(s,wa(c,F(1)),l)),dw(uw(s,wa(c,F(2)),l)))}).setLayout({name:`mx_cell_noise_vec3_3`,type:`vec3`,inputs:[{name:`p`,type:`vec4`}]})]),yw=j(([e])=>{let t=L(e).toVar(),n=P(lo(t.x)).toVar(),r=P(lo(t.y)).toVar(),i=P(lo(t.z)).toVar(),a=F(3735928588).toVar(),o=F().toVar(),s=F().toVar(),c=F().toVar();o.assign(s.assign(c.assign(a))),o.addAssign(F(n)),s.addAssign(F(r)),c.addAssign(F(i));let l=bi(lw(o,s,c)).toVar(),u=uw(l.x,l.y,l.z),d=uw(wa(l.x,F(1)),l.y,l.z),f=uw(wa(l.x,F(2)),l.y,l.z);return L(dw(u),dw(d),dw(f))}),bw=j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=P(t).toVar(),s=I(e).toVar(),c=N(0).toVar(),l=N(1).toVar();return X(o,()=>{c.addAssign(l.mul(hw(s))),l.mulAssign(i),s.mulAssign(a)}),c}).setLayout({name:`mx_fractal_noise_float_2d`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`octaves`,type:`int`},{name:`lacunarity`,type:`float`},{name:`diminish`,type:`float`}]}),xw=j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=P(t).toVar(),s=L(e).toVar(),c=N(0).toVar(),l=N(1).toVar();return X(o,()=>{c.addAssign(l.mul(hw(s))),l.mulAssign(i),s.mulAssign(a)}),c}).setLayout({name:`mx_fractal_noise_float`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`octaves`,type:`int`},{name:`lacunarity`,type:`float`},{name:`diminish`,type:`float`}]}),Sw=j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=P(t).toVar(),s=L(e).toVar(),c=L(0).toVar(),l=N(1).toVar();return X(o,()=>{c.addAssign(l.mul(gw(s))),l.mulAssign(i),s.mulAssign(a)}),c}).setLayout({name:`mx_fractal_noise_vec3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`octaves`,type:`int`},{name:`lacunarity`,type:`float`},{name:`diminish`,type:`float`}]}),Cw=j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=P(t).toVar(),s=L(e).toVar();return I(xw(s,o,a,i),xw(s.add(L(P(19),P(193),P(17))),o,a,i))}).setLayout({name:`mx_fractal_noise_vec2`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`octaves`,type:`int`},{name:`lacunarity`,type:`float`},{name:`diminish`,type:`float`}]}),ww=j(([e,t,n,r])=>{let i=N(r).toVar(),a=N(n).toVar(),o=P(t).toVar(),s=L(e).toVar();return R(L(Sw(s,o,a,i)).toVar(),N(xw(s.add(L(P(19),P(193),P(17))),o,a,i)).toVar())}).setLayout({name:`mx_fractal_noise_vec4`,type:`vec4`,inputs:[{name:`p`,type:`vec3`},{name:`octaves`,type:`int`},{name:`lacunarity`,type:`float`},{name:`diminish`,type:`float`}]}),Tw=vy([j(([e,t,n,r,i,a,o])=>{let s=P(o).toVar(),c=N(a).toVar(),l=P(i).toVar(),u=P(r).toVar(),d=P(n).toVar(),f=P(t).toVar(),p=I(e).toVar(),m=L(vw(I(f.add(u),d.add(l)))).toVar(),h=I(m.x,m.y).toVar();h.subAssign(.5),h.mulAssign(c),h.addAssign(.5);let g=I(I(I(N(f),N(d)).add(h)).toVar().sub(p)).toVar();return M(s.equal(P(2)),()=>Eo(g.x).add(Eo(g.y))),M(s.equal(P(3)),()=>Vo(Eo(g.x),Eo(g.y))),Ko(g,g)}).setLayout({name:`mx_worley_distance_0`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`xoff`,type:`int`},{name:`yoff`,type:`int`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),j(([e,t,n,r,i,a,o,s,c])=>{let l=P(c).toVar(),u=N(s).toVar(),d=P(o).toVar(),f=P(a).toVar(),p=P(i).toVar(),m=P(r).toVar(),h=P(n).toVar(),g=P(t).toVar(),_=L(e).toVar(),v=L(yw(L(g.add(p),h.add(f),m.add(d)))).toVar();v.subAssign(.5),v.mulAssign(u),v.addAssign(.5);let y=L(L(L(N(g),N(h),N(m)).add(v)).toVar().sub(_)).toVar();return M(l.equal(P(2)),()=>Eo(y.x).add(Eo(y.y)).add(Eo(y.z))),M(l.equal(P(3)),()=>Vo(Eo(y.x),Eo(y.y),Eo(y.z))),Ko(y,y)}).setLayout({name:`mx_worley_distance_1`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`},{name:`xoff`,type:`int`},{name:`yoff`,type:`int`},{name:`zoff`,type:`int`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),Ew=(e,t=1,n=0)=>hw(e).mul(t).add(n),Dw=j(([e,t,n])=>{let r=L(e).toVar(),i=N(t).toVar(),a=P(n).toVar(),o=P().toVar(),s=P().toVar(),c=P().toVar(),l=L(ZC(r.x,o),ZC(r.y,s),ZC(r.z,c)).toVar(),u=N(1e6).toVar(),d=L(0,0,0).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{X({start:-1,end:P(1),name:`z`,condition:`<=`},({z:n})=>{let r=N(Tw(l,e,t,n,o,s,c,i,P(0))).toVar(),a=L(yw(L(o.add(e),s.add(t),c.add(n)))).toVar();a.subAssign(.5),a.mulAssign(i),a.addAssign(.5);let f=L(L(N(e),N(t),N(n)).add(a).sub(l)).toVar();M(r.lessThan(u),()=>{u.assign(r),d.assign(f)})})})}),M(a.equal(P(1)),()=>{u.assign(_w(d.add(r)))}).Else(()=>{u.assign(so(u))}),u}),Ow=j(([e,t,n])=>{let r=I(e).toVar(),i=N(t).toVar(),a=P(n).toVar(),o=lo(r).toVar(),s=I(po(r.x),po(r.y)).toVar(),c=N(1e6).toVar(),l=I(0,0).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{let n=I(N(e),N(t)).toVar(),r=I(n.x.add(o.x),n.y.add(o.y)).toVar(),a=I(_w(L(r.x,r.y,0)),_w(L(r.x,r.y,1))).toVar();a.subAssign(.5),a.mulAssign(i),a.addAssign(.5);let u=I(n.add(a).sub(s)).toVar(),d=Ko(u,u).toVar();M(d.lessThan(c),()=>{c.assign(d),l.assign(u)})})}),M(a.equal(P(1)),()=>{c.assign(_w(l.add(r)))}).Else(()=>{c.assign(so(c))}),c}),kw=j(([e,t,n])=>{let r=P(n).toVar(),i=N(t).toVar(),a=I(e).toVar(),o=P().toVar(),s=P().toVar(),c=I(ZC(a.x,o),ZC(a.y,s)).toVar(),l=I(1e6,1e6).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{let n=N(Tw(c,e,t,o,s,i,r)).toVar();M(n.lessThan(l.x),()=>{l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.y.assign(n)})})}),M(r.equal(P(0)),()=>{l.assign(so(l))}),l}).setLayout({name:`mx_worley_noise_vec2_0`,type:`vec2`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),Aw=j(([e,t,n])=>{let r=P(n).toVar(),i=N(t).toVar(),a=I(e).toVar(),o=P().toVar(),s=P().toVar(),c=I(ZC(a.x,o),ZC(a.y,s)).toVar(),l=L(1e6,1e6,1e6).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{let n=N(Tw(c,e,t,o,s,i,r)).toVar();M(n.lessThan(l.x),()=>{l.z.assign(l.y),l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.z.assign(l.y),l.y.assign(n)}).ElseIf(n.lessThan(l.z),()=>{l.z.assign(n)})})}),M(r.equal(P(0)),()=>{l.assign(so(l))}),l}).setLayout({name:`mx_worley_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),jw=vy([kw,j(([e,t,n])=>{let r=P(n).toVar(),i=N(t).toVar(),a=L(e).toVar(),o=P().toVar(),s=P().toVar(),c=P().toVar(),l=L(ZC(a.x,o),ZC(a.y,s),ZC(a.z,c)).toVar(),u=I(1e6,1e6).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{X({start:-1,end:P(1),name:`z`,condition:`<=`},({z:n})=>{let a=N(Tw(l,e,t,n,o,s,c,i,r)).toVar();M(a.lessThan(u.x),()=>{u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.y.assign(a)})})})}),M(r.equal(P(0)),()=>{u.assign(so(u))}),u}).setLayout({name:`mx_worley_noise_vec2_1`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),Mw=vy([Aw,j(([e,t,n])=>{let r=P(n).toVar(),i=N(t).toVar(),a=L(e).toVar(),o=P().toVar(),s=P().toVar(),c=P().toVar(),l=L(ZC(a.x,o),ZC(a.y,s),ZC(a.z,c)).toVar(),u=L(1e6,1e6,1e6).toVar();return X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{X({start:-1,end:P(1),name:`z`,condition:`<=`},({z:n})=>{let a=N(Tw(l,e,t,n,o,s,c,i,r)).toVar();M(a.lessThan(u.x),()=>{u.z.assign(u.y),u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.z.assign(u.y),u.y.assign(a)}).ElseIf(a.lessThan(u.z),()=>{u.z.assign(a)})})})}),M(r.equal(P(0)),()=>{u.assign(so(u))}),u}).setLayout({name:`mx_worley_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),Nw=vy([j(([e,t,n,r])=>{let i=P(r).toVar(),a=P(n).toVar(),o=N(t).toVar(),s=I(e).toVar(),c=P().toVar(),l=P().toVar(),u=I(ZC(s.x,c),ZC(s.y,l)).toVar(),d=N(1e6).toVar(),f=I(0,0).toVar();X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{let n=N(Tw(u,e,t,c,l,o,i)).toVar(),r=L(vw(I(c.add(e),l.add(t)))).toVar(),a=I(r.x,r.y).toVar();a.subAssign(.5),a.mulAssign(o),a.addAssign(.5);let s=I(I(N(e),N(t)).add(a).sub(u)).toVar();M(n.lessThan(d),()=>{d.assign(n),f.assign(s)})})});let p=L(Mw(s,o,i)).toVar();return M(a.equal(P(1)),()=>{p.assign(vw(f.add(s)))}),p}).setLayout({name:`mx_worley_noise_vec3_style_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`style`,type:`int`},{name:`metric`,type:`int`}]}),j(([e,t,n,r])=>{let i=P(r).toVar(),a=P(n).toVar(),o=N(t).toVar(),s=L(e).toVar(),c=P().toVar(),l=P().toVar(),u=P().toVar(),d=L(ZC(s.x,c),ZC(s.y,l),ZC(s.z,u)).toVar(),f=N(1e6).toVar(),p=L(0,0,0).toVar();X({start:-1,end:P(1),name:`x`,condition:`<=`},({x:e})=>{X({start:-1,end:P(1),name:`y`,condition:`<=`},({y:t})=>{X({start:-1,end:P(1),name:`z`,condition:`<=`},({z:n})=>{let r=N(Tw(d,e,t,n,c,l,u,o,i)).toVar(),a=L(yw(L(c.add(e),l.add(t),u.add(n)))).toVar();a.subAssign(.5),a.mulAssign(o),a.addAssign(.5);let s=L(L(N(e),N(t),N(n)).add(a).sub(d)).toVar();M(r.lessThan(f),()=>{f.assign(r),p.assign(s)})})})});let m=L(Mw(s,o,i)).toVar();return M(a.equal(P(1)),()=>{m.assign(yw(p.add(s)))}),m}).setLayout({name:`mx_worley_noise_vec3_style_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`style`,type:`int`},{name:`metric`,type:`int`}]})]),Pw=j(([e,t,n,r,i,a,o,s,c,l,u,d])=>{let f=P(e).toVar(),p=I(t).toVar(),m=I(n).toVar(),h=I(r).toVar(),g=N(i).toVar(),_=N(a).toVar(),v=N(o).toVar(),y=N(s).toVar(),b=P(c).toVar(),ee=N(l).toVar(),te=N(u).toVar(),ne=P(d).toVar(),re=wa(W(p,m).toVar(),h).toVar(),ie=W(U(g,1),9e4).toVar(),ae=KC(re,ie).toVar(),oe=L(re.x,re.y,ie).toVar(),se=N(0).toVar();M(f.equal(P(0)),()=>{se.assign(Ew(ae,.5,.5))}),M(f.equal(P(1)),()=>{se.assign(_w(ae))}),M(f.equal(P(2)),()=>{se.assign(Ow(re,g,ne))}),M(f.equal(P(3)),()=>{se.assign(xw(oe,b,ee,te))});let ce=wa(_,W(se,U(v,_))).toVar(),le=rs(ce,_,v).toVar(),ue=ce.toVar();return M(y.equal(N(1)),()=>{ue.assign(le)}),ue}),Fw=j(([e,t,n,r,i,a,o,s,c,l,u,d])=>{let f=P(e).toVar(),p=L(t).toVar(),m=L(n).toVar(),h=L(r).toVar(),g=N(i).toVar(),_=N(a).toVar(),v=N(o).toVar(),y=N(s).toVar(),b=P(c).toVar(),ee=N(l).toVar(),te=N(u).toVar(),ne=P(d).toVar(),re=wa(W(p,m).toVar(),h).toVar(),ie=qC(re,W(U(g,1),9e4).toVar(),L(.1,1,0)).toVar(),ae=Ew(ie,.5,.5),oe=_w(ie),se=Dw(re,g,ne),ce=xw(ie,b,ee,te),le=ae.toVar();M(f.equal(P(1)),()=>{le.assign(oe)}),M(f.equal(P(2)),()=>{le.assign(se)}),M(f.equal(P(3)),()=>{le.assign(ce)});let ue=wa(_,W(le,U(v,_))).toVar(),de=rs(ue,_,v).toVar(),fe=ue.toVar();return M(y.equal(N(1)),()=>{fe.assign(de)}),fe}),Iw=j(([e])=>{let t=e.y,n=e.z,r=L().toVar();return M(t.lessThan(1e-4),()=>{r.assign(L(n,n,n))}).Else(()=>{let i=e.x;i=i.sub(lo(i)).mul(6).toVar();let a=P(Fo(i)),o=i.sub(N(a)),s=n.mul(t.oneMinus()),c=n.mul(t.mul(o).oneMinus()),l=n.mul(t.mul(o.oneMinus()).oneMinus());M(a.equal(P(0)),()=>{r.assign(L(n,l,s))}).ElseIf(a.equal(P(1)),()=>{r.assign(L(c,n,s))}).ElseIf(a.equal(P(2)),()=>{r.assign(L(s,n,l))}).ElseIf(a.equal(P(3)),()=>{r.assign(L(s,c,n))}).ElseIf(a.equal(P(4)),()=>{r.assign(L(l,s,n))}).Else(()=>{r.assign(L(n,s,c))})}),r}).setLayout({name:`mx_hsvtorgb`,type:`vec3`,inputs:[{name:`hsv`,type:`vec3`}]}),Lw=j(([e])=>{let t=L(e).toVar(),n=N(t.x).toVar(),r=N(t.y).toVar(),i=N(t.z).toVar(),a=N(Bo(n,Bo(r,i))).toVar(),o=N(Vo(n,Vo(r,i))).toVar(),s=N(o.sub(a)).toVar(),c=N().toVar(),l=N().toVar(),u=N().toVar();return u.assign(o),M(o.greaterThan(0),()=>{l.assign(s.div(o))}).Else(()=>{l.assign(0)}),M(l.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{M(n.greaterThanEqual(o),()=>{c.assign(r.sub(i).div(s))}).ElseIf(r.greaterThanEqual(o),()=>{c.assign(wa(2,i.sub(n).div(s)))}).Else(()=>{c.assign(wa(4,n.sub(r).div(s)))}),c.mulAssign(1/6),M(c.lessThan(0),()=>{c.addAssign(1)})}),L(c,l,u)}).setLayout({name:`mx_rgbtohsv`,type:`vec3`,inputs:[{name:`c`,type:`vec3`}]}),Rw=j(([e])=>{let t=L(e).toVar(),n=xi(Aa(t,L(.04045))).toVar();return K(L(t.div(12.92)).toVar(),L(Jo(Vo(t.add(L(.055)),L(0)).div(1.055),L(2.4))).toVar(),n)}).setLayout({name:`mx_srgb_texture_to_lin_rec709`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),zw=(e,t)=>{e=N(e),t=N(t);let n=I(t.dFdx(),t.dFdy()).length().mul(.7071067811865476);return os(e.sub(n),e.add(n),t)},Bw=(e,t,n,r)=>K(e,t,n[r].clamp()),Vw=(e,t,n=Lc())=>Bw(e,t,n,`x`),Hw=(e,t,n=Lc())=>Bw(e,t,n,`y`),Uw=(e,t,n,r,i=Lc())=>{let a=i.x.clamp(),o=i.y.clamp(),s=K(e,t,a);return K(K(n,r,a),s,o)},Ww=(e,t,n,r,i)=>K(e,t,zw(n,r[i])),Gw=(e,t,n,r=Lc())=>Ww(e,t,n,r,`x`),Kw=(e,t,n,r=Lc())=>Ww(e,t,n,r,`y`),qw=(e=1,t=0,n=Lc())=>n.mul(e).add(t),Jw=(e,t=1)=>(e=N(e),e.abs().pow(t).mul(e.sign())),Yw=(e,t=1,n=.5)=>N(e).sub(n).mul(t).add(n),Xw=(e=Lc(),t=1,n=0)=>hw(e.convert(`vec2|vec3`)).mul(t).add(n),Zw=(e=Lc(),t=1,n=0)=>gw(e.convert(`vec2|vec3`)).mul(t).add(n),Qw=(e=Lc(),t=1,n=0)=>(e=e.convert(`vec2|vec3`),R(gw(e),hw(e.add(I(19,73)))).mul(t).add(n)),$w=(e,t=0,n=1)=>{let r=Vo(Eo(U(n,t)),N(1e-6)),i=rs(Ta(U(e,t),r),N(0),N(1));return K(W(W(i,i),U(N(3),W(N(2),i))),Ho(n,e),Ho(n,t))},eT=(e=Lc())=>vw(e.convert(`vec2|vec3`)),tT=(e=Lc(),t=1,n=0)=>Ow(e,t,n),nT=(e=Lc(),t=1,n=0)=>Dw(e,t,n),rT=(e,t=Lc(),n=I(1,1),r=I(0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5,d=0)=>Pw(e,t,n,r,i,a,o,s,c,l,u,d),iT=(e,t=Lc(),n=L(1,1,1),r=L(0,0,0),i=1,a=0,o=1,s=!1,c=1,l=2,u=.5,d=0)=>Fw(e,t,n,r,i,a,o,s,c,l,u,d),aT=(e=Lc(),t=1,n=0)=>nT(e.convert(`vec2|vec3`),t,n),oT=(e=Lc(),t=1)=>jw(e.convert(`vec2|vec3`),t,P(1)),sT=(e=Lc(),t=1,n=1)=>Mw(e.convert(`vec2|vec3`),t,P(n)),cT=(e=Lc(),t=1,n=0,r=0)=>Nw(e.convert(`vec2|vec3`),t,P(n),P(r)),lT=(e=Lc())=>_w(e.convert(`vec2|vec3`)),uT=(e=Lc(),t=3,n=2,r=.5,i=1)=>bw(e,P(t),n,r).mul(i),dT=(e=Lc(),t=3,n=2,r=.5,i=1)=>xw(e,P(t),n,r).mul(i),fT=(e=Lc(),t=3,n=2,r=.5,i=1)=>Cw(e,P(t),n,r).mul(i),pT=(e=Lc(),t=3,n=2,r=.5,i=1)=>Sw(e,P(t),n,r).mul(i),mT=(e=Lc(),t=3,n=2,r=.5,i=1)=>ww(e,P(t),n,r).mul(i),hT=(e,t=N(0))=>wa(e,t),gT=(e,t=N(0))=>U(e,t),_T=(e,t=N(1))=>W(e,t),vT=(e,t=N(1))=>Ta(e,t),yT=(e,t=N(1))=>U(e,W(t,lo(Ta(e,t)))),bT=(e,t=N(1))=>Jo(e,t),xT=(e=N(0),t=N(1))=>wo(e,t),ST=()=>yy,CT=()=>xy,wT=(e,t=N(1))=>U(t,e),TT=(e,t,n,r)=>e.greaterThan(t).mix(r,n),ET=(e,t,n,r)=>e.greaterThanEqual(t).mix(r,n),DT=(e,t,n,r)=>e.equal(t).mix(r,n),OT=(e,t=null)=>{if(typeof t==`string`){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3},r=t.replace(/^out/,``).toLowerCase();if(n[r]!==void 0)return e.element(n[r])}if(typeof t==`number`)return e.element(t);if(typeof t==`string`&&t.length===1){let n={x:0,r:0,y:1,g:1,z:2,b:2,w:3,a:3};if(n[t]!==void 0)return e.element(n[t])}return e},kT=(e,t=I(0,0),n=I(1,1),r=N(0),i=I(0,0),a=P(0))=>{let o=U(e,t),s=wa(U(KC(Ta(o,n),r),i),t),c=wa(Ta(KC(U(o,i),r),n),t);return typeof a==`number`?Math.abs(a)>2**-52?c:s:K(s,c,Ho(.5,N(a)))},AT=(e,t=1,n=Lc())=>{let r=N(1/16),i=N(e),a=I(n),o=I(i.dFdx(),i.dFdy()).mul(N(t)).mul(r),s=I(a.x.dFdx(),a.x.dFdy()),c=I(a.y.dFdx(),a.y.dFdy()),l=qo(L(s.x,c.x,o.x),L(s.y,c.y,o.y));return l=Ko(l,l).lessThan(N(1e-12)).mix(l,L(0,0,1)),l=l.z.lessThan(N(0)).mix(l,l.mul(-1)),fo(l).mul(.5).add(.5)},jT=j(([e,t,n])=>{let r=fo(e).toVar(),i=t.mul(.5).add(n).sub(du).div(r).toVar(),a=t.mul(-.5).add(n).sub(du).div(r).toVar(),o=L().toVar();o.x=r.x.greaterThan(N(0)).select(i.x,a.x),o.y=r.y.greaterThan(N(0)).select(i.y,a.y),o.z=r.z.greaterThan(N(0)).select(i.z,a.z);let s=Bo(o.x,o.y,o.z).toVar();return du.add(r.mul(s)).toVar().sub(n)}),MT=j(([e,t])=>{let n=e.x,r=e.y,i=e.z,a=t.element(0).mul(.886227);return a=a.add(t.element(1).mul(1.023328).mul(r)),a=a.add(t.element(2).mul(1.023328).mul(i)),a=a.add(t.element(3).mul(1.023328).mul(n)),a=a.add(t.element(4).mul(.858086).mul(n).mul(r)),a=a.add(t.element(5).mul(.858086).mul(r).mul(i)),a=a.add(t.element(6).mul(i.mul(i).mul(.743125).sub(.247708))),a=a.add(t.element(7).mul(.858086).mul(n).mul(i)),a=a.add(t.element(8).mul(.429043).mul(W(n,n).sub(W(r,r)))),a}),NT=Object.freeze({__proto__:null,BRDF_GGX:Ym,BRDF_Lambert:Nm,BRDF_Sheen:rh,BasicPointShadowFilter:FC,BasicShadowFilter:_C,Break:up,Const:Ds,Continue:lp,DFGLUT:Qm,D_GGX:Km,D_GGX_Anisotropic:Jm,Discard:Cc,EPSILON:qa,EnvironmentBRDF:$m,F_Schlick:Mm,Fn:j,HALF_PI:Qa,INFINITY:Ja,If:M,LTC_Evaluate:sh,LTC_Evaluate_Volume:ch,LTC_Uv:ih,Loop:X,NodeAccess:or,NodeShaderStage:ir,NodeType:ar,NodeUpdateType:w,OnAfterObjectUpdate:Df,OnAfterRenderPipeline:Mf,OnBeforeFrameUpdate:Af,OnBeforeMaterialUpdate:kf,OnBeforeObjectUpdate:Of,OnBeforeRenderPipeline:jf,OnFrameUpdate:Ef,OnMaterialUpdate:Tf,OnObjectUpdate:wf,PCFShadowFilter:vC,PI:Ya,PI2:Xa,PointShadowFilter:IC,Return:wc,Schlick_to_F0:eh,ShaderNode:ri,Stack:pi,Switch:fi,TBNViewMatrix:yd,TWO_PI:Za,VSMShadowFilter:yC,V_GGX_SmithCorrelated:Wm,V_GGX_SmithCorrelated_Anisotropic:Gm,Var:Es,VarIntent:Os,abs:Eo,acesFilmicToneMapping:wx,acos:So,acosh:Co,add:wa,addMethodChaining:E,addNodeElement:Pc,agxToneMapping:Ox,all:$a,alphaT:Wi,ambientOcclusion:la,and:Na,anisotropy:Gi,anisotropyB:qi,anisotropyT:Ki,any:eo,array:_a,asin:bo,asinh:xo,assign:ya,atan:wo,atanh:To,atomicAdd:mS,atomicAnd:vS,atomicFunc:dS,atomicLoad:fS,atomicMax:gS,atomicMin:_S,atomicOr:yS,atomicStore:pS,atomicSub:hS,atomicXor:bS,attenuationColor:oa,attenuationDistance:aa,attribute:Ic,attributeArray:Tb,backgroundBlurriness:Ab,backgroundIntensity:jb,backgroundRotation:Mb,batch:Qf,batchColor:Xf,batchIndirectIndex:Zf,bentNormalView:Sd,billboarding:ky,bitAnd:La,bitNot:Ra,bitOr:za,bitXor:Ba,bitangentGeometry:hd,bitangentLocal:gd,bitangentView:_d,bitangentViewFrame:ld,bitangentWorld:vd,bitcast:Sv,blendBurn:Xb,blendColor:ex,blendDodge:Zb,blendOverlay:$b,blendScreen:Qb,bool:hi,buffer:Qc,bufferAttribute:ec,builtin:rl,builtinAOContext:xs,builtinGIContext:Ss,builtinShadowContext:bs,bumpMap:Nd,bvec2:vi,bvec3:xi,bvec4:wi,bypass:vc,cache:gc,call:xa,cameraFar:jl,cameraIndex:kl,cameraNear:Al,cameraNormalMatrix:Il,cameraPosition:Ll,cameraProjectionMatrix:Ml,cameraProjectionMatrixInverse:Nl,cameraViewMatrix:Pl,cameraViewport:Rl,cameraWorldMatrix:Fl,cbrt:ts,cdl:ox,ceil:uo,checker:WC,cineonToneMapping:Sx,clamp:rs,clearcoat:Li,clearcoatNormalView:Eu,clearcoatRoughness:Ri,clipSpace:su,clipping:Gp,clippingAlpha:Kp,code:jx,color:mi,colorSpaceToWorking:Bs,colorToDirection:Dd,compute:pc,computeKernel:fc,computeSkinning:sp,context:_s,convert:ki,convertColorSpace:Vs,convertToTexture:mb,cos:go,cosh:_o,countLeadingZeros:Av,countOneBits:jv,countTrailingZeros:kv,cross:qo,cubeTexture:Uu,cubeTextureBase:Hu,dFdx:jo,dFdy:Mo,dashSize:$i,debug:Ac,decrement:Ka,decrementBefore:Wa,defaultBuildStages:cr,defaultShaderStages:sr,defined:ti,degrees:no,deltaTime:by,densityFogFactor:Vx,depth:Vp,depthPass:_x,determinant:Ro,difference:Go,diffuseColor:B,diffuseContribution:Ni,directPointLight:HC,directionToColor:Ed,directionToFaceDirection:yu,dispersion:sa,distance:Wo,div:Ta,dot:Ko,dot4I8Packed:ey,dot4U8Packed:$v,drawIndex:uc,dynamicBufferAttribute:tc,element:Oi,emissive:Pi,equal:Da,equirectDirection:vm,equirectUV:_m,exp:ro,exp2:io,exponentialHeightFogFactor:Hx,expression:Sc,faceDirection:_u,faceForward:ss,faceforward:fs,float:N,floatBitsToInt:Cv,floatBitsToUint:wv,floor:lo,fog:Ux,fract:po,frameGroup:pa,frameId:xy,frontFacing:gu,fwidth:Io,gain:Pv,gapSize:ea,getConstNodeType:ni,getCurrentStack:di,getDistanceAttenuation:VC,getGeometryRoughness:Hm,getNormalFromDepth:vb,getParallaxCorrectNormal:jT,getRoughness:Um,getScreenPosition:gb,getScreenPositionFromClip:_b,getShIrradianceAt:MT,getTextureIndex:vv,getViewPosition:hb,globalId:Qx,glsl:Px,glslFn:Lx,grayscale:tx,greaterThan:Aa,greaterThanEqual:Ma,hardwareClipping:qp,hash:Mv,highpModelNormalViewMatrix:ou,highpModelViewMatrix:au,hue:ix,increment:Ga,incrementBefore:Ua,inspect:Nc,instance:Uf,instanceColor:Hf,instanceIndex:oc,instancedArray:Eb,instancedBufferAttribute:nc,instancedDynamicBufferAttribute:rc,instancedMesh:Wf,int:P,intBitsToFloat:Tv,interleavedGradientNoise:yb,inverse:zo,inverseSqrt:co,inversesqrt:ps,invocationLocalIndex:lc,invocationSubgroupIndex:cc,ior:na,iridescence:Vi,iridescenceIOR:Hi,iridescenceThickness:Ui,isolate:hc,ivec2:gi,ivec3:yi,ivec4:Si,js:Mx,label:Cs,length:Oo,lengthSq:ns,lessThan:ka,lessThanEqual:ja,lightPosition:XS,lightProjectionUV:YS,lightShadowMatrix:JS,lightTargetDirection:$S,lightTargetPosition:ZS,lightViewPosition:QS,lightingContext:bp,lights:cC,linearDepth:Hp,linearToneMapping:bx,localId:$x,log:ao,log2:oo,logarithmicDepthToViewZ:zp,luminance:ax,mat2:Ti,mat3:Ei,mat4:Di,matcapUV:Qg,materialAO:yf,materialAlphaTest:Fd,materialAnisotropy:ef,materialAnisotropyVector:bf,materialAttenuationColor:lf,materialAttenuationDistance:cf,materialClearcoat:Jd,materialClearcoatNormal:Xd,materialClearcoatRoughness:Yd,materialColor:Id,materialDispersion:gf,materialEmissive:Rd,materialEnvIntensity:Pu,materialEnvRotation:Fu,materialIOR:sf,materialIridescence:tf,materialIridescenceIOR:nf,materialIridescenceThickness:rf,materialLightMap:vf,materialLineDashOffset:mf,materialLineDashSize:df,materialLineGapSize:ff,materialLineScale:uf,materialLineWidth:pf,materialMetalness:Kd,materialNormal:qd,materialOpacity:zd,materialPointSize:hf,materialReference:Yu,materialReflectivity:Wd,materialRefractionRatio:Nu,materialRetroreflectivity:_f,materialRotation:Zd,materialRoughness:Gd,materialSheen:Qd,materialSheenRoughness:$d,materialShininess:Ld,materialSpecular:Bd,materialSpecularColor:Hd,materialSpecularIntensity:Vd,materialSpecularStrength:Ud,materialThickness:of,materialTransmission:af,max:Vo,maxMipLevel:Vc,mediumpModelViewMatrix:iu,metalness:Ii,min:Bo,mix:K,mixElement:ls,mod:Ea,modelDirection:Yl,modelNormalMatrix:tu,modelPosition:Zl,modelRadius:eu,modelScale:Ql,modelViewMatrix:ru,modelViewPosition:$l,modelViewProjection:xf,modelWorldMatrix:Xl,modelWorldMatrixInverse:nu,morphReference:gp,mrt:bv,mul:W,mx_aastep:zw,mx_add:hT,mx_atan2:xT,mx_cell_noise_float:lT,mx_cell_noise_vec3:eT,mx_contrast:Yw,mx_divide:vT,mx_fractal_noise_float:dT,mx_fractal_noise_float_2d:uT,mx_fractal_noise_vec2:fT,mx_fractal_noise_vec3:pT,mx_fractal_noise_vec4:mT,mx_frame:CT,mx_heighttonormal:AT,mx_hsvtorgb:Iw,mx_ifequal:DT,mx_ifgreater:TT,mx_ifgreatereq:ET,mx_invert:wT,mx_modulo:yT,mx_multiply:_T,mx_noise_float:Xw,mx_noise_vec3:Zw,mx_noise_vec4:Qw,mx_place2d:kT,mx_power:bT,mx_ramp4:Uw,mx_ramplr:Vw,mx_ramptb:Hw,mx_rgbtohsv:Lw,mx_rotate2d:KC,mx_rotate3d:qC,mx_safepower:Jw,mx_separate:OT,mx_smoothstep:$w,mx_splitlr:Gw,mx_splittb:Kw,mx_srgb_texture_to_lin_rec709:Rw,mx_subtract:gT,mx_timer:ST,mx_transform_uv:qw,mx_unifiednoise2d:rT,mx_unifiednoise3d:iT,mx_worley_noise_float:aT,mx_worley_noise_float_2d:tT,mx_worley_noise_float_3d:nT,mx_worley_noise_vec2:oT,mx_worley_noise_vec3:sT,mx_worley_noise_vec3_style:cT,negate:ko,negateOnBackSide:vu,neutralToneMapping:kx,nodeArray:oi,nodeImmutable:k,nodeObject:D,nodeObjectIntent:ii,nodeObjects:ai,nodeProxy:O,nodeProxyConstructor:si,nodeProxyIntent:A,normalFlat:Su,normalGeometry:bu,normalLocal:xu,normalMap:kd,normalView:J,normalViewGeometry:Cu,normalWorld:Tu,normalWorldGeometry:wu,normalize:fo,not:Fa,notEqual:Oa,numWorkgroups:Xx,objectDirection:Vl,objectGroup:ma,objectPosition:Ul,objectRadius:Kl,objectScale:Wl,objectViewPosition:Gl,objectWorldMatrix:Hl,oneMinus:Ao,or:Pa,orthographicDepthToViewZ:Pp,oscSawtooth:Ty,oscSine:Sy,oscSquare:Cy,oscTriangle:wy,output:Qi,outputStruct:mv,overloadingFn:vy,overrideNode:rv,overrideNodes:iv,pack4xI8:ty,pack4xI8Clamp:ry,pack4xU8:ny,pack4xU8Clamp:iy,packHalf2x16:Bv,packNormalToRGB:Cd,packSnorm2x16:Rv,packSnorm4x8:Vv,packUnorm2x16:zv,packUnorm4x8:Hv,parabola:Nv,parallaxDirection:bd,parallaxUV:xd,parameter:ov,pass:hx,passTexture:gx,pcurve:Fv,perspectiveDepthToViewZ:Lp,pmremTexture:Ig,pointShadow:zC,pointUV:Ob,pointWidth:ta,positionGeometry:cu,positionLocal:lu,positionPrevious:uu,positionView:pu,positionViewDirection:mu,positionWorld:du,positionWorldDirection:fu,posterize:sx,pow:Jo,pow2:Yo,pow3:Xo,pow4:Zo,premultiplyAlpha:Tc,property:ji,quadBroadcast:GS,quadSwapDiagonal:zS,quadSwapX:LS,quadSwapY:RS,radians:to,rand:cs,range:qx,rangeFogFactor:Bx,reciprocal:Po,reference:Ku,referenceBuffer:qu,reflect:Uo,reflectVector:Ru,reflectView:Iu,reflector:Xy,refract:as,refractVector:zu,refractView:Lu,reinhardToneMapping:xx,remap:yc,remapClamp:bc,renderGroup:V,renderOutput:Oc,rendererReference:Ks,replaceDefaultUV:Ey,retroreflectivity:ca,rotate:n_,rotateUV:Dy,roughness:Fi,round:No,rtt:pb,sRGBTransferEOTF:Ps,sRGBTransferOETF:Fs,sample:Sb,sampler:Yc,samplerComparison:Xc,saturate:is,saturation:nx,screenCoordinate:ul,screenDPR:sl,screenSize:ll,screenUV:cl,select:hs,setCurrentStack:ui,setName:ys,shaderStages:lr,shadow:EC,shadowPositionWorld:gC,shapeCircle:GC,sharedUniformGroup:fa,sheen:zi,sheenRoughness:Bi,shiftLeft:Va,shiftRight:Ha,shininess:Zi,sign:Do,sin:mo,sinc:Iv,sinh:ho,skinning:op,smoothstep:os,smoothstepElement:us,specularColor:Ji,specularColorBlended:Yi,specularF90:Xi,spherizeUV:Oy,split:Ai,spritesheetUV:jy,sqrt:so,stack:cv,step:Ho,stepElement:ds,storage:If,storageBarrier:iS,storageElement:Pf,storageTexture:Pb,storageTexture3D:Lb,struct:fv,sub:U,subBuild:As,subgroupAdd:CS,subgroupAll:PS,subgroupAnd:kS,subgroupAny:FS,subgroupBallot:SS,subgroupBroadcast:BS,subgroupBroadcastFirst:IS,subgroupElect:xS,subgroupExclusiveAdd:TS,subgroupExclusiveMul:OS,subgroupInclusiveAdd:wS,subgroupInclusiveMul:DS,subgroupIndex:sc,subgroupMax:NS,subgroupMin:MS,subgroupMul:ES,subgroupOr:AS,subgroupShuffle:VS,subgroupShuffleDown:WS,subgroupShuffleUp:US,subgroupShuffleXor:HS,subgroupSize:eS,subgroupXor:jS,tan:vo,tangentGeometry:ud,tangentLocal:dd,tangentView:fd,tangentViewFrame:cd,tangentWorld:pd,tanh:yo,texture:q,texture3D:Bb,texture3DLevel:Hb,texture3DLoad:Vb,textureBarrier:aS,textureBicubic:bh,textureBicubicLevel:yh,textureLevel:Jc,textureLoad:qc,textureSize:zc,textureStore:Fb,thickness:ia,time:yy,toneMapping:Js,toneMappingExposure:Ys,toonOutlinePass:yx,transformDirection:Qo,transformNormal:Du,transformNormalByInverseViewMatrix:es,transformNormalByViewMatrix:$o,transformNormalToView:Ou,transformedClearcoatNormalView:ju,transformedNormalView:ku,transformedNormalWorld:Au,transmission:ra,transpose:Lo,triNoise3D:hy,triplanarTexture:Ny,triplanarTextures:My,trunc:Fo,uint:F,uintBitsToFloat:Ev,uniform:H,uniformArray:tl,uniformCubeTexture:Wu,uniformFlow:vs,uniformGroup:da,uniformTexture:Kc,unpack4xI8:ay,unpack4xU8:oy,unpackHalf2x16:uy,unpackNormal:Td,unpackRGBToNormal:wd,unpackSnorm2x16:cy,unpackSnorm4x8:dy,unpackUnorm2x16:ly,unpackUnorm4x8:fy,unpremultiplyAlpha:Ec,userData:Wb,uv:Lc,uvec2:_i,uvec3:bi,uvec4:Ci,varying:Ms,varyingProperty:Mi,vec2:I,vec3:L,vec4:R,vectorComponents:ur,velocity:Yb,vertexColor:$p,vertexIndex:ac,vertexStage:Ns,vibrance:rx,viewZToLogarithmicDepth:Rp,viewZToOrthographicDepth:Mp,viewZToPerspectiveDepth:Fp,viewZToReversedOrthographicDepth:Np,viewZToReversedPerspectiveDepth:Ip,viewport:dl,viewportCoordinate:pl,viewportDepthTexture:Ap,viewportLinearDepth:Up,viewportMipTexture:Tp,viewportOpaqueMipTexture:Dp,viewportSafeUV:Ay,viewportSharedTexture:ux,viewportSize:fl,viewportTexture:wp,viewportUV:ml,vogelDiskSample:bb,wgsl:Nx,wgslFn:Rx,workgroupArray:cS,workgroupBarrier:rS,workgroupId:Zx,workingToColorSpace:zs,xor:Ia}),PT=new tv,FT=class extends T_{constructor(e,t){super(),this.renderer=e,this.nodes=t}update(e,t,n){let r=this.renderer,i=this.nodes.getBackgroundNode(e)||e.background,a=!1;if(i===null)r._clearColor.getRGB(PT),PT.a=r._clearColor.a;else if(i.isColor===!0)i.getRGB(PT),PT.a=1,a=!0;else if(i.isNode===!0){let n=this.get(e),a=i;PT.copy(r._clearColor);let o=n.backgroundMesh;if(o===void 0){let e=R(a).mul(jb).context({getUV:()=>Mb.mul(wu),getTextureLevel:()=>Ab}),t=Ml.element(3).element(3).equal(1),r=Ta(1,Ml.element(1).element(1)).mul(3),s=t.select(lu.mul(r),lu),c=ru.mul(R(s,0)),l=Ml.mul(R(c.xyz,1));l=l.setZ(l.w);let u=new em;u.name=`Background.material`,u.side=1,u.depthTest=!1,u.depthWrite=!1,u.allowOverride=!1,u.fog=!1,u.lights=!1,u.vertexNode=l,u.colorNode=e,n.backgroundMeshNode=e,n.backgroundMesh=o=new je(new de(1,32,32),u),o.frustumCulled=!1,o.name=`Background.mesh`;function d(){i.removeEventListener(`dispose`,d),o.material.dispose(),o.geometry.dispose()}i.addEventListener(`dispose`,d)}let s=a.getCacheKey();n.backgroundCacheKey!==s&&(n.backgroundMeshNode.node=R(a).mul(jb),n.backgroundMeshNode.needsUpdate=!0,o.material.needsUpdate=!0,n.backgroundCacheKey=s),t.unshift(o,o.geometry,o.material,0,0,null,null)}else S(`Renderer: Unsupported background configuration.`,i);let o=r.xr.getEnvironmentBlendMode();if(o===`additive`?PT.set(0,0,0,1):o===`alpha-blend`&&PT.set(0,0,0,0),r.autoClear===!0||a===!0){let e=n.clearColorValue;e.r=PT.r,e.g=PT.g,e.b=PT.b,e.a=PT.a,(r.backend.isWebGLBackend===!0||r.alpha===!0)&&(e.r*=e.a,e.g*=e.a,e.b*=e.a),n.depthClearValue=r.getClearDepth(),n.stencilClearValue=r.getClearStencil(),n.clearColor=r.autoClearColor===!0,n.clearDepth=r.autoClearDepth===!0,n.clearStencil=r.autoClearStencil===!0}else n.clearColor=!1,n.clearDepth=!1,n.clearStencil=!1}},IT=0,LT=class{constructor(e=``,t=[]){this.name=e,this.bindings=t,this.id=IT++}},RT=class{constructor(e,t,n,r,i,a,o,s,c,l,u=[]){this.vertexShader=e,this.fragmentShader=t,this.computeShader=n,this.transforms=u,this.nodeAttributes=r,this.bindings=i,this.updateNodes=a,this.updateBeforeNodes=o,this.updateAfterNodes=s,this.observer=c,this.hardwareClipping=l,this.usedTimes=0}createBindings(){let e=[];for(let t of this.bindings)if(t.bindings[0].groupNode.shared!==!0){let n=new LT(t.name,[]);e.push(n);for(let e of t.bindings)n.bindings.push(e.clone())}else e.push(t);return e}},zT=class{constructor(e,t,n=null){this.isNodeAttribute=!0,this.name=e,this.type=t,this.node=n}},BT=class{constructor(e,t,n){this.isNodeUniform=!0,this.name=e,this.type=t,this.node=n}get value(){return this.node.value}set value(e){this.node.value=e}get id(){return this.node.id}get groupNode(){return this.node.groupNode}},VT=class{constructor(e,t,n=!1,r=null){this.isNodeVar=!0,this.name=e,this.type=t,this.readOnly=n,this.count=r}},HT=class extends VT{constructor(e,t,n=null,r=null){super(e,t),this.needsInterpolation=!1,this.isNodeVarying=!0,this.interpolationType=n,this.interpolationSampling=r}},UT=class{constructor(e,t,n=``){this.name=e,this.type=t,this.code=n,Object.defineProperty(this,"isNodeCode",{value:!0})}},WT=0,GT=class{constructor(e=null){this.id=WT++,this.nodesData=new WeakMap,this.parent=e}getData(e){let t=this.nodesData.get(e);return t===void 0&&this.parent!==null&&(t=this.parent.getData(e)),t}setData(e,t){this.nodesData.set(e,t)}},KT=class{constructor(e,t){this.name=e,this.members=t,this.output=!1}},qT=class{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0,this.index=-1}setValue(e){this.value=e}getValue(){return this.value}},JT=class extends qT{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}},YT=class extends qT{constructor(e,t=new pe){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}},XT=class extends qT{constructor(e,t=new x){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}},ZT=class extends qT{constructor(e,t=new kn){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}},QT=class extends qT{constructor(e,t=new Et){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}},$T=class extends qT{constructor(e,t=new ae){super(e,t),this.isMatrix2Uniform=!0,this.boundary=8,this.itemSize=4}},eE=class extends qT{constructor(e,t=new ot){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}},tE=class extends qT{constructor(e,t=new nt){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}},nE=class extends JT{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},rE=class extends YT{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},iE=class extends XT{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},aE=class extends ZT{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},oE=class extends QT{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},sE=class extends $T{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},cE=class extends eE{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},lE=class extends tE{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}getType(){return this.nodeUniform.type}},uE=0,dE=new WeakMap,fE=new WeakMap,pE=new WeakMap,mE=new Map([[Int8Array,`int`],[Int16Array,`int`],[Int32Array,`int`],[Uint8Array,`uint`],[Uint16Array,`uint`],[Uint32Array,`uint`],[Float32Array,`float`]]),hE=e=>/e/g.test(e)?String(e).replace(/\+/g,``):(e=Number(e),e+(e%1?``:`.0`)),gE=e=>{if(e.writeUsageCount>0)return!0;if(e.subBuildsCache!==void 0){for(let t in e.subBuildsCache)if(gE(e.subBuildsCache[t]))return!0}return!1},_E=class{constructor(e,t,n){this.object=e,this.material=e&&e.material||null,this.geometry=e&&e.geometry||null,this.compute=null,this.renderer=t,this.parser=n,this.scene=null,this.camera=null,this.nodes=new Set,this.sequentialNodes=new Set,this.updateNodes=[],this.updateBeforeNodes=[],this.updateAfterNodes=[],this.hashNodes={},this.observer=null,this.lightsNode=null,this.environmentNode=null,this.fogNode=null,this.clippingContext=null,this.hardwareClipping=!1,this.vertexShader=null,this.fragmentShader=null,this.computeShader=null,this.flowNodes={vertex:[],fragment:[],compute:[]},this.flowCode={vertex:``,fragment:``,compute:``},this.uniforms={vertex:[],fragment:[],compute:[],index:0},this.structs={vertex:[],fragment:[],compute:[],index:0},this.types={vertex:[],fragment:[],compute:[],index:0},this.bindings={vertex:{},fragment:{},compute:{}},this.bindingsIndexes={},this.bindGroups=null,this.attributes=[],this.bufferAttributes=[],this.varyings=[],this.codes={},this.vars={},this.declarations={},this.flow={code:``},this.chaining=[],this.stack=cv(),this.stacks=[],this.tab=` `,this.currentFunctionNode=null,this.context={material:this.material},this.cache=new GT,this.globalCache=this.cache,this.flowsData=new WeakMap,this.shaderStage=null,this.buildStage=null,this.subBuildLayers=[],this.activeStacks=[],this.subBuildFn=null,this.fnCall=null,Object.defineProperty(this,"id",{value:uE++})}isFlatShading(){return this.material.flatShading===!0||this.geometry.hasAttribute(`normal`)===!1}isOpaque(){let e=this.material;return e.transparent===!1&&e.blending===1&&e.alphaToCoverage===!1}createRenderTarget(e,t,n){return new wt(e,t,n)}createCubeRenderTarget(e,t){return new ym(e,t)}includes(e){return this.nodes.has(e)}getOutputType(e=0){let t=this.renderer.getRenderTarget();return t===null?`vec4`:Zn(t.textures[e])}getOutputStructName(){}_getBindGroup(e,t){let n=t[0].groupNode,r=n.shared;if(r)for(let e=1;e<t.length;e++)n!==t[e].groupNode&&(r=!1);let i;if(r){let n=``;for(let e of t)if(e.isNodeUniformsGroup){e.uniforms.sort((e,t)=>e.nodeUniform.node.id-t.nodeUniform.node.id);for(let t of e.uniforms)n+=t.nodeUniform.node.id}else n+=e.nodeUniform.id;let r=this.renderer._currentRenderContext||this.renderer,a=dE.get(r);a===void 0&&(a=new Map,dE.set(r,a));let o=Bn(n);i=a.get(o),i===void 0&&(i=new LT(e,t),a.set(o,i))}else i=new LT(e,t);return i}getBindGroupArray(e,t){let n=this.bindings[t],r=n[e];return r===void 0&&(this.bindingsIndexes[e]===void 0&&(this.bindingsIndexes[e]={binding:0,group:Object.keys(this.bindingsIndexes).length}),n[e]=r=[]),r}getBindings(){let e=this.bindGroups;if(e===null){let t={},n=this.bindings;for(let e of lr)for(let r in n[e]){let i=n[e][r],a=t[r]||(t[r]=[]);for(let e of i)a.includes(e)===!1&&a.push(e)}e=[];for(let n in t){let r=t[n],i=this._getBindGroup(n,r);e.push(i)}this.bindGroups=e}return e}sortBindingGroups(){let e=this.getBindings();e.sort((e,t)=>e.bindings[0].groupNode.order-t.bindings[0].groupNode.order);for(let t=0;t<e.length;t++){let n=e[t];this.bindingsIndexes[n.name].group=t}}setHashNode(e,t){this.hashNodes[t]=e}addNode(e){this.nodes.has(e)===!1&&(this.nodes.add(e),this.setHashNode(e,e.getHash(this)))}addSequentialNode(e){let t=e.updateBeforeType,n=e.updateAfterType;(t!==w.NONE||n!==w.NONE)&&this.sequentialNodes.add(e)}buildUpdateNodes(){for(let e of this.nodes)e.updateType!==w.NONE&&this.updateNodes.push(e);for(let e of this.sequentialNodes){let t=e.updateBeforeType,n=e.updateAfterType;t!==w.NONE&&this.updateBeforeNodes.push(e),n!==w.NONE&&this.updateAfterNodes.push(e)}}get currentNode(){return this.chaining[this.chaining.length-1]}get renderPipeline(){return this.context.renderPipeline}isFilteredTexture(e){return e.magFilter===1006||e.magFilter===1007||e.magFilter===1005||e.magFilter===1008||e.minFilter===1006||e.minFilter===1007||e.minFilter===1005||e.minFilter===1008}getUniformBufferLimit(){return this.renderer.backend.capabilities.getUniformBufferLimit()}addChain(e){this.chaining.push(e)}removeChain(e){if(this.chaining.pop()!==e)throw Error(`THREE.NodeBuilder: Invalid node chaining!`)}getMethod(e){return e}getTernary(){return null}getNodeFromHash(e){return this.hashNodes[e]}addFlow(e,t){return this.flowNodes[e].push(t),t}setContext(e){this.context=e}getContext(){return this.context}addContext(e){let t=this.getContext();return this.setContext({...this.context,...e}),t}getSharedContext(){let e={...this.context};return delete e.material,delete e.getUV,delete e.getOutput,delete e.getTextureLevel,delete e.getAO,delete e.getGI,delete e.getShadow,e}setCache(e){this.cache=e}getCache(){return this.cache}getCacheFromNode(e,t=!0){let n=this.getDataFromNode(e);return n.cache===void 0&&(n.cache=new GT(t?this.getCache():null)),n.cache}isAvailable(){return!1}getVertexIndex(){C(`Abstract function.`)}getInstanceIndex(){C(`Abstract function.`)}getDrawIndex(){C(`Abstract function.`)}getFrontFacing(){C(`Abstract function.`)}getFragCoord(){C(`Abstract function.`)}isFlipY(){return!1}isContextAssign(){return this.context.assign===!0}increaseUsage(e){let t=this.getDataFromNode(e);return t.usageCount=t.usageCount===void 0?1:t.usageCount+1,this.isContextAssign()?t.writeUsageCount=t.writeUsageCount===void 0?1:t.writeUsageCount+1:t.readUsageCount=t.readUsageCount===void 0?1:t.readUsageCount+1,t.usageCount}hasWriteUsage(e){let t=e.getShared(this),n=(t.isGlobal(this)?this.globalCache:this.cache).getData(t);if(n!==void 0){for(let e in n)if(gE(n[e]))return!0}return!1}generateTexture(){C(`Abstract function.`)}generateTextureLod(){C(`Abstract function.`)}generateTextureSize(){C(`Abstract function.`)}generateArrayDeclaration(e,t){return this.getType(e)+`[ `+t+` ]`}generateArray(e,t,n=null){let r=this.generateArrayDeclaration(e,t)+`( `;for(let i=0;i<t;i++){let a=n?n[i]:null;r+=a===null?this.generateConst(e):a.build(this,e),i<t-1&&(r+=`, `)}return r+=` )`,r}generateStruct(e,t,n=null){let r=[];for(let e of t){let{name:t,type:i}=e;n&&n[t]&&n[t].isNode?r.push(n[t].build(this,i)):r.push(this.generateConst(i))}return e+`( `+r.join(`, `)+` )`}generateConst(e,t=null){if(t===null&&(e===`float`||e===`int`||e===`uint`?t=0:e===`bool`?t=!1:e===`color`?t=new Et:e===`vec2`||e===`uvec2`||e===`ivec2`?t=new pe:e===`vec3`||e===`uvec3`||e===`ivec3`?t=new x:(e===`vec4`||e===`uvec4`||e===`ivec4`)&&(t=new kn)),e===`float`)return hE(t);if(e===`int`)return`${Math.round(t)}`;if(e===`uint`)return t>=0?`${Math.round(t)}u`:`0u`;if(e===`bool`)return t?`true`:`false`;if(e===`color`)return`${this.getType(`vec3`)}( ${hE(t.r)}, ${hE(t.g)}, ${hE(t.b)} )`;let n=this.getTypeLength(e),r=this.getComponentType(e),i=e=>this.generateConst(r,e);if(n===2)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)} )`;if(n===3)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)} )`;if(n===4&&e!==`mat2`)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)}, ${i(t.w)} )`;if(n>=4&&t&&(t.isMatrix2||t.isMatrix3||t.isMatrix4))return`${this.getType(e)}( ${t.elements.map(i).join(`, `)} )`;if(n>4)return`${this.getType(e)}()`;throw Error(`THREE.NodeBuilder: Type '${e}' not found in generate constant attempt.`)}getType(e){return e===`color`?`vec3`:e}hasGeometryAttribute(e){return this.geometry&&this.geometry.getAttribute(e)!==void 0}getAttribute(e,t){let n=this.attributes;for(let t of n)if(t.name===e)return t;let r=new zT(e,t);return this.registerDeclaration(r),n.push(r),r}getPropertyName(e){return e.name}isReservedKeyword(){return!1}isVector(e){return/vec\d/.test(e)}isMatrix(e){return/mat\d/.test(e)}isReference(e){return e===`void`||e===`property`||e===`sampler`||e===`samplerComparison`||e===`texture`||e===`cubeTexture`||e===`storageTexture`||e===`depthTexture`||e===`texture3D`}needsToWorkingColorSpace(){return!1}getComponentTypeFromTexture(e){let t=e.type;return e.isDepthTexture===!0?`float`:t===1013?`int`:t===1014?`uint`:`float`}getElementType(e){return e===`mat2`?`vec2`:e===`mat3`?`vec3`:e===`mat4`?`vec4`:this.getComponentType(e)}getComponentType(e){if(e=this.getVectorType(e),e===`float`||e===`bool`||e===`int`||e===`uint`)return e;let t=/(b|i|u|)(vec|mat)([2-4])/.exec(e);return t===null?null:t[1]===`b`?`bool`:t[1]===`i`?`int`:t[1]===`u`?`uint`:`float`}getVectorType(e){return e===`color`?`vec3`:e===`texture`||e===`cubeTexture`||e===`storageTexture`||e===`texture3D`?`vec4`:e}getTypeFromLength(e,t=`float`){if(e===1)return t;let n=Gn(e),r=t===`float`?``:t[0];return/mat2/.test(t)===!0&&(n=n.replace(`vec`,`mat`)),r+n}getTypeFromArray(e){return mE.get(e.constructor)}isInteger(e){return/int|uint|(i|u)vec/.test(e)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);let n=t.array,r=e.itemSize,i=e.normalized,a;return!(e instanceof Dt)&&i!==!0&&(a=this.getTypeFromArray(n)),this.getTypeFromLength(r,a)}getTypeLength(e){let t=this.getVectorType(e),n=/vec([2-4])/.exec(t);return n===null?t===`float`||t===`bool`||t===`int`||t===`uint`?1:/mat2/.test(e)===!0?4:/mat3/.test(e)===!0?9:/mat4/.test(e)===!0?16:0:Number(n[1])}getVectorFromMatrix(e){return e.replace(`mat`,`vec`)}changeComponentType(e,t){return this.getTypeFromLength(this.getTypeLength(e),t)}getIntegerType(e){let t=this.getComponentType(e);return t===`int`||t===`uint`?e:this.changeComponentType(e,`int`)}setActiveStack(e){this.activeStacks.push(e)}removeActiveStack(e){if(this.activeStacks[this.activeStacks.length-1]===e)this.activeStacks.pop();else throw Error(`THREE.NodeBuilder: Invalid active stack removal.`)}getActiveStack(){return this.activeStacks[this.activeStacks.length-1]}getBaseStack(){return this.activeStacks[0]}addStack(){this.stack=cv(this.stack);let e=di();return this.stacks.push(e),ui(this.stack),this.stack}removeStack(){let e=this.stack;for(let t of e.nodes){let n=this.getDataFromNode(t);n.stack=e}return this.stack=e.parent,ui(this.stacks.pop()),e}getDataFromNode(e,t=this.shaderStage,n=null){n=n===null?e.isGlobal(this)?this.globalCache:this.cache:n;let r=n.getData(e);r===void 0&&(r={},n.setData(e,r)),r[t]===void 0&&(r[t]={});let i=r[t];if(this.subBuildLayers.length===0)return i;let a=r.any?r.any.subBuilds:null,o=this.getClosestSubBuild(a);return o&&(i.subBuildsCache===void 0&&(i.subBuildsCache={}),i=i.subBuildsCache[o]||(i.subBuildsCache[o]={}),i.subBuilds=a),i}getNodeProperties(e,t=`any`){let n=this.getDataFromNode(e,t);return n.properties||={outputNode:null}}getBufferAttributeFromNode(e,t,n=null){let r=this.getDataFromNode(e,`vertex`),i=r.bufferAttribute;if(i===void 0){let a=this.uniforms.index++;n===null&&(n=`nodeAttribute`+a),i=new zT(n,t,e),this.bufferAttributes.push(i),r.bufferAttribute=i}return i}getStructTypeNode(e,t=this.shaderStage){return this.types[t][e]||null}getStructTypeFromNode(e,t,n=null,r=this.shaderStage){let i=this.getDataFromNode(e,r,this.globalCache),a=i.structType;if(a===void 0){let o=this.structs.index++;n===null&&(n=`StructType`+o),a=new KT(n,t),this.structs[r].push(a),this.types[r][n]=e,i.structType=a}return a}getOutputStructTypeFromNode(e,t){let n=this.getStructTypeFromNode(e,t,`OutputType`,`fragment`);return n.output=!0,n}getUniformFromNode(e,t,n=this.shaderStage,r=null){let i=this.getDataFromNode(e,n,this.globalCache),a=i.uniform;if(a===void 0){let o=this.uniforms.index++;a=new BT(r||`nodeUniform`+o,t,e),this.uniforms[n].push(a),this.registerDeclaration(a),i.uniform=a}return a}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage,i=!1){let a=this.getDataFromNode(e,r),o=this.getSubBuildProperty(`variable`,a.subBuilds),s=a[o];if(s===void 0){let c=i?`_const`:`_var`,l=this.vars[r]||(this.vars[r]=[]),u=this.vars[c]||(this.vars[c]=0);t===null&&(t=(i?`nodeConst`:`nodeVar`)+u,this.vars[c]++),o!==`variable`&&(t=this.getSubBuildProperty(t,a.subBuilds));let d=e.getArrayCount(this);s=new VT(t,n,i,d),i||l.push(s),this.registerDeclaration(s),a[o]=s}return s}isDeterministic(e){if(e.isMathNode)return this.isDeterministic(e.aNode)&&(!e.bNode||this.isDeterministic(e.bNode))&&(!e.cNode||this.isDeterministic(e.cNode));if(e.isOperatorNode)return this.isDeterministic(e.aNode)&&(!e.bNode||this.isDeterministic(e.bNode));if(e.isArrayNode){if(e.values!==null){for(let t of e.values)if(!this.isDeterministic(t))return!1}return!0}return!!e.isConstNode}getVaryingFromNode(e,t=null,n=e.getNodeType(this),r=null,i=null){let a=this.getDataFromNode(e,`any`),o=this.getSubBuildProperty(`varying`,a.subBuilds),s=a[o];if(s===void 0){let e=this.varyings,c=e.length;t===null&&(t=`nodeVarying`+c),o!==`varying`&&(t=this.getSubBuildProperty(t,a.subBuilds)),s=new HT(t,n,r,i),e.push(s),this.registerDeclaration(s),a[o]=s}return s}registerDeclaration(e){let t=this.shaderStage,n=this.declarations[t]||(this.declarations[t]={}),r=this.renderer.debug.diagnostics.keywords,i=e.name,a=i,o=this.getPropertyName(e),s=1;for(;r&&this.isReservedKeyword(a)||n[o]!==void 0;)a=i+`_`+s++,e.name=a,o=this.getPropertyName(e);a!==i&&C(`TSL: Declaration name '${i}' of '${e.type}' is a reserved keyword or already in use. Renamed to '${a}'.`),n[o]=e}getCodeFromNode(e,t,n=this.shaderStage){let r=this.getDataFromNode(e),i=r.code;if(i===void 0){let e=this.codes[n]||(this.codes[n]=[]),a=e.length;i=new UT(`nodeCode`+a,t),e.push(i),r.code=i}return i}addFlowCodeHierarchy(e,t){let{flowCodes:n,flowCodeBlock:r}=this.getDataFromNode(e),i=!0,a=t;for(;a;){if(r.get(a)===!0){i=!1;break}a=this.getDataFromNode(a).parentNodeBlock}if(i)for(let e of n)this.addLineFlowCode(e)}addLineFlowCodeBlock(e,t,n){let r=this.getDataFromNode(e),i=r.flowCodes||=[],a=r.flowCodeBlock||=new WeakMap;i.push(t),a.set(n,!0)}addLineFlowCode(e,t=null){return e===``?this:(t!==null&&this.context.nodeBlock&&this.addLineFlowCodeBlock(t,e,this.context.nodeBlock),e=this.tab+e,/;\s*$/.test(e)||(e+=`;
25
+ `),this.flow.code+=e,this)}addFlowCode(e){return this.flow.code+=e,this}addFlowTab(){return this.tab+=` `,this}removeFlowTab(){return this.tab=this.tab.slice(0,-1),this}getFlowData(e){return this.flowsData.get(e)}flowNode(e){let t=e.getNodeType(this),n=this.flowChildNode(e,t);return this.flowsData.set(e,n),n}addInclude(e){this.currentFunctionNode!==null&&this.currentFunctionNode.includes.push(e)}buildFunctionNode(e){let t=this.renderer.backend,n=fE.get(t);n===void 0&&(n=new WeakMap,fE.set(t,n));let r=n.get(e);if(r===void 0){r=new Fx;let t=this.currentFunctionNode;this.currentFunctionNode=r,r.code=this.buildFunctionCode(e),this.currentFunctionNode=t,n.set(e,r)}return r}flowShaderNode(e){let t=e.layout,n={[Symbol.iterator](){let e=0,t=Object.values(this);return{next:()=>({value:t[e],done:e++>=t.length})}}};for(let e of t.inputs)n[e.name]=new av(e.type,e.name);e.layout=null;let r=e.call(n),i=this.flowStagesNode(r,t.type);return e.layout=t,i}flowBuildStage(e,t,n=null){let r=this.getBuildStage();this.setBuildStage(t);let i=e.build(this,n);return this.setBuildStage(r),i}flowStagesNode(e,t=null){let n=this.flow,r=this.vars,i=this.declarations,a=this.cache,o=this.buildStage,s=this.stack,c={code:``};this.flow=c,this.vars={},this.declarations={},this.cache=new GT,this.stack=cv();for(let n of cr)this.setBuildStage(n),c.result=e.build(this,t);return c.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=r,this.declarations=i,this.cache=a,this.stack=s,this.setBuildStage(o),c}getFunctionOperator(){return null}buildFunctionCode(){C(`Abstract function.`)}flowChildNode(e,t=null){let n=this.flow,r={code:``};return this.flow=r,r.result=e.build(this,t),this.flow=n,r}flowNodeFromShaderStage(e,t,n=null,r=null){let i=this.tab,a=this.cache,o=this.shaderStage,s=this.context;this.setShaderStage(e);let c={...this.context};delete c.nodeBlock,this.cache=this.globalCache,this.tab=` `,this.context=c;let l=null;if(this.buildStage===`generate`){let i=this.flowChildNode(t,n);r!==null&&(i.code+=`${this.tab+r} = ${i.result};\n`),this.flowCode[e]=this.flowCode[e]+i.code,l=i}else l=t.build(this);return this.setShaderStage(o),this.cache=a,this.tab=i,this.context=s,l}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){C(`Abstract function.`)}getVaryings(){C(`Abstract function.`)}getVar(e,t,n=null){return`${n===null?this.getType(e):this.generateArrayDeclaration(e,n)} ${t}`}getVars(e,t=!1){let n=[],r=this.vars[e];if(r!==void 0)for(let e of r)n.push(`${this.getVar(e.type,e.name,e.count)};`);return n.join(t?`
26
+ `:`
27
+ `)}getUniforms(){C(`Abstract function.`)}getCodes(e){let t=this.codes[e],n=``;if(t!==void 0)for(let e of t)n+=e.code+`
28
+ `;return n}getHash(){return this.vertexShader+this.fragmentShader+this.computeShader}setShaderStage(e){this.shaderStage=e}getShaderStage(){return this.shaderStage}setBuildStage(e){this.buildStage=e}getBuildStage(){return this.buildStage}buildCode(){C(`Abstract function.`)}get subBuild(){return this.subBuildLayers[this.subBuildLayers.length-1]||null}addSubBuild(e){this.subBuildLayers.push(e)}removeSubBuild(){return this.subBuildLayers.pop()}getClosestSubBuild(e){let t;if(t=e&&e.isNode?e.isShaderCallNodeInternal?e.shaderNode.subBuilds:e.isStackNode?[e.subBuild]:this.getDataFromNode(e,`any`).subBuilds:e instanceof Set?[...e]:e,!t)return null;let n=this.subBuildLayers;for(let e=t.length-1;e>=0;e--){let r=t[e];if(n.includes(r))return r}return null}getSubBuildOutput(e){return this.getSubBuildProperty(`outputNode`,e)}getSubBuildProperty(e=``,t=null){let n;n=t===null?this.subBuildFn:this.getClosestSubBuild(t);let r;return r=n?e?n+`_`+e:n:e,r}prebuild(){let{renderer:e,material:t}=this;if(e.contextNode.isContextNode===!0?this.context={...this.context,...e.contextNode.getFlowContextData()}:S('NodeBuilder: "renderer.contextNode" must be an instance of `context()`.'),t&&t.contextNode&&(t.contextNode.isContextNode===!0?this.context={...this.context,...t.contextNode.getFlowContextData()}:S('NodeBuilder: "material.contextNode" must be an instance of `context()`.')),t!==null){let n=e.library.fromMaterial(t);n===null&&(S(`NodeBuilder: Material "${t.type}" is not compatible.`),n=new em),n.build(this)}else this.addFlow(`compute`,this.compute)}build(){this.prebuild();for(let e of cr){this.setBuildStage(e),this.context.position&&this.context.position.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.position);for(let t of lr){this.setShaderStage(t);let n=this.flowNodes[t];for(let t of n)e===`generate`?this.flowNode(t):t.build(this)}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}async buildAsync(){this.prebuild();for(let e of cr){this.setBuildStage(e),this.context.position&&this.context.position.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.position);for(let t of lr){this.setShaderStage(t);let n=this.flowNodes[t];for(let t of n)e===`generate`?this.flowNode(t):t.build(this);await Pt()}}return this.setBuildStage(null),this.setShaderStage(null),this.buildCode(),this.buildUpdateNodes(),this}getSharedDataFromNode(e){let t=pE.get(e);return t===void 0&&(t={}),t}getNodeUniform(e,t){let n=this.getSharedDataFromNode(e),r=n.cache;if(r===void 0){if(t===`float`||t===`int`||t===`uint`)r=new nE(e);else if(t===`vec2`||t===`ivec2`||t===`uvec2`)r=new rE(e);else if(t===`vec3`||t===`ivec3`||t===`uvec3`)r=new iE(e);else if(t===`vec4`||t===`ivec4`||t===`uvec4`)r=new aE(e);else if(t===`color`)r=new oE(e);else if(t===`mat2`)r=new sE(e);else if(t===`mat3`)r=new cE(e);else if(t===`mat4`)r=new lE(e);else throw Error(`THREE.NodeBuilder: Uniform "${t}" not implemented.`);n.cache=r}return r}format(e,t,n){if(t=this.getVectorType(t),n=this.getVectorType(n),t===n||n===null||this.isReference(n))return e;let r=this.getTypeLength(t),i=this.getTypeLength(n);return r===16&&i===9?`${this.getType(n)}( ${e}[ 0 ].xyz, ${e}[ 1 ].xyz, ${e}[ 2 ].xyz )`:r===9&&i===4?`${this.getType(n)}( ${e}[ 0 ].xy, ${e}[ 1 ].xy )`:r>4||i>4||i===0?e:r===i?`${this.getType(n)}( ${e} )`:r>i?(e=n===`bool`?`all( ${e} )`:`${e}.${`xyz`.slice(0,i)}`,this.format(e,this.getTypeFromLength(i,this.getComponentType(t)),n)):i===4&&r>1?`${this.getType(n)}( ${this.format(e,t,`vec3`)}, 1.0 )`:r===2?`${this.getType(n)}( ${this.format(e,t,`vec2`)}, 0.0 )`:(r===1&&i>1&&t!==this.getComponentType(n)&&(e=`${this.getType(this.getComponentType(n))}( ${e} )`),`${this.getType(n)}( ${e} )`)}getSignature(){return`// Three.js r186 - Node System
29
+ `}needsPreviousData(){let e=this.renderer.getMRT();return e&&e.has(`velocity`)||this.object!==null&&$n(this.object).useVelocity===!0}},vE=class{constructor(){this.time=0,this.deltaTime=0,this.frameId=0,this.renderId=0,this.updateMap=new WeakMap,this.updateBeforeMap=new WeakMap,this.updateAfterMap=new WeakMap,this.renderer=null,this.material=null,this.camera=null,this.object=null,this.scene=null,this.compute=null}_getMaps(e,t){let n=e.get(t);return n===void 0&&(n={renderId:0,frameId:0},e.set(t,n)),n}updateBeforeNode(e){let t=e.getUpdateBeforeType(this),n=e.updateReference(this);if(t===w.FRAME){let t=this._getMaps(this.updateBeforeMap,n);if(t.frameId!==this.frameId){let n=t.frameId;t.frameId=this.frameId,e.updateBefore(this)===!1&&(t.frameId=n)}}else if(t===w.RENDER){let t=this._getMaps(this.updateBeforeMap,n);if(t.renderId!==this.renderId){let n=t.renderId;t.renderId=this.renderId,e.updateBefore(this)===!1&&(t.renderId=n)}}else t===w.OBJECT&&e.updateBefore(this)}updateAfterNode(e){let t=e.getUpdateAfterType(this),n=e.updateReference(this);if(t===w.FRAME){let t=this._getMaps(this.updateAfterMap,n);t.frameId!==this.frameId&&e.updateAfter(this)!==!1&&(t.frameId=this.frameId)}else if(t===w.RENDER){let t=this._getMaps(this.updateAfterMap,n);t.renderId!==this.renderId&&e.updateAfter(this)!==!1&&(t.renderId=this.renderId)}else t===w.OBJECT&&e.updateAfter(this)}updateNode(e){let t=e.getUpdateType(this),n=e.updateReference(this);if(t===w.FRAME){let t=this._getMaps(this.updateMap,n);t.frameId!==this.frameId&&e.update(this)!==!1&&(t.frameId=this.frameId)}else if(t===w.RENDER){let t=this._getMaps(this.updateMap,n);t.renderId!==this.renderId&&e.update(this)!==!1&&(t.renderId=this.renderId)}else t===w.OBJECT&&e.update(this)}update(){this.frameId++,this.lastTime===void 0&&(this.lastTime=performance.now()),this.deltaTime=(performance.now()-this.lastTime)/1e3,this.lastTime=performance.now(),this.time+=this.deltaTime}},yE=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};yE.isNodeFunctionInput=!0;var bE=class extends BC{static get type(){return`AmbientLightNode`}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}},xE=class extends BC{static get type(){return`DirectionalLightNode`}constructor(e=null){super(e)}setupDirect(){let e=this.colorNode;return{lightDirection:$S(this.light),lightColor:e}}},SE=class extends BC{static get type(){return`HemisphereLightNode`}constructor(e=null){super(e),this.lightPositionNode=XS(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=H(new Et).setGroup(V)}update(e){let{light:t}=this;super.update(e),this.lightPositionNode.object3d=t,this.groundColorNode.value.copy(t.groundColor).multiplyScalar(t.intensity)}setup(e){let{colorNode:t,groundColorNode:n,lightDirectionNode:r}=this,i=K(n,t,Tu.dot(r).mul(.5).add(.5));e.context.irradiance.addAssign(i)}},CE=class extends BC{static get type(){return`SpotLightNode`}constructor(e=null){super(e),this.coneCosNode=H(0).setGroup(V),this.penumbraCosNode=H(0).setGroup(V),this.cutoffDistanceNode=H(0).setGroup(V),this.decayExponentNode=H(0).setGroup(V),this.colorNode=H(this.color).setGroup(V)}update(e){super.update(e);let{light:t}=this;this.coneCosNode.value=Math.cos(t.angle),this.penumbraCosNode.value=Math.cos(t.angle*(1-t.penumbra)),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}getSpotAttenuation(e,t){let{coneCosNode:n,penumbraCosNode:r}=this;return os(n,r,t)}getLightCoord(e){let t=e.getNodeProperties(this),n=t.projectionUV;return n===void 0&&(n=YS(this.light,e.context.positionWorld),t.projectionUV=n),n}setupDirect(e){let{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:i}=this,a=this.getLightVector(e),o=a.normalize(),s=o.dot($S(i)),c=this.getSpotAttenuation(e,s),l=VC({lightDistance:a.length(),cutoffDistance:n,decayExponent:r}),u=t.mul(c).mul(l),d,f;return i.colorNode?(f=this.getLightCoord(e),d=i.colorNode(f)):i.map&&(f=this.getLightCoord(e),d=q(i.map,f.xy).onRenderUpdate(()=>i.map)),d&&(u=f.mul(2).sub(1).abs().lessThan(1).all().select(u.mul(d),u)),{lightColor:u,lightDirection:o}}},wE=class extends CE{static get type(){return`IESSpotLightNode`}constructor(e=null){super(e),this._iesTextureNode=null}getSpotAttenuation(e,t){let n=this.light.iesMap,r=null;if(n&&n.isTexture===!0){let e=t.acos().mul(1/Math.PI);this._iesTextureNode=q(n,I(e,0),0),r=this._iesTextureNode.r}else r=super.getSpotAttenuation(e,t);return r}update(e){super.update(e),this._iesTextureNode!==null&&this.light.iesMap&&(this._iesTextureNode.value=this.light.iesMap)}},TE=class extends BC{static get type(){return`LightProbeNode`}constructor(e=null){super(e);let t=[];for(let e=0;e<9;e++)t.push(new x);this.lightProbe=tl(t)}update(e){let{light:t}=this;super.update(e);for(let e=0;e<9;e++)this.lightProbe.array[e].copy(t.sh.coefficients[e]).multiplyScalar(t.intensity)}setup(e){let t=MT(Tu,this.lightProbe);e.context.irradiance.addAssign(t)}},EE=j(([e,t])=>{let n=e.abs().sub(t);return Oo(Vo(n,0)).add(Bo(Vo(n.x,n.y),0))}),DE=class extends CE{static get type(){return`ProjectorLightNode`}update(e){super.update(e);let t=this.light;if(this.penumbraCosNode.value=Math.min(Math.cos(t.angle*(1-t.penumbra)),.99999),t.aspect===null){let e=1;t.map!==null&&(e=t.map.width/t.map.height),t.shadow.aspect=e}else t.shadow.aspect=t.aspect}getSpotAttenuation(e){let t=N(0),n=this.penumbraCosNode,r=JS(this.light).mul(e.context.positionWorld||du);return M(r.w.greaterThan(0),()=>{let e=EE(r.xyz.div(r.w).xy.sub(I(.5)),I(.5)),i=Ta(-1,U(1,So(n)).sub(1));t.assign(is(e.mul(-2).mul(i)))}),t}},OE=new nt,kE=new nt,AE=null,jE=class extends BC{static get type(){return`RectAreaLightNode`}constructor(e=null){super(e),this.halfHeight=H(new x).setGroup(V),this.halfWidth=H(new x).setGroup(V),this.updateType=w.RENDER}update(e){super.update(e);let{light:t}=this,n=e.camera.matrixWorldInverse;kE.identity(),OE.copy(t.matrixWorld),OE.premultiply(n),kE.extractRotation(OE),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(kE),this.halfHeight.value.applyMatrix4(kE)}setupDirectRectArea(e){let t,n;e.isAvailable(`float32Filterable`)?(t=q(AE.LTC_FLOAT_1),n=q(AE.LTC_FLOAT_2)):(t=q(AE.LTC_HALF_1),n=q(AE.LTC_HALF_2));let{colorNode:r,light:i}=this;return{lightColor:r,lightPosition:QS(i),halfWidth:this.halfWidth,halfHeight:this.halfHeight,ltc_1:t,ltc_2:n}}static setLTC(e){AE=e}},ME=class{parseFunction(){C(`Abstract function.`)}},NE=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){C(`Abstract function.`)}};NE.isNodeFunction=!0;var PE=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,FE=/[a-z_0-9]+/gi,IE=`#pragma main`,LE=e=>{e=e.trim();let t=e.indexOf(IE),n=(t===-1?e:e.slice(t+12)).replace(/^(?:\s*\/\/[^\r\n]*|\s*\/\*[\s\S]*?\*\/|\s*)+/,``),r=n.match(PE);if(r!==null&&r.length===5){let i=r[4],a=[],o=null;for(;(o=FE.exec(i))!==null;)a.push(o);let s=[],c=0;for(;c<a.length;){let e=a[c][0]===`const`;e===!0&&c++;let t=a[c][0];t===`in`||t===`out`||t===`inout`?c++:t=``;let n=a[c++][0],r=Number.parseInt(a[c][0]);Number.isNaN(r)===!1?c++:r=null;let i=a[c++][0];s.push(new yE(n,i,r,t,e))}let l=n.substring(r[0].length),u=r[3]===void 0?``:r[3];return{type:r[2],inputs:s,name:u,precision:r[1]===void 0?``:r[1],inputsCode:i,blockCode:l,headerCode:t===-1?``:e.slice(0,t)}}throw Error(`THREE.FunctionNode: Function is not a GLSL code.`)},RE=class extends NE{constructor(e){let{type:t,inputs:n,name:r,precision:i,inputsCode:a,blockCode:o,headerCode:s}=LE(e);super(t,n,r,i),this.inputsCode=a,this.blockCode=o,this.headerCode=s}getCode(e=this.name){let t,n=this.blockCode;if(n!==``){let{type:r,inputsCode:i,headerCode:a,precision:o}=this,s=`${r} ${e} ( ${i.trim()} )`;o!==``&&(s=`${o} ${s}`),t=a+s+n}else t=``;return t}},zE=class extends ME{parseFunction(e){return new RE(e)}},BE=[],VE=[],HE=H(0,`int`).setGroup(V),UE=class extends T_{constructor(e,t){super(),this.renderer=e,this.backend=t,this.nodeFrame=new vE,this.nodeBuilderCache=new Map,this.callHashCache=new v_,this.groupsData=new v_,this._buildQueue=[],this._buildInProgress=!1,this.cacheLib={}}updateGroup(e){let t=e.groupNode;if(t.updateType===w.OBJECT)return!0;BE[0]=t,BE[1]=e;let n=this.groupsData.get(BE);return n===void 0&&this.groupsData.set(BE,n={}),BE[0]=null,BE[1]=null,n.version!==t.version&&(n.version=t.version,!0)}getForRenderCacheKey(e){return e.initialCacheKey}_createNodeBuilder(e,t){let n=this.backend.createNodeBuilder(e.object,this.renderer),r=this.renderer.debug.onNodeBuilderCreated;return r!==null&&r(n,e),n.scene=e.scene,n.material=t,n.camera=e.camera,n.context.material=t,n.lightsNode=e.lightsNode,n.environmentNode=this.getEnvironmentNode(e.scene),n.fogNode=this.getFogNode(e.scene),n.clippingContext=e.clippingContext,this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview&&n.enableMultiview(),n}getForRender(e,t=!1){let n=this.get(e),r=n.nodeBuilderState;if(r===void 0){let{nodeBuilderCache:i}=this,a=this.getForRenderCacheKey(e);if(r=i.get(a),r===void 0){let o=async()=>{let n=this._createNodeBuilder(e,e.material);try{t?await n.buildAsync():n.build()}catch(r){n=this._createNodeBuilder(e,new em),t?await n.buildAsync():n.build(),S(`TSL: `+r)}return n};if(t)return o().then(e=>(r=this._createNodeBuilderState(e),i.set(a,r),r.usedTimes++,n.nodeBuilderState=r,r));{let t=this._createNodeBuilder(e,e.material);try{t.build()}catch(n){t=this._createNodeBuilder(e,new em),t.build();let r=n.stackTrace;!r&&n.stack&&(r=new Rn(n.stack)),S(`TSL: `+n,r)}r=this._createNodeBuilderState(t),i.set(a,r)}}r.usedTimes++,n.nodeBuilderState=r}return r}getForRenderAsync(e){let t=this.getForRender(e,!0);return t.then?t:Promise.resolve(t)}getForRenderDeferred(e){let t=this.get(e);if(t.nodeBuilderState!==void 0)return t.nodeBuilderState;let n=this.getForRenderCacheKey(e),r=this.nodeBuilderCache.get(n);return r===void 0?(t.pendingBuild!==!0&&(t.pendingBuild=!0,this._buildQueue.push(()=>this.getForRenderAsync(e).then(()=>{t.pendingBuild=!1})),this._processBuildQueue()),null):(r.usedTimes++,t.nodeBuilderState=r,r)}_processBuildQueue(){this._buildInProgress||this._buildQueue.length===0||(this._buildInProgress=!0,this._buildQueue.shift()().then(()=>{this._buildInProgress=!1,this._processBuildQueue()}))}delete(e){if(e.isRenderObject){let t=this.get(e).nodeBuilderState;t!==void 0&&(t.usedTimes--,t.usedTimes===0&&this.nodeBuilderCache.delete(this.getForRenderCacheKey(e)))}return super.delete(e)}getForCompute(e,t=!1){let n=this.get(e),r=n.nodeBuilderState;if(r===void 0||n.version!==e.version){let i=this.backend.createNodeBuilder(null,this.renderer);i.compute=e;let a=this.renderer.debug.onNodeBuilderCreated;if(a!==null&&a(i,e),t)return i.buildAsync().then(()=>(r=this._createNodeBuilderState(i),n.nodeBuilderState=r,n.version=e.version,r));i.build(),r=this._createNodeBuilderState(i),n.nodeBuilderState=r,n.version=e.version}return r}getForComputeAsync(e){let t=this.getForCompute(e,!0);return t.then?t:Promise.resolve(t)}_createNodeBuilderState(e){return new RT(e.vertexShader,e.fragmentShader,e.computeShader,e.getAttributesArray(),e.getBindings(),e.updateNodes,e.updateBeforeNodes,e.updateAfterNodes,e.observer,e.hardwareClipping,e.transforms)}getEnvironmentNode(e){if(this.renderer.lighting.enabled===!1)return null;this.updateEnvironment(e);let t=null;if(e.environmentNode&&e.environmentNode.isNode)t=e.environmentNode;else{let n=this.get(e);n.environmentNode&&(t=n.environmentNode)}return t}getBackgroundNode(e){this.updateBackground(e);let t=null;if(e.backgroundNode&&e.backgroundNode.isNode)t=e.backgroundNode;else{let n=this.get(e);n.backgroundNode&&(t=n.backgroundNode)}return t}getFogNode(e){return this.updateFog(e),e.fogNode||this.get(e).fogNode||null}getCacheKey(e,t){BE[0]=e,BE[1]=t;let n=this.renderer.info.calls,r=this.callHashCache.get(BE)||{};if(r.callId!==n){if(VE.push(this.renderer.getOutputRenderTarget()&&this.renderer.getOutputRenderTarget().multiview?1:0),VE.push(+!!this.renderer.lighting.enabled),this.renderer.lighting.enabled){VE.push(t.getCacheKey(!0)),VE.push(+!!this.renderer.shadowMap.enabled),VE.push(this.renderer.shadowMap.type);let n=this.getEnvironmentNode(e);n&&VE.push(n.getCacheKey())}let i=this.getFogNode(e);i&&VE.push(i.getCacheKey()),r.callId=n,r.cacheKey=Vn(VE),this.callHashCache.set(BE,r),VE.length=0}return BE[0]=null,BE[1]=null,r.cacheKey}get isToneMappingState(){return!this.renderer.getRenderTarget()}updateBackground(e){let t=this.get(e),n=e.background;if(n){let r=e.backgroundBlurriness===0&&t.backgroundBlurriness>0||e.backgroundBlurriness>0&&t.backgroundBlurriness===0;(t.background!==n||r)&&(t.backgroundNode=this.getCacheNode(`background`,n,()=>{if(n.isCubeTexture===!0||n.mapping===303||n.mapping===304||n.mapping===306){if(e.backgroundBlurriness>0||n.mapping===306)return Ig(n);{let e;return e=n.isCubeTexture===!0?Uu(n):q(n),Tm(e)}}if(n.isTexture===!0)return q(n,cl.flipY()).setUpdateMatrix(!0);n.isColor!==!0&&S(`WebGPUNodes: Unsupported background configuration.`,n)},r),t.background=n,t.backgroundBlurriness=e.backgroundBlurriness)}else t.backgroundNode&&(delete t.backgroundNode,delete t.background)}getCacheNode(e,t,n,r=!1){let i=this.cacheLib[e]||(this.cacheLib[e]=new WeakMap),a=i.get(t);if(a===void 0||r){if(a===void 0&&t.isTexture===!0){let e=()=>{t.removeEventListener(`dispose`,e);let n=i.get(t);n!==void 0&&(i.delete(t),n.dispose())};t.addEventListener(`dispose`,e)}a=n(),i.set(t,a)}return a}updateFog(e){let t=this.get(e),n=e.fog;n?t.fog!==n&&(t.fogNode=this.getCacheNode(`fog`,n,()=>{if(n.isFogExp2)return Ux(Ku(`color`,`color`,n).setGroup(V),Vx(Ku(`density`,`float`,n).setGroup(V)));if(n.isFog)return Ux(Ku(`color`,`color`,n).setGroup(V),Bx(Ku(`near`,`float`,n).setGroup(V),Ku(`far`,`float`,n).setGroup(V)));S(`Renderer: Unsupported fog configuration.`,n)}),t.fog=n):(delete t.fogNode,delete t.fog)}updateEnvironment(e){let t=this.get(e),n=e.environment;n?t.environment!==n&&(t.environmentNode=this.getCacheNode(`environment`,n,()=>{if(n.isCubeTexture===!0)return Uu(n);if(n.isTexture===!0)return q(n);S(`Nodes: Unsupported environment configuration.`,n)}),t.environment=n):t.environmentNode&&(delete t.environmentNode,delete t.environment)}getNodeFrame(e=this.renderer,t=null,n=null,r=null,i=null,a=null){let o=this.nodeFrame;return o.renderer=e,o.scene=t,o.object=n,o.camera=r,o.material=i,o.compute=a,o}getNodeFrameForRender(e){return this.getNodeFrame(e.renderer,e.scene,e.object,e.camera,e.material)}getNodeFrameForCompute(e){return this.getNodeFrame(this.renderer,null,null,null,null,e)}getOutputCacheKey(){let e=this.renderer;return e.toneMapping+`,`+e.currentColorSpace+`,`+e.xr.isPresenting}getOutputNode(e){let t=this.renderer,n;return n=e.isArrayTexture?this.backend.isWebGLBackend?q(e,cl).depth(rl(`gl_ViewID_OVR`)).renderOutput(t.toneMapping,t.currentColorSpace):q(e,cl).depth(HE).renderOutput(t.toneMapping,t.currentColorSpace):q(e,cl).renderOutput(t.toneMapping,t.currentColorSpace),n}setOutputLayerIndex(e){HE.value=e}updateBefore(e){let t=e.getNodeBuilderState();for(let n of t.updateBeforeNodes)this.getNodeFrameForRender(e).updateBeforeNode(n)}updateAfter(e){let t=e.getNodeBuilderState();for(let n of t.updateAfterNodes)this.getNodeFrameForRender(e).updateAfterNode(n)}updateBeforeForCompute(e){let t=this.getForCompute(e);for(let n of t.updateBeforeNodes)this.getNodeFrameForCompute(e).updateBeforeNode(n)}updateAfterForCompute(e){let t=this.getForCompute(e);for(let n of t.updateAfterNodes)this.getNodeFrameForCompute(e).updateAfterNode(n)}updateForCompute(e){let t=this.getNodeFrame(),n=this.getForCompute(e);for(let e of n.updateNodes)t.updateNode(e)}updateForRender(e){let t=this.getNodeFrameForRender(e),n=e.getNodeBuilderState();for(let e of n.updateNodes)t.updateNode(e)}needsRefresh(e){let t=this.getNodeFrameForRender(e);return e.getMonitor().needsRefresh(e,t)}dispose(){super.dispose(),this.nodeFrame=new vE,this.nodeBuilderCache=new Map,this.cacheLib={}}},WE=new st,GE=0,KE=class e{constructor(e=null){this.id=GE++,this.version=0,this.clipIntersection=null,this.cacheKey=``,this.shadowPass=!1,this.viewMatrix=new nt,this.viewNormalMatrix=new ot,this.clippingGroupContexts=new WeakMap,this.intersectionPlanes=[],this.unionPlanes=[],this.parentVersion=null,e!==null&&(this.viewMatrix=e.viewMatrix,this.viewNormalMatrix=e.viewNormalMatrix,this.clippingGroupContexts=e.clippingGroupContexts,this.shadowPass=e.shadowPass)}projectPlanes(e,t,n){let r=e.length;for(let i=0;i<r;i++){WE.copy(e[i]).applyMatrix4(this.viewMatrix,this.viewNormalMatrix);let r=t[n+i],a=WE.normal;r.x=-a.x,r.y=-a.y,r.z=-a.z,r.w=WE.constant}}updateGlobal(e,t){this.shadowPass=e.overrideMaterial!==null&&e.overrideMaterial.isShadowPassMaterial,this.viewMatrix.copy(t.matrixWorldInverse),this.viewNormalMatrix.getNormalMatrix(this.viewMatrix)}update(e,t){let n=!1;e.version!==this.parentVersion&&(this.intersectionPlanes=Array.from(e.intersectionPlanes),this.unionPlanes=Array.from(e.unionPlanes),this.parentVersion=e.version),this.clipIntersection!==t.clipIntersection&&(this.clipIntersection=t.clipIntersection,this.clipIntersection?this.unionPlanes.length=e.unionPlanes.length:this.intersectionPlanes.length=e.intersectionPlanes.length);let r=t.clippingPlanes,i=r.length,a,o;if(this.clipIntersection?(a=this.intersectionPlanes,o=e.intersectionPlanes.length):(a=this.unionPlanes,o=e.unionPlanes.length),a.length!==o+i){a.length=o+i;for(let e=0;e<i;e++)a[o+e]=new kn;n=!0}this.projectPlanes(r,a,o),n&&(this.version++,this.cacheKey=`${this.id}:${this.intersectionPlanes.length}:${this.unionPlanes.length}`)}getGroupContext(t){if(this.shadowPass&&!t.clipShadows)return this;let n=this.clippingGroupContexts.get(t);return n===void 0&&(n=new e(this),this.clippingGroupContexts.set(t,n)),n.update(this,t),n}get unionClippingCount(){return this.unionPlanes.length}},qE=class{constructor(e,t,n){this.bundleGroup=e,this.camera=t,this.renderContext=n}},JE=[],YE=class{constructor(){this.bundles=new v_}get(e,t,n){let r=this.bundles;JE[0]=e,JE[1]=t,JE[2]=n;let i=r.get(JE);return i===void 0&&(i=new qE(e,t,n),r.set(JE,i)),JE[0]=null,JE[1]=null,JE[2]=null,i}dispose(){this.bundles=new v_}},XE=class{constructor(){this.lightNodes=new WeakMap,this.materialNodes=new Map,this.toneMappingNodes=new Map}fromMaterial(e){if(e.isNodeMaterial)return e;let t=null,n=this.getMaterialNodeClass(e.type);if(n!==null){t=new n;for(let n in e)t[n]=e[n]}return t}addToneMapping(e,t){this.addType(e,t,this.toneMappingNodes)}getToneMappingFunction(e){return this.toneMappingNodes.get(e)||null}getMaterialNodeClass(e){return this.materialNodes.get(e)||null}addMaterial(e,t){this.addType(e,t,this.materialNodes)}getLightNodeClass(e){return this.lightNodes.get(e)||null}addLight(e,t){this.addClass(e,t,this.lightNodes)}addType(e,t,n){if(n.has(t)){C(`Redefinition of node ${t}`);return}if(typeof e!=`function`)throw Error(`THREE.NodeLibrary: Node class ${e.name} is not a class.`);if(typeof t==`function`||typeof t==`object`)throw Error(`THREE.NodeLibrary: Base class ${t} is not a class.`);n.set(t,e)}addClass(e,t,n){if(n.has(t)){C(`Redefinition of node ${t.name}`);return}if(typeof e!=`function`)throw Error(`THREE.NodeLibrary: Node class ${e.name} is not a class.`);if(typeof t!=`function`)throw Error(`THREE.NodeLibrary: Base class ${t.name} is not a class.`);n.set(t,e)}},ZE=new sC,QE=class{constructor(){this.enabled=!0,this._cache=[],this._lightsNodeMap=new WeakMap}createNode(e=[]){return new sC().setLights(e)}getNode(e){if(e.isScene!==!0&&e.isGroup!==!0)return ZE;let t=this._lightsNodeMap.get(e);return t===void 0&&(t=this.createNode(),this._lightsNodeMap.set(e,t)),t}beginRender(e){this._cache.push(this.getNode(e).getLights())}finishRender(e){this.getNode(e).setLights(this._cache.pop())}},$E=class extends wt{constructor(e=1,t=1,n={}){super(e,t,n),this.isXRRenderTarget=!0,this._hasExternalTextures=!1,this._autoAllocateDepthBuffer=!0,this._isOpaqueFramebuffer=!1}copy(e){return super.copy(e),this._hasExternalTextures=e._hasExternalTextures,this._autoAllocateDepthBuffer=e._autoAllocateDepthBuffer,this._isOpaqueFramebuffer=e._isOpaqueFramebuffer,this}},eD=new x,tD=new x,nD=new WeakMap,rD=class extends yt{constructor(e,t=!1){super(),this.enabled=!1,this.isPresenting=!1,this.cameraAutoUpdate=!0,this._renderer=e,this._cameraL=new et,this._cameraL.viewport=new kn,this._cameraL.matrixWorldAutoUpdate=!1,this._cameraR=new et,this._cameraR.viewport=new kn,this._cameraR.matrixWorldAutoUpdate=!1,this._cameras=[this._cameraL,this._cameraR],this._cameraXR=new Tn,this._currentDepthNear=null,this._currentDepthFar=null,this._controllers=[],this._controllerInputSources=[],this._xrRenderTarget=null,this._layers=[],this._sessionUsesLayers=!1,this._supportsGlBinding=typeof XRWebGLBinding<`u`,this._supportsWebGPUBinding=globalThis.XRGPUBinding!==void 0,this._createXRLayer=uD.bind(this),this._gl=null,this._currentAnimationContext=null,this._currentAnimationLoop=null,this._currentPixelRatio=null,this._currentSize=new pe,this._currentCameraSettings=null,this._onSessionEvent=sD.bind(this),this._onSessionEnd=cD.bind(this),this._onInputSourcesChange=lD.bind(this),this._onAnimationFrame=dD.bind(this),this._referenceSpace=null,this._referenceSpaceType=`local-floor`,this._customReferenceSpace=null,this._framebufferScaleFactor=1,this._foveation=1,this._session=null,this._glBaseLayer=null,this._glBinding=null,this._webgpuBinding=null,this._glProjLayer=null,this._xrFrame=null,this._supportsLayers=this._supportsGlBinding&&`createProjectionLayer`in XRWebGLBinding.prototype,this._useMultiviewIfPossible=t,this._useMultiview=!1}getController(e){return this._getController(e).getTargetRaySpace()}getControllerGrip(e){return this._getController(e).getGripSpace()}getHand(e){return this._getController(e).getHandSpace()}getFoveation(){return this._foveation}setFoveation(e){this._foveation=e,this._glProjLayer!==null&&(this._glProjLayer.fixedFoveation=e),this._glBaseLayer!==null&&this._glBaseLayer.fixedFoveation!==void 0&&(this._glBaseLayer.fixedFoveation=e)}getFramebufferScaleFactor(){return this._framebufferScaleFactor}setFramebufferScaleFactor(e){this._framebufferScaleFactor=e,this.isPresenting===!0&&C(`XRManager: Cannot change framebuffer scale while presenting.`)}getReferenceSpaceType(){return this._referenceSpaceType}setReferenceSpaceType(e){this._referenceSpaceType=e,this.isPresenting===!0&&C(`XRManager: Cannot change reference space type while presenting.`)}getReferenceSpace(){return this._customReferenceSpace||this._referenceSpace}setReferenceSpace(e){this._customReferenceSpace=e}getCamera(){return this._cameraXR}getEnvironmentBlendMode(){if(this._session!==null)return this._session.environmentBlendMode}getBaseLayer(){return this._glProjLayer===null?this._glBaseLayer:this._glProjLayer}getBinding(){return this._glBinding===null&&this._supportsGlBinding&&(this._glBinding=new XRWebGLBinding(this._session,this._gl)),this._glBinding}foveateBoundTexture(e){if(e===null||e.isPostProcessingRenderTarget!==!0||this.isPresenting!==!0||this._glProjLayer===null)return;let t=this._renderer.backend;if(t===void 0||t.isWebGLBackend!==!0||t.state===null)return;let n=this._renderer.getOutputRenderTarget();if(n===null||n.isXRRenderTarget!==!0)return;let r=this.getBinding();if(r===null||typeof r.foveateBoundTexture!=`function`)return;this._renderer._textures.updateRenderTarget(e);let{textureGPU:i,glTextureType:a}=t.get(e.texture);if(i!==void 0&&a!==void 0&&e._xrFoveationTextureGPU!==i){e._xrFoveationTextureGPU=i,t.state.bindTexture(a,i);try{r.foveateBoundTexture(a,this.getFoveation())}catch(e){Wt(`XRManager: Unable to foveate bound XR post-processing texture. ${e.name}: ${e.message}`)}finally{t.state.unbindTexture()}}}getWebGPUBinding(){return this._webgpuBinding===null&&this._supportsWebGPUBinding&&(this._webgpuBinding=new globalThis.XRGPUBinding(this._session,this._renderer.backend.device)),this._webgpuBinding}_isWebGPUSession(){return this._renderer.backend.isWebGPUBackend===!0&&this._session!==null&&this._session.enabledFeatures.includes(`webgpu`)}_validateWebGPUSession(){if(this._renderer.backend.isWebGPUBackend===!0&&this._session.enabledFeatures.includes(`webgpu`)===!1)throw Error(`THREE.XRManager: WebGPU XR sessions require the "webgpu" session feature. Use VRButtonGPU/XRButton with "webgpu" enabled or use a WebGL backend.`)}async _initWebGPUSession(e){let t=this.getWebGPUBinding(),n=t.createProjectionLayer({colorFormat:t.getPreferredColorFormat()});this._glProjLayer=n,e.updateRenderState({layers:[n]}),this._referenceSpace=await e.requestReferenceSpace(this.getReferenceSpaceType()),this._xrRenderTarget=new wt(n.textureWidth,n.textureHeight,{depth:2,minFilter:Ce,magFilter:Ce,depthBuffer:!0,multiview:!1,useArrayDepthTexture:!0,storeMultisampledColorBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1,samples:this._renderer.samples}),this._xrRenderTarget.texture.isArrayTexture=!0,this._useMultiviewIfPossible===!0&&Wt(`THREE.XRManager: WebGPU XR does not support multiview yet. Disabling multiview for this XR session.`),this._useMultiview=!1}_disposeWebGPUSession(){let e=this._renderer,t=e.backend,n=this._xrRenderTarget;if(n!==null&&t.isWebGPUBackend===!0){e._renderContexts&&e._renderContexts.dispose&&e._renderContexts.dispose(),n.dispose();for(let e of n.textures)t.has(e)&&t.destroyTexture(e);t.delete(n)}}_getWebGPUViewData(e){let t=this.getWebGPUBinding(),n={colorTexture:null,viewDescriptors:[],viewports:[]};for(let r=0;r<e.length;r++){let i=t.getViewSubImage(this._glProjLayer,e[r]);n.colorTexture===null&&(n.colorTexture=i.colorTexture),n.viewports.push(i.viewport),i.getViewDescriptor&&n.viewDescriptors.push(i.getViewDescriptor())}return n}getFrame(){return this._xrFrame}useMultiview(){return this._useMultiview}createQuadLayer(e,n,r,a,o,s,l,u={}){let d=new Ae(e,n),f=new $E(o,s,{format:Sn,type:we,depthTexture:new b(o,s,u.stencil?i:_e,void 0,void 0,void 0,void 0,void 0,void 0,u.stencil?Je:c),stencilBuffer:u.stencil,samples:u.samples??this._renderer.samples,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledColorBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1}),p=new t({color:16777215,side:0});p.map=f.texture,p.map.offset.y=1,p.map.repeat.y=-1;let m=new je(d,p);m.position.copy(r),m.quaternion.copy(a);let h={type:`quad`,width:e,height:n,translation:r,quaternion:a,pixelwidth:o,pixelheight:s,samples:f.samples,plane:m,material:p,rendercall:l,renderTarget:f};if(this._layers.push(h),this._session!==null){h.plane.material=new t({color:16777215,side:0}),h.plane.material.blending=5,h.plane.material.blendEquation=100,h.plane.material.blendSrc=200,h.plane.material.blendDst=200,h.xrlayer=this._createXRLayer(h);let e=this._session.renderState.layers;e.unshift(h.xrlayer),this._session.updateRenderState({layers:e})}else f.isXRRenderTarget=!1;return m}createCylinderLayer(e,n,r,o,s,l,u,d,f={}){let p=new a(e,e,e*n/r,64,64,!0,Math.PI-n/2,n),m=new $E(l,u,{format:Sn,type:we,depthTexture:new b(l,u,f.stencil?i:_e,void 0,void 0,void 0,void 0,void 0,void 0,f.stencil?Je:c),stencilBuffer:f.stencil,samples:f.samples??this._renderer.samples,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledColorBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1}),h=new t({color:16777215,side:1});h.map=m.texture,h.map.offset.y=1,h.map.repeat.y=-1;let g=new je(p,h);g.position.copy(o),g.quaternion.copy(s);let _={type:`cylinder`,radius:e,centralAngle:n,aspectratio:r,translation:o,quaternion:s,pixelwidth:l,pixelheight:u,samples:m.samples,plane:g,material:h,rendercall:d,renderTarget:m};if(this._layers.push(_),this._session!==null){_.plane.material=new t({color:16777215,side:1}),_.plane.material.blending=5,_.plane.material.blendEquation=100,_.plane.material.blendSrc=200,_.plane.material.blendDst=200,_.xrlayer=this._createXRLayer(_);let e=this._session.renderState.layers;e.unshift(_.xrlayer),this._session.updateRenderState({layers:e})}else m.isXRRenderTarget=!1;return g}renderLayers(){let e=new x,t=new St,n=this._renderer,r=this.isPresenting;this.isPresenting=!1;let i=new pe;n.getSize(i);let a=n.getRenderTarget();for(let r of this._layers){r.renderTarget.isXRRenderTarget=this._session!==null,r.renderTarget._hasExternalTextures=r.renderTarget.isXRRenderTarget;let i=n.contextNode,a;if(r.renderTarget.isXRRenderTarget&&this._sessionUsesLayers){r.xrlayer.transform=new XRRigidTransform(r.plane.getWorldPosition(e),r.plane.getWorldQuaternion(t));let o=this._glBinding.getSubImage(r.xrlayer,this._xrFrame);n.backend.setXRRenderTargetTextures(r.renderTarget,o.colorTexture,void 0),n._setXRLayerSize(r.renderTarget.width,r.renderTarget.height),a=nD.get(i),a===void 0&&(a=_s({getOutput:e=>Oc(e,n.toneMapping,n.outputColorSpace),...i.getFlowContextData()}),nD.set(i,a))}else a=i;n.contextNode=a,n.setRenderTarget(r.renderTarget),r.rendercall(),n.contextNode=i}n.setRenderTarget(a),n._setXRLayerSize(i.x,i.y),this.isPresenting=r}getSession(){return this._session}async setSession(e){let n=this._renderer;n.initialized===!1&&await n.init(),this._gl=n.getContext();let r=this._gl;if(this._session=e,e!==null){if(e.addEventListener(`select`,this._onSessionEvent),e.addEventListener(`selectstart`,this._onSessionEvent),e.addEventListener(`selectend`,this._onSessionEvent),e.addEventListener(`squeeze`,this._onSessionEvent),e.addEventListener(`squeezestart`,this._onSessionEvent),e.addEventListener(`squeezeend`,this._onSessionEvent),e.addEventListener(`end`,this._onSessionEnd),e.addEventListener(`inputsourceschange`,this._onInputSourcesChange),this._validateWebGPUSession(),this._currentPixelRatio=n.getPixelRatio(),n.getSize(this._currentSize),this._currentAnimationContext=n._animation.getContext(),this._currentAnimationLoop=n._animation.getAnimationLoop(),n._animation.stop(),this._isWebGPUSession())await this._initWebGPUSession(e);else if(this._supportsLayers===!0){let a=null,o=null,s=null,l=r.getContextAttributes();await n.backend.makeXRCompatible(),this.setFoveation(this.getFoveation()),n.depth&&(s=n.stencil?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24,a=n.stencil?Je:c,o=n.stencil?i:_e);let u={colorFormat:r.RGBA8,depthFormat:s,scaleFactor:this._framebufferScaleFactor,clearOnAccess:!1};this._useMultiviewIfPossible&&n.hasFeature(`OVR_multiview2`)&&(u.textureType=`texture-array`,this._useMultiview=!0),this._glBinding=this.getBinding();let d=this._glBinding.createProjectionLayer(u),f=[d];this._glProjLayer=d,n.setPixelRatio(1),n._setXRLayerSize(d.textureWidth,d.textureHeight);let p=this._useMultiview?2:1,m=new b(d.textureWidth,d.textureHeight,o,void 0,void 0,void 0,void 0,void 0,void 0,a,p);if(this._xrRenderTarget=new $E(d.textureWidth,d.textureHeight,{format:Sn,type:we,colorSpace:n.outputColorSpace,depthTexture:m,stencilBuffer:n.stencil,samples:l.antialias?4:0,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1,storeMultisampledColorBuffer:!1,storeMultisampledDepthBuffer:d.ignoreDepthValues===!1,storeMultisampledStencilBuffer:d.ignoreDepthValues===!1,depth:this._useMultiview?2:1,multiview:this._useMultiview}),this._xrRenderTarget._hasExternalTextures=!0,this._xrRenderTarget.depth=this._useMultiview?2:1,this._sessionUsesLayers=e.enabledFeatures.includes(`layers`),this._referenceSpace=await e.requestReferenceSpace(this.getReferenceSpaceType()),this._sessionUsesLayers)for(let e of this._layers)e.plane.material=new t({color:16777215,side:+(e.type===`cylinder`)}),e.plane.material.blending=5,e.plane.material.blendEquation=100,e.plane.material.blendSrc=200,e.plane.material.blendDst=200,e.xrlayer=this._createXRLayer(e),f.unshift(e.xrlayer);e.updateRenderState({layers:f})}else{await n.backend.makeXRCompatible(),this.setFoveation(this.getFoveation());let t={antialias:n.currentSamples>0,alpha:!0,depth:n.depth,stencil:n.stencil,framebufferScaleFactor:this.getFramebufferScaleFactor()},i=new XRWebGLLayer(e,r,t);this._glBaseLayer=i,e.updateRenderState({baseLayer:i}),n.setPixelRatio(1),n._setXRLayerSize(i.framebufferWidth,i.framebufferHeight),this._xrRenderTarget=new $E(i.framebufferWidth,i.framebufferHeight,{format:Sn,type:we,colorSpace:n.outputColorSpace,stencilBuffer:n.stencil}),this._xrRenderTarget._isOpaqueFramebuffer=!0,this._referenceSpace=await e.requestReferenceSpace(this.getReferenceSpaceType())}n._animation.setAnimationLoop(this._onAnimationFrame),n._animation.setContext(e),n._animation.start(),this.isPresenting=!0,this.dispatchEvent({type:`sessionstart`})}}updateCamera(e){let t=this._session;if(t===null)return;let n=e.near,r=e.far,i=this._cameraXR,a=this._cameraL,o=this._cameraR;i.near=o.near=a.near=n,i.far=o.far=a.far=r,i.isMultiViewCamera=this._useMultiview,(this._currentDepthNear!==i.near||this._currentDepthFar!==i.far)&&(t.updateRenderState({depthNear:i.near,depthFar:i.far}),this._currentDepthNear=i.near,this._currentDepthFar=i.far),i.layers.mask=e.layers.mask|6,a.layers.mask=i.layers.mask&-5,o.layers.mask=i.layers.mask&-3;let s=e.parent,c=i.cameras;aD(i,s);for(let e=0;e<c.length;e++)aD(c[e],s);c.length===2?iD(i,a,o):i.projectionMatrix.copy(a.projectionMatrix),this._currentCameraSettings===null&&e.isPerspectiveCamera&&(this._currentCameraSettings={camera:e,fov:e.fov,zoom:e.zoom}),oD(e,i,s)}_getController(e){let t=this._controllers[e];return t===void 0&&(t=new oe,this._controllers[e]=t),t}};function iD(e,t,n){eD.setFromMatrixPosition(t.matrixWorld),tD.setFromMatrixPosition(n.matrixWorld);let r=eD.distanceTo(tD),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function aD(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}function oD(e,t,n){n===null?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=Nt*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}function sD(e){let t=this._controllerInputSources.indexOf(e.inputSource);if(t===-1)return;let n=this._controllers[t];if(n!==void 0){let t=this.getReferenceSpace();n.update(e.inputSource,e.frame,t),n.dispatchEvent({type:e.type,data:e.inputSource})}}function cD(){let e=this._session,t=this._renderer;e.removeEventListener(`select`,this._onSessionEvent),e.removeEventListener(`selectstart`,this._onSessionEvent),e.removeEventListener(`selectend`,this._onSessionEvent),e.removeEventListener(`squeeze`,this._onSessionEvent),e.removeEventListener(`squeezestart`,this._onSessionEvent),e.removeEventListener(`squeezeend`,this._onSessionEvent),e.removeEventListener(`end`,this._onSessionEnd),e.removeEventListener(`inputsourceschange`,this._onInputSourcesChange);for(let e=0;e<this._controllers.length;e++){let t=this._controllerInputSources[e];t!==null&&(this._controllerInputSources[e]=null,this._controllers[e].disconnect(t))}if(this._currentDepthNear=null,this._currentDepthFar=null,t._resetXRState(),this._disposeWebGPUSession(),this._session=null,this._xrRenderTarget=null,this._glBinding=null,this._webgpuBinding=null,this._glBaseLayer=null,this._glProjLayer=null,this._sessionUsesLayers===!0)for(let e of this._layers)e.renderTarget=new $E(e.pixelwidth,e.pixelheight,{format:Sn,type:we,depthTexture:new b(e.pixelwidth,e.pixelheight,e.stencilBuffer?i:_e,void 0,void 0,void 0,void 0,void 0,void 0,e.stencilBuffer?Je:c),stencilBuffer:e.stencilBuffer,samples:e.samples,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledColorBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1}),e.renderTarget.isXRRenderTarget=!1,e.plane.material=e.material,e.material.map=e.renderTarget.texture,e.material.map.offset.y=1,e.material.map.repeat.y=-1,delete e.xrlayer;if(this.isPresenting=!1,this._useMultiview=!1,t._animation.stop(),t._animation.setAnimationLoop(this._currentAnimationLoop),t._animation.setContext(this._currentAnimationContext),t._animation.start(),t.setPixelRatio(this._currentPixelRatio),t.setSize(this._currentSize.width,this._currentSize.height,!1),this._currentCameraSettings!==null){let e=this._currentCameraSettings.camera;e.fov=this._currentCameraSettings.fov,e.zoom=this._currentCameraSettings.zoom,e.updateProjectionMatrix(),this._currentCameraSettings=null}this.dispatchEvent({type:`sessionend`})}function lD(e){let t=this._controllers,n=this._controllerInputSources;for(let r=0;r<e.removed.length;r++){let i=e.removed[r],a=n.indexOf(i);a>=0&&(n[a]=null,t[a].disconnect(i))}for(let r=0;r<e.added.length;r++){let i=e.added[r],a=n.indexOf(i);if(a===-1){for(let e=0;e<t.length;e++)if(e>=n.length){n.push(i),a=e;break}else if(n[e]===null){n[e]=i,a=e;break}if(a===-1)break}let o=t[a];o&&o.connect(i)}}function uD(e){return e.type===`quad`?this._glBinding.createQuadLayer({transform:new XRRigidTransform(e.translation,e.quaternion),width:e.width/2,height:e.height/2,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1}):this._glBinding.createCylinderLayer({transform:new XRRigidTransform(e.translation,e.quaternion),radius:e.radius,centralAngle:e.centralAngle,aspectRatio:e.aspectRatio,space:this._referenceSpace,viewPixelWidth:e.pixelwidth,viewPixelHeight:e.pixelheight,clearOnAccess:!1})}function dD(e,t){if(t===void 0)return;let n=this._cameraXR,r=this._renderer,i=r.backend,a=this._glBaseLayer,o=this.getReferenceSpace(),s=t.getViewerPose(o);if(this._xrFrame=t,s!==null){let e=s.views,t=this._isWebGPUSession()?this._getWebGPUViewData(e):null;this._glBaseLayer!==null&&t===null&&i.setXRTarget(a.framebuffer);let o=!1;e.length!==n.cameras.length&&(n.cameras.length=0,o=!0);for(let r=0;r<e.length;r++){let s=e[r],c;if(t!==null)c=t.viewports[r];else if(this._supportsLayers===!0){let e=this._glBinding.getViewSubImage(this._glProjLayer,s);c=e.viewport,r===0&&i.setXRRenderTargetTextures(this._xrRenderTarget,e.colorTexture,this._glProjLayer.ignoreDepthValues&&!this._useMultiview?void 0:e.depthStencilTexture)}else c=a.getViewport(s);let l=this._cameras[r];l===void 0&&(l=new et,l.layers.enable(r),l.viewport=new kn,l.matrixWorldAutoUpdate=!1,this._cameras[r]=l),l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.quaternion,l.scale),l.projectionMatrix.fromArray(s.projectionMatrix),l.projectionMatrixInverse.copy(l.projectionMatrix).invert(),l.viewport.set(c.x,c.y,c.width,c.height),r===0&&(n.matrix.copy(l.matrix),n.matrix.decompose(n.position,n.quaternion,n.scale)),o===!0&&n.cameras.push(l)}t!==null&&t.colorTexture!==null&&i.setXRRenderTargetTextures(this._xrRenderTarget,t.colorTexture,t.viewDescriptors),r.setOutputRenderTarget(this._xrRenderTarget);let c=r._getFrameBufferTarget();t!==null&&(this._xrRenderTarget.samples=c===null?r.samples:0,this._xrRenderTarget.depthBuffer=c===null),r.xr.foveateBoundTexture(c)}for(let e=0;e<this._controllers.length;e++){let n=this._controllerInputSources[e],r=this._controllers[e];n!==null&&r!==void 0&&r.update(n,t,o)}this._currentAnimationLoop&&this._currentAnimationLoop(e,t),t.detectedPlanes&&this.dispatchEvent({type:`planesdetected`,data:t}),this._xrFrame=null}var fD=class extends yt{constructor(e){super(),this.domElement=e,this._pixelRatio=1,this._width=this.domElement.width,this._height=this.domElement.height,this._viewport=new kn(0,0,this._width,this._height),this._scissor=new kn(0,0,this._width,this._height),this._scissorTest=!1,this.colorTexture=new dt,this.depthTexture=new b}getPixelRatio(){return this._pixelRatio}getDrawingBufferSize(e){return e.set(this._width*this._pixelRatio,this._height*this._pixelRatio).floor()}getSize(e){return e.set(this._width,this._height)}setPixelRatio(e=1){this._pixelRatio!==e&&(this._pixelRatio=e,this.setSize(this._width,this._height,!1))}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this._pixelRatio=n,this.domElement.width=Math.floor(e*n),this.domElement.height=Math.floor(t*n),this.setViewport(0,0,e,t),this._dispatchResize())}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||(this._width=e,this._height=t,this.domElement.width=Math.floor(e*this._pixelRatio),this.domElement.height=Math.floor(t*this._pixelRatio),n===!0&&(this.domElement.style.width=e+`px`,this.domElement.style.height=t+`px`),this.setViewport(0,0,e,t),this._dispatchResize())}getScissor(e){let t=this._scissor;return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e}setScissor(e,t,n,r){let i=this._scissor;e.isVector4?i.copy(e):i.set(e,t,n,r)}getScissorTest(){return this._scissorTest}setScissorTest(e){this._scissorTest=e}getViewport(e){return e.copy(this._viewport)}setViewport(e,t,n,r,i=0,a=1){let o=this._viewport;e.isVector4?o.copy(e):o.set(e,t,n,r),o.minDepth=i,o.maxDepth=a}_dispatchResize(){this.dispatchEvent({type:`resize`})}dispose(){this.dispatchEvent({type:`dispose`})}},pD=new xn,mD=new pe,hD=new kn,gD=new Dn,_D=new ht,vD=new nt,yD=new kn,bD={0:1,1:0,2:2},xD=class{constructor(e,t={}){this.isRenderer=!0;let{logarithmicDepthBuffer:n=!1,reversedDepthBuffer:r=!1,alpha:i=!0,depth:a=!0,stencil:o=!1,antialias:s=!1,samples:c=0,getFallback:l=null,outputBufferType:u=ye,multiview:d=!1}=t;this.backend=e,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.alpha=i,this.logarithmicDepthBuffer=n,this.reversedDepthBuffer=r,this.outputColorSpace=Le,this.toneMapping=0,this.toneMappingExposure=1,this.sortObjects=!0,this.depth=a,this.stencil=o,this.info=new N_,this.contextNode=_s(),this.library=new XE,this.lighting=new QE,this._samples=c||(s===!0?4:0),this._onCanvasTargetResize=this._onCanvasTargetResize.bind(this),this._canvasTarget=new fD(e.getDomElement()),this._canvasTarget.addEventListener(`resize`,this._onCanvasTargetResize),this._canvasTarget.isDefaultCanvasTarget=!0,this._inspector=new jc,this._inspector.setRenderer(this),this._getFallback=l,this._attributes=null,this._geometries=null,this._nodes=null,this._animation=null,this._bindings=null,this._objects=null,this._pipelines=null,this._bundles=null,this._renderLists=null,this._renderContexts=null,this._textures=null,this._background=null,this._quadCache=new Map,this._currentRenderContext=null,this._opaqueSort=null,this._transparentSort=null,this._frameBufferTargets=new Map;let f=this.alpha===!0?0:1;this._clearColor=new tv(0,0,0,f),this._clearDepth=1,this._clearStencil=0,this._renderTarget=null,this._activeCubeFace=0,this._activeMipmapLevel=0,this._outputRenderTarget=null,this._mrt=null,this._renderObjectFunction=null,this._currentRenderObjectFunction=null,this._currentRenderBundle=null,this._handleObjectFunction=this._renderObjectDirect,this._isDeviceLost=!1,this.onDeviceLost=this._onDeviceLost,this.onError=this._onError,this._outputBufferType=u,this._cacheShadowNodes=new WeakMap,this._initialized=!1,this._callDepth=-1,this._initPromise=null,this._compilationPromises=null,this._isPreCompiling=!1,this._currentSourceMaterial=null,this.transparent=!0,this.opaque=!0,this.shadowMap={enabled:!1,transmitted:!1,type:1},this.xr=new rD(this,d),this.debug={checkShaderErrors:!0,diagnostics:{keywords:!1},onNodeBuilderCreated:null,onShaderError:null,getShaderAsync:async(e,t,n)=>{await this.compileAsync(n,t,e);let r=this.needsFrameBufferTarget&&this._renderTarget===null?this._getFrameBufferTarget():this._renderTarget||this._outputRenderTarget,i=this._renderLists.get(e,t,this.lighting),a=this._renderContexts.get(r,this._mrt),o=e.overrideMaterial||n.material,{fragmentShader:s,vertexShader:c}=this._objects.get(n,o,e,t,i.lightsNode,a,a.clippingContext).getNodeBuilderState();return{fragmentShader:s,vertexShader:c}}}}async init(){return this._initPromise===null&&(this._initPromise=new Promise(async(e,t)=>{let n=this.backend;try{await n.init(this)}catch(e){if(this._getFallback!==null)try{this.backend=n=this._getFallback(e),await n.init(this)}catch(e){t(e);return}else{t(e);return}}this._nodes=new UE(this,n),this._animation=new __(this,this._nodes,this.info),this._attributes=new O_(n,this.info),this._background=new FT(this,this._nodes),this._geometries=new M_(this._attributes,this.info),this._textures=new ev(this,n,this.info),this._pipelines=new z_(n,this._nodes,this.info),this._bindings=new B_(n,this._nodes,this._textures,this._attributes,this._pipelines,this.info),this._objects=new w_(this,this._nodes,this._geometries,this._pipelines,this._bindings,this.info),this._renderLists=new J_,this._bundles=new YE,this._renderContexts=new Q_(this),this._animation.start(),this._initialized=!0,e(this)})),this._initPromise}get domElement(){return this._canvasTarget.domElement}get coordinateSystem(){return this.backend.coordinateSystem}async compileAsync(e,t,n=null,r=null){if(this._isDeviceLost===!0)return;this._initialized===!1&&await this.init(),this.shadowMap.type===2&&(C(`WebGPURenderer: PCFSoftShadowMap has been removed. Using PCFShadowMap instead.`),this.shadowMap.type=1);let i=this._nodes.nodeFrame,a=i.renderId,o=this._currentRenderContext,s=this._currentRenderObjectFunction,c=this._handleObjectFunction,l=this._compilationPromises;n===null&&(n=e);let u=e.isScene===!0?e:n.isScene===!0?n:pD,d=this.needsFrameBufferTarget&&this._renderTarget===null,f=this._renderTarget||this._outputRenderTarget,p=this.xr.isPresenting===!0&&this.isOutputTarget,m=d?this._getFrameBufferTarget():f,h=this._renderContexts.get(m,this._mrt),g=this._activeMipmapLevel,_=[];this._currentRenderContext=h,this._currentRenderObjectFunction=this.renderObject,this._handleObjectFunction=this._createObjectPipeline,this._compilationPromises=_,i.renderId++,i.update(),h.depth=this.depth,h.stencil=this.stencil,h.clippingContext||=new KE,h.clippingContext.updateGlobal(u,t),e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t=this._updateCamera(t,p),u.onBeforeRender(this,e,t,m),vD.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),t.isArrayCamera?_D.setFromArrayCamera(t):gD.setFromProjectionMatrix(vD,t.coordinateSystem,t.reversedDepth);let v=this._renderLists.get(u,t,this.lighting);if(v.begin(),this._projectObject(e,t,0,v,h.clippingContext),n!==e&&n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&v.pushLight(e)}),v.finish(),m!==null){this._textures.updateRenderTarget(m,g);let e=this._textures.get(m);h.textures=e.textures,h.depthTexture=e.depthTexture}else h.textures=null,h.depthTexture=null;n===e?this._background.update(u,v,h):this._background.update(n,v,h);let y=v.opaque,b=v.transparent,ee=v.transparentDoublePass,te=v.lightsNode;this.opaque===!0&&y.length>0&&this._renderObjects(y,t,u,te),this.transparent===!0&&b.length>0&&this._renderTransparents(b,ee,t,u,te),i.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=s,this._handleObjectFunction=c,this._compilationPromises=l;let ne=_.length,re=0;for(let e of _){let t=this._objects.get(e.object,e.material,e.scene,e.camera,e.lightsNode,e.renderContext,e.clippingContext,e.passId);t.drawRange=e.object.geometry.drawRange,t.group=e.group,await this._nodes.getForRenderAsync(t),this._isPreCompiling=!0,this._nodes.updateBefore(t),this._geometries.updateForRender(t),this._nodes.updateForRender(t),this._bindings.updateForRender(t),this._isPreCompiling=!1;let n=[];this._pipelines.getForRender(t,n),n.length>0&&await Promise.all(n),this._isPreCompiling=!0,this._nodes.updateAfter(t),this._isPreCompiling=!1,re++,r!==null&&r(new ProgressEvent(`progress`,{lengthComputable:!0,loaded:re,total:ne})),await Pt()}}async compileComputeAsync(e,t=null){if(this._isDeviceLost===!0)return;this._initialized===!1&&await this.init();let n=Array.isArray(e)?e:[e];if(n.length===0||n.some(e=>e==null||e.isComputeNode!==!0))throw Error(`THREE.Renderer: .compileComputeAsync() expects a ComputeNode.`);let r=n.length,i=0,a=this._pipelines,o=this._bindings,s=this._nodes;for(let e of n){if(a.has(e)===!1){let t=()=>{e.removeEventListener(`dispose`,t),a.delete(e),o.deleteForCompute(e),s.delete(e)};e.addEventListener(`dispose`,t);let n=e.onInitFunction;n!==null&&n.call(e,{renderer:this})}await s.getForComputeAsync(e),s.updateBeforeForCompute(e),s.updateForCompute(e),o.updateForCompute(e);let n=o.getForCompute(e),c=[];a.getForCompute(e,n,c),await Promise.all(c),s.updateAfterForCompute(e),i++,t!==null&&t(new ProgressEvent(`progress`,{lengthComputable:!0,loaded:i,total:r})),i<r&&await Pt()}}async renderAsync(e,t){Wt(`Renderer: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.render(e,t)}async waitForGPU(){S(`Renderer: waitForGPU() has been removed. Read https://github.com/mrdoob/three.js/issues/32012 for more information.`)}set inspector(e){this._inspector!==null&&this._inspector.setRenderer(null),this._inspector=e,this._inspector.setRenderer(this)}get inspector(){return this._inspector}set highPrecision(e){let t=this.contextNode.value;e===!0?(t.modelViewMatrix=au,t.modelNormalViewMatrix=ou):this.highPrecision&&(delete t.modelViewMatrix,delete t.modelNormalViewMatrix)}get highPrecision(){let e=this.contextNode.value;return e.modelViewMatrix===au&&e.modelNormalViewMatrix===ou}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}getOutputBufferType(){return this._outputBufferType}getColorBufferType(){return Wt(`Renderer: ".getColorBufferType()" has been renamed to ".getOutputBufferType()".`),this.getOutputBufferType()}_onDeviceLost(e){let t=`THREE.WebGPURenderer: ${e.api} Device Lost:\n\nMessage: ${e.message}`;e.reason&&(t+=`\nReason: ${e.reason}`),S(t),this._isDeviceLost=!0}_onError(e){let t=`WebGPURenderer: Uncaptured ${e.api} ${e.type}`;e.message&&(t+=`: ${e.message}`),S(t)}_bundleNeedsUpdate(e,t){return t.bundleGPU===void 0||e.version!==t.version}_renderBundle(e,t,n){let{bundleGroup:r,camera:i,renderList:a}=e,o=this._currentRenderContext,s=this._bundles.get(r,i,o),c=this.backend.get(s);if(this._bundleNeedsUpdate(r,c)){this.backend.beginBundle(o),this._currentRenderBundle=s;let{transparentDoublePass:e,transparent:l,opaque:u}=a;this.opaque===!0&&u.length>0&&this._renderObjects(u,i,t,n),this.transparent===!0&&l.length>0&&this._renderTransparents(l,e,i,t,n),this._currentRenderBundle=null,this.backend.finishBundle(o,s),c.version=r.version}else{let{renderObjects:e}=c;for(let t=0,n=e.length;t<n;t++){let n=e[t],r=this._nodes.needsRefresh(n);r===gn.FULL?(this._nodes.updateBefore(n),this._geometries.updateForRender(n),this._nodes.updateForRender(n),this._bindings.updateForRender(n),this._nodes.updateAfter(n)):r===gn.SHARED&&(this._nodes.updateBefore(n),this._nodes.updateForRender(n),this._bindings.updateSharedForRender(n),this._nodes.updateAfter(n))}}this.backend.addBundle(o,s)}render(e,t){if(this._initialized===!1)throw Error(`THREE.Renderer: .render() called before the backend is initialized. Use "await renderer.init();" before rendering.`);this._renderScene(e,t)}get initialized(){return this._initialized}_renderOutputLayers(e,t){if(this.backend.isWebGLBackend===!0&&t.multiview===!0||t.texture.isArrayTexture!==!0||t.texture.image.depth<=1){this._renderScene(e,e.camera,!1);return}let n=this._activeCubeFace;try{for(let n=0;n<t.texture.image.depth;n++)this._nodes.setOutputLayerIndex(n),this._activeCubeFace=n,this._renderScene(e,e.camera,!1)}finally{this._nodes.setOutputLayerIndex(0),this._activeCubeFace=n}}_getFrameBufferTarget(){if(this.needsFrameBufferTarget===!1)return null;let{width:e,height:t}=this.getDrawingBufferSize(mD),{depth:n,stencil:r}=this,i=this._outputRenderTarget||this._canvasTarget,a=this._frameBufferTargets.get(i);if(a===void 0){a=new wt(e,t,{depthBuffer:n,stencilBuffer:r,type:this._outputBufferType,format:Sn,colorSpace:Zt.workingColorSpace,generateMipmaps:!1,minFilter:Ce,magFilter:Ce,samples:this.samples}),a.isPostProcessingRenderTarget=!0;let o=()=>{i.removeEventListener(`dispose`,o),a.dispose(),this._frameBufferTargets.delete(i)};i.addEventListener(`dispose`,o),this._frameBufferTargets.set(i,a)}let o=this.getOutputRenderTarget();a.depthBuffer=n,a.stencilBuffer=r,o===null?a.setSize(e,t,1):a.setSize(o.width,o.height,o.depth);let s=this._outputRenderTarget?this._outputRenderTarget.viewport:i._viewport,c=this._outputRenderTarget?this._outputRenderTarget.scissor:i._scissor,l=this._outputRenderTarget?1:i._pixelRatio,u=this._outputRenderTarget?this._outputRenderTarget.scissorTest:i._scissorTest;return a.viewport.copy(s),a.scissor.copy(c),a.viewport.multiplyScalar(l),a.scissor.multiplyScalar(l),a.scissorTest=u,a.multiview=o!==null&&o.multiview,a.useArrayDepthTexture=o!==null&&o.useArrayDepthTexture,a.resolveDepthBuffer=o===null||o.resolveDepthBuffer,a.resolveStencilBuffer=o===null||o.resolveStencilBuffer,a.storeMultisampledColorBuffer=o===null||o.storeMultisampledColorBuffer,a.storeMultisampledDepthBuffer=o===null||o.storeMultisampledDepthBuffer,a.storeMultisampledStencilBuffer=o===null||o.storeMultisampledStencilBuffer,a._autoAllocateDepthBuffer=o!==null&&o._autoAllocateDepthBuffer,a}_renderScene(e,t,n=!0){if(this._isDeviceLost===!0)return;this.shadowMap.type===2&&(C(`WebGPURenderer: PCFSoftShadowMap has been removed. Using PCFShadowMap instead.`),this.shadowMap.type=1);let r=n?this._getFrameBufferTarget():null,i=this._nodes.nodeFrame,a=i.renderId,o=this._currentRenderContext,s=this._currentRenderObjectFunction,c=this._handleObjectFunction;this.lighting.beginRender(e),this._callDepth++;let l=e.isScene===!0?e:pD,u=this._renderTarget||this._outputRenderTarget,d=this.xr.isPresenting===!0&&this.isOutputTarget,f=this._activeCubeFace,p=this._activeMipmapLevel,m;if(r===null?m=u:(m=r,this.setRenderTarget(m)),m!==null&&m.depthBuffer===!0){let e=this._textures.get(m);e.depthInitialized!==!0&&((this.autoClear===!1||this.autoClear===!0&&this.autoClearDepth===!1)&&this.clearDepth(),e.depthInitialized=!0)}let h=this._renderContexts.get(m,this._mrt,this._callDepth);this._currentRenderContext=h,this._currentRenderObjectFunction=this._renderObjectFunction||this.renderObject,this._handleObjectFunction=this._renderObjectDirect,this.info.calls++,this.info.render.calls++,this.info.render.frameCalls++,i.renderId=this.info.calls,this.backend.updateTimeStampUID(h),this.inspector.beginRender(this.backend.getTimestampUID(h),e,t,m),e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t=this._updateCamera(t,d);let g=this._canvasTarget,_=g._viewport,v=g._scissor,y=g._pixelRatio;m!==null&&(_=m.viewport,v=m.scissor,y=1),this.getDrawingBufferSize(mD),hD.set(0,0,mD.width,mD.height);let b=_.minDepth===void 0?0:_.minDepth,ee=_.maxDepth===void 0?1:_.maxDepth;h.viewportValue.copy(_).multiplyScalar(y).floor(),h.viewportValue.width>>=p,h.viewportValue.height>>=p,h.viewportValue.minDepth=b,h.viewportValue.maxDepth=ee,h.viewport=h.viewportValue.equals(hD)===!1,h.scissorValue.copy(v).multiplyScalar(y).floor(),h.scissor=g._scissorTest&&h.scissorValue.equals(hD)===!1,h.scissorValue.width>>=p,h.scissorValue.height>>=p,h.clippingContext||=new KE,h.clippingContext.updateGlobal(l,t),l.onBeforeRender(this,e,t,m),vD.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),t.isArrayCamera?_D.setFromArrayCamera(t):gD.setFromProjectionMatrix(vD,t.coordinateSystem,t.reversedDepth),this._renderLists.update(i.frameId);let te=this._renderLists.get(e,t,this.lighting);if(te.begin(),this._projectObject(e,t,0,te,h.clippingContext),te.finish(),this.sortObjects===!0&&te.sort(this._opaqueSort,this._transparentSort),m!==null){this._textures.updateRenderTarget(m,p);let e=this._textures.get(m);h.textures=e.textures,h.depthTexture=e.depthTexture,h.width=e.width,h.height=e.height,h.renderTarget=m,h.depth=m.depthBuffer,h.stencil=m.stencilBuffer}else h.textures=null,h.depthTexture=null,h.width=mD.width,h.height=mD.height,h.depth=this.depth,h.stencil=this.stencil;h.width>>=p,h.height>>=p,h.activeCubeFace=f,h.activeMipmapLevel=p,h.occlusionQueryCount=te.occlusionQueryCount,h.fullscreenPass=e.isQuadMesh===!0,h.scissorValue.max(yD.set(0,0,0,0)),h.scissorValue.x+h.scissorValue.width>h.width&&(h.scissorValue.width=Math.max(h.width-h.scissorValue.x,0)),h.scissorValue.y+h.scissorValue.height>h.height&&(h.scissorValue.height=Math.max(h.height-h.scissorValue.y,0)),this._background.update(l,te,h),h.camera=t,this.backend.beginRender(h);let{bundles:ne,lightsNode:re,transparentDoublePass:ie,transparent:ae,opaque:oe}=te;return ne.length>0&&this._renderBundles(ne,l,re),this.opaque===!0&&oe.length>0&&this._renderObjects(oe,t,l,re),this.transparent===!0&&ae.length>0&&this._renderTransparents(ae,ie,t,l,re),this.backend.finishRender(h),i.renderId=a,this._currentRenderContext=o,this._currentRenderObjectFunction=s,this._handleObjectFunction=c,this.lighting.finishRender(e),this._callDepth--,r!==null&&(this.setRenderTarget(u,f,p),this._renderOutput(m)),l.onAfterRender(this,e,t,m),this.inspector.finishRender(this.backend.getTimestampUID(h)),h}_setXRLayerSize(e,t){this._canvasTarget._width=e,this._canvasTarget._height=t,this.setViewport(0,0,e,t)}_renderOutput(e){let t=this._nodes.getOutputCacheKey(),n=this._quadCache.get(e.texture),r;if(n===void 0){r=new eb(new em),r.name=`Output Color Transform`,r.material.name=`outputColorTransform`,r.material.fragmentNode=this._nodes.getOutputNode(e.texture),n={quad:r,cacheKey:t},this._quadCache.set(e.texture,n);let i=()=>{r.material.dispose(),this._quadCache.delete(e.texture),e.texture.removeEventListener(`dispose`,i)};e.texture.addEventListener(`dispose`,i)}else r=n.quad,n.cacheKey!==t&&(r.material.fragmentNode=this._nodes.getOutputNode(e.texture),r.material.needsUpdate=!0,n.cacheKey=t);let i=this.autoClear,a=this.xr.enabled;this.autoClear=!1,this.xr.enabled=!1,this._renderOutputLayers(r,e),this.autoClear=i,this.xr.enabled=a}getMaxAnisotropy(){return this.backend.capabilities.getMaxAnisotropy()}getActiveCubeFace(){return this._activeCubeFace}getActiveMipmapLevel(){return this._activeMipmapLevel}async setAnimationLoop(e){this._initialized===!1&&await this.init(),this._animation.setAnimationLoop(e)}getAnimationLoop(){return this._animation.getAnimationLoop()}async getArrayBufferAsync(e,t=null,n=0,r=-1){if(t!==null&&t.isReadbackBuffer&&this.info.memoryMap.has(t)===!1){this.info.createReadbackBuffer(t);let e=()=>{t.removeEventListener(`dispose`,e),this.info.destroyReadbackBuffer(t)};t.addEventListener(`dispose`,e)}if(n%4!=0||r>0&&r%4!=0)throw Error(`THREE.Renderer: "getArrayBufferAsync()" offset and count must be a multiple of 4.`);return await this.backend.getArrayBufferAsync(e,t,n,r)}getContext(){return this.backend.getContext()}getPixelRatio(){return this._canvasTarget.getPixelRatio()}getDrawingBufferSize(e){return this._canvasTarget.getDrawingBufferSize(e)}getSize(e){return this._canvasTarget.getSize(e)}setPixelRatio(e=1){this._canvasTarget.setPixelRatio(e)}setDrawingBufferSize(e,t,n){this.xr&&this.xr.isPresenting||this._canvasTarget.setDrawingBufferSize(e,t,n)}setSize(e,t,n=!0){this.xr&&this.xr.isPresenting||this._canvasTarget.setSize(e,t,n)}setOpaqueSort(e){this._opaqueSort=e}setTransparentSort(e){this._transparentSort=e}getScissor(e){return this._canvasTarget.getScissor(e)}setScissor(e,t,n,r){this._canvasTarget.setScissor(e,t,n,r)}getScissorTest(){return this._canvasTarget.getScissorTest()}setScissorTest(e){this._canvasTarget.setScissorTest(e),this.backend.setScissorTest(e)}resetState(){if(this._initialized===!1)throw Error(`THREE.Renderer: .resetState() called before the backend is initialized. Use "await renderer.init();" before using this method.`);this.backend.resetState()}getViewport(e){return this._canvasTarget.getViewport(e)}setViewport(e,t,n,r,i=0,a=1){this._canvasTarget.setViewport(e,t,n,r,i,a)}getClearColor(e){return e.copy(this._clearColor)}setClearColor(e,t=1){this._clearColor.set(e),this._clearColor.a=t}getClearAlpha(){return this._clearColor.a}setClearAlpha(e){this._clearColor.a=e}getClearDepth(){return this.reversedDepthBuffer===!0?1-this._clearDepth:this._clearDepth}setClearDepth(e){this._clearDepth=e}getClearStencil(){return this._clearStencil}setClearStencil(e){this._clearStencil=e}isOccluded(e){let t=this._currentRenderContext;return t&&this.backend.isOccluded(t,e)}clear(e=!0,t=!0,n=!0){if(this._initialized===!1)throw Error(`THREE.Renderer: .clear() called before the backend is initialized. Use "await renderer.init();" before using this method.`);let r=this._renderTarget||this._getFrameBufferTarget(),i=null;if(r!==null){this._textures.updateRenderTarget(r);let e=this._textures.get(r);i=this._renderContexts.get(r,null,-1),i.textures=e.textures,i.depthTexture=e.depthTexture,i.width=e.width,i.height=e.height,i.renderTarget=r,i.depth=r.depthBuffer,i.stencil=r.stencilBuffer;let t=this.backend.getClearColor();i.clearColorValue.r=t.r,i.clearColorValue.g=t.g,i.clearColorValue.b=t.b,i.clearColorValue.a=t.a,i.clearDepthValue=this.getClearDepth(),i.clearStencilValue=this.getClearStencil(),i.activeCubeFace=this.getActiveCubeFace(),i.activeMipmapLevel=this.getActiveMipmapLevel(),r.depthBuffer===!0&&(e.depthInitialized=!0)}this.backend.clear(e,t,n,i),r!==null&&this._renderTarget===null&&this._renderOutput(r)}clearColor(){this.clear(!0,!1,!1)}clearDepth(){this.clear(!1,!0,!1)}clearStencil(){this.clear(!1,!1,!0)}async clearAsync(e=!0,t=!0,n=!0){Wt(`Renderer: "clearAsync()" has been deprecated. Use "clear()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.clear(e,t,n)}async clearColorAsync(){Wt(`Renderer: "clearColorAsync()" has been deprecated. Use "clearColor()" and "await renderer.init();" when creating the renderer.`),this.clear(!0,!1,!1)}async clearDepthAsync(){Wt(`Renderer: "clearDepthAsync()" has been deprecated. Use "clearDepth()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!0,!1)}async clearStencilAsync(){Wt(`Renderer: "clearStencilAsync()" has been deprecated. Use "clearStencil()" and "await renderer.init();" when creating the renderer.`),this.clear(!1,!1,!0)}get needsFrameBufferTarget(){let e=this.currentToneMapping!==0,t=this.currentColorSpace!==Zt.workingColorSpace;return e||t}get samples(){return this._samples}get currentSamples(){let e=this._samples;return this._renderTarget===null?(this.needsFrameBufferTarget||this._currentRenderContext?.fullscreenPass===!0)&&(e=0):e=this._renderTarget.samples,e}get currentToneMapping(){return this.isOutputTarget?this.toneMapping:0}get currentColorSpace(){return this.isOutputTarget?this.outputColorSpace:Zt.workingColorSpace}get isOutputTarget(){return this._renderTarget===this._outputRenderTarget||this._renderTarget===null}async dispose(){if(this._initialized===!0){this.info.dispose(),this._inspector.dispose(),this._animation.dispose(),this._objects.dispose(),this._geometries.dispose(),this._pipelines.dispose(),this._nodes.dispose(),this._bindings.dispose(),this._renderLists.dispose(),this._renderContexts.dispose(),this._textures.dispose();for(let e of this._frameBufferTargets.keys())e.dispose();await this.backend.dispose()}this.setRenderTarget(null),this.setAnimationLoop(null)}setRenderTarget(e,t=0,n=0){this._renderTarget=e,this._activeCubeFace=t,this._activeMipmapLevel=n}getRenderTarget(){return this._renderTarget}setOutputRenderTarget(e){this._outputRenderTarget=e}getOutputRenderTarget(){return this._outputRenderTarget}setCanvasTarget(e){this._canvasTarget.removeEventListener(`resize`,this._onCanvasTargetResize),this._canvasTarget=e,this._canvasTarget.addEventListener(`resize`,this._onCanvasTargetResize)}getCanvasTarget(){return this._canvasTarget}_resetXRState(){this.backend.setXRTarget(null),this.setOutputRenderTarget(null),this.setRenderTarget(null);for(let e of this._frameBufferTargets.keys())e.dispose()}setRenderObjectFunction(e){this._renderObjectFunction=e}getRenderObjectFunction(){return this._renderObjectFunction}compute(e,t=null){if(this._isDeviceLost===!0)return;if(this._initialized===!1)return C(`Renderer: ".compute()" called before the backend is initialized. Try using ".computeAsync()" instead.`),this.computeAsync(e,t);let n=this._nodes.nodeFrame,r=n.renderId;this.info.calls++,this.info.compute.calls++,this.info.compute.frameCalls++,n.renderId=this.info.calls,this.backend.updateTimeStampUID(e),this.inspector.beginCompute(this.backend.getTimestampUID(e),e);let i=this.backend,a=this._pipelines,o=this._bindings,s=this._nodes,c=Array.isArray(e)?e:[e];if(c[0]===void 0||c[0].isComputeNode!==!0)throw Error(`THREE.Renderer: .compute() expects a ComputeNode.`);i.beginCompute(e);for(let n of c){if(a.has(n)===!1){let e=()=>{n.removeEventListener(`dispose`,e),a.delete(n),o.deleteForCompute(n),s.delete(n)};n.addEventListener(`dispose`,e);let t=n.onInitFunction;t!==null&&t.call(n,{renderer:this})}s.updateBeforeForCompute(n),s.updateForCompute(n),o.updateForCompute(n);let r=o.getForCompute(n),c=a.getForCompute(n,r);i.compute(e,n,r,c,t),s.updateAfterForCompute(n)}i.finishCompute(e),n.renderId=r,this.inspector.finishCompute(this.backend.getTimestampUID(e))}async computeAsync(e,t=null){this._initialized===!1&&await this.init(),this.compute(e,t)}async hasFeatureAsync(e){return Wt(`Renderer: "hasFeatureAsync()" has been deprecated. Use "hasFeature()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.hasFeature(e)}async resolveTimestampsAsync(e=`render`){return this._initialized===!1&&await this.init(),this.backend.resolveTimestampsAsync(e)}hasFeature(e){if(this._initialized===!1)throw Error(`THREE.Renderer: .hasFeature() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this.backend.hasFeature(e)}hasInitialized(){return this._initialized}async initTextureAsync(e){Wt(`Renderer: "initTextureAsync()" has been deprecated. Use "initTexture()" and "await renderer.init();" when creating the renderer.`),await this.init(),this.initTexture(e)}initTexture(e){if(this._initialized===!1)throw Error(`THREE.Renderer: .initTexture() called before the backend is initialized. Use "await renderer.init();" before using this method.`);this._textures.updateTexture(e)}initRenderTarget(e){if(this._initialized===!1)throw Error(`THREE.Renderer: .initRenderTarget() called before the backend is initialized. Use "await renderer.init();" before using this method.`);this._textures.updateRenderTarget(e);let t=this._textures.get(e),n=this._renderContexts.get(e);n.textures=t.textures,n.depthTexture=t.depthTexture,n.width=t.width,n.height=t.height,n.renderTarget=e,n.depth=e.depthBuffer,n.stencil=e.stencilBuffer,this.backend.initRenderTarget(n)}copyFramebufferToTexture(e,t=null){if(t!==null){if(t.isVector2)t=yD.set(t.x,t.y,e.image.width,e.image.height).floor();else if(t.isVector4)t=yD.copy(t).floor();else{S(`Renderer.copyFramebufferToTexture: Invalid rectangle.`);return}}else t=yD.set(0,0,e.image.width,e.image.height);let n=this._currentRenderContext,r;n===null?(r=this._renderTarget||this._getFrameBufferTarget(),r!==null&&(this._textures.updateRenderTarget(r),n=this._textures.get(r))):r=n.renderTarget,this._textures.updateTexture(e,{renderTarget:r}),this.backend.copyFramebufferToTexture(e,n,t),this._inspector.copyFramebufferToTexture(e)}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this._textures.updateTexture(e),this._textures.updateTexture(t),this.backend.copyTextureToTexture(e,t,n,r,i,a),this._inspector.copyTextureToTexture(e,t)}async readRenderTargetPixelsAsync(e,t,n,r,i,a=0,o=0){return this.backend.copyTextureToBuffer(e.textures[a],t,n,r,i,o)}_projectObject(e,t,n,r,i){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder,e.isClippingGroup&&e.enabled&&(i=i.getGroupContext(e));else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLight)r.pushLight(e);else if(e.isSprite){let a=t.isArrayCamera?_D:gD;if(!e.frustumCulled||e.intersectsFrustum(a)){this.sortObjects===!0&&yD.setFromMatrixPosition(e.matrixWorld).applyMatrix4(vD);let{geometry:t,material:a}=e;a.visible&&r.push(e,t,a,n,yD.z,null,i)}}else if(e.isLineLoop)S(`Renderer: Objects of type THREE.LineLoop are not supported. Please use THREE.Line or THREE.LineSegments.`);else if(e.isMesh||e.isLine||e.isPoints){let a=t.isArrayCamera?_D:gD;if(!e.frustumCulled||e.intersectsFrustum(a)){let{geometry:t,material:a}=e;if(this.sortObjects===!0&&(t.boundingSphere===null&&t.computeBoundingSphere(),yD.copy(t.boundingSphere.center).applyMatrix4(e.matrixWorld).applyMatrix4(vD)),Array.isArray(a)){let o=t.groups;for(let s=0,c=o.length;s<c;s++){let c=o[s],l=a[c.materialIndex];l&&l.visible&&r.push(e,t,l,n,yD.z,c,i)}}else a.visible&&r.push(e,t,a,n,yD.z,null,i)}}}if(e.isBundleGroup===!0&&this.backend.beginBundle!==void 0){let a=r;r=this._renderLists.get(e,t,this.lighting);let o=this._bundles.get(e,t,this._currentRenderContext),s=this.backend.get(o);if(this._bundleNeedsUpdate(e,s)){r.begin(),s.renderObjects===void 0?s.renderObjects=[]:s.renderObjects.length=0;let a=e.children;for(let e=0,o=a.length;e<o;e++)this._projectObject(a[e],t,n,r,i);r.finish()}a.pushBundle({bundleGroup:e,camera:t,renderList:r});return}let a=e.children;for(let e=0,o=a.length;e<o;e++)this._projectObject(a[e],t,n,r,i)}_renderBundles(e,t,n){for(let r of e)this._renderBundle(r,t,n)}_renderTransparents(e,t,n,r,i){if(t.length>0){for(let{material:e}of t)e.side=1;this._renderObjects(t,n,r,i,`backSide`);for(let{material:e}of t)e.side=0;this._renderObjects(e,n,r,i);for(let{material:e}of t)e.side=2}else this._renderObjects(e,n,r,i)}_renderObjects(e,t,n,r,i=null){for(let a=0,o=e.length;a<o;a++){let{object:o,geometry:s,material:c,group:l,clippingContext:u}=e[a];this._currentRenderObjectFunction(o,n,t,s,c,l,r,u,i)}}_getShadowNodes(e){let t=e.version,n=this._cacheShadowNodes.get(e);if(n===void 0||n.version!==t){let r=e.map&&e.map.isTexture,i=e.colorNode&&e.colorNode.isNode,a=e.castShadowNode&&e.castShadowNode.isNode,o=e.maskShadowNode&&e.maskShadowNode.isNode||e.maskNode&&e.maskNode.isNode,s=null,c=null,l=null;if(r||i||a||o){let t,n;if(a?(t=e.castShadowNode.rgb,n=e.castShadowNode.a,this.shadowMap.transmitted!==!0&&Wt("Renderer: `shadowMap.transmitted` needs to be set to `true` when using `material.castShadowNode`.")):(t=L(0),n=N(1)),r&&(n=n.mul(Ku(`map`,`texture`,e).a)),i&&(n=n.mul(e.colorNode.a)),c=R(t,n),o){let t=e.maskShadowNode||e.maskNode;c=j(([e])=>(t.not().discard(),e))(c)}}e.depthNode&&e.depthNode.isNode&&(l=e.depthNode),e.castShadowPositionNode&&e.castShadowPositionNode.isNode?s=e.castShadowPositionNode:e.positionNode&&e.positionNode.isNode&&(s=e.positionNode),n={version:t,colorNode:c,depthNode:l,positionNode:s},this._cacheShadowNodes.set(e,n)}return n}_updateCamera(e,t){let n=this.xr;if(n.isPresenting===!1||t===!1){let t=!1;if(this.reversedDepthBuffer===!0&&e.reversedDepth!==!0){if(e._reversedDepth=!0,e.isArrayCamera)for(let t of e.cameras)t._reversedDepth=!0;t=!0}let n=this.coordinateSystem;if(e.coordinateSystem!==n){if(e.coordinateSystem=n,e.isArrayCamera)for(let t of e.cameras)t.coordinateSystem=n;t=!0}if(t===!0&&(e.updateProjectionMatrix(),e.isArrayCamera))for(let t of e.cameras)t.updateProjectionMatrix()}return e.parent===null&&e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t===!0&&n.enabled===!0&&n.isPresenting===!0&&(n.cameraAutoUpdate===!0&&n.updateCamera(e),e=n.getCamera()),e}renderObject(e,t,n,r,i,a,o,s=null,c=null){let l=!1,u,d,f,p,m,h,g,_=this._currentSourceMaterial;if(e.onBeforeRender(this,t,n,r,i,a),i.allowOverride===!0&&t.overrideMaterial!==null){this._currentSourceMaterial=i;let e=t.overrideMaterial;if(l=!0,u=e.isNodeMaterial?e.colorNode:null,d=e.isNodeMaterial?e.depthNode:null,f=e.isNodeMaterial?e.positionNode:null,p=t.overrideMaterial.side,m=e.displacementMap,h=e.displacementScale,g=e.displacementBias,i.positionNode&&i.positionNode.isNode&&(e.positionNode=i.positionNode),e.alphaTest=i.alphaTest,e.alphaMap=i.alphaMap,e.displacementMap=i.displacementMap,e.displacementScale=i.displacementScale,e.displacementBias=i.displacementBias,e.transparent=i.transparent||i.transmission>0||i.transmissionNode&&i.transmissionNode.isNode||i.backdropNode&&i.backdropNode.isNode,e.isShadowPassMaterial){let{colorNode:t,depthNode:n,positionNode:r}=this._getShadowNodes(i);e.side=this.shadowMap.type===3?i.shadowSide===null?i.side:i.shadowSide:i.shadowSide===null?bD[i.side]:i.shadowSide,t!==null&&(e.colorNode=t),n!==null&&(e.depthNode=n),r!==null&&(e.positionNode=r)}i=e}i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,this._handleObjectFunction(e,i,t,n,o,a,s,`backSide`),i.side=0,this._handleObjectFunction(e,i,t,n,o,a,s,c),i.side=2):this._handleObjectFunction(e,i,t,n,o,a,s,c),l&&(t.overrideMaterial.colorNode=u,t.overrideMaterial.depthNode=d,t.overrideMaterial.positionNode=f,t.overrideMaterial.side=p,t.overrideMaterial.displacementMap=m,t.overrideMaterial.displacementScale=h,t.overrideMaterial.displacementBias=g),this._currentSourceMaterial=_,e.onAfterRender(this,t,n,r,i,a)}hasCompatibility(e){if(this._initialized===!1)throw Error(`THREE.Renderer: .hasCompatibility() called before the backend is initialized. Use "await renderer.init();" before using this method.`);return this.backend.hasCompatibility(e)}_renderObjectDirect(e,t,n,r,i,a,o,s){let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._currentRenderBundle!==null&&(this.backend.get(this._currentRenderBundle).renderObjects.push(c),c.bundle=this._currentRenderBundle.bundleGroup);let l=this._nodes.needsRefresh(c);l===gn.FULL?(this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c)):l===gn.SHARED&&(this._nodes.updateBefore(c),this._nodes.updateForRender(c),this._bindings.updateSharedForRender(c)),this._pipelines.updateForRender(c),this._pipelines.isReady(c)&&(this.backend.draw(c,this.info),l!==gn.NONE&&this._nodes.updateAfter(c))}_createObjectPipeline(e,t,n,r,i,a,o,s){if(this._compilationPromises!==null){this._compilationPromises.push({object:e,material:t,scene:n,camera:r,lightsNode:i,group:a,clippingContext:o,passId:s,renderContext:this._currentRenderContext});return}let c=this._objects.get(e,t,n,r,i,this._currentRenderContext,o,s);c.drawRange=e.geometry.drawRange,c.group=a,this._nodes.updateBefore(c),this._geometries.updateForRender(c),this._nodes.updateForRender(c),this._bindings.updateForRender(c),this._pipelines.getForRender(c,this._compilationPromises),this._nodes.updateAfter(c)}_onCanvasTargetResize(){this._initialized&&this.backend.updateSize()}get compile(){return this.compileAsync}},SD=class{constructor(e=``){this.name=e,this.visibility=0}setVisibility(e){this.visibility|=e}getVisibility(){return this.visibility}clone(){return Object.assign(new this.constructor,this)}};function CD(e){return e+(D_-e%D_)%D_}var wD=class extends SD{constructor(e,t=null){super(e),this.isBuffer=!0,this.bytesPerElement=Float32Array.BYTES_PER_ELEMENT,this._buffer=t,this._updateRanges=[]}get updateRanges(){return this._updateRanges}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}get byteLength(){return CD(this._buffer.byteLength)}get buffer(){return this._buffer}update(){return!0}release(){this._buffer=null}},TD=class extends wD{constructor(e,t=null){super(e,t),this.isUniformBuffer=!0}},ED=0,DD=class extends TD{constructor(e,t){let n=e&&e.name?e.name:ED++;super(`UniformBuffer_`+n,e?e.value:null),this.nodeUniform=e,this.groupNode=t,this.isNodeUniformBuffer=!0}set updateRanges(e){this.nodeUniform.updateRanges=e}get updateRanges(){return this.nodeUniform.updateRanges}addUpdateRange(e,t){this.nodeUniform.addUpdateRange(e,t)}clearUpdateRanges(){this.nodeUniform.clearUpdateRanges()}get byteLength(){return CD(this.buffer.byteLength)}get buffer(){return this.nodeUniform.value}},OD=class extends TD{constructor(e){super(e),this.isUniformsGroup=!0,this._values=null,this.uniforms=[],this._updateRangeCache=new Map,this._addedIndices=new Set}addUniformUpdateRange(e){let t=e.index;if(this._addedIndices.has(t))return;let n=this._updateRangeCache.get(t);n===void 0&&(n={start:0,count:0},this._updateRangeCache.set(t,n)),n.start=e.offset,n.count=e.itemSize,this._addedIndices.add(t),this.updateRanges.push(n)}clearUpdateRanges(){this._addedIndices.clear(),super.clearUpdateRanges()}addUniform(e){return this.uniforms.push(e),this}removeUniform(e){let t=this.uniforms.indexOf(e);return t!==-1&&this.uniforms.splice(t,1),this}get values(){return this._values===null&&(this._values=Array.from(this.buffer)),this._values}get buffer(){let e=this._buffer;if(e===null){let t=this.byteLength;e=new Float32Array(new ArrayBuffer(t)),this._buffer=e}return e}get byteLength(){let e=this.bytesPerElement,t=0;for(let n=0,r=this.uniforms.length;n<r;n++){let r=this.uniforms[n],i=r.boundary,a=r.itemSize*e,o=t%D_,s=o%i,c=o+s;t+=s,c!==0&&D_-c<a&&(t+=D_-c),r.offset=t/e,r.index=n,t+=a}return Math.ceil(t/D_)*D_}update(){let e=!1;for(let t of this.uniforms)this.updateByType(t)===!0&&(e=!0);return e}release(){super.release(),this._values=null}updateByType(e){if(e.isNumberUniform)return this.updateNumber(e);if(e.isVector2Uniform)return this.updateVector2(e);if(e.isVector3Uniform)return this.updateVector3(e);if(e.isVector4Uniform)return this.updateVector4(e);if(e.isColorUniform)return this.updateColor(e);if(e.isMatrix3Uniform)return this.updateMatrix3(e);if(e.isMatrix4Uniform)return this.updateMatrix4(e);S(`WebGPUUniformsGroup: Unsupported uniform type.`,e)}updateNumber(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i]!==r){let o=this._getBufferForType(a);o[i]=n[i]=r,t=!0,this.addUniformUpdateRange(e)}return t}updateVector2(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,t=!0,this.addUniformUpdateRange(e)}return t}updateVector3(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,t=!0,this.addUniformUpdateRange(e)}return t}updateVector4(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset,a=e.getType();if(n[i+0]!==r.x||n[i+1]!==r.y||n[i+2]!==r.z||n[i+3]!==r.w){let o=this._getBufferForType(a);o[i+0]=n[i+0]=r.x,o[i+1]=n[i+1]=r.y,o[i+2]=n[i+2]=r.z,o[i+3]=n[i+3]=r.w,t=!0,this.addUniformUpdateRange(e)}return t}updateColor(e){let t=!1,n=this.values,r=e.getValue(),i=e.offset;if(n[i+0]!==r.r||n[i+1]!==r.g||n[i+2]!==r.b){let a=this.buffer;a[i+0]=n[i+0]=r.r,a[i+1]=n[i+1]=r.g,a[i+2]=n[i+2]=r.b,t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix3(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;if(n[i+0]!==r[0]||n[i+1]!==r[1]||n[i+2]!==r[2]||n[i+4]!==r[3]||n[i+5]!==r[4]||n[i+6]!==r[5]||n[i+8]!==r[6]||n[i+9]!==r[7]||n[i+10]!==r[8]){let a=this.buffer;a[i+0]=n[i+0]=r[0],a[i+1]=n[i+1]=r[1],a[i+2]=n[i+2]=r[2],a[i+4]=n[i+4]=r[3],a[i+5]=n[i+5]=r[4],a[i+6]=n[i+6]=r[5],a[i+8]=n[i+8]=r[6],a[i+9]=n[i+9]=r[7],a[i+10]=n[i+10]=r[8],t=!0,this.addUniformUpdateRange(e)}return t}updateMatrix4(e){let t=!1,n=this.values,r=e.getValue().elements,i=e.offset;return AD(n,r,i)===!1&&(this.buffer.set(r,i),kD(n,r,i),t=!0,this.addUniformUpdateRange(e)),t}_getBufferForType(e){return e===`int`||e===`ivec2`||e===`ivec3`||e===`ivec4`?new Int32Array(this.buffer.buffer):e===`uint`||e===`uvec2`||e===`uvec3`||e===`uvec4`?new Uint32Array(this.buffer.buffer):this.buffer}};function kD(e,t,n){for(let r=0,i=t.length;r<i;r++)e[n+r]=t[r]}function AD(e,t,n){for(let r=0,i=t.length;r<i;r++)if(e[n+r]!==t[r])return!1;return!0}var jD=0,MD=class extends OD{constructor(e,t){super(e),this.id=jD++,this.groupNode=t,this.isNodeUniformsGroup=!0}},ND=class extends SD{constructor(e,t){super(e),this._texture=t,this.version=-1,this.generation=null,this.samplerKey=``,this.isSampler=!0}set texture(e){this._texture!==e&&(this._texture=e,this.reset())}get texture(){return this._texture}update(){let{texture:e,version:t}=this;return t!==e.version&&(this.version=e.version,!0)}reset(){this.generation=null,this.version=-1}release(){this._texture=null}},PD=0,FD=class extends ND{constructor(e,t){super(e,t),this.id=PD++,this.store=!1,this.mipLevel=0,this.isSampledTexture=!0}},ID=class extends FD{constructor(e,t,n,r=null){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n,this.access=r}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},LD=class extends ID{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledCubeTexture=!0}},RD=class extends ID{constructor(e,t,n,r=null){super(e,t,n,r),this.isSampledTexture3D=!0}},zD={textureGather:new Ax(`
30
+ vec4 tsl_textureGather( const int comp, sampler2D map, vec2 coord, ivec2 offset, bool flipY ) {
31
+ if ( flipY ) offset.y = - offset.y;
32
+ vec2 size = vec2( textureSize( map, 0 ) );
33
+ vec2 st = floor( coord * size + vec2( offset ) - 0.5 );
34
+ vec4 ij = vec4( st + 0.5, st + 1.5 ) / size.xyxy;
35
+ vec4 ret = vec4(
36
+ textureLod( map, ij.xw, 0.0 )[ comp ],
37
+ textureLod( map, ij.zw, 0.0 )[ comp ],
38
+ textureLod( map, ij.zy, 0.0 )[ comp ],
39
+ textureLod( map, ij.xy, 0.0 )[ comp ]
40
+ );
41
+ return flipY ? ret.wzyx : ret;
42
+ }
43
+ `),textureGatherArray:new Ax(`
44
+ vec4 tsl_textureGather_array( const int comp, sampler2DArray map, vec3 coord, ivec2 offset, bool flipY ) {
45
+ if ( flipY ) offset.y = - offset.y;
46
+ vec2 size = vec2( textureSize( map, 0 ).xy );
47
+ vec2 st = floor( coord.xy * size + vec2( offset ) - 0.5 );
48
+ vec4 ij = vec4( st + 0.5, st + 1.5 ) / size.xyxy;
49
+ vec4 ret = vec4(
50
+ textureLod( map, vec3( ij.xw, coord.z ), 0.0 )[ comp ],
51
+ textureLod( map, vec3( ij.zw, coord.z ), 0.0 )[ comp ],
52
+ textureLod( map, vec3( ij.zy, coord.z ), 0.0 )[ comp ],
53
+ textureLod( map, vec3( ij.xy, coord.z ), 0.0 )[ comp ]
54
+ );
55
+ return flipY ? ret.wzyx : ret;
56
+ }
57
+ `),textureGatherCompare:new Ax(`
58
+ vec4 tsl_textureGatherCompare( sampler2DShadow map, vec2 coord, ivec2 offset, float ref, bool flipY ) {
59
+ if ( flipY ) offset.y = - offset.y;
60
+ vec2 size = vec2( textureSize( map, 0 ) );
61
+ vec2 st = floor( coord * size + vec2( offset ) - 0.5 );
62
+ vec4 ij = vec4( st + 0.5, st + 1.5 ) / size.xyxy;
63
+ vec4 ret = vec4(
64
+ textureLod( map, vec3( ij.xw, ref ), 0.0 ),
65
+ textureLod( map, vec3( ij.zw, ref ), 0.0 ),
66
+ textureLod( map, vec3( ij.zy, ref ), 0.0 ),
67
+ textureLod( map, vec3( ij.xy, ref ), 0.0 )
68
+ );
69
+ return flipY ? ret.wzyx : ret;
70
+ }
71
+ `),textureGatherCompareArray:new Ax(`
72
+ vec4 tsl_textureGatherCompare_array( sampler2DArrayShadow map, vec3 coord, ivec2 offset, float ref, bool flipY ) {
73
+ if ( flipY ) offset.y = - offset.y;
74
+ vec2 size = vec2( textureSize( map, 0 ).xy );
75
+ vec2 st = floor( coord.xy * size + vec2( offset ) - 0.5 );
76
+ vec4 ij = vec4( st + 0.5, st + 1.5 ) / size.xyxy;
77
+ vec4 ret = vec4(
78
+ texture( map, vec4( ij.xw, coord.z, ref ) ),
79
+ texture( map, vec4( ij.zw, coord.z, ref ) ),
80
+ texture( map, vec4( ij.zy, coord.z, ref ) ),
81
+ texture( map, vec4( ij.xy, coord.z, ref ) )
82
+ );
83
+ return flipY ? ret.wzyx : ret;
84
+ }
85
+ `),floatpack_snorm_4x8:new Ax(`uint tsl_packSnorm4x8( vec4 v ) { uvec4 u = uvec4( ivec4( round( clamp( v, -1.0, 1.0 ) * 127.0 ) ) & 0xff ); return u.x | u.y << 8 | u.z << 16 | u.w << 24; }`),floatpack_unorm_4x8:new Ax(`uint tsl_packUnorm4x8( vec4 v ) { uvec4 u = uvec4( round( clamp( v, 0.0, 1.0 ) * 255.0 ) ); return u.x | u.y << 8 | u.z << 16 | u.w << 24; }`),floatunpack_snorm_4x8:new Ax(`vec4 tsl_unpackSnorm4x8( uint x ) { return max( vec4( ivec4( x << 24, x << 16, x << 8, x ) >> 24 ) / 127.0, -1.0 ); }`),floatunpack_unorm_4x8:new Ax(`vec4 tsl_unpackUnorm4x8( uint x ) { return vec4( uvec4( x, x >> 8, x >> 16, x >> 24 ) & 0xffu ) / 255.0; }`)},BD={equals:`equal`,bitcast_float_int:`floatBitsToInt`,bitcast_int_float:`intBitsToFloat`,bitcast_uint_float:`uintBitsToFloat`,bitcast_float_uint:`floatBitsToUint`,floatpack_snorm_2x16:`packSnorm2x16`,floatpack_unorm_2x16:`packUnorm2x16`,floatpack_float16_2x16:`packHalf2x16`,floatpack_snorm_4x8:`tsl_packSnorm4x8`,floatpack_unorm_4x8:`tsl_packUnorm4x8`,floatunpack_snorm_2x16:`unpackSnorm2x16`,floatunpack_unorm_2x16:`unpackUnorm2x16`,floatunpack_float16_2x16:`unpackHalf2x16`,floatunpack_snorm_4x8:`tsl_unpackSnorm4x8`,floatunpack_unorm_4x8:`tsl_unpackUnorm4x8`},VD={low:`lowp`,medium:`mediump`,high:`highp`},HD={swizzleAssign:!0,storageBuffer:!1},UD={perspective:`smooth`,linear:`noperspective`},WD={centroid:`centroid`},GD=`
86
+ precision highp float;
87
+ precision highp int;
88
+ precision highp sampler2D;
89
+ precision highp sampler3D;
90
+ precision highp samplerCube;
91
+ precision highp sampler2DArray;
92
+
93
+ precision highp usampler2D;
94
+ precision highp usampler3D;
95
+ precision highp usamplerCube;
96
+ precision highp usampler2DArray;
97
+
98
+ precision highp isampler2D;
99
+ precision highp isampler3D;
100
+ precision highp isamplerCube;
101
+ precision highp isampler2DArray;
102
+
103
+ precision highp sampler2DShadow;
104
+ precision highp sampler2DArrayShadow;
105
+ precision highp samplerCubeShadow;
106
+ `,KD=new Set(`const.uniform.buffer.shared.attribute.varying.coherent.volatile.restrict.readonly.writeonly.atomic_uint.layout.centroid.flat.smooth.noperspective.patch.sample.invariant.precise.break.continue.do.for.while.switch.case.default.if.else.subroutine.in.out.inout.int.void.bool.true.false.float.double.discard.return.vec2.vec3.vec4.ivec2.ivec3.ivec4.bvec2.bvec3.bvec4.uint.uvec2.uvec3.uvec4.dvec2.dvec3.dvec4.mat2.mat3.mat4.mat2x2.mat2x3.mat2x4.mat3x2.mat3x3.mat3x4.mat4x2.mat4x3.mat4x4.dmat2.dmat3.dmat4.dmat2x2.dmat2x3.dmat2x4.dmat3x2.dmat3x3.dmat3x4.dmat4x2.dmat4x3.dmat4x4.lowp.mediump.highp.precision.sampler2D.sampler3D.samplerCube.sampler2DShadow.samplerCubeShadow.sampler2DArray.sampler2DArrayShadow.isampler2D.isampler3D.isamplerCube.isampler2DArray.usampler2D.usampler3D.usamplerCube.usampler2DArray.struct.common.partition.active.asm.class.union.enum.typedef.template.this.resource.goto.inline.noinline.public.static.extern.external.interface.long.short.half.fixed.unsigned.superp.input.output.hvec2.hvec3.hvec4.fvec2.fvec3.fvec4.sampler3DRect.filter.sizeof.cast.namespace.using.main`.split(`.`)),qD=class extends _E{constructor(e,t){super(e,t,new zE),this.uniformGroups={},this.transforms=[],this.extensions={},this.builtins={vertex:[],fragment:[],compute:[]}}needsToWorkingColorSpace(e){return e.isVideoTexture===!0&&e.colorSpace!==``}_include(e){let t=zD[e];return t.build(this),this.addInclude(t),t}getMethod(e){return zD[e]!==void 0&&this._include(e),BD[e]||e}getBitcastMethod(e,t){let n=this.getComponentType(t),r=this.getComponentType(e);return n!==`float`&&r!==`float`&&this.getTypeLength(t)===this.getTypeLength(e)?this.getType(e):this.getMethod(`bitcast_${n}_${r}`)}getFloatPackingMethod(e,t=`2x16`){return this.getMethod(`floatpack_${e}_${t}`)}getFloatUnpackingMethod(e,t=`2x16`){return this.getMethod(`floatunpack_${e}_${t}`)}getTernary(e,t,n){return`${e} ? ${t} : ${n}`}getOutputStructName(){return``}buildFunctionCode(e){let t=e.layout,n=this.flowShaderNode(e),r=[];for(let e of t.inputs)r.push(this.getType(e.type)+` `+e.name);return`${this.getType(t.type)} ${t.name}( ${r.join(`, `)} ) {
107
+
108
+ ${n.vars}
109
+
110
+ ${n.code}
111
+ return ${n.result};
112
+
113
+ }`}setupPBO(e){let t=e.value;if(t.pbo===void 0){let e=t.array,n=t.count*t.itemSize,{itemSize:r}=t,i=t.array.constructor.name.toLowerCase().includes(`int`),a=i?bt:fn;r===2?a=i?Xt:mn:r===3?a=i?se:g:r===4&&(a=i?Ie:Sn);let o={Float32Array:Kt,Uint8Array:we,Uint16Array:h,Uint32Array:_e,Int8Array:He,Int16Array:Rt,Int32Array:it,Uint8ClampedArray:we},s=2**Math.ceil(Math.log2(Math.sqrt(n/r))),c=Math.ceil(n/r/s);s*c*r<n&&c++;let l=s*c*r,u=new e.constructor(l);u.set(e,0),t.array=u;let d=new Oe(t.array,s,c,a,o[t.array.constructor.name]||1015);d.needsUpdate=!0,d.isPBOTexture=!0;let f=new Wc(d,null,null);f.setPrecision(`high`),t.pboNode=f,t.pbo=f.value,this.getUniformFromNode(t.pboNode,`texture`,this.shaderStage,this.context.nodeName)}}getPropertyName(e,t=this.shaderStage){return e.isNodeUniform&&e.node.isTextureNode!==!0&&e.node.isBufferNode!==!0?e.name:super.getPropertyName(e,t)}isReservedKeyword(e){return KD.has(e)}generatePBO(e){let{node:t,indexNode:n}=e,r=t.value;if(this.renderer.backend.has(r)){let e=this.renderer.backend.get(r);e.pbo=r.pbo}let i=this.getUniformFromNode(r.pboNode,`texture`,this.shaderStage,this.context.nodeName),a=this.getPropertyName(i);this.increaseUsage(n);let o=n.build(this,`uint`),s=this.getDataFromNode(e),c=s.propertyName;if(c===void 0){let n=this.getVarFromNode(e);c=this.getPropertyName(n);let i=this.getDataFromNode(t),l=i.propertySizeName;l===void 0&&(l=c+`Size`,this.getVarFromNode(t,l,`uint`),this.addLineFlowCode(`${l} = uint( textureSize( ${a}, 0 ).x )`,e),i.propertySizeName=l);let{itemSize:u}=r,d=`.`+ur.join(``).slice(0,u),f=`ivec2(${o} % ${l}, ${o} / ${l})`,p=this.generateTextureLoad(null,a,f,`0`,null,null),m=`vec4`;r.pbo.type===1014?m=`uvec4`:r.pbo.type===1013&&(m=`ivec4`),this.addLineFlowCode(`${c} = ${m}(${p})${d}`,e),s.propertyName=c}return c}generateTextureLoad(e,t,n,r,i,a){r===null&&(r=`0`);let o;return o=i?a?`texelFetchOffset( ${t}, ivec3( ${n}, ${i} ), int( ${r} ), ${a} )`:`texelFetch( ${t}, ivec3( ${n}, ${i} ), int( ${r} ) )`:a?`texelFetchOffset( ${t}, ${n}, int( ${r} ), ${a} )`:`texelFetch( ${t}, ${n}, int( ${r} ) )`,e!==null&&e.isDepthTexture&&(o+=`.x`),o}generateTexture(e,t,n,r,i){return r&&(n=`vec3( ${n}, ${r} )`),e.isDepthTexture?i?`textureOffset( ${t}, ${n}, ${i} ).x`:`texture( ${t}, ${n} ).x`:i?`textureOffset( ${t}, ${n}, ${i} )`:`texture( ${t}, ${n} )`}generateTextureSize(e,t,n){return`textureSize( ${t}, ${n} )`}generateTextureLevel(e,t,n,r,i,a){return i&&(n=`vec3( ${n}, ${i} )`),a?`textureLodOffset( ${t}, ${n}, ${r}, ${a} )`:`textureLod( ${t}, ${n}, ${r} )`}generateTextureBias(e,t,n,r,i,a){return i&&(n=`vec3( ${n}, ${i} )`),a?`textureOffset( ${t}, ${n}, ${a}, ${r} )`:`texture( ${t}, ${n}, ${r} )`}generateTextureGrad(e,t,n,r,i,a){return i&&(n=`vec3( ${n}, ${i} )`),a?`textureGradOffset( ${t}, ${n}, ${r[0]}, ${r[1]}, ${a} )`:`textureGrad( ${t}, ${n}, ${r[0]}, ${r[1]} )`}generateTextureCompare(e,t,n,r,i,a,o=this.shaderStage){if(o===`fragment`)return e.isCubeTexture?`texture( ${t}, vec4( ${n}, ${r} ) )`:i?a?`textureOffset( ${t}, vec4( ${n}, ${i}, ${r} ), ${a} )`:`texture( ${t}, vec4( ${n}, ${i}, ${r} ) )`:a?`textureOffset( ${t}, vec3( ${n}, ${r} ), ${a} )`:`texture( ${t}, vec3( ${n}, ${r} ) )`;S(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${o} shader.`)}generateTextureGather(e,t,n,r,i,a,o){return e.isDepthTexture&&(r=`0`),a===null&&(a=`ivec2( 0 )`),o===null&&(o=`false`),i?(this._include(`textureGatherArray`),`tsl_textureGather_array( ${r}, ${t}, vec3( ${n}, ${i} ), ${a}, ${o} )`):(this._include(`textureGather`),`tsl_textureGather( ${r}, ${t}, ${n}, ${a}, ${o} )`)}generateTextureGatherCompare(e,t,n,r,i,a,o){return a===null&&(a=`ivec2( 0 )`),o===null&&(o=`false`),i?(this._include(`textureGatherCompareArray`),`tsl_textureGatherCompare_array( ${t}, vec3( ${n}, ${i} ), ${a}, ${r}, ${o} )`):(this._include(`textureGatherCompare`),`tsl_textureGatherCompare( ${t}, ${n}, ${a}, ${r}, ${o} )`)}getUniforms(e){let t=this.uniforms[e],n=[],r={};for(let e of t){let t=null,i=!1;if(e.type===`texture`||e.type===`texture3D`){let n=e.node,r=n.value,i=this.getComponentTypeFromTexture(r),a=i===`float`?``:i.charAt(0);t=e.type===`texture3D`&&r.isArrayTexture===!1?`${a}sampler3D ${e.name};`:r.compareFunction&&n.isSampleCompare()?r.isArrayTexture===!0?`sampler2DArrayShadow ${e.name};`:`sampler2DShadow ${e.name};`:r.isArrayTexture===!0||r.isDataArrayTexture===!0||r.isCompressedArrayTexture===!0?`${a}sampler2DArray ${e.name};`:`${a}sampler2D ${e.name};`}else if(e.type===`cubeTexture`)t=`samplerCube ${e.name};`;else if(e.type===`cubeDepthTexture`)t=e.node.value.compareFunction?`samplerCubeShadow ${e.name};`:`samplerCube ${e.name};`;else if(e.type===`buffer`){let n=e.node,r=this.getType(n.bufferType),i=n.bufferCount,a=i>0?i:``;t=`${n.name} {\n\t${r} ${e.name}[${a}];\n};\n`}else{let t=e.groupNode.name;if(r[t]===void 0){let e=this.uniformGroups[t];if(e!==void 0){let n=[];for(let t of e.uniforms){let e=t.getType(),r=this.getVectorType(e),i=t.nodeUniform.node.precision,a=`${r} ${t.name};`;i!==null&&(a=VD[i]+` `+a),n.push(` `+a)}r[t]=n}}i=!0}if(!i){let r=e.node.precision;r!==null&&(t=VD[r]+` `+t),t=`uniform `+t,n.push(t)}}let i=``;for(let e in r){let t=r[e];i+=this._getGLSLUniformStruct(e,t.join(`
114
+ `))+`
115
+ `}return i+=n.join(`
116
+ `),i}getTypeFromAttribute(e){let t=super.getTypeFromAttribute(e);if(/^[iu]/.test(t)&&e.gpuType!==1013){let n=e;e.isInterleavedBufferAttribute&&(n=e.data);let r=n.array;r instanceof Uint32Array||r instanceof Int32Array||(t=t.slice(1))}return t}getAttributes(e){let t=``;if(e===`vertex`||e===`compute`){let e=this.getAttributesArray(),n=0;for(let r of e)t+=`layout( location = ${n++} ) in ${r.type} ${r.name};\n`}return t}getStructMembers(e){let t=[];for(let n of e.members)t.push(`\t${n.type} ${n.name};`);return t.join(`
117
+ `)}getStructs(e){let t=[],n=this.structs[e],r=[];for(let e of n)if(e.output)for(let t of e.members)r.push(`layout( location = ${t.index} ) out ${t.type} ${t.name};`);else{let n=`struct `+e.name+` {
118
+ `;n+=this.getStructMembers(e),n+=`
119
+ };
120
+ `,t.push(n)}return e===`fragment`&&r.length===0&&r.push(`layout( location = 0 ) out ${this.getOutputType()} fragColor;`),`
121
+ `+r.join(`
122
+ `)+`
123
+
124
+ `+t.join(`
125
+ `)}getVaryings(e){let t=``,n=this.varyings;if(e===`vertex`||e===`compute`)for(let r of n){e===`compute`&&(r.needsInterpolation=!0);let n=this.getType(r.type);if(r.needsInterpolation){if(r.interpolationType){let e=UD[r.interpolationType]||r.interpolationType,i=WD[r.interpolationSampling]||``;t+=`${e} ${i} out ${n} ${r.name};\n`}else{let e=n.includes(`int`)||n.includes(`uv`)||n.includes(`iv`)?`flat `:``;t+=`${e}out ${n} ${r.name};\n`}}else t+=`${n} ${r.name};\n`}else if(e===`fragment`){for(let e of n)if(e.needsInterpolation){let n=this.getType(e.type);if(e.interpolationType){let r=UD[e.interpolationType]||e.interpolationType,i=WD[e.interpolationSampling]||``;t+=`${r} ${i} in ${n} ${e.name};\n`}else{let r=n.includes(`int`)||n.includes(`uv`)||n.includes(`iv`)?`flat `:``;t+=`${r}in ${n} ${e.name};\n`}}}for(let n of this.builtins[e])t+=`${n};\n`;return t}getVertexIndex(){return`uint( gl_VertexID )`}getInstanceIndex(){return`uint( gl_InstanceID )`}getInvocationLocalIndex(){return`uint( gl_InstanceID ) % ${this.compute.workgroupSize.reduce((e,t)=>e*t,1)}u`}getSubgroupSize(){S(`GLSLNodeBuilder: WebGLBackend does not support the subgroupSize node`)}getInvocationSubgroupIndex(){S(`GLSLNodeBuilder: WebGLBackend does not support the invocationSubgroupIndex node`)}getSubgroupIndex(){S(`GLSLNodeBuilder: WebGLBackend does not support the subgroupIndex node`)}getDrawIndex(){return this.renderer.backend.extensions.has(`WEBGL_multi_draw`)?`uint( gl_DrawID )`:`nodeUniformDrawId`}getFrontFacing(){return`gl_FrontFacing`}getFragCoord(){return`gl_FragCoord.xy`}getFragDepth(){return`gl_FragDepth`}enableExtension(e,t,n=this.shaderStage){let r=this.extensions[n]||(this.extensions[n]=new Map);r.has(e)===!1&&r.set(e,{name:e,behavior:t})}getExtensions(e){let t=[];if(e===`vertex`){let t=this.renderer.backend.extensions;this.object.isBatchedMesh&&t.has(`WEBGL_multi_draw`)&&this.enableExtension(`GL_ANGLE_multi_draw`,`require`,e)}let n=this.extensions[e];if(n!==void 0)for(let{name:e,behavior:r}of n.values())t.push(`#extension ${e} : ${r}`);return t.join(`
126
+ `)}getClipDistance(){return`gl_ClipDistance`}isAvailable(e){let t=HD[e];if(t===void 0){let n;switch(t=!1,e){case`float32Filterable`:n=`OES_texture_float_linear`;break;case`clipDistance`:n=`WEBGL_clip_cull_distance`}if(n!==void 0){let e=this.renderer.backend.extensions;e.has(n)&&(e.get(n),t=!0)}HD[e]=t}return t}isFlipY(){return!0}enableHardwareClipping(e){this.enableExtension(`GL_ANGLE_clip_cull_distance`,`require`),this.builtins.vertex.push(`out float gl_ClipDistance[ ${e} ]`)}enableMultiview(){this.enableExtension(`GL_OVR_multiview2`,`require`,`fragment`),this.enableExtension(`GL_OVR_multiview2`,`require`,`vertex`),this.builtins.vertex.push(`layout(num_views = 2) in`)}registerTransform(e,t){this.transforms.push({varyingName:e,attributeNode:t})}getTransforms(){let e=this.transforms,t=``;for(let n=0;n<e.length;n++){let r=e[n],i=this.getPropertyName(r.attributeNode);i&&(t+=`${r.varyingName} = ${i};\n\t`)}return t}_getGLSLUniformStruct(e,t){return`
127
+ layout( std140 ) uniform ${e} {
128
+ ${t}
129
+ };`}_getGLSLVertexCode(e){return`#version 300 es
130
+
131
+ ${this.getSignature()}
132
+
133
+ // extensions
134
+ ${e.extensions}
135
+
136
+ // precision
137
+ ${GD}
138
+
139
+ // structs
140
+ ${e.structs}
141
+
142
+ // uniforms
143
+ ${e.uniforms}
144
+
145
+ // varyings
146
+ ${e.varyings}
147
+
148
+ // attributes
149
+ ${e.attributes}
150
+
151
+ // vars
152
+ ${e.vars}
153
+
154
+ // codes
155
+ ${e.codes}
156
+
157
+ void main() {
158
+
159
+ // transforms
160
+ ${e.transforms}
161
+
162
+ // flow
163
+ ${e.flow}
164
+
165
+ gl_PointSize = 1.0;
166
+
167
+ }
168
+ `}_getGLSLFragmentCode(e){return`#version 300 es
169
+
170
+ ${this.getSignature()}
171
+
172
+ // extensions
173
+ ${e.extensions}
174
+
175
+ // precision
176
+ ${GD}
177
+
178
+ // structs
179
+ ${e.structs}
180
+
181
+ // uniforms
182
+ ${e.uniforms}
183
+
184
+ // varyings
185
+ ${e.varyings}
186
+
187
+ // vars
188
+ ${e.vars}
189
+
190
+ // codes
191
+ ${e.codes}
192
+
193
+ void main() {
194
+
195
+ // flow
196
+ ${e.flow}
197
+
198
+ }
199
+ `}buildCode(){let e=this.material===null?{compute:{}}:{fragment:{},vertex:{}};this.sortBindingGroups();for(let t in e){let n=`// code
200
+
201
+ `;n+=this.flowCode[t];let r=this.flowNodes[t],i=r[r.length-1];for(let e of r){let r=this.getFlowData(e),a=e.name;a&&(n.length>0&&(n+=`
202
+ `),n+=`\t// flow -> ${a}\n\t`),n+=`${r.code}\n\t`,e===i&&t!==`compute`&&(n+=`// result
203
+ `,t===`vertex`?(n+=`gl_Position = `,n+=`${this.format(r.result,i.getNodeType(this),`vec4`)};`):t===`fragment`&&(e.outputNode.isOutputStructNode||(n+=`fragColor = `,n+=`${this.format(r.result,i.getNodeType(this),this.getOutputType())};`)))}let a=e[t];if(a.extensions=this.getExtensions(t),a.uniforms=this.getUniforms(t),a.attributes=this.getAttributes(t),a.varyings=this.getVaryings(t),a.vars=this.getVars(t,!0),a.structs=this.getStructs(t),a.codes=this.getCodes(t),a.transforms=this.getTransforms(t),a.flow=n,t===`vertex`){let e=this.renderer.backend.extensions;this.object.isBatchedMesh&&e.has(`WEBGL_multi_draw`)===!1&&(a.uniforms+=`
204
+ uniform uint nodeUniformDrawId;
205
+ `)}}this.material===null?this.computeShader=this._getGLSLVertexCode(e.compute):(this.vertexShader=this._getGLSLVertexCode(e.vertex),this.fragmentShader=this._getGLSLFragmentCode(e.fragment))}getUniformFromNode(e,t,n,r=null){let i=super.getUniformFromNode(e,t,n,r),a=this.getDataFromNode(e,n,this.globalCache),o=a.uniformGPU;if(o===void 0){let r=e.groupNode,s=r.name,c=this.getBindGroupArray(s,n);if(t===`texture`)o=new ID(i.name,i.node,r),c.push(o);else if(t===`cubeTexture`||t===`cubeDepthTexture`)o=new LD(i.name,i.node,r),c.push(o);else if(t===`texture3D`)o=new RD(i.name,i.node,r),c.push(o);else if(t===`buffer`){i.name=`buffer${e.id}`;let t=this.getSharedDataFromNode(e),n=t.buffer;n===void 0&&(e.name=`NodeBuffer_${e.id}`,n=new DD(e,r),n.name=e.name,t.buffer=n),c.push(n),o=n}else{let e=this.uniformGroups[s];e===void 0?(e=new MD(s,r),this.uniformGroups[s]=e,c.push(e)):c.indexOf(e)===-1&&c.push(e),o=this.getNodeUniform(i,t);let n=o.name;e.uniforms.some(e=>e.name===n)||e.addUniform(o)}a.uniformGPU=o}return i}},JD=null,YD=null,XD=class{constructor(e={}){this.parameters=Object.assign({},e),this.data=new WeakMap,this.renderer=null,this.domElement=null,this.timestampQueryPool={[Ot.RENDER]:null,[Ot.COMPUTE]:null},this.trackTimestamp=e.trackTimestamp===!0}async init(e){this.renderer=e}get coordinateSystem(){}beginRender(){}finishRender(){}setXRTarget(){}beginCompute(){}finishCompute(){}draw(){}compute(){}createProgram(){}destroyProgram(){}createBindings(){}updateBindings(){}updateBinding(){}createRenderPipeline(){}createComputePipeline(){}needsRenderUpdate(){}getRenderCacheKey(){}createNodeBuilder(){}updateSampler(){}destroySampler(){}createDefaultTexture(){}createTexture(){}updateTexture(){}generateMipmaps(){}destroyTexture(){}async copyTextureToBuffer(){}copyTextureToTexture(){}copyFramebufferToTexture(){}createAttribute(){}createIndexAttribute(){}createStorageAttribute(){}createUniformBuffer(){}destroyUniformBuffer(){}updateAttribute(){}destroyAttribute(){}getContext(){}updateSize(){}updateViewport(){}updateTimeStampUID(e){let t=this.get(e),n=this.renderer.info.frame,r,i=e.id;Array.isArray(e)?(i=e.map(e=>e.id).join(`,`),r=`c:`+this.renderer.info.compute.frameCalls):r=e.isComputeNode===!0?`c:`+this.renderer.info.compute.frameCalls:`r:`+this.renderer.info.render.frameCalls,t.timestampUID=r+`:`+i+`:f`+n}getTimestampUID(e){return this.get(e).timestampUID}getTimestampFrames(e){let t=this.timestampQueryPool[e];return t?t.getTimestampFrames():[]}_getQueryPool(e){let t=e.startsWith(`c:`)?Ot.COMPUTE:Ot.RENDER;return this.timestampQueryPool[t]}getTimestamp(e){return this._getQueryPool(e).getTimestamp(e)}get hasTimestamp(){return!1}hasTimestampQuery(e){return this._getQueryPool(e).hasTimestampQuery(e)}isOccluded(){}async resolveTimestampsAsync(e=`render`){if(!this.trackTimestamp){Wt(`WebGPURenderer: Timestamp tracking is disabled.`);return}let t=this.timestampQueryPool[e];if(!t)return;let n=await t.resolveQueriesAsync();return this.renderer.info[e].timestamp=n,n}async getArrayBufferAsync(){}async hasFeatureAsync(){}hasFeature(){}getDrawingBufferSize(){return JD||=new pe,this.renderer.getDrawingBufferSize(JD)}setScissorTest(){}resetState(){}getClearColor(){let e=this.renderer;return YD||=new tv,e.getClearColor(YD),YD.getRGB(YD),YD}getDomElement(){let e=this.domElement;return e===null&&(e=this.parameters.canvas===void 0?Jt():this.parameters.canvas,`setAttribute`in e&&e.setAttribute(`data-engine`,`three.js r186 webgpu`),this.domElement=e),e}hasCompatibility(){return!1}initRenderTarget(){}set(e,t){this.data.set(e,t)}get(e){let t=this.data.get(e);return t===void 0&&(t={},this.data.set(e,t)),t}has(e){return this.data.has(e)}delete(e){this.data.delete(e)}deleteBindGroupData(){}async dispose(){for(let e of Object.values(this.timestampQueryPool))e!==null&&await e.dispose()}},ZD=0,QD=class{constructor(e,t){this.buffers=[e.bufferGPU,t],this.type=e.type,this.bufferType=e.bufferType,this.pbo=e.pbo,this.byteLength=e.byteLength,this.bytesPerElement=e.BYTES_PER_ELEMENT,this.version=e.version,this.isInteger=e.isInteger,this.activeBufferIndex=0,this.baseId=e.id}get id(){return`${this.baseId}|${this.activeBufferIndex}`}get bufferGPU(){return this.buffers[this.activeBufferIndex]}get transformBuffer(){return this.buffers[this.activeBufferIndex^1]}switchBuffers(){this.activeBufferIndex^=1}},$D=class{constructor(e){this.backend=e}createAttribute(e,t){let n=this.backend,{gl:r}=n,i=e.array,a=e.usage||r.STATIC_DRAW,o=e.isInterleavedBufferAttribute?e.data:e,s=n.get(o),c=s.bufferGPU;c===void 0&&(c=this._createBuffer(r,t,i,a),s.bufferGPU=c,s.bufferType=t,s.version=o.version);let l;if(i instanceof Float32Array)l=r.FLOAT;else if(typeof Float16Array<`u`&&i instanceof Float16Array)l=r.HALF_FLOAT;else if(i instanceof Uint16Array)l=e.isFloat16BufferAttribute?r.HALF_FLOAT:r.UNSIGNED_SHORT;else if(i instanceof Int16Array)l=r.SHORT;else if(i instanceof Uint32Array)l=r.UNSIGNED_INT;else if(i instanceof Int32Array)l=r.INT;else if(i instanceof Int8Array)l=r.BYTE;else if(i instanceof Uint8Array)l=r.UNSIGNED_BYTE;else if(i instanceof Uint8ClampedArray)l=r.UNSIGNED_BYTE;else throw Error(`THREE.WebGLBackend: Unsupported buffer data format: `+i);let u={bufferGPU:c,bufferType:t,type:l,byteLength:i.byteLength,bytesPerElement:i.BYTES_PER_ELEMENT,version:e.version,pbo:e.pbo,isInteger:l===r.INT||l===r.UNSIGNED_INT||e.gpuType===1013,id:ZD++};if(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute){let e=this._createBuffer(r,t,i,a);u=new QD(u,e)}n.set(e,u)}updateAttribute(e){let t=this.backend,{gl:n}=t,r=e.array,i=e.isInterleavedBufferAttribute?e.data:e,a=t.get(i),o=a.bufferType,s=e.isInterleavedBufferAttribute?e.data.updateRanges:e.updateRanges;if(n.bindBuffer(o,a.bufferGPU),s.length===0)n.bufferSubData(o,0,r);else{for(let e=0,t=s.length;e<t;e++){let t=s[e];n.bufferSubData(o,t.start*r.BYTES_PER_ELEMENT,r,t.start,t.count)}i.clearUpdateRanges()}n.bindBuffer(o,null),a.version=i.version}destroyAttribute(e){let t=this.backend,{gl:n}=t;e.isInterleavedBufferAttribute&&t.delete(e.data);let r=t.get(e);n.deleteBuffer(r.bufferGPU),t.delete(e)}async getArrayBufferAsync(e,t=null,n=0,r=-1){let i=this.backend,{gl:a}=i,o=e.isInterleavedBufferAttribute?e.data:e,s=i.get(o),{bufferGPU:c}=s,l=r===-1?s.byteLength-n:r,u;if(t===null)u=new Uint8Array(new ArrayBuffer(l));else if(t.isReadbackBuffer){if(t._mapped===!0)throw Error(`THREE.WebGPURenderer: ReadbackBuffer must be released before being used again.`);let e=()=>{t.buffer=null,t._mapped=!1,t.removeEventListener(`release`,e),t.removeEventListener(`dispose`,e)};t.addEventListener(`release`,e),t.addEventListener(`dispose`,e),u=new Uint8Array(new ArrayBuffer(l)),t.buffer=u.buffer}else u=new Uint8Array(t);return a.bindBuffer(a.COPY_READ_BUFFER,c),a.getBufferSubData(a.COPY_READ_BUFFER,n,u),a.bindBuffer(a.COPY_READ_BUFFER,null),a.bindBuffer(a.COPY_WRITE_BUFFER,null),t&&t.isReadbackBuffer?t:u.buffer}_createBuffer(e,t,n,r){let i=e.createBuffer();return e.bindBuffer(t,i),e.bufferData(t,n,r),e.bindBuffer(t,null),i}},eO,tO,nO=class{constructor(e){this.backend=e,this.gl=this.backend.gl,this.enabled={},this.parameters={},this.currentFlipSided=null,this.currentCullFace=null,this.currentProgram=null,this.currentBlendingEnabled=!1,this.currentBlending=null,this.currentBlendEquation=null,this.currentBlendEquationAlpha=null,this.currentBlendSrc=null,this.currentBlendDst=null,this.currentBlendSrcAlpha=null,this.currentBlendDstAlpha=null,this.currentBlendColor=new Et(0,0,0),this.currentBlendAlpha=0,this.currentPremultipledAlpha=null,this.currentPolygonOffsetFactor=null,this.currentPolygonOffsetUnits=null,this.currentColorMask=null,this.currentDepthReversed=!1,this.currentDepthFunc=null,this.currentDepthMask=null,this.currentStencilFunc=null,this.currentStencilRef=null,this.currentStencilFuncMask=null,this.currentStencilFail=null,this.currentStencilZFail=null,this.currentStencilZPass=null,this.currentStencilMask=null,this.currentLineWidth=null,this.currentClippingPlanes=0,this.currentVAO=null,this.currentIndex=null,this.currentBoundFramebuffers={},this.currentDrawbuffers=new WeakMap,this.maxTextures=this.gl.getParameter(this.gl.MAX_TEXTURE_IMAGE_UNITS),this.currentTextureSlot=null,this.currentBoundTextures={},this.currentBoundBufferBases={},this._init()}_init(){let e=this.gl;eO={100:e.FUNC_ADD,101:e.FUNC_SUBTRACT,102:e.FUNC_REVERSE_SUBTRACT,103:e.MIN,104:e.MAX},tO={200:e.ZERO,201:e.ONE,202:e.SRC_COLOR,204:e.SRC_ALPHA,210:e.SRC_ALPHA_SATURATE,208:e.DST_COLOR,206:e.DST_ALPHA,203:e.ONE_MINUS_SRC_COLOR,205:e.ONE_MINUS_SRC_ALPHA,209:e.ONE_MINUS_DST_COLOR,207:e.ONE_MINUS_DST_ALPHA,211:e.CONSTANT_COLOR,212:e.ONE_MINUS_CONSTANT_COLOR,213:e.CONSTANT_ALPHA,214:e.ONE_MINUS_CONSTANT_ALPHA};let t=e.getParameter(e.SCISSOR_BOX),n=e.getParameter(e.VIEWPORT);this.currentScissor=new kn().fromArray(t),this.currentViewport=new kn().fromArray(n),this._tempVec4=new kn}enable(e){let{enabled:t}=this;t[e]!==!0&&(this.gl.enable(e),t[e]=!0)}disable(e){let{enabled:t}=this;t[e]!==!1&&(this.gl.disable(e),t[e]=!1)}setFlipSided(e){if(this.currentFlipSided!==e){let{gl:t}=this;e?t.frontFace(t.CW):t.frontFace(t.CCW),this.currentFlipSided=e}}setCullFace(e){let{gl:t}=this;e===0?this.disable(t.CULL_FACE):(this.enable(t.CULL_FACE),e!==this.currentCullFace&&(e===1?t.cullFace(t.BACK):e===2?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK))),this.currentCullFace=e}setLineWidth(e){let{currentLineWidth:t,gl:n}=this;e!==t&&(n.lineWidth(e),this.currentLineWidth=e)}setMRTBlending(e,t,n){let r=this.gl,i=this.backend.drawBuffersIndexedExt;if(!i){Wt(`WebGPURenderer: Multiple Render Targets (MRT) blending configuration is not fully supported in compatibility mode. The material blending will be used for all render targets.`);return}for(let a=0;a<e.length;a++){let o=e[a],s=null;if(t!==null){let e=t.getBlendMode(o.name);e.blending===6?s=n:e.blending!==0&&(s=e)}else s=n;s===null?i.blendFuncSeparateiOES(a,r.ONE,r.ZERO,r.ONE,r.ZERO):this._setMRTBlendingIndex(a,s)}}_setMRTBlendingIndex(e,t){let{gl:n}=this,r=this.backend.drawBuffersIndexedExt,i=t.blending,a=t.blendSrc,o=t.blendDst,s=t.blendEquation,c=t.premultipliedAlpha;if(i===5){let n=t.blendSrcAlpha===null?a:t.blendSrcAlpha,i=t.blendDstAlpha===null?o:t.blendDstAlpha,c=t.blendEquationAlpha===null?s:t.blendEquationAlpha;r.blendEquationSeparateiOES(e,eO[s],eO[c]),r.blendFuncSeparateiOES(e,tO[a],tO[o],tO[n],tO[i])}else if(r.blendEquationSeparateiOES(e,n.FUNC_ADD,n.FUNC_ADD),c)switch(i){case 1:r.blendFuncSeparateiOES(e,n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case 2:r.blendFuncSeparateiOES(e,n.ONE,n.ONE,n.ONE,n.ONE);break;case 3:r.blendFuncSeparateiOES(e,n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case 4:r.blendFuncSeparateiOES(e,n.DST_COLOR,n.ONE_MINUS_SRC_ALPHA,n.ZERO,n.ONE);break;default:r.blendFuncSeparateiOES(e,n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA)}else switch(i){case 1:r.blendFuncSeparateiOES(e,n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case 2:r.blendFuncSeparateiOES(e,n.SRC_ALPHA,n.ONE,n.ONE,n.ONE);break;case 3:r.blendFuncSeparateiOES(e,n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case 4:r.blendFuncSeparateiOES(e,n.DST_COLOR,n.ONE_MINUS_SRC_ALPHA,n.ZERO,n.ONE);break;default:r.blendFuncSeparateiOES(e,n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA)}}setBlending(e,t,n,r,i,a,o,s,c,l){let{gl:u}=this;if(e===0){this.currentBlendingEnabled===!0&&(this.disable(u.BLEND),this.currentBlendingEnabled=!1);return}if(this.currentBlendingEnabled===!1&&(this.enable(u.BLEND),this.currentBlendingEnabled=!0),e!==5){if(e!==this.currentBlending||l!==this.currentPremultipledAlpha){if((this.currentBlendEquation!==100||this.currentBlendEquationAlpha!==100)&&(u.blendEquation(u.FUNC_ADD),this.currentBlendEquation=100,this.currentBlendEquationAlpha=100),l)switch(e){case 1:u.blendFuncSeparate(u.ONE,u.ONE_MINUS_SRC_ALPHA,u.ONE,u.ONE_MINUS_SRC_ALPHA);break;case 2:u.blendFunc(u.ONE,u.ONE);break;case 3:u.blendFuncSeparate(u.ZERO,u.ONE_MINUS_SRC_COLOR,u.ZERO,u.ONE);break;case 4:u.blendFuncSeparate(u.DST_COLOR,u.ONE_MINUS_SRC_ALPHA,u.ZERO,u.ONE);break;default:S(`WebGLState: Invalid blending: `,e)}else switch(e){case 1:u.blendFuncSeparate(u.SRC_ALPHA,u.ONE_MINUS_SRC_ALPHA,u.ONE,u.ONE_MINUS_SRC_ALPHA);break;case 2:u.blendFuncSeparate(u.SRC_ALPHA,u.ONE,u.ONE,u.ONE);break;case 3:S(`WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true`);break;case 4:S(`WebGLState: MultiplyBlending requires material.premultipliedAlpha = true`);break;default:S(`WebGLState: Invalid blending: `,e)}this.currentBlendSrc=null,this.currentBlendDst=null,this.currentBlendSrcAlpha=null,this.currentBlendDstAlpha=null,this.currentBlending=e,this.currentPremultipledAlpha=l}return}i||=t,a||=n,o||=r,(t!==this.currentBlendEquation||i!==this.currentBlendEquationAlpha)&&(u.blendEquationSeparate(eO[t],eO[i]),this.currentBlendEquation=t,this.currentBlendEquationAlpha=i),(n!==this.currentBlendSrc||r!==this.currentBlendDst||a!==this.currentBlendSrcAlpha||o!==this.currentBlendDstAlpha)&&(u.blendFuncSeparate(tO[n],tO[r],tO[a],tO[o]),this.currentBlendSrc=n,this.currentBlendDst=r,this.currentBlendSrcAlpha=a,this.currentBlendDstAlpha=o),(s.equals(this.currentBlendColor)===!1||c!==this.currentBlendAlpha)&&(u.blendColor(s.r,s.g,s.b,c),this.currentBlendColor.copy(s),this.currentBlendAlpha=c),this.currentBlending=e,this.currentPremultipledAlpha=!1}setColorMask(e){this.currentColorMask!==e&&(this.gl.colorMask(e,e,e,e),this.currentColorMask=e)}setDepthTest(e){let{gl:t}=this;e?this.enable(t.DEPTH_TEST):this.disable(t.DEPTH_TEST)}setReversedDepth(e){if(this.currentDepthReversed!==e){let t=this.backend.extensions.get(`EXT_clip_control`);e?t.clipControlEXT(t.LOWER_LEFT_EXT,t.ZERO_TO_ONE_EXT):t.clipControlEXT(t.LOWER_LEFT_EXT,t.NEGATIVE_ONE_TO_ONE_EXT),this.currentDepthReversed=e}}setDepthMask(e){this.currentDepthMask!==e&&(this.gl.depthMask(e),this.currentDepthMask=e)}setDepthFunc(e){if(this.currentDepthReversed&&(e=jt[e]),this.currentDepthFunc!==e){let{gl:t}=this;switch(e){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL);break;default:t.depthFunc(t.LEQUAL)}this.currentDepthFunc=e}}scissor(e,t,n,r){let i=this._tempVec4.set(e,t,n,r);if(this.currentScissor.equals(i)===!1){let{gl:e}=this;e.scissor(i.x,i.y,i.z,i.w),this.currentScissor.copy(i)}}viewport(e,t,n,r){let i=this._tempVec4.set(e,t,n,r);if(this.currentViewport.equals(i)===!1){let{gl:e}=this;e.viewport(i.x,i.y,i.z,i.w),this.currentViewport.copy(i)}}setScissorTest(e){let t=this.gl;e?this.enable(t.SCISSOR_TEST):this.disable(t.SCISSOR_TEST)}setStencilTest(e){let{gl:t}=this;e?this.enable(t.STENCIL_TEST):this.disable(t.STENCIL_TEST)}setStencilMask(e){this.currentStencilMask!==e&&(this.gl.stencilMask(e),this.currentStencilMask=e)}setStencilFunc(e,t,n){(this.currentStencilFunc!==e||this.currentStencilRef!==t||this.currentStencilFuncMask!==n)&&(this.gl.stencilFunc(e,t,n),this.currentStencilFunc=e,this.currentStencilRef=t,this.currentStencilFuncMask=n)}setStencilOp(e,t,n){(this.currentStencilFail!==e||this.currentStencilZFail!==t||this.currentStencilZPass!==n)&&(this.gl.stencilOp(e,t,n),this.currentStencilFail=e,this.currentStencilZFail=t,this.currentStencilZPass=n)}setMaterial(e,t,n){let{gl:r}=this;e.side===2?this.disable(r.CULL_FACE):this.enable(r.CULL_FACE);let i=e.side===1;t&&(i=!i),this.setFlipSided(i),e.blending===1&&e.transparent===!1?this.setBlending(0):this.setBlending(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.blendColor,e.blendAlpha,e.premultipliedAlpha),this.setDepthFunc(e.depthFunc),this.setDepthTest(e.depthTest),this.setDepthMask(e.depthWrite),this.setColorMask(e.colorWrite);let a=e.stencilWrite;if(this.setStencilTest(a),a&&(this.setStencilMask(e.stencilWriteMask),this.setStencilFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),this.setStencilOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),this.setPolygonOffset(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),e.alphaToCoverage===!0&&this.backend.renderer.currentSamples>0?this.enable(r.SAMPLE_ALPHA_TO_COVERAGE):this.disable(r.SAMPLE_ALPHA_TO_COVERAGE),this.currentClippingPlanes!==n){let e=12288;for(let t=0;t<8;t++)t<n?this.enable(e+t):this.disable(e+t);this.currentClippingPlanes=n}}setPolygonOffset(e,t,n){let{gl:r}=this;e?(this.enable(r.POLYGON_OFFSET_FILL),(this.currentPolygonOffsetFactor!==t||this.currentPolygonOffsetUnits!==n)&&(r.polygonOffset(t,n),this.currentPolygonOffsetFactor=t,this.currentPolygonOffsetUnits=n)):this.disable(r.POLYGON_OFFSET_FILL)}useProgram(e){return this.currentProgram!==e&&(this.gl.useProgram(e),this.currentProgram=e,!0)}setVertexState(e,t=null){let n=this.gl;return this.currentVAO!==e||this.currentIndex!==t?(n.bindVertexArray(e),t!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),this.currentVAO=e,this.currentIndex=t,!0):!1}resetVertexState(){let e=this.gl;e.bindVertexArray(null),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),this.currentVAO=null,this.currentIndex=null}bindFramebuffer(e,t){let{gl:n,currentBoundFramebuffers:r}=this;return r[e]!==t&&(n.bindFramebuffer(e,t),r[e]=t,e===n.DRAW_FRAMEBUFFER&&(r[n.FRAMEBUFFER]=t),e===n.FRAMEBUFFER&&(r[n.DRAW_FRAMEBUFFER]=t),!0)}drawBuffers(e,t){let{gl:n}=this,r=[],i=!1;if(e.textures!==null){r=this.currentDrawbuffers.get(t),r===void 0&&(r=[],this.currentDrawbuffers.set(t,r));let a=e.textures;if(r.length!==a.length||r[0]!==n.COLOR_ATTACHMENT0){for(let e=0,t=a.length;e<t;e++)r[e]=n.COLOR_ATTACHMENT0+e;r.length=a.length,i=!0}}else r[0]!==n.BACK&&(r[0]=n.BACK,i=!0);i&&n.drawBuffers(r)}activeTexture(e){let{gl:t,currentTextureSlot:n,maxTextures:r}=this;e===void 0&&(e=t.TEXTURE0+r-1),n!==e&&(t.activeTexture(e),this.currentTextureSlot=e)}bindTexture(e,t,n){let{gl:r,currentTextureSlot:i,currentBoundTextures:a,maxTextures:o}=this;n===void 0&&(n=i===null?r.TEXTURE0+o-1:i);let s=a[n];s===void 0&&(s={type:void 0,texture:void 0},a[n]=s),(s.type!==e||s.texture!==t)&&(i!==n&&(r.activeTexture(n),this.currentTextureSlot=n),r.bindTexture(e,t),s.type=e,s.texture=t)}bindBufferBase(e,t,n){let{gl:r}=this,i=`${e}-${t}`;return this.currentBoundBufferBases[i]!==n&&(r.bindBufferBase(e,t,n),this.currentBoundBufferBases[i]=n,!0)}unbindTexture(){let{gl:e,currentTextureSlot:t,currentBoundTextures:n}=this,r=n[t];r!==void 0&&r.type!==void 0&&(e.bindTexture(r.type,null),r.type=void 0,r.texture=void 0)}getParameter(e){let{gl:t,parameters:n}=this;return n[e]===void 0?t.getParameter(e):n[e]}pixelStorei(e,t){let{gl:n,parameters:r}=this;r[e]!==t&&(n.pixelStorei(e,t),r[e]=t)}reset(){let{gl:e}=this;e.disable(e.BLEND),e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ZERO),e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ZERO),e.blendColor(0,0,0,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(e.LESS),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(e.ALWAYS,0,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.clearStencil(0),e.cullFace(e.BACK),e.frontFace(e.CCW),e.polygonOffset(0,0),e.activeTexture(e.TEXTURE0),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),e.bindFramebuffer(e.READ_FRAMEBUFFER,null),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),e.pixelStorei(e.PACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.BROWSER_DEFAULT_WEBGL),e.pixelStorei(e.PACK_ROW_LENGTH,0),e.pixelStorei(e.PACK_SKIP_PIXELS,0),e.pixelStorei(e.PACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_ROW_LENGTH,0),e.pixelStorei(e.UNPACK_IMAGE_HEIGHT,0),e.pixelStorei(e.UNPACK_SKIP_PIXELS,0),e.pixelStorei(e.UNPACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_SKIP_IMAGES,0),this.resetVertexState(),this.enabled={},this.parameters={},this.currentFlipSided=null,this.currentCullFace=null,this.currentProgram=null,this.currentBlendingEnabled=!1,this.currentBlending=null,this.currentBlendEquation=null,this.currentBlendEquationAlpha=null,this.currentBlendSrc=null,this.currentBlendDst=null,this.currentBlendSrcAlpha=null,this.currentBlendDstAlpha=null,this.currentBlendColor.set(0,0,0),this.currentBlendAlpha=0,this.currentPremultipledAlpha=null,this.currentPolygonOffsetFactor=null,this.currentPolygonOffsetUnits=null,this.currentColorMask=null,this.currentDepthFunc=null,this.currentDepthMask=null,this.currentStencilFunc=null,this.currentStencilRef=null,this.currentStencilFuncMask=null,this.currentStencilFail=null,this.currentStencilZFail=null,this.currentStencilZPass=null,this.currentStencilMask=null,this.currentLineWidth=null,this.currentClippingPlanes=0,this.currentBoundFramebuffers={},this.currentDrawbuffers=new WeakMap,this.currentTextureSlot=null,this.currentBoundTextures={},this.currentBoundBufferBases={},this.currentScissor.set(0,0,e.canvas.width,e.canvas.height),this.currentViewport.set(0,0,e.canvas.width,e.canvas.height),this.currentDepthReversed=!1,this.backend.renderer.reversedDepthBuffer===!0&&this.setReversedDepth(!0)}},rO=class{constructor(e){this.backend=e,this.gl=this.backend.gl,this.extensions=e.extensions}convert(e,t=``){let{gl:n,extensions:r}=this,i,a=Zt.getTransfer(t);if(e===1009)return n.UNSIGNED_BYTE;if(e===1017)return n.UNSIGNED_SHORT_4_4_4_4;if(e===1018)return n.UNSIGNED_SHORT_5_5_5_1;if(e===35902)return n.UNSIGNED_INT_5_9_9_9_REV;if(e===35899)return n.UNSIGNED_INT_10F_11F_11F_REV;if(e===1010)return n.BYTE;if(e===1011)return n.SHORT;if(e===1012)return n.UNSIGNED_SHORT;if(e===1013)return n.INT;if(e===1014)return n.UNSIGNED_INT;if(e===1015)return n.FLOAT;if(e===1016)return n.HALF_FLOAT;if(e===1021)return n.ALPHA;if(e===1022)return n.RGB;if(e===1023)return n.RGBA;if(e===1026)return n.DEPTH_COMPONENT;if(e===1027)return n.DEPTH_STENCIL;if(e===1028)return n.RED;if(e===1029)return n.RED_INTEGER;if(e===1030)return n.RG;if(e===1031)return n.RG_INTEGER;if(e===1033)return n.RGBA_INTEGER;if(e===33776||e===33777||e===33778||e===33779){if(a===`srgb`){if(i=r.get(`WEBGL_compressed_texture_s3tc_srgb`),i!==null){if(e===33776)return i.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(e===33777)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(e===33778)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(e===33779)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null}else if(i=r.get(`WEBGL_compressed_texture_s3tc`),i!==null){if(e===33776)return i.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===33777)return i.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===33778)return i.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===33779)return i.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null}if(e===35840||e===35841||e===35842||e===35843){if(i=r.get(`WEBGL_compressed_texture_pvrtc`),i!==null){if(e===35840)return i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===35841)return i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===35842)return i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===35843)return i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null}if(e===36196||e===37492||e===37496||e===37488||e===37489||e===37490||e===37491){if(i=r.get(`WEBGL_compressed_texture_etc`),i!==null){if(e===36196||e===37492)return a===`srgb`?i.COMPRESSED_SRGB8_ETC2:i.COMPRESSED_RGB8_ETC2;if(e===37496)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:i.COMPRESSED_RGBA8_ETC2_EAC;if(e===37488)return i.COMPRESSED_R11_EAC;if(e===37489)return i.COMPRESSED_SIGNED_R11_EAC;if(e===37490)return i.COMPRESSED_RG11_EAC;if(e===37491)return i.COMPRESSED_SIGNED_RG11_EAC}else return null}if(e===37808||e===37809||e===37810||e===37811||e===37812||e===37813||e===37814||e===37815||e===37816||e===37817||e===37818||e===37819||e===37820||e===37821){if(i=r.get(`WEBGL_compressed_texture_astc`),i!==null){if(e===37808)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:i.COMPRESSED_RGBA_ASTC_4x4_KHR;if(e===37809)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:i.COMPRESSED_RGBA_ASTC_5x4_KHR;if(e===37810)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:i.COMPRESSED_RGBA_ASTC_5x5_KHR;if(e===37811)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:i.COMPRESSED_RGBA_ASTC_6x5_KHR;if(e===37812)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:i.COMPRESSED_RGBA_ASTC_6x6_KHR;if(e===37813)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:i.COMPRESSED_RGBA_ASTC_8x5_KHR;if(e===37814)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:i.COMPRESSED_RGBA_ASTC_8x6_KHR;if(e===37815)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:i.COMPRESSED_RGBA_ASTC_8x8_KHR;if(e===37816)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:i.COMPRESSED_RGBA_ASTC_10x5_KHR;if(e===37817)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:i.COMPRESSED_RGBA_ASTC_10x6_KHR;if(e===37818)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:i.COMPRESSED_RGBA_ASTC_10x8_KHR;if(e===37819)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:i.COMPRESSED_RGBA_ASTC_10x10_KHR;if(e===37820)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:i.COMPRESSED_RGBA_ASTC_12x10_KHR;if(e===37821)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:i.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null}if(e===36492||e===36494||e===36495){if(i=r.get(`EXT_texture_compression_bptc`),i!==null){if(e===36492)return a===`srgb`?i.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:i.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(e===36494)return i.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(e===36495)return i.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null}if(e===36283||e===36284||e===36285||e===36286){if(i=r.get(`EXT_texture_compression_rgtc`),i!==null){if(e===36283)return i.COMPRESSED_RED_RGTC1_EXT;if(e===36284)return i.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(e===36285)return i.COMPRESSED_RED_GREEN_RGTC2_EXT;if(e===36286)return i.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null}return e===1020?n.UNSIGNED_INT_24_8:n[e]===void 0?null:n[e]}_clientWaitAsync(){let{gl:e}=this,t=e.fenceSync(e.SYNC_GPU_COMMANDS_COMPLETE,0);return e.flush(),new Promise((n,r)=>{function i(){let a=e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0);if(a===e.WAIT_FAILED){e.deleteSync(t),r();return}if(a===e.TIMEOUT_EXPIRED){requestAnimationFrame(i);return}e.deleteSync(t),n()}i()})}},iO=!1,aO,oO,sO,cO=class{constructor(e){this.backend=e,this.gl=e.gl,this.extensions=e.extensions,this.defaultTextures={},this._srcFramebuffer=null,this._dstFramebuffer=null,iO===!1&&(this._init(),iO=!0)}_init(){let e=this.gl;aO={[nn]:e.REPEAT,[ke]:e.CLAMP_TO_EDGE,[hn]:e.MIRRORED_REPEAT},oO={[Gt]:e.NEAREST,[_n]:e.NEAREST_MIPMAP_NEAREST,[ut]:e.NEAREST_MIPMAP_LINEAR,[Ce]:e.LINEAR,[be]:e.LINEAR_MIPMAP_NEAREST,[ge]:e.LINEAR_MIPMAP_LINEAR},sO={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL}}getGLTextureType(e){let{gl:t}=this,n;return n=e.isCubeTexture===!0?t.TEXTURE_CUBE_MAP:e.isArrayTexture===!0||e.isDataArrayTexture===!0||e.isCompressedArrayTexture===!0?t.TEXTURE_2D_ARRAY:e.isData3DTexture===!0?t.TEXTURE_3D:t.TEXTURE_2D,n}getInternalFormat(e,t,n,r,i,a=!1){let{gl:o,extensions:s}=this;if(e!==null){if(o[e]!==void 0)return o[e];C(`WebGLBackend: Attempt to use non-existing WebGL internal format '`+e+`'`)}let c=null;r&&(c=s.get(`EXT_texture_norm16`),c||C(`WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension`));let l=t;if(t===o.RED&&(n===o.FLOAT&&(l=o.R32F),n===o.HALF_FLOAT&&(l=o.R16F),n===o.UNSIGNED_BYTE&&(l=o.R8),n===o.BYTE&&(l=o.R8_SNORM),n===o.UNSIGNED_SHORT&&c&&(l=c.R16_EXT),n===o.SHORT&&c&&(l=c.R16_SNORM_EXT)),t===o.RED_INTEGER&&(n===o.UNSIGNED_BYTE&&(l=o.R8UI),n===o.UNSIGNED_SHORT&&(l=o.R16UI),n===o.UNSIGNED_INT&&(l=o.R32UI),n===o.BYTE&&(l=o.R8I),n===o.SHORT&&(l=o.R16I),n===o.INT&&(l=o.R32I)),t===o.RG&&(n===o.FLOAT&&(l=o.RG32F),n===o.HALF_FLOAT&&(l=o.RG16F),n===o.UNSIGNED_BYTE&&(l=o.RG8),n===o.BYTE&&(l=o.RG8_SNORM),n===o.UNSIGNED_SHORT&&c&&(l=c.RG16_EXT),n===o.SHORT&&c&&(l=c.RG16_SNORM_EXT)),t===o.RG_INTEGER&&(n===o.UNSIGNED_BYTE&&(l=o.RG8UI),n===o.UNSIGNED_SHORT&&(l=o.RG16UI),n===o.UNSIGNED_INT&&(l=o.RG32UI),n===o.BYTE&&(l=o.RG8I),n===o.SHORT&&(l=o.RG16I),n===o.INT&&(l=o.RG32I)),t===o.RGB){let e=a?re:Zt.getTransfer(i);n===o.FLOAT&&(l=o.RGB32F),n===o.HALF_FLOAT&&(l=o.RGB16F),n===o.UNSIGNED_BYTE&&(l=e===`srgb`?o.SRGB8:o.RGB8),n===o.BYTE&&(l=o.RGB8_SNORM),n===o.UNSIGNED_SHORT&&c&&(l=c.RGB16_EXT),n===o.SHORT&&c&&(l=c.RGB16_SNORM_EXT),n===o.UNSIGNED_SHORT_5_6_5&&(l=o.RGB565),n===o.UNSIGNED_SHORT_5_5_5_1&&(l=o.RGB5_A1),n===o.UNSIGNED_SHORT_4_4_4_4&&(l=o.RGB4),n===o.UNSIGNED_INT_5_9_9_9_REV&&(l=o.RGB9_E5),n===o.UNSIGNED_INT_10F_11F_11F_REV&&(l=o.R11F_G11F_B10F)}if(t===o.RGB_INTEGER&&(n===o.UNSIGNED_BYTE&&(l=o.RGB8UI),n===o.UNSIGNED_SHORT&&(l=o.RGB16UI),n===o.UNSIGNED_INT&&(l=o.RGB32UI),n===o.BYTE&&(l=o.RGB8I),n===o.SHORT&&(l=o.RGB16I),n===o.INT&&(l=o.RGB32I)),t===o.RGBA){let e=a?re:Zt.getTransfer(i);n===o.FLOAT&&(l=o.RGBA32F),n===o.HALF_FLOAT&&(l=o.RGBA16F),n===o.UNSIGNED_BYTE&&(l=e===`srgb`?o.SRGB8_ALPHA8:o.RGBA8),n===o.BYTE&&(l=o.RGBA8_SNORM),n===o.UNSIGNED_SHORT&&c&&(l=c.RGBA16_EXT),n===o.SHORT&&c&&(l=c.RGBA16_SNORM_EXT),n===o.UNSIGNED_SHORT_4_4_4_4&&(l=o.RGBA4),n===o.UNSIGNED_SHORT_5_5_5_1&&(l=o.RGB5_A1)}return t===o.RGBA_INTEGER&&(n===o.UNSIGNED_BYTE&&(l=o.RGBA8UI),n===o.UNSIGNED_SHORT&&(l=o.RGBA16UI),n===o.UNSIGNED_INT&&(l=o.RGBA32UI),n===o.BYTE&&(l=o.RGBA8I),n===o.SHORT&&(l=o.RGBA16I),n===o.INT&&(l=o.RGBA32I)),t===o.DEPTH_COMPONENT&&(n===o.UNSIGNED_SHORT&&(l=o.DEPTH_COMPONENT16),n===o.UNSIGNED_INT&&(l=o.DEPTH_COMPONENT24),n===o.FLOAT&&(l=o.DEPTH_COMPONENT32F)),t===o.DEPTH_STENCIL&&n===o.UNSIGNED_INT_24_8&&(l=o.DEPTH24_STENCIL8),(l===o.R16F||l===o.R32F||l===o.RG16F||l===o.RG32F||l===o.RGBA16F||l===o.RGBA32F)&&s.get(`EXT_color_buffer_float`),l}setTextureParameters(e,t){let{gl:n,extensions:r,backend:i}=this,{state:a}=this.backend,o=Zt.getPrimaries(Zt.workingColorSpace),s=t.colorSpace===``?null:Zt.getPrimaries(t.colorSpace),c=t.colorSpace===``||o===s?n.NONE:n.BROWSER_DEFAULT_WEBGL;a.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t.flipY),a.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),a.pixelStorei(n.UNPACK_ALIGNMENT,t.unpackAlignment),a.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,c),n.texParameteri(e,n.TEXTURE_WRAP_S,aO[t.wrapS]),n.texParameteri(e,n.TEXTURE_WRAP_T,aO[t.wrapT]),(e===n.TEXTURE_3D||e===n.TEXTURE_2D_ARRAY)&&(t.isArrayTexture||n.texParameteri(e,n.TEXTURE_WRAP_R,aO[t.wrapR])),n.texParameteri(e,n.TEXTURE_MAG_FILTER,oO[t.magFilter]);let l=t.mipmaps!==void 0&&t.mipmaps.length>0,u=t.minFilter===1006&&l?ge:t.minFilter;if(n.texParameteri(e,n.TEXTURE_MIN_FILTER,oO[u]),t.compareFunction&&(n.texParameteri(e,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(e,n.TEXTURE_COMPARE_FUNC,sO[t.compareFunction])),r.has(`EXT_texture_filter_anisotropic`)===!0){if(t.magFilter===1003||t.minFilter!==1005&&t.minFilter!==1008||t.type===1015&&r.has(`OES_texture_float_linear`)===!1)return;if(t.anisotropy>1){let a=r.get(`EXT_texture_filter_anisotropic`);n.texParameterf(e,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,i.capabilities.getMaxAnisotropy()))}}}createDefaultTexture(e){let{gl:t,backend:n,defaultTextures:r}=this,i=this.getGLTextureType(e),a=r[i];a===void 0&&(a=t.createTexture(),n.state.bindTexture(i,a),t.texParameteri(i,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(i,t.TEXTURE_MAG_FILTER,t.NEAREST),r[i]=a),n.set(e,{textureGPU:a,glTextureType:i})}createTexture(e,t){let{gl:n,backend:r}=this,i,a,o,s,c;if(e.isExternalTexture===!0)i=e.sourceTexture,a=this.getGLTextureType(e);else{let{levels:l,width:u,height:d,depth:f}=t;o=r.utils.convert(e.format,e.colorSpace),s=r.utils.convert(e.type),c=this.getInternalFormat(e.internalFormat,o,s,e.normalized,e.colorSpace,e.isVideoTexture),i=n.createTexture(),a=this.getGLTextureType(e),r.state.bindTexture(a,i),this.setTextureParameters(a,e),e.isArrayTexture||e.isDataArrayTexture||e.isCompressedArrayTexture?n.texStorage3D(n.TEXTURE_2D_ARRAY,l,c,u,d,f):e.isData3DTexture?n.texStorage3D(n.TEXTURE_3D,l,c,u,d,f):e.isVideoTexture||n.texStorage2D(a,l,c,u,d)}r.set(e,{textureGPU:i,glTextureType:a,glFormat:o,glType:s,glInternalFormat:c})}copyBufferToTexture(e,t){let{gl:n,backend:r}=this,{state:i}=r,{textureGPU:a,glTextureType:o,glFormat:s,glType:c}=r.get(t),{width:l,height:u}=t.source.data;n.bindBuffer(n.PIXEL_UNPACK_BUFFER,e),r.state.bindTexture(o,a),i.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,!1),i.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),n.texSubImage2D(o,0,0,0,l,u,s,c,0),n.bindBuffer(n.PIXEL_UNPACK_BUFFER,null),r.state.unbindTexture()}updateTexture(e,t){let{gl:n}=this,{width:r,height:i}=t,{textureGPU:a,glTextureType:o,glFormat:s,glType:c,glInternalFormat:l}=this.backend.get(e);if(!(e.isRenderTargetTexture||a===void 0)){if(this.backend.state.bindTexture(o,a),this.setTextureParameters(o,e),e.isCompressedTexture){let r=e.mipmaps,i=t.image;for(let t=0;t<r.length;t++){let a=r[t];if(e.isCompressedArrayTexture){if(e.format!==n.RGBA){if(s!==null){if(e.layerUpdates.size>0){let r=ft(a.width,a.height,e.format,e.type);for(let i of e.layerUpdates){let e=a.data.subarray(i*r/a.data.BYTES_PER_ELEMENT,(i+1)*r/a.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,t,0,0,i,a.width,a.height,1,s,e)}}else n.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,t,0,0,0,a.width,a.height,i.depth,s,a.data)}else C(`WebGLBackend: Attempt to load unsupported compressed texture format in .uploadTexture()`)}else n.texSubImage3D(n.TEXTURE_2D_ARRAY,t,0,0,0,a.width,a.height,i.depth,s,c,a.data)}else s===null?C(`WebGLBackend: Unsupported compressed texture format`):n.compressedTexSubImage2D(n.TEXTURE_2D,t,0,0,a.width,a.height,s,a.data)}e.isCompressedArrayTexture&&e.layerUpdates.size>0&&e.clearLayerUpdates()}else if(e.isCubeTexture){let a=t.images,o=e.mipmaps;for(let e=0;e<6;e++){let t=lO(a[e]);n.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,r,i,s,c,t);for(let t=0;t<o.length;t++){let r=o[t],i=lO(r.images[e]);n.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+e,t+1,0,0,i.width,i.height,s,c,i)}}}else if(e.isDataArrayTexture||e.isArrayTexture){let r=t.image;if(e.layerUpdates.size>0){let t=ft(r.width,r.height,e.format,e.type);for(let i of e.layerUpdates){let e=r.data.subarray(i*t/r.data.BYTES_PER_ELEMENT,(i+1)*t/r.data.BYTES_PER_ELEMENT);n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,i,r.width,r.height,1,s,c,e)}e.clearLayerUpdates()}else n.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,r.width,r.height,r.depth,s,c,r.data)}else if(e.isData3DTexture){let e=t.image;n.texSubImage3D(n.TEXTURE_3D,0,0,0,0,e.width,e.height,e.depth,s,c,e.data)}else if(e.isVideoTexture)e.update(),n.texImage2D(o,0,l,s,c,t.image);else if(e.isHTMLTexture)typeof n.texElementImage2D==`function`&&(n.texElementImage2D.length===3?n.texElementImage2D(n.TEXTURE_2D,n.RGBA8,t.image):n.texElementImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,t.image));else{let a=e.mipmaps;if(a.length>0)for(let e=0,t=a.length;e<t;e++){let t=a[e],r=lO(t);n.texSubImage2D(o,e,0,0,t.width,t.height,s,c,r)}else{let e=lO(t.image);n.texSubImage2D(o,0,0,0,r,i,s,c,e)}}}}generateMipmaps(e){let{gl:t,backend:n}=this,{textureGPU:r,glTextureType:i}=n.get(e);n.state.bindTexture(i,r),t.generateMipmap(i)}deallocateRenderBuffers(e){let{gl:t,backend:n}=this;if(e){let r=n.get(e);if(r.renderBufferStorageSetup=void 0,r.framebuffers){for(let e in r.framebuffers)t.deleteFramebuffer(r.framebuffers[e]);delete r.framebuffers}if(r.depthRenderbuffer&&(t.deleteRenderbuffer(r.depthRenderbuffer),delete r.depthRenderbuffer),r.stencilRenderbuffer&&(t.deleteRenderbuffer(r.stencilRenderbuffer),delete r.stencilRenderbuffer),r.msaaFrameBuffer&&(t.deleteFramebuffer(r.msaaFrameBuffer),delete r.msaaFrameBuffer),r.msaaRenderbuffers){for(let e=0;e<r.msaaRenderbuffers.length;e++)t.deleteRenderbuffer(r.msaaRenderbuffers[e]);delete r.msaaRenderbuffers}}}destroyTexture(e,t=!1){let{gl:n,backend:r}=this,{textureGPU:i,renderTarget:a}=r.get(e);this.deallocateRenderBuffers(a),t===!1&&e.isExternalTexture!==!0&&n.deleteTexture(i),r.delete(e)}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){let{gl:o,backend:s}=this,{state:c}=this.backend,{textureGPU:l,glTextureType:u,glType:d,glFormat:f}=s.get(t);c.bindTexture(u,l);let p,m,h,g,_,v,y,b,ee,te=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)p=n.max.x-n.min.x,m=n.max.y-n.min.y,h=n.isBox3?n.max.z-n.min.z:1,g=n.min.x,_=n.min.y,v=n.isBox3?n.min.z:0;else{let t=2**-i;p=Math.floor(te.width*t),m=Math.floor(te.height*t),h=e.isDataArrayTexture||e.isArrayTexture?te.depth:e.isData3DTexture?Math.floor(te.depth*t):1,g=0,_=0,v=0}r===null?(y=0,b=0,ee=0):(y=r.x,b=r.y,ee=r.z),c.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,t.flipY),c.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),c.pixelStorei(o.UNPACK_ALIGNMENT,t.unpackAlignment);let ne=c.getParameter(o.UNPACK_ROW_LENGTH),re=c.getParameter(o.UNPACK_IMAGE_HEIGHT),ie=c.getParameter(o.UNPACK_SKIP_PIXELS),ae=c.getParameter(o.UNPACK_SKIP_ROWS),oe=c.getParameter(o.UNPACK_SKIP_IMAGES);c.pixelStorei(o.UNPACK_ROW_LENGTH,te.width),c.pixelStorei(o.UNPACK_IMAGE_HEIGHT,te.height),c.pixelStorei(o.UNPACK_SKIP_PIXELS,g),c.pixelStorei(o.UNPACK_SKIP_ROWS,_),c.pixelStorei(o.UNPACK_SKIP_IMAGES,v);let se=e.isDataArrayTexture||e.isData3DTexture||t.isArrayTexture,ce=t.isDataArrayTexture||t.isData3DTexture||t.isArrayTexture;if(e.isDepthTexture){let n=s.get(e),r=s.get(t),u=s.get(n.renderTarget),d=s.get(r.renderTarget),f=u.framebuffers[n.cacheKey],te=d.framebuffers[r.cacheKey],ne=c.currentBoundFramebuffers[o.READ_FRAMEBUFFER]??null,re=c.currentBoundFramebuffers[o.DRAW_FRAMEBUFFER]??null;c.bindFramebuffer(o.READ_FRAMEBUFFER,f),c.bindFramebuffer(o.DRAW_FRAMEBUFFER,te);for(let e=0;e<h;e++)se&&(o.framebufferTextureLayer(o.READ_FRAMEBUFFER,o.COLOR_ATTACHMENT0,n.textureGPU,i,v+e),o.framebufferTextureLayer(o.DRAW_FRAMEBUFFER,o.COLOR_ATTACHMENT0,l,a,ee+e)),o.blitFramebuffer(g,_,p,m,y,b,p,m,o.DEPTH_BUFFER_BIT,o.NEAREST);c.bindFramebuffer(o.READ_FRAMEBUFFER,ne),c.bindFramebuffer(o.DRAW_FRAMEBUFFER,re)}else if(i!==0||e.isRenderTargetTexture||s.has(e)){let t=s.get(e);this._srcFramebuffer===null&&(this._srcFramebuffer=o.createFramebuffer()),this._dstFramebuffer===null&&(this._dstFramebuffer=o.createFramebuffer());let n=c.currentBoundFramebuffers[o.READ_FRAMEBUFFER]??null,r=c.currentBoundFramebuffers[o.DRAW_FRAMEBUFFER]??null;c.bindFramebuffer(o.READ_FRAMEBUFFER,this._srcFramebuffer),c.bindFramebuffer(o.DRAW_FRAMEBUFFER,this._dstFramebuffer);for(let e=0;e<h;e++)se?o.framebufferTextureLayer(o.READ_FRAMEBUFFER,o.COLOR_ATTACHMENT0,t.textureGPU,i,v+e):o.framebufferTexture2D(o.READ_FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,t.textureGPU,i),ce?o.framebufferTextureLayer(o.DRAW_FRAMEBUFFER,o.COLOR_ATTACHMENT0,l,a,ee+e):o.framebufferTexture2D(o.DRAW_FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,l,a),i===0?ce?o.copyTexSubImage3D(u,a,y,b,ee+e,g,_,p,m):o.copyTexSubImage2D(u,a,y,b,g,_,p,m):o.blitFramebuffer(g,_,p,m,y,b,p,m,o.COLOR_BUFFER_BIT,o.NEAREST);c.bindFramebuffer(o.READ_FRAMEBUFFER,n),c.bindFramebuffer(o.DRAW_FRAMEBUFFER,r)}else ce?e.isDataTexture||e.isData3DTexture?o.texSubImage3D(u,a,y,b,ee,p,m,h,f,d,te.data):t.isCompressedArrayTexture?o.compressedTexSubImage3D(u,a,y,b,ee,p,m,h,f,te.data):o.texSubImage3D(u,a,y,b,ee,p,m,h,f,d,te):e.isDataTexture?o.texSubImage2D(o.TEXTURE_2D,a,y,b,p,m,f,d,te.data):e.isCompressedTexture?o.compressedTexSubImage2D(o.TEXTURE_2D,a,y,b,te.width,te.height,f,te.data):o.texSubImage2D(o.TEXTURE_2D,a,y,b,p,m,f,d,te);c.pixelStorei(o.UNPACK_ROW_LENGTH,ne),c.pixelStorei(o.UNPACK_IMAGE_HEIGHT,re),c.pixelStorei(o.UNPACK_SKIP_PIXELS,ie),c.pixelStorei(o.UNPACK_SKIP_ROWS,ae),c.pixelStorei(o.UNPACK_SKIP_IMAGES,oe),a===0&&t.generateMipmaps&&o.generateMipmap(u),c.unbindTexture()}copyFramebufferToTexture(e,t,n){let{gl:r}=this,{state:i}=this.backend,{textureGPU:a}=this.backend.get(e),{x:o,y:s,z:c,w:l}=n,u=e.isDepthTexture===!0||t.renderTarget&&t.renderTarget.samples>0,d=t.renderTarget?t.renderTarget.height:this.backend.getDrawingBufferSize().y;if(u){let n=o!==0||s!==0,u,f;if(e.isDepthTexture===!0?(u=r.DEPTH_BUFFER_BIT,f=r.DEPTH_ATTACHMENT,t.stencil&&(u|=r.STENCIL_BUFFER_BIT)):(u=r.COLOR_BUFFER_BIT,f=r.COLOR_ATTACHMENT0),n){let e=this.backend.get(t.renderTarget),n=e.framebuffers[t.getCacheKey()],f=e.msaaFrameBuffer;i.bindFramebuffer(r.DRAW_FRAMEBUFFER,n),i.bindFramebuffer(r.READ_FRAMEBUFFER,f);let p=d-s-l;r.blitFramebuffer(o,p,o+c,p+l,o,p,o+c,p+l,u,r.NEAREST),i.bindFramebuffer(r.READ_FRAMEBUFFER,n),i.bindTexture(r.TEXTURE_2D,a),r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,o,p,c,l),i.unbindTexture()}else{let e=r.createFramebuffer();i.bindFramebuffer(r.DRAW_FRAMEBUFFER,e),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,f,r.TEXTURE_2D,a,0),r.blitFramebuffer(0,0,c,l,0,0,c,l,u,r.NEAREST),r.deleteFramebuffer(e)}}else i.bindTexture(r.TEXTURE_2D,a),r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,o,d-l-s,c,l),i.unbindTexture();e.generateMipmaps&&this.generateMipmaps(e),this.backend._setFramebuffer(t)}setupRenderBufferStorage(e,t,n,r=!1){let{gl:i}=this,a=t.renderTarget,{depthTexture:o,depthBuffer:s,stencilBuffer:c,width:l,height:u}=a;if(i.bindRenderbuffer(i.RENDERBUFFER,e),s&&!c){let t=i.DEPTH_COMPONENT24;r===!0?this.extensions.get(`WEBGL_multisampled_render_to_texture`).renderbufferStorageMultisampleEXT(i.RENDERBUFFER,a.samples,t,l,u):n>0?(o&&o.isDepthTexture&&o.type===i.FLOAT&&(t=i.DEPTH_COMPONENT32F),i.renderbufferStorageMultisample(i.RENDERBUFFER,n,t,l,u)):i.renderbufferStorage(i.RENDERBUFFER,t,l,u),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.RENDERBUFFER,e)}else s&&c&&(n>0?i.renderbufferStorageMultisample(i.RENDERBUFFER,n,i.DEPTH24_STENCIL8,l,u):i.renderbufferStorage(i.RENDERBUFFER,i.DEPTH_STENCIL,l,u),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.RENDERBUFFER,e));i.bindRenderbuffer(i.RENDERBUFFER,null)}async copyTextureToBuffer(e,t,n,r,i,a){let{backend:o,gl:s}=this,{textureGPU:c,glFormat:l,glType:u}=this.backend.get(e),d=s.createFramebuffer();if(o.state.bindFramebuffer(s.READ_FRAMEBUFFER,d),e.isData3DTexture||e.isDataArrayTexture||e.isArrayTexture)s.framebufferTextureLayer(s.READ_FRAMEBUFFER,s.COLOR_ATTACHMENT0,c,0,a);else{let t=e.isCubeTexture?s.TEXTURE_CUBE_MAP_POSITIVE_X+a:s.TEXTURE_2D;s.framebufferTexture2D(s.READ_FRAMEBUFFER,s.COLOR_ATTACHMENT0,t,c,0)}let f=this._getTypedArrayType(u),p=this._getBytesPerTexel(u,l),m=r*i*p,h=s.createBuffer();s.bindBuffer(s.PIXEL_PACK_BUFFER,h),s.bufferData(s.PIXEL_PACK_BUFFER,m,s.STREAM_READ),s.readPixels(t,n,r,i,l,u,0),s.bindBuffer(s.PIXEL_PACK_BUFFER,null),await o.utils._clientWaitAsync();let g=new f(m/f.BYTES_PER_ELEMENT);return s.bindBuffer(s.PIXEL_PACK_BUFFER,h),s.getBufferSubData(s.PIXEL_PACK_BUFFER,0,g),s.bindBuffer(s.PIXEL_PACK_BUFFER,null),o.state.bindFramebuffer(s.READ_FRAMEBUFFER,null),s.deleteBuffer(h),s.deleteFramebuffer(d),g}_getTypedArrayType(e){let{gl:t}=this;if(e===t.UNSIGNED_BYTE)return Uint8Array;if(e===t.UNSIGNED_SHORT_4_4_4_4||e===t.UNSIGNED_SHORT_5_5_5_1||e===t.UNSIGNED_SHORT_5_6_5||e===t.UNSIGNED_SHORT)return Uint16Array;if(e===t.UNSIGNED_INT)return Uint32Array;if(e===t.HALF_FLOAT)return Uint16Array;if(e===t.FLOAT)return Float32Array;throw Error(`THREE.WebGLTextureUtils: Unsupported WebGL type: ${e}`)}_getBytesPerTexel(e,t){let{gl:n}=this,r=0;if(e===n.UNSIGNED_BYTE&&(r=1),(e===n.UNSIGNED_SHORT_4_4_4_4||e===n.UNSIGNED_SHORT_5_5_5_1||e===n.UNSIGNED_SHORT_5_6_5||e===n.UNSIGNED_SHORT||e===n.HALF_FLOAT)&&(r=2),(e===n.UNSIGNED_INT||e===n.FLOAT)&&(r=4),t===n.RGBA)return r*4;if(t===n.RGB)return r*3;if(t===n.ALPHA)return r}dispose(){let{gl:e}=this;this._srcFramebuffer!==null&&e.deleteFramebuffer(this._srcFramebuffer),this._dstFramebuffer!==null&&e.deleteFramebuffer(this._dstFramebuffer)}};function lO(e){return e.isDataTexture?e.image.data:typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas?e:e.data}var uO=class{constructor(e){this.backend=e,this.gl=this.backend.gl,this.availableExtensions=this.gl.getSupportedExtensions(),this.extensions={}}get(e){let t=this.extensions[e];return t===void 0&&(t=this.gl.getExtension(e),this.extensions[e]=t),t}has(e){return this.availableExtensions.includes(e)}},dO=class{constructor(e){this.backend=e,this.maxAnisotropy=null,this.maxUniformBlockSize=null}getMaxAnisotropy(){if(this.maxAnisotropy!==null)return this.maxAnisotropy;let e=this.backend.gl,t=this.backend.extensions;if(t.has(`EXT_texture_filter_anisotropic`)===!0){let n=t.get(`EXT_texture_filter_anisotropic`);this.maxAnisotropy=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else this.maxAnisotropy=0;return this.maxAnisotropy}getUniformBufferLimit(){if(this.maxUniformBlockSize!==null)return this.maxUniformBlockSize;let e=this.backend.gl;return this.maxUniformBlockSize=e.getParameter(e.MAX_UNIFORM_BLOCK_SIZE),this.maxUniformBlockSize}},fO={WEBGL_multi_draw:`WEBGL_multi_draw`,WEBGL_compressed_texture_astc:`texture-compression-astc`,WEBGL_compressed_texture_etc:`texture-compression-etc2`,WEBGL_compressed_texture_etc1:`texture-compression-etc1`,WEBGL_compressed_texture_pvrtc:`texture-compression-pvrtc`,WEBGL_compressed_texture_s3tc:`texture-compression-s3tc`,EXT_texture_compression_bptc:`texture-compression-bc`,EXT_disjoint_timer_query_webgl2:`timestamp-query`,OVR_multiview2:`OVR_multiview2`},pO=class{constructor(e){this.gl=e.gl,this.extensions=e.extensions,this.info=e.renderer.info,this.mode=null,this.index=0,this.type=null,this.object=null}render(e,t){let{gl:n,mode:r,object:i,type:a,info:o,index:s}=this;s===0?n.drawArrays(r,e,t):n.drawElements(r,t,a,e),o.update(i,t,1)}renderInstances(e,t,n){let{gl:r,mode:i,type:a,index:o,object:s,info:c}=this;n!==0&&(o===0?r.drawArraysInstanced(i,e,t,n):r.drawElementsInstanced(i,t,a,e,n),c.update(s,t,n))}renderMultiDraw(e,t,n){let{extensions:r,mode:i,object:a,info:o}=this;if(n===0)return;let s=r.get(`WEBGL_multi_draw`);if(s===null)for(let r=0;r<n;r++)this.render(e[r],t[r]);else{this.index===0?s.multiDrawArraysWEBGL(i,e,0,t,0,n):s.multiDrawElementsWEBGL(i,t,0,this.type,e,0,n);let r=0;for(let e=0;e<n;e++)r+=t[e];o.update(a,r,1)}}},mO=class{constructor(e=256){this.trackTimestamp=!0,this.maxQueries=e,this.currentQueryIndex=0,this.queryOffsets=new Map,this.isDisposed=!1,this.lastValue=0,this.frames=[],this.pendingResolve=!1,this.timestamps=new Map}getTimestampFrames(){return this.frames}getTimestamp(e){let t=this.timestamps.get(e);return t===void 0&&(C(`TimestampQueryPool: No timestamp available for uid ${e}.`),t=0),t}hasTimestampQuery(e){return this.timestamps.has(e)}allocateQueriesForContext(){}async resolveQueriesAsync(){}dispose(){}},hO=class extends mO{constructor(e,t,n=2048){if(super(n),this.gl=e,this.type=t,this.ext=e.getExtension(`EXT_disjoint_timer_query_webgl2`)||e.getExtension(`EXT_disjoint_timer_query`),!this.ext){C(`EXT_disjoint_timer_query not supported; timestamps will be disabled.`),this.trackTimestamp=!1;return}this.queries=[];for(let t=0;t<this.maxQueries;t++)this.queries.push(e.createQuery());this.activeQuery=null,this.queryStates=new Map}allocateQueriesForContext(e){if(!this.trackTimestamp)return null;this.currentQueryIndex+2>this.maxQueries&&(this.resolveQueriesAsync(),this.currentQueryIndex=0,this.queryOffsets.clear(),this.queryStates.clear(),this.activeQuery=null);let t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryStates.set(t,`inactive`),this.queryOffsets.set(e,t),t}beginQuery(e){if(!this.trackTimestamp||this.isDisposed)return;let t=this.queryOffsets.get(e);if(t==null||this.activeQuery!==null)return;let n=this.queries[t];if(n)try{this.queryStates.get(t)===`inactive`&&(this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,n),this.activeQuery=t,this.queryStates.set(t,`started`))}catch(e){S(`Error in beginQuery:`,e),this.activeQuery=null,this.queryStates.set(t,`inactive`)}}endQuery(e){if(!this.trackTimestamp||this.isDisposed)return;let t=this.queryOffsets.get(e);if(t!=null&&this.activeQuery===t)try{this.gl.endQuery(this.ext.TIME_ELAPSED_EXT),this.queryStates.set(t,`ended`),this.activeQuery=null}catch(e){S(`Error in endQuery:`,e),this.queryStates.set(t,`inactive`),this.activeQuery=null}}async resolveQueriesAsync(){if(!this.trackTimestamp||this.pendingResolve)return this.lastValue;this.pendingResolve=!0;try{let e=new Map;for(let[t,n]of this.queryOffsets)if(this.queryStates.get(n)===`ended`){let r=this.queries[n];e.set(t,this.resolveQuery(r))}if(e.size===0)return this.lastValue;let t={},n=[];this.timestamps.clear();for(let[r,i]of e){let e=r.match(/^(.*):f(\d+)$/),a=parseInt(e[2]);n.includes(a)===!1&&n.push(a),t[a]===void 0&&(t[a]=0);let o=await i;this.timestamps.set(r,o),t[a]+=o}let r=t[n[n.length-1]];return this.lastValue=r,this.frames=n,this.currentQueryIndex=0,this.queryOffsets.clear(),this.queryStates.clear(),this.activeQuery=null,r}catch(e){return S(`Error resolving queries:`,e),this.lastValue}finally{this.pendingResolve=!1}}async resolveQuery(e){return new Promise(t=>{if(this.isDisposed){t(this.lastValue);return}let n,r=!1,i=()=>{n&&=(clearTimeout(n),null)},a=e=>{r||(r=!0,i(),t(e))},o=()=>{if(this.isDisposed){a(this.lastValue);return}try{if(this.gl.getParameter(this.ext.GPU_DISJOINT_EXT)){a(this.lastValue);return}if(!this.gl.getQueryParameter(e,this.gl.QUERY_RESULT_AVAILABLE)){n=setTimeout(o,1);return}let r=this.gl.getQueryParameter(e,this.gl.QUERY_RESULT);t(Number(r)/1e6)}catch(e){S(`Error checking query:`,e),t(this.lastValue)}};o()})}dispose(){if(!this.isDisposed&&(this.isDisposed=!0,this.trackTimestamp)){for(let e of this.queries)this.gl.deleteQuery(e);this.queries=[],this.queryStates.clear(),this.queryOffsets.clear(),this.timestamps.clear(),this.frames=[],this.lastValue=0,this.activeQuery=null}}},gO=[],_O=class extends XD{constructor(e={}){super(e),this.isWebGLBackend=!0,this.attributeUtils=null,this.extensions=null,this.capabilities=null,this.textureUtils=null,this.bufferRenderer=null,this.gl=null,this.state=null,this.utils=null,this.vaoCache={},this.transformFeedbackCache={},this.discard=!1,this.disjoint=null,this.parallel=null,this._currentContext=null,this._knownBindings=new WeakSet,this._supportsInvalidateFramebuffer=typeof navigator>`u`?!1:/OculusBrowser/g.test(navigator.userAgent),this._xrFramebuffer=null}init(e){super.init(e);let t=this.parameters,n={antialias:e.currentSamples>0,alpha:!0,depth:e.depth,stencil:e.stencil},r=t.context===void 0?e.domElement.getContext(`webgl2`,n):t.context;function i(t){t.preventDefault();let n={api:`WebGL`,message:t.statusMessage||`Unknown reason`,reason:null,originalEvent:t};e.onDeviceLost(n)}this._onContextLost=i,e.domElement.addEventListener(`webglcontextlost`,i,!1),this.gl=r,this.extensions=new uO(this),this.capabilities=new dO(this),this.attributeUtils=new $D(this),this.textureUtils=new cO(this),this.bufferRenderer=new pO(this),this.state=new nO(this),this.utils=new rO(this),this.extensions.get(`EXT_color_buffer_float`),this.extensions.get(`WEBGL_clip_cull_distance`),this.extensions.get(`OES_texture_float_linear`),this.extensions.get(`EXT_color_buffer_half_float`),this.extensions.get(`WEBGL_multisampled_render_to_texture`),this.extensions.get(`WEBGL_render_shared_exponent`),this.extensions.get(`WEBGL_multi_draw`),this.extensions.get(`OVR_multiview2`),this.extensions.get(`EXT_clip_control`),this.disjoint=this.extensions.get(`EXT_disjoint_timer_query_webgl2`),this.parallel=this.extensions.get(`KHR_parallel_shader_compile`),this.drawBuffersIndexedExt=this.extensions.get(`OES_draw_buffers_indexed`),t.reversedDepthBuffer&&(this.extensions.has(`EXT_clip_control`)?e.reversedDepthBuffer=!0:(C(`WebGPURenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.`),e.reversedDepthBuffer=!1)),e.reversedDepthBuffer&&this.state.setReversedDepth(!0)}get coordinateSystem(){return _}get hasTimestamp(){return this.disjoint!==null}async getArrayBufferAsync(e,t=null,n=0,r=-1){return await this.attributeUtils.getArrayBufferAsync(e,t,n,r)}async makeXRCompatible(){this.gl.getContextAttributes().xrCompatible!==!0&&await this.gl.makeXRCompatible()}setXRTarget(e){this._xrFramebuffer=e}setXRRenderTargetTextures(e,t,n=null){let r=this.gl;if(this.set(e.texture,{textureGPU:t,glInternalFormat:r.RGBA8}),n!==null){let t=e.stencilBuffer?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24;this.set(e.depthTexture,{textureGPU:n,glInternalFormat:t}),this.extensions.has(`WEBGL_multisampled_render_to_texture`)===!0&&e._autoAllocateDepthBuffer===!0&&e.multiview===!1&&C(`WebGLBackend: Render-to-texture extension was disabled because an external texture was provided`),e._autoAllocateDepthBuffer=!1}}initTimestampQuery(e,t){if(!this.disjoint||!this.trackTimestamp)return;this.timestampQueryPool[e]||(this.timestampQueryPool[e]=new hO(this.gl,e,2048));let n=this.timestampQueryPool[e];n.allocateQueriesForContext(t)!==null&&n.beginQuery(t)}prepareTimestampBuffer(e,t){this.disjoint&&this.trackTimestamp&&this.timestampQueryPool[e].endQuery(t)}getContext(){return this.gl}beginRender(e){let{state:t}=this,n=this.get(e);if(e.viewport)this.updateViewport(e);else{let{width:e,height:n}=this.getDrawingBufferSize();t.viewport(0,0,e,n)}if(e.scissor)this.updateScissor(e);else{let{width:e,height:n}=this.getDrawingBufferSize();t.scissor(0,0,e,n)}this.initTimestampQuery(Ot.RENDER,this.getTimestampUID(e)),n.previousContext=this._currentContext,this._currentContext=e,this._setFramebuffer(e),this.clear(e.clearColor,e.clearDepth,e.clearStencil,e,!1);let r=e.occlusionQueryCount;r>0?(n.currentOcclusionQueries=n.occlusionQueries,n.currentOcclusionQueryObjects=n.occlusionQueryObjects,n.lastOcclusionObject=null,n.occlusionQueries=Array(r),n.occlusionQueryObjects=Array(r),n.occlusionQueryIndex=0):n.lastOcclusionObject!==void 0&&(n.lastOcclusionObject=void 0)}finishRender(e){let{gl:t,state:n}=this,r=this.get(e),i=r.previousContext;if(n.resetVertexState(),e.occlusionQueryCount>0){let n=r.lastOcclusionObject;n&&n.occlusionTest===!0&&t.endQuery(t.ANY_SAMPLES_PASSED),this.resolveOccludedAsync(e)}let a=e.textures;if(a!==null)for(let e=0;e<a.length;e++){let t=a[e];t.generateMipmaps&&this.generateMipmaps(t)}if(this._currentContext=i,this._resolveRenderTarget(e),i!==null){if(this._setFramebuffer(i),i.viewport)this.updateViewport(i);else{let{width:e,height:t}=this.getDrawingBufferSize();n.viewport(0,0,e,t)}if(i.scissor)this.updateScissor(i);else{let{width:e,height:t}=this.getDrawingBufferSize();n.scissor(0,0,e,t)}}this.prepareTimestampBuffer(Ot.RENDER,this.getTimestampUID(e))}resolveOccludedAsync(e){let t=this.get(e),{currentOcclusionQueries:n,currentOcclusionQueryObjects:r}=t;if(n&&r){let e=new WeakSet,{gl:i}=this;t.currentOcclusionQueryObjects=null,t.currentOcclusionQueries=null;let a=()=>{let o=!0;for(let t=0;t<n.length;t++){let a=n[t];a&&(i.getQueryParameter(a,i.QUERY_RESULT_AVAILABLE)?(i.getQueryParameter(a,i.QUERY_RESULT)===0&&e.add(r[t]),n[t]=null,i.deleteQuery(a)):o=!1)}o===!1?requestAnimationFrame(a):t.occluded=e};a()}}isOccluded(e,t){let n=this.get(e);return n.occluded&&n.occluded.has(t)}updateViewport(e){let{state:t}=this,{x:n,y:r,width:i,height:a}=e.viewportValue;t.viewport(n,e.height-a-r,i,a)}updateScissor(e){let{state:t}=this,{x:n,y:r,width:i,height:a}=e.scissorValue;t.scissor(n,e.height-a-r,i,a)}setScissorTest(e){this.state.setScissorTest(e)}resetState(){this.state.reset()}getClearColor(){let e=super.getClearColor();return e.r*=e.a,e.g*=e.a,e.b*=e.a,e}clear(e,t,n,r=null,i=!0,a=!0){let{gl:o,renderer:s}=this;r===null&&(r={textures:null,clearColorValue:this.getClearColor()});let c=0;if(e&&(c|=o.COLOR_BUFFER_BIT),t&&(c|=o.DEPTH_BUFFER_BIT),n&&(c|=o.STENCIL_BUFFER_BIT),c!==0){let l;l=r.clearColorValue?r.clearColorValue:this.getClearColor();let u=s.getClearDepth(),d=s.getClearStencil();if(t&&this.state.setDepthMask(!0),n&&this.state.setStencilMask(4294967295),r.textures===null)e&&o.clearColor(l.r,l.g,l.b,l.a),t&&o.clearDepth(u),n&&o.clearStencil(d),o.clear(c);else{if(i&&this._setFramebuffer(r),e)for(let e=0;e<r.textures.length;e++){let t=r.mrt?r.mrt.getClearColor(r.textures[e].name):null;t===null?e===0?o.clearBufferfv(o.COLOR,e,[l.r,l.g,l.b,l.a]):o.clearBufferfv(o.COLOR,e,[0,0,0,1]):o.clearBufferfv(o.COLOR,e,[t.r,t.g,t.b,t.a])}t&&n?o.clearBufferfi(o.DEPTH_STENCIL,0,u,d):t?o.clearBufferfv(o.DEPTH,0,[u]):n&&o.clearBufferiv(o.STENCIL,0,[d]),i&&a&&this._resolveRenderTarget(r),i&&this._currentContext!==null&&this._currentContext!==r&&this._setFramebuffer(this._currentContext)}}}beginCompute(e){let{state:t,gl:n}=this;t.bindFramebuffer(n.FRAMEBUFFER,null),this.initTimestampQuery(Ot.COMPUTE,this.getTimestampUID(e))}compute(e,t,n,r,i=null){let{state:a,gl:o}=this;this.discard===!1&&(a.enable(o.RASTERIZER_DISCARD),this.discard=!0);let{programGPU:s,transformBuffers:c,attributes:l}=this.get(r),u=this._getVaoKey(l),d=this.vaoCache[u];d===void 0?this.vaoCache[u]=this._createVao(l):a.setVertexState(d),a.useProgram(s),this._bindUniforms(n);let f=this._getTransformFeedback(c);o.bindTransformFeedback(o.TRANSFORM_FEEDBACK,f),o.beginTransformFeedback(o.POINTS),i=i===null?t.count:i,Array.isArray(i)?(Wt(`WebGLBackend.compute(): The count parameter must be a single number, not an array.`),i=i[0]):i&&typeof i==`object`&&i.isIndirectStorageBufferAttribute&&(Wt(`WebGLBackend.compute(): The count parameter must be a single number, not IndirectStorageBufferAttribute`),i=t.count),l[0].isStorageInstancedBufferAttribute?o.drawArraysInstanced(o.POINTS,0,1,i):o.drawArrays(o.POINTS,0,i),o.endTransformFeedback(),o.bindTransformFeedback(o.TRANSFORM_FEEDBACK,null);for(let e=0;e<c.length;e++){let t=c[e];t.pbo&&this.has(t.pbo)&&this.textureUtils.copyBufferToTexture(t.transformBuffer,t.pbo),t.switchBuffers()}}finishCompute(e){let{state:t,gl:n}=this;this.discard=!1,t.disable(n.RASTERIZER_DISCARD),this.prepareTimestampBuffer(Ot.COMPUTE,this.getTimestampUID(e)),this._currentContext&&this._setFramebuffer(this._currentContext)}_isRenderCameraDepthArray(e){return e.depthTexture&&e.depthTexture.isArrayTexture&&e.camera.isArrayCamera}_draw(e,t,n,r,i,a){if(e.isBatchedMesh){if(this.hasFeature(`WEBGL_multi_draw`)===!1){let{gl:n}=this,r=n.getUniformLocation(a,`nodeUniformDrawId`),i=e._multiDrawStarts,o=e._multiDrawCounts,s=e._multiDrawCount;for(let e=0;e<s;e++)n.uniform1ui(r,e),t.render(i[e],o[e])}else t.renderMultiDraw(e._multiDrawStarts,e._multiDrawCounts,e._multiDrawCount)}else i>1?t.renderInstances(n,r,i):t.render(n,r)}draw(e){let{object:t,pipeline:n,material:r,context:i,hardwareClippingPlanes:a}=e,{programGPU:o}=this.get(n),{gl:s,state:c}=this,l=this.get(i),u=e.getDrawParameters();if(u===null)return;this._bindUniforms(e.getBindings());let d=t.isMesh&&t.matrixWorld.determinantAffine()<0;c.setMaterial(r,d,a),i.mrt!==null&&i.textures!==null&&c.setMRTBlending(i.textures,i.mrt,r),c.useProgram(o);let f=e.getAttributes(),p=this.get(f),m=p.vaoGPU;if(m===void 0){let e=this._getVaoKey(f);m=this.vaoCache[e],m===void 0&&(m=this._createVao(f),this.vaoCache[e]=m,p.vaoGPU=m)}let h=e.getIndex(),g=h===null?null:this.get(h).bufferGPU;c.setVertexState(m,g);let _=l.lastOcclusionObject;if(_!==t&&_!==void 0){if(_!==null&&_.occlusionTest===!0&&(s.endQuery(s.ANY_SAMPLES_PASSED),l.occlusionQueryIndex++),t.occlusionTest===!0){let e=s.createQuery();s.beginQuery(s.ANY_SAMPLES_PASSED,e),l.occlusionQueries[l.occlusionQueryIndex]=e,l.occlusionQueryObjects[l.occlusionQueryIndex]=t}l.lastOcclusionObject=t}let v=this.bufferRenderer;t.isPoints?v.mode=s.POINTS:t.isLineSegments?v.mode=s.LINES:t.isLine?v.mode=s.LINE_STRIP:t.isLineLoop?v.mode=s.LINE_LOOP:r.wireframe===!0?(c.setLineWidth(r.wireframeLinewidth*this.renderer.getPixelRatio()),v.mode=s.LINES):v.mode=s.TRIANGLES;let{vertexCount:y,instanceCount:b}=u,{firstVertex:ee}=u;if(v.object=t,h!==null){ee*=h.array.BYTES_PER_ELEMENT;let e=this.get(h);v.index=h.count,v.type=e.type}else v.index=0;if(e.camera.isArrayCamera===!0&&e.camera.cameras.length>0&&e.camera.isMultiViewCamera===!1){let n=this.get(e.camera),r=e.camera.cameras,i=e.getBindingGroup(`cameraIndex`).bindings[0];if(n.indexesGPU===void 0||n.indexesGPU.length!==r.length){let e=new Uint32Array([0,0,0,0]),t=[];for(let n=0,i=r.length;n<i;n++){let r=s.createBuffer();e[0]=n,s.bindBuffer(s.UNIFORM_BUFFER,r),s.bufferData(s.UNIFORM_BUFFER,e,s.STATIC_DRAW),t.push(r)}n.indexesGPU=t}let a=0;bindingsSearch:for(let t of e.getBindings())for(let e of t.bindings){if(e===i)break bindingsSearch;(e.isUniformsGroup||e.isUniformBuffer)&&a++}let l=this._currentContext.renderTarget,u=l===null||l.isPostProcessingRenderTarget===!0?this.renderer.getPixelRatio():1,d=this._isRenderCameraDepthArray(this._currentContext),f=this._currentContext.activeCubeFace;if(d){let e=this.get(l.depthTexture);if(e.clearedRenderId!==this.renderer._nodes.nodeFrame.renderId){e.clearedRenderId=this.renderer._nodes.nodeFrame.renderId;let{stencilBuffer:t}=l;for(let e=0,n=r.length;e<n;e++)this.renderer._activeCubeFace=e,this._currentContext.activeCubeFace=e,this._setFramebuffer(this._currentContext),this.clear(!1,!0,t,this._currentContext,!1,!1);this.renderer._activeCubeFace=f,this._currentContext.activeCubeFace=f}}for(let i=0,l=r.length;i<l;i++){let l=r[i];if(t.layers.test(l.layers)){d&&(this.renderer._activeCubeFace=i,this._currentContext.activeCubeFace=i,this._setFramebuffer(this._currentContext));let r=l.viewport;if(r!==void 0){let t=r.x*u,n=r.y*u,i=r.width*u,a=r.height*u;c.viewport(Math.floor(t),Math.floor(e.context.height-a-n),Math.floor(i),Math.floor(a))}c.bindBufferBase(s.UNIFORM_BUFFER,a,n.indexesGPU[i]),this._draw(t,v,ee,y,b,o)}this._currentContext.activeCubeFace=f,this.renderer._activeCubeFace=f}}else this._draw(t,v,ee,y,b,o)}needsRenderUpdate(){return!1}getRenderCacheKey(){return``}createDefaultTexture(e){this.textureUtils.createDefaultTexture(e)}createTexture(e,t){this.textureUtils.createTexture(e,t)}updateTexture(e,t){this.textureUtils.updateTexture(e,t)}generateMipmaps(e){this.textureUtils.generateMipmaps(e)}destroyTexture(e,t=!1){this.textureUtils.destroyTexture(e,t)}async copyTextureToBuffer(e,t,n,r,i,a){return this.textureUtils.copyTextureToBuffer(e,t,n,r,i,a)}updateSampler(){return``}createNodeBuilder(e,t){return new qD(e,t)}createProgram(e){let t=this.gl,{stage:n,code:r}=e,i=n===`fragment`?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);t.shaderSource(i,r),t.compileShader(i),this.set(e,{shaderGPU:i})}destroyProgram(e){this.delete(e)}createRenderPipeline(e,t){let n=this.gl,r=e.pipeline,{fragmentProgram:i,vertexProgram:a}=r,o=n.createProgram(),s=this.get(i).shaderGPU,c=this.get(a).shaderGPU;if(n.attachShader(o,s),n.attachShader(o,c),n.linkProgram(o),this.set(r,{programGPU:o,fragmentShader:s,vertexShader:c}),t!==null&&this.parallel){let i=new Promise(t=>{let i=this.parallel,a=()=>{n.getProgramParameter(o,i.COMPLETION_STATUS_KHR)?(this._completeCompile(e,r),t()):requestAnimationFrame(a)};a()});t.push(i);return}this._completeCompile(e,r)}_handleSource(e,t){let n=e.split(`
206
+ `),r=[],i=Math.max(t-6,0),a=Math.min(t+6,n.length);for(let e=i;e<a;e++){let i=e+1;r.push(`${i===t?`>`:` `} ${i}: ${n[e]}`)}return r.join(`
207
+ `)}_getShaderErrors(e,t,n){let r=e.getShaderParameter(t,e.COMPILE_STATUS),i=(e.getShaderInfoLog(t)||``).trim();if(r&&i===``)return``;let a=/ERROR: 0:(\d+)/.exec(i);if(a){let r=parseInt(a[1]);return n.toUpperCase()+`
208
+
209
+ `+i+`
210
+
211
+ `+this._handleSource(e.getShaderSource(t),r)}return i}_logProgramError(e,t,n){if(this.renderer.debug.checkShaderErrors){let r=this.gl,i=(r.getProgramInfoLog(e)||``).trim();if(r.getProgramParameter(e,r.LINK_STATUS)===!1){if(typeof this.renderer.debug.onShaderError==`function`)this.renderer.debug.onShaderError(r,e,n,t);else{let a=this._getShaderErrors(r,n,`vertex`),o=this._getShaderErrors(r,t,`fragment`);S(`WebGLProgram: Shader Error `+r.getError()+` - VALIDATE_STATUS `+r.getProgramParameter(e,r.VALIDATE_STATUS)+`
212
+
213
+ Program Info Log: `+i+`
214
+ `+a+`
215
+ `+o)}}else i!==``&&C(`WebGLProgram: Program Info Log:`,i)}}_completeCompile(e,t){let{state:n,gl:r}=this,{programGPU:i,fragmentShader:a,vertexShader:o}=this.get(t);r.getProgramParameter(i,r.LINK_STATUS)===!1&&this._logProgramError(i,a,o),n.useProgram(i);let s=e.getBindings();this._setupBindings(s,i),this.set(t,{programGPU:i,pipeline:i})}createComputePipeline(e,t,n=null){let{gl:r}=this,i={stage:`fragment`,code:`#version 300 es
216
+ precision highp float;
217
+ void main() {}`};this.createProgram(i);let{computeProgram:a}=e,o=r.createProgram(),s=this.get(i).shaderGPU,c=this.get(a).shaderGPU,l=a.transforms,u=[],d=[];for(let e=0;e<l.length;e++){let t=l[e];u.push(t.varyingName),d.push(t.attributeNode)}r.attachShader(o,s),r.attachShader(o,c),r.transformFeedbackVaryings(o,u,r.SEPARATE_ATTRIBS),r.linkProgram(o);let f=a.attributes,p=[],m=[];for(let e=0;e<f.length;e++){let t=f[e].node.attribute;p.push(t),this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER)}for(let e=0;e<d.length;e++){let t=d[e].attribute;this.has(t)||this.attributeUtils.createAttribute(t,r.ARRAY_BUFFER);let n=this.get(t);m.push(n)}if(this.set(e,{programGPU:o,fragmentShader:s,vertexShader:c,transformBuffers:m,attributes:p}),n!==null&&this.parallel){let i=this.parallel,a=new Promise(n=>{let a=()=>{r.getProgramParameter(o,i.COMPLETION_STATUS_KHR)?(this._completeComputeCompile(e,t),n()):requestAnimationFrame(a)};a()});n.push(a);return}this._completeComputeCompile(e,t)}_completeComputeCompile(e,t){let{state:n,gl:r}=this,{programGPU:i,fragmentShader:a,vertexShader:o}=this.get(e);r.getProgramParameter(i,r.LINK_STATUS)===!1&&this._logProgramError(i,a,o),n.useProgram(i),this._setupBindings(t,i)}createBindings(e,t){if(this._knownBindings.has(t)===!1){this._knownBindings.add(t);let e=0,n=0;for(let r of t){this.set(r,{textures:n,uniformBuffers:e});for(let t of r.bindings)t.isUniformBuffer&&e++,t.isSampledTexture&&n++}}this.updateBindings(e,t)}updateBindings(e){let{gl:t}=this;for(let n of e.bindings){let e=this.get(n);if(n.isUniformsGroup||n.isUniformBuffer){let r=n.buffer,i=e.bufferGPU;t.bindBuffer(t.UNIFORM_BUFFER,i);let a=n.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,i),a.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=_t(r),n=e?1:r.BYTES_PER_ELEMENT;for(let i=0,o=a.length;i<o;i++){let o=a[i],s=o.start*n,c=o.count*n,l=s*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,l,r,s,c)}}this.set(n,e)}else if(n.isSampledTexture){let{textureGPU:t,glTextureType:r}=this.get(n.texture);e.textureGPU=t,e.glTextureType=r,this.set(n,e)}}}updateBinding(e){let t=this.gl;if(e.isUniformsGroup||e.isUniformBuffer){let n=this.get(e).bufferGPU,r=e.buffer,i=e.updateRanges;if(t.bindBuffer(t.UNIFORM_BUFFER,n),i.length===0)t.bufferData(t.UNIFORM_BUFFER,r,t.DYNAMIC_DRAW);else{let e=_t(r),n=e?1:r.BYTES_PER_ELEMENT,a=i[0].start;for(let o=0,s=i.length;o<s;o++){let s=i[o],c=i[o+1],l=s.start+s.count;if(c!==void 0&&c.start===l)continue;let u=a*n,d=(l-a)*n,f=u*(e?r.BYTES_PER_ELEMENT:1);t.bufferSubData(t.UNIFORM_BUFFER,f,r,u,d),c!==void 0&&(a=c.start)}}}}createUniformBuffer(e){let t=this.get(e);if(t.bufferGPU===void 0){let n=this.gl,r=e.buffer;t.bufferGPU=n.createBuffer(),n.bindBuffer(n.UNIFORM_BUFFER,t.bufferGPU),n.bufferData(n.UNIFORM_BUFFER,r.byteLength,n.DYNAMIC_DRAW)}}destroyUniformBuffer(e){let t=this.get(e);this.gl.deleteBuffer(t.bufferGPU),this.delete(e)}createIndexAttribute(e){let t=this.gl;this.attributeUtils.createAttribute(e,t.ELEMENT_ARRAY_BUFFER)}createAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}createStorageAttribute(e){if(this.has(e))return;let t=this.gl;this.attributeUtils.createAttribute(e,t.ARRAY_BUFFER)}updateAttribute(e){this.attributeUtils.updateAttribute(e)}destroyAttribute(e){this.attributeUtils.destroyAttribute(e)}hasFeature(e){let t=Object.keys(fO).filter(t=>fO[t]===e),n=this.extensions;for(let e=0;e<t.length;e++)if(n.has(t[e]))return!0;return!1}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){this.textureUtils.copyTextureToTexture(e,t,n,r,i,a)}copyFramebufferToTexture(e,t,n){this.textureUtils.copyFramebufferToTexture(e,t,n)}hasCompatibility(e){return e===un.TEXTURE_COMPARE||super.hasCompatibility(e)}initRenderTarget(e){let{gl:t,state:n}=this;this._setFramebuffer(e),n.bindFramebuffer(t.FRAMEBUFFER,null)}_setFramebuffer(e){let{gl:t,state:n}=this,r=null;if(e.textures!==null){let i=e.renderTarget,a=this.get(i),{depthBuffer:o,stencilBuffer:s}=i,c=i.isCubeRenderTarget===!0,l=i.isRenderTarget3D===!0,u=i.depth>1,d=i.isXRRenderTarget===!0,f=d===!0&&i._hasExternalTextures===!0,p=a.msaaFrameBuffer,m=a.depthRenderbuffer,h=this.extensions.get(`WEBGL_multisampled_render_to_texture`),g=this.extensions.get(`OVR_multiview2`),_=this._useMultisampledExtension(i),v=i.samples;e.depthTexture!==null&&e.depthTexture.renderTarget!==i&&_===!1&&v>0&&(Wt(`WebGLBackend: Shared depth texture is not supported with MSAA when "WEBGL_multisampled_render_to_texture" is unsupported. Falling back to single-sample rendering.`),v=0);let y=Z_(e),b;if(c?(a.cubeFramebuffers||={},b=a.cubeFramebuffers[y]):d&&f===!1?b=this._xrFramebuffer:(a.framebuffers||={},b=a.framebuffers[y]),b===void 0){b=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,b);let r=e.textures,o=[];if(c){a.cubeFramebuffers[y]=b;let{textureGPU:e}=this.get(r[0]),n=this.renderer._activeCubeFace,i=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+n,e,i)}else{a.framebuffers[y]=b;for(let n=0;n<r.length;n++){let a=r[n],o=this.get(a);o.renderTarget=e.renderTarget,o.cacheKey=y;let s=t.COLOR_ATTACHMENT0+n;if(i.multiview)g.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,s,o.textureGPU,0,v,0,2);else if(l||u){let e=this.renderer._activeCubeFace,n=this.renderer._activeMipmapLevel;t.framebufferTextureLayer(t.FRAMEBUFFER,s,o.textureGPU,n,e)}else if(_)h.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,s,t.TEXTURE_2D,o.textureGPU,0,v);else{let e=this.renderer._activeMipmapLevel;t.framebufferTexture2D(t.FRAMEBUFFER,s,t.TEXTURE_2D,o.textureGPU,e)}}}let d=s?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let n=t.createRenderbuffer();this.textureUtils.setupRenderBufferStorage(n,e,0,_),a.xrDepthRenderbuffer=n,o.push(s?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT),t.bindRenderbuffer(t.RENDERBUFFER,n),t.framebufferRenderbuffer(t.FRAMEBUFFER,d,t.RENDERBUFFER,n)}else if(e.depthTexture!==null){o.push(s?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT);let n=this.get(e.depthTexture);if(n.renderTarget=e.renderTarget,n.cacheKey=y,i.multiview)g.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,d,n.textureGPU,0,v,0,2);else if(f&&_)h.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,d,t.TEXTURE_2D,n.textureGPU,0,v);else if(e.depthTexture.isArrayTexture){let e=this.renderer._activeCubeFace;t.framebufferTextureLayer(t.FRAMEBUFFER,d,n.textureGPU,0,e)}else if(e.depthTexture.isCubeTexture){let e=this.renderer._activeCubeFace;t.framebufferTexture2D(t.FRAMEBUFFER,d,t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n.textureGPU,0)}else t.framebufferTexture2D(t.FRAMEBUFFER,d,t.TEXTURE_2D,n.textureGPU,0)}a.depthInvalidationArray=o}else{if(this._isRenderCameraDepthArray(e)){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.renderer._activeCubeFace,i=this.get(e.depthTexture),a=s?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.framebufferTextureLayer(t.FRAMEBUFFER,a,i.textureGPU,0,r)}if((d||_||i.multiview)&&i._isOpaqueFramebuffer!==!0){n.bindFramebuffer(t.FRAMEBUFFER,b);let r=this.get(e.textures[0]);i.multiview?g.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,r.textureGPU,0,v,0,2):_?h.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0,v):t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r.textureGPU,0);let o=s?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(i._autoAllocateDepthBuffer===!0){let e=a.xrDepthRenderbuffer;t.bindRenderbuffer(t.RENDERBUFFER,e),t.framebufferRenderbuffer(t.FRAMEBUFFER,o,t.RENDERBUFFER,e)}else{let n=this.get(e.depthTexture);i.multiview?g.framebufferTextureMultisampleMultiviewOVR(t.FRAMEBUFFER,o,n.textureGPU,0,v,0,2):_?h.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,o,t.TEXTURE_2D,n.textureGPU,0,v):t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,n.textureGPU,0)}}}if(v>0&&_===!1&&!i.multiview){if(p===void 0){p=t.createFramebuffer(),n.bindFramebuffer(t.FRAMEBUFFER,p);let r=[],i=e.textures;for(let n=0;n<i.length;n++){r[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,r[n]);let i=e.textures[n],a=this.get(i);t.renderbufferStorageMultisample(t.RENDERBUFFER,v,a.glInternalFormat,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,r[n])}t.bindRenderbuffer(t.RENDERBUFFER,null),a.msaaFrameBuffer=p,a.msaaRenderbuffers=r,o&&m===void 0&&(m=t.createRenderbuffer(),this.textureUtils.setupRenderBufferStorage(m,e,v),a.depthRenderbuffer=m)}r=a.msaaFrameBuffer}else r=b;n.drawBuffers(e,b)}n.bindFramebuffer(t.FRAMEBUFFER,r)}_getVaoKey(e){let t=``;for(let n=0;n<e.length;n++){let r=this.get(e[n]);t+=`:`+r.id}return t}_createVao(e){let{gl:t}=this,n=t.createVertexArray();t.bindVertexArray(n);for(let n=0;n<e.length;n++){let r=e[n],i=this.get(r);t.bindBuffer(t.ARRAY_BUFFER,i.bufferGPU),t.enableVertexAttribArray(n);let a,o;r.isInterleavedBufferAttribute===!0?(a=r.data.stride*i.bytesPerElement,o=r.offset*i.bytesPerElement):(a=0,o=0),i.isInteger?t.vertexAttribIPointer(n,r.itemSize,i.type,a,o):t.vertexAttribPointer(n,r.itemSize,i.type,r.normalized,a,o),r.isInstancedBufferAttribute&&!r.isInterleavedBufferAttribute?t.vertexAttribDivisor(n,r.meshPerAttribute):r.isInterleavedBufferAttribute&&r.data.isInstancedInterleavedBuffer&&t.vertexAttribDivisor(n,r.data.meshPerAttribute)}return t.bindBuffer(t.ARRAY_BUFFER,null),n}_getTransformFeedback(e){let t=``;for(let n=0;n<e.length;n++)t+=`:`+e[n].id;let n=this.transformFeedbackCache[t];if(n!==void 0)return n;let{gl:r}=this;n=r.createTransformFeedback(),r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,n);for(let t=0;t<e.length;t++){let n=e[t];r.bindBufferBase(r.TRANSFORM_FEEDBACK_BUFFER,t,n.transformBuffer)}return r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,null),this.transformFeedbackCache[t]=n,n}_setupBindings(e,t){let n=this.gl,r=0,i=0;for(let a of e)for(let e of a.bindings)if(e.isUniformsGroup||e.isUniformBuffer){let i=r++,a=n.getUniformBlockIndex(t,e.name);n.uniformBlockBinding(t,a,i)}else if(e.isSampledTexture){let r=i++,a=n.getUniformLocation(t,e.name);n.uniform1i(a,r)}}_bindUniforms(e){let{gl:t,state:n}=this,r=0,i=0;for(let a of e)for(let e of a.bindings){let a=this.get(e);if(e.isUniformsGroup||e.isUniformBuffer){let e=r++;n.bindBufferBase(t.UNIFORM_BUFFER,e,a.bufferGPU)}else if(e.isSampledTexture){let e=i++;n.bindTexture(a.glTextureType,a.textureGPU,t.TEXTURE0+e)}}}_resolveRenderTarget(e){let{gl:t,state:n}=this,r=e.renderTarget;if(e.textures!==null&&r){let i=this.get(r);if(r.samples>0&&i.msaaFrameBuffer!==void 0&&this._useMultisampledExtension(r)===!1){let a=i.framebuffers[e.getCacheKey()],o=r.resolveColorBuffer===!1?0:t.COLOR_BUFFER_BIT;r.resolveDepthBuffer&&(r.depthBuffer&&(o|=t.DEPTH_BUFFER_BIT),r.stencilBuffer&&r.resolveStencilBuffer&&(o|=t.STENCIL_BUFFER_BIT));let s=i.msaaFrameBuffer,c=i.msaaRenderbuffers,l=e.textures,u=l.length>1;if(n.bindFramebuffer(t.READ_FRAMEBUFFER,s),n.bindFramebuffer(t.DRAW_FRAMEBUFFER,a),u)for(let e=0;e<l.length;e++)t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);for(let n=0;n<l.length;n++){if(u){let{textureGPU:e}=this.get(l[n]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,c[n]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}if(e.scissor){let{x:n,y:r,width:i,height:a}=e.scissorValue,s=e.height-a-r;t.blitFramebuffer(n,s,n+i,s+a,n,s,n+i,s+a,o,t.NEAREST)}else t.blitFramebuffer(0,0,e.width,e.height,0,0,e.width,e.height,o,t.NEAREST)}if(u)for(let e=0;e<l.length;e++){let{textureGPU:n}=this.get(l[e]);t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,c[e]),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,n,0)}if(this._supportsInvalidateFramebuffer===!0){if(r.storeMultisampledColorBuffer===!1)for(let e=0;e<l.length;e++)gO.push(t.COLOR_ATTACHMENT0+e);r.depthBuffer&&r.storeMultisampledDepthBuffer===!1&&gO.push(r.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT),gO.length>0&&(t.invalidateFramebuffer(t.READ_FRAMEBUFFER,gO),gO.length=0)}}else if(this._supportsInvalidateFramebuffer===!0&&i.framebuffers&&(r._autoAllocateDepthBuffer===!0||r.samples>0&&r.storeMultisampledDepthBuffer===!1)){let r=i.framebuffers[e.getCacheKey()];n.bindFramebuffer(t.DRAW_FRAMEBUFFER,r),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,i.depthInvalidationArray)}}}_useMultisampledExtension(e){return e.multiview===!0||e.samples>0&&this.extensions.has(`WEBGL_multisampled_render_to_texture`)===!0&&e._autoAllocateDepthBuffer!==!1}async dispose(){await super.dispose(),this.textureUtils!==null&&this.textureUtils.dispose();let e=this.extensions.get(`WEBGL_lose_context`);e&&e.loseContext(),this.renderer.domElement.removeEventListener(`webglcontextlost`,this._onContextLost)}},vO={PointList:`point-list`,LineList:`line-list`,LineStrip:`line-strip`,TriangleList:`triangle-list`},yO=typeof self<`u`&&self.GPUShaderStage?self.GPUShaderStage:{VERTEX:1,FRAGMENT:2,COMPUTE:4},bO={Never:`never`,Less:`less`,Equal:`equal`,LessEqual:`less-equal`,Greater:`greater`,NotEqual:`not-equal`,GreaterEqual:`greater-equal`,Always:`always`},xO={Store:`store`,Discard:`discard`},SO={Load:`load`,Clear:`clear`},CO={CCW:`ccw`,CW:`cw`},wO={None:`none`,Back:`back`},TO={Uint16:`uint16`,Uint32:`uint32`},Q={R8Unorm:`r8unorm`,R8Snorm:`r8snorm`,R8Uint:`r8uint`,R8Sint:`r8sint`,R16Uint:`r16uint`,R16Sint:`r16sint`,R16Float:`r16float`,RG8Unorm:`rg8unorm`,RG8Snorm:`rg8snorm`,RG8Uint:`rg8uint`,RG8Sint:`rg8sint`,R16Unorm:`r16unorm`,R16Snorm:`r16snorm`,R32Uint:`r32uint`,R32Sint:`r32sint`,R32Float:`r32float`,RG16Uint:`rg16uint`,RG16Sint:`rg16sint`,RG16Float:`rg16float`,RGBA8Unorm:`rgba8unorm`,RGBA8UnormSRGB:`rgba8unorm-srgb`,RGBA8Snorm:`rgba8snorm`,RGBA8Uint:`rgba8uint`,RGBA8Sint:`rgba8sint`,BGRA8Unorm:`bgra8unorm`,BGRA8UnormSRGB:`bgra8unorm-srgb`,RG16Unorm:`rg16unorm`,RG16Snorm:`rg16snorm`,RGB9E5UFloat:`rgb9e5ufloat`,RGB10A2Unorm:`rgb10a2unorm`,RG11B10UFloat:`rg11b10ufloat`,RG32Uint:`rg32uint`,RG32Sint:`rg32sint`,RG32Float:`rg32float`,RGBA16Uint:`rgba16uint`,RGBA16Sint:`rgba16sint`,RGBA16Float:`rgba16float`,RGBA16Unorm:`rgba16unorm`,RGBA16Snorm:`rgba16snorm`,RGBA32Uint:`rgba32uint`,RGBA32Sint:`rgba32sint`,RGBA32Float:`rgba32float`,Depth16Unorm:`depth16unorm`,Depth24Plus:`depth24plus`,Depth24PlusStencil8:`depth24plus-stencil8`,Depth32Float:`depth32float`,Depth32FloatStencil8:`depth32float-stencil8`,BC1RGBAUnorm:`bc1-rgba-unorm`,BC1RGBAUnormSRGB:`bc1-rgba-unorm-srgb`,BC2RGBAUnorm:`bc2-rgba-unorm`,BC2RGBAUnormSRGB:`bc2-rgba-unorm-srgb`,BC3RGBAUnorm:`bc3-rgba-unorm`,BC3RGBAUnormSRGB:`bc3-rgba-unorm-srgb`,BC4RUnorm:`bc4-r-unorm`,BC4RSnorm:`bc4-r-snorm`,BC5RGUnorm:`bc5-rg-unorm`,BC5RGSnorm:`bc5-rg-snorm`,BC6HRGBUFloat:`bc6h-rgb-ufloat`,BC6HRGBFloat:`bc6h-rgb-float`,BC7RGBAUnorm:`bc7-rgba-unorm`,BC7RGBAUnormSRGB:`bc7-rgba-unorm-srgb`,ETC2RGB8Unorm:`etc2-rgb8unorm`,ETC2RGB8UnormSRGB:`etc2-rgb8unorm-srgb`,ETC2RGB8A1Unorm:`etc2-rgb8a1unorm`,ETC2RGB8A1UnormSRGB:`etc2-rgb8a1unorm-srgb`,ETC2RGBA8Unorm:`etc2-rgba8unorm`,ETC2RGBA8UnormSRGB:`etc2-rgba8unorm-srgb`,EACR11Unorm:`eac-r11unorm`,EACR11Snorm:`eac-r11snorm`,EACRG11Unorm:`eac-rg11unorm`,EACRG11Snorm:`eac-rg11snorm`,ASTC4x4Unorm:`astc-4x4-unorm`,ASTC4x4UnormSRGB:`astc-4x4-unorm-srgb`,ASTC5x4Unorm:`astc-5x4-unorm`,ASTC5x4UnormSRGB:`astc-5x4-unorm-srgb`,ASTC5x5Unorm:`astc-5x5-unorm`,ASTC5x5UnormSRGB:`astc-5x5-unorm-srgb`,ASTC6x5Unorm:`astc-6x5-unorm`,ASTC6x5UnormSRGB:`astc-6x5-unorm-srgb`,ASTC6x6Unorm:`astc-6x6-unorm`,ASTC6x6UnormSRGB:`astc-6x6-unorm-srgb`,ASTC8x5Unorm:`astc-8x5-unorm`,ASTC8x5UnormSRGB:`astc-8x5-unorm-srgb`,ASTC8x6Unorm:`astc-8x6-unorm`,ASTC8x6UnormSRGB:`astc-8x6-unorm-srgb`,ASTC8x8Unorm:`astc-8x8-unorm`,ASTC8x8UnormSRGB:`astc-8x8-unorm-srgb`,ASTC10x5Unorm:`astc-10x5-unorm`,ASTC10x5UnormSRGB:`astc-10x5-unorm-srgb`,ASTC10x6Unorm:`astc-10x6-unorm`,ASTC10x6UnormSRGB:`astc-10x6-unorm-srgb`,ASTC10x8Unorm:`astc-10x8-unorm`,ASTC10x8UnormSRGB:`astc-10x8-unorm-srgb`,ASTC10x10Unorm:`astc-10x10-unorm`,ASTC10x10UnormSRGB:`astc-10x10-unorm-srgb`,ASTC12x10Unorm:`astc-12x10-unorm`,ASTC12x10UnormSRGB:`astc-12x10-unorm-srgb`,ASTC12x12Unorm:`astc-12x12-unorm`,ASTC12x12UnormSRGB:`astc-12x12-unorm-srgb`},EO={ClampToEdge:`clamp-to-edge`,Repeat:`repeat`,MirrorRepeat:`mirror-repeat`},DO={Linear:`linear`,Nearest:`nearest`},$={Zero:`zero`,One:`one`,Src:`src`,OneMinusSrc:`one-minus-src`,SrcAlpha:`src-alpha`,OneMinusSrcAlpha:`one-minus-src-alpha`,Dst:`dst`,OneMinusDst:`one-minus-dst`,DstAlpha:`dst-alpha`,OneMinusDstAlpha:`one-minus-dst-alpha`,SrcAlphaSaturated:`src-alpha-saturated`,Constant:`constant`,OneMinusConstant:`one-minus-constant`},OO={Add:`add`,Subtract:`subtract`,ReverseSubtract:`reverse-subtract`,Min:`min`,Max:`max`},kO={None:0,All:15},AO={Keep:`keep`,Zero:`zero`,Replace:`replace`,Invert:`invert`,IncrementClamp:`increment-clamp`,DecrementClamp:`decrement-clamp`,IncrementWrap:`increment-wrap`,DecrementWrap:`decrement-wrap`},jO={Storage:`storage`,ReadOnlyStorage:`read-only-storage`},MO={WriteOnly:`write-only`,ReadOnly:`read-only`,ReadWrite:`read-write`},NO={NonFiltering:`non-filtering`,Comparison:`comparison`},PO={Float:`float`,UnfilterableFloat:`unfilterable-float`,Depth:`depth`,SInt:`sint`,UInt:`uint`},FO={TwoD:`2d`,ThreeD:`3d`},IO={TwoD:`2d`,TwoDArray:`2d-array`,Cube:`cube`,ThreeD:`3d`},LO={All:`all`},RO={Vertex:`vertex`,Instance:`instance`},zO={CoreFeaturesAndLimits:`core-features-and-limits`,DepthClipControl:`depth-clip-control`,Depth32FloatStencil8:`depth32float-stencil8`,TextureCompressionBC:`texture-compression-bc`,TextureCompressionBCSliced3D:`texture-compression-bc-sliced-3d`,TextureCompressionETC2:`texture-compression-etc2`,TextureCompressionASTC:`texture-compression-astc`,TextureCompressionASTCSliced3D:`texture-compression-astc-sliced-3d`,TimestampQuery:`timestamp-query`,IndirectFirstInstance:`indirect-first-instance`,ShaderF16:`shader-f16`,RG11B10UFloat:`rg11b10ufloat-renderable`,BGRA8UNormStorage:`bgra8unorm-storage`,Float32Filterable:`float32-filterable`,Float32Blendable:`float32-blendable`,ClipDistances:`clip-distances`,DualSourceBlending:`dual-source-blending`,Subgroups:`subgroups`,TextureFormatsTier1:`texture-formats-tier1`,TextureFormatsTier2:`texture-formats-tier2`},BO={"texture-compression-s3tc":`texture-compression-bc`,"texture-compression-etc1":`texture-compression-etc2`},VO=class extends ND{constructor(e,t,n){super(e,t?t.value:null),this.textureNode=t,this.groupNode=n}update(){let{textureNode:e}=this;return this.texture===e.value?super.update():(this.texture=e.value,!0)}},HO=class extends wD{constructor(e,t){super(e,t?t.array:null),this._attribute=t,this.isStorageBuffer=!0}get attribute(){return this._attribute}},UO=0,WO=class extends HO{constructor(e,t){let n=e&&e.name?e.name:UO++;super(`StorageBuffer_`+n,e?e.value:null),this.nodeUniform=e,this.access=e?e.access:or.READ_WRITE,this.groupNode=t}get attribute(){return this.nodeUniform.value}get buffer(){return this.nodeUniform.value.array}},GO=[null],KO=class{constructor(e){this.backend=e,this._preferredCanvasFormat=null}getCurrentDepthStencilFormat(e){let t;return e.depth&&(t=e.depthTexture===null?e.stencil?this.backend.renderer.reversedDepthBuffer===!0?Q.Depth32FloatStencil8:Q.Depth24PlusStencil8:this.backend.renderer.reversedDepthBuffer===!0?Q.Depth32Float:Q.Depth24Plus:this.getTextureFormatGPU(e.depthTexture)),t}getTextureFormatGPU(e){return this.backend.get(e).format}getTextureSampleData(e){let t;if(e.isFramebufferTexture)t=1;else if(e.isDepthTexture&&!e.renderTarget){let n=this.backend.get(e);t=n.texture===void 0?this.backend.renderer.currentSamples:n.texture.sampleCount}else e.renderTarget&&(t=e.renderTarget.samples);t=this.getSampleCount(t||1);let n=t>1&&e.renderTarget!==null&&e.isDepthTexture!==!0&&e.isFramebufferTexture!==!0,r=t>1&&e.renderTarget!==null&&e.isDepthTexture===!0&&e.isArrayTexture===!0;return{samples:t,primarySamples:n||r?1:t,isMSAA:n}}getCurrentColorFormat(e){let t;return t=e.textures===null?this.getPreferredCanvasFormat():this.getTextureFormatGPU(e.textures[0]),t}getCurrentColorFormats(e){return e.textures===null?[this.getPreferredCanvasFormat()]:e.textures.map(e=>this.getTextureFormatGPU(e))}getCurrentColorSpace(e){return e.textures===null?this.backend.renderer.outputColorSpace:e.textures[0].colorSpace}getPrimitiveTopology(e,t){if(e.isPoints)return vO.PointList;if(e.isLineSegments||e.isMesh&&t.wireframe===!0)return vO.LineList;if(e.isLine)return vO.LineStrip;if(e.isMesh)return vO.TriangleList}getSampleCount(e){return e>=4?4:1}getSampleCountRenderContext(e){return e.textures===null?this.getSampleCount(this.backend.renderer.currentSamples):this.getSampleCount(e.sampleCount)}getPreferredCanvasFormat(){let e=this.backend.parameters.outputType;if(e===void 0)return this._preferredCanvasFormat===null&&(this._preferredCanvasFormat=navigator.gpu.getPreferredCanvasFormat()),this._preferredCanvasFormat;if(e===1009)return Q.BGRA8Unorm;if(e===1016)return Q.RGBA16Float;throw Error(`THREE.WebGPUUtils: Unsupported output buffer type.`)}};function qO(e,t){GO[0]=t,e.queue.submit(GO),GO[0]=null}var JO=class{constructor(){this.label=``,this.layout=null,this.entries=[]}reset(){this.label=``,this.layout=null,this.entries.length=0}},YO=class{constructor(){this.label=``,this.size=0,this.usage=0,this.mappedAtCreation=!1}reset(){this.label=``,this.size=0,this.usage=0,this.mappedAtCreation=!1}},XO=class{constructor(){this.label=``}reset(){this.label=``}},ZO=class{constructor(){this.label=``,this.colorFormats=null,this.depthStencilFormat=void 0,this.sampleCount=1,this.depthReadOnly=!1,this.stencilReadOnly=!1}reset(){this.label=``,this.colorFormats=null,this.depthStencilFormat=void 0,this.sampleCount=1,this.depthReadOnly=!1,this.stencilReadOnly=!1}},QO=class{constructor(){this.view=null,this.depthSlice=void 0,this.resolveTarget=void 0,this.clearValue=void 0,this.loadOp=void 0,this.storeOp=void 0}reset(){this.view=null,this.depthSlice=void 0,this.resolveTarget=void 0,this.clearValue=void 0,this.loadOp=void 0,this.storeOp=void 0}},$O=class{constructor(){this.label=``,this.colorAttachments=[],this.depthStencilAttachment=void 0,this.occlusionQuerySet=void 0,this.timestampWrites=void 0,this.maxDrawCount=5e7}reset(){this.label=``,this.colorAttachments.length=0,this.depthStencilAttachment=void 0,this.occlusionQuerySet=void 0,this.timestampWrites=void 0,this.maxDrawCount=5e7}},ek=class{constructor(){this.label=``,this.layout=null,this.vertex=null,this.primitive={},this.depthStencil=void 0,this.multisample=new tk,this.fragment=null}reset(){this.label=``,this.layout=null,this.vertex=null,this.primitive={},this.depthStencil=void 0,this.multisample.reset(),this.fragment=null}},tk=class{constructor(){this.count=1,this.mask=4294967295,this.alphaToCoverageEnabled=!1}reset(){this.count=1,this.mask=4294967295,this.alphaToCoverageEnabled=!1}},nk=class{constructor(){this.label=``,this.code=``,this.compilationHints=[]}reset(){this.label=``,this.code=``,this.compilationHints.length=0}},rk=class{constructor(){this.label=``,this.size={width:0,height:1,depthOrArrayLayers:1},this.mipLevelCount=1,this.sampleCount=1,this.dimension=`2d`,this.format=void 0,this.usage=void 0,this.viewFormats=[],this.textureBindingViewDimension=void 0}reset(){this.label=``,this.size.width=0,this.size.height=1,this.size.depthOrArrayLayers=1,this.mipLevelCount=1,this.sampleCount=1,this.dimension=`2d`,this.format=void 0,this.usage=void 0,this.viewFormats.length=0,this.textureBindingViewDimension=void 0}},ik=class{constructor(){this.label=``,this.format=void 0,this.dimension=void 0,this.usage=0,this.aspect=`all`,this.baseMipLevel=0,this.mipLevelCount=void 0,this.baseArrayLayer=0,this.arrayLayerCount=void 0,this.swizzle=`rgba`}reset(){this.label=``,this.format=void 0,this.dimension=void 0,this.usage=0,this.aspect=`all`,this.baseMipLevel=0,this.mipLevelCount=void 0,this.baseArrayLayer=0,this.arrayLayerCount=void 0,this.swizzle=`rgba`}},ak=new JO,ok=new YO,sk=new XO,ck=new ZO,lk=new $O,uk=new ek,dk=new QO,fk=new nk,pk=new rk,mk=new ik,hk=class extends T_{constructor(e){super(),this.device=e,this.mipmapSampler=e.createSampler({minFilter:DO.Linear}),this.flipYSampler=e.createSampler({minFilter:DO.Nearest}),ok.size=4,ok.usage=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,this.flipUniformBuffer=e.createBuffer(ok),ok.reset(),e.queue.writeBuffer(this.flipUniformBuffer,0,new Uint32Array([1])),ok.size=4,ok.usage=GPUBufferUsage.UNIFORM,this.noFlipUniformBuffer=e.createBuffer(ok),ok.reset(),this.transferPipelines={},fk.label=`mipmap`,fk.code=`
218
+ struct VarysStruct {
219
+ @builtin( position ) Position: vec4f,
220
+ @location( 0 ) vTex : vec2f,
221
+ @location( 1 ) @interpolate(flat, either) vBaseArrayLayer: u32,
222
+ };
223
+
224
+ @group( 0 ) @binding ( 2 )
225
+ var<uniform> flipY: u32;
226
+
227
+ @vertex
228
+ fn mainVS(
229
+ @builtin( vertex_index ) vertexIndex : u32,
230
+ @builtin( instance_index ) instanceIndex : u32 ) -> VarysStruct {
231
+
232
+ var Varys : VarysStruct;
233
+
234
+ var pos = array(
235
+ vec2f( -1, -1 ),
236
+ vec2f( -1, 3 ),
237
+ vec2f( 3, -1 ),
238
+ );
239
+
240
+ let p = pos[ vertexIndex ];
241
+ let mult = select( vec2f( 0.5, -0.5 ), vec2f( 0.5, 0.5 ), flipY != 0 );
242
+ Varys.vTex = p * mult + vec2f( 0.5 );
243
+ Varys.Position = vec4f( p, 0, 1 );
244
+ Varys.vBaseArrayLayer = instanceIndex;
245
+
246
+ return Varys;
247
+
248
+ }
249
+
250
+ @group( 0 ) @binding( 0 )
251
+ var imgSampler : sampler;
252
+
253
+ @group( 0 ) @binding( 1 )
254
+ var img2d : texture_2d<f32>;
255
+
256
+ @fragment
257
+ fn main_2d( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
258
+
259
+ return textureSample( img2d, imgSampler, Varys.vTex );
260
+
261
+ }
262
+
263
+ @group( 0 ) @binding( 1 )
264
+ var img2dArray : texture_2d_array<f32>;
265
+
266
+ @fragment
267
+ fn main_2d_array( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
268
+
269
+ return textureSample( img2dArray, imgSampler, Varys.vTex, Varys.vBaseArrayLayer );
270
+
271
+ }
272
+
273
+ const faceMat = array(
274
+ mat3x3f( 0, 0, -2, 0, -2, 0, 1, 1, 1 ), // pos-x
275
+ mat3x3f( 0, 0, 2, 0, -2, 0, -1, 1, -1 ), // neg-x
276
+ mat3x3f( 2, 0, 0, 0, 0, 2, -1, 1, -1 ), // pos-y
277
+ mat3x3f( 2, 0, 0, 0, 0, -2, -1, -1, 1 ), // neg-y
278
+ mat3x3f( 2, 0, 0, 0, -2, 0, -1, 1, 1 ), // pos-z
279
+ mat3x3f( -2, 0, 0, 0, -2, 0, 1, 1, -1 ), // neg-z
280
+ );
281
+
282
+ @group( 0 ) @binding( 1 )
283
+ var imgCube : texture_cube<f32>;
284
+
285
+ @fragment
286
+ fn main_cube( Varys: VarysStruct ) -> @location( 0 ) vec4<f32> {
287
+
288
+ return textureSample( imgCube, imgSampler, faceMat[ Varys.vBaseArrayLayer ] * vec3f( fract( Varys.vTex ), 1 ) );
289
+
290
+ }
291
+ `,this.mipmapShaderModule=e.createShaderModule(fk),fk.reset()}getTransferPipeline(e,t){t||=`2d-array`;let n=`${e}-${t}`,r=this.transferPipelines[n];return r===void 0&&(uk.label=`mipmap-${e}-${t}`,uk.vertex={module:this.mipmapShaderModule},uk.fragment={module:this.mipmapShaderModule,entryPoint:`main_${t.replace(`-`,`_`)}`,targets:[{format:e}]},uk.layout=`auto`,r=this.device.createRenderPipeline(uk),uk.reset(),this.transferPipelines[n]=r),r}flipY(e,t,n=0){let r=t.format,{width:i,height:a}=t.size;pk.size.width=i,pk.size.height=a,pk.format=r,pk.usage=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING;let o=this.device.createTexture(pk);pk.reset();let s=this.getTransferPipeline(r,e.textureBindingViewDimension),c=this.getTransferPipeline(r,o.textureBindingViewDimension),l=this.device.createCommandEncoder(sk),u=(e,t,n,r,i,a)=>{let o=e.getBindGroupLayout(0);mk.dimension=t.textureBindingViewDimension||`2d-array`,mk.mipLevelCount=1;let s=t.createView(mk);mk.reset(),ak.layout=o,ak.entries.push({binding:0,resource:this.flipYSampler},{binding:1,resource:s},{binding:2,resource:{buffer:a?this.flipUniformBuffer:this.noFlipUniformBuffer}});let c=this.device.createBindGroup(ak);ak.reset(),mk.dimension=`2d`,mk.mipLevelCount=1,mk.baseArrayLayer=i,mk.arrayLayerCount=1;let u=r.createView(mk);mk.reset(),dk.view=u,dk.loadOp=SO.Clear,dk.storeOp=xO.Store,lk.colorAttachments.push(dk);let d=l.beginRenderPass(lk);lk.reset(),dk.reset(),d.setPipeline(e),d.setBindGroup(0,c),d.draw(3,1,0,n),d.end()};u(s,e,n,o,0,!1),u(c,o,0,e,n,!0),qO(this.device,l.finish()),o.destroy()}generateMipmaps(e,t=null){let n=this.get(e),r=n.layers||this._mipmapCreateBundles(e),i=t;i===null&&(sk.label=`mipmapEncoder`,i=this.device.createCommandEncoder(sk),sk.reset()),this._mipmapRunBundles(i,r),t===null&&qO(this.device,i.finish()),n.layers=r}_mipmapCreateBundles(e){let t=e.textureBindingViewDimension||`2d-array`,n=this.getTransferPipeline(e.format,t),r=n.getBindGroupLayout(0),i=[];for(let a=1;a<e.mipLevelCount;a++)for(let o=0;o<e.depthOrArrayLayers;o++){mk.dimension=t,mk.baseMipLevel=a-1,mk.mipLevelCount=1;let s=e.createView(mk);mk.reset(),ak.layout=r,ak.entries.push({binding:0,resource:this.mipmapSampler},{binding:1,resource:s},{binding:2,resource:{buffer:this.noFlipUniformBuffer}});let c=this.device.createBindGroup(ak);ak.reset(),mk.dimension=`2d`,mk.baseMipLevel=a,mk.mipLevelCount=1,mk.baseArrayLayer=o,mk.arrayLayerCount=1;let l=e.createView(mk);mk.reset();let u=new QO;u.view=l,u.loadOp=SO.Clear,u.storeOp=xO.Store;let d=new $O;d.colorAttachments.push(u),ck.colorFormats=[e.format];let f=this.device.createRenderBundleEncoder(ck);ck.reset(),f.setPipeline(n),f.setBindGroup(0,c),f.draw(3,1,0,o),i.push({renderBundles:[f.finish()],passDescriptor:d})}return i}_mipmapRunBundles(e,t){let n=t.length;for(let r=0;r<n;r++){let n=t[r],i=e.beginRenderPass(n.passDescriptor);i.executeBundles(n.renderBundles),i.end()}}},gk=class{constructor(){this.label=``,this.addressModeU=`clamp-to-edge`,this.addressModeV=`clamp-to-edge`,this.addressModeW=`clamp-to-edge`,this.magFilter=`nearest`,this.minFilter=`nearest`,this.mipmapFilter=`nearest`,this.lodMinClamp=0,this.lodMaxClamp=32,this.compare=void 0,this.maxAnisotropy=1}reset(){this.label=``,this.addressModeU=`clamp-to-edge`,this.addressModeV=`clamp-to-edge`,this.addressModeW=`clamp-to-edge`,this.magFilter=`nearest`,this.minFilter=`nearest`,this.mipmapFilter=`nearest`,this.lodMinClamp=0,this.lodMaxClamp=32,this.compare=void 0,this.maxAnisotropy=1}},_k=class{constructor(){this.texture=null,this.mipLevel=0,this.origin={x:0,y:0,z:0},this.aspect=`all`}reset(){this.texture=null,this.mipLevel=0,this.origin.x=0,this.origin.y=0,this.origin.z=0,this.aspect=`all`}},vk=class{constructor(){this.buffer=null,this.offset=0,this.bytesPerRow=void 0,this.rowsPerImage=void 0}reset(){this.buffer=null,this.offset=0,this.bytesPerRow=void 0,this.rowsPerImage=void 0}},yk=class{constructor(){this.offset=0,this.bytesPerRow=void 0,this.rowsPerImage=void 0}reset(){this.offset=0,this.bytesPerRow=void 0,this.rowsPerImage=void 0}},bk=class{constructor(){this.source=null,this.origin={x:0,y:0},this.flipY=!1}reset(){this.source=null,this.origin.x=0,this.origin.y=0,this.flipY=!1}},xk=class extends _k{constructor(){super(),this.colorSpace=`srgb`,this.premultipliedAlpha=!1}reset(){super.reset(),this.colorSpace=`srgb`,this.premultipliedAlpha=!1}},Sk=class{constructor(){this.width=0,this.height=1,this.depthOrArrayLayers=1}reset(){this.width=0,this.height=1,this.depthOrArrayLayers=1}},Ck=new YO,wk=new XO,Tk=new gk,Ek=new _k,Dk=new vk,Ok=new yk,kk=new bk,Ak=new xk,jk=new rk,Mk=new Sk,Nk={512:`never`,513:`less`,514:`equal`,515:`less-equal`,516:`greater`,518:`greater-equal`,519:`always`,517:`not-equal`},Pk=[0,1,3,2,4,5];function Fk(e,t,n,r,i,a,o,s,c,l){Ek.texture=t,Ek.mipLevel=n,Ek.origin.z=r,Ok.offset=r*a,Ok.bytesPerRow=o,Ok.rowsPerImage=s,Mk.width=c,Mk.height=l,e.queue.writeTexture(Ek,i.data,Ok,Mk),Ek.reset(),Ok.reset(),Mk.reset()}var Ik=class{constructor(e){this.backend=e,this._passUtils=null,this.defaultTexture={},this.defaultCubeTexture={},this.defaultVideoFrame=null,this._samplerCache=new Map}updateSampler(e){let t=this.backend,n=e.texture,r=e.textureNode,i=n.isDepthTexture===!0&&n.compareFunction!==null&&r.isSampleCompare()&&t.hasCompatibility(un.TEXTURE_COMPARE),a=n.minFilter+`-`+n.magFilter+`-`+n.wrapS+`-`+n.wrapT+`-`+(n.wrapR||`0`)+`-`+n.anisotropy+`-`+ +(n.isDepthTexture===!0)+`-`+(i?n.compareFunction:0),o=this._samplerCache.get(a);if(o===void 0){Tk.addressModeU=this._convertAddressMode(n.wrapS),Tk.addressModeV=this._convertAddressMode(n.wrapT),Tk.addressModeW=this._convertAddressMode(n.wrapR),Tk.magFilter=this._convertFilterMode(n.magFilter),Tk.minFilter=this._convertFilterMode(n.minFilter),Tk.mipmapFilter=this._convertMipmapFilterMode(n.minFilter),n.isDepthTexture&&i===!1&&(Tk.magFilter=DO.Nearest,Tk.minFilter=DO.Nearest,Tk.mipmapFilter=DO.Nearest),Tk.magFilter===DO.Linear&&Tk.minFilter===DO.Linear&&Tk.mipmapFilter===DO.Linear&&(Tk.maxAnisotropy=n.anisotropy),i&&(Tk.compare=Nk[n.compareFunction]);let e=t.device.createSampler(Tk);Tk.reset(),o={sampler:e,usedTimes:0},this._samplerCache.set(a,o)}let s=t.get(e);return s.sampler!==o.sampler&&(this._releaseSampler(s),s.samplerKey=a,s.sampler=o.sampler,o.usedTimes++),a}destroySampler(e){this._releaseSampler(this.backend.get(e))}_releaseSampler(e){if(e.sampler!==void 0){let t=this._samplerCache.get(e.samplerKey);t.usedTimes--,t.usedTimes===0&&this._samplerCache.delete(e.samplerKey),e.sampler=void 0,e.samplerKey=void 0}}createDefaultTexture(e){let t,n=Lk(e,this.backend.device);t=e.isCubeTexture?this._getDefaultCubeTextureGPU(n):this._getDefaultTextureGPU(n),this.backend.get(e).texture=t}createTexture(e,t={}){let n=this.backend,r=n.get(e);if(r.initialized){if(r.externalTexture===!0)return;throw Error(`THREE.WebGPUTextureUtils: Texture already initialized.`)}if(e.isExternalTexture){r.texture=e.sourceTexture,r.initialized=!0;return}t.needsMipmaps===void 0&&(t.needsMipmaps=!1),t.levels===void 0&&(t.levels=1),t.depth===void 0&&(t.depth=1);let{width:i,height:a,depth:o,levels:s}=t;e.isFramebufferTexture&&(t.format=t.renderTarget?this.backend.utils.getCurrentColorFormat(t.renderTarget):this.backend.utils.getPreferredCanvasFormat());let c=this._getDimension(e),l=e.internalFormat||t.format||Lk(e,n.device);r.format=l;let{samples:u,primarySamples:d,isMSAA:f}=n.utils.getTextureSampleData(e),p=e.renderTarget,m=u>1&&p!==null&&o>1&&c===FO.TwoD,h=GPUTextureUsage.TRANSIENT_ATTACHMENT!==void 0&&m===!1,g=e.isDepthTexture===!0&&h&&p?.storeMultisampledDepthBuffer===!1&&(p.stencilBuffer===!1||p.storeMultisampledStencilBuffer===!1),_=e.isDepthTexture!==!0&&h&&p?.storeMultisampledColorBuffer===!1,v=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC;e.isStorageTexture===!0&&(v|=GPUTextureUsage.STORAGE_BINDING),e.isCompressedTexture!==!0&&e.isCompressedArrayTexture!==!0&&l!==Q.RGB9E5UFloat&&(v|=GPUTextureUsage.RENDER_ATTACHMENT),d>1&&g&&(v=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TRANSIENT_ATTACHMENT);let y=new rk;if(y.label=e.name,y.size.width=i,y.size.height=a,y.size.depthOrArrayLayers=o,y.mipLevelCount=s,y.sampleCount=d,y.dimension=c,y.format=l,y.usage=v,l===void 0){C(`WebGPURenderer: Texture format not supported.`),this.createDefaultTexture(e);return}e.isCubeTexture&&(y.textureBindingViewDimension=IO.Cube);try{r.texture=n.device.createTexture(y)}catch{C(`WebGPURenderer: Failed to create texture with descriptor:`,y),this.createDefaultTexture(e);return}if(f||m){let e=Object.assign({},y);if(e.label+=`-msaa`,e.sampleCount=u,e.mipLevelCount=1,(g||_)&&(e.usage=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TRANSIENT_ATTACHMENT),m){e.size=Object.assign({},e.size,{depthOrArrayLayers:1}),r.msaaTextures=[];for(let t=0;t<o;t++)e.label=y.label+`-msaa-`+t,r.msaaTextures.push(n.device.createTexture(e))}else r.msaaTexture=n.device.createTexture(e)}r.initialized=!0,r.textureDescriptorGPU=y}destroyTexture(e,t=!1){let n=this.backend,r=n.get(e);if(r.texture!==void 0&&t===!1&&e.isExternalTexture!==!0&&r.externalTexture!==!0&&r.texture.destroy(),r.msaaTexture!==void 0&&r.msaaTexture.destroy(),r.msaaTextures!==void 0)for(let e of r.msaaTextures)e.destroy();n.delete(e)}generateMipmaps(e,t=null){let n=this.backend.get(e);this._generateMipmaps(n.texture,t)}getColorBuffer(){let e=this.backend,t=e.renderer.getCanvasTarget(),{width:n,height:r}=e.getDrawingBufferSize(),i=e.renderer.currentSamples,a=t.colorTexture,o=e.get(a);if(a.width===n&&a.height===r&&a.samples===i)return o.texture;let s=o.texture;return s&&s.destroy(),jk.label=`colorBuffer`,jk.size.width=n,jk.size.height=r,jk.sampleCount=e.utils.getSampleCount(e.renderer.currentSamples),jk.format=e.utils.getPreferredCanvasFormat(),jk.usage=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,s=e.device.createTexture(jk),jk.reset(),a.source.width=n,a.source.height=r,a.samples=i,o.texture=s,s}getDepthBuffer(e=!0,t=!1){let n=this.backend,r=n.renderer.getCanvasTarget(),{width:a,height:o}=n.getDrawingBufferSize(),s=n.renderer.currentSamples,l=r.depthTexture;if(l.width===a&&l.height===o&&l.samples===s&&l.depth===e&&l.stencil===t)return n.get(l).texture;let u=n.get(l).texture,d,f;if(t?(d=Je,f=n.renderer.reversedDepthBuffer===!0?Kt:i):e&&(d=c,f=n.renderer.reversedDepthBuffer===!0?Kt:_e),u!==void 0){if(l.image.width===a&&l.image.height===o&&l.format===d&&l.type===f&&l.samples===s)return u;this.destroyTexture(l)}return l.name=`depthBuffer`,l.format=d,l.type=f,l.image.width=a,l.image.height=o,l.samples=s,this.createTexture(l,{width:a,height:o}),n.get(l).texture}updateTexture(e,t){let n=this.backend.get(e),r=e.mipmaps,{textureDescriptorGPU:i}=n;if(!(e.isRenderTargetTexture||i===void 0)){if(e.isDataTexture){if(r.length>0)for(let t=0,a=r.length;t<a;t++){let a=r[t];this._copyBufferToTexture(a,n.texture,i,0,e.flipY,0,t)}else this._copyBufferToTexture(t.image,n.texture,i,0,e.flipY)}else if(e.isArrayTexture||e.isDataArrayTexture||e.isData3DTexture){if(e.layerUpdates&&e.layerUpdates.size>0){for(let r of e.layerUpdates)this._copyBufferToTexture(t.image,n.texture,i,r,e.flipY,r);e.clearLayerUpdates()}else for(let r=0;r<t.image.depth;r++)this._copyBufferToTexture(t.image,n.texture,i,r,e.flipY,r)}else if(e.isCompressedTexture||e.isCompressedArrayTexture)e.isCompressedArrayTexture&&e.layerUpdates.size>0?(this._copyCompressedBufferToTexture(e.mipmaps,n.texture,i,e.layerUpdates),e.clearLayerUpdates()):this._copyCompressedBufferToTexture(e.mipmaps,n.texture,i);else if(e.isCubeTexture)this._copyCubeMapToTexture(e,n.texture,i);else if(e.isHTMLTexture){let t=this.backend.device,r=this.backend.renderer.domElement,a=e.image;if(typeof t.queue.copyElementImageToTexture!=`function`)return;if(!n.hasPaintCallback){n.hasPaintCallback=!0,r.requestPaint();return}let o=i.size.width,s=i.size.height;t.queue.copyElementImageToTexture.length===2?t.queue.copyElementImageToTexture({source:a},{destination:{texture:n.texture},width:o,height:s}):t.queue.copyElementImageToTexture(a,o,s,{texture:n.texture}),e.flipY&&this._flipY(n.texture,i)}else if(r.length>0)for(let t=0,a=r.length;t<a;t++){let a=r[t];this._copyImageToTexture(a,n.texture,i,0,e.flipY,e.premultiplyAlpha,t)}else this._copyImageToTexture(t.image,n.texture,i,0,e.flipY,e.premultiplyAlpha);n.version=e.version}}async copyTextureToBuffer(e,t,n,r,i,a){let o=this.backend.device,s=this.backend.get(e),c=s.texture,l=s.textureDescriptorGPU.format,u=this._getBytesPerTexel(l),d=r*u;d=Math.ceil(d/256)*256,Ck.size=(i-1)*d+r*u,Ck.usage=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ;let f=o.createBuffer(Ck);Ck.reset();let p=o.createCommandEncoder(wk);Ek.texture=c,Ek.origin.x=t,Ek.origin.y=n,Ek.origin.z=a,Dk.buffer=f,Dk.bytesPerRow=d,Mk.width=r,Mk.height=i,p.copyTextureToBuffer(Ek,Dk,Mk),Ek.reset(),Dk.reset(),Mk.reset();let m=this._getTypedArrayType(l);qO(o,p.finish()),await f.mapAsync(GPUMapMode.READ);let h=f.getMappedRange().slice();return f.destroy(),new m(h)}dispose(){this._samplerCache.clear()}_getDefaultTextureGPU(e){let t=this.defaultTexture[e];if(t===void 0){let n=new pn;n.minFilter=Gt,n.magFilter=Gt,this.createTexture(n,{width:1,height:1,format:e}),this.defaultTexture[e]=t=n}return this.backend.get(t).texture}_getDefaultCubeTextureGPU(e){let t=this.defaultCubeTexture[e];if(t===void 0){let n=new Mt;n.minFilter=Gt,n.magFilter=Gt,this.createTexture(n,{width:1,height:1,depth:6}),this.defaultCubeTexture[e]=t=n}return this.backend.get(t).texture}_copyCubeMapToTexture(e,t,n){let r=e.images,i=e.mipmaps;for(let a=0;a<6;a++){let o=r[a],s=e.flipY===!0?Pk[a]:a;o.isDataTexture?this._copyBufferToTexture(o.image,t,n,s,e.flipY):this._copyImageToTexture(o,t,n,s,e.flipY,e.premultiplyAlpha);for(let r=0;r<i.length;r++){let o=i[r].images[a];o.isDataTexture?this._copyBufferToTexture(o.image,t,n,s,e.flipY,0,r+1):this._copyImageToTexture(o,t,n,s,e.flipY,e.premultiplyAlpha,r+1)}}}_copyImageToTexture(e,t,n,r,i,a,o=0){let s=this.backend.device,c=o>0?e.width:n.size.width,l=o>0?e.height:n.size.height;kk.source=e,kk.flipY=i,Ak.texture=t,Ak.mipLevel=o,Ak.origin.z=r,Ak.premultipliedAlpha=a,Mk.width=c,Mk.height=l;try{s.queue.copyExternalImageToTexture(kk,Ak,Mk)}catch{}finally{kk.reset(),Ak.reset(),Mk.reset()}}_getPassUtils(){let e=this._passUtils;return e===null&&(this._passUtils=e=new hk(this.backend.device)),e}_generateMipmaps(e,t=null){this._getPassUtils().generateMipmaps(e,t)}_flipY(e,t,n=0){this._getPassUtils().flipY(e,t,n)}_copyBufferToTexture(e,t,n,r,i,a=0,o=0){let s=this.backend.device,c=e.data,l=this._getBytesPerTexel(n.format),u=e.width*l;Ek.texture=t,Ek.mipLevel=o,Ek.origin.z=r,Ok.offset=e.width*e.height*l*a,Ok.bytesPerRow=u,Mk.width=e.width,Mk.height=e.height,s.queue.writeTexture(Ek,c,Ok,Mk),Ek.reset(),Ok.reset(),Mk.reset(),i===!0&&this._flipY(t,n,r)}_copyCompressedBufferToTexture(e,t,n,r=null){let i=this.backend.device,a=this._getBlockData(n.format),o=n.size.depthOrArrayLayers>1,s=r&&r.size>0?r:null;for(let r=0;r<e.length;r++){let c=e[r],l=c.width,u=c.height,d=o?n.size.depthOrArrayLayers:1,f=Math.ceil(l/a.width)*a.byteLength,p=Math.ceil(u/a.height),m=f*p,h=Math.ceil(l/a.width)*a.width,g=p*a.height;if(s!==null)for(let e of s)Fk(i,t,r,e,c,m,f,p,h,g);else for(let e=0;e<d;e++)Fk(i,t,r,e,c,m,f,p,h,g)}}_getBlockData(e){if(e===Q.BC1RGBAUnorm||e===Q.BC1RGBAUnormSRGB)return{byteLength:8,width:4,height:4};if(e===Q.BC2RGBAUnorm||e===Q.BC2RGBAUnormSRGB||e===Q.BC3RGBAUnorm||e===Q.BC3RGBAUnormSRGB)return{byteLength:16,width:4,height:4};if(e===Q.BC4RUnorm||e===Q.BC4RSnorm)return{byteLength:8,width:4,height:4};if(e===Q.BC5RGUnorm||e===Q.BC5RGSnorm||e===Q.BC6HRGBUFloat||e===Q.BC6HRGBFloat||e===Q.BC7RGBAUnorm||e===Q.BC7RGBAUnormSRGB)return{byteLength:16,width:4,height:4};if(e===Q.ETC2RGB8Unorm||e===Q.ETC2RGB8UnormSRGB||e===Q.ETC2RGB8A1Unorm||e===Q.ETC2RGB8A1UnormSRGB)return{byteLength:8,width:4,height:4};if(e===Q.ETC2RGBA8Unorm||e===Q.ETC2RGBA8UnormSRGB)return{byteLength:16,width:4,height:4};if(e===Q.EACR11Unorm||e===Q.EACR11Snorm)return{byteLength:8,width:4,height:4};if(e===Q.EACRG11Unorm||e===Q.EACRG11Snorm||e===Q.ASTC4x4Unorm||e===Q.ASTC4x4UnormSRGB)return{byteLength:16,width:4,height:4};if(e===Q.ASTC5x4Unorm||e===Q.ASTC5x4UnormSRGB)return{byteLength:16,width:5,height:4};if(e===Q.ASTC5x5Unorm||e===Q.ASTC5x5UnormSRGB)return{byteLength:16,width:5,height:5};if(e===Q.ASTC6x5Unorm||e===Q.ASTC6x5UnormSRGB)return{byteLength:16,width:6,height:5};if(e===Q.ASTC6x6Unorm||e===Q.ASTC6x6UnormSRGB)return{byteLength:16,width:6,height:6};if(e===Q.ASTC8x5Unorm||e===Q.ASTC8x5UnormSRGB)return{byteLength:16,width:8,height:5};if(e===Q.ASTC8x6Unorm||e===Q.ASTC8x6UnormSRGB)return{byteLength:16,width:8,height:6};if(e===Q.ASTC8x8Unorm||e===Q.ASTC8x8UnormSRGB)return{byteLength:16,width:8,height:8};if(e===Q.ASTC10x5Unorm||e===Q.ASTC10x5UnormSRGB)return{byteLength:16,width:10,height:5};if(e===Q.ASTC10x6Unorm||e===Q.ASTC10x6UnormSRGB)return{byteLength:16,width:10,height:6};if(e===Q.ASTC10x8Unorm||e===Q.ASTC10x8UnormSRGB)return{byteLength:16,width:10,height:8};if(e===Q.ASTC10x10Unorm||e===Q.ASTC10x10UnormSRGB)return{byteLength:16,width:10,height:10};if(e===Q.ASTC12x10Unorm||e===Q.ASTC12x10UnormSRGB)return{byteLength:16,width:12,height:10};if(e===Q.ASTC12x12Unorm||e===Q.ASTC12x12UnormSRGB)return{byteLength:16,width:12,height:12}}_convertAddressMode(e){let t=EO.ClampToEdge;return e===1e3?t=EO.Repeat:e===1002&&(t=EO.MirrorRepeat),t}_convertFilterMode(e){let t=DO.Linear;return(e===1003||e===1004||e===1005)&&(t=DO.Nearest),t}_convertMipmapFilterMode(e){return e===1005||e===1008?DO.Linear:DO.Nearest}_getBytesPerTexel(e){if(e===Q.R8Unorm||e===Q.R8Snorm||e===Q.R8Uint||e===Q.R8Sint)return 1;if(e===Q.R16Uint||e===Q.R16Sint||e===Q.R16Float||e===Q.RG8Unorm||e===Q.RG8Snorm||e===Q.RG8Uint||e===Q.RG8Sint||e===Q.R16Unorm||e===Q.R16Snorm)return 2;if(e===Q.R32Uint||e===Q.R32Sint||e===Q.R32Float||e===Q.RG16Uint||e===Q.RG16Sint||e===Q.RG16Float||e===Q.RGBA8Unorm||e===Q.RGBA8UnormSRGB||e===Q.RGBA8Snorm||e===Q.RGBA8Uint||e===Q.RGBA8Sint||e===Q.BGRA8Unorm||e===Q.BGRA8UnormSRGB||e===Q.RG16Unorm||e===Q.RG16Snorm||e===Q.RGB9E5UFloat||e===Q.RGB10A2Unorm||e===Q.RG11B10UFloat||e===Q.Depth32Float||e===Q.Depth24Plus||e===Q.Depth24PlusStencil8||e===Q.Depth32FloatStencil8)return 4;if(e===Q.RG32Uint||e===Q.RG32Sint||e===Q.RG32Float||e===Q.RGBA16Uint||e===Q.RGBA16Sint||e===Q.RGBA16Float||e===Q.RGBA16Unorm||e===Q.RGBA16Snorm)return 8;if(e===Q.RGBA32Uint||e===Q.RGBA32Sint||e===Q.RGBA32Float)return 16}_getTypedArrayType(e){if(e===Q.R8Uint)return Uint8Array;if(e===Q.R8Sint)return Int8Array;if(e===Q.R8Unorm)return Uint8Array;if(e===Q.R8Snorm)return Int8Array;if(e===Q.RG8Uint)return Uint8Array;if(e===Q.RG8Sint)return Int8Array;if(e===Q.RG8Unorm)return Uint8Array;if(e===Q.RG8Snorm)return Int8Array;if(e===Q.RGBA8Uint)return Uint8Array;if(e===Q.RGBA8Sint)return Int8Array;if(e===Q.RGBA8Unorm||e===Q.RGBA8UnormSRGB)return Uint8Array;if(e===Q.RGBA8Snorm)return Int8Array;if(e===Q.R16Uint)return Uint16Array;if(e===Q.R16Sint)return Int16Array;if(e===Q.RG16Uint)return Uint16Array;if(e===Q.RG16Sint)return Int16Array;if(e===Q.RGBA16Uint)return Uint16Array;if(e===Q.RGBA16Sint)return Int16Array;if(e===Q.R16Float||e===Q.RG16Float||e===Q.RGBA16Float||e===Q.R16Unorm)return Uint16Array;if(e===Q.R16Snorm)return Int16Array;if(e===Q.RG16Unorm)return Uint16Array;if(e===Q.RG16Snorm)return Int16Array;if(e===Q.RGBA16Unorm)return Uint16Array;if(e===Q.RGBA16Snorm)return Int16Array;if(e===Q.R32Uint)return Uint32Array;if(e===Q.R32Sint)return Int32Array;if(e===Q.R32Float)return Float32Array;if(e===Q.RG32Uint)return Uint32Array;if(e===Q.RG32Sint)return Int32Array;if(e===Q.RG32Float)return Float32Array;if(e===Q.RGBA32Uint)return Uint32Array;if(e===Q.RGBA32Sint)return Int32Array;if(e===Q.RGBA32Float)return Float32Array;if(e===Q.BGRA8Unorm||e===Q.BGRA8UnormSRGB)return Uint8Array;if(e===Q.RGB10A2Unorm||e===Q.RGB9E5UFloat||e===Q.RG11B10UFloat)return Uint32Array;if(e===Q.Depth32Float)return Float32Array;if(e===Q.Depth24Plus||e===Q.Depth24PlusStencil8)return Uint32Array;if(e===Q.Depth32FloatStencil8)return Float32Array}_getDimension(e){let t;return t=e.is3DTexture||e.isData3DTexture?FO.ThreeD:FO.TwoD,t}};function Lk(t,r){let a=t.format,o=t.type,s=t.normalized,f=t.colorSpace,m=Zt.getTransfer(f),_,y=!1;if(s&&(y=r.features.has(zO.TextureFormatsTier1),y===!1&&C(`WebGPURenderer: Unable to use normalized textures without texture-formats-tier1 feature.`)),t.isCompressedTexture===!0||t.isCompressedArrayTexture===!0)switch(a){case e:case Ge:_=m===`srgb`?Q.BC1RGBAUnormSRGB:Q.BC1RGBAUnorm;break;case v:_=m===`srgb`?Q.BC2RGBAUnormSRGB:Q.BC2RGBAUnorm;break;case Ue:_=m===`srgb`?Q.BC3RGBAUnormSRGB:Q.BC3RGBAUnorm;break;case lt:_=Q.BC4RUnorm;break;case gt:_=Q.BC4RSnorm;break;case At:_=Q.BC5RGUnorm;break;case On:_=Q.BC5RGSnorm;break;case ue:_=m===`srgb`?Q.BC7RGBAUnormSRGB:Q.BC7RGBAUnorm;break;case an:_=Q.BC6HRGBFloat;break;case ie:_=Q.BC6HRGBUFloat;break;case $e:case rt:_=m===`srgb`?Q.ETC2RGB8UnormSRGB:Q.ETC2RGB8Unorm;break;case Pe:_=m===`srgb`?Q.ETC2RGBA8UnormSRGB:Q.ETC2RGBA8Unorm;break;case Ut:_=Q.EACR11Unorm;break;case vn:_=Q.EACR11Snorm;break;case En:_=Q.EACRG11Unorm;break;case Cn:_=Q.EACRG11Snorm;break;case Bt:_=m===`srgb`?Q.ASTC4x4UnormSRGB:Q.ASTC4x4Unorm;break;case n:_=m===`srgb`?Q.ASTC5x4UnormSRGB:Q.ASTC5x4Unorm;break;case It:_=m===`srgb`?Q.ASTC5x5UnormSRGB:Q.ASTC5x5Unorm;break;case he:_=m===`srgb`?Q.ASTC6x5UnormSRGB:Q.ASTC6x5Unorm;break;case ve:_=m===`srgb`?Q.ASTC6x6UnormSRGB:Q.ASTC6x6Unorm;break;case Te:_=m===`srgb`?Q.ASTC8x5UnormSRGB:Q.ASTC8x5Unorm;break;case p:_=m===`srgb`?Q.ASTC8x6UnormSRGB:Q.ASTC8x6Unorm;break;case ee:_=m===`srgb`?Q.ASTC8x8UnormSRGB:Q.ASTC8x8Unorm;break;case bn:_=m===`srgb`?Q.ASTC10x5UnormSRGB:Q.ASTC10x5Unorm;break;case Be:_=m===`srgb`?Q.ASTC10x6UnormSRGB:Q.ASTC10x6Unorm;break;case d:_=m===`srgb`?Q.ASTC10x8UnormSRGB:Q.ASTC10x8Unorm;break;case l:_=m===`srgb`?Q.ASTC10x10UnormSRGB:Q.ASTC10x10Unorm;break;case u:_=m===`srgb`?Q.ASTC12x10UnormSRGB:Q.ASTC12x10Unorm;break;case Se:_=m===`srgb`?Q.ASTC12x12UnormSRGB:Q.ASTC12x12Unorm;break;case Sn:_=m===`srgb`?Q.RGBA8UnormSRGB:Q.RGBA8Unorm;break;default:S(`WebGPURenderer: Unsupported texture format.`,a)}else switch(a){case Sn:switch(o){case He:_=Q.RGBA8Snorm;break;case Rt:_=y?Q.RGBA16Snorm:Q.RGBA16Sint;break;case h:_=y?Q.RGBA16Unorm:Q.RGBA16Uint;break;case _e:_=Q.RGBA32Uint;break;case it:_=Q.RGBA32Sint;break;case we:_=m===`srgb`?Q.RGBA8UnormSRGB:Q.RGBA8Unorm;break;case ye:_=Q.RGBA16Float;break;case Kt:_=Q.RGBA32Float;break;default:S(`WebGPURenderer: Unsupported texture type with RGBAFormat.`,o)}break;case g:switch(o){case zt:_=Q.RGB9E5UFloat;break;case Vt:_=Q.RG11B10UFloat;break;default:S(`WebGPURenderer: Unsupported texture type with RGBFormat.`,o)}break;case fn:switch(o){case He:_=Q.R8Snorm;break;case Rt:_=y?Q.R16Snorm:Q.R16Sint;break;case h:_=y?Q.R16Unorm:Q.R16Uint;break;case _e:_=Q.R32Uint;break;case it:_=Q.R32Sint;break;case we:_=Q.R8Unorm;break;case ye:_=Q.R16Float;break;case Kt:_=Q.R32Float;break;default:S(`WebGPURenderer: Unsupported texture type with RedFormat.`,o)}break;case mn:switch(o){case He:_=Q.RG8Snorm;break;case Rt:_=y?Q.RG16Snorm:Q.RG16Sint;break;case h:_=y?Q.RG16Unorm:Q.RG16Uint;break;case _e:_=Q.RG32Uint;break;case it:_=Q.RG32Sint;break;case we:_=Q.RG8Unorm;break;case ye:_=Q.RG16Float;break;case Kt:_=Q.RG32Float;break;default:S(`WebGPURenderer: Unsupported texture type with RGFormat.`,o)}break;case c:switch(o){case h:_=Q.Depth16Unorm;break;case _e:_=Q.Depth24Plus;break;case Kt:_=Q.Depth32Float;break;default:S(`WebGPURenderer: Unsupported texture type with DepthFormat.`,o)}break;case Je:switch(o){case i:_=Q.Depth24PlusStencil8;break;case Kt:r&&r.features.has(zO.Depth32FloatStencil8)===!1&&S(`WebGPURenderer: Depth textures with DepthStencilFormat + FloatType can only be used with the "depth32float-stencil8" GPU feature.`),_=Q.Depth32FloatStencil8;break;default:S(`WebGPURenderer: Unsupported texture type with DepthStencilFormat.`,o)}break;case bt:switch(o){case it:_=Q.R32Sint;break;case _e:_=Q.R32Uint;break;default:S(`WebGPURenderer: Unsupported texture type with RedIntegerFormat.`,o)}break;case Xt:switch(o){case it:_=Q.RG32Sint;break;case _e:_=Q.RG32Uint;break;default:S(`WebGPURenderer: Unsupported texture type with RGIntegerFormat.`,o)}break;case Ie:switch(o){case it:_=Q.RGBA32Sint;break;case _e:_=Q.RGBA32Uint;break;default:S(`WebGPURenderer: Unsupported texture type with RGBAIntegerFormat.`,o)}break;default:S(`WebGPURenderer: Unsupported texture format.`,a)}return _}var Rk=/^[fn]*\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)\s*[\-\>]*\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/i,zk=/([a-z_0-9]+)\s*:\s*([a-z_0-9]+(?:<[\s\S]+?>)?)/gi,Bk={f32:`float`,i32:`int`,u32:`uint`,bool:`bool`,"vec2<f32>":`vec2`,"vec2<i32>":`ivec2`,"vec2<u32>":`uvec2`,"vec2<bool>":`bvec2`,vec2f:`vec2`,vec2i:`ivec2`,vec2u:`uvec2`,vec2b:`bvec2`,"vec3<f32>":`vec3`,"vec3<i32>":`ivec3`,"vec3<u32>":`uvec3`,"vec3<bool>":`bvec3`,vec3f:`vec3`,vec3i:`ivec3`,vec3u:`uvec3`,vec3b:`bvec3`,"vec4<f32>":`vec4`,"vec4<i32>":`ivec4`,"vec4<u32>":`uvec4`,"vec4<bool>":`bvec4`,vec4f:`vec4`,vec4i:`ivec4`,vec4u:`uvec4`,vec4b:`bvec4`,"mat2x2<f32>":`mat2`,mat2x2f:`mat2`,"mat3x3<f32>":`mat3`,mat3x3f:`mat3`,"mat4x4<f32>":`mat4`,mat4x4f:`mat4`,sampler:`sampler`,sampler_comparison:`samplerComparison`,texture_1d:`texture`,texture_2d:`texture`,texture_2d_array:`texture`,texture_multisampled_2d:`cubeTexture`,texture_depth_2d:`depthTexture`,texture_depth_2d_array:`depthTexture`,texture_depth_multisampled_2d:`depthTexture`,texture_depth_cube:`depthTexture`,texture_depth_cube_array:`depthTexture`,texture_3d:`texture3D`,texture_cube:`cubeTexture`,texture_cube_array:`cubeTexture`,texture_storage_1d:`storageTexture`,texture_storage_2d:`storageTexture`,texture_storage_2d_array:`storageTexture`,texture_storage_3d:`storageTexture`},Vk=e=>{e=e.replace(/^(?:\s*\/\/[^\r\n]*|\s*\/\*[\s\S]*?\*\/|\s*)+/,``);let t=e.match(Rk);if(t!==null&&t.length===4){let n=t[2],r=[],i=null;for(;(i=zk.exec(n))!==null;)r.push({name:i[1],type:i[2]});let a=[];for(let e=0;e<r.length;e++){let{name:t,type:n}=r[e],i=n;i.startsWith(`ptr`)?i=`pointer`:(i.startsWith(`texture`)&&(i=n.split(`<`)[0]),i=Bk[i]),a.push(new yE(i,t))}let o=e.substring(t[0].length),s=t[3]||`void`,c=t[1]===void 0?``:t[1];return{type:Bk[s]||s,inputs:a,name:c,inputsCode:n,blockCode:o,outputType:s}}throw Error(`THREE.WGSLNodeFunction: Function is not a WGSL code.`)},Hk=class extends NE{constructor(e){let{type:t,inputs:n,name:r,inputsCode:i,blockCode:a,outputType:o}=Vk(e);super(t,n,r),this.inputsCode=i,this.blockCode=a,this.outputType=o}getCode(e=this.name){let t=this.outputType===`void`?``:`-> `+this.outputType;return`fn ${e} ( ${this.inputsCode.trim()} ) ${t}`+this.blockCode}},Uk=class extends ME{parseFunction(e){return new Hk(e)}},Wk={[or.READ_ONLY]:`read`,[or.WRITE_ONLY]:`write`,[or.READ_WRITE]:`read_write`},Gk={[nn]:`repeat`,[ke]:`clamp`,[hn]:`mirror`},Kk={vertex:yO.VERTEX,fragment:yO.FRAGMENT,compute:yO.COMPUTE},qk={instance:!0,swizzleAssign:!1,storageBuffer:!0},Jk={"^^":`tsl_xor`},Yk={float:`f32`,int:`i32`,uint:`u32`,bool:`bool`,color:`vec3<f32>`,vec2:`vec2<f32>`,ivec2:`vec2<i32>`,uvec2:`vec2<u32>`,bvec2:`vec2<bool>`,vec3:`vec3<f32>`,ivec3:`vec3<i32>`,uvec3:`vec3<u32>`,bvec3:`vec3<bool>`,vec4:`vec4<f32>`,ivec4:`vec4<i32>`,uvec4:`vec4<u32>`,bvec4:`vec4<bool>`,mat2:`mat2x2<f32>`,mat3:`mat3x3<f32>`,mat4:`mat4x4<f32>`},Xk={},Zk={tsl_xor:new Ax(`fn tsl_xor( a : bool, b : bool ) -> bool { return ( a || b ) && !( a && b ); }`),mod_float:new Ax(`fn tsl_mod_float( x : f32, y : f32 ) -> f32 { return x - y * floor( x / y ); }`),mod_vec2:new Ax(`fn tsl_mod_vec2( x : vec2f, y : vec2f ) -> vec2f { return x - y * floor( x / y ); }`),mod_vec3:new Ax(`fn tsl_mod_vec3( x : vec3f, y : vec3f ) -> vec3f { return x - y * floor( x / y ); }`),mod_vec4:new Ax(`fn tsl_mod_vec4( x : vec4f, y : vec4f ) -> vec4f { return x - y * floor( x / y ); }`),equals_bool:new Ax(`fn tsl_equals_bool( a : bool, b : bool ) -> bool { return a == b; }`),equals_bvec2:new Ax(`fn tsl_equals_bvec2( a : vec2f, b : vec2f ) -> vec2<bool> { return vec2<bool>( a.x == b.x, a.y == b.y ); }`),equals_bvec3:new Ax(`fn tsl_equals_bvec3( a : vec3f, b : vec3f ) -> vec3<bool> { return vec3<bool>( a.x == b.x, a.y == b.y, a.z == b.z ); }`),equals_bvec4:new Ax(`fn tsl_equals_bvec4( a : vec4f, b : vec4f ) -> vec4<bool> { return vec4<bool>( a.x == b.x, a.y == b.y, a.z == b.z, a.w == b.w ); }`),repeatWrapping_float:new Ax(`fn tsl_repeatWrapping_float( coord: f32 ) -> f32 { return fract( coord ); }`),mirrorWrapping_float:new Ax(`fn tsl_mirrorWrapping_float( coord: f32 ) -> f32 { let mirrored = fract( coord * 0.5 ) * 2.0; return 1.0 - abs( 1.0 - mirrored ); }`),clampWrapping_float:new Ax(`fn tsl_clampWrapping_float( coord: f32 ) -> f32 { return clamp( coord, 0.0, 1.0 ); }`),inverse_mat2:new Ax(`
292
+ fn tsl_inverse_mat2( m : mat2x2<f32> ) -> mat2x2<f32> {
293
+
294
+ let det = m[ 0 ][ 0 ] * m[ 1 ][ 1 ] - m[ 0 ][ 1 ] * m[ 1 ][ 0 ];
295
+
296
+ return mat2x2<f32>(
297
+ m[ 1 ][ 1 ], - m[ 0 ][ 1 ],
298
+ - m[ 1 ][ 0 ], m[ 0 ][ 0 ]
299
+ ) * ( 1.0 / det );
300
+
301
+ }
302
+ `),inverse_mat3:new Ax(`
303
+ fn tsl_inverse_mat3( m : mat3x3<f32> ) -> mat3x3<f32> {
304
+
305
+ let a00 = m[ 0 ][ 0 ]; let a01 = m[ 0 ][ 1 ]; let a02 = m[ 0 ][ 2 ];
306
+ let a10 = m[ 1 ][ 0 ]; let a11 = m[ 1 ][ 1 ]; let a12 = m[ 1 ][ 2 ];
307
+ let a20 = m[ 2 ][ 0 ]; let a21 = m[ 2 ][ 1 ]; let a22 = m[ 2 ][ 2 ];
308
+
309
+ let b01 = a22 * a11 - a12 * a21;
310
+ let b11 = - a22 * a10 + a12 * a20;
311
+ let b21 = a21 * a10 - a11 * a20;
312
+
313
+ let det = a00 * b01 + a01 * b11 + a02 * b21;
314
+
315
+ return mat3x3<f32>(
316
+ b01, ( - a22 * a01 + a02 * a21 ), ( a12 * a01 - a02 * a11 ),
317
+ b11, ( a22 * a00 - a02 * a20 ), ( - a12 * a00 + a02 * a10 ),
318
+ b21, ( - a21 * a00 + a01 * a20 ), ( a11 * a00 - a01 * a10 )
319
+ ) * ( 1.0 / det );
320
+
321
+ }
322
+ `),inverse_mat4:new Ax(`
323
+ fn tsl_inverse_mat4( m : mat4x4<f32> ) -> mat4x4<f32> {
324
+
325
+ let a00 = m[ 0 ][ 0 ]; let a01 = m[ 0 ][ 1 ]; let a02 = m[ 0 ][ 2 ]; let a03 = m[ 0 ][ 3 ];
326
+ let a10 = m[ 1 ][ 0 ]; let a11 = m[ 1 ][ 1 ]; let a12 = m[ 1 ][ 2 ]; let a13 = m[ 1 ][ 3 ];
327
+ let a20 = m[ 2 ][ 0 ]; let a21 = m[ 2 ][ 1 ]; let a22 = m[ 2 ][ 2 ]; let a23 = m[ 2 ][ 3 ];
328
+ let a30 = m[ 3 ][ 0 ]; let a31 = m[ 3 ][ 1 ]; let a32 = m[ 3 ][ 2 ]; let a33 = m[ 3 ][ 3 ];
329
+
330
+ let b00 = a00 * a11 - a01 * a10;
331
+ let b01 = a00 * a12 - a02 * a10;
332
+ let b02 = a00 * a13 - a03 * a10;
333
+ let b03 = a01 * a12 - a02 * a11;
334
+ let b04 = a01 * a13 - a03 * a11;
335
+ let b05 = a02 * a13 - a03 * a12;
336
+ let b06 = a20 * a31 - a21 * a30;
337
+ let b07 = a20 * a32 - a22 * a30;
338
+ let b08 = a20 * a33 - a23 * a30;
339
+ let b09 = a21 * a32 - a22 * a31;
340
+ let b10 = a21 * a33 - a23 * a31;
341
+ let b11 = a22 * a33 - a23 * a32;
342
+
343
+ let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
344
+
345
+ return mat4x4<f32>(
346
+ a11 * b11 - a12 * b10 + a13 * b09,
347
+ a02 * b10 - a01 * b11 - a03 * b09,
348
+ a31 * b05 - a32 * b04 + a33 * b03,
349
+ a22 * b04 - a21 * b05 - a23 * b03,
350
+ a12 * b08 - a10 * b11 - a13 * b07,
351
+ a00 * b11 - a02 * b08 + a03 * b07,
352
+ a32 * b02 - a30 * b05 - a33 * b01,
353
+ a20 * b05 - a22 * b02 + a23 * b01,
354
+ a10 * b10 - a11 * b08 + a13 * b06,
355
+ a01 * b08 - a00 * b10 - a03 * b06,
356
+ a30 * b04 - a31 * b02 + a33 * b00,
357
+ a21 * b02 - a20 * b04 - a23 * b00,
358
+ a11 * b07 - a10 * b09 - a12 * b06,
359
+ a00 * b09 - a01 * b07 + a02 * b06,
360
+ a31 * b01 - a30 * b03 - a32 * b00,
361
+ a20 * b03 - a21 * b01 + a22 * b00
362
+ ) * ( 1.0 / det );
363
+
364
+ }
365
+ `),biquadraticTexture:new Ax(`
366
+ fn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, iRes : vec2u, level : u32 ) -> vec4f {
367
+
368
+ let res = vec2f( iRes );
369
+
370
+ let uvScaled = coord * res;
371
+ let uvWrapping = ( ( uvScaled % res ) + res ) % res;
372
+
373
+ // https://www.shadertoy.com/view/WtyXRy
374
+
375
+ let uv = uvWrapping - 0.5;
376
+ let iuv = floor( uv );
377
+ let f = fract( uv );
378
+
379
+ let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, level );
380
+ let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, level );
381
+ let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, level );
382
+ let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, level );
383
+
384
+ return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
385
+
386
+ }
387
+ `),biquadraticTextureArray:new Ax(`
388
+ fn tsl_biquadraticTexture_array( map : texture_2d_array<f32>, coord : vec2f, iRes : vec2u, layer : u32, level : u32 ) -> vec4f {
389
+
390
+ let res = vec2f( iRes );
391
+
392
+ let uvScaled = coord * res;
393
+ let uvWrapping = ( ( uvScaled % res ) + res ) % res;
394
+
395
+ // https://www.shadertoy.com/view/WtyXRy
396
+
397
+ let uv = uvWrapping - 0.5;
398
+ let iuv = floor( uv );
399
+ let f = fract( uv );
400
+
401
+ let rg1 = textureLoad( map, vec2u( iuv + vec2( 0.5, 0.5 ) ) % iRes, layer, level );
402
+ let rg2 = textureLoad( map, vec2u( iuv + vec2( 1.5, 0.5 ) ) % iRes, layer, level );
403
+ let rg3 = textureLoad( map, vec2u( iuv + vec2( 0.5, 1.5 ) ) % iRes, layer, level );
404
+ let rg4 = textureLoad( map, vec2u( iuv + vec2( 1.5, 1.5 ) ) % iRes, layer, level );
405
+
406
+ return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
407
+
408
+ }
409
+ `)},Qk={dFdx:`dpdx`,dFdy:`- dpdy`,mod_float:`tsl_mod_float`,mod_vec2:`tsl_mod_vec2`,mod_vec3:`tsl_mod_vec3`,mod_vec4:`tsl_mod_vec4`,equals_bool:`tsl_equals_bool`,equals_bvec2:`tsl_equals_bvec2`,equals_bvec3:`tsl_equals_bvec3`,equals_bvec4:`tsl_equals_bvec4`,inverse_mat2:`tsl_inverse_mat2`,inverse_mat3:`tsl_inverse_mat3`,inverse_mat4:`tsl_inverse_mat4`,inversesqrt:`inverseSqrt`,faceforward:`faceForward`,bitcast:`bitcast<f32>`,floatpack_snorm_2x16:`pack2x16snorm`,floatpack_unorm_2x16:`pack2x16unorm`,floatpack_float16_2x16:`pack2x16float`,floatpack_snorm_4x8:`pack4x8snorm`,floatpack_unorm_4x8:`pack4x8unorm`,floatunpack_snorm_2x16:`unpack2x16snorm`,floatunpack_unorm_2x16:`unpack2x16unorm`,floatunpack_float16_2x16:`unpack2x16float`,floatunpack_snorm_4x8:`unpack4x8snorm`,floatunpack_unorm_4x8:`unpack4x8unorm`},$k=new Set(`alias.break.case.const.const_assert.continue.continuing.default.diagnostic.discard.else.enable.false.fn.for.if.let.loop.override.requires.return.struct.switch.true.var.while.NULL.Self.abstract.active.alignas.alignof.as.asm.asm_fragment.async.attribute.auto.await.become.binding_array.cast.catch.class.co_await.co_return.co_yield.coherent.column_major.common.compile.compile_fragment.concept.const_cast.consteval.constexpr.constinit.crate.debugger.decltype.delete.demote.demote_to_helper.do.dynamic_cast.enum.explicit.export.extends.extern.external.fallthrough.filter.final.finally.friend.from.fxgroup.get.goto.groupshared.highp.impl.implements.import.inline.instanceof.interface.layout.lowp.macro.macro_rules.match.mediump.meta.mod.module.move.mut.mutable.namespace.new.nil.noexcept.noinline.nointerpolation.non_coherent.noncoherent.noperspective.null.nullptr.of.operator.package.packoffset.partition.pass.patch.pixelfragment.precise.precision.premerge.priv.protected.pub.public.readonly.ref.regardless.register.reinterpret_cast.require.resource.restrict.self.set.shared.sizeof.smooth.snorm.static.static_assert.static_cast.std.subroutine.super.target.template.this.thread_local.throw.trait.try.type.typedef.typeid.typename.typeof.union.unless.unorm.unsafe.unsized.use.using.varying.virtual.volatile.wgsl.where.with.writeonly.yield.main`.split(`.`)),eA=``;(typeof navigator<`u`&&/Firefox|Deno/g.test(navigator.userAgent))!==!0&&(eA+=`diagnostic( off, derivative_uniformity );
410
+ `);var tA=class extends _E{constructor(e,t){super(e,t,new Uk),this.uniformGroups={},this.uniformGroupsBindings={},this.builtins={},this.directives={},this.scopedArrays=new Map,this.allowEarlyReturns=!0,this.allowGlobalVariables=!0}_generateTextureSample(e,t,n,r,i,a=this.shaderStage){return a===`fragment`?r?i?`textureSample( ${t}, ${t}_sampler, ${n}, ${r}, ${i} )`:`textureSample( ${t}, ${t}_sampler, ${n}, ${r} )`:i?`textureSample( ${t}, ${t}_sampler, ${n}, ${i} )`:`textureSample( ${t}, ${t}_sampler, ${n} )`:this.generateTextureSampleLevel(e,t,n,`0`,r)}generateTextureSampleLevel(e,t,n,r,i,a){return this.isUnfilterable(e)===!1?i?a?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${r}, ${a} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${r} )`:a?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,a,r,i):this.generateTextureLod(e,t,n,i,a,r)}generateWrapFunction(e){let t=`tsl_coord_${Gk[e.wrapS]}S_${Gk[e.wrapT]}T_${e.is3DTexture||e.isData3DTexture?`3d`:`2d`}`,n=Xk[t];if(n===void 0){let r=[],i=e.is3DTexture||e.isData3DTexture?`vec3f`:`vec2f`,a=`fn ${t}( coord : ${i} ) -> ${i} {\n\n\treturn ${i}(\n`,o=(e,t)=>{e===1e3?(r.push(Zk.repeatWrapping_float),a+=`\t\ttsl_repeatWrapping_float( coord.${t} )`):e===1001?(r.push(Zk.clampWrapping_float),a+=`\t\ttsl_clampWrapping_float( coord.${t} )`):e===1002?(r.push(Zk.mirrorWrapping_float),a+=`\t\ttsl_mirrorWrapping_float( coord.${t} )`):(a+=`\t\tcoord.${t}`,C(`WebGPURenderer: Unsupported texture wrap type "${e}" for vertex shader.`))};o(e.wrapS,`x`),a+=`,
411
+ `,o(e.wrapT,`y`),(e.is3DTexture||e.isData3DTexture)&&(a+=`,
412
+ `,o(e.wrapR,`z`)),a+=`
413
+ );
414
+
415
+ }
416
+ `,Xk[t]=n=new Ax(a,r)}return n.build(this),t}generateArrayDeclaration(e,t){return`array< ${this.getType(e)}, ${t} >`}generateTextureDimension(e,t,n){let r=this.getDataFromNode(e,this.shaderStage,this.cache);r.dimensionsSnippet===void 0&&(r.dimensionsSnippet={});let i=r.dimensionsSnippet[n];if(r.dimensionsSnippet[n]===void 0){let a,o,{primarySamples:s}=this.renderer.backend.utils.getTextureSampleData(e),c=s>1;o=e.is3DTexture||e.isData3DTexture?`vec3<u32>`:`vec2<u32>`,a=c||e.isStorageTexture?t:`${t}${n?`, u32( ${n} )`:``}`,i=new ws(new xc(`textureDimensions( ${a} )`,o)),r.dimensionsSnippet[n]=i,(e.isArrayTexture||e.isDataArrayTexture||e.is3DTexture||e.isData3DTexture)&&(r.arrayLayerCount=new ws(new xc(`textureNumLayers(${t})`,`u32`))),e.isTextureCube&&(r.cubeFaceCount=new ws(new xc(`6u`,`u32`)))}return i.build(this)}generateTextureSize(e,t,n){let{primarySamples:r}=this.renderer.backend.utils.getTextureSampleData(e);return`textureDimensions( ${r>1||e.isStorageTexture?t:`${t}, ${n}`} )`}generateFilteredTexture(e,t,n,r,i=`0u`,a){let o=this.generateWrapFunction(e),s=this.generateTextureDimension(e,t,i);return r&&(n=`${n} + vec2<f32>(${r}) / ${s}`),a?(this._include(`biquadraticTextureArray`),`tsl_biquadraticTexture_array( ${t}, ${o}( ${n} ), ${s}, u32( ${a} ), u32( ${i} ) )`):(this._include(`biquadraticTexture`),`tsl_biquadraticTexture( ${t}, ${o}( ${n} ), ${s}, u32( ${i} ) )`)}generateTextureLod(e,t,n,r,i,a=`0u`){if(e.isCubeTexture===!0){i&&(n=`${n} + vec3<f32>(${i})`);let r=e.isDepthTexture?`u32`:`f32`;return`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r}( ${a} ) )`}let o=this.generateWrapFunction(e),s=this.generateTextureDimension(e,t,a),c=e.is3DTexture||e.isData3DTexture?`vec3`:`vec2`,l=c===`vec3`?`vec3<u32>( 1, 1, 1 )`:`vec2<u32>( 1, 1 )`;i&&(n=`${n} + ${c}<f32>(${i}) / ${c}<f32>( ${s} )`);let u=`${c}<f32>( 0 )`,d=`${c}<f32>( ${s} - ${l} )`;return n=`${c}<u32>( clamp( floor( ${o}( ${n} ) * ${c}<f32>( ${s} ) ), ${u}, ${d} ) )`,this.generateTextureLoad(e,t,n,a,r,null)}generateStorageTextureLoad(e,t,n,r,i,a){a&&(n=`${n} + ${a}`);let o;return o=i?`textureLoad( ${t}, ${n}, ${i} )`:`textureLoad( ${t}, ${n} )`,o}generateTextureLoad(e,t,n,r,i,a){r===null&&(r=`0u`),a&&(n=`${n} + ${a}`);let o;return i?o=`textureLoad( ${t}, ${n}, ${i}, u32( ${r} ) )`:(o=`textureLoad( ${t}, ${n}, u32( ${r} ) )`,this.renderer.backend.compatibilityMode&&e.isDepthTexture&&(o+=`.x`)),o}generateTextureStore(e,t,n,r,i){let a;return a=r?`textureStore( ${t}, ${n}, ${r}, ${i} )`:`textureStore( ${t}, ${n}, ${i} )`,a}isSampleCompare(e){return e.isDepthTexture===!0&&e.compareFunction!==null&&this.renderer.hasCompatibility(un.TEXTURE_COMPARE)}isUnfilterable(e){return this.getComponentTypeFromTexture(e)!==`float`||!this.isAvailable(`float32Filterable`)&&e.type===1015||this.isSampleCompare(e)===!1&&e.minFilter===1003&&e.magFilter===1003||this.renderer.backend.utils.getTextureSampleData(e).primarySamples>1||e.normalized===!0&&(e.type===1011||e.type===1012)}generateTexture(e,t,n,r,i,a=this.shaderStage){let o=null;return o=this.isUnfilterable(e)?this.generateTextureLod(e,t,n,r,i,`0`,a):this._generateTextureSample(e,t,n,r,i,a),o}generateTextureGrad(e,t,n,r,i,a,o=this.shaderStage){if(o===`fragment`)return i?a?`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${i}, ${r[0]}, ${r[1]}, ${a} )`:`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${i}, ${r[0]}, ${r[1]} )`:a?`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${r[0]}, ${r[1]}, ${a} )`:`textureSampleGrad( ${t}, ${t}_sampler, ${n}, ${r[0]}, ${r[1]} )`;S(`WebGPURenderer: THREE.TextureNode.gradient() does not support ${o} shader.`)}generateTextureCompare(e,t,n,r,i,a,o=this.shaderStage){if(o===`fragment`)return e.isDepthTexture===!0&&e.isArrayTexture===!0?a?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${i}, ${r}, ${a} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${i}, ${r} )`:a?`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureSampleCompare( ${t}, ${t}_sampler, ${n}, ${r} )`;S(`WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${o} shader.`)}generateTextureGather(e,t,n,r,i,a){let o=e.isDepthTexture===!0?``:`${r}, `;return i?a?`textureGather( ${o}${t}, ${t}_sampler, ${n}, ${i}, ${a} )`:`textureGather( ${o}${t}, ${t}_sampler, ${n}, ${i} )`:a?`textureGather( ${o}${t}, ${t}_sampler, ${n}, ${a} )`:`textureGather( ${o}${t}, ${t}_sampler, ${n})`}generateTextureGatherCompare(e,t,n,r,i,a){return i?a?`textureGatherCompare( ${t}, ${t}_sampler, ${n}, ${i}, ${r}, ${a} )`:`textureGatherCompare( ${t}, ${t}_sampler, ${n}, ${i}, ${r})`:a?`textureGatherCompare( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureGatherCompare( ${t}, ${t}_sampler, ${n}, ${r})`}generateTextureLevel(e,t,n,r,i,a){return this.isUnfilterable(e)===!1?i?a?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${r}, ${a} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${i}, ${r} )`:a?`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureSampleLevel( ${t}, ${t}_sampler, ${n}, ${r} )`:this.isFilteredTexture(e)?this.generateFilteredTexture(e,t,n,a,r,i):this.generateTextureLod(e,t,n,i,a,r)}generateTextureBias(e,t,n,r,i,a,o=this.shaderStage){if(o===`fragment`)return i?a?`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${i}, ${r}, ${a} )`:`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${i}, ${r} )`:a?`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${r}, ${a} )`:`textureSampleBias( ${t}, ${t}_sampler, ${n}, ${r} )`;S(`WebGPURenderer: THREE.TextureNode.biasNode does not support ${o} shader.`)}getPropertyName(e,t=this.shaderStage){if(e.isNodeVarying===!0&&e.needsInterpolation===!0){if(t===`vertex`)return`varyings.${e.name}`}else if(e.isNodeUniform===!0){let t=e.name,n=e.type;return n===`texture`||n===`cubeTexture`||n===`cubeDepthTexture`||n===`storageTexture`||n===`texture3D`?t:n===`buffer`||n===`storageBuffer`||n===`indirectStorageBuffer`?this.isCustomStruct(e)?t:t+`.value`:e.groupNode.name+`.`+t}return super.getPropertyName(e)}isReservedKeyword(e){return $k.has(e)}getOutputStructName(){return`output`}getFunctionOperator(e){let t=Jk[e];return t===void 0?null:(this._include(t),t)}getNodeAccess(e,t){return t===`compute`?e.access:e.isAtomic===!0?t===`vertex`?(C(`WebGPURenderer: Atomic operations are not supported in the vertex stage. They are only available in the fragment and compute stages.`),or.READ_ONLY):or.READ_WRITE:or.READ_ONLY}getStorageAccess(e,t){return Wk[this.getNodeAccess(e,t)]}getUniformFromNode(e,t,n,r=null){let i=super.getUniformFromNode(e,t,n,r),a=this.getDataFromNode(e,n,this.globalCache);if(a.uniformGPU===void 0){let o,s=e.groupNode,c=s.name,l=this.getBindGroupArray(c,n);if(t===`texture`||t===`cubeTexture`||t===`cubeDepthTexture`||t===`storageTexture`||t===`texture3D`){let r=null,a=this.getNodeAccess(e,n);if(t===`texture`||t===`storageTexture`?r=e.value.is3DTexture===!0?new RD(i.name,i.node,s,a):new ID(i.name,i.node,s,a):t===`cubeTexture`||t===`cubeDepthTexture`?r=new LD(i.name,i.node,s,a):t===`texture3D`&&(r=new RD(i.name,i.node,s,a)),r.store=e.isStorageTextureNode===!0,r.mipLevel=r.store?e.mipLevel:0,r.setVisibility(Kk[n]),e.value.isCubeTexture===!0||this.isUnfilterable(e.value)===!1&&r.store===!1||e.gatherNode!==null){let e=new VO(`${i.name}_sampler`,i.node,s);e.setVisibility(Kk[n]),l.push(e,r),o=[e,r]}else l.push(r),o=[r]}else if(t===`buffer`||t===`storageBuffer`||t===`indirectStorageBuffer`){let a=this.getSharedDataFromNode(e),c=a.buffer;c===void 0&&(c=new(t===`buffer`?DD:WO)(e,s),a.buffer=c),c.setVisibility(c.getVisibility()|Kk[n]),l.push(c),o=c,i.name=r||`NodeBuffer_`+i.id}else{let e=this.uniformGroups[c];e===void 0&&(e=new MD(c,s),e.setVisibility(yO.VERTEX|yO.FRAGMENT|yO.COMPUTE),this.uniformGroups[c]=e),l.indexOf(e)===-1&&l.push(e),o=this.getNodeUniform(i,t);let n=o.name;e.uniforms.some(e=>e.name===n)||e.addUniform(o)}a.uniformGPU=o}return i}getBuiltin(e,t,n,r=this.shaderStage){let i=this.builtins[r]||(this.builtins[r]=new Map);return i.has(e)===!1&&i.set(e,{name:e,property:t,type:n}),t}hasBuiltin(e,t=this.shaderStage){return this.builtins[t]!==void 0&&this.builtins[t].has(e)}getVertexIndex(){return this.shaderStage===`vertex`?this.getBuiltin(`vertex_index`,`vertexIndex`,`u32`,`attribute`):`vertexIndex`}buildFunctionCode(e){let t=e.layout,n=this.flowShaderNode(e),r=[];for(let e of t.inputs)r.push(e.name+` : `+this.getType(e.type));let i=`fn ${t.name}( ${r.join(`, `)} ) -> ${this.getType(t.type)} {
417
+ ${n.vars}
418
+ ${n.code}
419
+ `;return n.result&&(i+=`\treturn ${n.result};\n`),i+=`
420
+ }
421
+ `,i}getInstanceIndex(){return this.shaderStage===`vertex`?this.getBuiltin(`instance_index`,`instanceIndex`,`u32`,`attribute`):`instanceIndex`}getInvocationLocalIndex(){return this.getBuiltin(`local_invocation_index`,`invocationLocalIndex`,`u32`,`attribute`)}getSubgroupSize(){return this.enableSubGroups(),this.getBuiltin(`subgroup_size`,`subgroupSize`,`u32`,`attribute`)}getInvocationSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin(`subgroup_invocation_id`,`invocationSubgroupIndex`,`u32`,`attribute`)}getSubgroupIndex(){return this.enableSubGroups(),this.getBuiltin(`subgroup_id`,`subgroupIndex`,`u32`,`attribute`)}getDrawIndex(){return null}getFrontFacing(){return this.getBuiltin(`front_facing`,`isFront`,`bool`)}getFragCoord(){return this.getBuiltin(`position`,`fragCoord`,`vec4<f32>`)+`.xy`}getFragDepth(){return`output.`+this.getBuiltin(`frag_depth`,`depth`,`f32`,`output`)}getClipDistance(){return`varyings.hw_clip_distances`}isFlipY(){return!1}enableDirective(e,t=this.shaderStage){(this.directives[t]||(this.directives[t]=new Set)).add(e)}getDirectives(e){let t=[],n=this.directives[e];if(n!==void 0)for(let e of n)t.push(`enable ${e};`);return t.join(`
422
+ `)}enableSubGroups(){this.enableDirective(`subgroups`)}enableSubgroupsF16(){this.enableDirective(`subgroups-f16`)}enableClipDistances(){this.enableDirective(`clip_distances`)}enableShaderF16(){this.enableDirective(`f16`)}enableDualSourceBlending(){this.enableDirective(`dual_source_blending`)}enableHardwareClipping(e){this.enableClipDistances(),this.getBuiltin(`clip_distances`,`hw_clip_distances`,`array<f32, ${e} >`,`vertex`)}getBuiltins(e){let t=[],n=this.builtins[e];if(n!==void 0)for(let{name:e,property:r,type:i}of n.values())t.push(`@builtin( ${e} ) ${r} : ${i}`);return t.join(`,
423
+ `)}getScopedArray(e,t,n,r,i){return this.scopedArrays.has(e)===!1&&this.scopedArrays.set(e,{name:e,scope:t,bufferType:n,bufferCount:r,isAtomic:i}),e}getScopedArrays(e){if(e!==`compute`)return;let t=[];for(let{name:e,scope:n,bufferType:r,bufferCount:i,isAtomic:a}of this.scopedArrays.values()){let o=this.getType(r);a===!0&&(o=`atomic<${o}>`),t.push(`var<${n}> ${e}: array< ${o}, ${i} >;`)}return t.join(`
424
+ `)}getAttributes(e){let t=[];if(e===`compute`&&(this.getBuiltin(`global_invocation_id`,`globalId`,`vec3<u32>`,`attribute`),this.getBuiltin(`workgroup_id`,`workgroupId`,`vec3<u32>`,`attribute`),this.getBuiltin(`local_invocation_id`,`localId`,`vec3<u32>`,`attribute`),this.getBuiltin(`num_workgroups`,`numWorkgroups`,`vec3<u32>`,`attribute`),this.renderer.hasFeature(`subgroups`)&&(this.enableDirective(`subgroups`,e),this.getBuiltin(`subgroup_size`,`subgroupSize`,`u32`,`attribute`))),e===`vertex`||e===`compute`){let e=this.getBuiltins(`attribute`);e&&t.push(e);let n=this.getAttributesArray();for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=this.getType(r.type);t.push(`@location( ${e} ) ${i} : ${a}`)}}return t.join(`,
425
+ `)}getStructMembers(e){let t=[];for(let n of e.members){let r=e.output?`@location( `+n.index+` ) `:``,i=this.getType(n.type);n.atomic&&(i=`atomic< `+i+` >`),t.push(`\t${r+n.name} : ${i}`)}return e.output&&t.push(`\t${this.getBuiltins(`output`)}`),t.join(`,
426
+ `)}getStructs(e){let t=``,n=this.structs[e];if(n.length>0){let e=[];for(let t of n){let n=`struct ${t.name} {\n`;n+=this.getStructMembers(t),n+=`
427
+ };`,e.push(n)}t=`
428
+ `+e.join(`
429
+
430
+ `)+`
431
+ `}return t}getVar(e,t,n=null,r=``){let i=`var${r} ${t} : `;return i+=n===null?this.getType(e):this.generateArrayDeclaration(e,n),i}getVars(e,t=!1){let n=``;t&&(n=`<private>`);let r=[],i=this.vars[e];if(i!==void 0)for(let e of i)r.push(`${this.getVar(e.type,e.name,e.count,n)};`);return t?r.join(`
432
+ `):`\n\t${r.join(`
433
+ `)}\n`}getVaryings(e){let t=[];if(e===`vertex`&&this.getBuiltin(`position`,`builtinClipSpace`,`vec4<f32>`,`vertex`),e===`vertex`||e===`fragment`){let n=this.varyings,r=this.vars[e],i=0;for(let a=0;a<n.length;a++){let o=n[a];if(o.needsInterpolation){let e=`@location( ${i++} )`;if(o.interpolationType){let t=o.interpolationSampling===null?` )`:`, ${o.interpolationSampling} )`;e+=` @interpolate( ${o.interpolationType}${t}`}else/^(int|uint|ivec|uvec)/.test(o.type)&&(e+=` @interpolate(flat, either)`);t.push(`${e} ${o.name} : ${this.getType(o.type)}`)}else e===`vertex`&&r.includes(o)===!1&&r.push(o)}}let n=this.getBuiltins(e);n&&t.push(n);let r=t.join(`,
434
+ `);return e===`vertex`?this._getWGSLStruct(`VaryingsStruct`,` `+r):r}isCustomStruct(e){let t=e.value,n=e.node,r=(t.isBufferAttribute||t.isInstancedBufferAttribute)&&n.structTypeNode!==null,i=n.value&&n.value.array&&typeof n.value.itemSize==`number`&&n.value.array.length>n.value.itemSize;return r&&!i}getUniforms(e){let t=this.renderer.backend,n=this.uniforms[e],r=[],i=[],a=[],o={};for(let a of n){let n=a.groupNode.name,s=this.bindingsIndexes[n];if(a.type===`texture`||a.type===`cubeTexture`||a.type===`cubeDepthTexture`||a.type===`storageTexture`||a.type===`texture3D`){let n=a.node,i=n.value;(i.isCubeTexture===!0||this.isUnfilterable(i)===!1&&n.isStorageTextureNode!==!0||n.gatherNode!==null)&&(this.isSampleCompare(i)&&n.isSampleCompare()?r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name}_sampler : sampler_comparison;`):r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name}_sampler : sampler;`));let o,c=``,{primarySamples:l}=t.utils.getTextureSampleData(i);if(l>1&&(c=`_multisampled`),i.isCubeTexture===!0&&i.isDepthTexture===!0)o=`texture_depth_cube`;else if(i.isCubeTexture===!0)o=`texture_cube<f32>`;else if(i.isDepthTexture===!0)o=t.compatibilityMode&&i.compareFunction===null?`texture${c}_2d<f32>`:`texture_depth${c}_2d${i.isArrayTexture===!0?`_array`:``}`;else if(a.node.isStorageTextureNode===!0){let n=Lk(i,t.device),r=this.getStorageAccess(a.node,e),s=a.node.value.is3DTexture,c=a.node.value.isArrayTexture;o=`texture_storage_${s?`3d`:`2d${c?`_array`:``}`}<${n}, ${r}>`}else if(i.isArrayTexture===!0||i.isDataArrayTexture===!0||i.isCompressedArrayTexture===!0)o=`texture_2d_array<${this.getComponentTypeFromTexture(i).charAt(0)}32>`;else if(i.is3DTexture===!0||i.isData3DTexture===!0)o=`texture_3d<${this.getComponentTypeFromTexture(i).charAt(0)}32>`;else{let e=this.getComponentTypeFromTexture(i).charAt(0);o=`texture${c}_2d<${e}32>`}r.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var ${a.name} : ${o};`)}else if(a.type===`buffer`||a.type===`storageBuffer`||a.type===`indirectStorageBuffer`){let t=a.node,n=this.getType(t.getNodeType(this)),r=t.bufferCount,o=r>0&&a.type===`buffer`?`, `+r:``,c=t.isStorageBufferNode?`storage, ${this.getStorageAccess(t,e)}`:`uniform`;if(this.isCustomStruct(a))i.push(`@binding( ${s.binding++} ) @group( ${s.group} ) var<${c}> ${a.name} : ${n};`);else{let e=`\tvalue : array< ${t.isAtomic?`atomic<${n}>`:`${n}`}${o} >`;i.push(this._getWGSLStructBinding(a.name,e,c,s.binding++,s.group))}}else{let e=a.groupNode.name;if(o[e]===void 0){let t=this.uniformGroups[e];if(t!==void 0){let n=[];for(let e of t.uniforms){let t=e.getType(),r=this.getType(this.getVectorType(t));n.push(`\t${e.name} : ${r}`)}let r=this.uniformGroupsBindings[e];r===void 0&&(r={index:s.binding++,id:s.group},this.uniformGroupsBindings[e]=r),o[e]={index:r.index,id:r.id,snippets:n}}}}}for(let e in o){let t=o[e];a.push(this._getWGSLStructBinding(e,t.snippets.join(`,
435
+ `),`uniform`,t.index,t.id))}return[...r,...i,...a].join(`
436
+ `)}buildCode(){let e=this.material===null?{compute:{}}:{fragment:{},vertex:{}};this.sortBindingGroups();for(let t in e){this.shaderStage=t;let n=this.allowGlobalVariables,r=e[t];r.uniforms=this.getUniforms(t),r.attributes=this.getAttributes(t),r.varyings=this.getVaryings(t),r.structs=this.getStructs(t),r.vars=this.getVars(t,n),r.codes=this.getCodes(t),r.directives=this.getDirectives(t),r.scopedArrays=this.getScopedArrays(t);let i=`// code
437
+
438
+ `;i+=this.flowCode[t];let a=this.flowNodes[t],o=a[a.length-1],s=o.outputNode,c=s!==void 0&&s.isOutputStructNode===!0;for(let e of a){let n=this.getFlowData(e),a=e.name;if(a&&(i.length>0&&(i+=`
439
+ `),i+=`\t// flow -> ${a}\n`),i+=`${n.code}\n\t`,e===o&&t!==`compute`){if(i+=`// result
440
+
441
+ `,t===`vertex`)i+=`varyings.builtinClipSpace = ${n.result};`;else if(t===`fragment`){if(c)r.returnType=s.getNodeType(this),r.structs+=`var<private> output : `+r.returnType+`;`,i+=`return ${n.result};`;else{let e=`\t@location( 0 ) color: ${this.getType(this.getOutputType())}`,t=this.getBuiltins(`output`);t&&(e+=`,
442
+ `+t),r.returnType=`OutputStruct`,r.structs+=this._getWGSLStruct(`OutputStruct`,e),r.structs+=`
443
+ var<private> output : OutputStruct;`,i+=`output.color = ${this.format(n.result,o.getNodeType(this),this.getOutputType())};\n\n\treturn output;`}}}}r.flow=i}if(this.shaderStage=null,this.material!==null)this.vertexShader=this._getWGSLVertexCode(e.vertex),this.fragmentShader=this._getWGSLFragmentCode(e.fragment);else{let t=this.compute.workgroupSize;this.computeShader=this._getWGSLComputeCode(e.compute,t)}}getMethod(e,t=null){let n;return t!==null&&(n=this._getWGSLMethod(e+`_`+t)),n===void 0&&(n=this._getWGSLMethod(e)),n||e}getBitcastMethod(e){return`bitcast<${this.getType(e)}>`}getFloatPackingMethod(e,t=`2x16`){return this.getMethod(`floatpack_${e}_${t}`)}getFloatUnpackingMethod(e,t=`2x16`){return this.getMethod(`floatunpack_${e}_${t}`)}getTernary(e,t,n){return`select( ${n}, ${t}, ${e} )`}getType(e){return Yk[e]||e}isAvailable(e){let t=qk[e];return t===void 0&&(e===`float32Filterable`?t=this.renderer.hasFeature(`float32-filterable`):e===`clipDistance`&&(t=this.renderer.hasFeature(`clip-distances`)),qk[e]=t),t}_getWGSLMethod(e){return Zk[e]!==void 0&&this._include(e),Qk[e]}_include(e){let t=Zk[e];return t.build(this),this.addInclude(t),t}_getWGSLVertexCode(e){return`${this.getSignature()}
444
+ // directives
445
+ ${e.directives}
446
+
447
+ // structs
448
+ ${e.structs}
449
+
450
+ // uniforms
451
+ ${e.uniforms}
452
+
453
+ // varyings
454
+ ${e.varyings}
455
+ var<private> varyings : VaryingsStruct;
456
+
457
+ // vars
458
+ ${e.vars}
459
+
460
+ // codes
461
+ ${e.codes}
462
+
463
+ @vertex
464
+ fn main( ${e.attributes} ) -> VaryingsStruct {
465
+
466
+ // flow
467
+ ${e.flow}
468
+
469
+ return varyings;
470
+
471
+ }
472
+ `}_getWGSLFragmentCode(e){return`${this.getSignature()}
473
+ // global
474
+ ${eA}
475
+
476
+ // structs
477
+ ${e.structs}
478
+
479
+ // uniforms
480
+ ${e.uniforms}
481
+
482
+ // vars
483
+ ${e.vars}
484
+
485
+ // codes
486
+ ${e.codes}
487
+
488
+ @fragment
489
+ fn main( ${e.varyings} ) -> ${e.returnType} {
490
+
491
+ // flow
492
+ ${e.flow}
493
+
494
+ }
495
+ `}_getWGSLComputeCode(e,t){let[n,r,i]=t;return`${this.getSignature()}
496
+ // directives
497
+ ${e.directives}
498
+
499
+ // system
500
+ var<private> instanceIndex : u32;
501
+
502
+ // locals
503
+ ${e.scopedArrays}
504
+
505
+ // structs
506
+ ${e.structs}
507
+
508
+ // uniforms
509
+ ${e.uniforms}
510
+
511
+ // vars
512
+ ${this.allowGlobalVariables?e.vars:``}
513
+
514
+ // codes
515
+ ${e.codes}
516
+
517
+ @compute @workgroup_size( ${n}, ${r}, ${i} )
518
+ fn main( ${e.attributes} ) {
519
+
520
+ // local vars
521
+ ${this.allowGlobalVariables?``:e.vars}
522
+
523
+ // system
524
+ instanceIndex = globalId.x
525
+ + globalId.y * ( ${n} * numWorkgroups.x )
526
+ + globalId.z * ( ${n} * numWorkgroups.x ) * ( ${r} * numWorkgroups.y );
527
+
528
+ // flow
529
+ ${e.flow}
530
+
531
+ }
532
+ `}_getWGSLStruct(e,t){return`
533
+ struct ${e} {
534
+ ${t}
535
+ };`}_getWGSLStructBinding(e,t,n,r=0,i=0){let a=e+`Struct`;return`${this._getWGSLStruct(a,t)}
536
+ @binding( ${r} ) @group( ${i} )
537
+ var<${n}> ${e} : ${a};`}},nA=new YO,rA=new XO,iA=new Map([[Int8Array,[`sint8`,`snorm8`]],[Uint8Array,[`uint8`,`unorm8`]],[Int16Array,[`sint16`,`snorm16`]],[Uint16Array,[`uint16`,`unorm16`]],[Int32Array,[`sint32`]],[Uint32Array,[`uint32`]],[Float32Array,[`float32`]]]);typeof Float16Array<`u`&&iA.set(Float16Array,[`float16`]);var aA=new Map([[Dt,[`float16`]]]),oA=new Map([[Int32Array,`sint32`],[Uint32Array,`uint32`],[Float32Array,`float32`]]),sA=class{constructor(e){this.backend=e}createAttribute(e,t){let n=this._getBufferAttribute(e),r=this.backend,i=r.get(n),a=i.buffer;if(a===void 0){let o=r.device,s=n.array;if(e.normalized===!1&&e.isInterleavedBufferAttribute!==!0){if(s.constructor===Int16Array||s.constructor===Int8Array)s=new Int32Array(s);else if((s.constructor===Uint16Array||s.constructor===Uint8Array)&&(s=new Uint32Array(s),t&GPUBufferUsage.INDEX))for(let e=0;e<s.length;e++)s[e]===65535&&(s[e]=4294967295)}n.array=s;let c;if((n.isStorageBufferAttribute||n.isStorageInstancedBufferAttribute)&&n.itemSize===3)c=4;else if(n.itemSize>1&&n.itemSize*s.BYTES_PER_ELEMENT%4!=0){let e=n.itemSize*s.BYTES_PER_ELEMENT;c=Math.floor((e+3)/4)*4/s.BYTES_PER_ELEMENT}if(c!==void 0){let e=n.itemSize,t=new s.constructor(n.count*c);for(let r=0;r<n.count;r++)t.set(s.subarray(r*e,r*e+e),r*c);(n.isStorageBufferAttribute||n.isStorageInstancedBufferAttribute)&&(n.itemSize=c,n.array=t),s=t,i._itemSize=e,i._paddedItemSize=c}let l=s.byteLength,u=l+(4-l%4)%4;nA.label=n.name,nA.size=u,nA.usage=t,nA.mappedAtCreation=!0,a=o.createBuffer(nA),nA.reset(),new s.constructor(a.getMappedRange()).set(s),a.unmap(),i.buffer=a}}updateAttribute(e){let t=this._getBufferAttribute(e),n=this.backend,r=n.device,i=n.get(t),a=n.get(t).buffer,o=t.array,s=i._itemSize,c=i._paddedItemSize;if(c!==void 0){o=new o.constructor(t.count*c);for(let e=0;e<t.count;e++)o.set(t.array.subarray(e*s,e*s+s),e*c);(t.isStorageBufferAttribute||t.isStorageInstancedBufferAttribute)&&(t.array=o)}let l=t.updateRanges;if(l.length===0)r.queue.writeBuffer(a,0,o,0);else{let e=_t(o),n=e?1:o.BYTES_PER_ELEMENT;for(let t=0,i=l.length;t<i;t++){let i=l[t],u,d;if(c!==void 0){let e=Math.floor(i.start/s),t=Math.ceil((i.start+i.count)/s)-e;u=e*c*n,d=t*c*n}else u=i.start*n,d=i.count*n;let f=u*(e?o.BYTES_PER_ELEMENT:1);r.queue.writeBuffer(a,f,o,u,d)}t.clearUpdateRanges()}}createShaderVertexBuffers(e){let t=e.getAttributes(),n=new Map;for(let e=0;e<t.length;e++){let r=t[e],i=r.array.BYTES_PER_ELEMENT,a=this._getBufferAttribute(r),o=n.get(a);if(o===void 0){let e,t;r.isInterleavedBufferAttribute===!0?(e=r.data.stride*i,t=r.data.isInstancedInterleavedBuffer?RO.Instance:RO.Vertex):(e=r.itemSize*i,t=r.isInstancedBufferAttribute?RO.Instance:RO.Vertex,r.itemSize>1&&e%4!=0&&(e=Math.floor((e+3)/4)*4)),o={arrayStride:e,attributes:[],stepMode:t},n.set(a,o)}let s=this._getVertexFormat(r),c=r.isInterleavedBufferAttribute===!0?r.offset*i:0;o.attributes.push({shaderLocation:e,offset:c,format:s})}return Array.from(n.values())}destroyAttribute(e){let t=this.backend;t.get(this._getBufferAttribute(e)).buffer.destroy(),t.delete(e)}async getArrayBufferAsync(e,t=null,n=0,r=-1){let i=this.backend,a=i.device,o=i.get(this._getBufferAttribute(e)).buffer,s=r===-1?o.size-n:r,c;if(t!==null&&t.isReadbackBuffer){let e=i.get(t);if(t._mapped===!0)throw Error(`THREE.WebGPUAttributeUtils: ReadbackBuffer must be released before being used again.`);if(t._mapped=!0,e.readBufferGPU===void 0){nA.label=`${t.name}_readback`,nA.size=t.maxByteLength,nA.usage=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,c=a.createBuffer(nA),nA.reset();let n=()=>{t.buffer=null,t._mapped=!1,c.unmap()},r=()=>{t.buffer=null,t._mapped=!1,c.destroy(),i.delete(t),t.removeEventListener(`release`,n),t.removeEventListener(`dispose`,r)};t.addEventListener(`release`,n),t.addEventListener(`dispose`,r),e.readBufferGPU=c}else c=e.readBufferGPU}else nA.label=`${e.name}_readback`,nA.size=s,nA.usage=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,c=a.createBuffer(nA),nA.reset();rA.label=`readback_encoder_${e.name}`;let l=a.createCommandEncoder(rA);if(rA.reset(),l.copyBufferToBuffer(o,n,c,0,s),qO(a,l.finish()),await c.mapAsync(GPUMapMode.READ,0,s),t===null){let e=c.getMappedRange(0,s).slice();return c.destroy(),e}if(t.isReadbackBuffer)return t.buffer=c.getMappedRange(0,s),t;{let e=c.getMappedRange(0,s);return new Uint8Array(t).set(new Uint8Array(e)),c.destroy(),t}}_getVertexFormat(e){let{itemSize:t,normalized:n}=e,r=e.array.constructor,i=e.constructor,a;if(t===1)a=oA.get(r);else{let e=(aA.get(i)||iA.get(r))[+!!n];if(e){let n=r.BYTES_PER_ELEMENT*t,i=Math.floor((n+3)/4)*4/r.BYTES_PER_ELEMENT;if(i%1)throw Error(`THREE.WebGPUAttributeUtils: Bad vertex format item size.`);a=`${e}x${i}`}}return a||S(`WebGPUAttributeUtils: Vertex format not supported yet.`),a}_getBufferAttribute(e){return e.isInterleavedBufferAttribute&&(e=e.data),e}},cA=new JO,lA=new YO,uA=new ik,dA=class{constructor(e){this.layoutGPU=e,this.usedTimes=0}},fA=class{constructor(e){this.backend=e,this._bindGroupLayoutCache=new Map}createBindingsLayout(e){let t=this.backend,n=t.device,r=t.get(e);if(r.layout)return r.layout.layoutGPU;let i=this._createLayoutEntries(e),a=Bn(JSON.stringify(i)),o=this._bindGroupLayoutCache.get(a);return o===void 0&&(o=new dA(n.createBindGroupLayout({entries:i})),this._bindGroupLayoutCache.set(a,o)),o.usedTimes++,r.layout=o,r.layoutKey=a,o.layoutGPU}createBindings(e,t,n,r=0){let{backend:i}=this,a=i.get(e),o=this.createBindingsLayout(e),s;n!==``&&(a.groups===void 0&&(a.groups={},a.versions={}),a.versions[n]===r&&(s=a.groups[n])),s===void 0&&(s=this.createBindGroup(e,o),n!==``&&(a.groups[n]=s,a.versions[n]=r)),a.group=s}updateBinding(e){let t=this.backend,n=t.device,r=e.buffer,i=t.get(e).buffer,a=e.updateRanges;if(a.length===0)n.queue.writeBuffer(i,0,r,0);else{let e=_t(r),t=e?1:r.BYTES_PER_ELEMENT,o=a[0].start;for(let s=0,c=a.length;s<c;s++){let c=a[s],l=a[s+1],u=c.start+c.count;if(l!==void 0&&l.start===u)continue;let d=o*t,f=(u-o)*t,p=d*(e?r.BYTES_PER_ELEMENT:1);n.queue.writeBuffer(i,p,r,d,f),l!==void 0&&(o=l.start)}}}createBindGroupIndex(e,t){let n=this.backend.device,r=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,i=e[0];lA.label=`bindingCameraIndex_`+i,lA.size=16,lA.usage=r;let a=n.createBuffer(lA);lA.reset(),n.queue.writeBuffer(a,0,e,0),cA.label=`bindGroupCameraIndex_`+i,cA.layout=t,cA.entries.push({binding:0,resource:{buffer:a}});let o=n.createBindGroup(cA);return cA.reset(),o}createBindGroup(e,t){let n=this.backend,r=n.device,i=0;cA.label=`bindGroup_`+e.name,cA.layout=t;for(let t of e.bindings){if(t.isUniformBuffer){let e=n.get(t);cA.entries.push({binding:i,resource:{buffer:e.buffer}})}else if(t.isStorageBuffer){let e=n.get(t.attribute).buffer;cA.entries.push({binding:i,resource:{buffer:e}})}else if(t.isSampledTexture){let e=n.get(t.texture),a;if(e.externalTexture!==void 0)a=r.importExternalTexture({source:e.externalTexture});else{let n=t.store?1:e.texture.mipLevelCount,r=t.store?t.mipLevel:0,i=`view-${e.texture.width}-${e.texture.height}`;if(e.texture.depthOrArrayLayers>1&&(i+=`-${e.texture.depthOrArrayLayers}`),i+=`-${n}-${r}`,a=e[i],a===void 0){let o=LO.All,s;s=t.isSampledCubeTexture?IO.Cube:t.texture.isArrayTexture||t.texture.isDataArrayTexture||t.texture.isCompressedArrayTexture?IO.TwoDArray:t.isSampledTexture3D?IO.ThreeD:IO.TwoD,uA.aspect=o,uA.dimension=s,uA.mipLevelCount=n,uA.baseMipLevel=r,a=e[i]=e.texture.createView(uA),uA.reset()}}cA.entries.push({binding:i,resource:a})}else if(t.isSampler){let e=n.get(t);cA.entries.push({binding:i,resource:e.sampler})}i++}let a=r.createBindGroup(cA);return cA.reset(),a}_createLayoutEntries(e){let t=[],n=0;for(let r of e.bindings){let e=this.backend,i={binding:n,visibility:r.visibility};if(r.isUniformBuffer||r.isStorageBuffer){let e={};r.isStorageBuffer&&(e.type=r.visibility&yO.COMPUTE?r.access===or.READ_WRITE||r.access===or.WRITE_ONLY?jO.Storage:jO.ReadOnlyStorage:r.nodeUniform&&r.nodeUniform.isAtomic&&r.visibility&yO.FRAGMENT?jO.Storage:jO.ReadOnlyStorage),i.buffer=e}else if(r.isSampledTexture&&r.store){let e={};e.format=this.backend.get(r.texture).texture.format;let t=r.access;e.access=t===or.READ_WRITE?MO.ReadWrite:t===or.WRITE_ONLY?MO.WriteOnly:MO.ReadOnly,r.texture.isArrayTexture?e.viewDimension=IO.TwoDArray:r.texture.is3DTexture&&(e.viewDimension=IO.ThreeD),i.storageTexture=e}else if(r.isSampledTexture){let t={},{primarySamples:n}=e.utils.getTextureSampleData(r.texture);if(n>1&&(t.multisampled=!0,r.texture.isDepthTexture||(t.sampleType=PO.UnfilterableFloat)),r.texture.isDepthTexture)t.sampleType=e.compatibilityMode&&r.texture.compareFunction===null?PO.UnfilterableFloat:PO.Depth;else{let e=r.texture.type;e===1013?t.sampleType=PO.SInt:e===1014?t.sampleType=PO.UInt:r.texture.normalized===!0&&(e===1011||e===1012)?t.sampleType=PO.UnfilterableFloat:e===1015&&(t.sampleType=this.backend.hasFeature(`float32-filterable`)?PO.Float:PO.UnfilterableFloat)}r.isSampledCubeTexture?t.viewDimension=IO.Cube:r.texture.isArrayTexture||r.texture.isDataArrayTexture||r.texture.isCompressedArrayTexture?t.viewDimension=IO.TwoDArray:r.isSampledTexture3D&&(t.viewDimension=IO.ThreeD),i.texture=t}else if(r.isSampler){let t={};r.texture.isDepthTexture&&(t.type=r.texture.compareFunction!==null&&r.textureNode.isSampleCompare()&&e.hasCompatibility(un.TEXTURE_COMPARE)?NO.Comparison:NO.NonFiltering),i.sampler=t}else S(`WebGPUBindingUtils: Unsupported binding "${r}".`);t.push(i),n++}return t}deleteBindGroupData(e){let{backend:t}=this,n=t.get(e);n.layout&&(n.layout.usedTimes--,n.layout.usedTimes===0&&this._bindGroupLayoutCache.delete(n.layoutKey),n.layout=void 0,n.layoutKey=void 0)}dispose(){this._bindGroupLayoutCache.clear()}},pA=class{constructor(e){this.backend=e}getMaxAnisotropy(){return 16}getUniformBufferLimit(){return this.backend.device.limits.maxUniformBufferBindingSize}},mA=class{constructor(){this.label=``,this.layout=null,this.compute=null}reset(){this.label=``,this.layout=null,this.compute=null}},hA=class{constructor(){this.label=``,this.bindGroupLayouts=null}reset(){this.label=``,this.bindGroupLayouts=null}},gA=new mA,_A=new hA,vA=new ZO,yA=new ek,bA=class{constructor(e){this.backend=e}_getSampleCount(e){return this.backend.utils.getSampleCountRenderContext(e)}createRenderPipeline(e,t){let{object:n,material:r,geometry:i,pipeline:a}=e,{vertexProgram:o,fragmentProgram:s}=a,c=this.backend,l=c.device,u=c.utils,d=c.get(a),f=[];for(let t of e.getBindings()){let{layoutGPU:e}=c.get(t).layout;f.push(e)}let p=c.attributeUtils.createShaderVertexBuffers(e),m;r.blending!==0&&(r.blending!==1||r.transparent!==!1)&&(m=this._getBlending(r));let h={};r.stencilWrite===!0&&(h={compare:this._getStencilCompare(r),failOp:this._getStencilOperation(r.stencilFail),depthFailOp:this._getStencilOperation(r.stencilZFail),passOp:this._getStencilOperation(r.stencilZPass)});let g=this._getColorWriteMask(r),_=[];if(e.context.textures!==null){let t=e.context.textures,n=e.context.mrt;for(let e=0;e<t.length;e++){let r=t[e],i=u.getTextureFormatGPU(r),a;if(n!==null){if(this.backend.compatibilityMode!==!0){let e=n.getBlendMode(r.name);e.blending===6?a=m:e.blending!==0&&(a=this._getBlending(e))}else Wt(`WebGPURenderer: Multiple Render Targets (MRT) blending configuration is not fully supported in compatibility mode. The material blending will be used for all render targets.`),a=m}else a=m;_.push({format:i,blend:a,writeMask:g})}}else{let t=u.getCurrentColorFormat(e.context);_.push({format:t,blend:m,writeMask:g})}let v=c.get(o).module,y=c.get(s).module,b=this._getPrimitiveState(n,i,r),ee=this._getDepthCompare(r),te=u.getCurrentDepthStencilFormat(e.context),ne=this._getSampleCount(e.context);_A.bindGroupLayouts=f;let re=l.createPipelineLayout(_A);_A.reset(),yA.label=`renderPipeline_${r.name||r.type}_${r.id}`,yA.vertex=Object.assign({},v,{buffers:p}),yA.fragment=Object.assign({},y,{targets:_}),yA.primitive=b,yA.multisample.count=ne,yA.multisample.alphaToCoverageEnabled=r.alphaToCoverage&&ne>1,yA.layout=re;let ie={},ae=e.context.depth,oe=e.context.stencil;(ae===!0||oe===!0)&&(ae===!0&&(ie.format=te,ie.depthWriteEnabled=r.depthWrite,ie.depthCompare=ee),oe===!0&&(ie.stencilFront=h,ie.stencilBack=h,ie.stencilReadMask=r.stencilFuncMask,ie.stencilWriteMask=r.stencilWriteMask),r.polygonOffset===!0&&b.topology===vO.TriangleList&&(ie.depthBias=r.polygonOffsetUnits,ie.depthBiasSlopeScale=r.polygonOffsetFactor,ie.depthBiasClamp=0),yA.depthStencil=ie),l.pushErrorScope(`validation`);let se=[{program:o,module:v.module},{program:s,module:y.module}],ce=yA.label;if(t===null)d.pipeline=l.createRenderPipeline(yA),yA.reset(),l.popErrorScope().then(e=>{e!==null&&(d.error=!0,S(`WebGPURenderer: Render pipeline creation failed (${ce}): ${e.message}`),this._reportShaderDiagnostics(se,ce))});else{let e=new Promise(async e=>{try{let e=null,t=null;try{t=l.createRenderPipelineAsync(yA)}catch(t){e=t}if(yA.reset(),t!==null)try{d.pipeline=await t}catch(t){e=t}let n=await l.popErrorScope();if(n!==null||e!==null){d.error=!0;let t=n&&n.message||e&&e.message||`unknown`;S(`WebGPURenderer: Async render pipeline creation failed (${ce}): ${t}`),await this._reportShaderDiagnostics(se,ce)}}finally{e()}});t.push(e)}}createBundleEncoder(e,t=`renderBundleEncoder`){let{utils:n,device:r}=this.backend,i=n.getCurrentDepthStencilFormat(e),a=n.getCurrentColorFormats(e),o=this._getSampleCount(e);vA.label=t,vA.colorFormats=a,vA.depthStencilFormat=i,vA.sampleCount=o;let s=r.createRenderBundleEncoder(vA);return vA.reset(),s}createComputePipeline(e,t,n=null){let r=this.backend,i=r.device,a=r.get(e.computeProgram).module,o=r.get(e),s=[];for(let e of t){let{layoutGPU:t}=r.get(e).layout;s.push(t)}let c=e.computeProgram,l=`computePipeline_${c.stage}${c.name?`_${c.name}`:``}`;i.pushErrorScope(`validation`),_A.bindGroupLayouts=s;let u=i.createPipelineLayout(_A);if(_A.reset(),gA.label=l,gA.compute=a,gA.layout=u,n===null)o.pipeline=i.createComputePipeline(gA),gA.reset(),i.popErrorScope().then(e=>{e!==null&&(o.error=!0,S(`WebGPURenderer: Compute pipeline creation failed (${l}): ${e.message}`),this._reportShaderDiagnostics([{program:c,module:a.module}],l))});else{let e=new Promise(async e=>{try{let e=null,t=null;try{t=i.createComputePipelineAsync(gA)}catch(t){e=t}if(gA.reset(),t!==null)try{o.pipeline=await t}catch(t){e=t}let n=await i.popErrorScope();if(n!==null||e!==null){o.error=!0;let t=n&&n.message||e&&e.message||`unknown`;S(`WebGPURenderer: Async compute pipeline creation failed (${l}): ${t}`),await this._reportShaderDiagnostics([{program:c,module:a.module}],l)}}finally{e()}});n.push(e)}}async _reportShaderDiagnostics(e,t){for(let{program:n,module:r}of e){let e=await r.getCompilationInfo();if(e.messages.length===0)continue;let i=n.code.split(`
538
+ `);for(let r of e.messages){let e=r.lineNum>0?` at line ${r.lineNum}${r.linePos>0?`:${r.linePos}`:``}`:``,a=`WebGPURenderer [${t} / ${n.stage} ${r.type}]${e}: ${r.message}`,o=``;r.lineNum>0&&r.lineNum<=i.length&&(o=`\n ${i[r.lineNum-1]}`,r.linePos>0&&(o+=`\n ${` `.repeat(r.linePos-1)}^`)),(r.type===`error`?S:C)(a+o)}}}_getBlending(e){let t,n,r=e.blending,i=e.blendSrc,a=e.blendDst,o=e.blendEquation;if(r===5){let r=e.blendSrcAlpha===null?i:e.blendSrcAlpha,s=e.blendDstAlpha===null?a:e.blendDstAlpha,c=e.blendEquationAlpha===null?o:e.blendEquationAlpha;t={srcFactor:this._getBlendFactor(i),dstFactor:this._getBlendFactor(a),operation:this._getBlendOperation(o)},n={srcFactor:this._getBlendFactor(r),dstFactor:this._getBlendFactor(s),operation:this._getBlendOperation(c)}}else{let i=e.premultipliedAlpha,a=(e,r,i,a)=>{t={srcFactor:e,dstFactor:r,operation:OO.Add},n={srcFactor:i,dstFactor:a,operation:OO.Add}};if(i)switch(r){case 1:a($.One,$.OneMinusSrcAlpha,$.One,$.OneMinusSrcAlpha);break;case 2:a($.One,$.One,$.One,$.One);break;case 3:a($.Zero,$.OneMinusSrc,$.Zero,$.One);break;case 4:a($.Dst,$.OneMinusSrcAlpha,$.Zero,$.One)}else switch(r){case 1:a($.SrcAlpha,$.OneMinusSrcAlpha,$.One,$.OneMinusSrcAlpha);break;case 2:a($.SrcAlpha,$.One,$.One,$.One);break;case 3:S(`WebGPURenderer: "SubtractiveBlending" requires "${e.isMaterial?`material`:`blendMode`}.premultipliedAlpha = true".`);break;case 4:S(`WebGPURenderer: "MultiplyBlending" requires "${e.isMaterial?`material`:`blendMode`}.premultipliedAlpha = true".`)}}if(t!==void 0&&n!==void 0)return{color:t,alpha:n};S(`WebGPURenderer: Invalid blending: `,r)}_getBlendFactor(e){let t;switch(e){case 200:t=$.Zero;break;case 201:t=$.One;break;case 202:t=$.Src;break;case 203:t=$.OneMinusSrc;break;case 204:t=$.SrcAlpha;break;case 205:t=$.OneMinusSrcAlpha;break;case 208:t=$.Dst;break;case 209:t=$.OneMinusDst;break;case 206:t=$.DstAlpha;break;case 207:t=$.OneMinusDstAlpha;break;case 210:t=$.SrcAlphaSaturated;break;case 211:case 213:t=$.Constant;break;case 212:case 214:t=$.OneMinusConstant;break;default:S(`WebGPURenderer: Blend factor not supported.`,e)}return t}_getStencilCompare(e){let t,n=e.stencilFunc;switch(n){case 512:t=bO.Never;break;case 519:t=bO.Always;break;case 513:t=bO.Less;break;case 515:t=bO.LessEqual;break;case 514:t=bO.Equal;break;case 518:t=bO.GreaterEqual;break;case 516:t=bO.Greater;break;case 517:t=bO.NotEqual;break;default:S(`WebGPURenderer: Invalid stencil function.`,n)}return t}_getStencilOperation(e){let t;switch(e){case en:t=AO.Keep;break;case 0:t=AO.Zero;break;case qt:t=AO.Replace;break;case mt:t=AO.Invert;break;case s:t=AO.IncrementClamp;break;case me:t=AO.DecrementClamp;break;case Ke:t=AO.IncrementWrap;break;case Fe:t=AO.DecrementWrap;break;default:S(`WebGPURenderer: Invalid stencil operation.`,t)}return t}_getBlendOperation(e){let t;switch(e){case 100:t=OO.Add;break;case 101:t=OO.Subtract;break;case 102:t=OO.ReverseSubtract;break;case 103:t=OO.Min;break;case 104:t=OO.Max;break;default:S(`WebGPUPipelineUtils: Blend equation not supported.`,e)}return t}_getPrimitiveState(e,t,n){let r={};r.topology=this.backend.utils.getPrimitiveTopology(e,n),t.index!==null&&e.isLine===!0&&e.isLineSegments!==!0&&(r.stripIndexFormat=t.index.array instanceof Uint16Array?TO.Uint16:TO.Uint32);let i=n.side===1;return e.isMesh&&e.matrixWorld.determinantAffine()<0&&(i=!i),r.frontFace=i===!0?CO.CW:CO.CCW,r.cullMode=n.side===2?wO.None:wO.Back,r}_getColorWriteMask(e){return e.colorWrite===!0?kO.All:kO.None}_getDepthCompare(e){let t;if(e.depthTest===!1)t=bO.Always;else{let n=this.backend.parameters.reversedDepthBuffer?jt[e.depthFunc]:e.depthFunc;switch(n){case 0:t=bO.Never;break;case 1:t=bO.Always;break;case 2:t=bO.Less;break;case 3:t=bO.LessEqual;break;case 4:t=bO.Equal;break;case 5:t=bO.GreaterEqual;break;case 6:t=bO.Greater;break;case 7:t=bO.NotEqual;break;default:S(`WebGPUPipelineUtils: Invalid depth function.`,n)}}return t}},xA=class{constructor(){this.label=``,this.type=void 0,this.count=0}reset(){this.label=``,this.type=void 0,this.count=0}},SA=new YO,CA=new XO,wA=new xA,TA=class extends mO{constructor(e,t,n=2048){super(n),this.device=e,this.type=t,wA.label=`queryset_global_timestamp_${t}`,wA.type=`timestamp`,wA.count=this.maxQueries,this.querySet=this.device.createQuerySet(wA),wA.reset();let r=this.maxQueries*8;SA.label=`buffer_timestamp_resolve_${t}`,SA.size=r,SA.usage=GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC,this.resolveBuffer=this.device.createBuffer(SA),SA.reset(),SA.label=`buffer_timestamp_result_${t}`,SA.size=r,SA.usage=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,this.resultBuffer=this.device.createBuffer(SA),SA.reset()}allocateQueriesForContext(e){if(!this.trackTimestamp||this.isDisposed)return null;this.currentQueryIndex+2>this.maxQueries&&(this.resolveQueriesAsync(),this.currentQueryIndex=0,this.queryOffsets.clear());let t=this.currentQueryIndex;return this.currentQueryIndex+=2,this.queryOffsets.set(e,t),t}async resolveQueriesAsync(){if(!this.trackTimestamp||this.currentQueryIndex===0||this.isDisposed)return this.lastValue;if(this.pendingResolve)return this.pendingResolve;this.pendingResolve=this._resolveQueries();try{return await this.pendingResolve}finally{this.pendingResolve=null}}async _resolveQueries(){if(this.isDisposed)return this.lastValue;try{if(this.resultBuffer.mapState!==`unmapped`)return this.lastValue;let e=new Map(this.queryOffsets),t=this.currentQueryIndex,n=t*8;this.currentQueryIndex=0,this.queryOffsets.clear();let r=this.device.createCommandEncoder(CA);r.resolveQuerySet(this.querySet,0,t,this.resolveBuffer,0),r.copyBufferToBuffer(this.resolveBuffer,0,this.resultBuffer,0,n);let i=r.finish();if(qO(this.device,i),this.resultBuffer.mapState!==`unmapped`)return this.lastValue;if(await this.resultBuffer.mapAsync(GPUMapMode.READ,0,n),this.isDisposed)return this.resultBuffer.mapState===`mapped`&&this.resultBuffer.unmap(),this.lastValue;let a=new BigUint64Array(this.resultBuffer.getMappedRange(0,n)),o={},s=[];this.timestamps.clear();for(let[t,n]of e){let e=t.match(/^(.*):f(\d+)$/),r=parseInt(e[2]);s.includes(r)===!1&&s.push(r),o[r]===void 0&&(o[r]=0);let i=a[n],c=a[n+1],l=Number(c-i)/1e6;this.timestamps.set(t,l),o[r]+=l}let c=o[s[s.length-1]];return this.resultBuffer.unmap(),this.lastValue=c,this.frames=s,c}catch(e){return S(`Error resolving queries:`,e),this.resultBuffer.mapState===`mapped`&&this.resultBuffer.unmap(),this.lastValue}}async dispose(){if(!this.isDisposed){if(this.isDisposed=!0,this.pendingResolve)try{await this.pendingResolve}catch(e){S(`Error waiting for pending resolve:`,e)}if(this.resultBuffer&&this.resultBuffer.mapState===`mapped`)try{this.resultBuffer.unmap()}catch(e){S(`Error unmapping buffer:`,e)}this.querySet&&=(this.querySet.destroy(),null),this.resolveBuffer&&=(this.resolveBuffer.destroy(),null),this.resultBuffer&&=(this.resultBuffer.destroy(),null),this.queryOffsets.clear(),this.timestamps.clear(),this.frames=[],this.pendingResolve=null}}},EA=class{constructor(){this.label=``,this.timestampWrites=void 0}reset(){this.label=``,this.timestampWrites=void 0}},DA=class{constructor(){this.view=null,this.depthLoadOp=void 0,this.depthStoreOp=void 0,this.depthClearValue=void 0,this.depthReadOnly=!1,this.stencilLoadOp=void 0,this.stencilStoreOp=void 0,this.stencilClearValue=0,this.stencilReadOnly=!1}reset(){this.view=null,this.depthLoadOp=void 0,this.depthStoreOp=void 0,this.depthClearValue=void 0,this.depthReadOnly=!1,this.stencilLoadOp=void 0,this.stencilStoreOp=void 0,this.stencilClearValue=0,this.stencilReadOnly=!1}},OA=class{constructor(){this.querySet=null,this.beginningOfPassWriteIndex=void 0,this.endOfPassWriteIndex=void 0}reset(){this.querySet=null,this.beginningOfPassWriteIndex=void 0,this.endOfPassWriteIndex=void 0}},kA={r:0,g:0,b:0,a:1},AA={r:0,g:0,b:0,a:0},jA=new YO,MA=new XO,NA=new EA,PA=new xA,FA=new nk,IA=new OA,LA=new _k,RA=new _k,zA=new rk,BA=new ik,VA=new Sk,HA=class extends XD{constructor(e={}){super(e),this.isWebGPUBackend=!0,this.parameters.alpha=e.alpha===void 0||e.alpha,this.parameters.requiredLimits=e.requiredLimits===void 0?{}:e.requiredLimits,this.compatibilityMode=null,this.device=null,this.defaultRenderPassdescriptor=null,this.utils=new KO(this),this.attributeUtils=new sA(this),this.bindingUtils=new fA(this),this.capabilities=new pA(this),this.pipelineUtils=new bA(this),this.textureUtils=new Ik(this),this.occludedResolveCache=new Map;let t=typeof navigator>`u`||/Android/.test(navigator.userAgent)===!1;this._compatibility={[un.TEXTURE_COMPARE]:t}}async init(e){await super.init(e);let t=this.parameters,n;if(t.device===void 0){let r={powerPreference:t.powerPreference,featureLevel:`compatibility`,xrCompatible:e.xr.enabled},i=typeof navigator<`u`?await navigator.gpu.requestAdapter(r):null;if(i===null)throw Error(`THREE.WebGPUBackend: Unable to create WebGPU adapter.`);let a=Object.values(zO),o=[];for(let e of a)i.features.has(e)&&o.push(e);let s={requiredFeatures:o,requiredLimits:t.requiredLimits};n=await i.requestDevice(s)}else n=t.device;this.compatibilityMode=!n.features.has(`core-features-and-limits`),this.compatibilityMode&&(e._samples=0),n.lost.then(t=>{if(t.reason===`destroyed`)return;let n={api:`WebGPU`,message:t.message||`Unknown reason`,reason:t.reason||null,originalEvent:t};e.onDeviceLost(n)}),n.onuncapturederror=t=>{let n=t.error,r=n&&n.constructor?n.constructor.name:`GPUError`,i=n&&n.message||`Unknown uncaptured GPU error`;e.onError({api:`WebGPU`,type:r,message:i,originalEvent:t})},this.device=n,this.trackTimestamp=this.trackTimestamp&&this.hasFeature(zO.TimestampQuery),this.updateSize()}setXRRenderTargetTextures(e,t,n=null){let r=this.get(e.texture);r.texture=t,r.format=t.format,r.externalTexture=!0,r.xrViewDescriptors=n,r.initialized=!0}get context(){let e=this.renderer.getCanvasTarget(),t=this.get(e),n=t.context;if(n===void 0){let r=this.parameters;n=e.isDefaultCanvasTarget===!0&&r.context!==void 0?r.context:e.domElement.getContext(`webgpu`),`setAttribute`in e.domElement&&e.domElement.setAttribute(`data-engine`,`three.js r186 webgpu`);let i=r.alpha?`premultiplied`:`opaque`,a=r.outputType===1016?`extended`:`standard`;n.configure({device:this.device,format:this.utils.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,alphaMode:i,toneMapping:{mode:a}}),t.context=n}return n}get coordinateSystem(){return sn}get hasTimestamp(){return!0}async getArrayBufferAsync(e,t=null,n=0,r=-1){return await this.attributeUtils.getArrayBufferAsync(e,t,n,r)}getContext(){return this.context}_getDefaultRenderPassDescriptor(){let e=this.renderer,t=e.getCanvasTarget(),n=this.get(t),r=e.currentSamples,i=n.descriptor;if(i===void 0||n.samples!==r){if(i=new $O,i.colorAttachments.push(new QO),e.depth===!0||e.stencil===!0){let t=new DA;t.view=this.textureUtils.getDepthBuffer(e.depth,e.stencil).createView(),i.depthStencilAttachment=t}let t=i.colorAttachments[0];r>0?t.view=this.textureUtils.getColorBuffer().createView():t.resolveTarget=void 0,n.descriptor=i,n.samples=r}let a=i.colorAttachments[0];return r>0?a.resolveTarget=this.context.getCurrentTexture().createView():a.view=this.context.getCurrentTexture().createView(),i}_isRenderCameraDepthArray(e){let t=e.camera;return e.depthTexture&&e.depthTexture.isArrayTexture===!0&&t!==null&&t.isArrayCamera===!0}_hasExternalTexture(e){let t=e.textures;if(t===null)return!1;for(let e=0;e<t.length;e++)if(this.get(t[e]).externalTexture===!0)return!0;return!1}_getExternalMSAATextures(e,t,n){let r=this.utils.getSampleCount(e.sampleCount);if(r===1){if(t.msaaTextures!==void 0){for(let e of t.msaaTextures)e.destroy();t.msaaTextures=void 0}return null}let i=e.renderTarget,a=i.width,o=i.height,s=t.format;if(t.msaaTextures===void 0||t.msaaTextures.length!==n||t.msaaWidth!==a||t.msaaHeight!==o||t.msaaSamples!==r||t.msaaFormat!==s){if(t.msaaTextures!==void 0)for(let e of t.msaaTextures)e.destroy();zA.size.width=a,zA.size.height=o,zA.sampleCount=r,zA.format=s,zA.usage=GPUTextureUsage.RENDER_ATTACHMENT,t.msaaTextures=[];for(let e=0;e<n;e++)zA.label=i.texture.name+`-msaa-`+e,t.msaaTextures.push(this.device.createTexture(zA));zA.reset(),t.msaaWidth=a,t.msaaHeight=o,t.msaaSamples=r,t.msaaFormat=s}return t.msaaTextures}_createExternalTextureViews(e,t){let n=[],r=e.camera,i=t.xrViewDescriptors,a=Math.max(i?.length||0,e.activeCubeFace+1,1),o=this._getExternalMSAATextures(e,t,a);if(i&&r!==null&&r.isArrayCamera===!0)for(let r=0;r<i.length;r++){let a=t.texture.createView(i[r]);n.push({view:o===null?a:o[r].createView(),resolveTarget:o!==null&&e.renderTarget.resolveColorBuffer===!0?a:void 0,depthSlice:void 0})}else{let r=e.activeCubeFace,i=t.texture.createView({dimension:IO.TwoD,baseArrayLayer:r,arrayLayerCount:1});n.push({view:o===null?i:o[r].createView(),resolveTarget:o!==null&&e.renderTarget.resolveColorBuffer===!0?i:void 0,depthSlice:void 0})}return n}_getRenderPassDescriptor(e,t={}){let n=e.renderTarget,r=this.get(n),i=this._hasExternalTexture(e),a=r.descriptors;(a===void 0||r.width!==n.width||r.height!==n.height||r.samples!==n.samples||i)&&(a={},r.descriptors=a);let o=e.getCacheKey(),s=a[o];if(s===void 0||i){let t=e.textures,i=[],c,l=this._isRenderCameraDepthArray(e);for(let r=0;r<t.length;r++){let a=this.get(t[r]);if(a.externalTexture===!0){i.push(...this._createExternalTextureViews(e,a));continue}if(BA.label=`colorAttachment_${r}`,BA.baseMipLevel=e.activeMipmapLevel,BA.mipLevelCount=1,BA.baseArrayLayer=e.activeCubeFace,BA.arrayLayerCount=1,BA.dimension=IO.TwoD,n.isRenderTarget3D)c=e.activeCubeFace,BA.baseArrayLayer=0,BA.dimension=IO.ThreeD;else if(n.isRenderTarget&&t[r].image.depth>1){if(l===!0){let t=e.camera.cameras;for(let e=0;e<t.length;e++){BA.baseArrayLayer=e,BA.arrayLayerCount=1,BA.dimension=IO.TwoD;let t=a.texture.createView(BA),r=a.msaaTextures?.[e];i.push({view:r===void 0?t:r.createView(),resolveTarget:r!==void 0&&n.resolveColorBuffer===!0?t:void 0,depthSlice:void 0})}}else BA.dimension=IO.TwoDArray}if(l!==!0){let t=a.texture.createView(BA),r,o;a.msaaTexture===void 0?a.msaaTextures===void 0?(r=t,o=void 0):(r=a.msaaTextures[e.activeCubeFace].createView(),o=n.resolveColorBuffer===!0?t:void 0):(r=a.msaaTexture.createView(),o=n.resolveColorBuffer===!0?t:void 0),i.push({view:r,resolveTarget:o,depthSlice:c})}BA.reset()}let u=[];for(let e=0;e<i.length;e++){let t=i[e],n=new QO;n.view=t.view,n.depthSlice=t.depthSlice,n.resolveTarget=t.resolveTarget,u.push(n)}if(s={textureViews:i,colorAttachments:u,descriptor:new $O},e.depth){let t=this.get(e.depthTexture);(e.depthTexture.isArrayTexture||e.depthTexture.isCubeTexture)&&(BA.dimension=IO.TwoD,BA.arrayLayerCount=1,BA.baseArrayLayer=e.activeCubeFace);let n=new DA,r=t.msaaTextures?.[e.activeCubeFace];n.view=r===void 0?t.texture.createView(BA):r.createView(),s.depthStencilAttachment=n,BA.reset()}a[o]=s,r.width=n.width,r.height=n.height,r.samples=n.samples,r.activeMipmapLevel=e.activeMipmapLevel,r.activeCubeFace=e.activeCubeFace}let c=s.descriptor;c.reset();for(let e=0;e<s.colorAttachments.length;e++){let n=s.colorAttachments[e],r={r:0,g:0,b:0,a:1};e===0&&t.clearValue&&(r=t.clearValue),n.loadOp=t.loadOp||SO.Load,n.storeOp=t.storeOp||xO.Store,n.clearValue=r,c.colorAttachments.push(n)}return s.depthStencilAttachment&&(c.depthStencilAttachment=s.depthStencilAttachment),c}beginRender(e){let t=this.get(e),n=this.device,r=e.occlusionQueryCount,i;r>0?(t.currentOcclusionQuerySet&&t.currentOcclusionQuerySet.destroy(),t.currentOcclusionQueryBuffer&&t.currentOcclusionQueryBuffer.destroy(),t.currentOcclusionQuerySet=t.occlusionQuerySet,t.currentOcclusionQueryBuffer=t.occlusionQueryBuffer,t.currentOcclusionQueryObjects=t.occlusionQueryObjects,PA.label=`occlusionQuerySet_${e.id}`,PA.type=`occlusion`,PA.count=r,i=n.createQuerySet(PA),PA.reset(),t.occlusionQuerySet=i,t.occlusionQueryIndex=0,t.occlusionQueryObjects=Array(r),t.lastOcclusionObject=null):t.lastOcclusionObject!==void 0&&(t.lastOcclusionObject=void 0,t.occlusionQuerySet.destroy(),t.occlusionQuerySet=void 0);let a;a=e.textures===null?this._getDefaultRenderPassDescriptor():this._getRenderPassDescriptor(e,{loadOp:SO.Load}),this.initTimestampQuery(Ot.RENDER,this.getTimestampUID(e),a),a.occlusionQuerySet=i;let o=a.depthStencilAttachment,s=e.renderTarget,c=e.sampleCount>1&&s?.storeMultisampledColorBuffer===!1,l=e.sampleCount>1&&s?.storeMultisampledDepthBuffer===!1,u=e.sampleCount>1&&s?.storeMultisampledStencilBuffer===!1,d=e.fullscreenPass===!0&&this._hasExternalTexture(e);if(e.textures!==null){let t=a.colorAttachments;for(let n=0;n<t.length;n++){let r=t[n];if(e.clearColor||c||d){let t=e.mrt?e.mrt.getClearColor(e.textures[n].name):null;t===null?n===0?r.clearValue=e.clearColorValue:(kA.r=0,kA.g=0,kA.b=0,kA.a=1,r.clearValue=kA):r.clearValue=t,r.loadOp=SO.Clear}else r.loadOp=SO.Load;r.storeOp=c?xO.Discard:xO.Store}}else{let t=a.colorAttachments[0];e.clearColor?(t.clearValue=e.clearColorValue,t.loadOp=SO.Clear):t.loadOp=SO.Load,t.storeOp=xO.Store}e.depth&&(e.clearDepth||l?(o.depthClearValue=e.clearDepthValue,o.depthLoadOp=SO.Clear):o.depthLoadOp=SO.Load,o.depthStoreOp=l?xO.Discard:xO.Store),e.stencil&&(e.clearStencil||u?(o.stencilClearValue=e.clearStencilValue,o.stencilLoadOp=SO.Clear):o.stencilLoadOp=SO.Load,o.stencilStoreOp=u?xO.Discard:xO.Store),MA.label=`renderContext_`+e.id;let f=n.createCommandEncoder(MA);if(MA.reset(),this._isRenderCameraDepthArray(e)===!0){let n=e.camera.cameras;!t.layerDescriptors||t.layerDescriptors.length!==n.length?this._createArrayCameraLayerDescriptors(e,t,a,n):this._updateArrayCameraLayerDescriptors(e,t,a,n),this._createArrayCameraBundleEncoders(e,t),t.arrayCameraRenderStages=[],t.currentPass=null}else t.bundleEncoders=void 0,t.bundleSets=void 0,t.arrayCameraRenderStages=void 0,t.currentPass=f.beginRenderPass(a),e.viewport&&this.updateViewport(e),e.scissor&&this.updateScissor(e);t.descriptor=a,t.encoder=f,t.renderBundles=[],this._resetRenderContextData(t)}_resetRenderContextData(e){e.currentSets={attributes:{},bindingGroups:[],pipeline:null,index:null},e.currentBlendColor===void 0&&(e.currentBlendColor=new Et),e.currentBlendColor.setRGB(0,0,0),e.currentBlendAlpha=0,e.currentStencilRef=0}_createArrayCameraBundleEncoders(e,t){let n=e.camera.cameras;t.bundleEncoders=[],t.bundleSets=[];for(let r=0;r<n.length;r++){let n=this.pipelineUtils.createBundleEncoder(e,`renderBundleArrayCamera_`+r);t.bundleEncoders.push(n),t.bundleSets.push({attributes:{},bindingGroups:[],pipeline:null,index:null})}}_finishArrayCameraBundleEncoders(e){let t=[];for(let n of e.bundleEncoders)t.push(n.finish());return t}_createArrayCameraLayerDescriptors(e,t,n,r){let i=n.depthStencilAttachment;t.layerDescriptors=[];let a=this.get(e.depthTexture);a.viewCache||=[];for(let o=0;o<r.length;o++){let r=n.colorAttachments[0],s=n.colorAttachments[o],c=new QO;c.view=s.view,c.depthSlice=s.depthSlice,c.resolveTarget=s.resolveTarget,c.loadOp=r.loadOp,c.storeOp=r.storeOp,c.clearValue=r.clearValue;let l=new $O;if(l.label=n.label,l.occlusionQuerySet=n.occlusionQuerySet,l.timestampWrites=n.timestampWrites,l.colorAttachments.push(c),n.depthStencilAttachment){let t=o;if(!a.viewCache[t]){let e=a.msaaTextures?.[t];e===void 0?(BA.dimension=IO.TwoD,BA.baseArrayLayer=o,BA.arrayLayerCount=1,a.viewCache[t]=a.texture.createView(BA)):a.viewCache[t]=e.createView(),BA.reset()}let n=new DA;n.view=a.viewCache[t],n.depthLoadOp=i.depthLoadOp||SO.Clear,n.depthStoreOp=i.depthStoreOp||xO.Store,n.depthClearValue=i.depthClearValue||1,e.stencil&&(n.stencilLoadOp=i.stencilLoadOp,n.stencilStoreOp=i.stencilStoreOp,n.stencilClearValue=i.stencilClearValue),l.depthStencilAttachment=n}else{let e=new DA;e.view=i.view,e.depthLoadOp=i.depthLoadOp,e.depthStoreOp=i.depthStoreOp,e.depthClearValue=i.depthClearValue,e.depthReadOnly=i.depthReadOnly,e.stencilLoadOp=i.stencilLoadOp,e.stencilStoreOp=i.stencilStoreOp,e.stencilClearValue=i.stencilClearValue,e.stencilReadOnly=i.stencilReadOnly,l.depthStencilAttachment=e}t.layerDescriptors.push(l)}}_updateArrayCameraLayerDescriptors(e,t,n,r){let i=e.renderTarget,a=e.sampleCount>1&&i?.storeMultisampledDepthBuffer===!1,o=e.sampleCount>1&&i?.storeMultisampledStencilBuffer===!1;for(let i=0;i<r.length;i++){let r=t.layerDescriptors[i],s=n.colorAttachments[0],c=n.colorAttachments[i],l=r.colorAttachments[0];if(l.view=c.view,l.resolveTarget=c.resolveTarget,l.depthSlice=c.depthSlice,l.loadOp=s.loadOp,l.storeOp=s.storeOp,l.clearValue=s.clearValue,r.depthStencilAttachment){let t=r.depthStencilAttachment;e.depth&&(e.clearDepth||a?(t.depthClearValue=e.clearDepthValue,t.depthLoadOp=SO.Clear):t.depthLoadOp=SO.Load),e.stencil&&(e.clearStencil||o?(t.stencilClearValue=e.clearStencilValue,t.stencilLoadOp=SO.Clear):t.stencilLoadOp=SO.Load)}}}finishRender(e){let t=this.get(e),n=e.occlusionQueryCount;t.renderBundles.length>0&&t.currentPass.executeBundles(t.renderBundles);let r=t.lastOcclusionObject;r&&r.occlusionTest===!0&&t.currentPass.endOcclusionQuery();let i=t.encoder;if(this._isRenderCameraDepthArray(e)===!0){let n=this._finishArrayCameraBundleEncoders(t),r=t.arrayCameraRenderStages;r.push({bundles:n});for(let n=0;n<t.layerDescriptors.length;n++){let a=t.layerDescriptors[n],o=a.colorAttachments.map(e=>e.loadOp),s=a.colorAttachments.map(e=>e.storeOp),c=a.depthStencilAttachment?.depthLoadOp,l=a.depthStencilAttachment?.depthStoreOp,u=a.depthStencilAttachment?.stencilLoadOp,d=a.depthStencilAttachment?.stencilStoreOp;for(let t=0;t<r.length;t++){let f=r[t],p=f.bundles[n],m=t===r.length-1;for(let e=0;e<a.colorAttachments.length;e++){let n=a.colorAttachments[e];n.loadOp=t===0?o[e]:SO.Load,n.storeOp=m?s[e]:xO.Store}e.depth&&(a.depthStencilAttachment.depthLoadOp=t===0?c:SO.Load,a.depthStencilAttachment.depthStoreOp=m?l:xO.Store),e.stencil&&(a.depthStencilAttachment.stencilLoadOp=t===0?u:SO.Load,a.depthStencilAttachment.stencilStoreOp=m?d:xO.Store);let h=i.beginRenderPass(a);if(e.viewport){let{x:t,y:n,width:r,height:i,minDepth:a,maxDepth:o}=e.viewportValue;h.setViewport(t,n,r,i,a,o)}if(e.scissor){let{x:t,y:n,width:r,height:i}=e.scissorValue;h.setScissorRect(t,n,r,i)}if(h.executeBundles([p]),h.end(),f.framebufferCopy!==void 0){let{texture:e,sourceGPU:t,destinationGPU:r,rectangle:a,generateMipmaps:o}=f.framebufferCopy;this._copyFramebufferToTexture(i,e,t,r,a,n,o)}}for(let e=0;e<a.colorAttachments.length;e++)a.colorAttachments[e].loadOp=o[e],a.colorAttachments[e].storeOp=s[e];e.depth&&(a.depthStencilAttachment.depthLoadOp=c,a.depthStencilAttachment.depthStoreOp=l),e.stencil&&(a.depthStencilAttachment.stencilLoadOp=u,a.depthStencilAttachment.stencilStoreOp=d)}}else t.currentPass&&t.currentPass.end();if(n>0){let r=n*8,i=this.occludedResolveCache.get(r);i===void 0&&(jA.size=r,jA.usage=GPUBufferUsage.QUERY_RESOLVE|GPUBufferUsage.COPY_SRC,i=this.device.createBuffer(jA),jA.reset(),this.occludedResolveCache.set(r,i)),jA.size=r,jA.usage=GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ;let a=this.device.createBuffer(jA);jA.reset(),t.encoder.resolveQuerySet(t.occlusionQuerySet,0,n,i,0),t.encoder.copyBufferToBuffer(i,0,a,0,r),t.occlusionQueryBuffer=a,this.resolveOccludedAsync(e)}if(qO(this.device,t.encoder.finish()),e.textures!==null){let t=e.textures;for(let e=0;e<t.length;e++){let n=t[e];n.generateMipmaps===!0&&this.textureUtils.generateMipmaps(n)}}}isOccluded(e,t){let n=this.get(e);return n.occluded&&n.occluded.has(t)}async resolveOccludedAsync(e){let t=this.get(e),{currentOcclusionQueryBuffer:n,currentOcclusionQueryObjects:r}=t;if(n&&r){let e=new WeakSet;t.currentOcclusionQueryObjects=null,t.currentOcclusionQueryBuffer=null,await n.mapAsync(GPUMapMode.READ);let i=n.getMappedRange(),a=new BigUint64Array(i);for(let t=0;t<r.length;t++){let n=r[t];n!==void 0&&a[t]===BigInt(0)&&e.add(n)}n.destroy(),t.occluded=e}}updateViewport(e){let{currentPass:t}=this.get(e),{x:n,y:r,width:i,height:a,minDepth:o,maxDepth:s}=e.viewportValue;t.setViewport(n,r,i,a,o,s)}updateScissor(e){let{currentPass:t}=this.get(e),{x:n,y:r,width:i,height:a}=e.scissorValue;t.setScissorRect(n,r,i,a)}getClearColor(){let e=super.getClearColor();return this.renderer.alpha===!0&&(e.r*=e.a,e.g*=e.a,e.b*=e.a),e}clear(e,t,n,r=null){let i=this.device,a=this.renderer,o=[],s,c,l;if(e){let e=this.getClearColor();kA.r=e.r,kA.g=e.g,kA.b=e.b,kA.a=e.a}if(r===null){c=a.depth,l=a.stencil;let t=this._getDefaultRenderPassDescriptor();if(e){o=t.colorAttachments;let e=o[0];e.clearValue=kA,e.loadOp=SO.Clear,e.storeOp=xO.Store}(c||l)&&(s=t.depthStencilAttachment)}else{c=r.depth,l=r.stencil;let i={loadOp:e?SO.Clear:SO.Load,clearValue:e?kA:void 0};c&&(i.depthLoadOp=t?SO.Clear:SO.Load,i.depthClearValue=t?a.getClearDepth():void 0,i.depthStoreOp=xO.Store),l&&(i.stencilLoadOp=n?SO.Clear:SO.Load,i.stencilClearValue=n?a.getClearStencil():void 0,i.stencilStoreOp=xO.Store);let u=this._getRenderPassDescriptor(r,i);o=u.colorAttachments,s=u.depthStencilAttachment}c&&s&&(t?(s.depthLoadOp=SO.Clear,s.depthClearValue=a.getClearDepth(),s.depthStoreOp=xO.Store):(s.depthLoadOp=SO.Load,s.depthStoreOp=xO.Store)),l&&s&&(n?(s.stencilLoadOp=SO.Clear,s.stencilClearValue=a.getClearStencil(),s.stencilStoreOp=xO.Store):(s.stencilLoadOp=SO.Load,s.stencilStoreOp=xO.Store)),MA.label=`clear`;let u=i.createCommandEncoder(MA);MA.reset(),u.beginRenderPass({colorAttachments:o,depthStencilAttachment:s}).end(),qO(i,u.finish())}beginCompute(e){let t=this.get(e),n=`computeGroup_`+e.id;NA.label=n,MA.label=n,this.initTimestampQuery(Ot.COMPUTE,this.getTimestampUID(e),NA),t.cmdEncoderGPU=this.device.createCommandEncoder(MA),t.passEncoderGPU=t.cmdEncoderGPU.beginComputePass(NA),t.currentPipeline=null,MA.reset(),NA.reset()}compute(e,t,n,r,i=null){let a=this.get(t),o=this.get(e),{passEncoderGPU:s}=o,c=this.get(r).pipeline;o.currentPipeline!==c&&(s.setPipeline(c),o.currentPipeline=c);for(let e=0,t=n.length;e<t;e++){let t=n[e],r=this.get(t);s.setBindGroup(e,r.group)}if(i===null&&(i=t.dispatchSize||t.count),i&&i.isIndirectStorageBufferAttribute){let e=this.get(i).buffer;s.dispatchWorkgroupsIndirect(e,0);return}if(typeof i==`number`){let e=i;if(a.dispatchSize===void 0||a.count!==e){a.dispatchSize=[0,1,1],a.count=e;let n=t.workgroupSize,r=n[0];for(let e=1;e<n.length;e++)r*=n[e];let o=Math.ceil(e/r),s=this.device.limits.maxComputeWorkgroupsPerDimension;i=[o,1,1],o>s&&(i[0]=Math.min(o,s),i[1]=Math.ceil(o/s)),a.dispatchSize=i}i=a.dispatchSize}s.dispatchWorkgroups(i[0],i[1]||1,i[2]||1)}finishCompute(e){let t=this.get(e);t.passEncoderGPU.end(),qO(this.device,t.cmdEncoderGPU.finish())}_draw(e,t,n,r,i,a,o,s,c,l=-1){let{object:u,material:d,context:f}=e,p=e.getIndex(),m=p!==null;c.pipeline!==r&&(s.setPipeline(r),c.pipeline=r);let h=c.bindingGroups;for(let e=0,t=i.length;e<t;e++){if(e===l)continue;let t=i[e],n=this.get(t).group;h[e]!==n&&(s.setBindGroup(e,n),h[e]=n)}if(m===!0&&c.index!==p){let e=this.get(p).buffer,t=p.array instanceof Uint16Array?TO.Uint16:TO.Uint32;s.setIndexBuffer(e,t),c.index=p}for(let e=0,t=a.length;e<t;e++){let t=a[e];if(c.attributes[e]!==t){let n=this.get(t).buffer;s.setVertexBuffer(e,n),c.attributes[e]=t}}if(f.stencil===!0&&d.stencilWrite===!0&&n.currentStencilRef!==d.stencilRef&&(s.setStencilReference(d.stencilRef),n.currentStencilRef=d.stencilRef),d.blending===5&&s.setBlendConstant!==void 0){let e=d.blendColor,t=d.blendAlpha;(e.equals(n.currentBlendColor)===!1||t!==n.currentBlendAlpha)&&(AA.r=e.r,AA.g=e.g,AA.b=e.b,AA.a=t,s.setBlendConstant(AA),n.currentBlendColor.copy(e),n.currentBlendAlpha=t)}if(u.isBatchedMesh===!0){let e=u._multiDrawStarts,n=u._multiDrawCounts,r=u._multiDrawCount,i=u._multiDrawBytesPerElement;for(let a=0;a<r;a++)m===!0?s.drawIndexed(n[a],1,e[a]/i,0,a):s.draw(n[a],1,e[a],a),t.update(u,n[a],1)}else if(m===!0){let{vertexCount:n,instanceCount:r,firstVertex:i}=o,a=e.getIndirect();if(a!==null){let t=this.get(a).buffer,n=e.getIndirectOffset(),r=Array.isArray(n)?n:[n];for(let e=0;e<r.length;e++)s.drawIndexedIndirect(t,r[e])}else s.drawIndexed(n,r,i,0,0);t.update(u,n,r)}else{let{vertexCount:n,instanceCount:r,firstVertex:i}=o,a=e.getIndirect();if(a!==null){let t=this.get(a).buffer,n=e.getIndirectOffset(),r=Array.isArray(n)?n:[n];for(let e=0;e<r.length;e++)s.drawIndirect(t,r[e])}else s.draw(n,r,i,0);t.update(u,n,r)}}draw(e,t){let{object:n,context:r,pipeline:i}=e,a=this.get(r),o=this.get(i),s=o.pipeline;if(o.error===!0)return;let c=e.getDrawParameters();if(c===null)return;let l=e.getBindings(),u=e.getVertexBuffers();if(e.camera.isArrayCamera&&e.camera.cameras.length>0){let i=this.get(e.camera),o=e.camera.cameras,d=e.getBindingGroup(`cameraIndex`);if(i.indexesGPU===void 0||i.indexesGPU.length!==o.length){let e=this.get(d),t=[],n=new Uint32Array([0,0,0,0]);for(let r=0,i=o.length;r<i;r++){n[0]=r;let{layoutGPU:i}=e.layout,a=this.bindingUtils.createBindGroupIndex(n,i);t.push(a)}i.indexesGPU=t}let f=r.renderTarget,p=f===null||f.isPostProcessingRenderTarget===!0?this.renderer.getPixelRatio():1,m=d?l.indexOf(d):-1;for(let d=0,f=o.length;d<f;d++){let f=o[d];if(n.layers.test(f.layers)){let n=f.viewport,o=a.currentPass,h=a.currentSets,g=a.bundleEncoders!==void 0;if(g){let e=a.bundleEncoders[d],t=a.bundleSets[d];o=e,h=t}if(n&&!g&&o.setViewport(Math.floor(n.x*p),Math.floor(n.y*p),Math.floor(n.width*p),Math.floor(n.height*p),r.viewportValue.minDepth,r.viewportValue.maxDepth),m!==-1&&i.indexesGPU){let e=i.indexesGPU[d];h.bindingGroups[m]!==e&&(o.setBindGroup(m,e),h.bindingGroups[m]=e)}this._draw(e,t,a,s,l,u,c,o,h,m)}}}else if(a.currentPass){if(a.currentPass instanceof GPURenderBundleEncoder)n.occlusionTest===!0&&Wt(`WebGPUBackend: Occlusion queries can not be recorded into render bundles.`);else if(a.occlusionQuerySet!==void 0){let e=a.lastOcclusionObject;e!==n&&(e!==null&&e.occlusionTest===!0&&(a.currentPass.endOcclusionQuery(),a.occlusionQueryIndex++),n.occlusionTest===!0&&(a.currentPass.beginOcclusionQuery(a.occlusionQueryIndex),a.occlusionQueryObjects[a.occlusionQueryIndex]=n),a.lastOcclusionObject=n)}this._draw(e,t,a,s,l,u,c,a.currentPass,a.currentSets)}}needsRenderUpdate(e){let t=this.get(e),{object:n,material:r}=e,i=this.utils,a=i.getSampleCountRenderContext(e.context),o=i.getCurrentColorSpace(e.context),s=i.getCurrentColorFormat(e.context),c=i.getCurrentDepthStencilFormat(e.context),l=i.getPrimitiveTopology(n,r),u=n.isMesh&&n.matrixWorld.determinantAffine()<0,d=!1;return(t.material!==r||t.materialVersion!==r.version||t.transparent!==r.transparent||t.blending!==r.blending||t.premultipliedAlpha!==r.premultipliedAlpha||t.blendSrc!==r.blendSrc||t.blendDst!==r.blendDst||t.blendEquation!==r.blendEquation||t.blendSrcAlpha!==r.blendSrcAlpha||t.blendDstAlpha!==r.blendDstAlpha||t.blendEquationAlpha!==r.blendEquationAlpha||t.colorWrite!==r.colorWrite||t.depthWrite!==r.depthWrite||t.depthTest!==r.depthTest||t.depthFunc!==r.depthFunc||t.stencilWrite!==r.stencilWrite||t.stencilFunc!==r.stencilFunc||t.stencilFail!==r.stencilFail||t.stencilZFail!==r.stencilZFail||t.stencilZPass!==r.stencilZPass||t.stencilFuncMask!==r.stencilFuncMask||t.stencilWriteMask!==r.stencilWriteMask||t.polygonOffset!==r.polygonOffset||t.polygonOffsetFactor!==r.polygonOffsetFactor||t.polygonOffsetUnits!==r.polygonOffsetUnits||t.side!==r.side||t.alphaToCoverage!==r.alphaToCoverage||t.sampleCount!==a||t.colorSpace!==o||t.colorFormat!==s||t.depthStencilFormat!==c||t.primitiveTopology!==l||t.frontFaceCW!==u||t.clippingContextCacheKey!==e.clippingContextCacheKey)&&(t.material=r,t.materialVersion=r.version,t.transparent=r.transparent,t.blending=r.blending,t.premultipliedAlpha=r.premultipliedAlpha,t.blendSrc=r.blendSrc,t.blendDst=r.blendDst,t.blendEquation=r.blendEquation,t.blendSrcAlpha=r.blendSrcAlpha,t.blendDstAlpha=r.blendDstAlpha,t.blendEquationAlpha=r.blendEquationAlpha,t.colorWrite=r.colorWrite,t.depthWrite=r.depthWrite,t.depthTest=r.depthTest,t.depthFunc=r.depthFunc,t.stencilWrite=r.stencilWrite,t.stencilFunc=r.stencilFunc,t.stencilFail=r.stencilFail,t.stencilZFail=r.stencilZFail,t.stencilZPass=r.stencilZPass,t.stencilFuncMask=r.stencilFuncMask,t.stencilWriteMask=r.stencilWriteMask,t.polygonOffset=r.polygonOffset,t.polygonOffsetFactor=r.polygonOffsetFactor,t.polygonOffsetUnits=r.polygonOffsetUnits,t.side=r.side,t.alphaToCoverage=r.alphaToCoverage,t.sampleCount=a,t.colorSpace=o,t.colorFormat=s,t.depthStencilFormat=c,t.primitiveTopology=l,t.frontFaceCW=u,t.clippingContextCacheKey=e.clippingContextCacheKey,d=!0),d}getRenderCacheKey(e){let{object:t,material:n}=e,r=this.utils,i=e.context,a=t.isMesh&&t.matrixWorld.determinantAffine()<0;return[n.transparent,n.blending,n.premultipliedAlpha,n.blendSrc,n.blendDst,n.blendEquation,n.blendSrcAlpha,n.blendDstAlpha,n.blendEquationAlpha,n.colorWrite,n.depthWrite,n.depthTest,n.depthFunc,n.stencilWrite,n.stencilFunc,n.stencilFail,n.stencilZFail,n.stencilZPass,n.stencilFuncMask,n.stencilWriteMask,n.polygonOffset,n.polygonOffsetFactor,n.polygonOffsetUnits,n.side,n.alphaToCoverage,a,r.getSampleCountRenderContext(i),r.getCurrentColorSpace(i),r.getCurrentColorFormat(i),r.getCurrentDepthStencilFormat(i),r.getPrimitiveTopology(t,n),e.getGeometryCacheKey(),e.clippingContextCacheKey].join()}updateSampler(e){return this.textureUtils.updateSampler(e)}destroySampler(e){this.textureUtils.destroySampler(e)}createDefaultTexture(e){return this.textureUtils.createDefaultTexture(e)}createTexture(e,t){this.textureUtils.createTexture(e,t)}updateTexture(e,t){this.textureUtils.updateTexture(e,t)}generateMipmaps(e){this.textureUtils.generateMipmaps(e)}destroyTexture(e,t=!1){this.textureUtils.destroyTexture(e,t)}async copyTextureToBuffer(e,t,n,r,i,a){return this.textureUtils.copyTextureToBuffer(e,t,n,r,i,a)}initTimestampQuery(e,t,n){if(!this.trackTimestamp)return;this.timestampQueryPool[e]||(this.timestampQueryPool[e]=new TA(this.device,e,2048));let r=this.timestampQueryPool[e],i=r.allocateQueriesForContext(t);IA.querySet=r.querySet,IA.beginningOfPassWriteIndex=i,IA.endOfPassWriteIndex=i+1,n.timestampWrites=IA}createNodeBuilder(e,t){return new tA(e,t)}createProgram(e){let t=this.get(e);FA.label=e.stage+(e.name===``?``:`_${e.name}`),FA.code=e.code,t.module={module:this.device.createShaderModule(FA),entryPoint:`main`},FA.reset()}destroyProgram(e){this.delete(e)}createRenderPipeline(e,t){this.pipelineUtils.createRenderPipeline(e,t)}createComputePipeline(e,t,n=null){this.pipelineUtils.createComputePipeline(e,t,n)}beginBundle(e){let t=this.get(e);t._currentPass=t.currentPass,t._currentSets=t.currentSets,t.currentSets={attributes:{},bindingGroups:[],pipeline:null,index:null},t.currentPass=this.pipelineUtils.createBundleEncoder(e)}finishBundle(e,t){let n=this.get(e),r=n.currentPass.finish();this.get(t).bundleGPU=r,n.currentSets=n._currentSets,n.currentPass=n._currentPass,n._currentPass=null,n._currentSets=null}addBundle(e,t){this.get(e).renderBundles.push(this.get(t).bundleGPU)}createUniformBuffer(e){let t=this.get(e);if(t.buffer===void 0){let n=e.byteLength,r=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,i=[];e.visibility&yO.VERTEX&&i.push(`vertex`),e.visibility&yO.FRAGMENT&&i.push(`fragment`),e.visibility&yO.COMPUTE&&i.push(`compute`);let a=`(${i.join(`,`)})`;jA.label=`bindingBuffer${e.id}_${e.name}_${a}`,jA.size=n,jA.usage=r;let o=this.device.createBuffer(jA);jA.reset(),t.buffer=o}}destroyUniformBuffer(e){this.get(e).buffer.destroy(),this.delete(e)}createBindings(e,t,n,r){this.bindingUtils.createBindings(e,t,n,r)}updateBindings(e,t,n,r){this.bindingUtils.createBindings(e,t,n,r)}updateBinding(e){this.bindingUtils.updateBinding(e)}deleteBindGroupData(e){this.bindingUtils.deleteBindGroupData(e)}createIndexAttribute(e){let t=GPUBufferUsage.INDEX|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST;(e.isStorageBufferAttribute||e.isStorageInstancedBufferAttribute)&&(t|=GPUBufferUsage.STORAGE),this.attributeUtils.createAttribute(e,t)}createAttribute(e){this.attributeUtils.createAttribute(e,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST)}createStorageAttribute(e){this.attributeUtils.createAttribute(e,GPUBufferUsage.STORAGE|GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST)}createIndirectStorageAttribute(e){this.attributeUtils.createAttribute(e,GPUBufferUsage.STORAGE|GPUBufferUsage.INDIRECT|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST)}updateAttribute(e){this.attributeUtils.updateAttribute(e)}destroyAttribute(e){this.attributeUtils.destroyAttribute(e)}updateSize(){this.delete(this.renderer.getCanvasTarget())}hasFeature(e){return BO[e]!==void 0&&(e=BO[e]),this.device.features.has(e)}copyTextureToTexture(e,t,n=null,r=null,i=0,a=0){let o=0,s=0,c=0,l=0,u=0,d=0,f=e.image.width,p=e.image.height,m=1;n!==null&&(n.isBox3===!0?(l=n.min.x,u=n.min.y,d=n.min.z,f=n.max.x-n.min.x,p=n.max.y-n.min.y,m=n.max.z-n.min.z):(l=n.min.x,u=n.min.y,f=n.max.x-n.min.x,p=n.max.y-n.min.y,m=1)),r!==null&&(o=r.x,s=r.y,c=r.z||0),MA.label=`copyTextureToTexture_`+e.id+`_`+t.id;let h=this.device.createCommandEncoder(MA);MA.reset();let g=this.get(e).texture,_=this.get(t).texture;LA.texture=g,LA.mipLevel=i,LA.origin.x=l,LA.origin.y=u,LA.origin.z=d,RA.texture=_,RA.mipLevel=a,RA.origin.x=o,RA.origin.y=s,RA.origin.z=c,VA.width=f,VA.height=p,VA.depthOrArrayLayers=m,h.copyTextureToTexture(LA,RA,VA),LA.reset(),RA.reset(),VA.reset(),qO(this.device,h.finish()),a===0&&t.generateMipmaps&&this.textureUtils.generateMipmaps(t)}copyFramebufferToTexture(e,t,n){let r=this.get(t),i=null;i=t.renderTarget?e.isDepthTexture?this.get(t.depthTexture).texture:this.get(t.textures[0]).texture:e.isDepthTexture?this.textureUtils.getDepthBuffer(t.depth,t.stencil):this.context.getCurrentTexture();let a=this.get(e).texture;if(i.format!==a.format){S(`WebGPUBackend: copyFramebufferToTexture: Source and destination formats do not match.`,i.format,a.format);return}if(this._isRenderCameraDepthArray(t)===!0){let o=this._finishArrayCameraBundleEncoders(r);r.arrayCameraRenderStages.push({bundles:o,framebufferCopy:{texture:e,sourceGPU:i,destinationGPU:a,rectangle:{x:n.x,y:n.y,z:n.z,w:n.w},generateMipmaps:e.generateMipmaps}}),this._createArrayCameraBundleEncoders(t,r);return}let o;if(r.currentPass?(r.currentPass.end(),o=r.encoder):(MA.label=`copyFramebufferToTexture_`+e.id,o=this.device.createCommandEncoder(MA),MA.reset()),this._copyFramebufferToTexture(o,e,i,a,n),r.currentPass){let{descriptor:e}=r;for(let t=0;t<e.colorAttachments.length;t++)e.colorAttachments[t].loadOp=SO.Load;t.depth&&(e.depthStencilAttachment.depthLoadOp=SO.Load),t.stencil&&(e.depthStencilAttachment.stencilLoadOp=SO.Load),r.currentPass=o.beginRenderPass(e),this._resetRenderContextData(r),t.viewport&&this.updateViewport(t),t.scissor&&this.updateScissor(t)}else qO(this.device,o.finish())}_copyFramebufferToTexture(e,t,n,r,i,a=0,o=t.generateMipmaps){LA.texture=n,LA.origin.x=i.x,LA.origin.y=i.y,LA.origin.z=a,RA.texture=r,VA.width=i.z,VA.height=i.w,e.copyTextureToTexture(LA,RA,VA),LA.reset(),RA.reset(),VA.reset(),o&&this.textureUtils.generateMipmaps(t,e)}hasCompatibility(e){return this._compatibility[e]===void 0?super.hasCompatibility(e):this._compatibility[e]}async dispose(){if(await super.dispose(),this.bindingUtils.dispose(),this.textureUtils.dispose(),this.occludedResolveCache){for(let e of this.occludedResolveCache.values())e.destroy();this.occludedResolveCache.clear()}this.parameters.device===void 0&&this.device!==null&&this.device.destroy()}},UA=class extends qe{constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.iesMap=null}copy(e,t){return super.copy(e,t),this.iesMap=e.iesMap,this}},WA=class extends qe{constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.aspect=null}copy(e,t){return super.copy(e,t),this.aspect=e.aspect,this}},GA=class extends XE{constructor(){super(),this.addMaterial(Vm,`MeshPhongMaterial`),this.addMaterial(Ug,`MeshStandardMaterial`),this.addMaterial(Gg,`MeshPhysicalMaterial`),this.addMaterial(Zg,`MeshToonMaterial`),this.addMaterial(jm,`MeshBasicMaterial`),this.addMaterial(zm,`MeshLambertMaterial`),this.addMaterial(gm,`MeshNormalMaterial`),this.addMaterial(e_,`MeshMatcapMaterial`),this.addMaterial(nm,`LineBasicMaterial`),this.addMaterial(im,`LineDashedMaterial`),this.addMaterial(s_,`PointsMaterial`),this.addMaterial(i_,`SpriteMaterial`),this.addMaterial(d_,`ShadowMaterial`),this.addLight(UC,Tt),this.addLight(xE,Qe),this.addLight(jE,$t),this.addLight(CE,qe),this.addLight(bE,xt),this.addLight(SE,Ee),this.addLight(TE,yn),this.addLight(wE,UA),this.addLight(DE,WA),this.addToneMapping(bx,1),this.addToneMapping(xx,2),this.addToneMapping(Sx,3),this.addToneMapping(wx,4),this.addToneMapping(Ox,6),this.addToneMapping(kx,7)}},KA=class extends xD{constructor(e={}){let t;e.forceWebGL?t=_O:(t=HA,e.getFallback=()=>(C(`WebGPURenderer: WebGPU is not available, running under WebGL2 backend.`),new _O(e)));let n=new t(e);super(n,e),this.library=new GA,this.isWebGPURenderer=!0,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}},qA=class extends Lt{constructor(){super(),this.isBundleGroup=!0,this.type=`BundleGroup`,this.static=!0,this.version=0}set needsUpdate(e){e===!0&&this.version++}},JA=class{constructor(e,t=R(0,0,1,1)){this.isRenderPipeline=!0,this.renderer=e,this.outputNode=t,this.outputColorTransform=!0,this.needsUpdate=!0;let n=new em;n.name=`RenderPipeline`,this._quadMesh=new eb(n),this._quadMesh.name=`Render Pipeline`,this._contextData=null,this._toneMapping=e.toneMapping,this._outputColorSpace=e.outputColorSpace}render(){let e=this.renderer;this._update();for(let e of this._contextData.onBeforePipelineCallbacks)e();let t=e.toneMapping,n=e.outputColorSpace;e.toneMapping=0,e.outputColorSpace=Zt.workingColorSpace;let r=e.xr.enabled;e.xr.enabled=!1,this._quadMesh.render(e),e.xr.enabled=r,e.toneMapping=t,e.outputColorSpace=n;for(let e of this._contextData.onAfterPipelineCallbacks)e()}dispose(){this._quadMesh.material.dispose()}_updateContext(){let e=this._toneMapping,t=this._outputColorSpace,n={renderPipeline:this,renderPipelineState:{viewOffsetOwner:null},onBeforePipelineCallbacks:[],onAfterPipelineCallbacks:[]},r=this.outputNode;this.outputColorTransform===!0?r=Oc(r,e,t):(n.toneMapping=e,n.outputColorSpace=t),this._contextData=n,this._quadMesh.material.contextNode=_s(n),this._quadMesh.material.fragmentNode=r,this._quadMesh.material.needsUpdate=!0}_update(){this._toneMapping!==this.renderer.toneMapping&&(this._toneMapping=this.renderer.toneMapping,this.needsUpdate=!0),this._outputColorSpace!==this.renderer.outputColorSpace&&(this._outputColorSpace=this.renderer.outputColorSpace,this.needsUpdate=!0),this.needsUpdate===!0&&(this._updateContext(),this.needsUpdate=!1)}async renderAsync(){Wt(`RenderPipeline: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.`),await this.renderer.init(),this.render()}},YA=class extends JA{constructor(e,t=Qi){super(e,t),this.isDirectRenderPipeline=!0,this._contextNode=null,this._rendererContextNode=null,this._backgroundNodes=new WeakMap}render(e,t){let n=this.renderer;this._update();let r=this._getBackgroundNode(e),i=r===null?null:e.backgroundNode,a=n.contextNode,o=n.getOutputRenderTarget(),s=o!==null&&n.xr.isPresenting===!0&&n.backend.isWebGPUBackend===!0&&n.isOutputTarget===!0,c,l,u,d;r!==null&&(e.backgroundNode=r),n.contextNode=this._contextNode,s&&(c=o.samples,l=o.depthBuffer,o.samples=n.samples,o.depthBuffer=!0);try{for(let e of this._contextData.onBeforePipelineCallbacks)e();u=n.toneMapping,d=n.outputColorSpace,n.toneMapping=0,n.outputColorSpace=Zt.workingColorSpace,n.xr.enabled&&n.xr.renderLayers(),n.render(e,t)}finally{u!==void 0&&(n.toneMapping=u),d!==void 0&&(n.outputColorSpace=d),r!==null&&e.backgroundNode===r&&(e.backgroundNode=i),n.contextNode===this._contextNode&&(n.contextNode=a),s&&(o.samples=c,o.depthBuffer=l);for(let e of this._contextData.onAfterPipelineCallbacks)e()}}_getBackgroundNode(e){if(e.isScene!==!0||e.backgroundNode!=null||e.background?.isColor!==!0)return null;let t=this.renderer.xr.getEnvironmentBlendMode();if(t===`additive`||t===`alpha-blend`)return null;let n=this._backgroundNodes.get(e.background);return n===void 0&&(n=H(e.background),this._backgroundNodes.set(e.background,n)),n}_update(){this._rendererContextNode!==this.renderer.contextNode&&(this._rendererContextNode=this.renderer.contextNode,this.needsUpdate=!0),super._update()}_updateContext(){super._updateContext();let e=this.outputNode,t=this._toneMapping,n=this._outputColorSpace,r=this.outputColorTransform;this._contextNode=this._rendererContextNode.context({...this._contextData,getOutput:(i,a)=>{let o=a.renderer,s=o.getRenderTarget();return o.isOutputTarget===!1&&s?._hasExternalTextures!==!0?i:(Qi.assign(i),r===!0?Oc(e,t,n):e)}})}},XA=class extends JA{constructor(e,t){Wt(`PostProcessing: "PostProcessing" has been renamed to "RenderPipeline". Please update your code to use "THREE.RenderPipeline" instead.`),super(e,t)}},ZA=class extends yt{constructor(e){super(),this.name=``,this.buffer=null,this.maxByteLength=e,this.isReadbackBuffer=!0,this._mapped=!1}release(){this.dispatchEvent({type:`release`})}dispose(){this.dispatchEvent({type:`dispose`})}},QA=class extends pn{constructor(e=1,t=1){super(),this.image={width:e,height:t},this.magFilter=Ce,this.minFilter=Ce,this.isStorageTexture=!0,this.mipmapsAutoUpdate=!0}setSize(e,t){(this.image.width!==e||this.image.height!==t)&&(this.image.width=e,this.image.height=t,this.dispose())}},$A=class extends pn{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!1,this.image={width:e,height:t,depth:n},this.magFilter=Ce,this.minFilter=Ce,this.wrapR=ke,this.isStorageTexture=!0,this.is3DTexture=!0}copy(e){return super.copy(e),this.wrapR=e.wrapR,this}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}},ej=class extends pn{constructor(e=1,t=1,n=1){super(),this.isArrayTexture=!0,this.image={width:e,height:t,depth:n},this.magFilter=Ce,this.minFilter=Ce,this.isStorageTexture=!0}setSize(e,t,n){(this.image.width!==e||this.image.height!==t||this.image.depth!==n)&&(this.image.width=e,this.image.height=t,this.image.depth=n,this.dispose())}},tj=class extends wb{constructor(e,t){super(e,t,Uint32Array),this.isIndirectStorageBufferAttribute=!0}},nj=class extends fe{constructor(e){super(e),this.textures={},this.nodes={}}load(e,t,n,r){let i=new Ct(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,n=>{try{t(this.parse(JSON.parse(n)))}catch(t){r?r(t):S(t),this.manager.itemError(e)}},n,r)}parseNodes(e){let t={};if(e!==void 0){for(let n of e){let{uuid:e,type:r}=n;t[e]=this.createNodeFromType(r),t[e].uuid=e}let n={nodes:t,textures:this.textures};for(let r of e)r.meta=n,t[r.uuid].deserialize(r),delete r.meta}return t}parse(e){let t=this.createNodeFromType(e.type);return t.uuid=e.uuid,e.meta={nodes:this.parseNodes(e.nodes),textures:this.textures},t.deserialize(e),delete e.meta,t}setTextures(e){return this.textures=e,this}setNodes(e){return this.nodes=e,this}createNodeFromType(e){return this.nodes[e]===void 0?(S(`NodeLoader: Node type not found:`,e),N()):new this.nodes[e]}},rj=class extends le{constructor(e){super(e),this.nodes={},this.nodeMaterials={}}parse(e){let t=super.parse(e),n=this.nodes,r=e.inputNodes;for(let e in r)t[e]=n[r[e]];return t}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}createMaterialFromType(e){let t=this.nodeMaterials[e];return t===void 0?super.createMaterialFromType(e):new t}},ij=class extends te{constructor(e){super(e),this.nodes={},this.nodeMaterials={},this._nodesJSON=null}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}parse(e,t){this._nodesJSON=e.nodes;let n=super.parse(e,t);return this._nodesJSON=null,n}async parseAsync(e){this._nodesJSON=e.nodes;let t=await super.parseAsync(e);return this._nodesJSON=null,t}parseNodes(e,t){if(e!==void 0){let n=new nj;return n.setNodes(this.nodes),n.setTextures(t),n.parseNodes(e)}return{}}parseMaterials(e,t){let n={};if(e!==void 0){let r=this.parseNodes(this._nodesJSON,t),i=new rj;i.setTextures(t),i.setNodes(r),i.setNodeMaterials(this.nodeMaterials);for(let t=0,r=e.length;t<r;t++){let r=e[t];n[r.uuid]=i.parse(r)}}return n}},aj=class extends XE{constructor(){super(),this.addLight(UC,Tt),this.addLight(xE,Qe),this.addLight(jE,$t),this.addLight(CE,qe),this.addLight(bE,xt),this.addLight(SE,Ee),this.addLight(TE,yn),this.addLight(wE,UA),this.addLight(DE,WA),this.addToneMapping(bx,1),this.addToneMapping(xx,2),this.addToneMapping(Sx,3),this.addToneMapping(wx,4),this.addToneMapping(Ox,6),this.addToneMapping(kx,7)}},oj=class extends Lt{constructor(){super(),this.isClippingGroup=!0,this.clippingPlanes=[],this.enabled=!0,this.clipIntersection=!1,this.clipShadows=!1}};export{ic as $,Cb as $n,HT as $t,ms as A,Dc as An,dO as Ar,Ug as At,Rg as B,TC as Bn,vE as Bt,fD as C,Kx as Cn,jp as Cr,jm as Ct,Rs as D,Hs as Dn,g_ as Dr,Vm as Dt,Ax as E,Us as En,Cp as Er,gm as Et,ym as F,t_ as Fn,sr as Fr,zT as Ft,ba as G,sv as Gn,Fn as Gt,xc as H,vr as Hn,nj as Ht,Vu as I,xb as In,lr as Ir,_E as It,qD as J,$A as Jn,ar as Jt,Fx as K,Rn as Kn,ij as Kt,kc as L,ol as Ln,ur as Lr,GT as Lt,gs as M,xD as Mn,KA as Mr,Jl as Mt,mr as N,Gs as Nn,sS as Nr,T as Nt,Jx as O,Gu as On,tA as Or,Gg as Ot,xm as P,ub as Pn,cr as Pr,or as Pt,wE as Q,Ff as Qn,VT as Qt,YA as R,yr as Rn,UT as Rt,_c as S,fb as Sn,Qp as Sr,wr as St,Wp as T,jE as Tn,lx as Tr,e_ as Tt,br as U,CE as Un,em as Ut,Sf as V,d_ as Vn,yE as Vt,hu as W,i_ as Wn,rj as Wt,SE as X,ej as Xn,w as Xt,zE as Y,Nf as Yn,BT as Yt,UA as Z,wb as Zn,rr as Zt,Qs as _,XA as _n,sy as _r,yv as _t,ga as a,xg as an,ks as ar,mc as at,Md as b,z as bn,js as br,G as bt,Fc as c,Uv as cn,hr as cr,QE as ct,Em as d,Lm as dn,Rc as dr,_p as dt,Od as en,QA as er,tj as et,Dm as f,Ih as fn,qs as fr,sC as ft,hv as g,s_ as gn,ha as gr,cp as gt,Ov as h,Db as hn,ua as hr,im as ht,pr as i,nv as in,uv as ir,xp as it,Cr as j,JA as jn,HA as jr,Zg as jt,dc as k,Jy as kn,_O as kr,qg as kt,XD as l,av as ln,zb as lr,yp as lt,xv as m,RC as mn,el as mr,nm as mt,bE as n,Ca as nn,Nb as nr,jc as nt,va as o,Ng as on,Z as or,gr as ot,aj as p,UC as pn,vx as pr,mm as pt,gy as q,GA as qn,ir as qt,BC as r,pv as rn,dv as rr,Mc as rt,lS as s,Lv as sn,NT as sr,TE as st,vp as t,Bl as tn,Ib as tr,xr as tt,tS as u,mx as un,Wc as ur,Om as ut,Zc as v,WA as vn,Ub as vr,Y as vt,oj as w,ZA as wn,kp as wr,zm as wt,qA as x,eb as xn,Kb as xr,Bc as xt,nl as y,DE as yn,ws as yr,Ju as yt,xE as z,hC as zn,Hc as zt};