deeptwins-cesium-engine 0.0.3

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 (2085) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +640 -0
  2. package/Build/Workers/chunk-2363JE27.js +163 -0
  3. package/Build/Workers/chunk-23T2IPHV.js +55 -0
  4. package/Build/Workers/chunk-27SAH2Q2.js +55 -0
  5. package/Build/Workers/chunk-2AM4E2WD.js +101 -0
  6. package/Build/Workers/chunk-2H4D4HBM.js +101 -0
  7. package/Build/Workers/chunk-2KBLMCYQ.js +198 -0
  8. package/Build/Workers/chunk-2MWF4IES.js +398 -0
  9. package/Build/Workers/chunk-2O7PRNCW.js +288 -0
  10. package/Build/Workers/chunk-2RCIRXNI.js +75 -0
  11. package/Build/Workers/chunk-3JIEAYRM.js +940 -0
  12. package/Build/Workers/chunk-3VNQVXD6.js +837 -0
  13. package/Build/Workers/chunk-3XR54LVR.js +75 -0
  14. package/Build/Workers/chunk-3YTMGEXW.js +1443 -0
  15. package/Build/Workers/chunk-3ZP3VA4L.js +171 -0
  16. package/Build/Workers/chunk-4AKOLNCZ.js +139 -0
  17. package/Build/Workers/chunk-4BHWJWS3.js +171 -0
  18. package/Build/Workers/chunk-4QSCEADX.js +1800 -0
  19. package/Build/Workers/chunk-4ZKQXB7T.js +1460 -0
  20. package/Build/Workers/chunk-4ZX6BO6C.js +476 -0
  21. package/Build/Workers/chunk-55NHNEI7.js +163 -0
  22. package/Build/Workers/chunk-5F3SUA6W.js +8366 -0
  23. package/Build/Workers/chunk-5FBLADWD.js +692 -0
  24. package/Build/Workers/chunk-5H7FXJTE.js +2719 -0
  25. package/Build/Workers/chunk-5JKH4AMT.js +58 -0
  26. package/Build/Workers/chunk-5MTUN2SE.js +642 -0
  27. package/Build/Workers/chunk-5PWCXSID.js +256 -0
  28. package/Build/Workers/chunk-5RL7XAZS.js +256 -0
  29. package/Build/Workers/chunk-5TZVQOFD.js +305 -0
  30. package/Build/Workers/chunk-67FTKXPJ.js +352 -0
  31. package/Build/Workers/chunk-6AIBN5NQ.js +1054 -0
  32. package/Build/Workers/chunk-6D6BOTSA.js +414 -0
  33. package/Build/Workers/chunk-6FGAWC5J.js +44 -0
  34. package/Build/Workers/chunk-6HKAPCSO.js +280 -0
  35. package/Build/Workers/chunk-6UJDVUJ4.js +8366 -0
  36. package/Build/Workers/chunk-73Q77JO7.js +138 -0
  37. package/Build/Workers/chunk-7A6QUBKY.js +58 -0
  38. package/Build/Workers/chunk-7APZZMCL.js +73 -0
  39. package/Build/Workers/chunk-7BHC3VOI.js +511 -0
  40. package/Build/Workers/chunk-7GQHESFY.js +368 -0
  41. package/Build/Workers/chunk-7MVC3OLP.js +58 -0
  42. package/Build/Workers/chunk-7UNMLR74.js +1800 -0
  43. package/Build/Workers/chunk-A2QTGP5S.js +55 -0
  44. package/Build/Workers/chunk-A3FZIBXG.js +55 -0
  45. package/Build/Workers/chunk-A53R2F2L.js +305 -0
  46. package/Build/Workers/chunk-A6LIUE7X.js +692 -0
  47. package/Build/Workers/chunk-A6YFUGJO.js +139 -0
  48. package/Build/Workers/chunk-AJYWXC6I.js +97 -0
  49. package/Build/Workers/chunk-ALTIGQTT.js +288 -0
  50. package/Build/Workers/chunk-AOIO5VUS.js +8366 -0
  51. package/Build/Workers/chunk-AT2CG6PG.js +3514 -0
  52. package/Build/Workers/chunk-ATX74V7S.js +55 -0
  53. package/Build/Workers/chunk-AZPXT6RB.js +1067 -0
  54. package/Build/Workers/chunk-B7JRBTT6.js +682 -0
  55. package/Build/Workers/chunk-BALMTCKJ.js +138 -0
  56. package/Build/Workers/chunk-BBYRID6W.js +352 -0
  57. package/Build/Workers/chunk-BDX4AYXL.js +162 -0
  58. package/Build/Workers/chunk-BG2DK4Q5.js +101 -0
  59. package/Build/Workers/chunk-BSNC3NBZ.js +139 -0
  60. package/Build/Workers/chunk-BZLYQCIC.js +958 -0
  61. package/Build/Workers/chunk-C4NX77B5.js +57 -0
  62. package/Build/Workers/chunk-CHNDJRYA.js +1054 -0
  63. package/Build/Workers/chunk-CJOV55CW.js +1067 -0
  64. package/Build/Workers/chunk-COGPE5Z2.js +241 -0
  65. package/Build/Workers/chunk-CRCK5VX6.js +497 -0
  66. package/Build/Workers/chunk-CTLQNSVP.js +455 -0
  67. package/Build/Workers/chunk-CW7W27IZ.js +299 -0
  68. package/Build/Workers/chunk-DICY26ID.js +2719 -0
  69. package/Build/Workers/chunk-DLAVWLZW.js +682 -0
  70. package/Build/Workers/chunk-DMEFNTUV.js +1317 -0
  71. package/Build/Workers/chunk-DQSJEOZY.js +55 -0
  72. package/Build/Workers/chunk-F6UXXCPK.js +3514 -0
  73. package/Build/Workers/chunk-FKIR6F3B.js +97 -0
  74. package/Build/Workers/chunk-FRBZJJVU.js +2719 -0
  75. package/Build/Workers/chunk-FRLH26PM.js +940 -0
  76. package/Build/Workers/chunk-FT6HYEKU.js +3514 -0
  77. package/Build/Workers/chunk-FYDCQ2VN.js +73 -0
  78. package/Build/Workers/chunk-G5OKIL5P.js +55 -0
  79. package/Build/Workers/chunk-G6VHLVWG.js +101 -0
  80. package/Build/Workers/chunk-GBGV4U6Z.js +219 -0
  81. package/Build/Workers/chunk-GDU4RZSZ.js +940 -0
  82. package/Build/Workers/chunk-GJRVCSXV.js +37 -0
  83. package/Build/Workers/chunk-GKWOUMYA.js +37 -0
  84. package/Build/Workers/chunk-GNDFFW5Z.js +1443 -0
  85. package/Build/Workers/chunk-GNQ5BH75.js +352 -0
  86. package/Build/Workers/chunk-GNQUZV4R.js +171 -0
  87. package/Build/Workers/chunk-GOCJHCLA.js +352 -0
  88. package/Build/Workers/chunk-GTY4K4IA.js +219 -0
  89. package/Build/Workers/chunk-GXBTJBHN.js +102 -0
  90. package/Build/Workers/chunk-H6Q7E4BQ.js +114 -0
  91. package/Build/Workers/chunk-HEGESGGY.js +219 -0
  92. package/Build/Workers/chunk-HG3HIMYL.js +241 -0
  93. package/Build/Workers/chunk-HGEYVFMI.js +1800 -0
  94. package/Build/Workers/chunk-HHGOFZVQ.js +124 -0
  95. package/Build/Workers/chunk-HXEVICMT.js +37 -0
  96. package/Build/Workers/chunk-HXKUEOOD.js +352 -0
  97. package/Build/Workers/chunk-I4REFVXB.js +256 -0
  98. package/Build/Workers/chunk-IL5F6WEE.js +497 -0
  99. package/Build/Workers/chunk-IOODZNYE.js +629 -0
  100. package/Build/Workers/chunk-IVLDVV5R.js +788 -0
  101. package/Build/Workers/chunk-IWP4XCPO.js +778 -0
  102. package/Build/Workers/chunk-JBTUZNI2.js +398 -0
  103. package/Build/Workers/chunk-JMSXZ6AI.js +414 -0
  104. package/Build/Workers/chunk-JTGVXCP2.js +2058 -0
  105. package/Build/Workers/chunk-JUK2ZSWT.js +198 -0
  106. package/Build/Workers/chunk-K6HQ5W6R.js +171 -0
  107. package/Build/Workers/chunk-KC3G7WHZ.js +57 -0
  108. package/Build/Workers/chunk-KGPKBCGY.js +97 -0
  109. package/Build/Workers/chunk-KKGD7HAW.js +414 -0
  110. package/Build/Workers/chunk-KQSN3QZM.js +368 -0
  111. package/Build/Workers/chunk-KROSQJUA.js +44 -0
  112. package/Build/Workers/chunk-L4JLDVCM.js +57 -0
  113. package/Build/Workers/chunk-LAOFDSKL.js +642 -0
  114. package/Build/Workers/chunk-LIYMRHGR.js +387 -0
  115. package/Build/Workers/chunk-LKCCQ3AW.js +198 -0
  116. package/Build/Workers/chunk-LLQFSX7U.js +139 -0
  117. package/Build/Workers/chunk-LSDXP6EX.js +75 -0
  118. package/Build/Workers/chunk-LTYK7VYQ.js +138 -0
  119. package/Build/Workers/chunk-LYMP3LWI.js +387 -0
  120. package/Build/Workers/chunk-M2WCZSU6.js +241 -0
  121. package/Build/Workers/chunk-M35VLUHY.js +352 -0
  122. package/Build/Workers/chunk-MAPGTIYK.js +2058 -0
  123. package/Build/Workers/chunk-MG6SYM3V.js +455 -0
  124. package/Build/Workers/chunk-MKMZHRB3.js +788 -0
  125. package/Build/Workers/chunk-MNR7L6SQ.js +1483 -0
  126. package/Build/Workers/chunk-MO25ZQ2I.js +958 -0
  127. package/Build/Workers/chunk-MOCL5YUJ.js +8366 -0
  128. package/Build/Workers/chunk-MRYY6ETH.js +280 -0
  129. package/Build/Workers/chunk-NAIA5L2S.js +682 -0
  130. package/Build/Workers/chunk-NMDV3OGH.js +958 -0
  131. package/Build/Workers/chunk-NYE77VTA.js +1054 -0
  132. package/Build/Workers/chunk-O6RZEKHZ.js +778 -0
  133. package/Build/Workers/chunk-OFOJ5HD6.js +1460 -0
  134. package/Build/Workers/chunk-OJNNQSZI.js +788 -0
  135. package/Build/Workers/chunk-OJXQBSG4.js +692 -0
  136. package/Build/Workers/chunk-OOCGX2OD.js +102 -0
  137. package/Build/Workers/chunk-OOY3DP7Z.js +788 -0
  138. package/Build/Workers/chunk-OSDDHXLU.js +1483 -0
  139. package/Build/Workers/chunk-OVZNLF46.js +241 -0
  140. package/Build/Workers/chunk-OXFU5HNU.js +162 -0
  141. package/Build/Workers/chunk-P5CGIJUY.js +73 -0
  142. package/Build/Workers/chunk-POLLOX2O.js +352 -0
  143. package/Build/Workers/chunk-POUR54ZW.js +37 -0
  144. package/Build/Workers/chunk-PR6F33M6.js +682 -0
  145. package/Build/Workers/chunk-Q6GCDF2J.js +44 -0
  146. package/Build/Workers/chunk-Q7HIBRGE.js +97 -0
  147. package/Build/Workers/chunk-QCJPQ5CQ.js +57 -0
  148. package/Build/Workers/chunk-QDKQNKG3.js +256 -0
  149. package/Build/Workers/chunk-QDTDTLQY.js +1067 -0
  150. package/Build/Workers/chunk-QEANVUGT.js +163 -0
  151. package/Build/Workers/chunk-QFBCIX7J.js +455 -0
  152. package/Build/Workers/chunk-QIKGPNLN.js +299 -0
  153. package/Build/Workers/chunk-QTKDUHWH.js +497 -0
  154. package/Build/Workers/chunk-QUAH3XOT.js +138 -0
  155. package/Build/Workers/chunk-R4MI537H.js +1443 -0
  156. package/Build/Workers/chunk-R5GL5C3T.js +1483 -0
  157. package/Build/Workers/chunk-RBAGNNPN.js +219 -0
  158. package/Build/Workers/chunk-RH6GMTSG.js +497 -0
  159. package/Build/Workers/chunk-RHJJWKSH.js +73 -0
  160. package/Build/Workers/chunk-RHV6AHJW.js +305 -0
  161. package/Build/Workers/chunk-RUZPDKUX.js +114 -0
  162. package/Build/Workers/chunk-RXZDTDIY.js +439 -0
  163. package/Build/Workers/chunk-SCSEVBY4.js +102 -0
  164. package/Build/Workers/chunk-SKMYTWWS.js +299 -0
  165. package/Build/Workers/chunk-SKVAQOZZ.js +1443 -0
  166. package/Build/Workers/chunk-SPA2KPH3.js +368 -0
  167. package/Build/Workers/chunk-STDNU6SV.js +1460 -0
  168. package/Build/Workers/chunk-SXOBEELD.js +55 -0
  169. package/Build/Workers/chunk-SYDXDJY5.js +2058 -0
  170. package/Build/Workers/chunk-SZ4ALZDU.js +305 -0
  171. package/Build/Workers/chunk-T2AGEECA.js +387 -0
  172. package/Build/Workers/chunk-T5ZG4SFF.js +1067 -0
  173. package/Build/Workers/chunk-TDSVSW5A.js +1460 -0
  174. package/Build/Workers/chunk-TJF36YYN.js +837 -0
  175. package/Build/Workers/chunk-TNZHNGKK.js +439 -0
  176. package/Build/Workers/chunk-TTWIV2BN.js +102 -0
  177. package/Build/Workers/chunk-TX3TQPIA.js +44 -0
  178. package/Build/Workers/chunk-TYPTCQPI.js +1317 -0
  179. package/Build/Workers/chunk-TZA4ZWFC.js +75 -0
  180. package/Build/Workers/chunk-UFDTAQBE.js +476 -0
  181. package/Build/Workers/chunk-UG2DPFOL.js +352 -0
  182. package/Build/Workers/chunk-UG3AH5C3.js +629 -0
  183. package/Build/Workers/chunk-UPPGWBJU.js +511 -0
  184. package/Build/Workers/chunk-URGEDZBS.js +476 -0
  185. package/Build/Workers/chunk-V35NQOJC.js +642 -0
  186. package/Build/Workers/chunk-VDNDTTCD.js +958 -0
  187. package/Build/Workers/chunk-VQIKTYAO.js +368 -0
  188. package/Build/Workers/chunk-VRXHACYU.js +476 -0
  189. package/Build/Workers/chunk-VTYZVS6I.js +455 -0
  190. package/Build/Workers/chunk-VVNCCJGH.js +398 -0
  191. package/Build/Workers/chunk-W4V3BNFU.js +114 -0
  192. package/Build/Workers/chunk-W4XUEDU5.js +2058 -0
  193. package/Build/Workers/chunk-W7UYJE5O.js +2719 -0
  194. package/Build/Workers/chunk-WB4TSSBQ.js +3514 -0
  195. package/Build/Workers/chunk-WGZVYW2C.js +124 -0
  196. package/Build/Workers/chunk-WNFIOIKE.js +414 -0
  197. package/Build/Workers/chunk-WNHOCO2K.js +280 -0
  198. package/Build/Workers/chunk-WQG2W2WD.js +837 -0
  199. package/Build/Workers/chunk-WTLYD4FE.js +1483 -0
  200. package/Build/Workers/chunk-WV2G6UNC.js +940 -0
  201. package/Build/Workers/chunk-WVC3OW5V.js +629 -0
  202. package/Build/Workers/chunk-WWQFFOV6.js +299 -0
  203. package/Build/Workers/chunk-XD7QHRAY.js +288 -0
  204. package/Build/Workers/chunk-XH6GW5M4.js +58 -0
  205. package/Build/Workers/chunk-XIX2VR7Z.js +778 -0
  206. package/Build/Workers/chunk-XJYSONL4.js +1054 -0
  207. package/Build/Workers/chunk-XP6ASNFM.js +1317 -0
  208. package/Build/Workers/chunk-XRDMBCX3.js +439 -0
  209. package/Build/Workers/chunk-XUA6BCV5.js +642 -0
  210. package/Build/Workers/chunk-XVBMYEYQ.js +124 -0
  211. package/Build/Workers/chunk-XWOAVRWZ.js +124 -0
  212. package/Build/Workers/chunk-Y4ALZ4SS.js +198 -0
  213. package/Build/Workers/chunk-Y4GOZA56.js +163 -0
  214. package/Build/Workers/chunk-YF2NVO5B.js +837 -0
  215. package/Build/Workers/chunk-YGVXG7IR.js +114 -0
  216. package/Build/Workers/chunk-YI7RTZGC.js +280 -0
  217. package/Build/Workers/chunk-YM4UTBTX.js +1800 -0
  218. package/Build/Workers/chunk-YP5ZF2MJ.js +162 -0
  219. package/Build/Workers/chunk-YSSL4KKM.js +387 -0
  220. package/Build/Workers/chunk-YSYSXSHF.js +629 -0
  221. package/Build/Workers/chunk-YX562XOB.js +692 -0
  222. package/Build/Workers/chunk-YZWA5B4R.js +511 -0
  223. package/Build/Workers/chunk-Z6DFT4D3.js +288 -0
  224. package/Build/Workers/chunk-Z6PVZUIE.js +398 -0
  225. package/Build/Workers/chunk-ZAI6LCSI.js +511 -0
  226. package/Build/Workers/chunk-ZBIINVUF.js +778 -0
  227. package/Build/Workers/chunk-ZG3TBDRX.js +1317 -0
  228. package/Build/Workers/chunk-ZGXHZJ75.js +439 -0
  229. package/Build/Workers/chunk-ZWDOE2JF.js +162 -0
  230. package/Build/Workers/combineGeometry.js +66 -0
  231. package/Build/Workers/createBoxGeometry.js +58 -0
  232. package/Build/Workers/createBoxOutlineGeometry.js +231 -0
  233. package/Build/Workers/createCircleGeometry.js +201 -0
  234. package/Build/Workers/createCircleOutlineGeometry.js +147 -0
  235. package/Build/Workers/createCoplanarPolygonGeometry.js +505 -0
  236. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +225 -0
  237. package/Build/Workers/createCorridorGeometry.js +1258 -0
  238. package/Build/Workers/createCorridorOutlineGeometry.js +563 -0
  239. package/Build/Workers/createCylinderGeometry.js +60 -0
  240. package/Build/Workers/createCylinderOutlineGeometry.js +231 -0
  241. package/Build/Workers/createEllipseGeometry.js +72 -0
  242. package/Build/Workers/createEllipseOutlineGeometry.js +65 -0
  243. package/Build/Workers/createEllipsoidGeometry.js +59 -0
  244. package/Build/Workers/createEllipsoidOutlineGeometry.js +61 -0
  245. package/Build/Workers/createFrustumGeometry.js +58 -0
  246. package/Build/Workers/createFrustumOutlineGeometry.js +234 -0
  247. package/Build/Workers/createGeometry.js +173 -0
  248. package/Build/Workers/createGroundPolylineGeometry.js +1602 -0
  249. package/Build/Workers/createPlaneGeometry.js +223 -0
  250. package/Build/Workers/createPlaneOutlineGeometry.js +124 -0
  251. package/Build/Workers/createPolygonGeometry.js +1404 -0
  252. package/Build/Workers/createPolygonOutlineGeometry.js +532 -0
  253. package/Build/Workers/createPolylineGeometry.js +491 -0
  254. package/Build/Workers/createPolylineVolumeGeometry.js +374 -0
  255. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +272 -0
  256. package/Build/Workers/createRectangleGeometry.js +1264 -0
  257. package/Build/Workers/createRectangleOutlineGeometry.js +476 -0
  258. package/Build/Workers/createSimplePolylineGeometry.js +397 -0
  259. package/Build/Workers/createSphereGeometry.js +116 -0
  260. package/Build/Workers/createSphereOutlineGeometry.js +116 -0
  261. package/Build/Workers/createTaskProcessorWorker.js +32 -0
  262. package/Build/Workers/createVectorTileClampedPolylines.js +492 -0
  263. package/Build/Workers/createVectorTileGeometries.js +387 -0
  264. package/Build/Workers/createVectorTilePoints.js +114 -0
  265. package/Build/Workers/createVectorTilePolygons.js +386 -0
  266. package/Build/Workers/createVectorTilePolylines.js +262 -0
  267. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +91 -0
  268. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +565 -0
  269. package/Build/Workers/createVerticesFromHeightmap.js +2254 -0
  270. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +499 -0
  271. package/Build/Workers/createWallGeometry.js +487 -0
  272. package/Build/Workers/createWallOutlineGeometry.js +335 -0
  273. package/Build/Workers/decodeDraco.js +369 -0
  274. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +2666 -0
  275. package/Build/Workers/decodeI3S.js +1339 -0
  276. package/Build/Workers/gaussianSplatSorter.js +62 -0
  277. package/Build/Workers/gaussianSplatTextureGenerator.js +68 -0
  278. package/Build/Workers/incrementallyBuildTerrainPicker.js +121 -0
  279. package/Build/Workers/transcodeKTX2.js +3463 -0
  280. package/Build/Workers/transferTypedArrayTest.js +41 -0
  281. package/Build/Workers/upsampleQuantizedTerrainMesh.js +820 -0
  282. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +95 -0
  283. package/LICENSE.md +928 -0
  284. package/README.md +3 -0
  285. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  286. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  287. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  288. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  289. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  290. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  291. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  292. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  293. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  294. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  295. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  296. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  297. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  298. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  299. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  300. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  301. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  302. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  303. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  304. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  305. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  306. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  307. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  308. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  309. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  310. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  311. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  312. package/Source/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  313. package/Source/Assets/Images/bing_maps_credit.png +0 -0
  314. package/Source/Assets/Images/cesium_credit.png +0 -0
  315. package/Source/Assets/Images/google_earth_credit.png +0 -0
  316. package/Source/Assets/Images/ion-credit.png +0 -0
  317. package/Source/Assets/Textures/LensFlare/DirtMask.jpg +0 -0
  318. package/Source/Assets/Textures/LensFlare/StarBurst.jpg +0 -0
  319. package/Source/Assets/Textures/NaturalEarthII/0/0/0.jpg +0 -0
  320. package/Source/Assets/Textures/NaturalEarthII/0/1/0.jpg +0 -0
  321. package/Source/Assets/Textures/NaturalEarthII/1/0/0.jpg +0 -0
  322. package/Source/Assets/Textures/NaturalEarthII/1/0/1.jpg +0 -0
  323. package/Source/Assets/Textures/NaturalEarthII/1/1/0.jpg +0 -0
  324. package/Source/Assets/Textures/NaturalEarthII/1/1/1.jpg +0 -0
  325. package/Source/Assets/Textures/NaturalEarthII/1/2/0.jpg +0 -0
  326. package/Source/Assets/Textures/NaturalEarthII/1/2/1.jpg +0 -0
  327. package/Source/Assets/Textures/NaturalEarthII/1/3/0.jpg +0 -0
  328. package/Source/Assets/Textures/NaturalEarthII/1/3/1.jpg +0 -0
  329. package/Source/Assets/Textures/NaturalEarthII/2/0/0.jpg +0 -0
  330. package/Source/Assets/Textures/NaturalEarthII/2/0/1.jpg +0 -0
  331. package/Source/Assets/Textures/NaturalEarthII/2/0/2.jpg +0 -0
  332. package/Source/Assets/Textures/NaturalEarthII/2/0/3.jpg +0 -0
  333. package/Source/Assets/Textures/NaturalEarthII/2/1/0.jpg +0 -0
  334. package/Source/Assets/Textures/NaturalEarthII/2/1/1.jpg +0 -0
  335. package/Source/Assets/Textures/NaturalEarthII/2/1/2.jpg +0 -0
  336. package/Source/Assets/Textures/NaturalEarthII/2/1/3.jpg +0 -0
  337. package/Source/Assets/Textures/NaturalEarthII/2/2/0.jpg +0 -0
  338. package/Source/Assets/Textures/NaturalEarthII/2/2/1.jpg +0 -0
  339. package/Source/Assets/Textures/NaturalEarthII/2/2/2.jpg +0 -0
  340. package/Source/Assets/Textures/NaturalEarthII/2/2/3.jpg +0 -0
  341. package/Source/Assets/Textures/NaturalEarthII/2/3/0.jpg +0 -0
  342. package/Source/Assets/Textures/NaturalEarthII/2/3/1.jpg +0 -0
  343. package/Source/Assets/Textures/NaturalEarthII/2/3/2.jpg +0 -0
  344. package/Source/Assets/Textures/NaturalEarthII/2/3/3.jpg +0 -0
  345. package/Source/Assets/Textures/NaturalEarthII/2/4/0.jpg +0 -0
  346. package/Source/Assets/Textures/NaturalEarthII/2/4/1.jpg +0 -0
  347. package/Source/Assets/Textures/NaturalEarthII/2/4/2.jpg +0 -0
  348. package/Source/Assets/Textures/NaturalEarthII/2/4/3.jpg +0 -0
  349. package/Source/Assets/Textures/NaturalEarthII/2/5/0.jpg +0 -0
  350. package/Source/Assets/Textures/NaturalEarthII/2/5/1.jpg +0 -0
  351. package/Source/Assets/Textures/NaturalEarthII/2/5/2.jpg +0 -0
  352. package/Source/Assets/Textures/NaturalEarthII/2/5/3.jpg +0 -0
  353. package/Source/Assets/Textures/NaturalEarthII/2/6/0.jpg +0 -0
  354. package/Source/Assets/Textures/NaturalEarthII/2/6/1.jpg +0 -0
  355. package/Source/Assets/Textures/NaturalEarthII/2/6/2.jpg +0 -0
  356. package/Source/Assets/Textures/NaturalEarthII/2/6/3.jpg +0 -0
  357. package/Source/Assets/Textures/NaturalEarthII/2/7/0.jpg +0 -0
  358. package/Source/Assets/Textures/NaturalEarthII/2/7/1.jpg +0 -0
  359. package/Source/Assets/Textures/NaturalEarthII/2/7/2.jpg +0 -0
  360. package/Source/Assets/Textures/NaturalEarthII/2/7/3.jpg +0 -0
  361. package/Source/Assets/Textures/NaturalEarthII/tilemapresource.xml +14 -0
  362. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  363. package/Source/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  364. package/Source/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  365. package/Source/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  366. package/Source/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  367. package/Source/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  368. package/Source/Assets/Textures/maki/airfield.png +0 -0
  369. package/Source/Assets/Textures/maki/airport.png +0 -0
  370. package/Source/Assets/Textures/maki/alcohol-shop.png +0 -0
  371. package/Source/Assets/Textures/maki/america-football.png +0 -0
  372. package/Source/Assets/Textures/maki/art-gallery.png +0 -0
  373. package/Source/Assets/Textures/maki/bakery.png +0 -0
  374. package/Source/Assets/Textures/maki/bank.png +0 -0
  375. package/Source/Assets/Textures/maki/bar.png +0 -0
  376. package/Source/Assets/Textures/maki/baseball.png +0 -0
  377. package/Source/Assets/Textures/maki/basketball.png +0 -0
  378. package/Source/Assets/Textures/maki/beer.png +0 -0
  379. package/Source/Assets/Textures/maki/bicycle.png +0 -0
  380. package/Source/Assets/Textures/maki/building.png +0 -0
  381. package/Source/Assets/Textures/maki/bus.png +0 -0
  382. package/Source/Assets/Textures/maki/cafe.png +0 -0
  383. package/Source/Assets/Textures/maki/camera.png +0 -0
  384. package/Source/Assets/Textures/maki/campsite.png +0 -0
  385. package/Source/Assets/Textures/maki/car.png +0 -0
  386. package/Source/Assets/Textures/maki/cemetery.png +0 -0
  387. package/Source/Assets/Textures/maki/cesium.png +0 -0
  388. package/Source/Assets/Textures/maki/chemist.png +0 -0
  389. package/Source/Assets/Textures/maki/cinema.png +0 -0
  390. package/Source/Assets/Textures/maki/circle-stroked.png +0 -0
  391. package/Source/Assets/Textures/maki/circle.png +0 -0
  392. package/Source/Assets/Textures/maki/city.png +0 -0
  393. package/Source/Assets/Textures/maki/clothing-store.png +0 -0
  394. package/Source/Assets/Textures/maki/college.png +0 -0
  395. package/Source/Assets/Textures/maki/commercial.png +0 -0
  396. package/Source/Assets/Textures/maki/cricket.png +0 -0
  397. package/Source/Assets/Textures/maki/cross.png +0 -0
  398. package/Source/Assets/Textures/maki/dam.png +0 -0
  399. package/Source/Assets/Textures/maki/danger.png +0 -0
  400. package/Source/Assets/Textures/maki/disability.png +0 -0
  401. package/Source/Assets/Textures/maki/dog-park.png +0 -0
  402. package/Source/Assets/Textures/maki/embassy.png +0 -0
  403. package/Source/Assets/Textures/maki/emergency-telephone.png +0 -0
  404. package/Source/Assets/Textures/maki/entrance.png +0 -0
  405. package/Source/Assets/Textures/maki/farm.png +0 -0
  406. package/Source/Assets/Textures/maki/fast-food.png +0 -0
  407. package/Source/Assets/Textures/maki/ferry.png +0 -0
  408. package/Source/Assets/Textures/maki/fire-station.png +0 -0
  409. package/Source/Assets/Textures/maki/fuel.png +0 -0
  410. package/Source/Assets/Textures/maki/garden.png +0 -0
  411. package/Source/Assets/Textures/maki/gift.png +0 -0
  412. package/Source/Assets/Textures/maki/golf.png +0 -0
  413. package/Source/Assets/Textures/maki/grocery.png +0 -0
  414. package/Source/Assets/Textures/maki/hairdresser.png +0 -0
  415. package/Source/Assets/Textures/maki/harbor.png +0 -0
  416. package/Source/Assets/Textures/maki/heart.png +0 -0
  417. package/Source/Assets/Textures/maki/heliport.png +0 -0
  418. package/Source/Assets/Textures/maki/hospital.png +0 -0
  419. package/Source/Assets/Textures/maki/ice-cream.png +0 -0
  420. package/Source/Assets/Textures/maki/industrial.png +0 -0
  421. package/Source/Assets/Textures/maki/land-use.png +0 -0
  422. package/Source/Assets/Textures/maki/laundry.png +0 -0
  423. package/Source/Assets/Textures/maki/library.png +0 -0
  424. package/Source/Assets/Textures/maki/lighthouse.png +0 -0
  425. package/Source/Assets/Textures/maki/lodging.png +0 -0
  426. package/Source/Assets/Textures/maki/logging.png +0 -0
  427. package/Source/Assets/Textures/maki/london-underground.png +0 -0
  428. package/Source/Assets/Textures/maki/marker-stroked.png +0 -0
  429. package/Source/Assets/Textures/maki/marker.png +0 -0
  430. package/Source/Assets/Textures/maki/minefield.png +0 -0
  431. package/Source/Assets/Textures/maki/mobilephone.png +0 -0
  432. package/Source/Assets/Textures/maki/monument.png +0 -0
  433. package/Source/Assets/Textures/maki/museum.png +0 -0
  434. package/Source/Assets/Textures/maki/music.png +0 -0
  435. package/Source/Assets/Textures/maki/oil-well.png +0 -0
  436. package/Source/Assets/Textures/maki/park.png +0 -0
  437. package/Source/Assets/Textures/maki/park2.png +0 -0
  438. package/Source/Assets/Textures/maki/parking-garage.png +0 -0
  439. package/Source/Assets/Textures/maki/parking.png +0 -0
  440. package/Source/Assets/Textures/maki/pharmacy.png +0 -0
  441. package/Source/Assets/Textures/maki/pitch.png +0 -0
  442. package/Source/Assets/Textures/maki/place-of-worship.png +0 -0
  443. package/Source/Assets/Textures/maki/playground.png +0 -0
  444. package/Source/Assets/Textures/maki/police.png +0 -0
  445. package/Source/Assets/Textures/maki/polling-place.png +0 -0
  446. package/Source/Assets/Textures/maki/post.png +0 -0
  447. package/Source/Assets/Textures/maki/prison.png +0 -0
  448. package/Source/Assets/Textures/maki/rail-above.png +0 -0
  449. package/Source/Assets/Textures/maki/rail-light.png +0 -0
  450. package/Source/Assets/Textures/maki/rail-metro.png +0 -0
  451. package/Source/Assets/Textures/maki/rail-underground.png +0 -0
  452. package/Source/Assets/Textures/maki/rail.png +0 -0
  453. package/Source/Assets/Textures/maki/religious-christian.png +0 -0
  454. package/Source/Assets/Textures/maki/religious-jewish.png +0 -0
  455. package/Source/Assets/Textures/maki/religious-muslim.png +0 -0
  456. package/Source/Assets/Textures/maki/restaurant.png +0 -0
  457. package/Source/Assets/Textures/maki/roadblock.png +0 -0
  458. package/Source/Assets/Textures/maki/rocket.png +0 -0
  459. package/Source/Assets/Textures/maki/school.png +0 -0
  460. package/Source/Assets/Textures/maki/scooter.png +0 -0
  461. package/Source/Assets/Textures/maki/shop.png +0 -0
  462. package/Source/Assets/Textures/maki/skiing.png +0 -0
  463. package/Source/Assets/Textures/maki/slaughterhouse.png +0 -0
  464. package/Source/Assets/Textures/maki/soccer.png +0 -0
  465. package/Source/Assets/Textures/maki/square-stroked.png +0 -0
  466. package/Source/Assets/Textures/maki/square.png +0 -0
  467. package/Source/Assets/Textures/maki/star-stroked.png +0 -0
  468. package/Source/Assets/Textures/maki/star.png +0 -0
  469. package/Source/Assets/Textures/maki/suitcase.png +0 -0
  470. package/Source/Assets/Textures/maki/swimming.png +0 -0
  471. package/Source/Assets/Textures/maki/telephone.png +0 -0
  472. package/Source/Assets/Textures/maki/tennis.png +0 -0
  473. package/Source/Assets/Textures/maki/theatre.png +0 -0
  474. package/Source/Assets/Textures/maki/toilets.png +0 -0
  475. package/Source/Assets/Textures/maki/town-hall.png +0 -0
  476. package/Source/Assets/Textures/maki/town.png +0 -0
  477. package/Source/Assets/Textures/maki/triangle-stroked.png +0 -0
  478. package/Source/Assets/Textures/maki/triangle.png +0 -0
  479. package/Source/Assets/Textures/maki/village.png +0 -0
  480. package/Source/Assets/Textures/maki/warehouse.png +0 -0
  481. package/Source/Assets/Textures/maki/waste-basket.png +0 -0
  482. package/Source/Assets/Textures/maki/water.png +0 -0
  483. package/Source/Assets/Textures/maki/wetland.png +0 -0
  484. package/Source/Assets/Textures/maki/zoo.png +0 -0
  485. package/Source/Assets/Textures/moonSmall.jpg +0 -0
  486. package/Source/Assets/Textures/pin.svg +1 -0
  487. package/Source/Assets/Textures/waterNormals.jpg +0 -0
  488. package/Source/Assets/Textures/waterNormalsSmall.jpg +0 -0
  489. package/Source/Assets/approximateTerrainHeights.json +1 -0
  490. package/Source/Core/ApproximateTerrainHeights.js +255 -0
  491. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +755 -0
  492. package/Source/Core/ArcType.js +31 -0
  493. package/Source/Core/ArticulationStageType.js +23 -0
  494. package/Source/Core/AssociativeArray.js +127 -0
  495. package/Source/Core/AttributeCompression.js +527 -0
  496. package/Source/Core/AxisAlignedBoundingBox.js +294 -0
  497. package/Source/Core/BingMapsGeocoderService.js +127 -0
  498. package/Source/Core/BoundingRectangle.js +374 -0
  499. package/Source/Core/BoundingSphere.js +1506 -0
  500. package/Source/Core/BoxGeometry.js +893 -0
  501. package/Source/Core/BoxOutlineGeometry.js +312 -0
  502. package/Source/Core/Cartesian2.js +823 -0
  503. package/Source/Core/Cartesian3.js +1220 -0
  504. package/Source/Core/Cartesian4.js +979 -0
  505. package/Source/Core/Cartographic.js +304 -0
  506. package/Source/Core/CartographicGeocoderService.js +73 -0
  507. package/Source/Core/CatmullRomSpline.js +324 -0
  508. package/Source/Core/Cesium3DTilesTerrainData.js +932 -0
  509. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1868 -0
  510. package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
  511. package/Source/Core/CesiumTerrainProvider.js +1408 -0
  512. package/Source/Core/Check.d.ts +131 -0
  513. package/Source/Core/Check.js +212 -0
  514. package/Source/Core/CircleGeometry.js +207 -0
  515. package/Source/Core/CircleOutlineGeometry.js +149 -0
  516. package/Source/Core/Clock.js +316 -0
  517. package/Source/Core/ClockRange.js +39 -0
  518. package/Source/Core/ClockStep.js +38 -0
  519. package/Source/Core/Color.js +2283 -0
  520. package/Source/Core/ColorGeometryInstanceAttribute.js +181 -0
  521. package/Source/Core/ComponentDatatype.js +338 -0
  522. package/Source/Core/CompressedTextureBuffer.js +125 -0
  523. package/Source/Core/ConstantSpline.js +119 -0
  524. package/Source/Core/CoplanarPolygonGeometry.js +600 -0
  525. package/Source/Core/CoplanarPolygonGeometryLibrary.js +132 -0
  526. package/Source/Core/CoplanarPolygonOutlineGeometry.js +237 -0
  527. package/Source/Core/CornerType.js +37 -0
  528. package/Source/Core/CorridorGeometry.js +1411 -0
  529. package/Source/Core/CorridorGeometryLibrary.js +501 -0
  530. package/Source/Core/CorridorOutlineGeometry.js +599 -0
  531. package/Source/Core/Credit.js +172 -0
  532. package/Source/Core/CubicRealPolynomial.js +238 -0
  533. package/Source/Core/CullingVolume.js +216 -0
  534. package/Source/Core/CustomHeightmapTerrainProvider.js +287 -0
  535. package/Source/Core/CylinderGeometry.js +479 -0
  536. package/Source/Core/CylinderGeometryLibrary.js +59 -0
  537. package/Source/Core/CylinderOutlineGeometry.js +269 -0
  538. package/Source/Core/DefaultProxy.js +26 -0
  539. package/Source/Core/DeveloperError.js +75 -0
  540. package/Source/Core/DistanceDisplayCondition.js +171 -0
  541. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +179 -0
  542. package/Source/Core/DoubleEndedPriorityQueue.js +405 -0
  543. package/Source/Core/DoublyLinkedList.js +112 -0
  544. package/Source/Core/EarthOrientationParameters.js +431 -0
  545. package/Source/Core/EarthOrientationParametersSample.js +52 -0
  546. package/Source/Core/EasingFunction.js +257 -0
  547. package/Source/Core/EllipseGeometry.js +1318 -0
  548. package/Source/Core/EllipseGeometryLibrary.js +365 -0
  549. package/Source/Core/EllipseOutlineGeometry.js +451 -0
  550. package/Source/Core/Ellipsoid.js +889 -0
  551. package/Source/Core/EllipsoidGeodesic.js +523 -0
  552. package/Source/Core/EllipsoidGeometry.js +650 -0
  553. package/Source/Core/EllipsoidOutlineGeometry.js +464 -0
  554. package/Source/Core/EllipsoidRhumbLine.js +751 -0
  555. package/Source/Core/EllipsoidTangentPlane.js +382 -0
  556. package/Source/Core/EllipsoidTerrainProvider.js +201 -0
  557. package/Source/Core/EllipsoidalOccluder.js +538 -0
  558. package/Source/Core/EncodedCartesian3.js +170 -0
  559. package/Source/Core/Event.js +205 -0
  560. package/Source/Core/EventHelper.js +74 -0
  561. package/Source/Core/ExtrapolationType.js +34 -0
  562. package/Source/Core/FeatureDetection.js +435 -0
  563. package/Source/Core/Frozen.js +24 -0
  564. package/Source/Core/FrustumGeometry.js +583 -0
  565. package/Source/Core/FrustumOutlineGeometry.js +253 -0
  566. package/Source/Core/Fullscreen.js +249 -0
  567. package/Source/Core/GeocodeType.js +24 -0
  568. package/Source/Core/GeocoderService.js +60 -0
  569. package/Source/Core/GeographicProjection.js +105 -0
  570. package/Source/Core/GeographicTilingScheme.js +245 -0
  571. package/Source/Core/Geometry.js +371 -0
  572. package/Source/Core/GeometryAttribute.js +133 -0
  573. package/Source/Core/GeometryAttributes.js +88 -0
  574. package/Source/Core/GeometryFactory.js +25 -0
  575. package/Source/Core/GeometryInstance.js +118 -0
  576. package/Source/Core/GeometryInstanceAttribute.js +133 -0
  577. package/Source/Core/GeometryOffsetAttribute.js +10 -0
  578. package/Source/Core/GeometryPipeline.js +3291 -0
  579. package/Source/Core/GeometryType.js +10 -0
  580. package/Source/Core/GoogleEarthEnterpriseMetadata.js +584 -0
  581. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +606 -0
  582. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +574 -0
  583. package/Source/Core/GoogleEarthEnterpriseTileInformation.js +136 -0
  584. package/Source/Core/GoogleGeocoderService.js +110 -0
  585. package/Source/Core/GoogleMaps.js +40 -0
  586. package/Source/Core/GregorianDate.js +153 -0
  587. package/Source/Core/GroundPolylineGeometry.js +1659 -0
  588. package/Source/Core/HeadingPitchRange.js +59 -0
  589. package/Source/Core/HeadingPitchRoll.js +235 -0
  590. package/Source/Core/Heap.js +233 -0
  591. package/Source/Core/HeightmapEncoding.js +25 -0
  592. package/Source/Core/HeightmapTerrainData.js +903 -0
  593. package/Source/Core/HeightmapTessellator.js +518 -0
  594. package/Source/Core/HermitePolynomialApproximation.js +341 -0
  595. package/Source/Core/HermiteSpline.js +620 -0
  596. package/Source/Core/HilbertOrder.js +112 -0
  597. package/Source/Core/ITwinPlatform.js +388 -0
  598. package/Source/Core/Iau2000Orientation.js +167 -0
  599. package/Source/Core/Iau2006XysData.js +275 -0
  600. package/Source/Core/Iau2006XysSample.js +32 -0
  601. package/Source/Core/IauOrientationAxes.js +105 -0
  602. package/Source/Core/IauOrientationParameters.js +54 -0
  603. package/Source/Core/IndexDatatype.js +199 -0
  604. package/Source/Core/InterpolationAlgorithm.js +65 -0
  605. package/Source/Core/InterpolationType.js +14 -0
  606. package/Source/Core/Intersect.js +34 -0
  607. package/Source/Core/IntersectionTests.js +1087 -0
  608. package/Source/Core/Intersections2D.js +358 -0
  609. package/Source/Core/Interval.js +23 -0
  610. package/Source/Core/Ion.js +56 -0
  611. package/Source/Core/IonGeocodeProviderType.js +33 -0
  612. package/Source/Core/IonGeocoderService.js +147 -0
  613. package/Source/Core/IonResource.js +321 -0
  614. package/Source/Core/Iso8601.js +54 -0
  615. package/Source/Core/JulianDate.js +1229 -0
  616. package/Source/Core/KTX2Transcoder.js +92 -0
  617. package/Source/Core/KeyboardEventModifier.js +32 -0
  618. package/Source/Core/LagrangePolynomialApproximation.js +71 -0
  619. package/Source/Core/LeapSecond.js +24 -0
  620. package/Source/Core/LinearApproximation.js +83 -0
  621. package/Source/Core/LinearSpline.js +166 -0
  622. package/Source/Core/ManagedArray.js +162 -0
  623. package/Source/Core/MapProjection.js +62 -0
  624. package/Source/Core/Math.js +1125 -0
  625. package/Source/Core/Matrix2.js +1092 -0
  626. package/Source/Core/Matrix3.js +1838 -0
  627. package/Source/Core/Matrix4.js +3233 -0
  628. package/Source/Core/MorphWeightSpline.js +161 -0
  629. package/Source/Core/MortonOrder.js +214 -0
  630. package/Source/Core/NearFarScalar.js +173 -0
  631. package/Source/Core/Occluder.js +727 -0
  632. package/Source/Core/OffsetGeometryInstanceAttribute.js +125 -0
  633. package/Source/Core/OpenCageGeocoderService.js +134 -0
  634. package/Source/Core/OrientedBoundingBox.js +1272 -0
  635. package/Source/Core/OrthographicFrustum.js +351 -0
  636. package/Source/Core/OrthographicOffCenterFrustum.js +463 -0
  637. package/Source/Core/Packable.js +40 -0
  638. package/Source/Core/PackableForInterpolation.js +43 -0
  639. package/Source/Core/PeliasGeocoderService.js +106 -0
  640. package/Source/Core/PerspectiveFrustum.js +459 -0
  641. package/Source/Core/PerspectiveOffCenterFrustum.js +522 -0
  642. package/Source/Core/PinBuilder.js +234 -0
  643. package/Source/Core/PixelFormat.js +603 -0
  644. package/Source/Core/Plane.js +312 -0
  645. package/Source/Core/PlaneGeometry.js +250 -0
  646. package/Source/Core/PlaneOutlineGeometry.js +113 -0
  647. package/Source/Core/PolygonGeometry.js +1580 -0
  648. package/Source/Core/PolygonGeometryLibrary.js +1301 -0
  649. package/Source/Core/PolygonHierarchy.js +25 -0
  650. package/Source/Core/PolygonOutlineGeometry.js +687 -0
  651. package/Source/Core/PolygonPipeline.js +632 -0
  652. package/Source/Core/PolylineGeometry.js +573 -0
  653. package/Source/Core/PolylinePipeline.js +573 -0
  654. package/Source/Core/PolylineVolumeGeometry.js +412 -0
  655. package/Source/Core/PolylineVolumeGeometryLibrary.js +701 -0
  656. package/Source/Core/PolylineVolumeOutlineGeometry.js +294 -0
  657. package/Source/Core/PrimitiveType.js +107 -0
  658. package/Source/Core/Proxy.js +24 -0
  659. package/Source/Core/QuadraticRealPolynomial.js +147 -0
  660. package/Source/Core/QuantizedMeshTerrainData.js +735 -0
  661. package/Source/Core/QuarticRealPolynomial.js +342 -0
  662. package/Source/Core/Quaternion.js +1145 -0
  663. package/Source/Core/QuaternionSpline.js +155 -0
  664. package/Source/Core/Queue.js +126 -0
  665. package/Source/Core/Ray.js +79 -0
  666. package/Source/Core/Rectangle.js +1071 -0
  667. package/Source/Core/RectangleCollisionChecker.js +95 -0
  668. package/Source/Core/RectangleGeometry.js +1480 -0
  669. package/Source/Core/RectangleGeometryLibrary.js +286 -0
  670. package/Source/Core/RectangleOutlineGeometry.js +532 -0
  671. package/Source/Core/ReferenceFrame.js +23 -0
  672. package/Source/Core/Request.js +193 -0
  673. package/Source/Core/RequestErrorEvent.js +58 -0
  674. package/Source/Core/RequestScheduler.js +519 -0
  675. package/Source/Core/RequestState.js +55 -0
  676. package/Source/Core/RequestType.js +39 -0
  677. package/Source/Core/Resource.js +2280 -0
  678. package/Source/Core/RuntimeError.js +65 -0
  679. package/Source/Core/S2Cell.js +734 -0
  680. package/Source/Core/ScreenSpaceEventHandler.js +1140 -0
  681. package/Source/Core/ScreenSpaceEventType.js +127 -0
  682. package/Source/Core/ShowGeometryInstanceAttribute.js +122 -0
  683. package/Source/Core/Simon1994PlanetaryPositions.js +684 -0
  684. package/Source/Core/SimplePolylineGeometry.js +454 -0
  685. package/Source/Core/SphereGeometry.js +117 -0
  686. package/Source/Core/SphereOutlineGeometry.js +119 -0
  687. package/Source/Core/Spherical.js +183 -0
  688. package/Source/Core/Spline.js +188 -0
  689. package/Source/Core/SteppedSpline.js +160 -0
  690. package/Source/Core/Stereographic.js +247 -0
  691. package/Source/Core/TaskProcessor.js +403 -0
  692. package/Source/Core/TerrainData.js +126 -0
  693. package/Source/Core/TerrainEncoding.js +772 -0
  694. package/Source/Core/TerrainMesh.js +361 -0
  695. package/Source/Core/TerrainPicker.js +607 -0
  696. package/Source/Core/TerrainProvider.js +585 -0
  697. package/Source/Core/TerrainQuantization.js +25 -0
  698. package/Source/Core/TexturePacker.js +181 -0
  699. package/Source/Core/TileAvailability.js +564 -0
  700. package/Source/Core/TileEdge.js +14 -0
  701. package/Source/Core/TileProviderError.js +170 -0
  702. package/Source/Core/TilingScheme.js +132 -0
  703. package/Source/Core/TimeConstants.js +83 -0
  704. package/Source/Core/TimeInterval.js +438 -0
  705. package/Source/Core/TimeIntervalCollection.js +1137 -0
  706. package/Source/Core/TimeStandard.js +30 -0
  707. package/Source/Core/Tipsify.js +314 -0
  708. package/Source/Core/TrackingReferenceFrame.js +45 -0
  709. package/Source/Core/Transforms.js +1277 -0
  710. package/Source/Core/TranslationRotationScale.js +57 -0
  711. package/Source/Core/TridiagonalSystemSolver.js +113 -0
  712. package/Source/Core/TrustedServers.js +146 -0
  713. package/Source/Core/VRTheWorldTerrainProvider.js +462 -0
  714. package/Source/Core/VertexFormat.js +311 -0
  715. package/Source/Core/VerticalExaggeration.js +70 -0
  716. package/Source/Core/VideoSynchronizer.js +222 -0
  717. package/Source/Core/Visibility.js +34 -0
  718. package/Source/Core/VulkanConstants.js +286 -0
  719. package/Source/Core/WallGeometry.js +623 -0
  720. package/Source/Core/WallGeometryLibrary.js +212 -0
  721. package/Source/Core/WallOutlineGeometry.js +431 -0
  722. package/Source/Core/WebGLConstants.js +614 -0
  723. package/Source/Core/WebMercatorProjection.js +152 -0
  724. package/Source/Core/WebMercatorTilingScheme.js +291 -0
  725. package/Source/Core/WindingOrder.js +36 -0
  726. package/Source/Core/WireframeIndexGenerator.js +238 -0
  727. package/Source/Core/addAllToArray.js +40 -0
  728. package/Source/Core/appendForwardSlash.js +10 -0
  729. package/Source/Core/arrayRemoveDuplicates.js +129 -0
  730. package/Source/Core/barycentricCoordinates.js +109 -0
  731. package/Source/Core/binarySearch.js +67 -0
  732. package/Source/Core/buildModuleUrl.js +153 -0
  733. package/Source/Core/clone.js +30 -0
  734. package/Source/Core/combine.js +79 -0
  735. package/Source/Core/createGuid.js +22 -0
  736. package/Source/Core/createWorldBathymetryAsync.js +45 -0
  737. package/Source/Core/createWorldTerrainAsync.js +50 -0
  738. package/Source/Core/decodeGoogleEarthEnterpriseData.js +93 -0
  739. package/Source/Core/decodeVectorPolylinePositions.js +51 -0
  740. package/Source/Core/defaultValue.js +29 -0
  741. package/Source/Core/defer.js +44 -0
  742. package/Source/Core/defined.d.ts +11 -0
  743. package/Source/Core/defined.js +17 -0
  744. package/Source/Core/deprecationWarning.js +53 -0
  745. package/Source/Core/destroyObject.js +53 -0
  746. package/Source/Core/formatError.js +30 -0
  747. package/Source/Core/getAbsoluteUri.js +46 -0
  748. package/Source/Core/getBaseUri.js +47 -0
  749. package/Source/Core/getExtensionFromUri.js +38 -0
  750. package/Source/Core/getFilenameFromUri.js +32 -0
  751. package/Source/Core/getImageFromTypedArray.js +24 -0
  752. package/Source/Core/getImagePixels.js +44 -0
  753. package/Source/Core/getJsonFromTypedArray.js +21 -0
  754. package/Source/Core/getMagic.js +14 -0
  755. package/Source/Core/getStringFromTypedArray.js +165 -0
  756. package/Source/Core/getTimestamp.js +26 -0
  757. package/Source/Core/isBitSet.js +7 -0
  758. package/Source/Core/isBlobUri.js +22 -0
  759. package/Source/Core/isCrossOriginUrl.js +30 -0
  760. package/Source/Core/isDataUri.js +22 -0
  761. package/Source/Core/isLeapYear.js +23 -0
  762. package/Source/Core/loadAndExecuteScript.js +27 -0
  763. package/Source/Core/loadImageFromTypedArray.js +66 -0
  764. package/Source/Core/loadKTX2.js +104 -0
  765. package/Source/Core/mergeSort.js +111 -0
  766. package/Source/Core/objectToQuery.js +57 -0
  767. package/Source/Core/oneTimeWarning.js +51 -0
  768. package/Source/Core/parseResponseHeaders.js +37 -0
  769. package/Source/Core/pointInsideTriangle.js +39 -0
  770. package/Source/Core/queryToObject.js +60 -0
  771. package/Source/Core/resizeImageToNextPowerOfTwo.js +31 -0
  772. package/Source/Core/sampleTerrain.js +291 -0
  773. package/Source/Core/sampleTerrainMostDetailed.js +132 -0
  774. package/Source/Core/scaleToGeodeticSurface.js +147 -0
  775. package/Source/Core/srgbToLinear.js +32 -0
  776. package/Source/Core/subdivideArray.js +35 -0
  777. package/Source/Core/webGLConstantToGlslType.js +25 -0
  778. package/Source/Core/wrapFunction.js +26 -0
  779. package/Source/Core/writeTextToCanvas.js +219 -0
  780. package/Source/DataSources/BillboardGraphics.js +419 -0
  781. package/Source/DataSources/BillboardVisualizer.js +351 -0
  782. package/Source/DataSources/BoundingSphereState.js +26 -0
  783. package/Source/DataSources/BoxGeometryUpdater.js +326 -0
  784. package/Source/DataSources/BoxGraphics.js +208 -0
  785. package/Source/DataSources/CallbackPositionProperty.js +172 -0
  786. package/Source/DataSources/CallbackProperty.js +117 -0
  787. package/Source/DataSources/Cesium3DTilesetGraphics.js +111 -0
  788. package/Source/DataSources/Cesium3DTilesetVisualizer.js +261 -0
  789. package/Source/DataSources/CheckerboardMaterialProperty.js +157 -0
  790. package/Source/DataSources/ColorMaterialProperty.js +112 -0
  791. package/Source/DataSources/CompositeEntityCollection.js +591 -0
  792. package/Source/DataSources/CompositeMaterialProperty.js +128 -0
  793. package/Source/DataSources/CompositePositionProperty.js +153 -0
  794. package/Source/DataSources/CompositeProperty.js +154 -0
  795. package/Source/DataSources/ConstantPositionProperty.js +151 -0
  796. package/Source/DataSources/ConstantProperty.js +116 -0
  797. package/Source/DataSources/CorridorGeometryUpdater.js +409 -0
  798. package/Source/DataSources/CorridorGraphics.js +316 -0
  799. package/Source/DataSources/CustomDataSource.js +173 -0
  800. package/Source/DataSources/CylinderGeometryUpdater.js +375 -0
  801. package/Source/DataSources/CylinderGraphics.js +258 -0
  802. package/Source/DataSources/CzmlDataSource.js +5142 -0
  803. package/Source/DataSources/DataSource.js +121 -0
  804. package/Source/DataSources/DataSourceClock.js +164 -0
  805. package/Source/DataSources/DataSourceCollection.js +335 -0
  806. package/Source/DataSources/DataSourceDisplay.js +543 -0
  807. package/Source/DataSources/DynamicGeometryBatch.js +56 -0
  808. package/Source/DataSources/DynamicGeometryUpdater.js +270 -0
  809. package/Source/DataSources/EllipseGeometryUpdater.js +434 -0
  810. package/Source/DataSources/EllipseGraphics.js +343 -0
  811. package/Source/DataSources/EllipsoidGeometryUpdater.js +710 -0
  812. package/Source/DataSources/EllipsoidGraphics.js +312 -0
  813. package/Source/DataSources/Entity.js +789 -0
  814. package/Source/DataSources/EntityCluster.js +1022 -0
  815. package/Source/DataSources/EntityCollection.js +439 -0
  816. package/Source/DataSources/EntityView.js +476 -0
  817. package/Source/DataSources/GeoJsonDataSource.js +1064 -0
  818. package/Source/DataSources/GeometryUpdater.js +538 -0
  819. package/Source/DataSources/GeometryUpdaterSet.js +114 -0
  820. package/Source/DataSources/GeometryVisualizer.js +549 -0
  821. package/Source/DataSources/GpxDataSource.js +1018 -0
  822. package/Source/DataSources/GridMaterialProperty.js +204 -0
  823. package/Source/DataSources/GroundGeometryUpdater.js +234 -0
  824. package/Source/DataSources/ImageMaterialProperty.js +173 -0
  825. package/Source/DataSources/KmlCamera.js +13 -0
  826. package/Source/DataSources/KmlDataSource.js +4249 -0
  827. package/Source/DataSources/KmlLookAt.js +12 -0
  828. package/Source/DataSources/KmlTour.js +165 -0
  829. package/Source/DataSources/KmlTourFlyTo.js +109 -0
  830. package/Source/DataSources/KmlTourWait.js +52 -0
  831. package/Source/DataSources/LabelGraphics.js +401 -0
  832. package/Source/DataSources/LabelVisualizer.js +359 -0
  833. package/Source/DataSources/MaterialProperty.js +111 -0
  834. package/Source/DataSources/ModelGraphics.js +456 -0
  835. package/Source/DataSources/ModelVisualizer.js +560 -0
  836. package/Source/DataSources/NodeTransformationProperty.js +150 -0
  837. package/Source/DataSources/PathGraphics.js +161 -0
  838. package/Source/DataSources/PathVisualizer.js +823 -0
  839. package/Source/DataSources/PlaneGeometryUpdater.js +385 -0
  840. package/Source/DataSources/PlaneGraphics.js +208 -0
  841. package/Source/DataSources/PointGraphics.js +223 -0
  842. package/Source/DataSources/PointVisualizer.js +438 -0
  843. package/Source/DataSources/PolygonGeometryUpdater.js +591 -0
  844. package/Source/DataSources/PolygonGraphics.js +383 -0
  845. package/Source/DataSources/PolylineArrowMaterialProperty.js +110 -0
  846. package/Source/DataSources/PolylineDashMaterialProperty.js +174 -0
  847. package/Source/DataSources/PolylineGeometryUpdater.js +878 -0
  848. package/Source/DataSources/PolylineGlowMaterialProperty.js +152 -0
  849. package/Source/DataSources/PolylineGraphics.js +241 -0
  850. package/Source/DataSources/PolylineOutlineMaterialProperty.js +158 -0
  851. package/Source/DataSources/PolylineVisualizer.js +409 -0
  852. package/Source/DataSources/PolylineVolumeGeometryUpdater.js +306 -0
  853. package/Source/DataSources/PolylineVolumeGraphics.js +235 -0
  854. package/Source/DataSources/PositionProperty.js +131 -0
  855. package/Source/DataSources/PositionPropertyArray.js +192 -0
  856. package/Source/DataSources/Property.js +137 -0
  857. package/Source/DataSources/PropertyArray.js +147 -0
  858. package/Source/DataSources/PropertyBag.js +275 -0
  859. package/Source/DataSources/RectangleGeometryUpdater.js +427 -0
  860. package/Source/DataSources/RectangleGraphics.js +317 -0
  861. package/Source/DataSources/ReferenceProperty.js +371 -0
  862. package/Source/DataSources/Rotation.js +155 -0
  863. package/Source/DataSources/SampledPositionProperty.js +330 -0
  864. package/Source/DataSources/SampledProperty.js +855 -0
  865. package/Source/DataSources/ScaledPositionProperty.js +103 -0
  866. package/Source/DataSources/StaticGeometryColorBatch.js +570 -0
  867. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +488 -0
  868. package/Source/DataSources/StaticGroundGeometryColorBatch.js +394 -0
  869. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +456 -0
  870. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +434 -0
  871. package/Source/DataSources/StaticOutlineGeometryBatch.js +465 -0
  872. package/Source/DataSources/StripeMaterialProperty.js +193 -0
  873. package/Source/DataSources/StripeOrientation.js +19 -0
  874. package/Source/DataSources/TerrainOffsetProperty.js +243 -0
  875. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +155 -0
  876. package/Source/DataSources/TimeIntervalCollectionProperty.js +136 -0
  877. package/Source/DataSources/VelocityOrientationProperty.js +158 -0
  878. package/Source/DataSources/VelocityVectorProperty.js +213 -0
  879. package/Source/DataSources/Visualizer.js +61 -0
  880. package/Source/DataSources/WallGeometryUpdater.js +275 -0
  881. package/Source/DataSources/WallGraphics.js +236 -0
  882. package/Source/DataSources/createMaterialPropertyDescriptor.js +35 -0
  883. package/Source/DataSources/createPropertyDescriptor.js +71 -0
  884. package/Source/DataSources/createRawPropertyDescriptor.js +13 -0
  885. package/Source/DataSources/exportKml.js +1517 -0
  886. package/Source/DataSources/getElement.js +26 -0
  887. package/Source/DataSources/heightReferenceOnEntityPropertyChanged.js +47 -0
  888. package/Source/Renderer/AutomaticUniforms.js +1857 -0
  889. package/Source/Renderer/Buffer.js +452 -0
  890. package/Source/Renderer/BufferUsage.js +21 -0
  891. package/Source/Renderer/ClearCommand.js +102 -0
  892. package/Source/Renderer/ComputeCommand.js +119 -0
  893. package/Source/Renderer/ComputeEngine.js +135 -0
  894. package/Source/Renderer/Context.js +1752 -0
  895. package/Source/Renderer/ContextLimits.js +299 -0
  896. package/Source/Renderer/CubeMap.js +686 -0
  897. package/Source/Renderer/CubeMapFace.js +415 -0
  898. package/Source/Renderer/DrawCommand.js +644 -0
  899. package/Source/Renderer/Framebuffer.js +447 -0
  900. package/Source/Renderer/FramebufferManager.js +489 -0
  901. package/Source/Renderer/MipmapHint.js +19 -0
  902. package/Source/Renderer/MultisampleFramebuffer.js +136 -0
  903. package/Source/Renderer/Pass.js +29 -0
  904. package/Source/Renderer/PassState.js +57 -0
  905. package/Source/Renderer/PixelDatatype.js +121 -0
  906. package/Source/Renderer/RenderState.js +967 -0
  907. package/Source/Renderer/Renderbuffer.js +105 -0
  908. package/Source/Renderer/RenderbufferFormat.js +42 -0
  909. package/Source/Renderer/Sampler.js +116 -0
  910. package/Source/Renderer/ShaderBuilder.js +597 -0
  911. package/Source/Renderer/ShaderCache.js +287 -0
  912. package/Source/Renderer/ShaderDestination.js +51 -0
  913. package/Source/Renderer/ShaderFunction.js +66 -0
  914. package/Source/Renderer/ShaderProgram.js +619 -0
  915. package/Source/Renderer/ShaderSource.js +524 -0
  916. package/Source/Renderer/ShaderStruct.js +55 -0
  917. package/Source/Renderer/SharedContext.js +186 -0
  918. package/Source/Renderer/Sync.js +104 -0
  919. package/Source/Renderer/Texture.js +1126 -0
  920. package/Source/Renderer/Texture3D.js +578 -0
  921. package/Source/Renderer/TextureAtlas.js +833 -0
  922. package/Source/Renderer/TextureCache.js +81 -0
  923. package/Source/Renderer/TextureMagnificationFilter.js +41 -0
  924. package/Source/Renderer/TextureMinificationFilter.js +94 -0
  925. package/Source/Renderer/TextureWrap.js +19 -0
  926. package/Source/Renderer/UniformState.js +1948 -0
  927. package/Source/Renderer/VertexArray.js +869 -0
  928. package/Source/Renderer/VertexArrayFacade.js +509 -0
  929. package/Source/Renderer/createUniform.js +422 -0
  930. package/Source/Renderer/createUniformArray.js +638 -0
  931. package/Source/Renderer/demodernizeShader.js +84 -0
  932. package/Source/Renderer/freezeRenderState.js +30 -0
  933. package/Source/Renderer/loadCubeMap.js +88 -0
  934. package/Source/Scene/AlphaMode.js +33 -0
  935. package/Source/Scene/Appearance.js +204 -0
  936. package/Source/Scene/ArcGisBaseMapType.js +12 -0
  937. package/Source/Scene/ArcGisMapServerImageryProvider.js +875 -0
  938. package/Source/Scene/ArcGisMapService.js +80 -0
  939. package/Source/Scene/Atmosphere.js +149 -0
  940. package/Source/Scene/AttributeType.js +200 -0
  941. package/Source/Scene/AutoExposure.js +386 -0
  942. package/Source/Scene/Axis.js +116 -0
  943. package/Source/Scene/Azure2DImageryProvider.js +393 -0
  944. package/Source/Scene/B3dmParser.js +173 -0
  945. package/Source/Scene/BatchTable.js +636 -0
  946. package/Source/Scene/BatchTableHierarchy.js +504 -0
  947. package/Source/Scene/BatchTexture.js +574 -0
  948. package/Source/Scene/Billboard.js +1601 -0
  949. package/Source/Scene/BillboardCollection.js +2396 -0
  950. package/Source/Scene/BillboardLoadState.js +44 -0
  951. package/Source/Scene/BillboardTexture.js +397 -0
  952. package/Source/Scene/BingMapsImageryProvider.js +769 -0
  953. package/Source/Scene/BingMapsStyle.js +93 -0
  954. package/Source/Scene/BlendEquation.js +53 -0
  955. package/Source/Scene/BlendFunction.js +129 -0
  956. package/Source/Scene/BlendOption.js +28 -0
  957. package/Source/Scene/BlendingState.js +73 -0
  958. package/Source/Scene/BoundingVolumeSemantics.js +169 -0
  959. package/Source/Scene/BoxEmitter.js +74 -0
  960. package/Source/Scene/BrdfLutGenerator.js +75 -0
  961. package/Source/Scene/BufferLoader.js +141 -0
  962. package/Source/Scene/Camera.js +3978 -0
  963. package/Source/Scene/CameraEventAggregator.js +619 -0
  964. package/Source/Scene/CameraEventType.js +47 -0
  965. package/Source/Scene/CameraFlightPath.js +576 -0
  966. package/Source/Scene/Cesium3DContentGroup.js +44 -0
  967. package/Source/Scene/Cesium3DTile.js +2475 -0
  968. package/Source/Scene/Cesium3DTileBatchTable.js +1132 -0
  969. package/Source/Scene/Cesium3DTileColorBlendMode.js +52 -0
  970. package/Source/Scene/Cesium3DTileContent.js +411 -0
  971. package/Source/Scene/Cesium3DTileContentFactory.js +118 -0
  972. package/Source/Scene/Cesium3DTileContentState.js +12 -0
  973. package/Source/Scene/Cesium3DTileContentType.js +179 -0
  974. package/Source/Scene/Cesium3DTileFeature.js +444 -0
  975. package/Source/Scene/Cesium3DTileFeatureTable.js +131 -0
  976. package/Source/Scene/Cesium3DTileOptimizationHint.js +13 -0
  977. package/Source/Scene/Cesium3DTileOptimizations.js +115 -0
  978. package/Source/Scene/Cesium3DTilePass.js +79 -0
  979. package/Source/Scene/Cesium3DTilePassState.js +52 -0
  980. package/Source/Scene/Cesium3DTilePointFeature.js +856 -0
  981. package/Source/Scene/Cesium3DTileRefine.js +29 -0
  982. package/Source/Scene/Cesium3DTileStyle.js +1475 -0
  983. package/Source/Scene/Cesium3DTileStyleEngine.js +78 -0
  984. package/Source/Scene/Cesium3DTilesVoxelProvider.js +760 -0
  985. package/Source/Scene/Cesium3DTileset.js +3932 -0
  986. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +291 -0
  987. package/Source/Scene/Cesium3DTilesetCache.js +80 -0
  988. package/Source/Scene/Cesium3DTilesetHeatmap.js +165 -0
  989. package/Source/Scene/Cesium3DTilesetMetadata.js +199 -0
  990. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +131 -0
  991. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +420 -0
  992. package/Source/Scene/Cesium3DTilesetStatistics.js +195 -0
  993. package/Source/Scene/Cesium3DTilesetTraversal.js +323 -0
  994. package/Source/Scene/CircleEmitter.js +61 -0
  995. package/Source/Scene/ClassificationPrimitive.js +1387 -0
  996. package/Source/Scene/ClassificationType.js +35 -0
  997. package/Source/Scene/ClippingPlane.js +184 -0
  998. package/Source/Scene/ClippingPlaneCollection.js +764 -0
  999. package/Source/Scene/ClippingPolygon.js +300 -0
  1000. package/Source/Scene/ClippingPolygonCollection.js +965 -0
  1001. package/Source/Scene/CloudCollection.js +1041 -0
  1002. package/Source/Scene/CloudType.js +33 -0
  1003. package/Source/Scene/ColorBlendMode.js +33 -0
  1004. package/Source/Scene/Composite3DTileContent.js +403 -0
  1005. package/Source/Scene/ConditionsExpression.js +219 -0
  1006. package/Source/Scene/ConeEmitter.js +61 -0
  1007. package/Source/Scene/ContentMetadata.js +184 -0
  1008. package/Source/Scene/CreditDisplay.js +654 -0
  1009. package/Source/Scene/CullFace.js +33 -0
  1010. package/Source/Scene/CumulusCloud.js +347 -0
  1011. package/Source/Scene/DebugAppearance.js +266 -0
  1012. package/Source/Scene/DebugCameraPrimitive.js +257 -0
  1013. package/Source/Scene/DebugInspector.js +151 -0
  1014. package/Source/Scene/DebugModelMatrixPrimitive.js +220 -0
  1015. package/Source/Scene/DepthFunction.js +73 -0
  1016. package/Source/Scene/DepthPlane.js +238 -0
  1017. package/Source/Scene/DerivedCommand.js +708 -0
  1018. package/Source/Scene/DeviceOrientationCameraController.js +120 -0
  1019. package/Source/Scene/DirectionalLight.js +49 -0
  1020. package/Source/Scene/DiscardEmptyTileImagePolicy.js +54 -0
  1021. package/Source/Scene/DiscardMissingTileImagePolicy.js +148 -0
  1022. package/Source/Scene/DracoLoader.js +99 -0
  1023. package/Source/Scene/DynamicAtmosphereLightingType.js +56 -0
  1024. package/Source/Scene/DynamicEnvironmentMapManager.js +1022 -0
  1025. package/Source/Scene/EdgeFramebuffer.js +245 -0
  1026. package/Source/Scene/EllipsoidPrimitive.js +496 -0
  1027. package/Source/Scene/EllipsoidSurfaceAppearance.js +278 -0
  1028. package/Source/Scene/Empty3DTileContent.js +164 -0
  1029. package/Source/Scene/Expression.js +2233 -0
  1030. package/Source/Scene/ExpressionNodeType.js +25 -0
  1031. package/Source/Scene/Fog.js +166 -0
  1032. package/Source/Scene/FrameRateMonitor.js +375 -0
  1033. package/Source/Scene/FrameState.js +477 -0
  1034. package/Source/Scene/FrustumCommands.js +29 -0
  1035. package/Source/Scene/GaussianSplat3DTileContent.js +826 -0
  1036. package/Source/Scene/GaussianSplatPrimitive.js +1065 -0
  1037. package/Source/Scene/GaussianSplatRenderResources.js +81 -0
  1038. package/Source/Scene/GaussianSplatSorter.js +73 -0
  1039. package/Source/Scene/GaussianSplatTextureGenerator.js +64 -0
  1040. package/Source/Scene/Geometry3DTileContent.js +534 -0
  1041. package/Source/Scene/GetFeatureInfoFormat.js +396 -0
  1042. package/Source/Scene/Globe.js +1135 -0
  1043. package/Source/Scene/GlobeDepth.js +407 -0
  1044. package/Source/Scene/GlobeSurfaceShaderSet.js +485 -0
  1045. package/Source/Scene/GlobeSurfaceTile.js +967 -0
  1046. package/Source/Scene/GlobeSurfaceTileProvider.js +2910 -0
  1047. package/Source/Scene/GlobeTranslucency.js +239 -0
  1048. package/Source/Scene/GlobeTranslucencyFramebuffer.js +201 -0
  1049. package/Source/Scene/GlobeTranslucencyState.js +1102 -0
  1050. package/Source/Scene/GltfBufferViewLoader.js +242 -0
  1051. package/Source/Scene/GltfDracoLoader.js +293 -0
  1052. package/Source/Scene/GltfImageLoader.js +320 -0
  1053. package/Source/Scene/GltfIndexBufferLoader.js +421 -0
  1054. package/Source/Scene/GltfJsonLoader.js +314 -0
  1055. package/Source/Scene/GltfLoader.js +2989 -0
  1056. package/Source/Scene/GltfLoaderUtil.js +184 -0
  1057. package/Source/Scene/GltfPipeline/ForEach.js +424 -0
  1058. package/Source/Scene/GltfPipeline/addBuffer.js +30 -0
  1059. package/Source/Scene/GltfPipeline/addDefaults.js +208 -0
  1060. package/Source/Scene/GltfPipeline/addExtensionsRequired.js +24 -0
  1061. package/Source/Scene/GltfPipeline/addExtensionsUsed.js +22 -0
  1062. package/Source/Scene/GltfPipeline/addPipelineExtras.js +36 -0
  1063. package/Source/Scene/GltfPipeline/addToArray.js +25 -0
  1064. package/Source/Scene/GltfPipeline/findAccessorMinMax.js +71 -0
  1065. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +155 -0
  1066. package/Source/Scene/GltfPipeline/getAccessorByteStride.js +29 -0
  1067. package/Source/Scene/GltfPipeline/getComponentReader.js +147 -0
  1068. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +135 -0
  1069. package/Source/Scene/GltfPipeline/moveTechniquesToExtension.js +145 -0
  1070. package/Source/Scene/GltfPipeline/numberOfComponentsForType.js +29 -0
  1071. package/Source/Scene/GltfPipeline/parseGlb.js +118 -0
  1072. package/Source/Scene/GltfPipeline/readAccessorPacked.js +54 -0
  1073. package/Source/Scene/GltfPipeline/removeExtension.js +64 -0
  1074. package/Source/Scene/GltfPipeline/removeExtensionsRequired.js +24 -0
  1075. package/Source/Scene/GltfPipeline/removeExtensionsUsed.js +26 -0
  1076. package/Source/Scene/GltfPipeline/removePipelineExtras.js +42 -0
  1077. package/Source/Scene/GltfPipeline/removeUnusedElements.js +906 -0
  1078. package/Source/Scene/GltfPipeline/updateAccessorComponentTypes.js +53 -0
  1079. package/Source/Scene/GltfPipeline/updateVersion.js +1148 -0
  1080. package/Source/Scene/GltfPipeline/usesExtension.js +18 -0
  1081. package/Source/Scene/GltfSpzLoader.js +224 -0
  1082. package/Source/Scene/GltfStructuralMetadataLoader.js +505 -0
  1083. package/Source/Scene/GltfTextureLoader.js +399 -0
  1084. package/Source/Scene/GltfVertexBufferLoader.js +634 -0
  1085. package/Source/Scene/Google2DImageryProvider.js +621 -0
  1086. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +548 -0
  1087. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +589 -0
  1088. package/Source/Scene/GridImageryProvider.js +322 -0
  1089. package/Source/Scene/GroundPolylinePrimitive.js +890 -0
  1090. package/Source/Scene/GroundPrimitive.js +1000 -0
  1091. package/Source/Scene/GroupMetadata.js +203 -0
  1092. package/Source/Scene/HeightReference.js +85 -0
  1093. package/Source/Scene/HorizontalOrigin.js +41 -0
  1094. package/Source/Scene/I3SDataProvider.js +860 -0
  1095. package/Source/Scene/I3SDecoder.js +133 -0
  1096. package/Source/Scene/I3SFeature.js +61 -0
  1097. package/Source/Scene/I3SField.js +360 -0
  1098. package/Source/Scene/I3SGeometry.js +477 -0
  1099. package/Source/Scene/I3SLayer.js +460 -0
  1100. package/Source/Scene/I3SNode.js +927 -0
  1101. package/Source/Scene/I3SStatistics.js +94 -0
  1102. package/Source/Scene/I3SSublayer.js +175 -0
  1103. package/Source/Scene/I3SSymbology.js +336 -0
  1104. package/Source/Scene/I3dmParser.js +140 -0
  1105. package/Source/Scene/ITwinData.js +283 -0
  1106. package/Source/Scene/ImageBasedLighting.js +463 -0
  1107. package/Source/Scene/Imagery.js +120 -0
  1108. package/Source/Scene/ImageryLayer.js +1747 -0
  1109. package/Source/Scene/ImageryLayerCollection.js +645 -0
  1110. package/Source/Scene/ImageryLayerFeatureInfo.js +111 -0
  1111. package/Source/Scene/ImageryProvider.js +267 -0
  1112. package/Source/Scene/ImageryState.js +14 -0
  1113. package/Source/Scene/Implicit3DTileContent.js +1206 -0
  1114. package/Source/Scene/ImplicitAvailabilityBitstream.js +134 -0
  1115. package/Source/Scene/ImplicitMetadataView.js +178 -0
  1116. package/Source/Scene/ImplicitSubdivisionScheme.js +48 -0
  1117. package/Source/Scene/ImplicitSubtree.js +1161 -0
  1118. package/Source/Scene/ImplicitSubtreeCache.js +127 -0
  1119. package/Source/Scene/ImplicitSubtreeMetadata.js +191 -0
  1120. package/Source/Scene/ImplicitTileCoordinates.js +647 -0
  1121. package/Source/Scene/ImplicitTileset.js +269 -0
  1122. package/Source/Scene/InstanceAttributeSemantic.js +79 -0
  1123. package/Source/Scene/InvertClassification.js +381 -0
  1124. package/Source/Scene/IonImageryProvider.js +346 -0
  1125. package/Source/Scene/IonImageryProviderFactory.js +194 -0
  1126. package/Source/Scene/IonWorldImageryStyle.js +33 -0
  1127. package/Source/Scene/JobScheduler.js +199 -0
  1128. package/Source/Scene/JobType.js +10 -0
  1129. package/Source/Scene/JsonMetadataTable.js +114 -0
  1130. package/Source/Scene/KeyframeNode.js +61 -0
  1131. package/Source/Scene/Label.js +1618 -0
  1132. package/Source/Scene/LabelCollection.js +1032 -0
  1133. package/Source/Scene/LabelStyle.js +33 -0
  1134. package/Source/Scene/Light.js +34 -0
  1135. package/Source/Scene/MapMode2D.js +23 -0
  1136. package/Source/Scene/MapboxImageryProvider.js +332 -0
  1137. package/Source/Scene/MapboxStyleImageryProvider.js +342 -0
  1138. package/Source/Scene/Material.js +1929 -0
  1139. package/Source/Scene/MaterialAppearance.js +328 -0
  1140. package/Source/Scene/Megatexture.js +550 -0
  1141. package/Source/Scene/MetadataClass.js +202 -0
  1142. package/Source/Scene/MetadataClassProperty.js +1191 -0
  1143. package/Source/Scene/MetadataComponentType.js +469 -0
  1144. package/Source/Scene/MetadataEntity.js +425 -0
  1145. package/Source/Scene/MetadataEnum.js +219 -0
  1146. package/Source/Scene/MetadataEnumValue.js +131 -0
  1147. package/Source/Scene/MetadataPicking.js +396 -0
  1148. package/Source/Scene/MetadataSchema.js +202 -0
  1149. package/Source/Scene/MetadataSchemaLoader.js +135 -0
  1150. package/Source/Scene/MetadataSemantic.js +153 -0
  1151. package/Source/Scene/MetadataTable.js +357 -0
  1152. package/Source/Scene/MetadataTableProperty.js +840 -0
  1153. package/Source/Scene/MetadataType.js +220 -0
  1154. package/Source/Scene/Model/AlphaPipelineStage.js +51 -0
  1155. package/Source/Scene/Model/AtmospherePipelineStage.js +64 -0
  1156. package/Source/Scene/Model/B3dmLoader.js +368 -0
  1157. package/Source/Scene/Model/BatchTexturePipelineStage.js +71 -0
  1158. package/Source/Scene/Model/CPUStylingPipelineStage.js +77 -0
  1159. package/Source/Scene/Model/CartesianRectangle.js +108 -0
  1160. package/Source/Scene/Model/ClassificationModelDrawCommand.js +534 -0
  1161. package/Source/Scene/Model/ClassificationPipelineStage.js +132 -0
  1162. package/Source/Scene/Model/CustomShader.js +469 -0
  1163. package/Source/Scene/Model/CustomShaderMode.js +40 -0
  1164. package/Source/Scene/Model/CustomShaderPipelineStage.js +667 -0
  1165. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +35 -0
  1166. package/Source/Scene/Model/DequantizationPipelineStage.js +178 -0
  1167. package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
  1168. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
  1169. package/Source/Scene/Model/Extensions/Gpm/AnchorPointDirect.js +61 -0
  1170. package/Source/Scene/Model/Extensions/Gpm/AnchorPointIndirect.js +77 -0
  1171. package/Source/Scene/Model/Extensions/Gpm/CorrelationGroup.js +81 -0
  1172. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +248 -0
  1173. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLocal.js +179 -0
  1174. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +543 -0
  1175. package/Source/Scene/Model/Extensions/Gpm/MeshPrimitiveGpmLocal.js +28 -0
  1176. package/Source/Scene/Model/Extensions/Gpm/PpeMetadata.js +79 -0
  1177. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +75 -0
  1178. package/Source/Scene/Model/Extensions/Gpm/PpeTexture.js +127 -0
  1179. package/Source/Scene/Model/Extensions/Gpm/Spdcf.js +103 -0
  1180. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +30 -0
  1181. package/Source/Scene/Model/FeatureIdPipelineStage.js +523 -0
  1182. package/Source/Scene/Model/GeoJsonLoader.js +697 -0
  1183. package/Source/Scene/Model/GeometryPipelineStage.js +529 -0
  1184. package/Source/Scene/Model/I3dmLoader.js +883 -0
  1185. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +168 -0
  1186. package/Source/Scene/Model/ImageryConfiguration.js +26 -0
  1187. package/Source/Scene/Model/ImageryCoverage.js +488 -0
  1188. package/Source/Scene/Model/ImageryFlags.js +31 -0
  1189. package/Source/Scene/Model/ImageryInput.js +60 -0
  1190. package/Source/Scene/Model/ImageryPipelineStage.js +1046 -0
  1191. package/Source/Scene/Model/InstancingPipelineStage.js +1056 -0
  1192. package/Source/Scene/Model/LightingModel.js +30 -0
  1193. package/Source/Scene/Model/LightingPipelineStage.js +73 -0
  1194. package/Source/Scene/Model/MappedPositions.js +84 -0
  1195. package/Source/Scene/Model/MaterialPipelineStage.js +869 -0
  1196. package/Source/Scene/Model/MetadataPickingPipelineStage.js +96 -0
  1197. package/Source/Scene/Model/MetadataPipelineStage.js +657 -0
  1198. package/Source/Scene/Model/Model.js +3340 -0
  1199. package/Source/Scene/Model/Model3DTileContent.js +551 -0
  1200. package/Source/Scene/Model/ModelAlphaOptions.js +26 -0
  1201. package/Source/Scene/Model/ModelAnimation.js +421 -0
  1202. package/Source/Scene/Model/ModelAnimationChannel.js +294 -0
  1203. package/Source/Scene/Model/ModelAnimationCollection.js +553 -0
  1204. package/Source/Scene/Model/ModelArticulation.js +214 -0
  1205. package/Source/Scene/Model/ModelArticulationStage.js +261 -0
  1206. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +126 -0
  1207. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +98 -0
  1208. package/Source/Scene/Model/ModelColorPipelineStage.js +98 -0
  1209. package/Source/Scene/Model/ModelDrawCommand.js +922 -0
  1210. package/Source/Scene/Model/ModelDrawCommands.js +218 -0
  1211. package/Source/Scene/Model/ModelFeature.js +229 -0
  1212. package/Source/Scene/Model/ModelFeatureTable.js +316 -0
  1213. package/Source/Scene/Model/ModelImagery.js +410 -0
  1214. package/Source/Scene/Model/ModelImageryMapping.js +489 -0
  1215. package/Source/Scene/Model/ModelLightingOptions.js +29 -0
  1216. package/Source/Scene/Model/ModelMatrixUpdateStage.js +120 -0
  1217. package/Source/Scene/Model/ModelNode.js +125 -0
  1218. package/Source/Scene/Model/ModelPrimitiveImagery.js +972 -0
  1219. package/Source/Scene/Model/ModelReader.js +810 -0
  1220. package/Source/Scene/Model/ModelRenderResources.js +119 -0
  1221. package/Source/Scene/Model/ModelRuntimeNode.js +648 -0
  1222. package/Source/Scene/Model/ModelRuntimePrimitive.js +380 -0
  1223. package/Source/Scene/Model/ModelSceneGraph.js +1098 -0
  1224. package/Source/Scene/Model/ModelSilhouettePipelineStage.js +109 -0
  1225. package/Source/Scene/Model/ModelSkin.js +180 -0
  1226. package/Source/Scene/Model/ModelSplitterPipelineStage.js +65 -0
  1227. package/Source/Scene/Model/ModelStatistics.js +225 -0
  1228. package/Source/Scene/Model/ModelType.js +94 -0
  1229. package/Source/Scene/Model/ModelUtility.js +395 -0
  1230. package/Source/Scene/Model/MorphTargetsPipelineStage.js +249 -0
  1231. package/Source/Scene/Model/NodeRenderResources.js +170 -0
  1232. package/Source/Scene/Model/NodeStatisticsPipelineStage.js +75 -0
  1233. package/Source/Scene/Model/PickingPipelineStage.js +218 -0
  1234. package/Source/Scene/Model/PntsLoader.js +716 -0
  1235. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +392 -0
  1236. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +689 -0
  1237. package/Source/Scene/Model/PrimitiveOutlinePipelineStage.js +99 -0
  1238. package/Source/Scene/Model/PrimitiveRenderResources.js +297 -0
  1239. package/Source/Scene/Model/PrimitiveStatisticsPipelineStage.js +253 -0
  1240. package/Source/Scene/Model/SceneMode2DPipelineStage.js +301 -0
  1241. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +180 -0
  1242. package/Source/Scene/Model/SkinningPipelineStage.js +118 -0
  1243. package/Source/Scene/Model/StyleCommandsNeeded.js +29 -0
  1244. package/Source/Scene/Model/TextureManager.js +244 -0
  1245. package/Source/Scene/Model/TextureUniform.js +71 -0
  1246. package/Source/Scene/Model/TilesetPipelineStage.js +73 -0
  1247. package/Source/Scene/Model/UniformType.js +124 -0
  1248. package/Source/Scene/Model/VaryingType.js +61 -0
  1249. package/Source/Scene/Model/VerticalExaggerationPipelineStage.js +58 -0
  1250. package/Source/Scene/Model/WireframePipelineStage.js +118 -0
  1251. package/Source/Scene/Model/pickModel.js +425 -0
  1252. package/Source/Scene/ModelAnimationLoop.js +33 -0
  1253. package/Source/Scene/ModelAnimationState.js +9 -0
  1254. package/Source/Scene/ModelComponents.js +1662 -0
  1255. package/Source/Scene/Moon.js +175 -0
  1256. package/Source/Scene/Multiple3DTileContent.js +722 -0
  1257. package/Source/Scene/NeverTileDiscardPolicy.js +28 -0
  1258. package/Source/Scene/OIT.js +946 -0
  1259. package/Source/Scene/OpenStreetMapImageryProvider.js +128 -0
  1260. package/Source/Scene/OrderedGroundPrimitiveCollection.js +218 -0
  1261. package/Source/Scene/Particle.js +149 -0
  1262. package/Source/Scene/ParticleBurst.js +51 -0
  1263. package/Source/Scene/ParticleEmitter.js +36 -0
  1264. package/Source/Scene/ParticleSystem.js +885 -0
  1265. package/Source/Scene/PerInstanceColorAppearance.js +296 -0
  1266. package/Source/Scene/PerformanceDisplay.js +120 -0
  1267. package/Source/Scene/PickDepth.js +125 -0
  1268. package/Source/Scene/PickDepthFramebuffer.js +79 -0
  1269. package/Source/Scene/PickFramebuffer.js +255 -0
  1270. package/Source/Scene/PickedMetadataInfo.js +57 -0
  1271. package/Source/Scene/Picking.js +1683 -0
  1272. package/Source/Scene/PntsParser.js +547 -0
  1273. package/Source/Scene/PointCloud.js +1412 -0
  1274. package/Source/Scene/PointCloudEyeDomeLighting.js +284 -0
  1275. package/Source/Scene/PointCloudShading.js +104 -0
  1276. package/Source/Scene/PointPrimitive.js +690 -0
  1277. package/Source/Scene/PointPrimitiveCollection.js +1223 -0
  1278. package/Source/Scene/Polyline.js +431 -0
  1279. package/Source/Scene/PolylineCollection.js +1950 -0
  1280. package/Source/Scene/PolylineColorAppearance.js +220 -0
  1281. package/Source/Scene/PolylineMaterialAppearance.js +231 -0
  1282. package/Source/Scene/PostProcessStage.js +1000 -0
  1283. package/Source/Scene/PostProcessStageCollection.js +900 -0
  1284. package/Source/Scene/PostProcessStageComposite.js +359 -0
  1285. package/Source/Scene/PostProcessStageLibrary.js +826 -0
  1286. package/Source/Scene/PostProcessStageSampleMode.js +22 -0
  1287. package/Source/Scene/PostProcessStageTextureCache.js +454 -0
  1288. package/Source/Scene/Primitive.js +2504 -0
  1289. package/Source/Scene/PrimitiveCollection.js +532 -0
  1290. package/Source/Scene/PrimitiveLoadPlan.js +303 -0
  1291. package/Source/Scene/PrimitivePipeline.js +854 -0
  1292. package/Source/Scene/PrimitiveState.js +136 -0
  1293. package/Source/Scene/PropertyAttribute.js +160 -0
  1294. package/Source/Scene/PropertyAttributeProperty.js +177 -0
  1295. package/Source/Scene/PropertyTable.js +536 -0
  1296. package/Source/Scene/PropertyTexture.js +162 -0
  1297. package/Source/Scene/PropertyTextureProperty.js +304 -0
  1298. package/Source/Scene/QuadtreeOccluders.js +30 -0
  1299. package/Source/Scene/QuadtreePrimitive.js +1575 -0
  1300. package/Source/Scene/QuadtreeTile.js +729 -0
  1301. package/Source/Scene/QuadtreeTileLoadState.js +39 -0
  1302. package/Source/Scene/QuadtreeTileProvider.js +212 -0
  1303. package/Source/Scene/ResourceCache.js +824 -0
  1304. package/Source/Scene/ResourceCacheKey.js +601 -0
  1305. package/Source/Scene/ResourceCacheStatistics.js +149 -0
  1306. package/Source/Scene/ResourceLoader.js +127 -0
  1307. package/Source/Scene/ResourceLoaderState.js +56 -0
  1308. package/Source/Scene/SDFSettings.js +39 -0
  1309. package/Source/Scene/Scene.js +5280 -0
  1310. package/Source/Scene/SceneFramebuffer.js +106 -0
  1311. package/Source/Scene/SceneMode.js +56 -0
  1312. package/Source/Scene/SceneTransforms.js +463 -0
  1313. package/Source/Scene/SceneTransitioner.js +1111 -0
  1314. package/Source/Scene/ScreenSpaceCameraController.js +3098 -0
  1315. package/Source/Scene/SensorVolumePortionToDisplay.js +69 -0
  1316. package/Source/Scene/ShadowMap.js +1957 -0
  1317. package/Source/Scene/ShadowMapShader.js +395 -0
  1318. package/Source/Scene/ShadowMode.js +78 -0
  1319. package/Source/Scene/ShadowVolumeAppearance.js +936 -0
  1320. package/Source/Scene/SingleTileImageryProvider.js +380 -0
  1321. package/Source/Scene/SkyAtmosphere.js +400 -0
  1322. package/Source/Scene/SkyBox.js +289 -0
  1323. package/Source/Scene/SpatialNode.js +377 -0
  1324. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  1325. package/Source/Scene/SphereEmitter.js +65 -0
  1326. package/Source/Scene/SplitDirection.js +34 -0
  1327. package/Source/Scene/Splitter.js +49 -0
  1328. package/Source/Scene/StencilConstants.js +37 -0
  1329. package/Source/Scene/StencilFunction.js +73 -0
  1330. package/Source/Scene/StencilOperation.js +73 -0
  1331. package/Source/Scene/StructuralMetadata.js +243 -0
  1332. package/Source/Scene/StyleExpression.js +86 -0
  1333. package/Source/Scene/Sun.js +363 -0
  1334. package/Source/Scene/SunLight.js +31 -0
  1335. package/Source/Scene/SunPostProcess.js +288 -0
  1336. package/Source/Scene/SupportedImageFormats.js +18 -0
  1337. package/Source/Scene/Terrain.js +245 -0
  1338. package/Source/Scene/TerrainFillMesh.js +2222 -0
  1339. package/Source/Scene/TerrainState.js +13 -0
  1340. package/Source/Scene/TileBoundingRegion.js +489 -0
  1341. package/Source/Scene/TileBoundingS2Cell.js +699 -0
  1342. package/Source/Scene/TileBoundingSphere.js +167 -0
  1343. package/Source/Scene/TileBoundingVolume.js +68 -0
  1344. package/Source/Scene/TileCoordinatesImageryProvider.js +269 -0
  1345. package/Source/Scene/TileDiscardPolicy.js +34 -0
  1346. package/Source/Scene/TileImagery.js +126 -0
  1347. package/Source/Scene/TileMapServiceImageryProvider.js +442 -0
  1348. package/Source/Scene/TileMetadata.js +184 -0
  1349. package/Source/Scene/TileOrientedBoundingBox.js +219 -0
  1350. package/Source/Scene/TileReplacementQueue.js +119 -0
  1351. package/Source/Scene/TileSelectionResult.js +80 -0
  1352. package/Source/Scene/TileState.js +10 -0
  1353. package/Source/Scene/Tileset3DTileContent.js +182 -0
  1354. package/Source/Scene/TilesetMetadata.js +186 -0
  1355. package/Source/Scene/TimeDynamicImagery.js +308 -0
  1356. package/Source/Scene/TimeDynamicPointCloud.js +802 -0
  1357. package/Source/Scene/Tonemapper.js +64 -0
  1358. package/Source/Scene/TranslucentTileClassification.js +514 -0
  1359. package/Source/Scene/TweenCollection.js +585 -0
  1360. package/Source/Scene/UrlTemplateImageryProvider.js +989 -0
  1361. package/Source/Scene/Vector3DTileBatch.js +37 -0
  1362. package/Source/Scene/Vector3DTileClampedPolylines.js +783 -0
  1363. package/Source/Scene/Vector3DTileContent.js +770 -0
  1364. package/Source/Scene/Vector3DTileGeometry.js +497 -0
  1365. package/Source/Scene/Vector3DTilePoints.js +548 -0
  1366. package/Source/Scene/Vector3DTilePolygons.js +479 -0
  1367. package/Source/Scene/Vector3DTilePolylines.js +679 -0
  1368. package/Source/Scene/Vector3DTilePrimitive.js +1276 -0
  1369. package/Source/Scene/VertexAttributeSemantic.js +305 -0
  1370. package/Source/Scene/VerticalOrigin.js +49 -0
  1371. package/Source/Scene/View.js +465 -0
  1372. package/Source/Scene/ViewportQuad.js +182 -0
  1373. package/Source/Scene/ViewshedShadowMap.js +1953 -0
  1374. package/Source/Scene/VoxelBoundsCollection.js +494 -0
  1375. package/Source/Scene/VoxelBoxShape.js +595 -0
  1376. package/Source/Scene/VoxelCell.js +274 -0
  1377. package/Source/Scene/VoxelContent.js +231 -0
  1378. package/Source/Scene/VoxelCylinderShape.js +868 -0
  1379. package/Source/Scene/VoxelEllipsoidShape.js +1174 -0
  1380. package/Source/Scene/VoxelMetadataOrder.js +24 -0
  1381. package/Source/Scene/VoxelPrimitive.js +2169 -0
  1382. package/Source/Scene/VoxelProvider.js +234 -0
  1383. package/Source/Scene/VoxelRenderResources.js +259 -0
  1384. package/Source/Scene/VoxelShape.js +179 -0
  1385. package/Source/Scene/VoxelShapeType.js +105 -0
  1386. package/Source/Scene/VoxelTraversal.js +1264 -0
  1387. package/Source/Scene/WebMapServiceImageryProvider.js +649 -0
  1388. package/Source/Scene/WebMapTileServiceImageryProvider.js +575 -0
  1389. package/Source/Scene/buildVoxelDrawCommands.js +177 -0
  1390. package/Source/Scene/computeFlyToLocationForRectangle.js +74 -0
  1391. package/Source/Scene/createBillboardPointCallback.js +70 -0
  1392. package/Source/Scene/createElevationBandMaterial.js +580 -0
  1393. package/Source/Scene/createGooglePhotorealistic3DTileset.js +116 -0
  1394. package/Source/Scene/createOsmBuildingsAsync.js +79 -0
  1395. package/Source/Scene/createTangentSpaceDebugPrimitive.js +114 -0
  1396. package/Source/Scene/createWorldImageryAsync.js +39 -0
  1397. package/Source/Scene/findContentMetadata.js +51 -0
  1398. package/Source/Scene/findGroupMetadata.js +39 -0
  1399. package/Source/Scene/findTileMetadata.js +53 -0
  1400. package/Source/Scene/getBinaryAccessor.js +56 -0
  1401. package/Source/Scene/getClipAndStyleCode.js +34 -0
  1402. package/Source/Scene/getClippingFunction.js +154 -0
  1403. package/Source/Scene/getMeshPrimitives.js +72 -0
  1404. package/Source/Scene/getMetadataClassProperty.js +43 -0
  1405. package/Source/Scene/getMetadataProperty.js +48 -0
  1406. package/Source/Scene/hasExtension.js +19 -0
  1407. package/Source/Scene/parseBatchTable.js +448 -0
  1408. package/Source/Scene/parseFeatureMetadataLegacy.js +139 -0
  1409. package/Source/Scene/parseStructuralMetadata.js +102 -0
  1410. package/Source/Scene/preprocess3DTileContent.js +102 -0
  1411. package/Source/Scene/processVoxelProperties.js +398 -0
  1412. package/Source/Shaders/AdjustTranslucentFS.glsl +27 -0
  1413. package/Source/Shaders/AdjustTranslucentFS.js +29 -0
  1414. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.glsl +29 -0
  1415. package/Source/Shaders/Appearances/AllMaterialAppearanceFS.js +31 -0
  1416. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.glsl +26 -0
  1417. package/Source/Shaders/Appearances/AllMaterialAppearanceVS.js +28 -0
  1418. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.glsl +23 -0
  1419. package/Source/Shaders/Appearances/BasicMaterialAppearanceFS.js +25 -0
  1420. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.glsl +17 -0
  1421. package/Source/Shaders/Appearances/BasicMaterialAppearanceVS.js +19 -0
  1422. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.glsl +33 -0
  1423. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +35 -0
  1424. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.glsl +19 -0
  1425. package/Source/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +21 -0
  1426. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.glsl +24 -0
  1427. package/Source/Shaders/Appearances/PerInstanceColorAppearanceFS.js +26 -0
  1428. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.glsl +20 -0
  1429. package/Source/Shaders/Appearances/PerInstanceColorAppearanceVS.js +22 -0
  1430. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.glsl +6 -0
  1431. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +8 -0
  1432. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.glsl +15 -0
  1433. package/Source/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +17 -0
  1434. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.glsl +28 -0
  1435. package/Source/Shaders/Appearances/PolylineColorAppearanceVS.js +30 -0
  1436. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.glsl +33 -0
  1437. package/Source/Shaders/Appearances/PolylineMaterialAppearanceVS.js +35 -0
  1438. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.glsl +25 -0
  1439. package/Source/Shaders/Appearances/TexturedMaterialAppearanceFS.js +27 -0
  1440. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.glsl +20 -0
  1441. package/Source/Shaders/Appearances/TexturedMaterialAppearanceVS.js +22 -0
  1442. package/Source/Shaders/AtmosphereCommon.glsl +187 -0
  1443. package/Source/Shaders/AtmosphereCommon.js +189 -0
  1444. package/Source/Shaders/BillboardCollectionFS.glsl +261 -0
  1445. package/Source/Shaders/BillboardCollectionFS.js +262 -0
  1446. package/Source/Shaders/BillboardCollectionVS.glsl +445 -0
  1447. package/Source/Shaders/BillboardCollectionVS.js +447 -0
  1448. package/Source/Shaders/BrdfLutGeneratorFS.glsl +100 -0
  1449. package/Source/Shaders/BrdfLutGeneratorFS.js +102 -0
  1450. package/Source/Shaders/Builtin/Constants/degreesPerRadian.glsl +16 -0
  1451. package/Source/Shaders/Builtin/Constants/degreesPerRadian.js +18 -0
  1452. package/Source/Shaders/Builtin/Constants/depthRange.glsl +14 -0
  1453. package/Source/Shaders/Builtin/Constants/depthRange.js +16 -0
  1454. package/Source/Shaders/Builtin/Constants/epsilon1.glsl +7 -0
  1455. package/Source/Shaders/Builtin/Constants/epsilon1.js +9 -0
  1456. package/Source/Shaders/Builtin/Constants/epsilon2.glsl +7 -0
  1457. package/Source/Shaders/Builtin/Constants/epsilon2.js +9 -0
  1458. package/Source/Shaders/Builtin/Constants/epsilon3.glsl +7 -0
  1459. package/Source/Shaders/Builtin/Constants/epsilon3.js +9 -0
  1460. package/Source/Shaders/Builtin/Constants/epsilon4.glsl +7 -0
  1461. package/Source/Shaders/Builtin/Constants/epsilon4.js +9 -0
  1462. package/Source/Shaders/Builtin/Constants/epsilon5.glsl +7 -0
  1463. package/Source/Shaders/Builtin/Constants/epsilon5.js +9 -0
  1464. package/Source/Shaders/Builtin/Constants/epsilon6.glsl +7 -0
  1465. package/Source/Shaders/Builtin/Constants/epsilon6.js +9 -0
  1466. package/Source/Shaders/Builtin/Constants/epsilon7.glsl +7 -0
  1467. package/Source/Shaders/Builtin/Constants/epsilon7.js +9 -0
  1468. package/Source/Shaders/Builtin/Constants/infinity.glsl +7 -0
  1469. package/Source/Shaders/Builtin/Constants/infinity.js +9 -0
  1470. package/Source/Shaders/Builtin/Constants/oneOverPi.glsl +16 -0
  1471. package/Source/Shaders/Builtin/Constants/oneOverPi.js +18 -0
  1472. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.glsl +16 -0
  1473. package/Source/Shaders/Builtin/Constants/oneOverTwoPi.js +18 -0
  1474. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +9 -0
  1475. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +11 -0
  1476. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +9 -0
  1477. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +11 -0
  1478. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +9 -0
  1479. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +11 -0
  1480. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
  1481. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  1482. package/Source/Shaders/Builtin/Constants/passClassification.glsl +9 -0
  1483. package/Source/Shaders/Builtin/Constants/passClassification.js +11 -0
  1484. package/Source/Shaders/Builtin/Constants/passCompute.glsl +9 -0
  1485. package/Source/Shaders/Builtin/Constants/passCompute.js +11 -0
  1486. package/Source/Shaders/Builtin/Constants/passEnvironment.glsl +9 -0
  1487. package/Source/Shaders/Builtin/Constants/passEnvironment.js +11 -0
  1488. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +9 -0
  1489. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +11 -0
  1490. package/Source/Shaders/Builtin/Constants/passGlobe.glsl +9 -0
  1491. package/Source/Shaders/Builtin/Constants/passGlobe.js +11 -0
  1492. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +9 -0
  1493. package/Source/Shaders/Builtin/Constants/passOpaque.js +11 -0
  1494. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +9 -0
  1495. package/Source/Shaders/Builtin/Constants/passOverlay.js +11 -0
  1496. package/Source/Shaders/Builtin/Constants/passTerrainClassification.glsl +9 -0
  1497. package/Source/Shaders/Builtin/Constants/passTerrainClassification.js +11 -0
  1498. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +9 -0
  1499. package/Source/Shaders/Builtin/Constants/passTranslucent.js +11 -0
  1500. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +9 -0
  1501. package/Source/Shaders/Builtin/Constants/passVoxels.js +11 -0
  1502. package/Source/Shaders/Builtin/Constants/pi.glsl +16 -0
  1503. package/Source/Shaders/Builtin/Constants/pi.js +18 -0
  1504. package/Source/Shaders/Builtin/Constants/piOverFour.glsl +16 -0
  1505. package/Source/Shaders/Builtin/Constants/piOverFour.js +18 -0
  1506. package/Source/Shaders/Builtin/Constants/piOverSix.glsl +16 -0
  1507. package/Source/Shaders/Builtin/Constants/piOverSix.js +18 -0
  1508. package/Source/Shaders/Builtin/Constants/piOverThree.glsl +16 -0
  1509. package/Source/Shaders/Builtin/Constants/piOverThree.js +18 -0
  1510. package/Source/Shaders/Builtin/Constants/piOverTwo.glsl +16 -0
  1511. package/Source/Shaders/Builtin/Constants/piOverTwo.js +18 -0
  1512. package/Source/Shaders/Builtin/Constants/radiansPerDegree.glsl +16 -0
  1513. package/Source/Shaders/Builtin/Constants/radiansPerDegree.js +18 -0
  1514. package/Source/Shaders/Builtin/Constants/sceneMode2D.glsl +11 -0
  1515. package/Source/Shaders/Builtin/Constants/sceneMode2D.js +13 -0
  1516. package/Source/Shaders/Builtin/Constants/sceneMode3D.glsl +11 -0
  1517. package/Source/Shaders/Builtin/Constants/sceneMode3D.js +13 -0
  1518. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.glsl +11 -0
  1519. package/Source/Shaders/Builtin/Constants/sceneModeColumbusView.js +13 -0
  1520. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.glsl +11 -0
  1521. package/Source/Shaders/Builtin/Constants/sceneModeMorphing.js +13 -0
  1522. package/Source/Shaders/Builtin/Constants/solarRadius.glsl +13 -0
  1523. package/Source/Shaders/Builtin/Constants/solarRadius.js +15 -0
  1524. package/Source/Shaders/Builtin/Constants/threePiOver2.glsl +16 -0
  1525. package/Source/Shaders/Builtin/Constants/threePiOver2.js +18 -0
  1526. package/Source/Shaders/Builtin/Constants/twoPi.glsl +16 -0
  1527. package/Source/Shaders/Builtin/Constants/twoPi.js +18 -0
  1528. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.glsl +16 -0
  1529. package/Source/Shaders/Builtin/Constants/webMercatorMaxLatitude.js +18 -0
  1530. package/Source/Shaders/Builtin/CzmBuiltins.js +280 -0
  1531. package/Source/Shaders/Builtin/Functions/HSBToRGB.glsl +24 -0
  1532. package/Source/Shaders/Builtin/Functions/HSBToRGB.js +26 -0
  1533. package/Source/Shaders/Builtin/Functions/HSLToRGB.glsl +31 -0
  1534. package/Source/Shaders/Builtin/Functions/HSLToRGB.js +33 -0
  1535. package/Source/Shaders/Builtin/Functions/RGBToHSB.glsl +27 -0
  1536. package/Source/Shaders/Builtin/Functions/RGBToHSB.js +29 -0
  1537. package/Source/Shaders/Builtin/Functions/RGBToHSL.glsl +34 -0
  1538. package/Source/Shaders/Builtin/Functions/RGBToHSL.js +36 -0
  1539. package/Source/Shaders/Builtin/Functions/RGBToXYZ.glsl +30 -0
  1540. package/Source/Shaders/Builtin/Functions/RGBToXYZ.js +32 -0
  1541. package/Source/Shaders/Builtin/Functions/XYZToRGB.glsl +30 -0
  1542. package/Source/Shaders/Builtin/Functions/XYZToRGB.js +32 -0
  1543. package/Source/Shaders/Builtin/Functions/acesTonemapping.glsl +16 -0
  1544. package/Source/Shaders/Builtin/Functions/acesTonemapping.js +18 -0
  1545. package/Source/Shaders/Builtin/Functions/alphaWeight.glsl +11 -0
  1546. package/Source/Shaders/Builtin/Functions/alphaWeight.js +13 -0
  1547. package/Source/Shaders/Builtin/Functions/antialias.glsl +39 -0
  1548. package/Source/Shaders/Builtin/Functions/antialias.js +41 -0
  1549. package/Source/Shaders/Builtin/Functions/applyHSBShift.glsl +32 -0
  1550. package/Source/Shaders/Builtin/Functions/applyHSBShift.js +34 -0
  1551. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.glsl +18 -0
  1552. package/Source/Shaders/Builtin/Functions/approximateSphericalCoordinates.js +20 -0
  1553. package/Source/Shaders/Builtin/Functions/approximateTanh.glsl +10 -0
  1554. package/Source/Shaders/Builtin/Functions/approximateTanh.js +12 -0
  1555. package/Source/Shaders/Builtin/Functions/backFacing.glsl +13 -0
  1556. package/Source/Shaders/Builtin/Functions/backFacing.js +15 -0
  1557. package/Source/Shaders/Builtin/Functions/branchFreeTernary.glsl +71 -0
  1558. package/Source/Shaders/Builtin/Functions/branchFreeTernary.js +73 -0
  1559. package/Source/Shaders/Builtin/Functions/cascadeColor.glsl +8 -0
  1560. package/Source/Shaders/Builtin/Functions/cascadeColor.js +10 -0
  1561. package/Source/Shaders/Builtin/Functions/cascadeDistance.glsl +7 -0
  1562. package/Source/Shaders/Builtin/Functions/cascadeDistance.js +9 -0
  1563. package/Source/Shaders/Builtin/Functions/cascadeMatrix.glsl +10 -0
  1564. package/Source/Shaders/Builtin/Functions/cascadeMatrix.js +12 -0
  1565. package/Source/Shaders/Builtin/Functions/cascadeWeights.glsl +10 -0
  1566. package/Source/Shaders/Builtin/Functions/cascadeWeights.js +12 -0
  1567. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +37 -0
  1568. package/Source/Shaders/Builtin/Functions/clipPolygons.js +39 -0
  1569. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +12 -0
  1570. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +14 -0
  1571. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.glsl +88 -0
  1572. package/Source/Shaders/Builtin/Functions/computeAtmosphereColor.js +90 -0
  1573. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.glsl +30 -0
  1574. package/Source/Shaders/Builtin/Functions/computeGroundAtmosphereScattering.js +32 -0
  1575. package/Source/Shaders/Builtin/Functions/computePosition.glsl +22 -0
  1576. package/Source/Shaders/Builtin/Functions/computePosition.js +24 -0
  1577. package/Source/Shaders/Builtin/Functions/computeScattering.glsl +149 -0
  1578. package/Source/Shaders/Builtin/Functions/computeScattering.js +151 -0
  1579. package/Source/Shaders/Builtin/Functions/cosineAndSine.glsl +211 -0
  1580. package/Source/Shaders/Builtin/Functions/cosineAndSine.js +213 -0
  1581. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.glsl +17 -0
  1582. package/Source/Shaders/Builtin/Functions/decompressTextureCoordinates.js +19 -0
  1583. package/Source/Shaders/Builtin/Functions/depthClamp.glsl +47 -0
  1584. package/Source/Shaders/Builtin/Functions/depthClamp.js +49 -0
  1585. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.glsl +33 -0
  1586. package/Source/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.js +35 -0
  1587. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.glsl +12 -0
  1588. package/Source/Shaders/Builtin/Functions/ellipsoidContainsPoint.js +14 -0
  1589. package/Source/Shaders/Builtin/Functions/ellipsoidTextureCoordinates.glsl +10 -0
  1590. package/Source/Shaders/Builtin/Functions/ellipsoidTextureCoordinates.js +12 -0
  1591. package/Source/Shaders/Builtin/Functions/equalsEpsilon.glsl +36 -0
  1592. package/Source/Shaders/Builtin/Functions/equalsEpsilon.js +38 -0
  1593. package/Source/Shaders/Builtin/Functions/eyeOffset.glsl +20 -0
  1594. package/Source/Shaders/Builtin/Functions/eyeOffset.js +22 -0
  1595. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.glsl +32 -0
  1596. package/Source/Shaders/Builtin/Functions/eyeToWindowCoordinates.js +34 -0
  1597. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.glsl +55 -0
  1598. package/Source/Shaders/Builtin/Functions/fastApproximateAtan.js +57 -0
  1599. package/Source/Shaders/Builtin/Functions/fog.glsl +38 -0
  1600. package/Source/Shaders/Builtin/Functions/fog.js +40 -0
  1601. package/Source/Shaders/Builtin/Functions/gammaCorrect.glsl +22 -0
  1602. package/Source/Shaders/Builtin/Functions/gammaCorrect.js +24 -0
  1603. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.glsl +16 -0
  1604. package/Source/Shaders/Builtin/Functions/geodeticSurfaceNormal.js +18 -0
  1605. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.glsl +27 -0
  1606. package/Source/Shaders/Builtin/Functions/getDefaultMaterial.js +29 -0
  1607. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.glsl +22 -0
  1608. package/Source/Shaders/Builtin/Functions/getDynamicAtmosphereLightDirection.js +24 -0
  1609. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.glsl +22 -0
  1610. package/Source/Shaders/Builtin/Functions/getLambertDiffuse.js +24 -0
  1611. package/Source/Shaders/Builtin/Functions/getSpecular.glsl +29 -0
  1612. package/Source/Shaders/Builtin/Functions/getSpecular.js +31 -0
  1613. package/Source/Shaders/Builtin/Functions/getWaterNoise.glsl +37 -0
  1614. package/Source/Shaders/Builtin/Functions/getWaterNoise.js +39 -0
  1615. package/Source/Shaders/Builtin/Functions/hue.glsl +30 -0
  1616. package/Source/Shaders/Builtin/Functions/hue.js +32 -0
  1617. package/Source/Shaders/Builtin/Functions/inverseGamma.glsl +12 -0
  1618. package/Source/Shaders/Builtin/Functions/inverseGamma.js +14 -0
  1619. package/Source/Shaders/Builtin/Functions/isEmpty.glsl +19 -0
  1620. package/Source/Shaders/Builtin/Functions/isEmpty.js +21 -0
  1621. package/Source/Shaders/Builtin/Functions/isFull.glsl +19 -0
  1622. package/Source/Shaders/Builtin/Functions/isFull.js +21 -0
  1623. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.glsl +21 -0
  1624. package/Source/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.js +23 -0
  1625. package/Source/Shaders/Builtin/Functions/lineDistance.glsl +14 -0
  1626. package/Source/Shaders/Builtin/Functions/lineDistance.js +16 -0
  1627. package/Source/Shaders/Builtin/Functions/linearToSrgb.glsl +16 -0
  1628. package/Source/Shaders/Builtin/Functions/linearToSrgb.js +18 -0
  1629. package/Source/Shaders/Builtin/Functions/luminance.glsl +20 -0
  1630. package/Source/Shaders/Builtin/Functions/luminance.js +22 -0
  1631. package/Source/Shaders/Builtin/Functions/maximumComponent.glsl +21 -0
  1632. package/Source/Shaders/Builtin/Functions/maximumComponent.js +23 -0
  1633. package/Source/Shaders/Builtin/Functions/metersPerPixel.glsl +61 -0
  1634. package/Source/Shaders/Builtin/Functions/metersPerPixel.js +63 -0
  1635. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.glsl +38 -0
  1636. package/Source/Shaders/Builtin/Functions/modelToWindowCoordinates.js +40 -0
  1637. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.glsl +18 -0
  1638. package/Source/Shaders/Builtin/Functions/multiplyWithColorBalance.js +20 -0
  1639. package/Source/Shaders/Builtin/Functions/nearFarScalar.glsl +26 -0
  1640. package/Source/Shaders/Builtin/Functions/nearFarScalar.js +28 -0
  1641. package/Source/Shaders/Builtin/Functions/octDecode.glsl +83 -0
  1642. package/Source/Shaders/Builtin/Functions/octDecode.js +85 -0
  1643. package/Source/Shaders/Builtin/Functions/packDepth.glsl +18 -0
  1644. package/Source/Shaders/Builtin/Functions/packDepth.js +20 -0
  1645. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +164 -0
  1646. package/Source/Shaders/Builtin/Functions/pbrLighting.js +166 -0
  1647. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  1648. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  1649. package/Source/Shaders/Builtin/Functions/phong.glsl +63 -0
  1650. package/Source/Shaders/Builtin/Functions/phong.js +65 -0
  1651. package/Source/Shaders/Builtin/Functions/planeDistance.glsl +28 -0
  1652. package/Source/Shaders/Builtin/Functions/planeDistance.js +30 -0
  1653. package/Source/Shaders/Builtin/Functions/pointAlongRay.glsl +19 -0
  1654. package/Source/Shaders/Builtin/Functions/pointAlongRay.js +21 -0
  1655. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.glsl +83 -0
  1656. package/Source/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.js +85 -0
  1657. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.glsl +36 -0
  1658. package/Source/Shaders/Builtin/Functions/raySphereIntersectionInterval.js +38 -0
  1659. package/Source/Shaders/Builtin/Functions/readDepth.glsl +4 -0
  1660. package/Source/Shaders/Builtin/Functions/readDepth.js +6 -0
  1661. package/Source/Shaders/Builtin/Functions/readNonPerspective.glsl +31 -0
  1662. package/Source/Shaders/Builtin/Functions/readNonPerspective.js +33 -0
  1663. package/Source/Shaders/Builtin/Functions/reverseLogDepth.glsl +11 -0
  1664. package/Source/Shaders/Builtin/Functions/reverseLogDepth.js +13 -0
  1665. package/Source/Shaders/Builtin/Functions/round.glsl +22 -0
  1666. package/Source/Shaders/Builtin/Functions/round.js +24 -0
  1667. package/Source/Shaders/Builtin/Functions/saturation.glsl +22 -0
  1668. package/Source/Shaders/Builtin/Functions/saturation.js +24 -0
  1669. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.glsl +24 -0
  1670. package/Source/Shaders/Builtin/Functions/shadowDepthCompare.js +26 -0
  1671. package/Source/Shaders/Builtin/Functions/shadowVisibility.glsl +66 -0
  1672. package/Source/Shaders/Builtin/Functions/shadowVisibility.js +68 -0
  1673. package/Source/Shaders/Builtin/Functions/signNotZero.glsl +29 -0
  1674. package/Source/Shaders/Builtin/Functions/signNotZero.js +31 -0
  1675. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.glsl +44 -0
  1676. package/Source/Shaders/Builtin/Functions/sphericalHarmonics.js +46 -0
  1677. package/Source/Shaders/Builtin/Functions/srgbToLinear.glsl +16 -0
  1678. package/Source/Shaders/Builtin/Functions/srgbToLinear.js +18 -0
  1679. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.glsl +25 -0
  1680. package/Source/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +27 -0
  1681. package/Source/Shaders/Builtin/Functions/textureCube.glsl +36 -0
  1682. package/Source/Shaders/Builtin/Functions/textureCube.js +37 -0
  1683. package/Source/Shaders/Builtin/Functions/transformPlane.glsl +15 -0
  1684. package/Source/Shaders/Builtin/Functions/transformPlane.js +17 -0
  1685. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.glsl +45 -0
  1686. package/Source/Shaders/Builtin/Functions/translateRelativeToEye.js +47 -0
  1687. package/Source/Shaders/Builtin/Functions/translucentPhong.glsl +27 -0
  1688. package/Source/Shaders/Builtin/Functions/translucentPhong.js +29 -0
  1689. package/Source/Shaders/Builtin/Functions/transpose.glsl +45 -0
  1690. package/Source/Shaders/Builtin/Functions/transpose.js +47 -0
  1691. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +14 -0
  1692. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +15 -0
  1693. package/Source/Shaders/Builtin/Functions/unpackDepth.glsl +16 -0
  1694. package/Source/Shaders/Builtin/Functions/unpackDepth.js +18 -0
  1695. package/Source/Shaders/Builtin/Functions/unpackFloat.glsl +24 -0
  1696. package/Source/Shaders/Builtin/Functions/unpackFloat.js +26 -0
  1697. package/Source/Shaders/Builtin/Functions/unpackUint.glsl +31 -0
  1698. package/Source/Shaders/Builtin/Functions/unpackUint.js +33 -0
  1699. package/Source/Shaders/Builtin/Functions/valueTransform.glsl +38 -0
  1700. package/Source/Shaders/Builtin/Functions/valueTransform.js +40 -0
  1701. package/Source/Shaders/Builtin/Functions/vertexLogDepth.glsl +64 -0
  1702. package/Source/Shaders/Builtin/Functions/vertexLogDepth.js +66 -0
  1703. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.glsl +110 -0
  1704. package/Source/Shaders/Builtin/Functions/windowToEyeCoordinates.js +112 -0
  1705. package/Source/Shaders/Builtin/Functions/writeDepthClamp.glsl +24 -0
  1706. package/Source/Shaders/Builtin/Functions/writeDepthClamp.js +26 -0
  1707. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +79 -0
  1708. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +81 -0
  1709. package/Source/Shaders/Builtin/Functions/writeNonPerspective.glsl +32 -0
  1710. package/Source/Shaders/Builtin/Functions/writeNonPerspective.js +34 -0
  1711. package/Source/Shaders/Builtin/Structs/depthRangeStruct.glsl +9 -0
  1712. package/Source/Shaders/Builtin/Structs/depthRangeStruct.js +11 -0
  1713. package/Source/Shaders/Builtin/Structs/material.glsl +22 -0
  1714. package/Source/Shaders/Builtin/Structs/material.js +24 -0
  1715. package/Source/Shaders/Builtin/Structs/materialInput.glsl +30 -0
  1716. package/Source/Shaders/Builtin/Structs/materialInput.js +32 -0
  1717. package/Source/Shaders/Builtin/Structs/modelMaterial.glsl +45 -0
  1718. package/Source/Shaders/Builtin/Structs/modelMaterial.js +47 -0
  1719. package/Source/Shaders/Builtin/Structs/modelVertexOutput.glsl +16 -0
  1720. package/Source/Shaders/Builtin/Structs/modelVertexOutput.js +18 -0
  1721. package/Source/Shaders/Builtin/Structs/ray.glsl +11 -0
  1722. package/Source/Shaders/Builtin/Structs/ray.js +13 -0
  1723. package/Source/Shaders/Builtin/Structs/raySegment.glsl +27 -0
  1724. package/Source/Shaders/Builtin/Structs/raySegment.js +29 -0
  1725. package/Source/Shaders/Builtin/Structs/shadowParameters.glsl +15 -0
  1726. package/Source/Shaders/Builtin/Structs/shadowParameters.js +17 -0
  1727. package/Source/Shaders/CloudCollectionFS.glsl +263 -0
  1728. package/Source/Shaders/CloudCollectionFS.js +265 -0
  1729. package/Source/Shaders/CloudCollectionVS.glsl +48 -0
  1730. package/Source/Shaders/CloudCollectionVS.js +50 -0
  1731. package/Source/Shaders/CloudNoiseFS.glsl +92 -0
  1732. package/Source/Shaders/CloudNoiseFS.js +94 -0
  1733. package/Source/Shaders/CloudNoiseVS.glsl +18 -0
  1734. package/Source/Shaders/CloudNoiseVS.js +20 -0
  1735. package/Source/Shaders/CompareAndPackTranslucentDepth.glsl +12 -0
  1736. package/Source/Shaders/CompareAndPackTranslucentDepth.js +14 -0
  1737. package/Source/Shaders/CompositeOITFS.glsl +31 -0
  1738. package/Source/Shaders/CompositeOITFS.js +33 -0
  1739. package/Source/Shaders/ComputeIrradianceFS.glsl +103 -0
  1740. package/Source/Shaders/ComputeIrradianceFS.js +105 -0
  1741. package/Source/Shaders/ComputeRadianceMapFS.glsl +107 -0
  1742. package/Source/Shaders/ComputeRadianceMapFS.js +109 -0
  1743. package/Source/Shaders/ConvolveSpecularMapFS.glsl +70 -0
  1744. package/Source/Shaders/ConvolveSpecularMapFS.js +72 -0
  1745. package/Source/Shaders/ConvolveSpecularMapVS.glsl +24 -0
  1746. package/Source/Shaders/ConvolveSpecularMapVS.js +26 -0
  1747. package/Source/Shaders/DepthPlaneFS.glsl +36 -0
  1748. package/Source/Shaders/DepthPlaneFS.js +38 -0
  1749. package/Source/Shaders/DepthPlaneVS.glsl +11 -0
  1750. package/Source/Shaders/DepthPlaneVS.js +13 -0
  1751. package/Source/Shaders/EllipsoidFS.glsl +104 -0
  1752. package/Source/Shaders/EllipsoidFS.js +106 -0
  1753. package/Source/Shaders/EllipsoidVS.glsl +28 -0
  1754. package/Source/Shaders/EllipsoidVS.js +30 -0
  1755. package/Source/Shaders/FXAA3_11.glsl +650 -0
  1756. package/Source/Shaders/FXAA3_11.js +680 -0
  1757. package/Source/Shaders/GlobeFS.glsl +692 -0
  1758. package/Source/Shaders/GlobeFS.js +694 -0
  1759. package/Source/Shaders/GlobeVS.glsl +286 -0
  1760. package/Source/Shaders/GlobeVS.js +288 -0
  1761. package/Source/Shaders/GroundAtmosphere.glsl +18 -0
  1762. package/Source/Shaders/GroundAtmosphere.js +20 -0
  1763. package/Source/Shaders/Materials/AspectRampMaterial.glsl +11 -0
  1764. package/Source/Shaders/Materials/AspectRampMaterial.js +13 -0
  1765. package/Source/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  1766. package/Source/Shaders/Materials/BumpMapMaterial.js +31 -0
  1767. package/Source/Shaders/Materials/CheckerboardMaterial.glsl +29 -0
  1768. package/Source/Shaders/Materials/CheckerboardMaterial.js +31 -0
  1769. package/Source/Shaders/Materials/DotMaterial.glsl +18 -0
  1770. package/Source/Shaders/Materials/DotMaterial.js +20 -0
  1771. package/Source/Shaders/Materials/ElevationBandMaterial.glsl +74 -0
  1772. package/Source/Shaders/Materials/ElevationBandMaterial.js +76 -0
  1773. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +26 -0
  1774. package/Source/Shaders/Materials/ElevationContourMaterial.js +28 -0
  1775. package/Source/Shaders/Materials/ElevationRampMaterial.glsl +14 -0
  1776. package/Source/Shaders/Materials/ElevationRampMaterial.js +16 -0
  1777. package/Source/Shaders/Materials/FadeMaterial.glsl +37 -0
  1778. package/Source/Shaders/Materials/FadeMaterial.js +39 -0
  1779. package/Source/Shaders/Materials/GridMaterial.glsl +57 -0
  1780. package/Source/Shaders/Materials/GridMaterial.js +59 -0
  1781. package/Source/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  1782. package/Source/Shaders/Materials/NormalMapMaterial.js +21 -0
  1783. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +63 -0
  1784. package/Source/Shaders/Materials/PolylineArrowMaterial.js +65 -0
  1785. package/Source/Shaders/Materials/PolylineDashMaterial.glsl +39 -0
  1786. package/Source/Shaders/Materials/PolylineDashMaterial.js +41 -0
  1787. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +25 -0
  1788. package/Source/Shaders/Materials/PolylineGlowMaterial.js +27 -0
  1789. package/Source/Shaders/Materials/PolylineOutlineMaterial.glsl +29 -0
  1790. package/Source/Shaders/Materials/PolylineOutlineMaterial.js +31 -0
  1791. package/Source/Shaders/Materials/RimLightingMaterial.glsl +21 -0
  1792. package/Source/Shaders/Materials/RimLightingMaterial.js +23 -0
  1793. package/Source/Shaders/Materials/SlopeRampMaterial.glsl +11 -0
  1794. package/Source/Shaders/Materials/SlopeRampMaterial.js +13 -0
  1795. package/Source/Shaders/Materials/StripeMaterial.glsl +24 -0
  1796. package/Source/Shaders/Materials/StripeMaterial.js +26 -0
  1797. package/Source/Shaders/Materials/Water.glsl +58 -0
  1798. package/Source/Shaders/Materials/Water.js +60 -0
  1799. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  1800. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  1801. package/Source/Shaders/Model/AtmosphereStageFS.glsl +108 -0
  1802. package/Source/Shaders/Model/AtmosphereStageFS.js +110 -0
  1803. package/Source/Shaders/Model/AtmosphereStageVS.glsl +12 -0
  1804. package/Source/Shaders/Model/AtmosphereStageVS.js +14 -0
  1805. package/Source/Shaders/Model/CPUStylingStageFS.glsl +49 -0
  1806. package/Source/Shaders/Model/CPUStylingStageFS.js +51 -0
  1807. package/Source/Shaders/Model/CPUStylingStageVS.glsl +30 -0
  1808. package/Source/Shaders/Model/CPUStylingStageVS.js +32 -0
  1809. package/Source/Shaders/Model/CustomShaderStageFS.glsl +18 -0
  1810. package/Source/Shaders/Model/CustomShaderStageFS.js +20 -0
  1811. package/Source/Shaders/Model/CustomShaderStageVS.glsl +19 -0
  1812. package/Source/Shaders/Model/CustomShaderStageVS.js +21 -0
  1813. package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
  1814. package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
  1815. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
  1816. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
  1817. package/Source/Shaders/Model/FeatureIdStageFS.glsl +4 -0
  1818. package/Source/Shaders/Model/FeatureIdStageFS.js +6 -0
  1819. package/Source/Shaders/Model/FeatureIdStageVS.glsl +6 -0
  1820. package/Source/Shaders/Model/FeatureIdStageVS.js +8 -0
  1821. package/Source/Shaders/Model/GeometryStageFS.glsl +25 -0
  1822. package/Source/Shaders/Model/GeometryStageFS.js +27 -0
  1823. package/Source/Shaders/Model/GeometryStageVS.glsl +42 -0
  1824. package/Source/Shaders/Model/GeometryStageVS.js +44 -0
  1825. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +101 -0
  1826. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +103 -0
  1827. package/Source/Shaders/Model/InstancingStageCommon.glsl +67 -0
  1828. package/Source/Shaders/Model/InstancingStageCommon.js +69 -0
  1829. package/Source/Shaders/Model/InstancingStageVS.glsl +18 -0
  1830. package/Source/Shaders/Model/InstancingStageVS.js +20 -0
  1831. package/Source/Shaders/Model/LegacyInstancingStageVS.glsl +20 -0
  1832. package/Source/Shaders/Model/LegacyInstancingStageVS.js +22 -0
  1833. package/Source/Shaders/Model/LightingStageFS.glsl +120 -0
  1834. package/Source/Shaders/Model/LightingStageFS.js +122 -0
  1835. package/Source/Shaders/Model/MaterialStageFS.glsl +497 -0
  1836. package/Source/Shaders/Model/MaterialStageFS.js +499 -0
  1837. package/Source/Shaders/Model/MetadataStageFS.glsl +9 -0
  1838. package/Source/Shaders/Model/MetadataStageFS.js +11 -0
  1839. package/Source/Shaders/Model/MetadataStageVS.glsl +10 -0
  1840. package/Source/Shaders/Model/MetadataStageVS.js +12 -0
  1841. package/Source/Shaders/Model/ModelClippingPlanesStageFS.glsl +88 -0
  1842. package/Source/Shaders/Model/ModelClippingPlanesStageFS.js +90 -0
  1843. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +6 -0
  1844. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +8 -0
  1845. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +27 -0
  1846. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +29 -0
  1847. package/Source/Shaders/Model/ModelColorStageFS.glsl +7 -0
  1848. package/Source/Shaders/Model/ModelColorStageFS.js +9 -0
  1849. package/Source/Shaders/Model/ModelFS.glsl +133 -0
  1850. package/Source/Shaders/Model/ModelFS.js +135 -0
  1851. package/Source/Shaders/Model/ModelSilhouetteStageFS.glsl +5 -0
  1852. package/Source/Shaders/Model/ModelSilhouetteStageFS.js +6 -0
  1853. package/Source/Shaders/Model/ModelSilhouetteStageVS.glsl +10 -0
  1854. package/Source/Shaders/Model/ModelSilhouetteStageVS.js +12 -0
  1855. package/Source/Shaders/Model/ModelSplitterStageFS.glsl +9 -0
  1856. package/Source/Shaders/Model/ModelSplitterStageFS.js +11 -0
  1857. package/Source/Shaders/Model/ModelVS.glsl +161 -0
  1858. package/Source/Shaders/Model/ModelVS.js +163 -0
  1859. package/Source/Shaders/Model/MorphTargetsStageVS.glsl +15 -0
  1860. package/Source/Shaders/Model/MorphTargetsStageVS.js +16 -0
  1861. package/Source/Shaders/Model/PointCloudStylingStageVS.glsl +45 -0
  1862. package/Source/Shaders/Model/PointCloudStylingStageVS.js +47 -0
  1863. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +15 -0
  1864. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +17 -0
  1865. package/Source/Shaders/Model/PrimitiveOutlineStageVS.glsl +3 -0
  1866. package/Source/Shaders/Model/PrimitiveOutlineStageVS.js +5 -0
  1867. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.glsl +51 -0
  1868. package/Source/Shaders/Model/SelectedFeatureIdStageCommon.js +53 -0
  1869. package/Source/Shaders/Model/SkinningStageVS.glsl +18 -0
  1870. package/Source/Shaders/Model/SkinningStageVS.js +19 -0
  1871. package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +39 -0
  1872. package/Source/Shaders/Model/VerticalExaggerationStageVS.js +41 -0
  1873. package/Source/Shaders/PointPrimitiveCollectionFS.glsl +47 -0
  1874. package/Source/Shaders/PointPrimitiveCollectionFS.js +49 -0
  1875. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +185 -0
  1876. package/Source/Shaders/PointPrimitiveCollectionVS.js +187 -0
  1877. package/Source/Shaders/PolygonSignedDistanceFS.glsl +100 -0
  1878. package/Source/Shaders/PolygonSignedDistanceFS.js +101 -0
  1879. package/Source/Shaders/PolylineCommon.glsl +176 -0
  1880. package/Source/Shaders/PolylineCommon.js +178 -0
  1881. package/Source/Shaders/PolylineFS.glsl +25 -0
  1882. package/Source/Shaders/PolylineFS.js +27 -0
  1883. package/Source/Shaders/PolylineShadowVolumeFS.glsl +86 -0
  1884. package/Source/Shaders/PolylineShadowVolumeFS.js +88 -0
  1885. package/Source/Shaders/PolylineShadowVolumeMorphFS.glsl +45 -0
  1886. package/Source/Shaders/PolylineShadowVolumeMorphFS.js +47 -0
  1887. package/Source/Shaders/PolylineShadowVolumeMorphVS.glsl +177 -0
  1888. package/Source/Shaders/PolylineShadowVolumeMorphVS.js +179 -0
  1889. package/Source/Shaders/PolylineShadowVolumeVS.glsl +168 -0
  1890. package/Source/Shaders/PolylineShadowVolumeVS.js +170 -0
  1891. package/Source/Shaders/PolylineVS.glsl +103 -0
  1892. package/Source/Shaders/PolylineVS.js +105 -0
  1893. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +25 -0
  1894. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +27 -0
  1895. package/Source/Shaders/PostProcessStages/AdditiveBlend.glsl +17 -0
  1896. package/Source/Shaders/PostProcessStages/AdditiveBlend.js +19 -0
  1897. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +144 -0
  1898. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +146 -0
  1899. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +11 -0
  1900. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +13 -0
  1901. package/Source/Shaders/PostProcessStages/BlackAndWhite.glsl +19 -0
  1902. package/Source/Shaders/PostProcessStages/BlackAndWhite.js +21 -0
  1903. package/Source/Shaders/PostProcessStages/BloomComposite.glsl +20 -0
  1904. package/Source/Shaders/PostProcessStages/BloomComposite.js +22 -0
  1905. package/Source/Shaders/PostProcessStages/BrightPass.glsl +30 -0
  1906. package/Source/Shaders/PostProcessStages/BrightPass.js +32 -0
  1907. package/Source/Shaders/PostProcessStages/Brightness.glsl +11 -0
  1908. package/Source/Shaders/PostProcessStages/Brightness.js +13 -0
  1909. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.glsl +31 -0
  1910. package/Source/Shaders/PostProcessStages/CompositeTranslucentClassification.js +33 -0
  1911. package/Source/Shaders/PostProcessStages/ContrastBias.glsl +17 -0
  1912. package/Source/Shaders/PostProcessStages/ContrastBias.js +19 -0
  1913. package/Source/Shaders/PostProcessStages/DepthOfField.glsl +39 -0
  1914. package/Source/Shaders/PostProcessStages/DepthOfField.js +41 -0
  1915. package/Source/Shaders/PostProcessStages/DepthView.glsl +9 -0
  1916. package/Source/Shaders/PostProcessStages/DepthView.js +11 -0
  1917. package/Source/Shaders/PostProcessStages/DepthViewPacked.glsl +14 -0
  1918. package/Source/Shaders/PostProcessStages/DepthViewPacked.js +16 -0
  1919. package/Source/Shaders/PostProcessStages/EdgeDetection.glsl +60 -0
  1920. package/Source/Shaders/PostProcessStages/EdgeDetection.js +62 -0
  1921. package/Source/Shaders/PostProcessStages/FXAA.glsl +21 -0
  1922. package/Source/Shaders/PostProcessStages/FXAA.js +23 -0
  1923. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +40 -0
  1924. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +42 -0
  1925. package/Source/Shaders/PostProcessStages/GaussianBlur1D.glsl +47 -0
  1926. package/Source/Shaders/PostProcessStages/GaussianBlur1D.js +49 -0
  1927. package/Source/Shaders/PostProcessStages/LensFlare.glsl +153 -0
  1928. package/Source/Shaders/PostProcessStages/LensFlare.js +155 -0
  1929. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +28 -0
  1930. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +30 -0
  1931. package/Source/Shaders/PostProcessStages/NightVision.glsl +16 -0
  1932. package/Source/Shaders/PostProcessStages/NightVision.js +18 -0
  1933. package/Source/Shaders/PostProcessStages/PassThrough.glsl +8 -0
  1934. package/Source/Shaders/PostProcessStages/PassThrough.js +10 -0
  1935. package/Source/Shaders/PostProcessStages/PassThroughDepth.glsl +8 -0
  1936. package/Source/Shaders/PostProcessStages/PassThroughDepth.js +10 -0
  1937. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  1938. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  1939. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.glsl +61 -0
  1940. package/Source/Shaders/PostProcessStages/PointCloudEyeDomeLighting.js +63 -0
  1941. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +27 -0
  1942. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +29 -0
  1943. package/Source/Shaders/PostProcessStages/Silhouette.glsl +11 -0
  1944. package/Source/Shaders/PostProcessStages/Silhouette.js +13 -0
  1945. package/Source/Shaders/PrimitiveGaussianSplatFS.glsl +18 -0
  1946. package/Source/Shaders/PrimitiveGaussianSplatFS.js +20 -0
  1947. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +189 -0
  1948. package/Source/Shaders/PrimitiveGaussianSplatVS.js +190 -0
  1949. package/Source/Shaders/ReprojectWebMercatorFS.glsl +8 -0
  1950. package/Source/Shaders/ReprojectWebMercatorFS.js +10 -0
  1951. package/Source/Shaders/ReprojectWebMercatorVS.glsl +12 -0
  1952. package/Source/Shaders/ReprojectWebMercatorVS.js +14 -0
  1953. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +153 -0
  1954. package/Source/Shaders/ShadowVolumeAppearanceFS.js +155 -0
  1955. package/Source/Shaders/ShadowVolumeAppearanceVS.glsl +101 -0
  1956. package/Source/Shaders/ShadowVolumeAppearanceVS.js +103 -0
  1957. package/Source/Shaders/ShadowVolumeFS.glsl +13 -0
  1958. package/Source/Shaders/ShadowVolumeFS.js +15 -0
  1959. package/Source/Shaders/SkyAtmosphereCommon.glsl +81 -0
  1960. package/Source/Shaders/SkyAtmosphereCommon.js +83 -0
  1961. package/Source/Shaders/SkyAtmosphereFS.glsl +59 -0
  1962. package/Source/Shaders/SkyAtmosphereFS.js +61 -0
  1963. package/Source/Shaders/SkyAtmosphereVS.glsl +32 -0
  1964. package/Source/Shaders/SkyAtmosphereVS.js +34 -0
  1965. package/Source/Shaders/SkyBoxFS.glsl +9 -0
  1966. package/Source/Shaders/SkyBoxFS.js +11 -0
  1967. package/Source/Shaders/SkyBoxVS.glsl +9 -0
  1968. package/Source/Shaders/SkyBoxVS.js +11 -0
  1969. package/Source/Shaders/SunFS.glsl +9 -0
  1970. package/Source/Shaders/SunFS.js +11 -0
  1971. package/Source/Shaders/SunTextureFS.glsl +55 -0
  1972. package/Source/Shaders/SunTextureFS.js +57 -0
  1973. package/Source/Shaders/SunVS.glsl +28 -0
  1974. package/Source/Shaders/SunVS.js +30 -0
  1975. package/Source/Shaders/Vector3DTileClampedPolylinesFS.glsl +48 -0
  1976. package/Source/Shaders/Vector3DTileClampedPolylinesFS.js +50 -0
  1977. package/Source/Shaders/Vector3DTileClampedPolylinesVS.glsl +85 -0
  1978. package/Source/Shaders/Vector3DTileClampedPolylinesVS.js +87 -0
  1979. package/Source/Shaders/Vector3DTilePolylinesVS.glsl +22 -0
  1980. package/Source/Shaders/Vector3DTilePolylinesVS.js +24 -0
  1981. package/Source/Shaders/VectorTileVS.glsl +9 -0
  1982. package/Source/Shaders/VectorTileVS.js +11 -0
  1983. package/Source/Shaders/ViewportQuadFS.glsl +16 -0
  1984. package/Source/Shaders/ViewportQuadFS.js +18 -0
  1985. package/Source/Shaders/ViewportQuadVS.glsl +10 -0
  1986. package/Source/Shaders/ViewportQuadVS.js +12 -0
  1987. package/Source/Shaders/Voxels/IntersectBox.glsl +34 -0
  1988. package/Source/Shaders/Voxels/IntersectBox.js +36 -0
  1989. package/Source/Shaders/Voxels/IntersectCylinder.glsl +142 -0
  1990. package/Source/Shaders/Voxels/IntersectCylinder.js +144 -0
  1991. package/Source/Shaders/Voxels/IntersectDepth.glsl +27 -0
  1992. package/Source/Shaders/Voxels/IntersectDepth.js +29 -0
  1993. package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +330 -0
  1994. package/Source/Shaders/Voxels/IntersectEllipsoid.js +332 -0
  1995. package/Source/Shaders/Voxels/IntersectLongitude.glsl +114 -0
  1996. package/Source/Shaders/Voxels/IntersectLongitude.js +116 -0
  1997. package/Source/Shaders/Voxels/IntersectPlane.glsl +80 -0
  1998. package/Source/Shaders/Voxels/IntersectPlane.js +82 -0
  1999. package/Source/Shaders/Voxels/Intersection.glsl +50 -0
  2000. package/Source/Shaders/Voxels/Intersection.js +52 -0
  2001. package/Source/Shaders/Voxels/IntersectionUtils.glsl +167 -0
  2002. package/Source/Shaders/Voxels/IntersectionUtils.js +169 -0
  2003. package/Source/Shaders/Voxels/Megatexture.glsl +123 -0
  2004. package/Source/Shaders/Voxels/Megatexture.js +125 -0
  2005. package/Source/Shaders/Voxels/Octree.glsl +257 -0
  2006. package/Source/Shaders/Voxels/Octree.js +259 -0
  2007. package/Source/Shaders/Voxels/VoxelFS.glsl +267 -0
  2008. package/Source/Shaders/Voxels/VoxelFS.js +269 -0
  2009. package/Source/Shaders/Voxels/VoxelUtils.glsl +12 -0
  2010. package/Source/Shaders/Voxels/VoxelUtils.js +14 -0
  2011. package/Source/Shaders/Voxels/VoxelVS.glsl +11 -0
  2012. package/Source/Shaders/Voxels/VoxelVS.js +13 -0
  2013. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +30 -0
  2014. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +32 -0
  2015. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +97 -0
  2016. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +99 -0
  2017. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +193 -0
  2018. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +195 -0
  2019. package/Source/ThirdParty/Workers/basis_transcoder.js +21 -0
  2020. package/Source/ThirdParty/Workers/package.json +1 -0
  2021. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -0
  2022. package/Source/ThirdParty/basis_transcoder.wasm +0 -0
  2023. package/Source/ThirdParty/draco_decoder.wasm +0 -0
  2024. package/Source/ThirdParty/google-earth-dbroot-parser.js +8337 -0
  2025. package/Source/ThirdParty/wasm_splats_bg.wasm +0 -0
  2026. package/Source/ThirdParty/zip-module.wasm +0 -0
  2027. package/Source/Widget/CesiumWidget.css +119 -0
  2028. package/Source/Widget/CesiumWidget.js +1606 -0
  2029. package/Source/Widget/lighter.css +14 -0
  2030. package/Source/Workers/combineGeometry.js +13 -0
  2031. package/Source/Workers/createBoxGeometry.js +10 -0
  2032. package/Source/Workers/createBoxOutlineGeometry.js +10 -0
  2033. package/Source/Workers/createCircleGeometry.js +18 -0
  2034. package/Source/Workers/createCircleOutlineGeometry.js +18 -0
  2035. package/Source/Workers/createCoplanarPolygonGeometry.js +10 -0
  2036. package/Source/Workers/createCoplanarPolygonOutlineGeometry.js +15 -0
  2037. package/Source/Workers/createCorridorGeometry.js +12 -0
  2038. package/Source/Workers/createCorridorOutlineGeometry.js +17 -0
  2039. package/Source/Workers/createCylinderGeometry.js +10 -0
  2040. package/Source/Workers/createCylinderOutlineGeometry.js +10 -0
  2041. package/Source/Workers/createEllipseGeometry.js +14 -0
  2042. package/Source/Workers/createEllipseOutlineGeometry.js +14 -0
  2043. package/Source/Workers/createEllipsoidGeometry.js +10 -0
  2044. package/Source/Workers/createEllipsoidOutlineGeometry.js +13 -0
  2045. package/Source/Workers/createFrustumGeometry.js +10 -0
  2046. package/Source/Workers/createFrustumOutlineGeometry.js +10 -0
  2047. package/Source/Workers/createGeometry.js +78 -0
  2048. package/Source/Workers/createGroundPolylineGeometry.js +16 -0
  2049. package/Source/Workers/createPlaneGeometry.js +10 -0
  2050. package/Source/Workers/createPlaneOutlineGeometry.js +10 -0
  2051. package/Source/Workers/createPolygonGeometry.js +12 -0
  2052. package/Source/Workers/createPolygonOutlineGeometry.js +12 -0
  2053. package/Source/Workers/createPolylineGeometry.js +12 -0
  2054. package/Source/Workers/createPolylineVolumeGeometry.js +17 -0
  2055. package/Source/Workers/createPolylineVolumeOutlineGeometry.js +22 -0
  2056. package/Source/Workers/createRectangleGeometry.js +14 -0
  2057. package/Source/Workers/createRectangleOutlineGeometry.js +17 -0
  2058. package/Source/Workers/createSimplePolylineGeometry.js +17 -0
  2059. package/Source/Workers/createSphereGeometry.js +10 -0
  2060. package/Source/Workers/createSphereOutlineGeometry.js +10 -0
  2061. package/Source/Workers/createTaskProcessorWorker.js +113 -0
  2062. package/Source/Workers/createVectorTileClampedPolylines.js +541 -0
  2063. package/Source/Workers/createVectorTileGeometries.js +414 -0
  2064. package/Source/Workers/createVectorTilePoints.js +81 -0
  2065. package/Source/Workers/createVectorTilePolygons.js +412 -0
  2066. package/Source/Workers/createVectorTilePolylines.js +210 -0
  2067. package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
  2068. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +651 -0
  2069. package/Source/Workers/createVerticesFromHeightmap.js +53 -0
  2070. package/Source/Workers/createVerticesFromQuantizedTerrainMesh.js +549 -0
  2071. package/Source/Workers/createWallGeometry.js +12 -0
  2072. package/Source/Workers/createWallOutlineGeometry.js +12 -0
  2073. package/Source/Workers/decodeDraco.js +383 -0
  2074. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +268 -0
  2075. package/Source/Workers/decodeI3S.js +1652 -0
  2076. package/Source/Workers/gaussianSplatSorter.js +34 -0
  2077. package/Source/Workers/gaussianSplatTextureGenerator.js +39 -0
  2078. package/Source/Workers/incrementallyBuildTerrainPicker.js +108 -0
  2079. package/Source/Workers/transcodeKTX2.js +308 -0
  2080. package/Source/Workers/transferTypedArrayTest.js +16 -0
  2081. package/Source/Workers/upsampleQuantizedTerrainMesh.js +681 -0
  2082. package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
  2083. package/index.d.ts +46026 -0
  2084. package/index.js +1227 -0
  2085. package/package.json +79 -0
@@ -0,0 +1,3932 @@
1
+ import ApproximateTerrainHeights from "../Core/ApproximateTerrainHeights.js";
2
+ import BoundingSphere from "../Core/BoundingSphere.js";
3
+ import Cartesian2 from "../Core/Cartesian2.js";
4
+ import Cartesian3 from "../Core/Cartesian3.js";
5
+ import Cartographic from "../Core/Cartographic.js";
6
+ import Check from "../Core/Check.js";
7
+ import clone from "../Core/clone.js";
8
+ import Color from "../Core/Color.js";
9
+ import Credit from "../Core/Credit.js";
10
+ import Frozen from "../Core/Frozen.js";
11
+ import defined from "../Core/defined.js";
12
+ import deprecationWarning from "../Core/deprecationWarning.js";
13
+ import destroyObject from "../Core/destroyObject.js";
14
+ import Ellipsoid from "../Core/Ellipsoid.js";
15
+ import Event from "../Core/Event.js";
16
+ import ImageBasedLighting from "./ImageBasedLighting.js";
17
+ import Interval from "../Core/Interval.js";
18
+ import IntersectionTests from "../Core/IntersectionTests.js";
19
+ import IonResource from "../Core/IonResource.js";
20
+ import JulianDate from "../Core/JulianDate.js";
21
+ import ManagedArray from "../Core/ManagedArray.js";
22
+ import CesiumMath from "../Core/Math.js";
23
+ import Matrix3 from "../Core/Matrix3.js";
24
+ import Matrix4 from "../Core/Matrix4.js";
25
+ import Resource from "../Core/Resource.js";
26
+ import RuntimeError from "../Core/RuntimeError.js";
27
+ import Transforms from "../Core/Transforms.js";
28
+ import ClearCommand from "../Renderer/ClearCommand.js";
29
+ import Pass from "../Renderer/Pass.js";
30
+ import RenderState from "../Renderer/RenderState.js";
31
+ import Axis from "./Axis.js";
32
+ import Cesium3DTile from "./Cesium3DTile.js";
33
+ import Cesium3DTileColorBlendMode from "./Cesium3DTileColorBlendMode.js";
34
+ import Cesium3DTileContentState from "./Cesium3DTileContentState.js";
35
+ import Cesium3DTilesetMetadata from "./Cesium3DTilesetMetadata.js";
36
+ import Cesium3DTileOptimizations from "./Cesium3DTileOptimizations.js";
37
+ import Cesium3DTilePass from "./Cesium3DTilePass.js";
38
+ import Cesium3DTileRefine from "./Cesium3DTileRefine.js";
39
+ import Cesium3DTilesetCache from "./Cesium3DTilesetCache.js";
40
+ import Cesium3DTilesetHeatmap from "./Cesium3DTilesetHeatmap.js";
41
+ import Cesium3DTilesetStatistics from "./Cesium3DTilesetStatistics.js";
42
+ import Cesium3DTileStyleEngine from "./Cesium3DTileStyleEngine.js";
43
+ import ClippingPlaneCollection from "./ClippingPlaneCollection.js";
44
+ import ClippingPolygonCollection from "./ClippingPolygonCollection.js";
45
+ import hasExtension from "./hasExtension.js";
46
+ import ImplicitTileset from "./ImplicitTileset.js";
47
+ import ImplicitTileCoordinates from "./ImplicitTileCoordinates.js";
48
+ import LabelCollection from "./LabelCollection.js";
49
+ import oneTimeWarning from "../Core/oneTimeWarning.js";
50
+ import PointCloudEyeDomeLighting from "./PointCloudEyeDomeLighting.js";
51
+ import PointCloudShading from "./PointCloudShading.js";
52
+ import ResourceCache from "./ResourceCache.js";
53
+ import SceneMode from "./SceneMode.js";
54
+ import ShadowMode from "./ShadowMode.js";
55
+ import SplitDirection from "./SplitDirection.js";
56
+ import StencilConstants from "./StencilConstants.js";
57
+ import TileBoundingRegion from "./TileBoundingRegion.js";
58
+ import TileBoundingSphere from "./TileBoundingSphere.js";
59
+ import TileOrientedBoundingBox from "./TileOrientedBoundingBox.js";
60
+ import Cesium3DTilesetMostDetailedTraversal from "./Cesium3DTilesetMostDetailedTraversal.js";
61
+ import Cesium3DTilesetBaseTraversal from "./Cesium3DTilesetBaseTraversal.js";
62
+ import Cesium3DTilesetSkipTraversal from "./Cesium3DTilesetSkipTraversal.js";
63
+ import Ray from "../Core/Ray.js";
64
+ import DynamicEnvironmentMapManager from "./DynamicEnvironmentMapManager.js";
65
+ import ImageryLayerCollection from "./ImageryLayerCollection.js";
66
+
67
+ /**
68
+ * @typedef {object} Cesium3DTileset.ConstructorOptions
69
+ *
70
+ * Initialization options for the Cesium3DTileset constructor
71
+ *
72
+ * @property {boolean} [show=true] Determines if the tileset will be shown.
73
+ * @property {Matrix4} [modelMatrix=Matrix4.IDENTITY] A 4x4 transformation matrix that transforms the tileset's root tile.
74
+ * @property {Axis} [modelUpAxis=Axis.Y] Which axis is considered up when loading models for tile contents.
75
+ * @property {Axis} [modelForwardAxis=Axis.X] Which axis is considered forward when loading models for tile contents.
76
+ * @property {ShadowMode} [shadows=ShadowMode.ENABLED] Determines whether the tileset casts or receives shadows from light sources.
77
+ * @property {number} [maximumScreenSpaceError=16] The maximum screen space error used to drive level of detail refinement.
78
+ * @property {number} [cacheBytes=536870912] The size (in bytes) to which the tile cache will be trimmed, if the cache contains tiles not needed for the current view.
79
+ * @property {number} [maximumCacheOverflowBytes=536870912] The maximum additional memory (in bytes) to allow for cache headroom, if more than {@link Cesium3DTileset#cacheBytes} are needed for the current view.
80
+ * @property {boolean} [cullWithChildrenBounds=true] Optimization option. Whether to cull tiles using the union of their children bounding volumes.
81
+ * @property {boolean} [cullRequestsWhileMoving=true] Optimization option. Don't request tiles that will likely be unused when they come back because of the camera's movement. This optimization only applies to stationary tilesets.
82
+ * @property {number} [cullRequestsWhileMovingMultiplier=60.0] Optimization option. Multiplier used in culling requests while moving. Larger is more aggressive culling, smaller less aggressive culling.
83
+ * @property {boolean} [preloadWhenHidden=false] Preload tiles when <code>tileset.show</code> is <code>false</code>. Loads tiles as if the tileset is visible but does not render them.
84
+ * @property {boolean} [preloadFlightDestinations=true] Optimization option. Preload tiles at the camera's flight destination while the camera is in flight.
85
+ * @property {boolean} [preferLeaves=false] Optimization option. Prefer loading of leaves first.
86
+ * @property {boolean} [dynamicScreenSpaceError=true] Optimization option. For street-level horizon views, use lower resolution tiles far from the camera. This reduces the amount of data loaded and improves tileset loading time with a slight drop in visual quality in the distance.
87
+ * @property {number} [dynamicScreenSpaceErrorDensity=2.0e-4] Similar to {@link Fog#density}, this option controls the camera distance at which the {@link Cesium3DTileset#dynamicScreenSpaceError} optimization applies. Larger values will cause tiles closer to the camera to be affected.
88
+ * @property {number} [dynamicScreenSpaceErrorFactor=24.0] A parameter that controls the intensity of the {@link Cesium3DTileset#dynamicScreenSpaceError} optimization for tiles on the horizon. Larger values cause lower resolution tiles to load, improving runtime performance at a slight reduction of visual quality.
89
+ * @property {number} [dynamicScreenSpaceErrorHeightFalloff=0.25] A ratio of the tileset's height that determines where "street level" camera views occur. When the camera is below this height, the {@link Cesium3DTileset#dynamicScreenSpaceError} optimization will have the maximum effect, and it will roll off above this value.
90
+ * @property {number} [progressiveResolutionHeightFraction=0.3] Optimization option. If between (0.0, 0.5], tiles at or above the screen space error for the reduced screen resolution of <code>progressiveResolutionHeightFraction*screenHeight</code> will be prioritized first. This can help get a quick layer of tiles down while full resolution tiles continue to load.
91
+ * @property {boolean} [foveatedScreenSpaceError=true] Optimization option. Prioritize loading tiles in the center of the screen by temporarily raising the screen space error for tiles around the edge of the screen. Screen space error returns to normal once all the tiles in the center of the screen as determined by the {@link Cesium3DTileset#foveatedConeSize} are loaded.
92
+ * @property {number} [foveatedConeSize=0.1] Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control the cone size that determines which tiles are deferred. Tiles that are inside this cone are loaded immediately. Tiles outside the cone are potentially deferred based on how far outside the cone they are and their screen space error. This is controlled by {@link Cesium3DTileset#foveatedInterpolationCallback} and {@link Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation}. Setting this to 0.0 means the cone will be the line formed by the camera position and its view direction. Setting this to 1.0 means the cone encompasses the entire field of view of the camera, disabling the effect.
93
+ * @property {number} [foveatedMinimumScreenSpaceErrorRelaxation=0.0] Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control the starting screen space error relaxation for tiles outside the foveated cone. The screen space error will be raised starting with tileset value up to {@link Cesium3DTileset#maximumScreenSpaceError} based on the provided {@link Cesium3DTileset#foveatedInterpolationCallback}.
94
+ * @property {Cesium3DTileset.foveatedInterpolationCallback} [foveatedInterpolationCallback=Math.lerp] Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control how much to raise the screen space error for tiles outside the foveated cone, interpolating between {@link Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation} and {@link Cesium3DTileset#maximumScreenSpaceError}
95
+ * @property {number} [foveatedTimeDelay=0.2] Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control how long in seconds to wait after the camera stops moving before deferred tiles start loading in. This time delay prevents requesting tiles around the edges of the screen when the camera is moving. Setting this to 0.0 will immediately request all tiles in any given view.
96
+ * @property {boolean} [skipLevelOfDetail=false] Optimization option. Determines if level of detail skipping should be applied during the traversal.
97
+ * @property {number} [baseScreenSpaceError=1024] When <code>skipLevelOfDetail</code> is <code>true</code>, the screen space error that must be reached before skipping levels of detail.
98
+ * @property {number} [skipScreenSpaceErrorFactor=16] When <code>skipLevelOfDetail</code> is <code>true</code>, a multiplier defining the minimum screen space error to skip. Used in conjunction with <code>skipLevels</code> to determine which tiles to load.
99
+ * @property {number} [skipLevels=1] When <code>skipLevelOfDetail</code> is <code>true</code>, a constant defining the minimum number of levels to skip when loading tiles. When it is 0, no levels are skipped. Used in conjunction with <code>skipScreenSpaceErrorFactor</code> to determine which tiles to load.
100
+ * @property {boolean} [immediatelyLoadDesiredLevelOfDetail=false] When <code>skipLevelOfDetail</code> is <code>true</code>, only tiles that meet the maximum screen space error will ever be downloaded. Skipping factors are ignored and just the desired tiles are loaded.
101
+ * @property {boolean} [loadSiblings=false] When <code>skipLevelOfDetail</code> is <code>true</code>, determines whether siblings of visible tiles are always downloaded during traversal.
102
+ * @property {ClippingPlaneCollection} [clippingPlanes] The {@link ClippingPlaneCollection} used to selectively disable rendering the tileset.
103
+ * @property {ClippingPolygonCollection} [clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the tileset.
104
+ * @property {ClassificationType} [classificationType] Determines whether terrain, 3D Tiles or both will be classified by this tileset. See {@link Cesium3DTileset#classificationType} for details about restrictions and limitations.
105
+ * @property {HeightReference} [heightReference] Sets the {@link HeightReference} for point features in vector tilesets.
106
+ * @property {Scene} [scene] The {@link CesiumWidget#scene} that the tileset will be rendered in, required for tilesets that specify a {@link heightReference} value for clamping 3D Tiles vector data content- like points, lines, and labels- to terrain or 3D tiles.
107
+ * @property {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid determining the size and shape of the globe.
108
+ * @property {object} [pointCloudShading] Options for constructing a {@link PointCloudShading} object to control point attenuation based on geometric error and lighting.
109
+ * @property {Cartesian3} [lightColor] The light color when shading models. When <code>undefined</code> the scene's light color is used instead.
110
+ * @property {ImageBasedLighting} [imageBasedLighting] The properties for managing image-based lighting for this tileset.
111
+ * @property {DynamicEnvironmentMapManager.ConstructorOptions} [environmentMapOptions] The properties for managing dynamic environment maps on this tileset.
112
+ * @property {boolean} [backFaceCulling=true] Whether to cull back-facing geometry. When true, back face culling is determined by the glTF material's doubleSided property; when false, back face culling is disabled.
113
+ * @property {boolean} [enableShowOutline=true] Whether to enable outlines for models using the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. This can be set to false to avoid the additional processing of geometry at load time. When false, the showOutlines and outlineColor options are ignored.
114
+ * @property {boolean} [showOutline=true] Whether to display the outline for models using the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. When true, outlines are displayed. When false, outlines are not displayed.
115
+ * @property {Color} [outlineColor=Color.BLACK] The color to use when rendering outlines.
116
+ * @property {boolean} [vectorClassificationOnly=false] Indicates that only the tileset's vector tiles should be used for classification.
117
+ * @property {boolean} [vectorKeepDecodedPositions=false] Whether vector tiles should keep decoded positions in memory. This is used with {@link Cesium3DTileFeature.getPolylinePositions}.
118
+ * @property {string|number} [featureIdLabel="featureId_0"] Label of the feature ID set to use for picking and styling. For EXT_mesh_features, this is the feature ID's label property, or "featureId_N" (where N is the index in the featureIds array) when not specified. EXT_feature_metadata did not have a label field, so such feature ID sets are always labeled "featureId_N" where N is the index in the list of all feature Ids, where feature ID attributes are listed before feature ID textures. If featureIdLabel is an integer N, it is converted to the string "featureId_N" automatically. If both per-primitive and per-instance feature IDs are present, the instance feature IDs take priority.
119
+ * @property {string|number} [instanceFeatureIdLabel="instanceFeatureId_0"] Label of the instance feature ID set used for picking and styling. If instanceFeatureIdLabel is set to an integer N, it is converted to the string "instanceFeatureId_N" automatically. If both per-primitive and per-instance feature IDs are present, the instance feature IDs take priority.
120
+ * @property {boolean} [showCreditsOnScreen=false] Whether to display the credits of this tileset on screen.
121
+ * @property {SplitDirection} [splitDirection=SplitDirection.NONE] The {@link SplitDirection} split to apply to this tileset.
122
+ * @property {boolean} [enableCollision=false] When <code>true</code>, enables collisions for camera or CPU picking. While this is <code>true</code> the camera will be prevented from going below the tileset surface if {@link ScreenSpaceCameraController#enableCollisionDetection} is true. This also affects the behavior of {@link HeightReference.CLAMP_TO_GROUND} when clamping to 3D Tiles surfaces. If <code>enableCollision</code> is <code>false</code>, entities may not be correctly clamped to the tileset geometry.
123
+ * @property {boolean} [projectTo2D=false] Whether to accurately project the tileset to 2D. If this is true, the tileset will be projected accurately to 2D, but it will use more memory to do so. If this is false, the tileset will use less memory and will still render in 2D / CV mode, but its projected positions may be inaccurate. This cannot be set after the tileset has been created.
124
+ * @property {boolean} [enablePick=false] Whether to allow collision and CPU picking with <code>pick</code> when using WebGL 1. If using WebGL 2 or above, this option will be ignored. If using WebGL 1 and this is true, the <code>pick</code> operation will work correctly, but it will use more memory to do so. If running with WebGL 1 and this is false, the model will use less memory, but <code>pick</code> will always return <code>undefined</code>. This cannot be set after the tileset has loaded.
125
+ * @property {boolean} [asynchronouslyLoadImagery=false] Whether loading imagery that is draped over the tileset should be done asynchronously. If this is <code>true</code>, then tile content will be displayed with its original texture until the imagery texture is loaded. If this is <code>false</code>, then the tile content will not be displayed until the imagery is ready.
126
+ * @property {string} [debugHeatmapTilePropertyName] The tile variable to colorize as a heatmap. All rendered tiles will be colorized relative to each other's specified variable value.
127
+ * @property {boolean} [debugFreezeFrame=false] For debugging only. Determines if only the tiles from last frame should be used for rendering.
128
+ * @property {boolean} [debugColorizeTiles=false] For debugging only. When true, assigns a random color to each tile.
129
+ * @property {boolean} [enableDebugWireframe=false] For debugging only. This must be true for debugWireframe to work in WebGL1. This cannot be set after the tileset has been created.
130
+ * @property {boolean} [debugWireframe=false] For debugging only. When true, render's each tile's content as a wireframe.
131
+ * @property {boolean} [debugShowBoundingVolume=false] For debugging only. When true, renders the bounding volume for each tile.
132
+ * @property {boolean} [debugShowContentBoundingVolume=false] For debugging only. When true, renders the bounding volume for each tile's content.
133
+ * @property {boolean} [debugShowViewerRequestVolume=false] For debugging only. When true, renders the viewer request volume for each tile.
134
+ * @property {boolean} [debugShowGeometricError=false] For debugging only. When true, draws labels to indicate the geometric error of each tile.
135
+ * @property {boolean} [debugShowRenderingStatistics=false] For debugging only. When true, draws labels to indicate the number of commands, points, triangles and features for each tile.
136
+ * @property {boolean} [debugShowMemoryUsage=false] For debugging only. When true, draws labels to indicate the texture and geometry memory in megabytes used by each tile.
137
+ * @property {boolean} [debugShowUrl=false] For debugging only. When true, draws labels to indicate the url of each tile.
138
+ */
139
+
140
+ /**
141
+ * A {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification|3D Tiles tileset},
142
+ * used for streaming massive heterogeneous 3D geospatial datasets.
143
+ *
144
+ * <div class="notice">
145
+ * This object is normally not instantiated directly, use {@link Cesium3DTileset.fromUrl}.
146
+ * </div>
147
+ *
148
+ * @alias Cesium3DTileset
149
+ * @constructor
150
+ * @experimental Support for loading Gaussian splats content encoded with SPZ compression using the draft glTF extensions {@link https://github.com/CesiumGS/glTF/tree/draft-splat-spz/extensions/2.0/Khronos/KHR_gaussian_splatting | KHR_gaussian_splatting} and {@link https://github.com/CesiumGS/glTF/tree/draft-splat-spz/extensions/2.0/Khronos/KHR_gaussian_splatting_compression_spz_2 | KHR_gaussian_splatting_compression_spz_2} is experimental and is subject change without Cesium's standard deprecation policy.
151
+ * @param {Cesium3DTileset.ConstructorOptions} options An object describing initialization options
152
+ *
153
+ * @exception {DeveloperError} The tileset must be 3D Tiles version 0.0 or 1.0.
154
+ *
155
+ * @example
156
+ * try {
157
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
158
+ * "http://localhost:8002/tilesets/Seattle/tileset.json"
159
+ * );
160
+ * scene.primitives.add(tileset);
161
+ * } catch (error) {
162
+ * console.error(`Error creating tileset: ${error}`);
163
+ * }
164
+ *
165
+ * @example
166
+ * // Turn on camera collisions with the tileset.
167
+ * try {
168
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
169
+ * "http://localhost:8002/tilesets/Seattle/tileset.json",
170
+ * { enableCollision: true }
171
+ * );
172
+ * scene.primitives.add(tileset);
173
+ * } catch (error) {
174
+ * console.error(`Error creating tileset: ${error}`);
175
+ * }
176
+ *
177
+ * @example
178
+ * // Common setting for the skipLevelOfDetail optimization
179
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
180
+ * "http://localhost:8002/tilesets/Seattle/tileset.json", {
181
+ * skipLevelOfDetail: true,
182
+ * baseScreenSpaceError: 1024,
183
+ * skipScreenSpaceErrorFactor: 16,
184
+ * skipLevels: 1,
185
+ * immediatelyLoadDesiredLevelOfDetail: false,
186
+ * loadSiblings: false,
187
+ * cullWithChildrenBounds: true
188
+ * });
189
+ * scene.primitives.add(tileset);
190
+ *
191
+ * @example
192
+ * // Common settings for the dynamicScreenSpaceError optimization
193
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
194
+ * "http://localhost:8002/tilesets/Seattle/tileset.json", {
195
+ * dynamicScreenSpaceError: true,
196
+ * dynamicScreenSpaceErrorDensity: 2.0e-4,
197
+ * dynamicScreenSpaceErrorFactor: 24.0,
198
+ * dynamicScreenSpaceErrorHeightFalloff: 0.25
199
+ * });
200
+ * scene.primitives.add(tileset);
201
+ * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification|3D Tiles specification}
202
+ */
203
+ function Cesium3DTileset(options) {
204
+ options = options ?? Frozen.EMPTY_OBJECT;
205
+
206
+ this._url = undefined;
207
+ this._basePath = undefined;
208
+ this._root = undefined;
209
+ this._resource = undefined;
210
+ this._asset = undefined; // Metadata for the entire tileset
211
+ this._properties = undefined; // Metadata for per-model/point/etc properties
212
+ this._geometricError = undefined; // Geometric error when the tree is not rendered at all
213
+ this._scaledGeometricError = undefined; // Geometric error scaled by root tile scale
214
+ this._extensionsUsed = undefined;
215
+ this._extensions = undefined;
216
+ this._modelUpAxis = undefined;
217
+ this._modelForwardAxis = undefined;
218
+ this._cache = new Cesium3DTilesetCache();
219
+ this._processingQueue = [];
220
+ this._selectedTiles = [];
221
+ this._emptyTiles = [];
222
+ this._requestedTiles = [];
223
+ this._selectedTilesToStyle = [];
224
+ this._loadTimestamp = undefined;
225
+ this._timeSinceLoad = 0.0;
226
+ this._updatedVisibilityFrame = 0;
227
+ this._updatedModelMatrixFrame = 0;
228
+ this._modelMatrixChanged = false;
229
+ this._previousModelMatrix = undefined;
230
+ this._extras = undefined;
231
+ this._credits = undefined;
232
+
233
+ this._showCreditsOnScreen = options.showCreditsOnScreen ?? false;
234
+
235
+ this._cullWithChildrenBounds = options.cullWithChildrenBounds ?? true;
236
+ this._allTilesAdditive = true;
237
+
238
+ this._hasMixedContent = false;
239
+
240
+ this._stencilClearCommand = undefined;
241
+ this._backfaceCommands = new ManagedArray();
242
+
243
+ this._maximumScreenSpaceError = options.maximumScreenSpaceError ?? 16;
244
+ this._memoryAdjustedScreenSpaceError = this._maximumScreenSpaceError;
245
+
246
+ this._cacheBytes = options.cacheBytes ?? 512 * 1024 * 1024;
247
+ //>>includeStart('debug', pragmas.debug);
248
+ Check.typeOf.number.greaterThanOrEquals("cacheBytes", this._cacheBytes, 0);
249
+ //>>includeEnd('debug');
250
+
251
+ const maximumCacheOverflowBytes =
252
+ options.maximumCacheOverflowBytes ?? 512 * 1024 * 1024;
253
+ //>>includeStart('debug', pragmas.debug);
254
+ Check.typeOf.number.greaterThanOrEquals(
255
+ "maximumCacheOverflowBytes",
256
+ maximumCacheOverflowBytes,
257
+ 0,
258
+ );
259
+ //>>includeEnd('debug');
260
+ this._maximumCacheOverflowBytes = maximumCacheOverflowBytes;
261
+
262
+ this._styleEngine = new Cesium3DTileStyleEngine();
263
+ this._styleApplied = false;
264
+
265
+ this._modelMatrix = defined(options.modelMatrix)
266
+ ? Matrix4.clone(options.modelMatrix)
267
+ : Matrix4.clone(Matrix4.IDENTITY);
268
+
269
+ this._addHeightCallbacks = [];
270
+
271
+ this._statistics = new Cesium3DTilesetStatistics();
272
+ this._statisticsLast = new Cesium3DTilesetStatistics();
273
+ this._statisticsPerPass = new Array(Cesium3DTilePass.NUMBER_OF_PASSES);
274
+
275
+ for (let i = 0; i < Cesium3DTilePass.NUMBER_OF_PASSES; ++i) {
276
+ this._statisticsPerPass[i] = new Cesium3DTilesetStatistics();
277
+ }
278
+
279
+ this._requestedTilesInFlight = [];
280
+
281
+ this._maximumPriority = {
282
+ foveatedFactor: -Number.MAX_VALUE,
283
+ depth: -Number.MAX_VALUE,
284
+ distance: -Number.MAX_VALUE,
285
+ reverseScreenSpaceError: -Number.MAX_VALUE,
286
+ };
287
+ this._minimumPriority = {
288
+ foveatedFactor: Number.MAX_VALUE,
289
+ depth: Number.MAX_VALUE,
290
+ distance: Number.MAX_VALUE,
291
+ reverseScreenSpaceError: Number.MAX_VALUE,
292
+ };
293
+ this._heatmap = new Cesium3DTilesetHeatmap(
294
+ options.debugHeatmapTilePropertyName,
295
+ );
296
+
297
+ /**
298
+ * Optimization option. Don't request tiles that will likely be unused when they come back because of the camera's movement. This optimization only applies to stationary tilesets.
299
+ *
300
+ * @type {boolean}
301
+ * @default true
302
+ */
303
+ this.cullRequestsWhileMoving = options.cullRequestsWhileMoving ?? true;
304
+ this._cullRequestsWhileMoving = false;
305
+
306
+ /**
307
+ * Optimization option. Multiplier used in culling requests while moving. Larger is more aggressive culling, smaller less aggressive culling.
308
+ *
309
+ * @type {number}
310
+ * @default 60.0
311
+ */
312
+ this.cullRequestsWhileMovingMultiplier =
313
+ options.cullRequestsWhileMovingMultiplier ?? 60.0;
314
+
315
+ /**
316
+ * Optimization option. If between (0.0, 0.5], tiles at or above the screen space error for the reduced screen resolution of <code>progressiveResolutionHeightFraction*screenHeight</code> will be prioritized first. This can help get a quick layer of tiles down while full resolution tiles continue to load.
317
+ *
318
+ * @type {number}
319
+ * @default 0.3
320
+ */
321
+ this.progressiveResolutionHeightFraction = CesiumMath.clamp(
322
+ options.progressiveResolutionHeightFraction ?? 0.3,
323
+ 0.0,
324
+ 0.5,
325
+ );
326
+
327
+ /**
328
+ * Optimization option. Prefer loading of leaves first.
329
+ *
330
+ * @type {boolean}
331
+ * @default false
332
+ */
333
+ this.preferLeaves = options.preferLeaves ?? false;
334
+
335
+ this._tilesLoaded = false;
336
+ this._initialTilesLoaded = false;
337
+
338
+ this._tileDebugLabels = undefined;
339
+
340
+ this._classificationType = options.classificationType;
341
+ this._heightReference = options.heightReference;
342
+ this._scene = options.scene;
343
+
344
+ this._ellipsoid = options.ellipsoid ?? Ellipsoid.WGS84;
345
+
346
+ this._initialClippingPlanesOriginMatrix = Matrix4.IDENTITY; // Computed from the tileset JSON.
347
+ this._clippingPlanesOriginMatrix = undefined; // Combines the above with any run-time transforms.
348
+ this._clippingPlanesOriginMatrixDirty = true;
349
+
350
+ this._vectorClassificationOnly = options.vectorClassificationOnly ?? false;
351
+
352
+ this._vectorKeepDecodedPositions =
353
+ options.vectorKeepDecodedPositions ?? false;
354
+
355
+ /**
356
+ * The collection of <code>ImageryLayer</code> objects providing 2D georeferenced
357
+ * image data that will be rendered over the tileset.
358
+ *
359
+ * @private
360
+ * @type {ImageryLayerCollection}
361
+ * @readonly
362
+ */
363
+ this._imageryLayers = new ImageryLayerCollection(this);
364
+
365
+ /**
366
+ * A counter that will be increased for each modification of the
367
+ * imagery layers (i.e. for each layerAdded, layerRemoved,
368
+ * layerMoved, or layerShownOrHidden event). This can be used
369
+ * by the <code>ModelImagery</code> class to detect changes in
370
+ * the imagery, and trigger the appropriate updates.
371
+ *
372
+ * @private
373
+ */
374
+ this._imageryLayersModificationCounter = 0;
375
+
376
+ /**
377
+ * A listener that will be attached to the layerAdded, layerRemoved,
378
+ * layerMoved, and layerShownOrHidden events of the imagery layers,
379
+ * and increment the imagery layers modification counter for each
380
+ * event.
381
+ *
382
+ * @private
383
+ * @readonly
384
+ */
385
+ this._imageryLayersListener = () => {
386
+ this._imageryLayersModificationCounter++;
387
+ };
388
+
389
+ // Attach the imagery layers listener to all events of
390
+ // the imagery layers collection
391
+ this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener);
392
+ this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener);
393
+ this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener);
394
+ this.imageryLayers.layerShownOrHidden.addEventListener(
395
+ this._imageryLayersListener,
396
+ );
397
+
398
+ /**
399
+ * Whether loading imagery that is draped over the tileset should be
400
+ * done asynchronously. If this is <code>true</code>, then tile content
401
+ * will be displayed with its original texture until the imagery texture
402
+ * is loaded. If this is <code>false</code>, then the tile content will
403
+ * not be displayed until the imagery is ready.
404
+ *
405
+ * @private
406
+ */
407
+ this._asynchronouslyLoadImagery = options.asynchronouslyLoadImagery ?? false;
408
+
409
+ /**
410
+ * Preload tiles when <code>tileset.show</code> is <code>false</code>. Loads tiles as if the tileset is visible but does not render them.
411
+ *
412
+ * @type {boolean}
413
+ * @default false
414
+ */
415
+ this.preloadWhenHidden = options.preloadWhenHidden ?? false;
416
+
417
+ /**
418
+ * Optimization option. Fetch tiles at the camera's flight destination while the camera is in flight.
419
+ *
420
+ * @type {boolean}
421
+ * @default true
422
+ */
423
+ this.preloadFlightDestinations = options.preloadFlightDestinations ?? true;
424
+ this._pass = undefined; // Cesium3DTilePass
425
+
426
+ /**
427
+ * Optimization option. For street-level horizon views, use lower resolution tiles far from the camera. This reduces
428
+ * the amount of data loaded and improves tileset loading time with a slight drop in visual quality in the distance.
429
+ * <p>
430
+ * This optimization is strongest when the camera is close to the ground plane of the tileset and looking at the
431
+ * horizon. Furthermore, the results are more accurate for tightly fitting bounding volumes like box and region.
432
+ *
433
+ * @type {boolean}
434
+ * @default true
435
+ */
436
+ this.dynamicScreenSpaceError = options.dynamicScreenSpaceError ?? true;
437
+
438
+ /**
439
+ * Optimization option. Prioritize loading tiles in the center of the screen by temporarily raising the
440
+ * screen space error for tiles around the edge of the screen. Screen space error returns to normal once all
441
+ * the tiles in the center of the screen as determined by the {@link Cesium3DTileset#foveatedConeSize} are loaded.
442
+ *
443
+ * @type {boolean}
444
+ * @default true
445
+ */
446
+ this.foveatedScreenSpaceError = options.foveatedScreenSpaceError ?? true;
447
+ this._foveatedConeSize = options.foveatedConeSize ?? 0.1;
448
+ this._foveatedMinimumScreenSpaceErrorRelaxation =
449
+ options.foveatedMinimumScreenSpaceErrorRelaxation ?? 0.0;
450
+
451
+ /**
452
+ * Gets or sets a callback to control how much to raise the screen space error for tiles outside the foveated cone,
453
+ * interpolating between {@link Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation} and {@link Cesium3DTileset#maximumScreenSpaceError}.
454
+ *
455
+ * @type {Cesium3DTileset.foveatedInterpolationCallback}
456
+ */
457
+ this.foveatedInterpolationCallback =
458
+ options.foveatedInterpolationCallback ?? CesiumMath.lerp;
459
+
460
+ /**
461
+ * Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control
462
+ * how long in seconds to wait after the camera stops moving before deferred tiles start loading in.
463
+ * This time delay prevents requesting tiles around the edges of the screen when the camera is moving.
464
+ * Setting this to 0.0 will immediately request all tiles in any given view.
465
+ *
466
+ * @type {number}
467
+ * @default 0.2
468
+ */
469
+ this.foveatedTimeDelay = options.foveatedTimeDelay ?? 0.2;
470
+
471
+ /**
472
+ * Similar to {@link Fog#density}, this option controls the camera distance at which the {@link Cesium3DTileset#dynamicScreenSpaceError}
473
+ * optimization applies. Larger values will cause tiles closer to the camera to be affected. This value must be
474
+ * non-negative.
475
+ * <p>
476
+ * This optimization works by rolling off the tile screen space error (SSE) with camera distance like a bell curve.
477
+ * This has the effect of selecting lower resolution tiles far from the camera. Near the camera, no adjustment is
478
+ * made. For tiles further away, the SSE is reduced by up to {@link Cesium3DTileset#dynamicScreenSpaceErrorFactor}
479
+ * (measured in pixels of error).
480
+ * </p>
481
+ * <p>
482
+ * Increasing the density makes the bell curve narrower so tiles closer to the camera are affected. This is analagous
483
+ * to moving fog closer to the camera.
484
+ * </p>
485
+ * <p>
486
+ * When the density is 0, the optimization will have no effect on the tileset.
487
+ * </p>
488
+ *
489
+ * @type {number}
490
+ * @default 2.0e-4
491
+ */
492
+ this.dynamicScreenSpaceErrorDensity =
493
+ options.dynamicScreenSpaceErrorDensity ?? 2.0e-4;
494
+
495
+ /**
496
+ * A parameter that controls the intensity of the {@link Cesium3DTileset#dynamicScreenSpaceError} optimization for
497
+ * tiles on the horizon. Larger values cause lower resolution tiles to load, improving runtime performance at a slight
498
+ * reduction of visual quality. The value must be non-negative.
499
+ * <p>
500
+ * More specifically, this parameter represents the maximum adjustment to screen space error (SSE) in pixels for tiles
501
+ * far away from the camera. See {@link Cesium3DTileset#dynamicScreenSpaceErrorDensity} for more details about how
502
+ * this optimization works.
503
+ * </p>
504
+ * <p>
505
+ * When the SSE factor is set to 0, the optimization will have no effect on the tileset.
506
+ * </p>
507
+ *
508
+ * @type {number}
509
+ * @default 24.0
510
+ */
511
+ this.dynamicScreenSpaceErrorFactor =
512
+ options.dynamicScreenSpaceErrorFactor ?? 24.0;
513
+
514
+ /**
515
+ * A ratio of the tileset's height that determines "street level" for the {@link Cesium3DTileset#dynamicScreenSpaceError}
516
+ * optimization. When the camera is below this height, the dynamic screen space error optimization will have the maximum
517
+ * effect, and it will roll off above this value. Valid values are between 0.0 and 1.0.
518
+ * <p>
519
+ *
520
+ * @type {number}
521
+ * @default 0.25
522
+ */
523
+ this.dynamicScreenSpaceErrorHeightFalloff =
524
+ options.dynamicScreenSpaceErrorHeightFalloff ?? 0.25;
525
+
526
+ // Updated based on the camera position and direction
527
+ this._dynamicScreenSpaceErrorComputedDensity = 0.0;
528
+
529
+ /**
530
+ * Determines whether the tileset casts or receives shadows from light sources.
531
+ * <p>
532
+ * Enabling shadows has a performance impact. A tileset that casts shadows must be rendered twice, once from the camera and again from the light's point of view.
533
+ * </p>
534
+ * <p>
535
+ * Shadows are rendered only when {@link Viewer#shadows} is <code>true</code>.
536
+ * </p>
537
+ *
538
+ * @type {ShadowMode}
539
+ * @default ShadowMode.ENABLED
540
+ */
541
+ this.shadows = options.shadows ?? ShadowMode.ENABLED;
542
+
543
+ /**
544
+ * Determines if the tileset will be shown.
545
+ *
546
+ * @type {boolean}
547
+ * @default true
548
+ */
549
+ this.show = options.show ?? true;
550
+
551
+ /**
552
+ * Defines how per-feature colors set from the Cesium API or declarative styling blend with the source colors from
553
+ * the original feature, e.g. glTF material or per-point color in the tile.
554
+ *
555
+ * @type {Cesium3DTileColorBlendMode}
556
+ * @default Cesium3DTileColorBlendMode.HIGHLIGHT
557
+ */
558
+ this.colorBlendMode = Cesium3DTileColorBlendMode.HIGHLIGHT;
559
+
560
+ /**
561
+ * Defines the value used to linearly interpolate between the source color and feature color when the {@link Cesium3DTileset#colorBlendMode} is <code>MIX</code>.
562
+ * A value of 0.0 results in the source color while a value of 1.0 results in the feature color, with any value in-between
563
+ * resulting in a mix of the source color and feature color.
564
+ *
565
+ * @type {number}
566
+ * @default 0.5
567
+ */
568
+ this.colorBlendAmount = 0.5;
569
+
570
+ this._pointCloudShading = new PointCloudShading(options.pointCloudShading);
571
+ this._pointCloudEyeDomeLighting = new PointCloudEyeDomeLighting();
572
+
573
+ /**
574
+ * The event fired to indicate progress of loading new tiles. This event is fired when a new tile
575
+ * is requested, when a requested tile is finished downloading, and when a downloaded tile has been
576
+ * processed and is ready to render.
577
+ * <p>
578
+ * The number of pending tile requests, <code>numberOfPendingRequests</code>, and number of tiles
579
+ * processing, <code>numberOfTilesProcessing</code> are passed to the event listener.
580
+ * </p>
581
+ * <p>
582
+ * This event is fired at the end of the frame after the scene is rendered.
583
+ * </p>
584
+ *
585
+ * @type {Event}
586
+ * @default new Event()
587
+ *
588
+ * @example
589
+ * tileset.loadProgress.addEventListener(function(numberOfPendingRequests, numberOfTilesProcessing) {
590
+ * if ((numberOfPendingRequests === 0) && (numberOfTilesProcessing === 0)) {
591
+ * console.log('Stopped loading');
592
+ * return;
593
+ * }
594
+ *
595
+ * console.log(`Loading: requests: ${numberOfPendingRequests}, processing: ${numberOfTilesProcessing}`);
596
+ * });
597
+ */
598
+ this.loadProgress = new Event();
599
+
600
+ /**
601
+ * The event fired to indicate that all tiles that meet the screen space error this frame are loaded. The tileset
602
+ * is completely loaded for this view.
603
+ * <p>
604
+ * This event is fired at the end of the frame after the scene is rendered.
605
+ * </p>
606
+ *
607
+ * @type {Event}
608
+ * @default new Event()
609
+ *
610
+ * @example
611
+ * tileset.allTilesLoaded.addEventListener(function() {
612
+ * console.log('All tiles are loaded');
613
+ * });
614
+ *
615
+ * @see Cesium3DTileset#tilesLoaded
616
+ */
617
+ this.allTilesLoaded = new Event();
618
+
619
+ /**
620
+ * The event fired to indicate that all tiles that meet the screen space error this frame are loaded. This event
621
+ * is fired once when all tiles in the initial view are loaded.
622
+ * <p>
623
+ * This event is fired at the end of the frame after the scene is rendered.
624
+ * </p>
625
+ *
626
+ * @type {Event}
627
+ * @default new Event()
628
+ *
629
+ * @example
630
+ * tileset.initialTilesLoaded.addEventListener(function() {
631
+ * console.log('Initial tiles are loaded');
632
+ * });
633
+ *
634
+ * @see Cesium3DTileset#allTilesLoaded
635
+ */
636
+ this.initialTilesLoaded = new Event();
637
+
638
+ /**
639
+ * The event fired to indicate that a tile's content was loaded.
640
+ * <p>
641
+ * The loaded {@link Cesium3DTile} is passed to the event listener.
642
+ * </p>
643
+ * <p>
644
+ * This event is fired during the tileset traversal while the frame is being rendered
645
+ * so that updates to the tile take effect in the same frame. Do not create or modify
646
+ * Cesium entities or primitives during the event listener.
647
+ * </p>
648
+ *
649
+ * @type {Event}
650
+ * @default new Event()
651
+ *
652
+ * @example
653
+ * tileset.tileLoad.addEventListener(function(tile) {
654
+ * console.log('A tile was loaded.');
655
+ * });
656
+ */
657
+ this.tileLoad = new Event();
658
+
659
+ /**
660
+ * The event fired to indicate that a tile's content was unloaded.
661
+ * <p>
662
+ * The unloaded {@link Cesium3DTile} is passed to the event listener.
663
+ * </p>
664
+ * <p>
665
+ * This event is fired immediately before the tile's content is unloaded while the frame is being
666
+ * rendered so that the event listener has access to the tile's content. Do not create
667
+ * or modify Cesium entities or primitives during the event listener.
668
+ * </p>
669
+ *
670
+ * @type {Event}
671
+ * @default new Event()
672
+ *
673
+ * @example
674
+ * tileset.tileUnload.addEventListener(function(tile) {
675
+ * console.log('A tile was unloaded from the cache.');
676
+ * });
677
+ *
678
+ * @see Cesium3DTileset#cacheBytes
679
+ * @see Cesium3DTileset#trimLoadedTiles
680
+ */
681
+ this.tileUnload = new Event();
682
+
683
+ /**
684
+ * The event fired to indicate that a tile's content failed to load.
685
+ * <p>
686
+ * If there are no event listeners, error messages will be logged to the console.
687
+ * </p>
688
+ * <p>
689
+ * The error object passed to the listener contains two properties:
690
+ * <ul>
691
+ * <li><code>url</code>: the url of the failed tile.</li>
692
+ * <li><code>message</code>: the error message.</li>
693
+ * </ul>
694
+ * <p>
695
+ * If multiple contents are present, this event is raised once per inner content with errors.
696
+ * </p>
697
+ *
698
+ * @type {Event}
699
+ * @default new Event()
700
+ *
701
+ * @example
702
+ * tileset.tileFailed.addEventListener(function(error) {
703
+ * console.log(`An error occurred loading tile: ${error.url}`);
704
+ * console.log(`Error: ${error.message}`);
705
+ * });
706
+ */
707
+ this.tileFailed = new Event();
708
+
709
+ /**
710
+ * This event fires once for each visible tile in a frame. This can be used to manually
711
+ * style a tileset.
712
+ * <p>
713
+ * The visible {@link Cesium3DTile} is passed to the event listener.
714
+ * </p>
715
+ * <p>
716
+ * This event is fired during the tileset traversal while the frame is being rendered
717
+ * so that updates to the tile take effect in the same frame. Do not create or modify
718
+ * Cesium entities or primitives during the event listener.
719
+ * </p>
720
+ *
721
+ * @type {Event}
722
+ * @default new Event()
723
+ *
724
+ * @example
725
+ * tileset.tileVisible.addEventListener(function(tile) {
726
+ * if (tile.content instanceof Cesium.Model3DTileContent) {
727
+ * console.log('A 3D model tile is visible.');
728
+ * }
729
+ * });
730
+ *
731
+ * @example
732
+ * // Apply a red style and then manually set random colors for every other feature when the tile becomes visible.
733
+ * tileset.style = new Cesium.Cesium3DTileStyle({
734
+ * color : 'color("red")'
735
+ * });
736
+ * tileset.tileVisible.addEventListener(function(tile) {
737
+ * const content = tile.content;
738
+ * const featuresLength = content.featuresLength;
739
+ * for (let i = 0; i < featuresLength; i+=2) {
740
+ * content.getFeature(i).color = Cesium.Color.fromRandom();
741
+ * }
742
+ * });
743
+ */
744
+ this.tileVisible = new Event();
745
+
746
+ /**
747
+ * Optimization option. Determines if level of detail skipping should be applied during the traversal.
748
+ * <p>
749
+ * The common strategy for replacement-refinement traversal is to store all levels of the tree in memory and require
750
+ * all children to be loaded before the parent can refine. With this optimization levels of the tree can be skipped
751
+ * entirely and children can be rendered alongside their parents. The tileset requires significantly less memory when
752
+ * using this optimization.
753
+ * </p>
754
+ *
755
+ * @type {boolean}
756
+ * @default false
757
+ */
758
+ this.skipLevelOfDetail = options.skipLevelOfDetail ?? false;
759
+
760
+ this._disableSkipLevelOfDetail = false;
761
+
762
+ /**
763
+ * The screen space error that must be reached before skipping levels of detail.
764
+ * <p>
765
+ * Only used when {@link Cesium3DTileset#skipLevelOfDetail} is <code>true</code>.
766
+ * </p>
767
+ *
768
+ * @type {number}
769
+ * @default 1024
770
+ */
771
+ this.baseScreenSpaceError = options.baseScreenSpaceError ?? 1024;
772
+
773
+ /**
774
+ * Multiplier defining the minimum screen space error to skip.
775
+ * For example, if a tile has screen space error of 100, no tiles will be loaded unless they
776
+ * are leaves or have a screen space error <code><= 100 / skipScreenSpaceErrorFactor</code>.
777
+ * <p>
778
+ * Only used when {@link Cesium3DTileset#skipLevelOfDetail} is <code>true</code>.
779
+ * </p>
780
+ *
781
+ * @type {number}
782
+ * @default 16
783
+ */
784
+ this.skipScreenSpaceErrorFactor = options.skipScreenSpaceErrorFactor ?? 16;
785
+
786
+ /**
787
+ * Constant defining the minimum number of levels to skip when loading tiles. When it is 0, no levels are skipped.
788
+ * For example, if a tile is level 1, no tiles will be loaded unless they are at level greater than 2.
789
+ * <p>
790
+ * Only used when {@link Cesium3DTileset#skipLevelOfDetail} is <code>true</code>.
791
+ * </p>
792
+ *
793
+ * @type {number}
794
+ * @default 1
795
+ */
796
+ this.skipLevels = options.skipLevels ?? 1;
797
+
798
+ /**
799
+ * When true, only tiles that meet the maximum screen space error will ever be downloaded.
800
+ * Skipping factors are ignored and just the desired tiles are loaded.
801
+ * <p>
802
+ * Only used when {@link Cesium3DTileset#skipLevelOfDetail} is <code>true</code>.
803
+ * </p>
804
+ *
805
+ * @type {boolean}
806
+ * @default false
807
+ */
808
+ this.immediatelyLoadDesiredLevelOfDetail =
809
+ options.immediatelyLoadDesiredLevelOfDetail ?? false;
810
+
811
+ /**
812
+ * Determines whether siblings of visible tiles are always downloaded during traversal.
813
+ * This may be useful for ensuring that tiles are already available when the viewer turns left/right.
814
+ * <p>
815
+ * Only used when {@link Cesium3DTileset#skipLevelOfDetail} is <code>true</code>.
816
+ * </p>
817
+ *
818
+ * @type {boolean}
819
+ * @default false
820
+ */
821
+ this.loadSiblings = options.loadSiblings ?? false;
822
+
823
+ this._clippingPlanes = undefined;
824
+ if (defined(options.clippingPlanes)) {
825
+ ClippingPlaneCollection.setOwner(
826
+ options.clippingPlanes,
827
+ this,
828
+ "_clippingPlanes",
829
+ );
830
+ }
831
+
832
+ this._clippingPolygons = undefined;
833
+ if (defined(options.clippingPolygons)) {
834
+ ClippingPolygonCollection.setOwner(
835
+ options.clippingPolygons,
836
+ this,
837
+ "_clippingPolygons",
838
+ );
839
+ }
840
+
841
+ if (defined(options.imageBasedLighting)) {
842
+ this._imageBasedLighting = options.imageBasedLighting;
843
+ this._shouldDestroyImageBasedLighting = false;
844
+ } else {
845
+ this._imageBasedLighting = new ImageBasedLighting();
846
+ this._shouldDestroyImageBasedLighting = true;
847
+ }
848
+
849
+ this._environmentMapManager = new DynamicEnvironmentMapManager(
850
+ options.environmentMapOptions,
851
+ );
852
+
853
+ /**
854
+ * The light color when shading models. When <code>undefined</code> the scene's light color is used instead.
855
+ * <p>
856
+ * For example, disabling additional light sources by setting
857
+ * <code>tileset.imageBasedLighting.imageBasedLightingFactor = new Cartesian2(0.0, 0.0)</code>
858
+ * will make the tileset much darker. Here, increasing the intensity of the light source will make the tileset brighter.
859
+ * </p>
860
+ *
861
+ * @type {Cartesian3}
862
+ * @default undefined
863
+ */
864
+ this.lightColor = options.lightColor;
865
+
866
+ /**
867
+ * Whether to cull back-facing geometry. When true, back face culling is determined
868
+ * by the glTF material's doubleSided property; when false, back face culling is disabled.
869
+ *
870
+ * @type {boolean}
871
+ * @default true
872
+ */
873
+ this.backFaceCulling = options.backFaceCulling ?? true;
874
+
875
+ this._enableShowOutline = options.enableShowOutline ?? true;
876
+
877
+ /**
878
+ * Whether to display the outline for models using the
879
+ * {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension.
880
+ * When true, outlines are displayed. When false, outlines are not displayed.
881
+ *
882
+ * @type {boolean}
883
+ * @default true
884
+ */
885
+ this.showOutline = options.showOutline ?? true;
886
+
887
+ /**
888
+ * The color to use when rendering outlines.
889
+ *
890
+ * @type {Color}
891
+ * @default Color.BLACK
892
+ */
893
+ this.outlineColor = options.outlineColor ?? Color.BLACK;
894
+
895
+ /**
896
+ * The {@link SplitDirection} to apply to this tileset.
897
+ *
898
+ * @type {SplitDirection}
899
+ * @default {@link SplitDirection.NONE}
900
+ */
901
+ this.splitDirection = options.splitDirection ?? SplitDirection.NONE;
902
+
903
+ /**
904
+ * If <code>true</code>, allows collisions for camera collisions or picking. While this is <code>true</code> the camera will be prevented from going in or below the tileset surface if {@link ScreenSpaceCameraController#enableCollisionDetection} is true. This can have performance implecations if the tileset contains tile with a larger number of vertices.
905
+ *
906
+ * @type {boolean}
907
+ * @default false
908
+ */
909
+ this.enableCollision = options.enableCollision ?? false;
910
+ this._projectTo2D = options.projectTo2D ?? false;
911
+ this._enablePick = options.enablePick ?? false;
912
+
913
+ /**
914
+ * This property is for debugging only; it is not optimized for production use.
915
+ * <p>
916
+ * Determines if only the tiles from last frame should be used for rendering. This
917
+ * effectively "freezes" the tileset to the previous frame so it is possible to zoom
918
+ * out and see what was rendered.
919
+ * </p>
920
+ *
921
+ * @type {boolean}
922
+ * @default false
923
+ */
924
+ this.debugFreezeFrame = options.debugFreezeFrame ?? false;
925
+
926
+ /**
927
+ * This property is for debugging only; it is not optimized for production use.
928
+ * <p>
929
+ * When true, assigns a random color to each tile. This is useful for visualizing
930
+ * what features belong to what tiles, especially with additive refinement where features
931
+ * from parent tiles may be interleaved with features from child tiles.
932
+ * </p>
933
+ *
934
+ * @type {boolean}
935
+ * @default false
936
+ */
937
+ this.debugColorizeTiles = options.debugColorizeTiles ?? false;
938
+
939
+ this._enableDebugWireframe = options.enableDebugWireframe ?? false;
940
+
941
+ /**
942
+ * This property is for debugging only; it is not optimized for production use.
943
+ * <p>
944
+ * When true, renders each tile's content as a wireframe.
945
+ * </p>
946
+ *
947
+ * @type {boolean}
948
+ * @default false
949
+ */
950
+ this.debugWireframe = options.debugWireframe ?? false;
951
+
952
+ // Warning for improper setup of debug wireframe
953
+ if (this.debugWireframe === true && this._enableDebugWireframe === false) {
954
+ oneTimeWarning(
955
+ "tileset-debug-wireframe-ignored",
956
+ "enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored.",
957
+ );
958
+ }
959
+
960
+ /**
961
+ * This property is for debugging only; it is not optimized for production use.
962
+ * <p>
963
+ * When true, renders the bounding volume for each visible tile. The bounding volume is
964
+ * white if the tile has a content bounding volume or is empty; otherwise, it is red. Tiles that don't meet the
965
+ * screen space error and are still refining to their descendants are yellow.
966
+ * </p>
967
+ *
968
+ * @type {boolean}
969
+ * @default false
970
+ */
971
+ this.debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
972
+
973
+ /**
974
+ * This property is for debugging only; it is not optimized for production use.
975
+ * <p>
976
+ * When true, renders the bounding volume for each visible tile's content. The bounding volume is
977
+ * blue if the tile has a content bounding volume; otherwise it is red.
978
+ * </p>
979
+ *
980
+ * @type {boolean}
981
+ * @default false
982
+ */
983
+ this.debugShowContentBoundingVolume =
984
+ options.debugShowContentBoundingVolume ?? false;
985
+
986
+ /**
987
+ * This property is for debugging only; it is not optimized for production use.
988
+ * <p>
989
+ * When true, renders the viewer request volume for each tile.
990
+ * </p>
991
+ *
992
+ * @type {boolean}
993
+ * @default false
994
+ */
995
+ this.debugShowViewerRequestVolume =
996
+ options.debugShowViewerRequestVolume ?? false;
997
+
998
+ /**
999
+ * @private
1000
+ * @type {LabelCollection|undefined}
1001
+ */
1002
+ this._tileDebugLabels = undefined;
1003
+ this.debugPickedTileLabelOnly = false;
1004
+ this.debugPickedTile = undefined;
1005
+ this.debugPickPosition = undefined;
1006
+
1007
+ /**
1008
+ * This property is for debugging only; it is not optimized for production use.
1009
+ * <p>
1010
+ * When true, draws labels to indicate the geometric error of each tile.
1011
+ * </p>
1012
+ *
1013
+ * @type {boolean}
1014
+ * @default false
1015
+ */
1016
+ this.debugShowGeometricError = options.debugShowGeometricError ?? false;
1017
+
1018
+ /**
1019
+ * This property is for debugging only; it is not optimized for production use.
1020
+ * <p>
1021
+ * When true, draws labels to indicate the number of commands, points, triangles and features of each tile.
1022
+ * </p>
1023
+ *
1024
+ * @type {boolean}
1025
+ * @default false
1026
+ */
1027
+ this.debugShowRenderingStatistics =
1028
+ options.debugShowRenderingStatistics ?? false;
1029
+
1030
+ /**
1031
+ * This property is for debugging only; it is not optimized for production use.
1032
+ * <p>
1033
+ * When true, draws labels to indicate the geometry and texture memory usage of each tile.
1034
+ * </p>
1035
+ *
1036
+ * @type {boolean}
1037
+ * @default false
1038
+ */
1039
+ this.debugShowMemoryUsage = options.debugShowMemoryUsage ?? false;
1040
+
1041
+ /**
1042
+ * This property is for debugging only; it is not optimized for production use.
1043
+ * <p>
1044
+ * When true, draws labels to indicate the url of each tile.
1045
+ * </p>
1046
+ *
1047
+ * @type {boolean}
1048
+ * @default false
1049
+ */
1050
+ this.debugShowUrl = options.debugShowUrl ?? false;
1051
+
1052
+ /**
1053
+ * Function for examining vector lines as they are being streamed.
1054
+ *
1055
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1056
+ *
1057
+ * @type {Function}
1058
+ */
1059
+ this.examineVectorLinesFunction = undefined;
1060
+
1061
+ // this is the underlying Cesium3DTileMetadata object, whether it came from
1062
+ // the 3DTILES_metadata extension or a 3D Tiles 1.1 tileset JSON. Getters
1063
+ // like tileset.metadata and tileset.schema will delegate to this object.
1064
+ this._metadataExtension = undefined;
1065
+
1066
+ this._customShader = options.customShader;
1067
+
1068
+ let featureIdLabel = options.featureIdLabel ?? "featureId_0";
1069
+ if (typeof featureIdLabel === "number") {
1070
+ featureIdLabel = `featureId_${featureIdLabel}`;
1071
+ }
1072
+ this._featureIdLabel = featureIdLabel;
1073
+
1074
+ let instanceFeatureIdLabel =
1075
+ options.instanceFeatureIdLabel ?? "instanceFeatureId_0";
1076
+ if (typeof instanceFeatureIdLabel === "number") {
1077
+ instanceFeatureIdLabel = `instanceFeatureId_${instanceFeatureIdLabel}`;
1078
+ }
1079
+ this._instanceFeatureIdLabel = instanceFeatureIdLabel;
1080
+ }
1081
+
1082
+ Object.defineProperties(Cesium3DTileset.prototype, {
1083
+ /**
1084
+ * NOTE: This getter exists so that `Picking.js` can differentiate between
1085
+ * PrimitiveCollection and Cesium3DTileset objects without inflating
1086
+ * the size of the module via `instanceof Cesium3DTileset`
1087
+ * @private
1088
+ */
1089
+ isCesium3DTileset: {
1090
+ get: function () {
1091
+ return true;
1092
+ },
1093
+ },
1094
+
1095
+ /**
1096
+ * Gets the tileset's asset object property, which contains metadata about the tileset.
1097
+ * <p>
1098
+ * See the {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification#reference-asset|asset schema reference}
1099
+ * in the 3D Tiles spec for the full set of properties.
1100
+ * </p>
1101
+ *
1102
+ * @memberof Cesium3DTileset.prototype
1103
+ *
1104
+ * @type {object}
1105
+ * @readonly
1106
+ */
1107
+ asset: {
1108
+ get: function () {
1109
+ return this._asset;
1110
+ },
1111
+ },
1112
+
1113
+ /**
1114
+ * Gets the tileset's extensions object property.
1115
+ *
1116
+ * @memberof Cesium3DTileset.prototype
1117
+ *
1118
+ * @type {object}
1119
+ * @readonly
1120
+ */
1121
+ extensions: {
1122
+ get: function () {
1123
+ return this._extensions;
1124
+ },
1125
+ },
1126
+
1127
+ /**
1128
+ * The {@link ClippingPlaneCollection} used to selectively disable rendering the tileset.
1129
+ *
1130
+ * @memberof Cesium3DTileset.prototype
1131
+ *
1132
+ * @type {ClippingPlaneCollection}
1133
+ */
1134
+ clippingPlanes: {
1135
+ get: function () {
1136
+ return this._clippingPlanes;
1137
+ },
1138
+ set: function (value) {
1139
+ ClippingPlaneCollection.setOwner(value, this, "_clippingPlanes");
1140
+ },
1141
+ },
1142
+
1143
+ /**
1144
+ * The {@link ClippingPolygonCollection} used to selectively disable rendering the tileset.
1145
+ *
1146
+ * @memberof Cesium3DTileset.prototype
1147
+ *
1148
+ * @type {ClippingPolygonCollection}
1149
+ */
1150
+ clippingPolygons: {
1151
+ get: function () {
1152
+ return this._clippingPolygons;
1153
+ },
1154
+ set: function (value) {
1155
+ ClippingPolygonCollection.setOwner(value, this, "_clippingPolygons");
1156
+ },
1157
+ },
1158
+
1159
+ /**
1160
+ * The collection of <code>ImageryLayer</code> objects providing 2D georeferenced
1161
+ * image data that will be rendered over the tileset.
1162
+ *
1163
+ * The imagery will be draped over glTF, B3DM, PNTS, or GeoJSON tile content.
1164
+ *
1165
+ * @see ImageryLayer
1166
+ *
1167
+ * @memberof Cesium3DTileset.prototype
1168
+ * @readonly
1169
+ * @type {ImageryLayerCollection}
1170
+ *
1171
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
1172
+ *
1173
+ * @example
1174
+ * // Drape Bing Maps Aerial imagery over the tileset
1175
+ * const imageryProvider = await Cesium.createWorldImageryAsync({
1176
+ * style: Cesium.IonWorldImageryStyle.AERIAL,
1177
+ * });
1178
+ * const imageryLayer = new ImageryLayer(imageryProvider);
1179
+ * tileset.imageryLayers.add(imageryLayer);
1180
+ */
1181
+ imageryLayers: {
1182
+ get: function () {
1183
+ return this._imageryLayers;
1184
+ },
1185
+ },
1186
+
1187
+ /**
1188
+ * The modification counter of the imagery layers.
1189
+ *
1190
+ * This is incremented for each modification (layerAdded, layerMoved,
1191
+ * layerRemoved, layerShownOrHidden) of the imagery layers, and can
1192
+ * be used <b>internally</b> (by <code>ModelPrimitiveImagery</code>)
1193
+ * to trigger updates whenever the collection of imagery layers
1194
+ * changes.
1195
+ *
1196
+ * @memberof Cesium3DTileset.prototype
1197
+ * @readonly
1198
+ * @type {number}
1199
+ * @private
1200
+ */
1201
+ imageryLayersModificationCounter: {
1202
+ get: function () {
1203
+ return this._imageryLayersModificationCounter;
1204
+ },
1205
+ },
1206
+
1207
+ /**
1208
+ * Whether loading imagery that is draped over the tileset should be
1209
+ * done asynchronously.
1210
+ *
1211
+ * @memberof Cesium3DTileset.prototype
1212
+ * @readonly
1213
+ * @type {boolean}
1214
+ * @private
1215
+ */
1216
+ asynchronouslyLoadImagery: {
1217
+ get: function () {
1218
+ return this._asynchronouslyLoadImagery;
1219
+ },
1220
+ },
1221
+
1222
+ /**
1223
+ * Gets the tileset's properties dictionary object, which contains metadata about per-feature properties.
1224
+ * <p>
1225
+ * See the {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification#reference-properties|properties schema reference}
1226
+ * in the 3D Tiles spec for the full set of properties.
1227
+ * </p>
1228
+ *
1229
+ * @memberof Cesium3DTileset.prototype
1230
+ *
1231
+ * @type {object}
1232
+ * @readonly
1233
+ *
1234
+ * @example
1235
+ * console.log(`Maximum building height: ${tileset.properties.height.maximum}`);
1236
+ * console.log(`Minimum building height: ${tileset.properties.height.minimum}`);
1237
+ *
1238
+ * @see Cesium3DTileFeature#getProperty
1239
+ * @see Cesium3DTileFeature#setProperty
1240
+ */
1241
+ properties: {
1242
+ get: function () {
1243
+ return this._properties;
1244
+ },
1245
+ },
1246
+
1247
+ /**
1248
+ * When <code>true</code>, all tiles that meet the screen space error this frame are loaded. The tileset is
1249
+ * completely loaded for this view.
1250
+ *
1251
+ * @memberof Cesium3DTileset.prototype
1252
+ *
1253
+ * @type {boolean}
1254
+ * @readonly
1255
+ *
1256
+ * @default false
1257
+ *
1258
+ * @see Cesium3DTileset#allTilesLoaded
1259
+ */
1260
+ tilesLoaded: {
1261
+ get: function () {
1262
+ return this._tilesLoaded;
1263
+ },
1264
+ },
1265
+
1266
+ /**
1267
+ * The resource used to fetch the tileset JSON file
1268
+ *
1269
+ * @memberof Cesium3DTileset.prototype
1270
+ *
1271
+ * @type {Resource}
1272
+ * @readonly
1273
+ */
1274
+ resource: {
1275
+ get: function () {
1276
+ return this._resource;
1277
+ },
1278
+ },
1279
+
1280
+ /**
1281
+ * The base path that non-absolute paths in tileset JSON file are relative to.
1282
+ *
1283
+ * @memberof Cesium3DTileset.prototype
1284
+ *
1285
+ * @type {string}
1286
+ * @readonly
1287
+ * @deprecated
1288
+ */
1289
+ basePath: {
1290
+ get: function () {
1291
+ deprecationWarning(
1292
+ "Cesium3DTileset.basePath",
1293
+ "Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead.",
1294
+ );
1295
+ return this._basePath;
1296
+ },
1297
+ },
1298
+
1299
+ /**
1300
+ * The style, defined using the
1301
+ * {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/Styling|3D Tiles Styling language},
1302
+ * applied to each feature in the tileset.
1303
+ * <p>
1304
+ * Assign <code>undefined</code> to remove the style, which will restore the visual
1305
+ * appearance of the tileset to its default when no style was applied.
1306
+ * </p>
1307
+ * <p>
1308
+ * The style is applied to a tile before the {@link Cesium3DTileset#tileVisible}
1309
+ * event is raised, so code in <code>tileVisible</code> can manually set a feature's
1310
+ * properties (e.g. color and show) after the style is applied. When
1311
+ * a new style is assigned any manually set properties are overwritten.
1312
+ * </p>
1313
+ * <p>
1314
+ * Use an always "true" condition to specify the Color for all objects that are not
1315
+ * overridden by pre-existing conditions. Otherwise, the default color Cesium.Color.White
1316
+ * will be used. Similarly, use an always "true" condition to specify the show property
1317
+ * for all objects that are not overridden by pre-existing conditions. Otherwise, the
1318
+ * default show value true will be used.
1319
+ * </p>
1320
+ *
1321
+ * @memberof Cesium3DTileset.prototype
1322
+ *
1323
+ * @type {Cesium3DTileStyle|undefined}
1324
+ *
1325
+ * @default undefined
1326
+ *
1327
+ * @example
1328
+ * tileset.style = new Cesium.Cesium3DTileStyle({
1329
+ * color : {
1330
+ * conditions : [
1331
+ * ['${Height} >= 100', 'color("purple", 0.5)'],
1332
+ * ['${Height} >= 50', 'color("red")'],
1333
+ * ['true', 'color("blue")']
1334
+ * ]
1335
+ * },
1336
+ * show : '${Height} > 0',
1337
+ * meta : {
1338
+ * description : '"Building id ${id} has height ${Height}."'
1339
+ * }
1340
+ * });
1341
+ *
1342
+ * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/Styling|3D Tiles Styling language}
1343
+ */
1344
+ style: {
1345
+ get: function () {
1346
+ return this._styleEngine.style;
1347
+ },
1348
+ set: function (value) {
1349
+ this._styleEngine.style = value;
1350
+ },
1351
+ },
1352
+
1353
+ /**
1354
+ * A custom shader to apply to all tiles in the tileset. Only used for
1355
+ * contents that use {@link Model}. Using custom shaders with a
1356
+ * {@link Cesium3DTileStyle} may lead to undefined behavior.
1357
+ *
1358
+ * @memberof Cesium3DTileset.prototype
1359
+ *
1360
+ * @type {CustomShader|undefined}
1361
+ *
1362
+ * @default undefined
1363
+ *
1364
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1365
+ */
1366
+ customShader: {
1367
+ get: function () {
1368
+ return this._customShader;
1369
+ },
1370
+ set: function (value) {
1371
+ this._customShader = value;
1372
+ },
1373
+ },
1374
+
1375
+ /**
1376
+ * Whether the tileset is rendering different levels of detail in the same view.
1377
+ * Only relevant if {@link Cesium3DTileset.isSkippingLevelOfDetail} is true.
1378
+ *
1379
+ * @memberof Cesium3DTileset.prototype
1380
+ *
1381
+ * @type {boolean}
1382
+ * @private
1383
+ */
1384
+ hasMixedContent: {
1385
+ get: function () {
1386
+ return this._hasMixedContent;
1387
+ },
1388
+ set: function (value) {
1389
+ //>>includeStart('debug', pragmas.debug);
1390
+ Check.typeOf.bool("value", value);
1391
+ //>>includeEnd('debug');
1392
+
1393
+ this._hasMixedContent = value;
1394
+ },
1395
+ },
1396
+
1397
+ /**
1398
+ * Whether this tileset is actually skipping levels of detail.
1399
+ * The user option may have been disabled if all tiles are using additive refinement,
1400
+ * or if some tiles have a content type for which rendering does not support skipping
1401
+ *
1402
+ * @memberof Cesium3DTileset.prototype
1403
+ *
1404
+ * @type {boolean}
1405
+ * @private
1406
+ * @readonly
1407
+ */
1408
+ isSkippingLevelOfDetail: {
1409
+ get: function () {
1410
+ return (
1411
+ this.skipLevelOfDetail &&
1412
+ !defined(this._classificationType) &&
1413
+ !this._disableSkipLevelOfDetail &&
1414
+ !this._allTilesAdditive
1415
+ );
1416
+ },
1417
+ },
1418
+
1419
+ /**
1420
+ * The tileset's schema, groups, tileset metadata and other details from the
1421
+ * 3DTILES_metadata extension or a 3D Tiles 1.1 tileset JSON. This getter is
1422
+ * for internal use by other classes.
1423
+ *
1424
+ * @memberof Cesium3DTileset.prototype
1425
+ * @type {Cesium3DTilesetMetadata}
1426
+ * @private
1427
+ * @readonly
1428
+ *
1429
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1430
+ */
1431
+ metadataExtension: {
1432
+ get: function () {
1433
+ return this._metadataExtension;
1434
+ },
1435
+ },
1436
+
1437
+ /**
1438
+ * The metadata properties attached to the tileset as a whole.
1439
+ *
1440
+ * @memberof Cesium3DTileset.prototype
1441
+ *
1442
+ * @type {TilesetMetadata}
1443
+ * @private
1444
+ * @readonly
1445
+ *
1446
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1447
+ */
1448
+ metadata: {
1449
+ get: function () {
1450
+ if (defined(this._metadataExtension)) {
1451
+ return this._metadataExtension.tileset;
1452
+ }
1453
+
1454
+ return undefined;
1455
+ },
1456
+ },
1457
+
1458
+ /**
1459
+ * The metadata schema used in this tileset. Shorthand for
1460
+ * <code>tileset.metadataExtension.schema</code>
1461
+ *
1462
+ * @memberof Cesium3DTileset.prototype
1463
+ *
1464
+ * @type {MetadataSchema}
1465
+ * @private
1466
+ * @readonly
1467
+ *
1468
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1469
+ */
1470
+ schema: {
1471
+ get: function () {
1472
+ if (defined(this._metadataExtension)) {
1473
+ return this._metadataExtension.schema;
1474
+ }
1475
+
1476
+ return undefined;
1477
+ },
1478
+ },
1479
+
1480
+ /**
1481
+ * The maximum screen space error used to drive level of detail refinement. This value helps determine when a tile
1482
+ * refines to its descendants, and therefore plays a major role in balancing performance with visual quality.
1483
+ * <p>
1484
+ * A tile's screen space error is roughly equivalent to the number of pixels wide that would be drawn if a sphere with a
1485
+ * radius equal to the tile's <b>geometric error</b> were rendered at the tile's position. If this value exceeds
1486
+ * <code>maximumScreenSpaceError</code> the tile refines to its descendants.
1487
+ * </p>
1488
+ * <p>
1489
+ * Depending on the tileset, <code>maximumScreenSpaceError</code> may need to be tweaked to achieve the right balance.
1490
+ * Higher values provide better performance but lower visual quality.
1491
+ * </p>
1492
+ *
1493
+ * @memberof Cesium3DTileset.prototype
1494
+ *
1495
+ * @type {number}
1496
+ * @default 16
1497
+ *
1498
+ * @exception {DeveloperError} <code>maximumScreenSpaceError</code> must be greater than or equal to zero.
1499
+ */
1500
+ maximumScreenSpaceError: {
1501
+ get: function () {
1502
+ return this._maximumScreenSpaceError;
1503
+ },
1504
+ set: function (value) {
1505
+ //>>includeStart('debug', pragmas.debug);
1506
+ Check.typeOf.number.greaterThanOrEquals(
1507
+ "maximumScreenSpaceError",
1508
+ value,
1509
+ 0,
1510
+ );
1511
+ //>>includeEnd('debug');
1512
+
1513
+ this._maximumScreenSpaceError = value;
1514
+ this._memoryAdjustedScreenSpaceError = value;
1515
+ },
1516
+ },
1517
+
1518
+ /**
1519
+ * The amount of GPU memory (in bytes) used to cache tiles. This memory usage is estimated from
1520
+ * geometry, textures, and batch table textures of loaded tiles. For point clouds, this value also
1521
+ * includes per-point metadata.
1522
+ * <p>
1523
+ * Tiles not in view are unloaded to enforce this.
1524
+ * </p>
1525
+ * <p>
1526
+ * If decreasing this value results in unloading tiles, the tiles are unloaded the next frame.
1527
+ * </p>
1528
+ * <p>
1529
+ * If tiles sized more than <code>cacheBytes</code> are needed to meet the
1530
+ * desired screen space error, determined by {@link Cesium3DTileset#maximumScreenSpaceError},
1531
+ * for the current view, then the memory usage of the tiles loaded will exceed
1532
+ * <code>cacheBytes</code> by up to <code>maximumCacheOverflowBytes</code>.
1533
+ * For example, if <code>cacheBytes</code> is 500000, but 600000 bytes
1534
+ * of tiles are needed to meet the screen space error, then 600000 bytes of tiles
1535
+ * may be loaded (if <code>maximumCacheOverflowBytes</code> is at least 100000).
1536
+ * When these tiles go out of view, they will be unloaded.
1537
+ * </p>
1538
+ *
1539
+ * @memberof Cesium3DTileset.prototype
1540
+ *
1541
+ * @type {number}
1542
+ * @default 536870912
1543
+ *
1544
+ * @exception {DeveloperError} <code>cacheBytes</code> must be typeof 'number' and greater than or equal to 0
1545
+ * @see Cesium3DTileset#totalMemoryUsageInBytes
1546
+ */
1547
+ cacheBytes: {
1548
+ get: function () {
1549
+ return this._cacheBytes;
1550
+ },
1551
+ set: function (value) {
1552
+ //>>includeStart('debug', pragmas.debug);
1553
+ Check.typeOf.number.greaterThanOrEquals("value", value, 0);
1554
+ //>>includeEnd('debug');
1555
+
1556
+ this._cacheBytes = value;
1557
+ },
1558
+ },
1559
+
1560
+ /**
1561
+ * The maximum additional amount of GPU memory (in bytes) that will be used to cache tiles.
1562
+ * <p>
1563
+ * If tiles sized more than <code>cacheBytes</code> plus <code>maximumCacheOverflowBytes</code>
1564
+ * are needed to meet the desired screen space error, determined by
1565
+ * {@link Cesium3DTileset#maximumScreenSpaceError} for the current view, then
1566
+ * {@link Cesium3DTileset#memoryAdjustedScreenSpaceError} will be adjusted
1567
+ * until the tiles required to meet the adjusted screen space error use less
1568
+ * than <code>cacheBytes</code> plus <code>maximumCacheOverflowBytes</code>.
1569
+ * </p>
1570
+ *
1571
+ * @memberof Cesium3DTileset.prototype
1572
+ *
1573
+ * @type {number}
1574
+ * @default 536870912
1575
+ *
1576
+ * @exception {DeveloperError} <code>maximumCacheOverflowBytes</code> must be typeof 'number' and greater than or equal to 0
1577
+ * @see Cesium3DTileset#totalMemoryUsageInBytes
1578
+ */
1579
+ maximumCacheOverflowBytes: {
1580
+ get: function () {
1581
+ return this._maximumCacheOverflowBytes;
1582
+ },
1583
+ set: function (value) {
1584
+ //>>includeStart('debug', pragmas.debug);
1585
+ Check.typeOf.number.greaterThanOrEquals("value", value, 0);
1586
+ //>>includeEnd('debug');
1587
+
1588
+ this._maximumCacheOverflowBytes = value;
1589
+ },
1590
+ },
1591
+
1592
+ /**
1593
+ * If loading the level of detail required by @{link Cesium3DTileset#maximumScreenSpaceError}
1594
+ * results in the memory usage exceeding @{link Cesium3DTileset#cacheBytes}
1595
+ * plus @{link Cesium3DTileset#maximumCacheOverflowBytes}, level of detail refinement
1596
+ * will instead use this (larger) adjusted screen space error to achieve the
1597
+ * best possible visual quality within the available memory
1598
+ *
1599
+ * @memberof Cesium3DTileset.prototype
1600
+ *
1601
+ * @type {number}
1602
+ * @readonly
1603
+ *
1604
+ * @private
1605
+ */
1606
+ memoryAdjustedScreenSpaceError: {
1607
+ get: function () {
1608
+ return this._memoryAdjustedScreenSpaceError;
1609
+ },
1610
+ },
1611
+
1612
+ /**
1613
+ * Options for controlling point size based on geometric error and eye dome lighting.
1614
+ *
1615
+ * @memberof Cesium3DTileset.prototype
1616
+ *
1617
+ * @type {PointCloudShading}
1618
+ */
1619
+ pointCloudShading: {
1620
+ get: function () {
1621
+ return this._pointCloudShading;
1622
+ },
1623
+ set: function (value) {
1624
+ //>>includeStart('debug', pragmas.debug);
1625
+ Check.defined("pointCloudShading", value);
1626
+ //>>includeEnd('debug');
1627
+ this._pointCloudShading = value;
1628
+ },
1629
+ },
1630
+
1631
+ /**
1632
+ * The root tile.
1633
+ *
1634
+ * @memberOf Cesium3DTileset.prototype
1635
+ *
1636
+ * @type {Cesium3DTile}
1637
+ * @readonly
1638
+ */
1639
+ root: {
1640
+ get: function () {
1641
+ return this._root;
1642
+ },
1643
+ },
1644
+
1645
+ /**
1646
+ * The tileset's bounding sphere.
1647
+ *
1648
+ * @memberof Cesium3DTileset.prototype
1649
+ *
1650
+ * @type {BoundingSphere}
1651
+ * @readonly
1652
+ *
1653
+ * @example
1654
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl("http://localhost:8002/tilesets/Seattle/tileset.json");
1655
+ *
1656
+ * viewer.scene.primitives.add(tileset);
1657
+ *
1658
+ * // Set the camera to view the newly added tileset
1659
+ * viewer.camera.viewBoundingSphere(tileset.boundingSphere, new Cesium.HeadingPitchRange(0, -0.5, 0));
1660
+ */
1661
+ boundingSphere: {
1662
+ get: function () {
1663
+ this._root.updateTransform(this._modelMatrix);
1664
+ return this._root.boundingSphere;
1665
+ },
1666
+ },
1667
+
1668
+ /**
1669
+ * A 4x4 transformation matrix that transforms the entire tileset.
1670
+ *
1671
+ * @memberof Cesium3DTileset.prototype
1672
+ *
1673
+ * @type {Matrix4}
1674
+ * @default Matrix4.IDENTITY
1675
+ *
1676
+ * @example
1677
+ * // Adjust a tileset's height from the globe's surface.
1678
+ * const heightOffset = 20.0;
1679
+ * const boundingSphere = tileset.boundingSphere;
1680
+ * const cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
1681
+ * const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
1682
+ * const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
1683
+ * const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
1684
+ * tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
1685
+ */
1686
+ modelMatrix: {
1687
+ get: function () {
1688
+ return this._modelMatrix;
1689
+ },
1690
+ set: function (value) {
1691
+ this._modelMatrix = Matrix4.clone(value, this._modelMatrix);
1692
+ },
1693
+ },
1694
+
1695
+ /**
1696
+ * Returns the time, in milliseconds, since the tileset was loaded and first updated.
1697
+ *
1698
+ * @memberof Cesium3DTileset.prototype
1699
+ *
1700
+ * @type {number}
1701
+ * @readonly
1702
+ */
1703
+ timeSinceLoad: {
1704
+ get: function () {
1705
+ return this._timeSinceLoad;
1706
+ },
1707
+ },
1708
+
1709
+ /**
1710
+ * The total amount of GPU memory in bytes used by the tileset. This value is estimated from
1711
+ * geometry, texture, batch table textures, and binary metadata of loaded tiles.
1712
+ *
1713
+ * @memberof Cesium3DTileset.prototype
1714
+ *
1715
+ * @type {number}
1716
+ * @readonly
1717
+ *
1718
+ * @see Cesium3DTileset#cacheBytes
1719
+ */
1720
+ totalMemoryUsageInBytes: {
1721
+ get: function () {
1722
+ const statistics = this._statistics;
1723
+ return (
1724
+ statistics.texturesByteLength +
1725
+ statistics.geometryByteLength +
1726
+ statistics.batchTableByteLength
1727
+ );
1728
+ },
1729
+ },
1730
+
1731
+ /**
1732
+ * @private
1733
+ */
1734
+ clippingPlanesOriginMatrix: {
1735
+ get: function () {
1736
+ if (!defined(this._clippingPlanesOriginMatrix)) {
1737
+ return Matrix4.IDENTITY;
1738
+ }
1739
+
1740
+ if (this._clippingPlanesOriginMatrixDirty) {
1741
+ Matrix4.multiply(
1742
+ this.root.computedTransform,
1743
+ this._initialClippingPlanesOriginMatrix,
1744
+ this._clippingPlanesOriginMatrix,
1745
+ );
1746
+ this._clippingPlanesOriginMatrixDirty = false;
1747
+ }
1748
+
1749
+ return this._clippingPlanesOriginMatrix;
1750
+ },
1751
+ },
1752
+
1753
+ /**
1754
+ * @private
1755
+ */
1756
+ styleEngine: {
1757
+ get: function () {
1758
+ return this._styleEngine;
1759
+ },
1760
+ },
1761
+
1762
+ /**
1763
+ * @private
1764
+ */
1765
+ statistics: {
1766
+ get: function () {
1767
+ return this._statistics;
1768
+ },
1769
+ },
1770
+
1771
+ /**
1772
+ * Determines whether terrain, 3D Tiles, or both will be classified by this tileset.
1773
+ * <p>
1774
+ * This option is only applied to tilesets containing batched 3D models,
1775
+ * glTF content, geometry data, or vector data. Even when undefined, vector
1776
+ * and geometry data must render as classifications and will default to
1777
+ * rendering on both terrain and other 3D Tiles tilesets.
1778
+ * </p>
1779
+ * <p>
1780
+ * When enabled for batched 3D model and glTF tilesets, there are a few
1781
+ * requirements/limitations on the glTF:
1782
+ * <ul>
1783
+ * <li>The glTF cannot contain morph targets, skins, or animations.</li>
1784
+ * <li>The glTF cannot contain the <code>EXT_mesh_gpu_instancing</code> extension.</li>
1785
+ * <li>Only meshes with TRIANGLES can be used to classify other assets.</li>
1786
+ * <li>The meshes must be watertight.</li>
1787
+ * <li>The <code>POSITION</code> semantic is required.</li>
1788
+ * <li>If <code>_BATCHID</code>s and an index buffer are both present, all indices with the same batch id must occupy contiguous sections of the index buffer.</li>
1789
+ * <li>If <code>_BATCHID</code>s are present with no index buffer, all positions with the same batch id must occupy contiguous sections of the position buffer.</li>
1790
+ * </ul>
1791
+ * </p>
1792
+ * <p>
1793
+ * Additionally, classification is not supported for points or instanced 3D
1794
+ * models.
1795
+ * </p>
1796
+ * <p>
1797
+ * The 3D Tiles or terrain receiving the classification must be opaque.
1798
+ * </p>
1799
+ *
1800
+ * @memberof Cesium3DTileset.prototype
1801
+ *
1802
+ * @type {ClassificationType}
1803
+ * @default undefined
1804
+ *
1805
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1806
+ * @readonly
1807
+ */
1808
+ classificationType: {
1809
+ get: function () {
1810
+ return this._classificationType;
1811
+ },
1812
+ },
1813
+
1814
+ /**
1815
+ * Specifies if the height is relative to terrain, 3D Tiles, or both.
1816
+ * <p>
1817
+ * This option is only applied to point features in tilesets containing vector data.
1818
+ * This option requires the Viewer's scene to be passed in through options.scene.
1819
+ * </p>
1820
+ *
1821
+ * @memberof Cesium3DTileset.prototype
1822
+ *
1823
+ * @type {HeightReference | undefined}
1824
+ * @default undefined
1825
+ *
1826
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1827
+ * @readonly
1828
+ */
1829
+ heightReference: {
1830
+ get: function () {
1831
+ return this._heightReference;
1832
+ },
1833
+ },
1834
+
1835
+ /**
1836
+ * The {@link CesiumWidget#scene} that the tileset will be rendered in, required for tilesets that specify a {@link heightReference} value for clamping 3D Tiles vector data content- like points, lines, and labels- to terrain or 3D tiles.
1837
+ *
1838
+ * @member of Cesium3DTileset.prototype
1839
+ *
1840
+ * @type {Scene | undefined}
1841
+ * @default undefined
1842
+ * @readonly
1843
+ *
1844
+ */
1845
+ scene: {
1846
+ get: function () {
1847
+ return this._scene;
1848
+ },
1849
+ },
1850
+
1851
+ /**
1852
+ * Gets an ellipsoid describing the shape of the globe.
1853
+ *
1854
+ * @memberof Cesium3DTileset.prototype
1855
+ *
1856
+ * @type {Ellipsoid}
1857
+ * @readonly
1858
+ */
1859
+ ellipsoid: {
1860
+ get: function () {
1861
+ return this._ellipsoid;
1862
+ },
1863
+ },
1864
+
1865
+ /**
1866
+ * Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control the cone size that determines which tiles are deferred.
1867
+ * Tiles that are inside this cone are loaded immediately. Tiles outside the cone are potentially deferred based on how far outside the cone they are and {@link Cesium3DTileset#foveatedInterpolationCallback} and {@link Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation}.
1868
+ * Setting this to 0.0 means the cone will be the line formed by the camera position and its view direction. Setting this to 1.0 means the cone encompasses the entire field of view of the camera, essentially disabling the effect.
1869
+ *
1870
+ * @memberof Cesium3DTileset.prototype
1871
+ *
1872
+ * @type {number}
1873
+ * @default 0.3
1874
+ */
1875
+ foveatedConeSize: {
1876
+ get: function () {
1877
+ return this._foveatedConeSize;
1878
+ },
1879
+ set: function (value) {
1880
+ //>>includeStart('debug', pragmas.debug);
1881
+ Check.typeOf.number.greaterThanOrEquals("foveatedConeSize", value, 0.0);
1882
+ Check.typeOf.number.lessThanOrEquals("foveatedConeSize", value, 1.0);
1883
+ //>>includeEnd('debug');
1884
+
1885
+ this._foveatedConeSize = value;
1886
+ },
1887
+ },
1888
+
1889
+ /**
1890
+ * Optimization option. Used when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control the starting screen space error relaxation for tiles outside the foveated cone.
1891
+ * The screen space error will be raised starting with this value up to {@link Cesium3DTileset#maximumScreenSpaceError} based on the provided {@link Cesium3DTileset#foveatedInterpolationCallback}.
1892
+ *
1893
+ * @memberof Cesium3DTileset.prototype
1894
+ *
1895
+ * @type {number}
1896
+ * @default 0.0
1897
+ */
1898
+ foveatedMinimumScreenSpaceErrorRelaxation: {
1899
+ get: function () {
1900
+ return this._foveatedMinimumScreenSpaceErrorRelaxation;
1901
+ },
1902
+ set: function (value) {
1903
+ //>>includeStart('debug', pragmas.debug);
1904
+ Check.typeOf.number.greaterThanOrEquals(
1905
+ "foveatedMinimumScreenSpaceErrorRelaxation",
1906
+ value,
1907
+ 0.0,
1908
+ );
1909
+ Check.typeOf.number.lessThanOrEquals(
1910
+ "foveatedMinimumScreenSpaceErrorRelaxation",
1911
+ value,
1912
+ this.maximumScreenSpaceError,
1913
+ );
1914
+ //>>includeEnd('debug');
1915
+
1916
+ this._foveatedMinimumScreenSpaceErrorRelaxation = value;
1917
+ },
1918
+ },
1919
+
1920
+ /**
1921
+ * Returns the <code>extras</code> property at the top-level of the tileset JSON, which contains application specific metadata.
1922
+ * Returns <code>undefined</code> if <code>extras</code> does not exist.
1923
+ *
1924
+ * @memberof Cesium3DTileset.prototype
1925
+ *
1926
+ * @type {*}
1927
+ * @readonly
1928
+ *
1929
+ * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification#specifying-extensions-and-application-specific-extras|Extras in the 3D Tiles specification.}
1930
+ */
1931
+ extras: {
1932
+ get: function () {
1933
+ return this._extras;
1934
+ },
1935
+ },
1936
+
1937
+ /**
1938
+ * The properties for managing image-based lighting on this tileset.
1939
+ *
1940
+ * @memberof Cesium3DTileset.prototype
1941
+ *
1942
+ * @type {ImageBasedLighting}
1943
+ */
1944
+ imageBasedLighting: {
1945
+ get: function () {
1946
+ return this._imageBasedLighting;
1947
+ },
1948
+ set: function (value) {
1949
+ //>>includeStart('debug', pragmas.debug);
1950
+ Check.typeOf.object("imageBasedLighting", this._imageBasedLighting);
1951
+ //>>includeEnd('debug');
1952
+ if (value !== this._imageBasedLighting) {
1953
+ if (
1954
+ this._shouldDestroyImageBasedLighting &&
1955
+ !this._imageBasedLighting.isDestroyed()
1956
+ ) {
1957
+ this._imageBasedLighting.destroy();
1958
+ }
1959
+ this._imageBasedLighting = value;
1960
+ this._shouldDestroyImageBasedLighting = false;
1961
+ }
1962
+ },
1963
+ },
1964
+
1965
+ /**
1966
+ * The properties for managing dynamic environment maps on this model. Affects lighting.
1967
+ *
1968
+ * @memberof Cesium3DTileset.prototype
1969
+ * @readonly
1970
+ *
1971
+ * @example
1972
+ * // Change the ground color used for a tileset's environment map to a forest green
1973
+ * const environmentMapManager = tileset.environmentMapManager;
1974
+ * environmentMapManager.groundColor = Cesium.Color.fromCssColorString("#203b34");
1975
+ *
1976
+ * @type {DynamicEnvironmentMapManager}
1977
+ */
1978
+ environmentMapManager: {
1979
+ get: function () {
1980
+ return this._environmentMapManager;
1981
+ },
1982
+ },
1983
+
1984
+ /**
1985
+ * Indicates that only the tileset's vector tiles should be used for classification.
1986
+ *
1987
+ * @memberof Cesium3DTileset.prototype
1988
+ *
1989
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
1990
+ *
1991
+ * @type {boolean}
1992
+ * @default false
1993
+ */
1994
+ vectorClassificationOnly: {
1995
+ get: function () {
1996
+ return this._vectorClassificationOnly;
1997
+ },
1998
+ },
1999
+
2000
+ /**
2001
+ * Whether vector tiles should keep decoded positions in memory.
2002
+ * This is used with {@link Cesium3DTileFeature.getPolylinePositions}.
2003
+ *
2004
+ * @memberof Cesium3DTileset.prototype
2005
+ *
2006
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
2007
+ *
2008
+ * @type {boolean}
2009
+ * @default false
2010
+ */
2011
+ vectorKeepDecodedPositions: {
2012
+ get: function () {
2013
+ return this._vectorKeepDecodedPositions;
2014
+ },
2015
+ },
2016
+
2017
+ /**
2018
+ * Determines whether the credits of the tileset will be displayed on the screen
2019
+ *
2020
+ * @memberof Cesium3DTileset.prototype
2021
+ *
2022
+ * @type {boolean}
2023
+ * @default false
2024
+ */
2025
+ showCreditsOnScreen: {
2026
+ get: function () {
2027
+ return this._showCreditsOnScreen;
2028
+ },
2029
+ set: function (value) {
2030
+ this._showCreditsOnScreen = value;
2031
+ createCredits(this);
2032
+ },
2033
+ },
2034
+
2035
+ /**
2036
+ * Label of the feature ID set to use for picking and styling.
2037
+ * <p>
2038
+ * For EXT_mesh_features, this is the feature ID's label property, or
2039
+ * "featureId_N" (where N is the index in the featureIds array) when not
2040
+ * specified. EXT_feature_metadata did not have a label field, so such
2041
+ * feature ID sets are always labeled "featureId_N" where N is the index in
2042
+ * the list of all feature Ids, where feature ID attributes are listed before
2043
+ * feature ID textures.
2044
+ * </p>
2045
+ * <p>
2046
+ * If featureIdLabel is set to an integer N, it is converted to
2047
+ * the string "featureId_N" automatically. If both per-primitive and
2048
+ * per-instance feature IDs are present, the instance feature IDs take
2049
+ * priority.
2050
+ * </p>
2051
+ *
2052
+ * @memberof Cesium3DTileset.prototype
2053
+ *
2054
+ * @type {string}
2055
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
2056
+ */
2057
+ featureIdLabel: {
2058
+ get: function () {
2059
+ return this._featureIdLabel;
2060
+ },
2061
+ set: function (value) {
2062
+ // indices get converted into featureId_N
2063
+ if (typeof value === "number") {
2064
+ value = `featureId_${value}`;
2065
+ }
2066
+
2067
+ //>>includeStart('debug', pragmas.debug);
2068
+ Check.typeOf.string("value", value);
2069
+ //>>includeEnd('debug');
2070
+
2071
+ this._featureIdLabel = value;
2072
+ },
2073
+ },
2074
+
2075
+ /**
2076
+ * Label of the instance feature ID set used for picking and styling.
2077
+ * <p>
2078
+ * If instanceFeatureIdLabel is set to an integer N, it is converted to
2079
+ * the string "instanceFeatureId_N" automatically.
2080
+ * If both per-primitive and per-instance feature IDs are present, the
2081
+ * instance feature IDs take priority.
2082
+ * </p>
2083
+ *
2084
+ * @memberof Cesium3DTileset.prototype
2085
+ *
2086
+ * @type {string}
2087
+ * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.
2088
+ */
2089
+ instanceFeatureIdLabel: {
2090
+ get: function () {
2091
+ return this._instanceFeatureIdLabel;
2092
+ },
2093
+ set: function (value) {
2094
+ // indices get converted into instanceFeatureId_N
2095
+ if (typeof value === "number") {
2096
+ value = `instanceFeatureId_${value}`;
2097
+ }
2098
+
2099
+ //>>includeStart('debug', pragmas.debug);
2100
+ Check.typeOf.string("value", value);
2101
+ //>>includeEnd('debug');
2102
+
2103
+ this._instanceFeatureIdLabel = value;
2104
+ },
2105
+ },
2106
+ });
2107
+
2108
+ /**
2109
+ * Creates a {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification|3D Tiles tileset},
2110
+ * used for streaming massive heterogeneous 3D geospatial datasets, from a Cesium ion asset ID.
2111
+ *
2112
+ * @param {number} assetId The Cesium ion asset id.
2113
+ * @param {Cesium3DTileset.ConstructorOptions} [options] An object describing initialization options
2114
+ * @returns {Promise<Cesium3DTileset>}
2115
+ *
2116
+ * @exception {RuntimeError} When the tileset asset version is not 0.0, 1.0, or 1.1,
2117
+ * or when the tileset contains a required extension that is not supported.
2118
+ *
2119
+ * @see Cesium3DTileset#fromUrl
2120
+ *
2121
+ * @example
2122
+ * // Load a Cesium3DTileset with a Cesium ion asset ID of 124624234
2123
+ * try {
2124
+ * const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(124624234);
2125
+ * scene.primitives.add(tileset);
2126
+ * } catch (error) {
2127
+ * console.error(`Error creating tileset: ${error}`);
2128
+ * }
2129
+ */
2130
+ Cesium3DTileset.fromIonAssetId = async function (assetId, options) {
2131
+ //>>includeStart('debug', pragmas.debug);
2132
+ Check.defined("assetId", assetId);
2133
+ //>>includeEnd('debug');
2134
+
2135
+ const resource = await IonResource.fromAssetId(assetId);
2136
+ return Cesium3DTileset.fromUrl(resource, options);
2137
+ };
2138
+
2139
+ /**
2140
+ * Creates a {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification|3D Tiles tileset},
2141
+ * used for streaming massive heterogeneous 3D geospatial datasets.
2142
+ *
2143
+ * @param {Resource|string} url The url to a tileset JSON file.
2144
+ * @param {Cesium3DTileset.ConstructorOptions} [options] An object describing initialization options
2145
+ * @returns {Promise<Cesium3DTileset>}
2146
+ *
2147
+ * @exception {RuntimeError} When the tileset asset version is not 0.0, 1.0, or 1.1,
2148
+ * or when the tileset contains a required extension that is not supported.
2149
+ *
2150
+ * @see Cesium3DTileset#fromIonAssetId
2151
+ *
2152
+ * @example
2153
+ * try {
2154
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
2155
+ * "http://localhost:8002/tilesets/Seattle/tileset.json"
2156
+ * );
2157
+ * scene.primitives.add(tileset);
2158
+ * } catch (error) {
2159
+ * console.error(`Error creating tileset: ${error}`);
2160
+ * }
2161
+ *
2162
+ * @example
2163
+ * // Common setting for the skipLevelOfDetail optimization
2164
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
2165
+ * "http://localhost:8002/tilesets/Seattle/tileset.json", {
2166
+ * skipLevelOfDetail: true,
2167
+ * baseScreenSpaceError: 1024,
2168
+ * skipScreenSpaceErrorFactor: 16,
2169
+ * skipLevels: 1,
2170
+ * immediatelyLoadDesiredLevelOfDetail: false,
2171
+ * loadSiblings: false,
2172
+ * cullWithChildrenBounds: true
2173
+ * });
2174
+ * scene.primitives.add(tileset);
2175
+ *
2176
+ * @example
2177
+ * // Common settings for the dynamicScreenSpaceError optimization
2178
+ * const tileset = await Cesium.Cesium3DTileset.fromUrl(
2179
+ * "http://localhost:8002/tilesets/Seattle/tileset.json", {
2180
+ * dynamicScreenSpaceError: true,
2181
+ * dynamicScreenSpaceErrorDensity: 2.0e-4,
2182
+ * dynamicScreenSpaceErrorFactor: 24.0,
2183
+ * dynamicScreenSpaceErrorHeightFalloff: 0.25
2184
+ * });
2185
+ * scene.primitives.add(tileset);
2186
+ */
2187
+ Cesium3DTileset.fromUrl = async function (url, options) {
2188
+ //>>includeStart('debug', pragmas.debug);
2189
+ Check.defined("url", url);
2190
+ //>>includeEnd('debug');
2191
+
2192
+ options = options ?? Frozen.EMPTY_OBJECT;
2193
+
2194
+ const resource = Resource.createIfNeeded(url);
2195
+ let basePath;
2196
+ if (resource.extension === "json") {
2197
+ basePath = resource.getBaseUri(true);
2198
+ } else if (resource.isDataUri) {
2199
+ basePath = "";
2200
+ }
2201
+
2202
+ const tilesetJson = await Cesium3DTileset.loadJson(resource);
2203
+ const metadataExtension = await processMetadataExtension(
2204
+ resource,
2205
+ tilesetJson,
2206
+ );
2207
+
2208
+ const tileset = new Cesium3DTileset(options);
2209
+ tileset._resource = resource;
2210
+ tileset._url = resource.url;
2211
+ tileset._basePath = basePath;
2212
+ tileset._metadataExtension = metadataExtension;
2213
+ // Set these before loading the tileset since _geometricError
2214
+ // and _scaledGeometricError get accessed during tile creation
2215
+ tileset._geometricError = tilesetJson.geometricError;
2216
+ tileset._scaledGeometricError = tilesetJson.geometricError;
2217
+
2218
+ const asset = tilesetJson.asset;
2219
+ tileset._asset = asset;
2220
+ tileset._extras = tilesetJson.extras;
2221
+
2222
+ createCredits(tileset);
2223
+
2224
+ // Handle legacy gltfUpAxis option
2225
+ const gltfUpAxis = defined(tilesetJson.asset.gltfUpAxis)
2226
+ ? Axis.fromName(tilesetJson.asset.gltfUpAxis)
2227
+ : Axis.Y;
2228
+ const modelUpAxis = options.modelUpAxis ?? gltfUpAxis;
2229
+ const modelForwardAxis = options.modelForwardAxis ?? Axis.X;
2230
+
2231
+ tileset._properties = tilesetJson.properties;
2232
+ tileset._extensionsUsed = tilesetJson.extensionsUsed;
2233
+ tileset._extensions = tilesetJson.extensions;
2234
+ tileset._modelUpAxis = modelUpAxis;
2235
+ tileset._modelForwardAxis = modelForwardAxis;
2236
+
2237
+ tileset._root = tileset.loadTileset(resource, tilesetJson);
2238
+
2239
+ // Save the original, untransformed bounding volume position so we can apply
2240
+ // the tile transform and model matrix at run time
2241
+ const boundingVolume = tileset._root.createBoundingVolume(
2242
+ tilesetJson.root.boundingVolume,
2243
+ Matrix4.IDENTITY,
2244
+ );
2245
+ const clippingPlanesOrigin = boundingVolume.boundingSphere.center;
2246
+ // If this origin is above the surface of the earth
2247
+ // we want to apply an ENU orientation as our best guess of orientation.
2248
+ // Otherwise, we assume it gets its position/orientation completely from the
2249
+ // root tile transform and the tileset's model matrix
2250
+ const originCartographic =
2251
+ tileset._ellipsoid.cartesianToCartographic(clippingPlanesOrigin);
2252
+ if (
2253
+ defined(originCartographic) &&
2254
+ originCartographic.height >
2255
+ ApproximateTerrainHeights._defaultMinTerrainHeight
2256
+ ) {
2257
+ tileset._initialClippingPlanesOriginMatrix =
2258
+ Transforms.eastNorthUpToFixedFrame(clippingPlanesOrigin);
2259
+ }
2260
+ tileset._clippingPlanesOriginMatrix = Matrix4.clone(
2261
+ tileset._initialClippingPlanesOriginMatrix,
2262
+ );
2263
+
2264
+ return tileset;
2265
+ };
2266
+
2267
+ /**
2268
+ * Provides a hook to override the method used to request the tileset json
2269
+ * useful when fetching tilesets from remote servers
2270
+ * @param {Resource|string} tilesetUrl The url of the json file to be fetched
2271
+ * @returns {Promise<object>} A promise that resolves with the fetched json data
2272
+ */
2273
+ Cesium3DTileset.loadJson = function (tilesetUrl) {
2274
+ const resource = Resource.createIfNeeded(tilesetUrl);
2275
+ return resource.fetchJson();
2276
+ };
2277
+
2278
+ /**
2279
+ * Marks the tileset's {@link Cesium3DTileset#style} as dirty, which forces all
2280
+ * features to re-evaluate the style in the next frame each is visible.
2281
+ */
2282
+ Cesium3DTileset.prototype.makeStyleDirty = function () {
2283
+ this._styleEngine.makeDirty();
2284
+ };
2285
+
2286
+ /**
2287
+ * Loads the main tileset JSON file or a tileset JSON file referenced from a tile.
2288
+ *
2289
+ * @exception {RuntimeError} When the tileset asset version is not 0.0, 1.0, or 1.1,
2290
+ * or when the tileset contains a required extension that is not supported.
2291
+ *
2292
+ * @private
2293
+ */
2294
+ Cesium3DTileset.prototype.loadTileset = function (
2295
+ resource,
2296
+ tilesetJson,
2297
+ parentTile,
2298
+ ) {
2299
+ const asset = tilesetJson.asset;
2300
+ if (!defined(asset)) {
2301
+ throw new RuntimeError("Tileset must have an asset property.");
2302
+ }
2303
+ if (
2304
+ asset.version !== "0.0" &&
2305
+ asset.version !== "1.0" &&
2306
+ asset.version !== "1.1"
2307
+ ) {
2308
+ throw new RuntimeError(
2309
+ "The tileset must be 3D Tiles version 0.0, 1.0, or 1.1",
2310
+ );
2311
+ }
2312
+
2313
+ if (defined(tilesetJson.extensionsRequired)) {
2314
+ Cesium3DTileset.checkSupportedExtensions(tilesetJson.extensionsRequired);
2315
+ }
2316
+
2317
+ const statistics = this._statistics;
2318
+
2319
+ const tilesetVersion = asset.tilesetVersion;
2320
+ if (defined(tilesetVersion)) {
2321
+ // Append the tileset version to the resource
2322
+ this._basePath += `?v=${tilesetVersion}`;
2323
+ resource = resource.clone();
2324
+ resource.setQueryParameters({ v: tilesetVersion });
2325
+ }
2326
+
2327
+ // A tileset JSON file referenced from a tile may exist in a different directory than the root tileset.
2328
+ // Get the basePath relative to the external tileset.
2329
+ const rootTile = makeTile(this, resource, tilesetJson.root, parentTile);
2330
+
2331
+ // If there is a parentTile, add the root of the currently loading tileset
2332
+ // to parentTile's children, and update its _depth.
2333
+ if (defined(parentTile)) {
2334
+ parentTile.children.push(rootTile);
2335
+ rootTile._depth = parentTile._depth + 1;
2336
+ }
2337
+
2338
+ const stack = [];
2339
+ stack.push(rootTile);
2340
+
2341
+ while (stack.length > 0) {
2342
+ const tile = stack.pop();
2343
+ ++statistics.numberOfTilesTotal;
2344
+ this._allTilesAdditive =
2345
+ this._allTilesAdditive && tile.refine === Cesium3DTileRefine.ADD;
2346
+ const children = tile._header.children;
2347
+ if (defined(children)) {
2348
+ for (let i = 0; i < children.length; ++i) {
2349
+ const childHeader = children[i];
2350
+ const childTile = makeTile(this, resource, childHeader, tile);
2351
+ tile.children.push(childTile);
2352
+ childTile._depth = tile._depth + 1;
2353
+ stack.push(childTile);
2354
+ }
2355
+ }
2356
+
2357
+ if (this._cullWithChildrenBounds) {
2358
+ Cesium3DTileOptimizations.checkChildrenWithinParent(tile);
2359
+ }
2360
+ }
2361
+
2362
+ return rootTile;
2363
+ };
2364
+
2365
+ /**
2366
+ * Make a {@link Cesium3DTile} for a specific tile. If the tile's header has implicit
2367
+ * tiling (3D Tiles 1.1) or uses the <code>3DTILES_implicit_tiling</code> extension,
2368
+ * it creates a placeholder tile instead for lazy evaluation of the implicit tileset.
2369
+ *
2370
+ * @param {Cesium3DTileset} tileset The tileset
2371
+ * @param {Resource} baseResource The base resource for the tileset
2372
+ * @param {object} tileHeader The JSON header for the tile
2373
+ * @param {Cesium3DTile} [parentTile] The parent tile of the new tile
2374
+ * @returns {Cesium3DTile} The newly created tile
2375
+ *
2376
+ * @private
2377
+ */
2378
+ function makeTile(tileset, baseResource, tileHeader, parentTile) {
2379
+ const hasImplicitTiling =
2380
+ defined(tileHeader.implicitTiling) ||
2381
+ hasExtension(tileHeader, "3DTILES_implicit_tiling");
2382
+
2383
+ if (!hasImplicitTiling) {
2384
+ return new Cesium3DTile(tileset, baseResource, tileHeader, parentTile);
2385
+ }
2386
+
2387
+ const metadataSchema = tileset.schema;
2388
+
2389
+ const implicitTileset = new ImplicitTileset(
2390
+ baseResource,
2391
+ tileHeader,
2392
+ metadataSchema,
2393
+ );
2394
+ const rootCoordinates = new ImplicitTileCoordinates({
2395
+ subdivisionScheme: implicitTileset.subdivisionScheme,
2396
+ subtreeLevels: implicitTileset.subtreeLevels,
2397
+ level: 0,
2398
+ x: 0,
2399
+ y: 0,
2400
+ // The constructor will only use this for octrees.
2401
+ z: 0,
2402
+ });
2403
+
2404
+ // Create a placeholder Cesium3DTile that has an ImplicitTileset
2405
+ // object and whose content will resolve to an Implicit3DTileContent
2406
+ const contentUri = implicitTileset.subtreeUriTemplate.getDerivedResource({
2407
+ templateValues: rootCoordinates.getTemplateValues(),
2408
+ }).url;
2409
+
2410
+ const deepCopy = true;
2411
+ const tileJson = clone(tileHeader, deepCopy);
2412
+ // Replace contents with the subtree
2413
+ tileJson.contents = [
2414
+ {
2415
+ uri: contentUri,
2416
+ },
2417
+ ];
2418
+
2419
+ delete tileJson.content;
2420
+
2421
+ // The placeholder tile does not have any extensions. If there are any
2422
+ // extensions beyond 3DTILES_implicit_tiling, Implicit3DTileContent will
2423
+ // copy them to the transcoded tiles.
2424
+ delete tileJson.extensions;
2425
+
2426
+ const tile = new Cesium3DTile(tileset, baseResource, tileJson, parentTile);
2427
+ tile.implicitTileset = implicitTileset;
2428
+ tile.implicitCoordinates = rootCoordinates;
2429
+ return tile;
2430
+ }
2431
+
2432
+ /**
2433
+ * If tileset metadata is present, initialize the {@link Cesium3DTilesetMetadata}
2434
+ * instance. This is asynchronous since metadata schemas may be external.
2435
+ *
2436
+ * @param {Cesium3DTileset} tileset The tileset
2437
+ * @param {object} tilesetJson The tileset JSON
2438
+ * @return {Promise<Cesium3DTilesetMetadata>} The loaded Cesium3DTilesetMetadata
2439
+ * @private
2440
+ */
2441
+ async function processMetadataExtension(resource, tilesetJson) {
2442
+ const metadataJson = hasExtension(tilesetJson, "3DTILES_metadata")
2443
+ ? tilesetJson.extensions["3DTILES_metadata"]
2444
+ : tilesetJson;
2445
+
2446
+ let schemaLoader;
2447
+ if (defined(metadataJson.schemaUri)) {
2448
+ resource = resource.getDerivedResource({
2449
+ url: metadataJson.schemaUri,
2450
+ });
2451
+ schemaLoader = ResourceCache.getSchemaLoader({
2452
+ resource: resource,
2453
+ });
2454
+ } else if (defined(metadataJson.schema)) {
2455
+ schemaLoader = ResourceCache.getSchemaLoader({
2456
+ schema: metadataJson.schema,
2457
+ });
2458
+ } else {
2459
+ return;
2460
+ }
2461
+
2462
+ await schemaLoader.load();
2463
+
2464
+ const metadataExtension = new Cesium3DTilesetMetadata({
2465
+ schema: schemaLoader.schema,
2466
+ metadataJson: metadataJson,
2467
+ });
2468
+
2469
+ ResourceCache.unload(schemaLoader);
2470
+
2471
+ return metadataExtension;
2472
+ }
2473
+
2474
+ const scratchPositionNormal = new Cartesian3();
2475
+ const scratchCartographic = new Cartographic();
2476
+ const scratchMatrix = new Matrix4();
2477
+ const scratchCenter = new Cartesian3();
2478
+ const scratchPosition = new Cartesian3();
2479
+ const scratchDirection = new Cartesian3();
2480
+ const scratchHalfHeight = new Cartesian3();
2481
+
2482
+ /**
2483
+ * @private
2484
+ * @param {Cesium3DTileset} tileset
2485
+ * @param {FrameState} frameState
2486
+ */
2487
+ function updateDynamicScreenSpaceError(tileset, frameState) {
2488
+ let up;
2489
+ let direction;
2490
+ let height;
2491
+ let minimumHeight;
2492
+ let maximumHeight;
2493
+
2494
+ const camera = frameState.camera;
2495
+ const root = tileset._root;
2496
+ const tileBoundingVolume = root.contentBoundingVolume;
2497
+
2498
+ if (tileBoundingVolume instanceof TileBoundingRegion) {
2499
+ up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);
2500
+ direction = camera.directionWC;
2501
+ height = camera.positionCartographic.height;
2502
+ minimumHeight = tileBoundingVolume.minimumHeight;
2503
+ maximumHeight = tileBoundingVolume.maximumHeight;
2504
+ } else {
2505
+ // Transform camera position and direction into the local coordinate system of the tileset
2506
+ const transformLocal = Matrix4.inverseTransformation(
2507
+ root.computedTransform,
2508
+ scratchMatrix,
2509
+ );
2510
+ const ellipsoid = frameState.mapProjection.ellipsoid;
2511
+ const boundingVolume = tileBoundingVolume.boundingVolume;
2512
+ const centerLocal = Matrix4.multiplyByPoint(
2513
+ transformLocal,
2514
+ boundingVolume.center,
2515
+ scratchCenter,
2516
+ );
2517
+ if (Cartesian3.magnitude(centerLocal) > ellipsoid.minimumRadius) {
2518
+ // The tileset is defined in WGS84. Approximate the minimum and maximum height.
2519
+ const centerCartographic = Cartographic.fromCartesian(
2520
+ centerLocal,
2521
+ ellipsoid,
2522
+ scratchCartographic,
2523
+ );
2524
+ up = Cartesian3.normalize(camera.positionWC, scratchPositionNormal);
2525
+ direction = camera.directionWC;
2526
+ height = camera.positionCartographic.height;
2527
+ minimumHeight = 0.0;
2528
+ maximumHeight = centerCartographic.height * 2.0;
2529
+ } else {
2530
+ // The tileset is defined in local coordinates (z-up)
2531
+ const positionLocal = Matrix4.multiplyByPoint(
2532
+ transformLocal,
2533
+ camera.positionWC,
2534
+ scratchPosition,
2535
+ );
2536
+ up = Cartesian3.UNIT_Z;
2537
+ direction = Matrix4.multiplyByPointAsVector(
2538
+ transformLocal,
2539
+ camera.directionWC,
2540
+ scratchDirection,
2541
+ );
2542
+ direction = Cartesian3.normalize(direction, direction);
2543
+ height = positionLocal.z;
2544
+ if (tileBoundingVolume instanceof TileOrientedBoundingBox) {
2545
+ // Assuming z-up, the last column is the local z direction and
2546
+ // represents the height of the bounding box.
2547
+ const halfHeightVector = Matrix3.getColumn(
2548
+ boundingVolume.halfAxes,
2549
+ 2,
2550
+ scratchHalfHeight,
2551
+ );
2552
+ const halfHeight = Cartesian3.magnitude(halfHeightVector);
2553
+ minimumHeight = centerLocal.z - halfHeight;
2554
+ maximumHeight = centerLocal.z + halfHeight;
2555
+ } else if (tileBoundingVolume instanceof TileBoundingSphere) {
2556
+ const radius = boundingVolume.radius;
2557
+ minimumHeight = centerLocal.z - radius;
2558
+ maximumHeight = centerLocal.z + radius;
2559
+ }
2560
+ }
2561
+ }
2562
+
2563
+ // The range where the density starts to lessen. Start at the quarter height of the tileset.
2564
+ const heightFalloff = tileset.dynamicScreenSpaceErrorHeightFalloff;
2565
+ const heightClose =
2566
+ minimumHeight + (maximumHeight - minimumHeight) * heightFalloff;
2567
+ const heightFar = maximumHeight;
2568
+
2569
+ const t = CesiumMath.clamp(
2570
+ (height - heightClose) / (heightFar - heightClose),
2571
+ 0.0,
2572
+ 1.0,
2573
+ );
2574
+
2575
+ // Increase density as the camera tilts towards the horizon
2576
+ let horizonFactor = 1.0 - Math.abs(Cartesian3.dot(direction, up));
2577
+
2578
+ // Weaken the horizon factor as the camera height increases, implying the camera is further away from the tileset.
2579
+ // The goal is to increase density for the "street view", not when viewing the tileset from a distance.
2580
+ horizonFactor = horizonFactor * (1.0 - t);
2581
+
2582
+ tileset._dynamicScreenSpaceErrorComputedDensity =
2583
+ tileset.dynamicScreenSpaceErrorDensity * horizonFactor;
2584
+ }
2585
+
2586
+ /**
2587
+ * @private
2588
+ * @param {Cesium3DTileset} tileset
2589
+ * @param {Cesium3DTile} tile
2590
+ */
2591
+ function requestContent(tileset, tile) {
2592
+ if (tile.hasEmptyContent) {
2593
+ return;
2594
+ }
2595
+
2596
+ const { statistics } = tileset;
2597
+ const contentExpired = tile.contentExpired;
2598
+
2599
+ const promise = tile.requestContent();
2600
+ if (!defined(promise)) {
2601
+ return;
2602
+ }
2603
+
2604
+ promise
2605
+ .then((content) => {
2606
+ if (!defined(content) || tile.isDestroyed() || tileset.isDestroyed()) {
2607
+ return;
2608
+ }
2609
+
2610
+ tileset._processingQueue.push(tile);
2611
+ ++statistics.numberOfTilesProcessing;
2612
+ })
2613
+ .catch((error) => {
2614
+ handleTileFailure(error, tileset, tile);
2615
+ });
2616
+
2617
+ if (contentExpired) {
2618
+ if (tile.hasTilesetContent || tile.hasImplicitContent) {
2619
+ destroySubtree(tileset, tile);
2620
+ } else {
2621
+ statistics.decrementLoadCounts(tile.content);
2622
+ --statistics.numberOfTilesWithContentReady;
2623
+ }
2624
+ }
2625
+
2626
+ tileset._requestedTilesInFlight.push(tile);
2627
+ }
2628
+
2629
+ function sortTilesByPriority(a, b) {
2630
+ return a._priority - b._priority;
2631
+ }
2632
+
2633
+ /**
2634
+ * Perform any pass invariant tasks here. Called after the render pass.
2635
+ * @private
2636
+ * @param {FrameState} frameState
2637
+ */
2638
+ Cesium3DTileset.prototype.postPassesUpdate = function (frameState) {
2639
+ if (!defined(this._root)) {
2640
+ return;
2641
+ }
2642
+
2643
+ cancelOutOfViewRequests(this, frameState);
2644
+ raiseLoadProgressEvent(this, frameState);
2645
+ this._cache.unloadTiles(this, unloadTile);
2646
+
2647
+ // If the style wasn't able to be applied this frame (for example,
2648
+ // the tileset was hidden), keep it dirty so the engine can try
2649
+ // to apply the style next frame.
2650
+ if (this._styleApplied) {
2651
+ this._styleEngine.resetDirty();
2652
+ }
2653
+ this._styleApplied = false;
2654
+ };
2655
+
2656
+ /**
2657
+ * Perform any pass invariant tasks here. Called before any passes are executed.
2658
+ * @private
2659
+ * @param {FrameState} frameState
2660
+ */
2661
+ Cesium3DTileset.prototype.prePassesUpdate = function (frameState) {
2662
+ if (!defined(this._root)) {
2663
+ return;
2664
+ }
2665
+
2666
+ processTiles(this, frameState);
2667
+
2668
+ // Update clipping planes
2669
+ const clippingPlanes = this._clippingPlanes;
2670
+ this._clippingPlanesOriginMatrixDirty = true;
2671
+ if (defined(clippingPlanes) && clippingPlanes.enabled) {
2672
+ clippingPlanes.update(frameState);
2673
+ }
2674
+
2675
+ // Update clipping polygons
2676
+ const clippingPolygons = this._clippingPolygons;
2677
+ if (defined(clippingPolygons) && clippingPolygons.enabled) {
2678
+ clippingPolygons.update(frameState);
2679
+ }
2680
+
2681
+ if (!defined(this._loadTimestamp)) {
2682
+ this._loadTimestamp = JulianDate.clone(frameState.time);
2683
+ }
2684
+ this._timeSinceLoad = Math.max(
2685
+ JulianDate.secondsDifference(frameState.time, this._loadTimestamp) * 1000,
2686
+ 0.0,
2687
+ );
2688
+
2689
+ if (this.dynamicScreenSpaceError) {
2690
+ updateDynamicScreenSpaceError(this, frameState);
2691
+ }
2692
+
2693
+ if (frameState.newFrame) {
2694
+ this._cache.reset();
2695
+ }
2696
+ };
2697
+
2698
+ /**
2699
+ * @private
2700
+ * @param {Cesium3DTileset} tileset
2701
+ * @param {FrameState} frameState
2702
+ */
2703
+ function cancelOutOfViewRequests(tileset, frameState) {
2704
+ const requestedTilesInFlight = tileset._requestedTilesInFlight;
2705
+ let removeCount = 0;
2706
+ for (let i = 0; i < requestedTilesInFlight.length; ++i) {
2707
+ const tile = requestedTilesInFlight[i];
2708
+
2709
+ // NOTE: This is framerate dependant so make sure the threshold check is small
2710
+ const outOfView = frameState.frameNumber - tile._touchedFrame >= 1;
2711
+ if (tile._contentState !== Cesium3DTileContentState.LOADING) {
2712
+ // No longer fetching from host, don't need to track it anymore. Gets marked as LOADING in Cesium3DTile::requestContent().
2713
+ ++removeCount;
2714
+ continue;
2715
+ } else if (outOfView) {
2716
+ // RequestScheduler will take care of cancelling it
2717
+ tile.cancelRequests();
2718
+ ++removeCount;
2719
+ continue;
2720
+ }
2721
+
2722
+ if (removeCount > 0) {
2723
+ requestedTilesInFlight[i - removeCount] = tile;
2724
+ }
2725
+ }
2726
+
2727
+ requestedTilesInFlight.length -= removeCount;
2728
+ }
2729
+
2730
+ /**
2731
+ * Sort requests by priority before making any requests.
2732
+ * This makes it less likely that requests will be cancelled after being issued.
2733
+ * @private
2734
+ * @param {Cesium3DTileset} tileset
2735
+ */
2736
+ function requestTiles(tileset) {
2737
+ const requestedTiles = tileset._requestedTiles;
2738
+ requestedTiles.sort(sortTilesByPriority);
2739
+ for (let i = 0; i < requestedTiles.length; ++i) {
2740
+ requestContent(tileset, requestedTiles[i]);
2741
+ }
2742
+ }
2743
+
2744
+ /**
2745
+ * @private
2746
+ * @param {Error} error
2747
+ * @param {Cesium3DTileset} tileset
2748
+ * @param {Cesium3DTile} tile
2749
+ */
2750
+ function handleTileFailure(error, tileset, tile) {
2751
+ if (tileset.isDestroyed()) {
2752
+ return;
2753
+ }
2754
+
2755
+ let url;
2756
+ if (!tile.isDestroyed()) {
2757
+ url = tile._contentResource.url;
2758
+ }
2759
+
2760
+ const message = defined(error.message) ? error.message : error.toString();
2761
+ if (tileset.tileFailed.numberOfListeners > 0) {
2762
+ tileset.tileFailed.raiseEvent({
2763
+ url: url,
2764
+ message: message,
2765
+ });
2766
+ } else {
2767
+ console.log(`A 3D tile failed to load: ${url}`);
2768
+ console.log(`Error: ${message}`);
2769
+ console.log(error.stack);
2770
+ }
2771
+ }
2772
+
2773
+ /**
2774
+ * @private
2775
+ * @param {Cesium3DTileset} tileset
2776
+ */
2777
+ function filterProcessingQueue(tileset) {
2778
+ const tiles = tileset._processingQueue;
2779
+
2780
+ let removeCount = 0;
2781
+ for (let i = 0; i < tiles.length; ++i) {
2782
+ const tile = tiles[i];
2783
+ if (
2784
+ tile.isDestroyed() ||
2785
+ tile._contentState !== Cesium3DTileContentState.PROCESSING
2786
+ ) {
2787
+ ++removeCount;
2788
+ continue;
2789
+ }
2790
+ if (removeCount > 0) {
2791
+ tiles[i - removeCount] = tile;
2792
+ }
2793
+ }
2794
+ tiles.length -= removeCount;
2795
+ }
2796
+
2797
+ const scratchUpdateHeightCartographic = new Cartographic();
2798
+ const scratchUpdateHeightCartographic2 = new Cartographic();
2799
+ const scratchUpdateHeightCartesian = new Cartesian3();
2800
+
2801
+ function processUpdateHeight(tileset, tile, frameState) {
2802
+ if (!tileset.enableCollision || !tileset.show) {
2803
+ return;
2804
+ }
2805
+
2806
+ const heightCallbackData = tileset._addHeightCallbacks;
2807
+ const boundingSphere = tile.boundingSphere;
2808
+
2809
+ for (const callbackData of heightCallbackData) {
2810
+ // No need to update if the tile was already visible last frame
2811
+ if (callbackData.invoked || tile._wasSelectedLastFrame) {
2812
+ continue;
2813
+ }
2814
+
2815
+ const ellipsoid = callbackData.ellipsoid;
2816
+ const positionCartographic = Cartographic.clone(
2817
+ callbackData.positionCartographic,
2818
+ scratchUpdateHeightCartographic,
2819
+ );
2820
+ const centerCartographic = Cartographic.fromCartesian(
2821
+ boundingSphere.center,
2822
+ ellipsoid,
2823
+ scratchUpdateHeightCartographic2,
2824
+ );
2825
+
2826
+ // This can be undefined when the bounding sphere is at the origin
2827
+ if (defined(centerCartographic)) {
2828
+ positionCartographic.height = centerCartographic.height;
2829
+ }
2830
+
2831
+ const position = Cartographic.toCartesian(
2832
+ positionCartographic,
2833
+ ellipsoid,
2834
+ scratchUpdateHeightCartesian,
2835
+ );
2836
+ if (
2837
+ Cartesian3.distance(position, boundingSphere.center) <=
2838
+ boundingSphere.radius
2839
+ ) {
2840
+ callbackData.invoked = true;
2841
+ frameState.afterRender.push(() => {
2842
+ // Callback can be removed before it actually invoked at the end of the frame
2843
+ if (defined(callbackData.callback)) {
2844
+ callbackData.callback();
2845
+ }
2846
+ callbackData.invoked = false;
2847
+ });
2848
+ }
2849
+ }
2850
+ }
2851
+
2852
+ /**
2853
+ * Process tiles in the PROCESSING state so they will eventually move to the READY state.
2854
+ * @private
2855
+ * @param {Cesium3DTileset} tileset
2856
+ * @param {Cesium3DTile} tile
2857
+ */
2858
+ function processTiles(tileset, frameState) {
2859
+ filterProcessingQueue(tileset);
2860
+ const tiles = tileset._processingQueue;
2861
+
2862
+ const { cacheBytes, maximumCacheOverflowBytes, statistics } = tileset;
2863
+ const cacheByteLimit = cacheBytes + maximumCacheOverflowBytes;
2864
+
2865
+ let memoryExceeded = false;
2866
+ for (let i = 0; i < tiles.length; ++i) {
2867
+ if (tileset.totalMemoryUsageInBytes > cacheByteLimit) {
2868
+ memoryExceeded = true;
2869
+ break;
2870
+ }
2871
+
2872
+ const tile = tiles[i];
2873
+ try {
2874
+ tile.process(tileset, frameState);
2875
+
2876
+ if (tile.contentReady) {
2877
+ --statistics.numberOfTilesProcessing;
2878
+ tileset.tileLoad.raiseEvent(tile);
2879
+ }
2880
+ } catch (error) {
2881
+ --statistics.numberOfTilesProcessing;
2882
+ handleTileFailure(error, tileset, tile);
2883
+ }
2884
+ }
2885
+
2886
+ if (tileset.totalMemoryUsageInBytes < cacheBytes) {
2887
+ decreaseScreenSpaceError(tileset);
2888
+ } else if (memoryExceeded && tiles.length > 0) {
2889
+ increaseScreenSpaceError(tileset);
2890
+ }
2891
+ }
2892
+
2893
+ function increaseScreenSpaceError(tileset) {
2894
+ //>>includeStart('debug', pragmas.debug);
2895
+ oneTimeWarning(
2896
+ "increase-screenSpaceError",
2897
+ `The tiles needed to meet maximumScreenSpaceError would use more memory than allocated for this tileset.
2898
+ The tileset will be rendered with a larger screen space error (see memoryAdjustedScreenSpaceError).
2899
+ Consider using larger values for cacheBytes and maximumCacheOverflowBytes.`,
2900
+ );
2901
+ //>>includeEnd('debug');
2902
+
2903
+ tileset._memoryAdjustedScreenSpaceError *= 1.02;
2904
+ const tiles = tileset._processingQueue;
2905
+ for (let i = 0; i < tiles.length; ++i) {
2906
+ tiles[i].updatePriority();
2907
+ }
2908
+ tiles.sort(sortTilesByPriority);
2909
+ }
2910
+
2911
+ function decreaseScreenSpaceError(tileset) {
2912
+ tileset._memoryAdjustedScreenSpaceError = Math.max(
2913
+ tileset.memoryAdjustedScreenSpaceError / 1.02,
2914
+ tileset.maximumScreenSpaceError,
2915
+ );
2916
+ }
2917
+
2918
+ const scratchCartesian = new Cartesian3();
2919
+
2920
+ const stringOptions = {
2921
+ maximumFractionDigits: 3,
2922
+ };
2923
+
2924
+ /**
2925
+ * @private
2926
+ * @param {number} memorySizeInBytes
2927
+ * @returns {string}
2928
+ */
2929
+ function formatMemoryString(memorySizeInBytes) {
2930
+ const memoryInMegabytes = memorySizeInBytes / 1048576;
2931
+ if (memoryInMegabytes < 1.0) {
2932
+ return memoryInMegabytes.toLocaleString(undefined, stringOptions);
2933
+ }
2934
+ return Math.round(memoryInMegabytes).toLocaleString();
2935
+ }
2936
+
2937
+ /**
2938
+ * @private
2939
+ * @param {Cesium3DTile} tile
2940
+ * @returns {Cartesian3}
2941
+ */
2942
+ function computeTileLabelPosition(tile) {
2943
+ const { halfAxes, radius, center } = tile.boundingVolume.boundingVolume;
2944
+
2945
+ let position = Cartesian3.clone(center, scratchCartesian);
2946
+ if (defined(halfAxes)) {
2947
+ position.x += 0.75 * (halfAxes[0] + halfAxes[3] + halfAxes[6]);
2948
+ position.y += 0.75 * (halfAxes[1] + halfAxes[4] + halfAxes[7]);
2949
+ position.z += 0.75 * (halfAxes[2] + halfAxes[5] + halfAxes[8]);
2950
+ } else if (defined(radius)) {
2951
+ let normal = Cartesian3.normalize(center, scratchCartesian);
2952
+ normal = Cartesian3.multiplyByScalar(
2953
+ normal,
2954
+ 0.75 * radius,
2955
+ scratchCartesian,
2956
+ );
2957
+ position = Cartesian3.add(normal, center, scratchCartesian);
2958
+ }
2959
+ return position;
2960
+ }
2961
+
2962
+ /**
2963
+ * @private
2964
+ * @param {Cesium3DTile} tile
2965
+ * @param {Cesium3DTileset} tileset
2966
+ * @param {Cartesian3} position
2967
+ * @returns {Label}
2968
+ */
2969
+ function addTileDebugLabel(tile, tileset, position) {
2970
+ let labelString = "";
2971
+ let attributes = 0;
2972
+
2973
+ if (tileset.debugShowGeometricError) {
2974
+ labelString += `\nGeometric error: ${tile.geometricError}`;
2975
+ attributes++;
2976
+ }
2977
+
2978
+ if (tileset.debugShowRenderingStatistics) {
2979
+ labelString += `\nCommands: ${tile.commandsLength}`;
2980
+ attributes++;
2981
+
2982
+ // Don't display number of points or triangles if 0.
2983
+ const numberOfPoints = tile.content.pointsLength;
2984
+ if (numberOfPoints > 0) {
2985
+ labelString += `\nPoints: ${tile.content.pointsLength}`;
2986
+ attributes++;
2987
+ }
2988
+
2989
+ const numberOfTriangles = tile.content.trianglesLength;
2990
+ if (numberOfTriangles > 0) {
2991
+ labelString += `\nTriangles: ${tile.content.trianglesLength}`;
2992
+ attributes++;
2993
+ }
2994
+
2995
+ labelString += `\nFeatures: ${tile.content.featuresLength}`;
2996
+ attributes++;
2997
+ }
2998
+
2999
+ if (tileset.debugShowMemoryUsage) {
3000
+ labelString += `\nTexture Memory: ${formatMemoryString(
3001
+ tile.content.texturesByteLength,
3002
+ )}`;
3003
+ labelString += `\nGeometry Memory: ${formatMemoryString(
3004
+ tile.content.geometryByteLength,
3005
+ )}`;
3006
+ attributes += 2;
3007
+ }
3008
+
3009
+ if (tileset.debugShowUrl) {
3010
+ if (tile.hasMultipleContents) {
3011
+ labelString += "\nUrls:";
3012
+ const urls = tile.content.innerContentUrls;
3013
+ for (let i = 0; i < urls.length; i++) {
3014
+ labelString += `\n- ${urls[i]}`;
3015
+ }
3016
+ attributes += urls.length;
3017
+ } else {
3018
+ labelString += `\nUrl: ${tile._contentHeader.uri}`;
3019
+ attributes++;
3020
+ }
3021
+ }
3022
+
3023
+ const newLabel = {
3024
+ text: labelString.substring(1),
3025
+ position: position,
3026
+ font: `${19 - attributes}px sans-serif`,
3027
+ showBackground: true,
3028
+ disableDepthTestDistance: Number.POSITIVE_INFINITY,
3029
+ };
3030
+
3031
+ return tileset._tileDebugLabels.add(newLabel);
3032
+ }
3033
+
3034
+ /**
3035
+ * @private
3036
+ * @param {Cesium3DTileset} tileset
3037
+ * @param {FrameState} frameState
3038
+ */
3039
+ function updateTileDebugLabels(tileset, frameState) {
3040
+ const selectedTiles = tileset._selectedTiles;
3041
+ const selectedLength = selectedTiles.length;
3042
+ const emptyTiles = tileset._emptyTiles;
3043
+ const emptyLength = emptyTiles.length;
3044
+ tileset._tileDebugLabels.removeAll();
3045
+
3046
+ if (tileset.debugPickedTileLabelOnly) {
3047
+ if (defined(tileset.debugPickedTile)) {
3048
+ const position = defined(tileset.debugPickPosition)
3049
+ ? tileset.debugPickPosition
3050
+ : computeTileLabelPosition(tileset.debugPickedTile);
3051
+ const label = addTileDebugLabel(
3052
+ tileset.debugPickedTile,
3053
+ tileset,
3054
+ position,
3055
+ );
3056
+ label.pixelOffset = new Cartesian2(15, -15); // Offset to avoid picking the label.
3057
+ }
3058
+ } else {
3059
+ for (let i = 0; i < selectedLength; ++i) {
3060
+ const tile = selectedTiles[i];
3061
+ addTileDebugLabel(tile, tileset, computeTileLabelPosition(tile));
3062
+ }
3063
+ for (let i = 0; i < emptyLength; ++i) {
3064
+ const tile = emptyTiles[i];
3065
+ if (tile.hasTilesetContent || tile.hasImplicitContent) {
3066
+ addTileDebugLabel(tile, tileset, computeTileLabelPosition(tile));
3067
+ }
3068
+ }
3069
+ }
3070
+ tileset._tileDebugLabels.update(frameState);
3071
+ }
3072
+
3073
+ /**
3074
+ * @private
3075
+ * @param {Cesium3DTileset} tileset
3076
+ * @param {FrameState} frameState
3077
+ * @param {object} passOptions
3078
+ */
3079
+ function updateTiles(tileset, frameState, passOptions) {
3080
+ tileset._styleEngine.applyStyle(tileset);
3081
+ tileset._styleApplied = true;
3082
+
3083
+ const { commandList, context } = frameState;
3084
+ const numberOfInitialCommands = commandList.length;
3085
+ const selectedTiles = tileset._selectedTiles;
3086
+
3087
+ const bivariateVisibilityTest =
3088
+ tileset.isSkippingLevelOfDetail &&
3089
+ tileset._hasMixedContent &&
3090
+ context.stencilBuffer &&
3091
+ selectedTiles.length > 0;
3092
+
3093
+ tileset._backfaceCommands.length = 0;
3094
+
3095
+ if (bivariateVisibilityTest) {
3096
+ if (!defined(tileset._stencilClearCommand)) {
3097
+ tileset._stencilClearCommand = new ClearCommand({
3098
+ stencil: 0,
3099
+ pass: Pass.CESIUM_3D_TILE,
3100
+ renderState: RenderState.fromCache({
3101
+ stencilMask: StencilConstants.SKIP_LOD_MASK,
3102
+ }),
3103
+ });
3104
+ }
3105
+ commandList.push(tileset._stencilClearCommand);
3106
+ }
3107
+
3108
+ const { statistics, tileVisible } = tileset;
3109
+ const isRender = passOptions.isRender;
3110
+ const lengthBeforeUpdate = commandList.length;
3111
+
3112
+ for (let i = 0; i < selectedTiles.length; ++i) {
3113
+ const tile = selectedTiles[i];
3114
+ // Raise the tileVisible event before update in case the tileVisible event
3115
+ // handler makes changes that update needs to apply to WebGL resources
3116
+ if (isRender) {
3117
+ tileVisible.raiseEvent(tile);
3118
+ }
3119
+ processUpdateHeight(tileset, tile, frameState);
3120
+ tile.update(tileset, frameState, passOptions);
3121
+ statistics.incrementSelectionCounts(tile.content);
3122
+ ++statistics.selected;
3123
+ }
3124
+ const emptyTiles = tileset._emptyTiles;
3125
+ for (let i = 0; i < emptyTiles.length; ++i) {
3126
+ const tile = emptyTiles[i];
3127
+ tile.update(tileset, frameState, passOptions);
3128
+ }
3129
+
3130
+ let addedCommandsLength = commandList.length - lengthBeforeUpdate;
3131
+
3132
+ tileset._backfaceCommands.trim();
3133
+
3134
+ if (bivariateVisibilityTest) {
3135
+ /*
3136
+ * Consider 'effective leaf' tiles as selected tiles that have no selected descendants. They may have children,
3137
+ * but they are currently our effective leaves because they do not have selected descendants. These tiles
3138
+ * are those where with tile._finalResolution === true.
3139
+ * Let 'unresolved' tiles be those with tile._finalResolution === false.
3140
+ *
3141
+ * 1. Render just the backfaces of unresolved tiles in order to lay down z
3142
+ * 2. Render all frontfaces wherever tile._selectionDepth > stencilBuffer.
3143
+ * Replace stencilBuffer with tile._selectionDepth, when passing the z test.
3144
+ * Because children are always drawn before ancestors {@link Cesium3DTilesetTraversal#traverseAndSelect},
3145
+ * this effectively draws children first and does not draw ancestors if a descendant has already
3146
+ * been drawn at that pixel.
3147
+ * Step 1 prevents child tiles from appearing on top when they are truly behind ancestor content.
3148
+ * If they are behind the backfaces of the ancestor, then they will not be drawn.
3149
+ *
3150
+ * NOTE: Step 2 sometimes causes visual artifacts when backfacing child content has some faces that
3151
+ * partially face the camera and are inside of the ancestor content. Because they are inside, they will
3152
+ * not be culled by the depth writes in Step 1, and because they partially face the camera, the stencil tests
3153
+ * will draw them on top of the ancestor content.
3154
+ *
3155
+ * NOTE: Because we always render backfaces of unresolved tiles, if the camera is looking at the backfaces
3156
+ * of an object, they will always be drawn while loading, even if backface culling is enabled.
3157
+ */
3158
+
3159
+ const backfaceCommands = tileset._backfaceCommands.values;
3160
+ const backfaceCommandsLength = backfaceCommands.length;
3161
+
3162
+ commandList.length += backfaceCommandsLength;
3163
+
3164
+ // copy commands to the back of the commandList
3165
+ for (let i = addedCommandsLength - 1; i >= 0; --i) {
3166
+ commandList[lengthBeforeUpdate + backfaceCommandsLength + i] =
3167
+ commandList[lengthBeforeUpdate + i];
3168
+ }
3169
+
3170
+ // move backface commands to the front of the commandList
3171
+ for (let i = 0; i < backfaceCommandsLength; ++i) {
3172
+ commandList[lengthBeforeUpdate + i] = backfaceCommands[i];
3173
+ }
3174
+ }
3175
+
3176
+ // Number of commands added by each update above
3177
+ addedCommandsLength = commandList.length - numberOfInitialCommands;
3178
+ statistics.numberOfCommands = addedCommandsLength;
3179
+
3180
+ if (!isRender) {
3181
+ return;
3182
+ }
3183
+
3184
+ // Only run EDL if simple attenuation is on
3185
+ if (
3186
+ tileset.pointCloudShading.attenuation &&
3187
+ tileset.pointCloudShading.eyeDomeLighting &&
3188
+ addedCommandsLength > 0
3189
+ ) {
3190
+ tileset._pointCloudEyeDomeLighting.update(
3191
+ frameState,
3192
+ numberOfInitialCommands,
3193
+ tileset.pointCloudShading,
3194
+ tileset.boundingSphere,
3195
+ );
3196
+ }
3197
+
3198
+ if (
3199
+ tileset.debugShowGeometricError ||
3200
+ tileset.debugShowRenderingStatistics ||
3201
+ tileset.debugShowMemoryUsage ||
3202
+ tileset.debugShowUrl
3203
+ ) {
3204
+ if (!defined(tileset._tileDebugLabels)) {
3205
+ tileset._tileDebugLabels = new LabelCollection();
3206
+ }
3207
+ updateTileDebugLabels(tileset, frameState);
3208
+ } else {
3209
+ tileset._tileDebugLabels =
3210
+ tileset._tileDebugLabels && tileset._tileDebugLabels.destroy();
3211
+ }
3212
+ }
3213
+
3214
+ const scratchStack = [];
3215
+
3216
+ /**
3217
+ * @private
3218
+ * @param {Cesium3DTileset} tileset
3219
+ * @param {Cesium3DTile} tile
3220
+ */
3221
+ function destroySubtree(tileset, tile) {
3222
+ const root = tile;
3223
+ const stack = scratchStack;
3224
+ stack.push(tile);
3225
+ while (stack.length > 0) {
3226
+ tile = stack.pop();
3227
+ const children = tile.children;
3228
+ for (let i = 0; i < children.length; ++i) {
3229
+ stack.push(children[i]);
3230
+ }
3231
+ if (tile !== root) {
3232
+ destroyTile(tileset, tile);
3233
+ --tileset._statistics.numberOfTilesTotal;
3234
+ }
3235
+ }
3236
+ root.children = [];
3237
+ }
3238
+
3239
+ /**
3240
+ * @private
3241
+ * @param {Cesium3DTileset} tileset
3242
+ * @param {Cesium3DTile} tile
3243
+ */
3244
+ function unloadTile(tileset, tile) {
3245
+ tileset.tileUnload.raiseEvent(tile);
3246
+ tileset._statistics.decrementLoadCounts(tile.content);
3247
+ --tileset._statistics.numberOfTilesWithContentReady;
3248
+ tile.unloadContent();
3249
+ }
3250
+
3251
+ /**
3252
+ * @private
3253
+ * @param {Cesium3DTileset} tileset
3254
+ * @param {Cesium3DTile} tile
3255
+ */
3256
+ function destroyTile(tileset, tile) {
3257
+ tileset._cache.unloadTile(tileset, tile, unloadTile);
3258
+ tile.destroy();
3259
+ }
3260
+
3261
+ /**
3262
+ * Unloads all tiles that weren't selected the previous frame. This can be used to
3263
+ * explicitly manage the tile cache and reduce the total number of tiles loaded below
3264
+ * {@link Cesium3DTileset#cacheBytes}.
3265
+ * <p>
3266
+ * Tile unloads occur at the next frame to keep all the WebGL delete calls
3267
+ * within the render loop.
3268
+ * </p>
3269
+ */
3270
+ Cesium3DTileset.prototype.trimLoadedTiles = function () {
3271
+ this._cache.trim();
3272
+ };
3273
+
3274
+ /**
3275
+ * @private
3276
+ * @param {Cesium3DTileset} tileset
3277
+ * @param {FrameState} frameState
3278
+ */
3279
+ function raiseLoadProgressEvent(tileset, frameState) {
3280
+ const statistics = tileset._statistics;
3281
+ const statisticsLast = tileset._statisticsLast;
3282
+
3283
+ const numberOfPendingRequests = statistics.numberOfPendingRequests;
3284
+ const numberOfTilesProcessing = statistics.numberOfTilesProcessing;
3285
+ const lastNumberOfPendingRequest = statisticsLast.numberOfPendingRequests;
3286
+ const lastNumberOfTilesProcessing = statisticsLast.numberOfTilesProcessing;
3287
+
3288
+ Cesium3DTilesetStatistics.clone(statistics, statisticsLast);
3289
+
3290
+ const progressChanged =
3291
+ numberOfPendingRequests !== lastNumberOfPendingRequest ||
3292
+ numberOfTilesProcessing !== lastNumberOfTilesProcessing;
3293
+
3294
+ if (progressChanged) {
3295
+ frameState.afterRender.push(function () {
3296
+ tileset.loadProgress.raiseEvent(
3297
+ numberOfPendingRequests,
3298
+ numberOfTilesProcessing,
3299
+ );
3300
+
3301
+ return true;
3302
+ });
3303
+ }
3304
+
3305
+ tileset._tilesLoaded =
3306
+ statistics.numberOfPendingRequests === 0 &&
3307
+ statistics.numberOfTilesProcessing === 0 &&
3308
+ statistics.numberOfAttemptedRequests === 0;
3309
+
3310
+ // Events are raised (added to the afterRender queue) here since promises
3311
+ // may resolve outside of the update loop that then raise events, e.g.,
3312
+ // model's readyEvent
3313
+ if (progressChanged && tileset._tilesLoaded) {
3314
+ frameState.afterRender.push(function () {
3315
+ tileset.allTilesLoaded.raiseEvent();
3316
+ return true;
3317
+ });
3318
+ if (!tileset._initialTilesLoaded) {
3319
+ tileset._initialTilesLoaded = true;
3320
+ frameState.afterRender.push(function () {
3321
+ tileset.initialTilesLoaded.raiseEvent();
3322
+ return true;
3323
+ });
3324
+ }
3325
+ }
3326
+ }
3327
+
3328
+ /**
3329
+ * @private
3330
+ * @param {Cesium3DTileset} tileset
3331
+ */
3332
+ function resetMinimumMaximum(tileset) {
3333
+ tileset._heatmap.resetMinimumMaximum();
3334
+ tileset._minimumPriority.depth = Number.MAX_VALUE;
3335
+ tileset._maximumPriority.depth = -Number.MAX_VALUE;
3336
+ tileset._minimumPriority.foveatedFactor = Number.MAX_VALUE;
3337
+ tileset._maximumPriority.foveatedFactor = -Number.MAX_VALUE;
3338
+ tileset._minimumPriority.distance = Number.MAX_VALUE;
3339
+ tileset._maximumPriority.distance = -Number.MAX_VALUE;
3340
+ tileset._minimumPriority.reverseScreenSpaceError = Number.MAX_VALUE;
3341
+ tileset._maximumPriority.reverseScreenSpaceError = -Number.MAX_VALUE;
3342
+ }
3343
+
3344
+ /**
3345
+ * @private
3346
+ * @param {Cesium3DTileset} tileset
3347
+ * @param {FrameState} frameState
3348
+ */
3349
+ function detectModelMatrixChanged(tileset, frameState) {
3350
+ if (
3351
+ frameState.frameNumber === tileset._updatedModelMatrixFrame &&
3352
+ defined(tileset._previousModelMatrix)
3353
+ ) {
3354
+ return;
3355
+ }
3356
+
3357
+ tileset._updatedModelMatrixFrame = frameState.frameNumber;
3358
+ tileset._modelMatrixChanged = !Matrix4.equals(
3359
+ tileset.modelMatrix,
3360
+ tileset._previousModelMatrix,
3361
+ );
3362
+ if (tileset._modelMatrixChanged) {
3363
+ tileset._previousModelMatrix = Matrix4.clone(
3364
+ tileset.modelMatrix,
3365
+ tileset._previousModelMatrix,
3366
+ );
3367
+ }
3368
+ }
3369
+
3370
+ /**
3371
+ * @private
3372
+ * @param {Cesium3DTileset} tileset
3373
+ * @param {FrameState} frameState
3374
+ * @param {Cesium3DTilesetStatistics} passStatistics
3375
+ * @param {object} passOptions
3376
+ * @returns {boolean}
3377
+ */
3378
+ function update(tileset, frameState, passStatistics, passOptions) {
3379
+ if (frameState.mode === SceneMode.MORPHING) {
3380
+ return false;
3381
+ }
3382
+
3383
+ if (!defined(tileset._root)) {
3384
+ return false;
3385
+ }
3386
+
3387
+ const statistics = tileset._statistics;
3388
+ statistics.clear();
3389
+
3390
+ // Resets the visibility check for each pass
3391
+ ++tileset._updatedVisibilityFrame;
3392
+
3393
+ // Update any tracked min max values
3394
+ resetMinimumMaximum(tileset);
3395
+
3396
+ detectModelMatrixChanged(tileset, frameState);
3397
+ tileset._cullRequestsWhileMoving =
3398
+ tileset.cullRequestsWhileMoving && !tileset._modelMatrixChanged;
3399
+
3400
+ const ready = tileset
3401
+ .getTraversal(passOptions)
3402
+ .selectTiles(tileset, frameState);
3403
+
3404
+ if (passOptions.requestTiles) {
3405
+ requestTiles(tileset);
3406
+ }
3407
+
3408
+ updateTiles(tileset, frameState, passOptions);
3409
+
3410
+ // Update pass statistics
3411
+ Cesium3DTilesetStatistics.clone(statistics, passStatistics);
3412
+
3413
+ if (passOptions.isRender) {
3414
+ const credits = tileset._credits;
3415
+ if (defined(credits) && statistics.selected !== 0) {
3416
+ for (let i = 0; i < credits.length; ++i) {
3417
+ const credit = credits[i];
3418
+ frameState.creditDisplay.addCreditToNextFrame(credit);
3419
+ }
3420
+ }
3421
+ }
3422
+
3423
+ return ready;
3424
+ }
3425
+
3426
+ function createCredits(tileset) {
3427
+ let credits = tileset._credits;
3428
+ if (!defined(credits)) {
3429
+ credits = [];
3430
+ }
3431
+ credits.length = 0;
3432
+
3433
+ if (defined(tileset.resource.credits)) {
3434
+ tileset.resource.credits.forEach((credit) => {
3435
+ credits.push(Credit.clone(credit));
3436
+ });
3437
+ }
3438
+
3439
+ const assetExtras = tileset.asset.extras;
3440
+ if (
3441
+ defined(assetExtras) &&
3442
+ defined(assetExtras.cesium) &&
3443
+ defined(assetExtras.cesium.credits)
3444
+ ) {
3445
+ const extraCredits = assetExtras.cesium.credits;
3446
+ for (let i = 0; i < extraCredits.length; ++i) {
3447
+ const credit = extraCredits[i];
3448
+ credits.push(new Credit(credit.html));
3449
+ }
3450
+ }
3451
+
3452
+ credits.forEach(
3453
+ (credit) =>
3454
+ (credit.showOnScreen =
3455
+ credit.showOnScreen || tileset._showCreditsOnScreen),
3456
+ );
3457
+
3458
+ tileset._credits = credits;
3459
+ }
3460
+
3461
+ /**
3462
+ * @private
3463
+ * @param {object} passOptions
3464
+ * @returns {Cesium3DTilesetTraversal}
3465
+ */
3466
+ Cesium3DTileset.prototype.getTraversal = function (passOptions) {
3467
+ const { pass } = passOptions;
3468
+ if (
3469
+ pass === Cesium3DTilePass.MOST_DETAILED_PRELOAD ||
3470
+ pass === Cesium3DTilePass.MOST_DETAILED_PICK
3471
+ ) {
3472
+ return Cesium3DTilesetMostDetailedTraversal;
3473
+ }
3474
+ return this.isSkippingLevelOfDetail
3475
+ ? Cesium3DTilesetSkipTraversal
3476
+ : Cesium3DTilesetBaseTraversal;
3477
+ };
3478
+
3479
+ /**
3480
+ * @private
3481
+ * @param {FrameState} frameState
3482
+ */
3483
+ Cesium3DTileset.prototype.update = function (frameState) {
3484
+ this.updateForPass(frameState, frameState.tilesetPassState);
3485
+ };
3486
+
3487
+ /**
3488
+ * @private
3489
+ * @param {FrameState} frameState
3490
+ * @param {object} tilesetPassState
3491
+ */
3492
+ Cesium3DTileset.prototype.updateForPass = function (
3493
+ frameState,
3494
+ tilesetPassState,
3495
+ ) {
3496
+ //>>includeStart('debug', pragmas.debug);
3497
+ Check.typeOf.object("frameState", frameState);
3498
+ Check.typeOf.object("tilesetPassState", tilesetPassState);
3499
+ //>>includeEnd('debug');
3500
+
3501
+ this.imageryLayers._update();
3502
+
3503
+ const pass = tilesetPassState.pass;
3504
+ if (
3505
+ (pass === Cesium3DTilePass.PRELOAD &&
3506
+ (!this.preloadWhenHidden || this.show)) ||
3507
+ (pass === Cesium3DTilePass.PRELOAD_FLIGHT &&
3508
+ (!this.preloadFlightDestinations ||
3509
+ (!this.show && !this.preloadWhenHidden))) ||
3510
+ (pass === Cesium3DTilePass.REQUEST_RENDER_MODE_DEFER_CHECK &&
3511
+ ((!this._cullRequestsWhileMoving && this.foveatedTimeDelay <= 0) ||
3512
+ !this.show))
3513
+ ) {
3514
+ return;
3515
+ }
3516
+
3517
+ const originalCommandList = frameState.commandList;
3518
+ const originalCamera = frameState.camera;
3519
+ const originalCullingVolume = frameState.cullingVolume;
3520
+
3521
+ tilesetPassState.ready = false;
3522
+
3523
+ const passOptions = Cesium3DTilePass.getPassOptions(pass);
3524
+ const ignoreCommands = passOptions.ignoreCommands;
3525
+
3526
+ const commandList = tilesetPassState.commandList ?? originalCommandList;
3527
+ const commandStart = commandList.length;
3528
+
3529
+ frameState.commandList = commandList;
3530
+ frameState.camera = tilesetPassState.camera ?? originalCamera;
3531
+ frameState.cullingVolume =
3532
+ tilesetPassState.cullingVolume ?? originalCullingVolume;
3533
+
3534
+ if (passOptions.isRender) {
3535
+ const environmentMapManager = this._environmentMapManager;
3536
+ if (defined(this._root)) {
3537
+ environmentMapManager.position = this.boundingSphere.center;
3538
+ }
3539
+ environmentMapManager.update(frameState);
3540
+ }
3541
+
3542
+ // Update clipping polygons
3543
+ const clippingPolygons = this._clippingPolygons;
3544
+ if (defined(clippingPolygons) && clippingPolygons.enabled) {
3545
+ clippingPolygons.queueCommands(frameState);
3546
+ }
3547
+
3548
+ const passStatistics = this._statisticsPerPass[pass];
3549
+
3550
+ if (this.show || ignoreCommands) {
3551
+ this._pass = pass;
3552
+ tilesetPassState.ready = update(
3553
+ this,
3554
+ frameState,
3555
+ passStatistics,
3556
+ passOptions,
3557
+ );
3558
+ }
3559
+
3560
+ if (ignoreCommands) {
3561
+ commandList.length = commandStart;
3562
+ }
3563
+
3564
+ frameState.commandList = originalCommandList;
3565
+ frameState.camera = originalCamera;
3566
+ frameState.cullingVolume = originalCullingVolume;
3567
+ };
3568
+
3569
+ /**
3570
+ * <code>true</code> if the tileset JSON file lists the extension in extensionsUsed; otherwise, <code>false</code>.
3571
+ * @param {string} extensionName The name of the extension to check.
3572
+ *
3573
+ * @returns {boolean} <code>true</code> if the tileset JSON file lists the extension in extensionsUsed; otherwise, <code>false</code>.
3574
+ */
3575
+ Cesium3DTileset.prototype.hasExtension = function (extensionName) {
3576
+ if (!defined(this._extensionsUsed)) {
3577
+ return false;
3578
+ }
3579
+
3580
+ return this._extensionsUsed.indexOf(extensionName) > -1;
3581
+ };
3582
+
3583
+ /**
3584
+ * Returns true if this object was destroyed; otherwise, false.
3585
+ * <br /><br />
3586
+ * If this object was destroyed, it should not be used; calling any function other than
3587
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
3588
+ *
3589
+ * @returns {boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
3590
+ *
3591
+ * @see Cesium3DTileset#destroy
3592
+ */
3593
+ Cesium3DTileset.prototype.isDestroyed = function () {
3594
+ return false;
3595
+ };
3596
+
3597
+ /**
3598
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
3599
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
3600
+ * <br /><br />
3601
+ * Once an object is destroyed, it should not be used; calling any function other than
3602
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
3603
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
3604
+ *
3605
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
3606
+ *
3607
+ * @example
3608
+ * tileset = tileset && tileset.destroy();
3609
+ *
3610
+ * @see Cesium3DTileset#isDestroyed
3611
+ */
3612
+ Cesium3DTileset.prototype.destroy = function () {
3613
+ this._tileDebugLabels =
3614
+ this._tileDebugLabels && this._tileDebugLabels.destroy();
3615
+ this._clippingPlanes = this._clippingPlanes && this._clippingPlanes.destroy();
3616
+ this._clippingPolygons =
3617
+ this._clippingPolygons && this._clippingPolygons.destroy();
3618
+
3619
+ // Traverse the tree and destroy all tiles
3620
+ if (defined(this._root)) {
3621
+ const stack = scratchStack;
3622
+ stack.push(this._root);
3623
+
3624
+ while (stack.length > 0) {
3625
+ const tile = stack.pop();
3626
+ tile.destroy();
3627
+
3628
+ const children = tile.children;
3629
+ for (let i = 0; i < children.length; ++i) {
3630
+ stack.push(children[i]);
3631
+ }
3632
+ }
3633
+ }
3634
+ this._root = undefined;
3635
+
3636
+ if (
3637
+ this._shouldDestroyImageBasedLighting &&
3638
+ !this._imageBasedLighting.isDestroyed()
3639
+ ) {
3640
+ this._imageBasedLighting.destroy();
3641
+ }
3642
+ this._imageBasedLighting = undefined;
3643
+
3644
+ if (!this._environmentMapManager.isDestroyed()) {
3645
+ this._environmentMapManager.destroy();
3646
+ }
3647
+ this._environmentMapManager = undefined;
3648
+
3649
+ if (!this._imageryLayers.isDestroyed()) {
3650
+ this.imageryLayers.layerAdded.removeEventListener(
3651
+ this._imageryLayersListener,
3652
+ );
3653
+ this.imageryLayers.layerRemoved.removeEventListener(
3654
+ this._imageryLayersListener,
3655
+ );
3656
+ this.imageryLayers.layerMoved.removeEventListener(
3657
+ this._imageryLayersListener,
3658
+ );
3659
+ this.imageryLayers.layerShownOrHidden.removeEventListener(
3660
+ this._imageryLayersListener,
3661
+ );
3662
+ this._imageryLayers.destroy();
3663
+ }
3664
+ this._imageryLayers = undefined;
3665
+
3666
+ return destroyObject(this);
3667
+ };
3668
+
3669
+ Cesium3DTileset.supportedExtensions = {
3670
+ "3DTILES_metadata": true,
3671
+ "3DTILES_implicit_tiling": true,
3672
+ "3DTILES_content_gltf": true,
3673
+ "3DTILES_multiple_contents": true,
3674
+ "3DTILES_bounding_volume_S2": true,
3675
+ "3DTILES_batch_table_hierarchy": true,
3676
+ "3DTILES_draco_point_compression": true,
3677
+ MAXAR_content_geojson: true,
3678
+ };
3679
+
3680
+ /**
3681
+ * Checks to see if a given extension is supported by Cesium3DTileset. If
3682
+ * the extension is not supported by Cesium3DTileset, it throws a RuntimeError.
3683
+ *
3684
+ * @param {object} extensionsRequired The extensions we wish to check
3685
+ *
3686
+ * @private
3687
+ */
3688
+ Cesium3DTileset.checkSupportedExtensions = function (extensionsRequired) {
3689
+ for (let i = 0; i < extensionsRequired.length; i++) {
3690
+ if (!Cesium3DTileset.supportedExtensions[extensionsRequired[i]]) {
3691
+ throw new RuntimeError(
3692
+ `Unsupported 3D Tiles Extension: ${extensionsRequired[i]}`,
3693
+ );
3694
+ }
3695
+ }
3696
+ };
3697
+
3698
+ const scratchGetHeightRay = new Ray();
3699
+ const scratchIntersection = new Cartesian3();
3700
+ const scratchGetHeightCartographic = new Cartographic();
3701
+
3702
+ /**
3703
+ * Get the height of the loaded surface at a given cartographic. This function will only take into account meshes for loaded tiles, not neccisarily the most detailed tiles available for a tileset. This function will always return undefined when sampling a point cloud.
3704
+ *
3705
+ * @param {Cartographic} cartographic The cartographic for which to find the height.
3706
+ * @param {Scene} scene The scene where visualization is taking place.
3707
+ * @returns {number|undefined} The height of the cartographic or undefined if it could not be found.
3708
+ *
3709
+ * @example
3710
+ * const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(124624234);
3711
+ * scene.primitives.add(tileset);
3712
+ *
3713
+ * const height = tileset.getHeight(scene.camera.positionCartographic, scene);
3714
+ */
3715
+ Cesium3DTileset.prototype.getHeight = function (cartographic, scene) {
3716
+ //>>includeStart('debug', pragmas.debug);
3717
+ Check.typeOf.object("cartographic", cartographic);
3718
+ Check.typeOf.object("scene", scene);
3719
+ //>>includeEnd('debug');
3720
+
3721
+ let ellipsoid = scene.ellipsoid;
3722
+ if (!defined(ellipsoid)) {
3723
+ ellipsoid = Ellipsoid.WGS84;
3724
+ }
3725
+
3726
+ const ray = scratchGetHeightRay;
3727
+ const position = ellipsoid.cartographicToCartesian(
3728
+ cartographic,
3729
+ ray.direction,
3730
+ );
3731
+ Cartesian3.normalize(ray.direction, ray.direction);
3732
+
3733
+ ray.direction = Cartesian3.normalize(position, ray.direction);
3734
+ ray.direction = Cartesian3.negate(position, ray.direction);
3735
+ ray.origin = Cartesian3.multiplyByScalar(
3736
+ ray.direction,
3737
+ -2 * ellipsoid.maximumRadius,
3738
+ ray.origin,
3739
+ );
3740
+
3741
+ const intersection = this.pick(ray, scene.frameState, scratchIntersection);
3742
+ if (!defined(intersection)) {
3743
+ return;
3744
+ }
3745
+
3746
+ return ellipsoid.cartesianToCartographic(
3747
+ intersection,
3748
+ scratchGetHeightCartographic,
3749
+ )?.height;
3750
+ };
3751
+
3752
+ /**
3753
+ * Calls the callback when a new tile is rendered that contains the given cartographic. The only parameter
3754
+ * is the cartographic position on the tile.
3755
+ *
3756
+ * @private
3757
+ *
3758
+ * @param {Scene} scene The scene where visualization is taking place.
3759
+ * @param {Cartographic} cartographic The cartographic position.
3760
+ * @param {Function} callback The function to be called when a new tile is loaded.
3761
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use.
3762
+ * @returns {Function} The function to remove this callback from the quadtree.
3763
+ */
3764
+ Cesium3DTileset.prototype.updateHeight = function (
3765
+ cartographic,
3766
+ callback,
3767
+ ellipsoid,
3768
+ ) {
3769
+ ellipsoid = ellipsoid ?? Ellipsoid.WGS84;
3770
+
3771
+ const object = {
3772
+ positionCartographic: cartographic,
3773
+ ellipsoid: ellipsoid,
3774
+ callback: callback,
3775
+ invoked: false,
3776
+ };
3777
+
3778
+ const removeCallback = () => {
3779
+ const addedCallbacks = this._addHeightCallbacks;
3780
+ const length = addedCallbacks.length;
3781
+ for (let i = 0; i < length; ++i) {
3782
+ if (addedCallbacks[i] === object) {
3783
+ addedCallbacks.splice(i, 1);
3784
+ break;
3785
+ }
3786
+ }
3787
+
3788
+ if (object.callback) {
3789
+ object.callback = undefined;
3790
+ }
3791
+ };
3792
+
3793
+ this._addHeightCallbacks.push(object);
3794
+ return removeCallback;
3795
+ };
3796
+
3797
+ const scratchSphereIntersection = new Interval();
3798
+ const scratchPickIntersection = new Cartesian3();
3799
+
3800
+ /**
3801
+ * Find an intersection between a ray and the tileset surface that was rendered. The ray must be given in world coordinates.
3802
+ *
3803
+ * @param {Ray} ray The ray to test for intersection.
3804
+ * @param {FrameState} frameState The frame state.
3805
+ * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
3806
+ * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
3807
+ *
3808
+ * @private
3809
+ */
3810
+ Cesium3DTileset.prototype.pick = function (ray, frameState, result) {
3811
+ if (!frameState.context.webgl2 && !this._enablePick) {
3812
+ return;
3813
+ }
3814
+
3815
+ const selectedTiles = this._selectedTiles;
3816
+ const selectedLength = selectedTiles.length;
3817
+ const candidates = [];
3818
+
3819
+ for (let i = 0; i < selectedLength; ++i) {
3820
+ const tile = selectedTiles[i];
3821
+ const boundsIntersection = IntersectionTests.raySphere(
3822
+ ray,
3823
+ tile.contentBoundingVolume.boundingSphere,
3824
+ scratchSphereIntersection,
3825
+ );
3826
+ if (!defined(boundsIntersection) || !defined(tile.content)) {
3827
+ continue;
3828
+ }
3829
+
3830
+ candidates.push(tile);
3831
+ }
3832
+
3833
+ const length = candidates.length;
3834
+ candidates.sort((a, b) => {
3835
+ const aDist = BoundingSphere.distanceSquaredTo(
3836
+ a.contentBoundingVolume.boundingSphere,
3837
+ ray.origin,
3838
+ );
3839
+ const bDist = BoundingSphere.distanceSquaredTo(
3840
+ b.contentBoundingVolume.boundingSphere,
3841
+ ray.origin,
3842
+ );
3843
+
3844
+ return aDist - bDist;
3845
+ });
3846
+
3847
+ let intersection;
3848
+ for (let i = 0; i < length; ++i) {
3849
+ const tile = candidates[i];
3850
+ const candidate = tile.content.pick(
3851
+ ray,
3852
+ frameState,
3853
+ scratchPickIntersection,
3854
+ );
3855
+
3856
+ if (defined(candidate)) {
3857
+ intersection = Cartesian3.clone(candidate, result);
3858
+ return intersection;
3859
+ }
3860
+ }
3861
+ };
3862
+
3863
+ /**
3864
+ * Returns true if the given glTF extension is used by this tileset.
3865
+ * <br/><br/>
3866
+ * Relies on the <code>3DTILES_content_gltf</code> extension and will return
3867
+ * false if that extension is not used.
3868
+ *
3869
+ * @param {string} gltfExtensionName The name of the glTF extension to check.
3870
+ * @returns {boolean} <code>true</code> if the glTF extension is used by this tileset; otherwise, <code>false</code>.
3871
+ *
3872
+ * @private
3873
+ */
3874
+ Cesium3DTileset.prototype.isGltfExtensionUsed = function (gltfExtensionName) {
3875
+ if (this.hasExtension("3DTILES_content_gltf")) {
3876
+ if (!defined(this.extensions)) {
3877
+ return false;
3878
+ }
3879
+ const extensionsUsed =
3880
+ this.extensions["3DTILES_content_gltf"]?.extensionsUsed;
3881
+
3882
+ if (!defined(extensionsUsed)) {
3883
+ return false;
3884
+ }
3885
+
3886
+ return extensionsUsed.indexOf(gltfExtensionName) > -1;
3887
+ }
3888
+
3889
+ return false;
3890
+ };
3891
+
3892
+ /**
3893
+ * Returns true if the given glTF extension is used and required by this tileset.
3894
+ * <br/><br/>
3895
+ * Relies on the <code>3DTILES_content_gltf</code> extension and will return
3896
+ * <code>false</code> if that extension is not used.
3897
+ *
3898
+ * @param {string} gltfExtensionName The name of the glTF extension to check.
3899
+ * @returns {boolean} <code>true</code> if the glTF extension is required by this tileset; otherwise, <code>false</code>.
3900
+ *
3901
+ * @private
3902
+ */
3903
+ Cesium3DTileset.prototype.isGltfExtensionRequired = function (
3904
+ gltfExtensionName,
3905
+ ) {
3906
+ if (this.isGltfExtensionUsed(gltfExtensionName)) {
3907
+ const extensionsRequired =
3908
+ this.extensions["3DTILES_content_gltf"].extensionsRequired;
3909
+
3910
+ if (!defined(extensionsRequired)) {
3911
+ return false;
3912
+ }
3913
+
3914
+ return extensionsRequired.indexOf(gltfExtensionName) > -1;
3915
+ }
3916
+
3917
+ return false;
3918
+ };
3919
+
3920
+ /**
3921
+ * Optimization option. Used as a callback when {@link Cesium3DTileset#foveatedScreenSpaceError} is true to control how much to raise the screen space error for tiles outside the foveated cone,
3922
+ * interpolating between {@link Cesium3DTileset#foveatedMinimumScreenSpaceErrorRelaxation} and {@link Cesium3DTileset#maximumScreenSpaceError}.
3923
+ *
3924
+ * @callback Cesium3DTileset.foveatedInterpolationCallback
3925
+ * @default Math.lerp
3926
+ *
3927
+ * @param {number} p The start value to interpolate.
3928
+ * @param {number} q The end value to interpolate.
3929
+ * @param {number} time The time of interpolation generally in the range <code>[0.0, 1.0]</code>.
3930
+ * @returns {number} The interpolated value.
3931
+ */
3932
+ export default Cesium3DTileset;