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,3340 @@
1
+ import BoundingSphere from "../../Core/BoundingSphere.js";
2
+ import Cartesian3 from "../../Core/Cartesian3.js";
3
+ import Cartographic from "../../Core/Cartographic.js";
4
+ import Check from "../../Core/Check.js";
5
+ import Credit from "../../Core/Credit.js";
6
+ import Color from "../../Core/Color.js";
7
+ import defined from "../../Core/defined.js";
8
+ import Frozen from "../../Core/Frozen.js";
9
+ import DeveloperError from "../../Core/DeveloperError.js";
10
+ import destroyObject from "../../Core/destroyObject.js";
11
+ import DistanceDisplayCondition from "../../Core/DistanceDisplayCondition.js";
12
+ import Ellipsoid from "../../Core/Ellipsoid.js";
13
+ import Event from "../../Core/Event.js";
14
+ import Matrix3 from "../../Core/Matrix3.js";
15
+ import Matrix4 from "../../Core/Matrix4.js";
16
+ import Resource from "../../Core/Resource.js";
17
+ import RuntimeError from "../../Core/RuntimeError.js";
18
+ import Pass from "../../Renderer/Pass.js";
19
+ import ClippingPlaneCollection from "../ClippingPlaneCollection.js";
20
+ import ClippingPolygonCollection from "../ClippingPolygonCollection.js";
21
+ import DynamicEnvironmentMapManager from "../DynamicEnvironmentMapManager.js";
22
+ import ColorBlendMode from "../ColorBlendMode.js";
23
+ import GltfLoader from "../GltfLoader.js";
24
+ import HeightReference, {
25
+ isHeightReferenceRelative,
26
+ } from "../HeightReference.js";
27
+ import ImageBasedLighting from "../ImageBasedLighting.js";
28
+ import PointCloudShading from "../PointCloudShading.js";
29
+ import SceneMode from "../SceneMode.js";
30
+ import SceneTransforms from "../SceneTransforms.js";
31
+ import ShadowMode from "../ShadowMode.js";
32
+ import SplitDirection from "../SplitDirection.js";
33
+ import B3dmLoader from "./B3dmLoader.js";
34
+ import GeoJsonLoader from "./GeoJsonLoader.js";
35
+ import I3dmLoader from "./I3dmLoader.js";
36
+ import ModelAnimationCollection from "./ModelAnimationCollection.js";
37
+ import ModelFeatureTable from "./ModelFeatureTable.js";
38
+ import ModelSceneGraph from "./ModelSceneGraph.js";
39
+ import ModelStatistics from "./ModelStatistics.js";
40
+ import ModelType from "./ModelType.js";
41
+ import ModelUtility from "./ModelUtility.js";
42
+ import oneTimeWarning from "../../Core/oneTimeWarning.js";
43
+ import PntsLoader from "./PntsLoader.js";
44
+ import StyleCommandsNeeded from "./StyleCommandsNeeded.js";
45
+ import pickModel from "./pickModel.js";
46
+ import ModelImagery from "./ModelImagery.js";
47
+
48
+ /**
49
+ * <div class="notice">
50
+ * To construct a Model, call {@link Model.fromGltfAsync}. Do not call the constructor directly.
51
+ * </div>
52
+ * A 3D model based on glTF, the runtime asset format for WebGL, OpenGL ES, and OpenGL.
53
+ * <p>
54
+ * Cesium supports glTF assets with the following extensions:
55
+ * <ul>
56
+ * <li>
57
+ * {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/AGI_articulations/README.md|AGI_articulations}
58
+ * </li>
59
+ * <li>
60
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline}
61
+ * </li>
62
+ * <li>
63
+ * {@link https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Vendor/CESIUM_RTC/README.md|CESIUM_RTC}
64
+ * </li>
65
+ * <li>
66
+ * {@link https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_instance_features|EXT_instance_features}
67
+ * </li>
68
+ * <li>
69
+ * {@link https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features|EXT_mesh_features}
70
+ * </li>
71
+ * <li>
72
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_mesh_gpu_instancing|EXT_mesh_gpu_instancing}
73
+ * </li>
74
+ * <li>
75
+ * {@link https://github.com/KhronosGroup/glTF/pull/2514|EXT_mesh_primitive_restart}
76
+ * </li>
77
+ * <li>
78
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_meshopt_compression|EXT_meshopt_compression}
79
+ * </li>
80
+ * <li>
81
+ * {@link https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata|EXT_structural_metadata}
82
+ * </li>
83
+ * <li>
84
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_texture_webp|EXT_texture_webp}
85
+ * </li>
86
+ * <li>
87
+ * {@link https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md|KHR_draco_mesh_compression}
88
+ * </li>
89
+ * <li>
90
+ * {@link https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Archived/KHR_techniques_webgl/README.md|KHR_techniques_webgl}
91
+ * </li>
92
+ * <li>
93
+ * {@link https://github.com/KhronosGroup/glTF/blob/main/extensions/1.0/Khronos/KHR_materials_common/README.md|KHR_materials_common}
94
+ * </li>
95
+ * <li>
96
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness|KHR_materials_pbrSpecularGlossiness}
97
+ * </li>
98
+ * <li>
99
+ * {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit/README.md|KHR_materials_unlit}
100
+ * </li>
101
+ * <li>
102
+ * {@link https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_mesh_quantization|KHR_mesh_quantization}
103
+ * </li>
104
+ * <li>
105
+ * {@link https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Khronos/KHR_texture_basisu|KHR_texture_basisu}
106
+ * </li>
107
+ * <li>
108
+ * {@link https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Khronos/KHR_texture_transform/README.md|KHR_texture_transform}
109
+ * </li>
110
+ * <li>
111
+ * {@link https://github.com/KhronosGroup/glTF/blob/main/extensions/1.0/Vendor/WEB3D_quantized_attributes/README.md|WEB3D_quantized_attributes}
112
+ * </li>
113
+ * <li>
114
+ * {@link https://nsgreg.nga.mil/csmwg.jsp|NGA_gpm_local (experimental)}
115
+ * </li>
116
+ * </ul>
117
+ * </p>
118
+ * <p>
119
+ * Note: for models with compressed textures using the KHR_texture_basisu extension, we recommend power of 2 textures in both dimensions
120
+ * for maximum compatibility. This is because some samplers require power of 2 textures ({@link https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL|Using textures in WebGL})
121
+ * and KHR_texture_basisu requires multiple of 4 dimensions ({@link https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Khronos/KHR_texture_basisu/README.md#additional-requirements|KHR_texture_basisu additional requirements}).
122
+ * </p>
123
+ *
124
+ * @alias Model
125
+ * @internalConstructor
126
+ *
127
+ * @privateParam {object} options Object with the following properties:
128
+ * @privateParam {ResourceLoader} options.loader The loader used to load resources for this model.
129
+ * @privateParam {ModelType} options.type Type of this model, to distinguish individual glTF files from 3D Tiles internally.
130
+ * @privateParam {Resource} options.resource The Resource to the 3D model.
131
+ * @privateParam {boolean} [options.show=true] Whether or not to render the model.
132
+ * @privateParam {Matrix4} [options.modelMatrix=Matrix4.IDENTITY] The 4x4 transformation matrix that transforms the model from model to world coordinates.
133
+ * @privateParam {number} [options.scale=1.0] A uniform scale applied to this model.
134
+ * @privateParam {boolean} [options.enableVerticalExaggeration=true] If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
135
+ * @privateParam {number} [options.minimumPixelSize=0.0] The approximate minimum pixel size of the model regardless of zoom.
136
+ * @privateParam {number} [options.maximumScale] The maximum scale size of a model. An upper limit for minimumPixelSize.
137
+ * @privateParam {object} [options.id] A user-defined object to return when the model is picked with {@link Scene#pick}.
138
+ * @privateParam {boolean} [options.allowPicking=true] When <code>true</code>, each primitive is pickable with {@link Scene#pick}.
139
+ * @privateParam {boolean} [options.clampAnimations=true] Determines if the model's animations should hold a pose over frames where no keyframes are specified.
140
+ * @privateParam {ShadowMode} [options.shadows=ShadowMode.ENABLED] Determines whether the model casts or receives shadows from light sources.
141
+ * @privateParam {boolean} [options.debugShowBoundingVolume=false] For debugging only. Draws the bounding sphere for each draw command in the model.
142
+ * @privateParam {boolean} [options.enableDebugWireframe=false] For debugging only. This must be set to true for debugWireframe to work in WebGL1. This cannot be set after the model has loaded.
143
+ * @privateParam {boolean} [options.debugWireframe=false] For debugging only. Draws the model in wireframe. Will only work for WebGL1 if enableDebugWireframe is set to true.
144
+ * @privateParam {boolean} [options.cull=true] Whether or not to cull the model using frustum/horizon culling. If the model is part of a 3D Tiles tileset, this property will always be false, since the 3D Tiles culling system is used.
145
+ * @privateParam {boolean} [options.opaquePass=Pass.OPAQUE] The pass to use in the {@link DrawCommand} for the opaque portions of the model.
146
+ * @privateParam {CustomShader} [options.customShader] A custom shader. This will add user-defined GLSL code to the vertex and fragment shaders. Using custom shaders with a {@link Cesium3DTileStyle} may lead to undefined behavior.
147
+ * @privateParam {Cesium3DTileContent} [options.content] The tile content this model belongs to. This property will be undefined if model is not loaded as part of a tileset.
148
+ * @privateParam {HeightReference} [options.heightReference=HeightReference.NONE] Determines how the model is drawn relative to terrain.
149
+ * @privateParam {Scene} [options.scene] Must be passed in for models that use the height reference property.
150
+ * @privateParam {DistanceDisplayCondition} [options.distanceDisplayCondition] The condition specifying at what distance from the camera that this model will be displayed.
151
+ * @privateParam {Color} [options.color] A color that blends with the model's rendered color.
152
+ * @privateParam {ColorBlendMode} [options.colorBlendMode=ColorBlendMode.HIGHLIGHT] Defines how the color blends with the model.
153
+ * @privateParam {number} [options.colorBlendAmount=0.5] Value used to determine the color strength when the <code>colorBlendMode</code> is <code>MIX</code>. A value of 0.0 results in the model's rendered color while a value of 1.0 results in a solid color, with any value in-between resulting in a mix of the two.
154
+ * @privateParam {Color} [options.silhouetteColor=Color.RED] The silhouette color. If more than 256 models have silhouettes enabled, there is a small chance that overlapping models will have minor artifacts.
155
+ * @privateParam {number} [options.silhouetteSize=0.0] The size of the silhouette in pixels.
156
+ * @privateParam {boolean} [options.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.
157
+ * @privateParam {boolean} [options.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.
158
+ * @privateParam {Color} [options.outlineColor=Color.BLACK] The color to use when rendering outlines.
159
+ * @privateParam {ClippingPlaneCollection} [options.clippingPlanes] The {@link ClippingPlaneCollection} used to selectively disable rendering the model.
160
+ * @privateParam {ClippingPolygonCollection} [options.clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the model.
161
+ * @privateParam {Cartesian3} [options.lightColor] The light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
162
+ * @privateParam {ImageBasedLighting} [options.imageBasedLighting] The properties for managing image-based lighting on this model.
163
+ * @privateParam {DynamicEnvironmentMapManager.ConstructorOptions} [options.environmentMapOptions] The properties for managing dynamic environment maps on this model. Affects lighting.
164
+ * @privateParam {boolean} [options.backFaceCulling=true] Whether to cull back-facing geometry. When true, back face culling is determined by the material's doubleSided property; when false, back face culling is disabled. Back faces are not culled if the model's color is translucent.
165
+ * @privateParam {Credit|string} [options.credit] A credit for the data source, which is displayed on the canvas.
166
+ * @privateParam {boolean} [options.showCreditsOnScreen=false] Whether to display the credits of this model on screen.
167
+ * @privateParam {SplitDirection} [options.splitDirection=SplitDirection.NONE] The {@link SplitDirection} split to apply to this model.
168
+ * @privateParam {boolean} [options.projectTo2D=false] Whether to accurately project the model's positions in 2D. If this is true, the model will be projected accurately to 2D, but it will use more memory to do so. If this is false, the model will use less memory and will still render in 2D / CV mode, but its positions may be inaccurate. This disables minimumPixelSize and prevents future modification to the model matrix. This also cannot be set after the model has loaded.
169
+ * @privateParam {boolean} [options.enablePick=false] Whether to allow CPU picking with <code>pick</code> when not using WebGL 2 or above. 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 model has loaded.
170
+ * @privateParam {string|number} [options.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.
171
+ * @privateParam {string|number} [options.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.
172
+ * @privateParam {object} [options.pointCloudShading] Options for constructing a {@link PointCloudShading} object to control point attenuation based on geometric error and lighting.
173
+ * @privateParam {ClassificationType} [options.classificationType] Determines whether terrain, 3D Tiles or both will be classified by this model. This cannot be set after the model has loaded.
174
+ *
175
+ *
176
+ * @see Model.fromGltfAsync
177
+ *
178
+ * @demo {@link https://sandcastle.cesium.com/index.html?src=3D%20Models.html|Cesium Sandcastle Models Demo}
179
+ */
180
+ function Model(options) {
181
+ options = options ?? Frozen.EMPTY_OBJECT;
182
+ //>>includeStart('debug', pragmas.debug);
183
+ Check.typeOf.object("options.loader", options.loader);
184
+ Check.typeOf.object("options.resource", options.resource);
185
+ //>>includeEnd('debug');
186
+
187
+ /**
188
+ * The loader used to load resources for this model.
189
+ *
190
+ * @type {ResourceLoader}
191
+ * @private
192
+ */
193
+ this._loader = options.loader;
194
+ this._resource = options.resource;
195
+
196
+ /**
197
+ * Type of this model, to distinguish individual glTF files from 3D Tiles
198
+ * internally.
199
+ *
200
+ * @type {ModelType}
201
+ * @readonly
202
+ *
203
+ * @private
204
+ */
205
+ this.type = options.type ?? ModelType.GLTF;
206
+
207
+ /**
208
+ * The 4x4 transformation matrix that transforms the model from model to world coordinates.
209
+ * When this is the identity matrix, the model is drawn in world coordinates, i.e., Earth's Cartesian WGS84 coordinates.
210
+ * Local reference frames can be used by providing a different transformation matrix, like that returned
211
+ * by {@link Transforms.eastNorthUpToFixedFrame}.
212
+ *
213
+ * @type {Matrix4}
214
+
215
+ * @default {@link Matrix4.IDENTITY}
216
+ *
217
+ * @example
218
+ * const origin = Cesium.Cartesian3.fromDegrees(-95.0, 40.0, 200000.0);
219
+ * m.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(origin);
220
+ */
221
+ this.modelMatrix = Matrix4.clone(options.modelMatrix ?? Matrix4.IDENTITY);
222
+ this._modelMatrix = Matrix4.clone(this.modelMatrix);
223
+ this._scale = options.scale ?? 1.0;
224
+
225
+ this._minimumPixelSize = options.minimumPixelSize ?? 0.0;
226
+
227
+ this._maximumScale = options.maximumScale;
228
+
229
+ /**
230
+ * The scale value after being clamped by the maximum scale parameter.
231
+ * Used to adjust bounding spheres without repeated calculation.
232
+ *
233
+ * @type {number}
234
+ * @private
235
+ */
236
+ this._clampedScale = defined(this._maximumScale)
237
+ ? Math.min(this._scale, this._maximumScale)
238
+ : this._scale;
239
+
240
+ this._computedScale = this._clampedScale;
241
+
242
+ /**
243
+ * Whether or not the ModelSceneGraph should call updateModelMatrix.
244
+ * This will be true if any of the model matrix, scale, minimum pixel size, or maximum scale are dirty.
245
+ *
246
+ * @type {number}
247
+ * @private
248
+ */
249
+ this._updateModelMatrix = false;
250
+
251
+ /**
252
+ * If defined, this matrix is used to transform miscellaneous properties like
253
+ * clipping planes and image-based lighting instead of the modelMatrix. This is
254
+ * so that when models are part of a tileset, these properties get transformed
255
+ * relative to a common reference (such as the root).
256
+ *
257
+ * @type {Matrix4}
258
+ * @private
259
+ */
260
+ this.referenceMatrix = undefined;
261
+ this._iblReferenceFrameMatrix = Matrix3.clone(Matrix3.IDENTITY); // Derived from reference matrix and the current view matrix
262
+
263
+ this._resourcesLoaded = false;
264
+ this._drawCommandsBuilt = false;
265
+
266
+ this._ready = false;
267
+ this._customShader = options.customShader;
268
+ this._content = options.content;
269
+
270
+ this._texturesLoaded = false;
271
+ this._defaultTexture = undefined;
272
+
273
+ this._activeAnimations = new ModelAnimationCollection(this);
274
+ this._clampAnimations = options.clampAnimations ?? true;
275
+
276
+ // This flag is true when the Cesium API, not a glTF animation, changes
277
+ // the transform of a node in the model.
278
+ this._userAnimationDirty = false;
279
+
280
+ this._id = options.id;
281
+ this._idDirty = false;
282
+
283
+ this._color = Color.clone(options.color);
284
+ this._colorBlendMode = options.colorBlendMode ?? ColorBlendMode.HIGHLIGHT;
285
+ this._colorBlendAmount = options.colorBlendAmount ?? 0.5;
286
+
287
+ const silhouetteColor = options.silhouetteColor ?? Color.RED;
288
+ this._silhouetteColor = Color.clone(silhouetteColor);
289
+ this._silhouetteSize = options.silhouetteSize ?? 0.0;
290
+ this._silhouetteDirty = false;
291
+
292
+ // If silhouettes are used for the model, this will be set to the number
293
+ // of the stencil buffer used for rendering the silhouette. This is set
294
+ // by ModelSilhouettePipelineStage, not by Model itself.
295
+ this._silhouetteId = undefined;
296
+
297
+ this._cull = options.cull ?? true;
298
+ this._opaquePass = options.opaquePass ?? Pass.OPAQUE;
299
+ this._allowPicking = options.allowPicking ?? true;
300
+ this._show = options.show ?? true;
301
+
302
+ this._style = undefined;
303
+ this._styleDirty = false;
304
+ this._styleCommandsNeeded = undefined;
305
+
306
+ let featureIdLabel = options.featureIdLabel ?? "featureId_0";
307
+ if (typeof featureIdLabel === "number") {
308
+ featureIdLabel = `featureId_${featureIdLabel}`;
309
+ }
310
+ this._featureIdLabel = featureIdLabel;
311
+
312
+ let instanceFeatureIdLabel =
313
+ options.instanceFeatureIdLabel ?? "instanceFeatureId_0";
314
+ if (typeof instanceFeatureIdLabel === "number") {
315
+ instanceFeatureIdLabel = `instanceFeatureId_${instanceFeatureIdLabel}`;
316
+ }
317
+ this._instanceFeatureIdLabel = instanceFeatureIdLabel;
318
+
319
+ this._featureTables = [];
320
+ this._featureTableId = undefined;
321
+ this._featureTableIdDirty = true;
322
+
323
+ // Keeps track of resources that need to be destroyed when the draw commands are reset.
324
+ this._pipelineResources = [];
325
+
326
+ // Keeps track of resources that need to be destroyed when the Model is destroyed.
327
+ this._modelResources = [];
328
+
329
+ // Keeps track of the pick IDs for this model. These are stored and destroyed in the
330
+ // pipeline resources array; the purpose of this array is to separate them from other
331
+ // resources and update their ID objects when necessary.
332
+ this._pickIds = [];
333
+
334
+ // The model's bounding sphere and its initial radius are computed
335
+ // in ModelSceneGraph.
336
+ this._boundingSphere = new BoundingSphere();
337
+ this._initialRadius = undefined;
338
+
339
+ this._heightReference = options.heightReference ?? HeightReference.NONE;
340
+ this._heightDirty = this._heightReference !== HeightReference.NONE;
341
+ this._removeUpdateHeightCallback = undefined;
342
+
343
+ this._enableVerticalExaggeration = options.enableVerticalExaggeration ?? true;
344
+ this._hasVerticalExaggeration = false;
345
+
346
+ this._clampedModelMatrix = undefined; // For use with height reference
347
+
348
+ const scene = options.scene;
349
+ if (defined(scene) && defined(scene.terrainProviderChanged)) {
350
+ this._terrainProviderChangedCallback =
351
+ scene.terrainProviderChanged.addEventListener(() => {
352
+ this._heightDirty = true;
353
+ });
354
+ }
355
+ this._scene = scene;
356
+
357
+ this._distanceDisplayCondition = options.distanceDisplayCondition;
358
+
359
+ const pointCloudShading = new PointCloudShading(options.pointCloudShading);
360
+ this._pointCloudShading = pointCloudShading;
361
+ this._attenuation = pointCloudShading.attenuation;
362
+ this._pointCloudBackFaceCulling = pointCloudShading.backFaceCulling;
363
+
364
+ // If the given clipping planes don't have an owner, make this model its owner.
365
+ // Otherwise, the clipping planes are passed down from a tileset.
366
+ const clippingPlanes = options.clippingPlanes;
367
+ if (defined(clippingPlanes) && clippingPlanes.owner === undefined) {
368
+ ClippingPlaneCollection.setOwner(clippingPlanes, this, "_clippingPlanes");
369
+ } else {
370
+ this._clippingPlanes = clippingPlanes;
371
+ }
372
+ this._clippingPlanesState = 0; // If this value changes, the shaders need to be regenerated.
373
+ this._clippingPlanesMatrix = Matrix4.clone(Matrix4.IDENTITY); // Derived from reference matrix and the current view matrix
374
+
375
+ // If the given clipping polygons don't have an owner, make this model its owner.
376
+ // Otherwise, the clipping polygons are passed down from a tileset.
377
+ const clippingPolygons = options.clippingPolygons;
378
+ if (defined(clippingPolygons) && clippingPolygons.owner === undefined) {
379
+ ClippingPolygonCollection.setOwner(
380
+ clippingPolygons,
381
+ this,
382
+ "_clippingPolygons",
383
+ );
384
+ } else {
385
+ this._clippingPolygons = clippingPolygons;
386
+ }
387
+ this._clippingPolygonsState = 0; // If this value changes, the shaders need to be regenerated.
388
+
389
+ this._modelImagery = new ModelImagery(this);
390
+
391
+ this._lightColor = Cartesian3.clone(options.lightColor);
392
+
393
+ this._imageBasedLighting = defined(options.imageBasedLighting)
394
+ ? options.imageBasedLighting
395
+ : new ImageBasedLighting();
396
+ this._shouldDestroyImageBasedLighting = !defined(options.imageBasedLighting);
397
+
398
+ this._environmentMapManager = undefined;
399
+ const environmentMapManager = new DynamicEnvironmentMapManager(
400
+ options.environmentMapOptions,
401
+ );
402
+ DynamicEnvironmentMapManager.setOwner(
403
+ environmentMapManager,
404
+ this,
405
+ "_environmentMapManager",
406
+ );
407
+
408
+ this._backFaceCulling = options.backFaceCulling ?? true;
409
+ this._backFaceCullingDirty = false;
410
+
411
+ this._shadows = options.shadows ?? ShadowMode.ENABLED;
412
+ this._shadowsDirty = false;
413
+
414
+ this._debugShowBoundingVolumeDirty = false;
415
+ this._debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
416
+
417
+ this._enableDebugWireframe = options.enableDebugWireframe ?? false;
418
+ this._enableShowOutline = options.enableShowOutline ?? true;
419
+ this._debugWireframe = options.debugWireframe ?? false;
420
+
421
+ // Warning for improper setup of debug wireframe
422
+ if (
423
+ this._debugWireframe === true &&
424
+ this._enableDebugWireframe === false &&
425
+ this.type === ModelType.GLTF
426
+ ) {
427
+ oneTimeWarning(
428
+ "model-debug-wireframe-ignored",
429
+ "enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.",
430
+ );
431
+ }
432
+
433
+ // Credit specified by the user.
434
+ let credit = options.credit;
435
+ if (typeof credit === "string") {
436
+ credit = new Credit(credit);
437
+ }
438
+
439
+ this._credits = [];
440
+ this._credit = credit;
441
+
442
+ // Credits to be added from the Resource (if it is an IonResource)
443
+ this._resourceCredits = [];
444
+
445
+ // Credits parsed from the glTF by GltfLoader.
446
+ this._gltfCredits = [];
447
+
448
+ this._showCreditsOnScreen = options.showCreditsOnScreen ?? false;
449
+ this._showCreditsOnScreenDirty = true;
450
+
451
+ this._splitDirection = options.splitDirection ?? SplitDirection.NONE;
452
+
453
+ this._enableShowOutline = options.enableShowOutline ?? true;
454
+
455
+ /**
456
+ * Whether to display the outline for models using the
457
+ * {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension.
458
+ * When true, outlines are displayed. When false, outlines are not displayed.
459
+ *
460
+ * @type {boolean}
461
+ *
462
+ * @default true
463
+ */
464
+ this.showOutline = options.showOutline ?? true;
465
+
466
+ /**
467
+ * The color to use when rendering outlines.
468
+ *
469
+ * @type {Color}
470
+ *
471
+ * @default Color.BLACK
472
+ */
473
+ this.outlineColor = options.outlineColor ?? Color.BLACK;
474
+
475
+ this._classificationType = options.classificationType;
476
+
477
+ this._statistics = new ModelStatistics();
478
+
479
+ this._sceneMode = undefined;
480
+ this._projectTo2D = options.projectTo2D ?? false;
481
+ this._enablePick = options.enablePick ?? false;
482
+
483
+ this._fogRenderable = undefined;
484
+
485
+ this._skipLevelOfDetail = false;
486
+ this._ignoreCommands = options.ignoreCommands ?? false;
487
+
488
+ this._errorEvent = new Event();
489
+ this._readyEvent = new Event();
490
+ this._texturesReadyEvent = new Event();
491
+
492
+ this._sceneGraph = undefined;
493
+ this._nodesByName = {}; // Stores the nodes by their names in the glTF.
494
+
495
+ /**
496
+ * Used for picking primitives that wrap a model.
497
+ *
498
+ * @private
499
+ */
500
+ this.pickObject = options.pickObject;
501
+ }
502
+
503
+ function handleError(model, error) {
504
+ if (model._errorEvent.numberOfListeners > 0) {
505
+ model._errorEvent.raiseEvent(error);
506
+ return;
507
+ }
508
+
509
+ console.log(error);
510
+ }
511
+
512
+ function createModelFeatureTables(model, structuralMetadata) {
513
+ const featureTables = model._featureTables;
514
+
515
+ const propertyTables = structuralMetadata.propertyTables;
516
+ const length = propertyTables.length;
517
+ for (let i = 0; i < length; i++) {
518
+ const propertyTable = propertyTables[i];
519
+ const modelFeatureTable = new ModelFeatureTable({
520
+ model: model,
521
+ propertyTable: propertyTable,
522
+ });
523
+
524
+ featureTables.push(modelFeatureTable);
525
+ }
526
+
527
+ return featureTables;
528
+ }
529
+
530
+ function selectFeatureTableId(components, model) {
531
+ const featureIdLabel = model._featureIdLabel;
532
+ const instanceFeatureIdLabel = model._instanceFeatureIdLabel;
533
+
534
+ let i, j;
535
+ let featureIdAttribute;
536
+
537
+ let node;
538
+ // Scan the nodes till we find one with instances, get the feature table ID
539
+ // if the feature ID attribute of the user-selected index is present.
540
+ for (i = 0; i < components.nodes.length; i++) {
541
+ node = components.nodes[i];
542
+ if (defined(node.instances)) {
543
+ featureIdAttribute = ModelUtility.getFeatureIdsByLabel(
544
+ node.instances.featureIds,
545
+ instanceFeatureIdLabel,
546
+ );
547
+ if (
548
+ defined(featureIdAttribute) &&
549
+ defined(featureIdAttribute.propertyTableId)
550
+ ) {
551
+ return featureIdAttribute.propertyTableId;
552
+ }
553
+ }
554
+ }
555
+
556
+ // Scan the primitives till we find one with textures or attributes, get the feature table ID
557
+ // if the feature ID attribute/texture of the user-selected index is present.
558
+ for (i = 0; i < components.nodes.length; i++) {
559
+ node = components.nodes[i];
560
+ for (j = 0; j < node.primitives.length; j++) {
561
+ const primitive = node.primitives[j];
562
+ const featureIds = ModelUtility.getFeatureIdsByLabel(
563
+ primitive.featureIds,
564
+ featureIdLabel,
565
+ );
566
+
567
+ if (defined(featureIds)) {
568
+ return featureIds.propertyTableId;
569
+ }
570
+ }
571
+ }
572
+
573
+ // If there's only one feature table, then select it by default. This is
574
+ // to ensure backwards compatibility with the older handling of b3dm models.
575
+ if (model._featureTables.length === 1) {
576
+ return 0;
577
+ }
578
+ }
579
+
580
+ /**
581
+ * Returns whether the alpha state has changed between invisible,
582
+ * translucent, or opaque.
583
+ *
584
+ * @private
585
+ */
586
+ function isColorAlphaDirty(currentColor, previousColor) {
587
+ if (!defined(currentColor) && !defined(previousColor)) {
588
+ return false;
589
+ }
590
+
591
+ if (defined(currentColor) !== defined(previousColor)) {
592
+ return true;
593
+ }
594
+
595
+ const currentAlpha = currentColor.alpha;
596
+ const previousAlpha = previousColor.alpha;
597
+ return (
598
+ Math.floor(currentAlpha) !== Math.floor(previousAlpha) ||
599
+ Math.ceil(currentAlpha) !== Math.ceil(previousAlpha)
600
+ );
601
+ }
602
+
603
+ Object.defineProperties(Model.prototype, {
604
+ /**
605
+ * When <code>true</code>, this model is ready to render, i.e., the external binary, image,
606
+ * and shader files were downloaded and the WebGL resources were created.
607
+ *
608
+ * @memberof Model.prototype
609
+ *
610
+ * @type {boolean}
611
+ * @readonly
612
+ *
613
+ * @default false
614
+ */
615
+ ready: {
616
+ get: function () {
617
+ return this._ready;
618
+ },
619
+ },
620
+
621
+ /**
622
+ * Gets an event that is raised when the model encounters an asynchronous rendering error. By subscribing
623
+ * to the event, you will be notified of the error and can potentially recover from it. Event listeners
624
+ * are passed an instance of {@link ModelError}.
625
+ * @memberof Model.prototype
626
+ * @type {Event}
627
+ * @readonly
628
+ */
629
+ errorEvent: {
630
+ get: function () {
631
+ return this._errorEvent;
632
+ },
633
+ },
634
+
635
+ /**
636
+ * Gets an event that is raised when the model is loaded and ready for rendering, i.e. when the external resources
637
+ * have been downloaded and the WebGL resources are created. Event listeners
638
+ * are passed an instance of the {@link Model}.
639
+ *
640
+ * <p>
641
+ * If {@link Model.incrementallyLoadTextures} is true, this event will be raised before all textures are loaded and ready for rendering. Subscribe to {@link Model.texturesReadyEvent} to be notified when the textures are ready.
642
+ * </p>
643
+ *
644
+ * @memberof Model.prototype
645
+ * @type {Event}
646
+ * @readonly
647
+ */
648
+ readyEvent: {
649
+ get: function () {
650
+ return this._readyEvent;
651
+ },
652
+ },
653
+
654
+ /**
655
+ * Returns true if textures are loaded separately from the other glTF resources.
656
+ *
657
+ * @memberof Model.prototype
658
+ *
659
+ * @type {boolean}
660
+ * @readonly
661
+ * @private
662
+ */
663
+ incrementallyLoadTextures: {
664
+ get: function () {
665
+ return this._loader.incrementallyLoadTextures ?? false;
666
+ },
667
+ },
668
+
669
+ /**
670
+ * Gets an event that, if {@link Model.incrementallyLoadTextures} is true, is raised when the model textures are loaded and ready for rendering, i.e. when the external resources
671
+ * have been downloaded and the WebGL resources are created. Event listeners
672
+ * are passed an instance of the {@link Model}.
673
+ *
674
+ * @memberof Model.prototype
675
+ * @type {Event}
676
+ * @readonly
677
+ */
678
+ texturesReadyEvent: {
679
+ get: function () {
680
+ return this._texturesReadyEvent;
681
+ },
682
+ },
683
+
684
+ /**
685
+ * @private
686
+ */
687
+ loader: {
688
+ get: function () {
689
+ return this._loader;
690
+ },
691
+ },
692
+
693
+ /**
694
+ * Get the estimated memory usage statistics for this model.
695
+ *
696
+ * @memberof Model.prototype
697
+ *
698
+ * @type {ModelStatistics}
699
+ * @readonly
700
+ *
701
+ * @private
702
+ */
703
+ statistics: {
704
+ get: function () {
705
+ return this._statistics;
706
+ },
707
+ },
708
+
709
+ /**
710
+ * The currently playing glTF animations.
711
+ *
712
+ * @memberof Model.prototype
713
+ *
714
+ * @type {ModelAnimationCollection}
715
+ * @readonly
716
+ */
717
+ activeAnimations: {
718
+ get: function () {
719
+ return this._activeAnimations;
720
+ },
721
+ },
722
+
723
+ /**
724
+ * Determines if the model's animations should hold a pose over frames where no keyframes are specified.
725
+ *
726
+ * @memberof Model.prototype
727
+ * @type {boolean}
728
+ *
729
+ * @default true
730
+ */
731
+ clampAnimations: {
732
+ get: function () {
733
+ return this._clampAnimations;
734
+ },
735
+ set: function (value) {
736
+ this._clampAnimations = value;
737
+ },
738
+ },
739
+
740
+ /**
741
+ * Whether or not to cull the model using frustum/horizon culling. If the model is part of a 3D Tiles tileset, this property
742
+ * will always be false, since the 3D Tiles culling system is used.
743
+ *
744
+ * @memberof Model.prototype
745
+ *
746
+ * @type {boolean}
747
+ * @readonly
748
+ *
749
+ * @private
750
+ */
751
+ cull: {
752
+ get: function () {
753
+ return this._cull;
754
+ },
755
+ },
756
+
757
+ /**
758
+ * The pass to use in the {@link DrawCommand} for the opaque portions of the model.
759
+ *
760
+ * @memberof Model.prototype
761
+ *
762
+ * @type {Pass}
763
+ * @readonly
764
+ *
765
+ * @private
766
+ */
767
+ opaquePass: {
768
+ get: function () {
769
+ return this._opaquePass;
770
+ },
771
+ },
772
+
773
+ /**
774
+ * Point cloud shading settings for controlling point cloud attenuation
775
+ * and lighting. For 3D Tiles, this is inherited from the
776
+ * {@link Cesium3DTileset}.
777
+ *
778
+ * @memberof Model.prototype
779
+ *
780
+ * @type {PointCloudShading}
781
+ */
782
+ pointCloudShading: {
783
+ get: function () {
784
+ return this._pointCloudShading;
785
+ },
786
+ set: function (value) {
787
+ //>>includeStart('debug', pragmas.debug);
788
+ Check.defined("pointCloudShading", value);
789
+ //>>includeEnd('debug');
790
+ if (value !== this._pointCloudShading) {
791
+ this.resetDrawCommands();
792
+ }
793
+ this._pointCloudShading = value;
794
+ },
795
+ },
796
+
797
+ /**
798
+ * The model's custom shader, if it exists. Using custom shaders with a {@link Cesium3DTileStyle}
799
+ * may lead to undefined behavior.
800
+ *
801
+ * @memberof Model.prototype
802
+ *
803
+ * @type {CustomShader}
804
+ * @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.
805
+ */
806
+ customShader: {
807
+ get: function () {
808
+ return this._customShader;
809
+ },
810
+ set: function (value) {
811
+ if (value !== this._customShader) {
812
+ this.resetDrawCommands();
813
+ }
814
+ this._customShader = value;
815
+ },
816
+ },
817
+
818
+ /**
819
+ * The scene graph of this model.
820
+ *
821
+ * @memberof Model.prototype
822
+ *
823
+ * @type {ModelSceneGraph}
824
+ * @private
825
+ */
826
+ sceneGraph: {
827
+ get: function () {
828
+ return this._sceneGraph;
829
+ },
830
+ },
831
+
832
+ /**
833
+ * The tile content this model belongs to, if it is loaded as part of a {@link Cesium3DTileset}.
834
+ *
835
+ * @memberof Model.prototype
836
+ *
837
+ * @type {Cesium3DTileContent}
838
+ * @readonly
839
+ *
840
+ * @private
841
+ */
842
+ content: {
843
+ get: function () {
844
+ return this._content;
845
+ },
846
+ },
847
+
848
+ /**
849
+ * The height reference of the model, which determines how the model is drawn
850
+ * relative to terrain.
851
+ *
852
+ * @memberof Model.prototype
853
+ *
854
+ * @type {HeightReference}
855
+ * @default {HeightReference.NONE}
856
+ *
857
+ */
858
+ heightReference: {
859
+ get: function () {
860
+ return this._heightReference;
861
+ },
862
+ set: function (value) {
863
+ if (value !== this._heightReference) {
864
+ this._heightDirty = true;
865
+ }
866
+ this._heightReference = value;
867
+ },
868
+ },
869
+
870
+ /**
871
+ * Gets or sets the distance display condition, which specifies at what distance
872
+ * from the camera this model will be displayed.
873
+ *
874
+ * @memberof Model.prototype
875
+ *
876
+ * @type {DistanceDisplayCondition}
877
+ *
878
+ * @default undefined
879
+ *
880
+ */
881
+ distanceDisplayCondition: {
882
+ get: function () {
883
+ return this._distanceDisplayCondition;
884
+ },
885
+ set: function (value) {
886
+ //>>includeStart('debug', pragmas.debug);
887
+ if (defined(value) && value.far <= value.near) {
888
+ throw new DeveloperError("far must be greater than near");
889
+ }
890
+ //>>includeEnd('debug');
891
+ this._distanceDisplayCondition = DistanceDisplayCondition.clone(
892
+ value,
893
+ this._distanceDisplayCondition,
894
+ );
895
+ },
896
+ },
897
+
898
+ /**
899
+ * The structural metadata from the EXT_structural_metadata extension
900
+ *
901
+ * @memberof Model.prototype
902
+ *
903
+ * @type {StructuralMetadata}
904
+ * @readonly
905
+ *
906
+ * @private
907
+ */
908
+ structuralMetadata: {
909
+ get: function () {
910
+ return this._sceneGraph.components.structuralMetadata;
911
+ },
912
+ },
913
+
914
+ /**
915
+ * The ID for the feature table to use for picking and styling in this model.
916
+ *
917
+ * @memberof Model.prototype
918
+ *
919
+ * @type {number}
920
+ *
921
+ * @private
922
+ */
923
+ featureTableId: {
924
+ get: function () {
925
+ return this._featureTableId;
926
+ },
927
+ set: function (value) {
928
+ this._featureTableId = value;
929
+ },
930
+ },
931
+
932
+ /**
933
+ * The feature tables for this model.
934
+ *
935
+ * @memberof Model.prototype
936
+ *
937
+ * @type {Array}
938
+ * @readonly
939
+ *
940
+ * @private
941
+ */
942
+ featureTables: {
943
+ get: function () {
944
+ return this._featureTables;
945
+ },
946
+ set: function (value) {
947
+ this._featureTables = value;
948
+ },
949
+ },
950
+
951
+ /**
952
+ * A user-defined object that is returned when the model is picked.
953
+ *
954
+ * @memberof Model.prototype
955
+ *
956
+ * @type {object}
957
+ *
958
+ * @default undefined
959
+ *
960
+ * @see Scene#pick
961
+ */
962
+ id: {
963
+ get: function () {
964
+ return this._id;
965
+ },
966
+ set: function (value) {
967
+ if (value !== this._id) {
968
+ this._idDirty = true;
969
+ }
970
+
971
+ this._id = value;
972
+ },
973
+ },
974
+
975
+ /**
976
+ * When <code>true</code>, each primitive is pickable with {@link Scene#pick}. When <code>false</code>, GPU memory is saved.
977
+ *
978
+ * @memberof Model.prototype
979
+ *
980
+ * @type {boolean}
981
+ * @readonly
982
+ *
983
+ * @private
984
+ */
985
+ allowPicking: {
986
+ get: function () {
987
+ return this._allowPicking;
988
+ },
989
+ },
990
+
991
+ /**
992
+ * The style to apply to the features in the model. Cannot be applied if a {@link CustomShader} is also applied.
993
+ *
994
+ * @memberof Model.prototype
995
+ *
996
+ * @type {Cesium3DTileStyle}
997
+ */
998
+ style: {
999
+ get: function () {
1000
+ return this._style;
1001
+ },
1002
+ set: function (value) {
1003
+ this._style = value;
1004
+ this._styleDirty = true;
1005
+ },
1006
+ },
1007
+
1008
+ /**
1009
+ * The color to blend with the model's rendered color.
1010
+ *
1011
+ * @memberof Model.prototype
1012
+ *
1013
+ * @type {Color}
1014
+ *
1015
+ * @default undefined
1016
+ */
1017
+ color: {
1018
+ get: function () {
1019
+ return this._color;
1020
+ },
1021
+ set: function (value) {
1022
+ if (isColorAlphaDirty(value, this._color)) {
1023
+ this.resetDrawCommands();
1024
+ }
1025
+ this._color = Color.clone(value, this._color);
1026
+ },
1027
+ },
1028
+
1029
+ /**
1030
+ * Defines how the color blends with the model.
1031
+ *
1032
+ * @memberof Model.prototype
1033
+ *
1034
+ * @type {Cesium3DTileColorBlendMode|ColorBlendMode}
1035
+ *
1036
+ * @default ColorBlendMode.HIGHLIGHT
1037
+ */
1038
+ colorBlendMode: {
1039
+ get: function () {
1040
+ return this._colorBlendMode;
1041
+ },
1042
+ set: function (value) {
1043
+ this._colorBlendMode = value;
1044
+ },
1045
+ },
1046
+
1047
+ /**
1048
+ * Value used to determine the color strength when the <code>colorBlendMode</code> is <code>MIX</code>. A value of 0.0 results in the model's rendered color while a value of 1.0 results in a solid color, with any value in-between resulting in a mix of the two.
1049
+ *
1050
+ * @memberof Model.prototype
1051
+ *
1052
+ * @type {number}
1053
+ *
1054
+ * @default 0.5
1055
+ */
1056
+ colorBlendAmount: {
1057
+ get: function () {
1058
+ return this._colorBlendAmount;
1059
+ },
1060
+ set: function (value) {
1061
+ this._colorBlendAmount = value;
1062
+ },
1063
+ },
1064
+
1065
+ /**
1066
+ * The silhouette color.
1067
+ *
1068
+ * @memberof Model.prototype
1069
+ *
1070
+ * @type {Color}
1071
+ *
1072
+ * @default Color.RED
1073
+ */
1074
+ silhouetteColor: {
1075
+ get: function () {
1076
+ return this._silhouetteColor;
1077
+ },
1078
+ set: function (value) {
1079
+ if (!Color.equals(value, this._silhouetteColor)) {
1080
+ const alphaDirty = isColorAlphaDirty(value, this._silhouetteColor);
1081
+ this._silhouetteDirty = this._silhouetteDirty || alphaDirty;
1082
+ }
1083
+
1084
+ this._silhouetteColor = Color.clone(value, this._silhouetteColor);
1085
+ },
1086
+ },
1087
+
1088
+ /**
1089
+ * The size of the silhouette in pixels.
1090
+ *
1091
+ * @memberof Model.prototype
1092
+ *
1093
+ * @type {number}
1094
+ *
1095
+ * @default 0.0
1096
+ */
1097
+ silhouetteSize: {
1098
+ get: function () {
1099
+ return this._silhouetteSize;
1100
+ },
1101
+ set: function (value) {
1102
+ if (value !== this._silhouetteSize) {
1103
+ const currentSize = this._silhouetteSize;
1104
+ const sizeDirty =
1105
+ (value > 0.0 && currentSize === 0.0) ||
1106
+ (value === 0.0 && currentSize > 0.0);
1107
+ this._silhouetteDirty = this._silhouetteDirty || sizeDirty;
1108
+
1109
+ // Back-face culling needs to be updated in case the silhouette size
1110
+ // is greater than zero.
1111
+ this._backFaceCullingDirty = this._backFaceCullingDirty || sizeDirty;
1112
+ }
1113
+
1114
+ this._silhouetteSize = value;
1115
+ },
1116
+ },
1117
+
1118
+ /**
1119
+ * Gets the model's bounding sphere in world space. This does not take into account
1120
+ * glTF animations, skins, or morph targets. It also does not account for
1121
+ * {@link Model#minimumPixelSize}.
1122
+ *
1123
+ * @memberof Model.prototype
1124
+ *
1125
+ * @type {BoundingSphere}
1126
+ * @readonly
1127
+ */
1128
+ boundingSphere: {
1129
+ get: function () {
1130
+ //>>includeStart('debug', pragmas.debug);
1131
+ if (!this._ready) {
1132
+ throw new DeveloperError(
1133
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1134
+ );
1135
+ }
1136
+ //>>includeEnd('debug');
1137
+
1138
+ const modelMatrix = defined(this._clampedModelMatrix)
1139
+ ? this._clampedModelMatrix
1140
+ : this.modelMatrix;
1141
+ updateBoundingSphere(this, modelMatrix);
1142
+
1143
+ return this._boundingSphere;
1144
+ },
1145
+ },
1146
+
1147
+ /**
1148
+ * This property is for debugging only; it is not for production use nor is it optimized.
1149
+ * <p>
1150
+ * Draws the bounding sphere for each draw command in the model.
1151
+ * </p>
1152
+ *
1153
+ * @memberof Model.prototype
1154
+ *
1155
+ * @type {boolean}
1156
+ *
1157
+ * @default false
1158
+ */
1159
+ debugShowBoundingVolume: {
1160
+ get: function () {
1161
+ return this._debugShowBoundingVolume;
1162
+ },
1163
+ set: function (value) {
1164
+ if (this._debugShowBoundingVolume !== value) {
1165
+ this._debugShowBoundingVolumeDirty = true;
1166
+ }
1167
+ this._debugShowBoundingVolume = value;
1168
+ },
1169
+ },
1170
+
1171
+ /**
1172
+ * This property is for debugging only; it is not for production use nor is it optimized.
1173
+ * <p>
1174
+ * Draws the model in wireframe.
1175
+ * </p>
1176
+ *
1177
+ * @memberof Model.prototype
1178
+ *
1179
+ * @type {boolean}
1180
+ *
1181
+ * @default false
1182
+ */
1183
+ debugWireframe: {
1184
+ get: function () {
1185
+ return this._debugWireframe;
1186
+ },
1187
+ set: function (value) {
1188
+ if (this._debugWireframe !== value) {
1189
+ this.resetDrawCommands();
1190
+ }
1191
+ this._debugWireframe = value;
1192
+
1193
+ // Warning for improper setup of debug wireframe
1194
+ if (
1195
+ this._debugWireframe === true &&
1196
+ this._enableDebugWireframe === false &&
1197
+ this.type === ModelType.GLTF
1198
+ ) {
1199
+ oneTimeWarning(
1200
+ "model-debug-wireframe-ignored",
1201
+ "enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.",
1202
+ );
1203
+ }
1204
+ },
1205
+ },
1206
+
1207
+ /**
1208
+ * Whether or not to render the model.
1209
+ *
1210
+ * @memberof Model.prototype
1211
+ *
1212
+ * @type {boolean}
1213
+ *
1214
+ * @default true
1215
+ */
1216
+ show: {
1217
+ get: function () {
1218
+ return this._show;
1219
+ },
1220
+ set: function (value) {
1221
+ this._show = value;
1222
+ },
1223
+ },
1224
+
1225
+ /**
1226
+ * Label of the feature ID set to use for picking and styling.
1227
+ * <p>
1228
+ * For EXT_mesh_features, this is the feature ID's label property, or
1229
+ * "featureId_N" (where N is the index in the featureIds array) when not
1230
+ * specified. EXT_feature_metadata did not have a label field, so such
1231
+ * feature ID sets are always labeled "featureId_N" where N is the index in
1232
+ * the list of all feature Ids, where feature ID attributes are listed before
1233
+ * feature ID textures.
1234
+ * </p>
1235
+ * <p>
1236
+ * If featureIdLabel is set to an integer N, it is converted to
1237
+ * the string "featureId_N" automatically. If both per-primitive and
1238
+ * per-instance feature IDs are present, the instance feature IDs take
1239
+ * priority.
1240
+ * </p>
1241
+ *
1242
+ * @memberof Model.prototype
1243
+ *
1244
+ * @type {string}
1245
+ * @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.
1246
+ */
1247
+ featureIdLabel: {
1248
+ get: function () {
1249
+ return this._featureIdLabel;
1250
+ },
1251
+ set: function (value) {
1252
+ // indices get converted into featureId_N
1253
+ if (typeof value === "number") {
1254
+ value = `featureId_${value}`;
1255
+ }
1256
+
1257
+ //>>includeStart('debug', pragmas.debug);
1258
+ Check.typeOf.string("value", value);
1259
+ //>>includeEnd('debug');
1260
+
1261
+ if (value !== this._featureIdLabel) {
1262
+ this._featureTableIdDirty = true;
1263
+ }
1264
+
1265
+ this._featureIdLabel = value;
1266
+ },
1267
+ },
1268
+
1269
+ /**
1270
+ * Label of the instance feature ID set used for picking and styling.
1271
+ * <p>
1272
+ * If instanceFeatureIdLabel is set to an integer N, it is converted to
1273
+ * the string "instanceFeatureId_N" automatically.
1274
+ * If both per-primitive and per-instance feature IDs are present, the
1275
+ * instance feature IDs take priority.
1276
+ * </p>
1277
+ *
1278
+ * @memberof Model.prototype
1279
+ *
1280
+ * @type {string}
1281
+ * @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.
1282
+ */
1283
+ instanceFeatureIdLabel: {
1284
+ get: function () {
1285
+ return this._instanceFeatureIdLabel;
1286
+ },
1287
+ set: function (value) {
1288
+ // indices get converted into instanceFeatureId_N
1289
+ if (typeof value === "number") {
1290
+ value = `instanceFeatureId_${value}`;
1291
+ }
1292
+
1293
+ //>>includeStart('debug', pragmas.debug);
1294
+ Check.typeOf.string("value", value);
1295
+ //>>includeEnd('debug');
1296
+
1297
+ if (value !== this._instanceFeatureIdLabel) {
1298
+ this._featureTableIdDirty = true;
1299
+ }
1300
+
1301
+ this._instanceFeatureIdLabel = value;
1302
+ },
1303
+ },
1304
+
1305
+ /**
1306
+ * The {@link ClippingPlaneCollection} used to selectively disable rendering the model.
1307
+ *
1308
+ * @memberof Model.prototype
1309
+ *
1310
+ * @type {ClippingPlaneCollection}
1311
+ */
1312
+ clippingPlanes: {
1313
+ get: function () {
1314
+ return this._clippingPlanes;
1315
+ },
1316
+ set: function (value) {
1317
+ if (value !== this._clippingPlanes) {
1318
+ // Handle destroying old clipping planes, new clipping planes ownership
1319
+ ClippingPlaneCollection.setOwner(value, this, "_clippingPlanes");
1320
+ this.resetDrawCommands();
1321
+ }
1322
+ },
1323
+ },
1324
+
1325
+ /**
1326
+ * The {@link ClippingPolygonCollection} used to selectively disable rendering the model.
1327
+ *
1328
+ * @memberof Model.prototype
1329
+ *
1330
+ * @type {ClippingPolygonCollection}
1331
+ */
1332
+ clippingPolygons: {
1333
+ get: function () {
1334
+ return this._clippingPolygons;
1335
+ },
1336
+ set: function (value) {
1337
+ if (value !== this._clippingPolygons) {
1338
+ // Handle destroying old clipping polygons, new clipping polygons ownership
1339
+ ClippingPolygonCollection.setOwner(value, this, "_clippingPolygons");
1340
+ this.resetDrawCommands();
1341
+ }
1342
+ },
1343
+ },
1344
+
1345
+ /**
1346
+ * If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
1347
+ *
1348
+ * @memberof Model.prototype
1349
+ * @type {boolean}
1350
+ * @default true
1351
+ *
1352
+ * @example
1353
+ * // Exaggerate terrain by a factor of 2, but prevent model exaggeration
1354
+ * scene.verticalExaggeration = 2.0;
1355
+ * model.enableVerticalExaggeration = false;
1356
+ */
1357
+ enableVerticalExaggeration: {
1358
+ get: function () {
1359
+ return this._enableVerticalExaggeration;
1360
+ },
1361
+ set: function (value) {
1362
+ if (value !== this._enableVerticalExaggeration) {
1363
+ this.resetDrawCommands();
1364
+ }
1365
+ this._enableVerticalExaggeration = value;
1366
+ },
1367
+ },
1368
+
1369
+ /**
1370
+ * If <code>true</code>, the model is vertically exaggerated along the ellipsoid normal.
1371
+ *
1372
+ * @memberof Model.prototype
1373
+ * @type {boolean}
1374
+ * @default true
1375
+ * @readonly
1376
+ * @private
1377
+ */
1378
+ hasVerticalExaggeration: {
1379
+ get: function () {
1380
+ return this._hasVerticalExaggeration;
1381
+ },
1382
+ },
1383
+
1384
+ /**
1385
+ * If this model is part of a <code>Model3DTileContent</code> of a tileset,
1386
+ * then this will return the <code>ImageryLayerCollection</code>
1387
+ * of that tileset. Otherwise, <code>undefined</code> is returned.
1388
+ *
1389
+ * @memberof Model.prototype
1390
+ * @type {ImageryLayerCollection|undefined}
1391
+ * @readonly
1392
+ * @private
1393
+ */
1394
+ imageryLayers: {
1395
+ get: function () {
1396
+ if (defined(this._content)) {
1397
+ const tileset = this._content.tileset;
1398
+ if (defined(tileset)) {
1399
+ return tileset.imageryLayers;
1400
+ }
1401
+ }
1402
+ return undefined;
1403
+ },
1404
+ },
1405
+
1406
+ /**
1407
+ * The directional light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
1408
+ * <p>
1409
+ * Disabling additional light sources by setting
1410
+ * <code>model.imageBasedLighting.imageBasedLightingFactor = new Cartesian2(0.0, 0.0)</code>
1411
+ * will make the model much darker. Here, increasing the intensity of the light source will make the model brighter.
1412
+ * </p>
1413
+ * @memberof Model.prototype
1414
+ *
1415
+ * @type {Cartesian3}
1416
+ *
1417
+ * @default undefined
1418
+ */
1419
+ lightColor: {
1420
+ get: function () {
1421
+ return this._lightColor;
1422
+ },
1423
+ set: function (value) {
1424
+ if (defined(value) !== defined(this._lightColor)) {
1425
+ this.resetDrawCommands();
1426
+ }
1427
+
1428
+ this._lightColor = Cartesian3.clone(value, this._lightColor);
1429
+ },
1430
+ },
1431
+
1432
+ /**
1433
+ * The properties for managing image-based lighting on this model.
1434
+ *
1435
+ * @memberof Model.prototype
1436
+ *
1437
+ * @type {ImageBasedLighting}
1438
+ */
1439
+ imageBasedLighting: {
1440
+ get: function () {
1441
+ return this._imageBasedLighting;
1442
+ },
1443
+ set: function (value) {
1444
+ //>>includeStart('debug', pragmas.debug);
1445
+ Check.typeOf.object("imageBasedLighting", value);
1446
+ //>>includeEnd('debug');
1447
+
1448
+ if (value !== this._imageBasedLighting) {
1449
+ if (
1450
+ this._shouldDestroyImageBasedLighting &&
1451
+ !this._imageBasedLighting.isDestroyed()
1452
+ ) {
1453
+ this._imageBasedLighting.destroy();
1454
+ }
1455
+ this._imageBasedLighting = value;
1456
+ this._shouldDestroyImageBasedLighting = false;
1457
+ this.resetDrawCommands();
1458
+ }
1459
+ },
1460
+ },
1461
+
1462
+ /**
1463
+ * The properties for managing dynamic environment maps on this model. Affects lighting.
1464
+ * @memberof Model.prototype
1465
+ * @readonly
1466
+ *
1467
+ * @example
1468
+ * // Change the ground color used for a model's environment map to a forest green
1469
+ * const environmentMapManager = model.environmentMapManager;
1470
+ * environmentMapManager.groundColor = Cesium.Color.fromCssColorString("#203b34");
1471
+ *
1472
+ * @type {DynamicEnvironmentMapManager}
1473
+ */
1474
+ environmentMapManager: {
1475
+ get: function () {
1476
+ return this._environmentMapManager;
1477
+ },
1478
+ set: function (value) {
1479
+ //>>includeStart('debug', pragmas.debug);
1480
+ Check.typeOf.object("environmentMapManager", value);
1481
+ //>>includeEnd('debug');
1482
+
1483
+ if (value !== this.environmentMapManager) {
1484
+ DynamicEnvironmentMapManager.setOwner(
1485
+ value,
1486
+ this,
1487
+ "_environmentMapManager",
1488
+ );
1489
+ this.resetDrawCommands();
1490
+ }
1491
+ },
1492
+ },
1493
+
1494
+ /**
1495
+ * Whether to cull back-facing geometry. When true, back face culling is
1496
+ * determined by the material's doubleSided property; when false, back face
1497
+ * culling is disabled. Back faces are not culled if {@link Model#color}
1498
+ * is translucent or {@link Model#silhouetteSize} is greater than 0.0.
1499
+ *
1500
+ * @memberof Model.prototype
1501
+ *
1502
+ * @type {boolean}
1503
+ *
1504
+ * @default true
1505
+ */
1506
+ backFaceCulling: {
1507
+ get: function () {
1508
+ return this._backFaceCulling;
1509
+ },
1510
+ set: function (value) {
1511
+ if (value !== this._backFaceCulling) {
1512
+ this._backFaceCullingDirty = true;
1513
+ }
1514
+
1515
+ this._backFaceCulling = value;
1516
+ },
1517
+ },
1518
+
1519
+ /**
1520
+ * A uniform scale applied to this model before the {@link Model#modelMatrix}.
1521
+ * Values greater than <code>1.0</code> increase the size of the model; values
1522
+ * less than <code>1.0</code> decrease.
1523
+ *
1524
+ * @memberof Model.prototype
1525
+ *
1526
+ * @type {number}
1527
+ *
1528
+ * @default 1.0
1529
+ */
1530
+ scale: {
1531
+ get: function () {
1532
+ return this._scale;
1533
+ },
1534
+ set: function (value) {
1535
+ if (value !== this._scale) {
1536
+ this._updateModelMatrix = true;
1537
+ }
1538
+ this._scale = value;
1539
+ },
1540
+ },
1541
+
1542
+ /**
1543
+ * The true scale of the model after being affected by the model's scale,
1544
+ * minimum pixel size, and maximum scale parameters.
1545
+ *
1546
+ * @memberof Model.prototype
1547
+ *
1548
+ * @type {number}
1549
+ * @readonly
1550
+ *
1551
+ * @private
1552
+ */
1553
+ computedScale: {
1554
+ get: function () {
1555
+ return this._computedScale;
1556
+ },
1557
+ },
1558
+
1559
+ /**
1560
+ * The approximate minimum pixel size of the model regardless of zoom.
1561
+ * This can be used to ensure that a model is visible even when the viewer
1562
+ * zooms out. When <code>0.0</code>, no minimum size is enforced.
1563
+ *
1564
+ * @memberof Model.prototype
1565
+ *
1566
+ * @type {number}
1567
+ *
1568
+ * @default 0.0
1569
+ */
1570
+ minimumPixelSize: {
1571
+ get: function () {
1572
+ return this._minimumPixelSize;
1573
+ },
1574
+ set: function (value) {
1575
+ if (value !== this._minimumPixelSize) {
1576
+ this._updateModelMatrix = true;
1577
+ }
1578
+ this._minimumPixelSize = value;
1579
+ },
1580
+ },
1581
+
1582
+ /**
1583
+ * The maximum scale size for a model. This can be used to give
1584
+ * an upper limit to the {@link Model#minimumPixelSize}, ensuring that the model
1585
+ * is never an unreasonable scale.
1586
+ *
1587
+ * @memberof Model.prototype
1588
+ *
1589
+ * @type {number}
1590
+ */
1591
+ maximumScale: {
1592
+ get: function () {
1593
+ return this._maximumScale;
1594
+ },
1595
+ set: function (value) {
1596
+ if (value !== this._maximumScale) {
1597
+ this._updateModelMatrix = true;
1598
+ }
1599
+ this._maximumScale = value;
1600
+ },
1601
+ },
1602
+
1603
+ /**
1604
+ * Determines whether the model casts or receives shadows from light sources.
1605
+
1606
+ * @memberof Model.prototype
1607
+ *
1608
+ * @type {ShadowMode}
1609
+ *
1610
+ * @default ShadowMode.ENABLED
1611
+ */
1612
+ shadows: {
1613
+ get: function () {
1614
+ return this._shadows;
1615
+ },
1616
+ set: function (value) {
1617
+ if (value !== this._shadows) {
1618
+ this._shadowsDirty = true;
1619
+ }
1620
+
1621
+ this._shadows = value;
1622
+ },
1623
+ },
1624
+
1625
+ /**
1626
+ * Gets the credit that will be displayed for the model.
1627
+ *
1628
+ * @memberof Model.prototype
1629
+ *
1630
+ * @type {Credit}
1631
+ * @readonly
1632
+ */
1633
+ credit: {
1634
+ get: function () {
1635
+ return this._credit;
1636
+ },
1637
+ },
1638
+
1639
+ /**
1640
+ * Gets or sets whether the credits of the model will be displayed
1641
+ * on the screen.
1642
+ *
1643
+ * @memberof Model.prototype
1644
+ *
1645
+ * @type {boolean}
1646
+ *
1647
+ * @default false
1648
+ */
1649
+ showCreditsOnScreen: {
1650
+ get: function () {
1651
+ return this._showCreditsOnScreen;
1652
+ },
1653
+ set: function (value) {
1654
+ if (this._showCreditsOnScreen !== value) {
1655
+ this._showCreditsOnScreenDirty = true;
1656
+ }
1657
+
1658
+ this._showCreditsOnScreen = value;
1659
+ },
1660
+ },
1661
+
1662
+ /**
1663
+ * The {@link SplitDirection} to apply to this model.
1664
+ *
1665
+ * @memberof Model.prototype
1666
+ *
1667
+ * @type {SplitDirection}
1668
+ *
1669
+ * @default {@link SplitDirection.NONE}
1670
+ */
1671
+ splitDirection: {
1672
+ get: function () {
1673
+ return this._splitDirection;
1674
+ },
1675
+ set: function (value) {
1676
+ if (this._splitDirection !== value) {
1677
+ this.resetDrawCommands();
1678
+ }
1679
+ this._splitDirection = value;
1680
+ },
1681
+ },
1682
+
1683
+ /**
1684
+ * Gets the model's classification type. This determines whether terrain,
1685
+ * 3D Tiles, or both will be classified by this model.
1686
+ * <p>
1687
+ * Additionally, there are a few requirements/limitations:
1688
+ * <ul>
1689
+ * <li>The glTF cannot contain morph targets, skins, or animations.</li>
1690
+ * <li>The glTF cannot contain the <code>EXT_mesh_gpu_instancing</code> extension.</li>
1691
+ * <li>Only meshes with TRIANGLES can be used to classify other assets.</li>
1692
+ * <li>The meshes must be watertight.</li>
1693
+ * <li>The POSITION attribute is required.</li>
1694
+ * <li>If feature IDs and an index buffer are both present, all indices with the same feature id must occupy contiguous sections of the index buffer.</li>
1695
+ * <li>If feature IDs are present without an index buffer, all positions with the same feature id must occupy contiguous sections of the position buffer.</li>
1696
+ * </ul>
1697
+ * </p>
1698
+ * <p>
1699
+ * The 3D Tiles or terrain receiving the classification must be opaque.
1700
+ * </p>
1701
+ *
1702
+ * @memberof Model.prototype
1703
+ *
1704
+ * @type {ClassificationType}
1705
+ * @default undefined
1706
+ *
1707
+ * @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.
1708
+ * @readonly
1709
+ */
1710
+ classificationType: {
1711
+ get: function () {
1712
+ return this._classificationType;
1713
+ },
1714
+ },
1715
+
1716
+ /**
1717
+ * Reference to the pick IDs. This is only used internally, e.g. for
1718
+ * per-feature post-processing in {@link PostProcessStage}.
1719
+ *
1720
+ * @memberof Model.prototype
1721
+ *
1722
+ * @type {PickId[]}
1723
+ * @readonly
1724
+ *
1725
+ * @private
1726
+ */
1727
+ pickIds: {
1728
+ get: function () {
1729
+ return this._pickIds;
1730
+ },
1731
+ },
1732
+
1733
+ /**
1734
+ * The {@link StyleCommandsNeeded} for the style currently applied to
1735
+ * the features in the model. This is used internally by the {@link ModelDrawCommand}
1736
+ * when determining which commands to submit in an update.
1737
+ *
1738
+ * @memberof Model.prototype
1739
+ *
1740
+ * @type {StyleCommandsNeeded}
1741
+ * @readonly
1742
+ *
1743
+ * @private
1744
+ */
1745
+ styleCommandsNeeded: {
1746
+ get: function () {
1747
+ return this._styleCommandsNeeded;
1748
+ },
1749
+ },
1750
+ });
1751
+
1752
+ /**
1753
+ * Returns the node with the given <code>name</code> in the glTF. This is used to
1754
+ * modify a node's transform for user-defined animation.
1755
+ *
1756
+ * @param {string} name The name of the node in the glTF.
1757
+ * @returns {ModelNode} The node, or <code>undefined</code> if no node with the <code>name</code> exists.
1758
+ *
1759
+ * @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
1760
+ *
1761
+ * @example
1762
+ * // Apply non-uniform scale to node "Hand"
1763
+ * const node = model.getNode("Hand");
1764
+ * node.matrix = Cesium.Matrix4.fromScale(new Cesium.Cartesian3(5.0, 1.0, 1.0), node.matrix);
1765
+ */
1766
+ Model.prototype.getNode = function (name) {
1767
+ //>>includeStart('debug', pragmas.debug);
1768
+ if (!this._ready) {
1769
+ throw new DeveloperError(
1770
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1771
+ );
1772
+ }
1773
+ Check.typeOf.string("name", name);
1774
+ //>>includeEnd('debug');
1775
+
1776
+ return this._nodesByName[name];
1777
+ };
1778
+
1779
+ /**
1780
+ * Sets the current value of an articulation stage. After setting one or
1781
+ * multiple stage values, call Model.applyArticulations() to
1782
+ * cause the node matrices to be recalculated.
1783
+ *
1784
+ * @param {string} articulationStageKey The name of the articulation, a space, and the name of the stage.
1785
+ * @param {number} value The numeric value of this stage of the articulation.
1786
+ *
1787
+ * @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
1788
+ *
1789
+ * @see Model#applyArticulations
1790
+ *
1791
+ * @example
1792
+ * // Sets the value of the stage named "MoveX" belonging to the articulation named "SampleArticulation"
1793
+ * model.setArticulationStage("SampleArticulation MoveX", 50.0);
1794
+ */
1795
+ Model.prototype.setArticulationStage = function (articulationStageKey, value) {
1796
+ //>>includeStart('debug', pragmas.debug);
1797
+ Check.typeOf.number("value", value);
1798
+ if (!this._ready) {
1799
+ throw new DeveloperError(
1800
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1801
+ );
1802
+ }
1803
+ //>>includeEnd('debug');
1804
+
1805
+ this._sceneGraph.setArticulationStage(articulationStageKey, value);
1806
+ };
1807
+
1808
+ /**
1809
+ * Applies any modified articulation stages to the matrix of each node that
1810
+ * participates in any articulation. Note that this will overwrite any node
1811
+ * transformations on participating nodes.
1812
+ *
1813
+ * @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
1814
+ */
1815
+ Model.prototype.applyArticulations = function () {
1816
+ //>>includeStart('debug', pragmas.debug);
1817
+ if (!this._ready) {
1818
+ throw new DeveloperError(
1819
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1820
+ );
1821
+ }
1822
+ //>>includeEnd('debug');
1823
+
1824
+ this._sceneGraph.applyArticulations();
1825
+ };
1826
+
1827
+ /**
1828
+ * Returns the object that was created for the given extension.
1829
+ *
1830
+ * The given name may be the name of a glTF extension, like `"EXT_example_extension"`.
1831
+ * If the specified extension was present in the root of the underlying glTF asset,
1832
+ * and a loader for the specified extension has processed the extension data, then
1833
+ * this will return the model representation of the extension.
1834
+ *
1835
+ * @param {string} extensionName The name of the extension
1836
+ * @returns {object|undefined} The object, or `undefined`
1837
+ * @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
1838
+ *
1839
+ * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
1840
+ */
1841
+ Model.prototype.getExtension = function (extensionName) {
1842
+ //>>includeStart('debug', pragmas.debug);
1843
+ Check.typeOf.string("extensionName", extensionName);
1844
+ if (!this._ready) {
1845
+ throw new DeveloperError(
1846
+ "The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
1847
+ );
1848
+ }
1849
+ //>>includeEnd('debug');
1850
+ const components = this._loader.components;
1851
+ return components.extensions[extensionName];
1852
+ };
1853
+
1854
+ /**
1855
+ * Marks the model's {@link Model#style} as dirty, which forces all features
1856
+ * to re-evaluate the style in the next frame the model is visible.
1857
+ */
1858
+ Model.prototype.makeStyleDirty = function () {
1859
+ this._styleDirty = true;
1860
+ };
1861
+
1862
+ /**
1863
+ * Resets the draw commands for this model.
1864
+ *
1865
+ * @private
1866
+ */
1867
+ Model.prototype.resetDrawCommands = function () {
1868
+ this._drawCommandsBuilt = false;
1869
+ };
1870
+
1871
+ const scratchIBLReferenceFrameMatrix4 = new Matrix4();
1872
+ const scratchIBLReferenceFrameMatrix3 = new Matrix3();
1873
+ const scratchClippingPlanesMatrix = new Matrix4();
1874
+
1875
+ /**
1876
+ * Called when {@link Viewer} or {@link CesiumWidget} render the scene to
1877
+ * get the draw commands needed to render this primitive.
1878
+ * <p>
1879
+ * Do not call this function directly. This is documented just to
1880
+ * list the exceptions that may be propagated when the scene is rendered:
1881
+ * </p>
1882
+ *
1883
+ * @exception {RuntimeError} Failed to load external reference.
1884
+ */
1885
+ Model.prototype.update = function (frameState) {
1886
+ let finishedProcessing = false;
1887
+ try {
1888
+ // Keep processing the model every frame until the main resources
1889
+ // (buffer views) and textures (which may be loaded asynchronously)
1890
+ // are processed.
1891
+ finishedProcessing = processLoader(this, frameState);
1892
+ } catch (error) {
1893
+ if (
1894
+ !this._loader.incrementallyLoadTextures &&
1895
+ error.name === "TextureError"
1896
+ ) {
1897
+ handleError(this, error);
1898
+ } else {
1899
+ const runtimeError = ModelUtility.getError(
1900
+ "model",
1901
+ this._resource,
1902
+ error,
1903
+ );
1904
+ handleError(this, runtimeError);
1905
+ }
1906
+ }
1907
+
1908
+ // A custom shader may have to load texture uniforms.
1909
+ updateCustomShader(this, frameState);
1910
+
1911
+ // Environment maps, specular maps, and spherical harmonics may need to be updated or regenerated
1912
+ updateEnvironmentMap(this, frameState);
1913
+
1914
+ // The image-based lighting may have to load texture uniforms
1915
+ // for specular maps.
1916
+ updateImageBasedLighting(this, frameState);
1917
+
1918
+ if (!this._resourcesLoaded && finishedProcessing) {
1919
+ this._resourcesLoaded = true;
1920
+
1921
+ const components = this._loader.components;
1922
+ if (!defined(components)) {
1923
+ if (this._loader.isUnloaded()) {
1924
+ return;
1925
+ }
1926
+
1927
+ const error = ModelUtility.getError(
1928
+ "model",
1929
+ this._resource,
1930
+ new RuntimeError("Failed to load model."),
1931
+ );
1932
+ handleError(error);
1933
+ this._rejectLoad = this._rejectLoad && this._rejectLoad(error);
1934
+ }
1935
+
1936
+ const structuralMetadata = components.structuralMetadata;
1937
+ if (
1938
+ defined(structuralMetadata) &&
1939
+ structuralMetadata.propertyTableCount > 0
1940
+ ) {
1941
+ createModelFeatureTables(this, structuralMetadata);
1942
+ }
1943
+
1944
+ const sceneGraph = new ModelSceneGraph({
1945
+ model: this,
1946
+ modelComponents: components,
1947
+ });
1948
+
1949
+ this._sceneGraph = sceneGraph;
1950
+ this._gltfCredits = sceneGraph.components.asset.credits;
1951
+ }
1952
+
1953
+ // Short-circuit if the model resources aren't ready or the scene
1954
+ // is currently morphing.
1955
+ if (!this._resourcesLoaded || frameState.mode === SceneMode.MORPHING) {
1956
+ return;
1957
+ }
1958
+
1959
+ const modelImagery = this._modelImagery;
1960
+ modelImagery.update(frameState);
1961
+ if (!modelImagery.ready) {
1962
+ // If the imagery loading should not happen asynchronously,
1963
+ // then do not let the model count as 'ready' until the
1964
+ // modelImagery is 'ready'
1965
+ const asynchronouslyLoadImagery =
1966
+ this._content?.tileset?._asynchronouslyLoadImagery ?? false;
1967
+ if (!asynchronouslyLoadImagery) {
1968
+ return;
1969
+ }
1970
+ }
1971
+
1972
+ updateFeatureTableId(this);
1973
+ updateStyle(this);
1974
+ updateFeatureTables(this, frameState);
1975
+ updatePointCloudShading(this);
1976
+ updateSilhouette(this, frameState);
1977
+ updateSkipLevelOfDetail(this, frameState);
1978
+ updateClippingPlanes(this, frameState);
1979
+ updateClippingPolygons(this, frameState);
1980
+ updateSceneMode(this, frameState);
1981
+ updateFog(this, frameState);
1982
+ updateVerticalExaggeration(this, frameState);
1983
+
1984
+ this._defaultTexture = frameState.context.defaultTexture;
1985
+
1986
+ buildDrawCommands(this, frameState);
1987
+ updateModelMatrix(this, frameState);
1988
+
1989
+ // Many features (e.g. image-based lighting, clipping planes) depend on the model
1990
+ // matrix being updated for the current height reference, so update it first.
1991
+ updateClamping(this);
1992
+
1993
+ updateBoundingSphereAndScale(this, frameState);
1994
+ updateReferenceMatrices(this, frameState);
1995
+
1996
+ // This check occurs after the bounding sphere has been updated so that
1997
+ // zooming to the bounding sphere can account for any modifications
1998
+ // from the clamp-to-ground setting.
1999
+ if (!this._ready) {
2000
+ // Set the model as ready after the first frame render since the user might set up events subscribed to
2001
+ // the post render event, and the model may not be ready for those past the first frame.
2002
+ frameState.afterRender.push(() => {
2003
+ this._ready = true;
2004
+ this._readyEvent.raiseEvent(this);
2005
+ });
2006
+
2007
+ // Don't render until the next frame after the ready event has been raised.
2008
+ return;
2009
+ }
2010
+
2011
+ if (
2012
+ this._loader.incrementallyLoadTextures &&
2013
+ !this._texturesLoaded &&
2014
+ this._loader.texturesLoaded
2015
+ ) {
2016
+ // Re-run the pipeline so texture memory statistics are re-computed
2017
+ this.resetDrawCommands();
2018
+
2019
+ this._texturesLoaded = true;
2020
+ this._texturesReadyEvent.raiseEvent(this);
2021
+ }
2022
+
2023
+ updatePickIds(this);
2024
+
2025
+ // Update the scene graph and draw commands for any changes in model's properties
2026
+ // (e.g. model matrix, back-face culling)
2027
+ updateSceneGraph(this, frameState);
2028
+ updateShowCreditsOnScreen(this);
2029
+ submitDrawCommands(this, frameState);
2030
+ };
2031
+
2032
+ function processLoader(model, frameState) {
2033
+ if (
2034
+ !model._resourcesLoaded ||
2035
+ (model._loader.incrementallyLoadTextures && !model._texturesLoaded)
2036
+ ) {
2037
+ // Ensures frames continue to render in requestRender mode while resources are processing
2038
+ frameState.afterRender.push(() => true);
2039
+ return model._loader.process(frameState);
2040
+ }
2041
+
2042
+ return true;
2043
+ }
2044
+
2045
+ function updateCustomShader(model, frameState) {
2046
+ if (defined(model._customShader)) {
2047
+ model._customShader.update(frameState);
2048
+ }
2049
+ }
2050
+
2051
+ function updateEnvironmentMap(model, frameState) {
2052
+ const environmentMapManager = model._environmentMapManager;
2053
+ const picking = frameState.passes.pick || frameState.passes.pickVoxel;
2054
+ if (model._ready && environmentMapManager.owner === model && !picking) {
2055
+ environmentMapManager.position = model._boundingSphere.center;
2056
+ environmentMapManager.shouldUpdate =
2057
+ !defined(model._imageBasedLighting.sphericalHarmonicCoefficients) ||
2058
+ !defined(model._imageBasedLighting.specularEnvironmentMaps);
2059
+
2060
+ environmentMapManager.update(frameState);
2061
+
2062
+ if (environmentMapManager.shouldRegenerateShaders) {
2063
+ model.resetDrawCommands();
2064
+ }
2065
+ }
2066
+ }
2067
+
2068
+ function updateImageBasedLighting(model, frameState) {
2069
+ model._imageBasedLighting.update(frameState);
2070
+ if (model._imageBasedLighting.shouldRegenerateShaders) {
2071
+ model.resetDrawCommands();
2072
+ }
2073
+ }
2074
+
2075
+ function updateFeatureTableId(model) {
2076
+ if (!model._featureTableIdDirty) {
2077
+ return;
2078
+ }
2079
+ model._featureTableIdDirty = false;
2080
+
2081
+ const components = model._sceneGraph.components;
2082
+ const structuralMetadata = components.structuralMetadata;
2083
+
2084
+ if (
2085
+ defined(structuralMetadata) &&
2086
+ structuralMetadata.propertyTableCount > 0
2087
+ ) {
2088
+ model.featureTableId = selectFeatureTableId(components, model);
2089
+
2090
+ // Mark the style dirty to re-apply it and reflect the new feature ID table.
2091
+ model._styleDirty = true;
2092
+
2093
+ // Trigger a rebuild of the draw commands.
2094
+ model.resetDrawCommands();
2095
+ }
2096
+ }
2097
+
2098
+ function updateStyle(model) {
2099
+ if (model._styleDirty) {
2100
+ model.applyStyle(model._style);
2101
+ model._styleDirty = false;
2102
+ }
2103
+ }
2104
+
2105
+ function updateFeatureTables(model, frameState) {
2106
+ const featureTables = model._featureTables;
2107
+ const length = featureTables.length;
2108
+
2109
+ let styleCommandsNeededDirty = false;
2110
+ for (let i = 0; i < length; i++) {
2111
+ featureTables[i].update(frameState);
2112
+ // Check if the types of style commands needed have changed and trigger a reset of the draw commands
2113
+ // to ensure that translucent and opaque features are handled in the correct passes.
2114
+ if (featureTables[i].styleCommandsNeededDirty) {
2115
+ styleCommandsNeededDirty = true;
2116
+ }
2117
+ }
2118
+
2119
+ if (styleCommandsNeededDirty) {
2120
+ updateStyleCommandsNeeded(model);
2121
+ }
2122
+ }
2123
+
2124
+ function updateStyleCommandsNeeded(model) {
2125
+ const featureTable = model.featureTables[model.featureTableId];
2126
+ model._styleCommandsNeeded = StyleCommandsNeeded.getStyleCommandsNeeded(
2127
+ featureTable.featuresLength,
2128
+ featureTable.batchTexture.translucentFeaturesLength,
2129
+ );
2130
+ }
2131
+
2132
+ function updatePointCloudShading(model) {
2133
+ const pointCloudShading = model.pointCloudShading;
2134
+
2135
+ // Check if the shader needs to be updated for point cloud attenuation
2136
+ // settings.
2137
+ if (pointCloudShading.attenuation !== model._attenuation) {
2138
+ model.resetDrawCommands();
2139
+ model._attenuation = pointCloudShading.attenuation;
2140
+ }
2141
+
2142
+ if (pointCloudShading.backFaceCulling !== model._pointCloudBackFaceCulling) {
2143
+ model.resetDrawCommands();
2144
+ model._pointCloudBackFaceCulling = pointCloudShading.backFaceCulling;
2145
+ }
2146
+ }
2147
+
2148
+ function updateSilhouette(model, frameState) {
2149
+ if (model._silhouetteDirty) {
2150
+ // Only rebuild draw commands if silhouettes are supported in the first place.
2151
+ if (supportsSilhouettes(frameState)) {
2152
+ model.resetDrawCommands();
2153
+ }
2154
+
2155
+ model._silhouetteDirty = false;
2156
+ }
2157
+ }
2158
+
2159
+ function updateSkipLevelOfDetail(model, frameState) {
2160
+ const skipLevelOfDetail = model.hasSkipLevelOfDetail(frameState);
2161
+ if (skipLevelOfDetail !== model._skipLevelOfDetail) {
2162
+ model.resetDrawCommands();
2163
+ model._skipLevelOfDetail = skipLevelOfDetail;
2164
+ }
2165
+ }
2166
+
2167
+ function updateClippingPlanes(model, frameState) {
2168
+ // Update the clipping planes collection / state for this model to detect any changes.
2169
+ let currentClippingPlanesState = 0;
2170
+ if (model.isClippingEnabled()) {
2171
+ if (model._clippingPlanes.owner === model) {
2172
+ model._clippingPlanes.update(frameState);
2173
+ }
2174
+ currentClippingPlanesState = model._clippingPlanes.clippingPlanesState;
2175
+ }
2176
+
2177
+ if (currentClippingPlanesState !== model._clippingPlanesState) {
2178
+ model.resetDrawCommands();
2179
+ model._clippingPlanesState = currentClippingPlanesState;
2180
+ }
2181
+ }
2182
+
2183
+ function updateClippingPolygons(model, frameState) {
2184
+ // Update the clipping polygon collection / state for this model to detect any changes.
2185
+ let currentClippingPolygonsState = 0;
2186
+ if (model.isClippingPolygonsEnabled()) {
2187
+ if (model._clippingPolygons.owner === model) {
2188
+ model._clippingPolygons.update(frameState);
2189
+ model._clippingPolygons.queueCommands(frameState);
2190
+ }
2191
+ currentClippingPolygonsState =
2192
+ model._clippingPolygons.clippingPolygonsState;
2193
+ }
2194
+
2195
+ if (currentClippingPolygonsState !== model._clippingPolygonsState) {
2196
+ model.resetDrawCommands();
2197
+ model._clippingPolygonsState = currentClippingPolygonsState;
2198
+ }
2199
+ }
2200
+
2201
+ function updateSceneMode(model, frameState) {
2202
+ if (frameState.mode !== model._sceneMode) {
2203
+ if (model._projectTo2D) {
2204
+ model.resetDrawCommands();
2205
+ } else {
2206
+ model._updateModelMatrix = true;
2207
+ }
2208
+ model._sceneMode = frameState.mode;
2209
+ }
2210
+ }
2211
+
2212
+ function updateFog(model, frameState) {
2213
+ const fogRenderable = frameState.fog.enabled && frameState.fog.renderable;
2214
+ if (fogRenderable !== model._fogRenderable) {
2215
+ model.resetDrawCommands();
2216
+ model._fogRenderable = fogRenderable;
2217
+ }
2218
+ }
2219
+
2220
+ function updateVerticalExaggeration(model, frameState) {
2221
+ if (model.enableVerticalExaggeration) {
2222
+ const verticalExaggerationNeeded = frameState.verticalExaggeration !== 1.0;
2223
+ if (model.hasVerticalExaggeration !== verticalExaggerationNeeded) {
2224
+ model.resetDrawCommands();
2225
+ model._hasVerticalExaggeration = verticalExaggerationNeeded;
2226
+ }
2227
+ } else if (model.hasVerticalExaggeration) {
2228
+ model.resetDrawCommands(); //if verticalExaggeration was on, reset.
2229
+ model._hasVerticalExaggeration = false;
2230
+ }
2231
+ }
2232
+
2233
+ function buildDrawCommands(model, frameState) {
2234
+ if (!model._drawCommandsBuilt) {
2235
+ model.destroyPipelineResources();
2236
+ model._sceneGraph.buildDrawCommands(frameState);
2237
+ model._drawCommandsBuilt = true;
2238
+ }
2239
+ }
2240
+
2241
+ function updateModelMatrix(model, frameState) {
2242
+ // This is done without a dirty flag so that the model matrix can be updated in-place
2243
+ // without needing to use a setter.
2244
+ if (!Matrix4.equals(model.modelMatrix, model._modelMatrix)) {
2245
+ //>>includeStart('debug', pragmas.debug);
2246
+ if (frameState.mode !== SceneMode.SCENE3D && model._projectTo2D) {
2247
+ throw new DeveloperError(
2248
+ "Model.modelMatrix cannot be changed in 2D or Columbus View if projectTo2D is true.",
2249
+ );
2250
+ }
2251
+ //>>includeEnd('debug');
2252
+ model._updateModelMatrix = true;
2253
+ model._modelMatrix = Matrix4.clone(model.modelMatrix, model._modelMatrix);
2254
+ }
2255
+ }
2256
+
2257
+ const scratchPosition = new Cartesian3();
2258
+ const scratchCartographic = new Cartographic();
2259
+
2260
+ function updateClamping(model) {
2261
+ if (
2262
+ !model._updateModelMatrix &&
2263
+ !model._heightDirty &&
2264
+ model._minimumPixelSize === 0.0
2265
+ ) {
2266
+ return;
2267
+ }
2268
+
2269
+ if (defined(model._removeUpdateHeightCallback)) {
2270
+ model._removeUpdateHeightCallback();
2271
+ model._removeUpdateHeightCallback = undefined;
2272
+ }
2273
+
2274
+ const scene = model._scene;
2275
+ if (!defined(scene) || model.heightReference === HeightReference.NONE) {
2276
+ //>>includeStart('debug', pragmas.debug);
2277
+ if (model.heightReference !== HeightReference.NONE) {
2278
+ throw new DeveloperError(
2279
+ "Height reference is not supported without a scene.",
2280
+ );
2281
+ }
2282
+ //>>includeEnd('debug');
2283
+ model._clampedModelMatrix = undefined;
2284
+ return;
2285
+ }
2286
+
2287
+ const ellipsoid = scene.ellipsoid ?? Ellipsoid.default;
2288
+
2289
+ // Compute cartographic position so we don't recompute every update
2290
+ const modelMatrix = model.modelMatrix;
2291
+ scratchPosition.x = modelMatrix[12];
2292
+ scratchPosition.y = modelMatrix[13];
2293
+ scratchPosition.z = modelMatrix[14];
2294
+ const cartoPosition = ellipsoid.cartesianToCartographic(scratchPosition);
2295
+
2296
+ if (!defined(model._clampedModelMatrix)) {
2297
+ model._clampedModelMatrix = Matrix4.clone(modelMatrix, new Matrix4());
2298
+ }
2299
+
2300
+ // Install callback to handle updating of terrain tiles
2301
+ model._removeUpdateHeightCallback = scene.updateHeight(
2302
+ cartoPosition,
2303
+ getUpdateHeightCallback(model, ellipsoid, cartoPosition),
2304
+ model.heightReference,
2305
+ );
2306
+
2307
+ // Set the correct height now
2308
+ const height = scene.getHeight(cartoPosition, model.heightReference);
2309
+ if (defined(height)) {
2310
+ // Get callback with cartoPosition being the non-clamped position
2311
+ const callback = getUpdateHeightCallback(model, ellipsoid, cartoPosition);
2312
+
2313
+ // Compute the clamped cartesian and call updateHeight callback
2314
+ Cartographic.clone(cartoPosition, scratchCartographic);
2315
+ scratchCartographic.height = height;
2316
+ callback(scratchCartographic);
2317
+ }
2318
+
2319
+ model._heightDirty = false;
2320
+ model._updateModelMatrix = true;
2321
+ }
2322
+
2323
+ function updateBoundingSphereAndScale(model, frameState) {
2324
+ if (!model._updateModelMatrix && model._minimumPixelSize === 0.0) {
2325
+ return;
2326
+ }
2327
+
2328
+ const modelMatrix = defined(model._clampedModelMatrix)
2329
+ ? model._clampedModelMatrix
2330
+ : model.modelMatrix;
2331
+
2332
+ updateBoundingSphere(model, modelMatrix);
2333
+ updateComputedScale(model, modelMatrix, frameState);
2334
+ }
2335
+
2336
+ function updateBoundingSphere(model, modelMatrix) {
2337
+ model._clampedScale = defined(model._maximumScale)
2338
+ ? Math.min(model._scale, model._maximumScale)
2339
+ : model._scale;
2340
+
2341
+ model._boundingSphere.center = Cartesian3.multiplyByScalar(
2342
+ model._sceneGraph.boundingSphere.center,
2343
+ model._clampedScale,
2344
+ model._boundingSphere.center,
2345
+ );
2346
+ model._boundingSphere.radius = model._initialRadius * model._clampedScale;
2347
+
2348
+ model._boundingSphere = BoundingSphere.transform(
2349
+ model._boundingSphere,
2350
+ modelMatrix,
2351
+ model._boundingSphere,
2352
+ );
2353
+ }
2354
+
2355
+ function updateComputedScale(model, modelMatrix, frameState) {
2356
+ let scale = model.scale;
2357
+
2358
+ if (model.minimumPixelSize !== 0.0 && !model._projectTo2D) {
2359
+ // Compute size of bounding sphere in pixels
2360
+ const context = frameState.context;
2361
+ const maxPixelSize = Math.max(
2362
+ context.drawingBufferWidth,
2363
+ context.drawingBufferHeight,
2364
+ );
2365
+
2366
+ Matrix4.getTranslation(modelMatrix, scratchPosition);
2367
+
2368
+ if (model._sceneMode !== SceneMode.SCENE3D) {
2369
+ SceneTransforms.computeActualEllipsoidPosition(
2370
+ frameState,
2371
+ scratchPosition,
2372
+ scratchPosition,
2373
+ );
2374
+ }
2375
+
2376
+ const radius = model._boundingSphere.radius;
2377
+ const metersPerPixel = scaleInPixels(scratchPosition, radius, frameState);
2378
+
2379
+ // metersPerPixel is always > 0.0
2380
+ const pixelsPerMeter = 1.0 / metersPerPixel;
2381
+ const diameterInPixels = Math.min(
2382
+ pixelsPerMeter * (2.0 * radius),
2383
+ maxPixelSize,
2384
+ );
2385
+
2386
+ // Maintain model's minimum pixel size
2387
+ if (diameterInPixels < model.minimumPixelSize) {
2388
+ scale =
2389
+ (model.minimumPixelSize * metersPerPixel) /
2390
+ (2.0 * model._initialRadius);
2391
+ }
2392
+ }
2393
+
2394
+ model._computedScale = defined(model.maximumScale)
2395
+ ? Math.min(model.maximumScale, scale)
2396
+ : scale;
2397
+ }
2398
+
2399
+ function updatePickIds(model) {
2400
+ if (!model._idDirty) {
2401
+ return;
2402
+ }
2403
+ model._idDirty = false;
2404
+
2405
+ const id = model._id;
2406
+ const pickIds = model._pickIds;
2407
+ const length = pickIds.length;
2408
+ for (let i = 0; i < length; ++i) {
2409
+ pickIds[i].object.id = id;
2410
+ }
2411
+ }
2412
+
2413
+ // Matrix3 is a row-major constructor.
2414
+ // The same constructor in GLSL will produce the transpose of this.
2415
+ const yUpToZUp = new Matrix3(1, 0, 0, 0, 0, 1, 0, -1, 0);
2416
+
2417
+ function updateReferenceMatrices(model, frameState) {
2418
+ const modelMatrix = defined(model._clampedModelMatrix)
2419
+ ? model._clampedModelMatrix
2420
+ : model.modelMatrix;
2421
+ const referenceMatrix = model.referenceMatrix ?? modelMatrix;
2422
+ const context = frameState.context;
2423
+
2424
+ let iblReferenceFrameMatrix3 = scratchIBLReferenceFrameMatrix3;
2425
+ let iblReferenceFrameMatrix4 = scratchIBLReferenceFrameMatrix4;
2426
+
2427
+ iblReferenceFrameMatrix4 = Matrix4.multiply(
2428
+ context.uniformState.view3D,
2429
+ referenceMatrix,
2430
+ iblReferenceFrameMatrix4,
2431
+ );
2432
+ iblReferenceFrameMatrix3 = Matrix4.getRotation(
2433
+ iblReferenceFrameMatrix4,
2434
+ iblReferenceFrameMatrix3,
2435
+ );
2436
+ iblReferenceFrameMatrix3 = Matrix3.transpose(
2437
+ iblReferenceFrameMatrix3,
2438
+ iblReferenceFrameMatrix3,
2439
+ );
2440
+ model._iblReferenceFrameMatrix = Matrix3.multiply(
2441
+ yUpToZUp,
2442
+ iblReferenceFrameMatrix3,
2443
+ model._iblReferenceFrameMatrix,
2444
+ );
2445
+
2446
+ if (model.isClippingEnabled()) {
2447
+ let clippingPlanesMatrix = scratchClippingPlanesMatrix;
2448
+ clippingPlanesMatrix = Matrix4.multiply(
2449
+ context.uniformState.view3D,
2450
+ referenceMatrix,
2451
+ clippingPlanesMatrix,
2452
+ );
2453
+ clippingPlanesMatrix = Matrix4.multiply(
2454
+ clippingPlanesMatrix,
2455
+ model._clippingPlanes.modelMatrix,
2456
+ clippingPlanesMatrix,
2457
+ );
2458
+ model._clippingPlanesMatrix = Matrix4.inverseTranspose(
2459
+ clippingPlanesMatrix,
2460
+ model._clippingPlanesMatrix,
2461
+ );
2462
+ }
2463
+ }
2464
+
2465
+ function updateSceneGraph(model, frameState) {
2466
+ const sceneGraph = model._sceneGraph;
2467
+ if (model._updateModelMatrix || model._minimumPixelSize !== 0.0) {
2468
+ const modelMatrix = defined(model._clampedModelMatrix)
2469
+ ? model._clampedModelMatrix
2470
+ : model.modelMatrix;
2471
+ sceneGraph.updateModelMatrix(modelMatrix, frameState);
2472
+ model._updateModelMatrix = false;
2473
+ }
2474
+
2475
+ if (model._backFaceCullingDirty) {
2476
+ sceneGraph.updateBackFaceCulling(model._backFaceCulling);
2477
+ model._backFaceCullingDirty = false;
2478
+ }
2479
+
2480
+ if (model._shadowsDirty) {
2481
+ sceneGraph.updateShadows(model._shadows);
2482
+ model._shadowsDirty = false;
2483
+ }
2484
+
2485
+ if (model._debugShowBoundingVolumeDirty) {
2486
+ sceneGraph.updateShowBoundingVolume(model._debugShowBoundingVolume);
2487
+ model._debugShowBoundingVolumeDirty = false;
2488
+ }
2489
+
2490
+ let updateForAnimations = false;
2491
+ // Animations are disabled for classification models.
2492
+ if (!defined(model.classificationType)) {
2493
+ updateForAnimations =
2494
+ model._userAnimationDirty || model._activeAnimations.update(frameState);
2495
+ }
2496
+ sceneGraph.update(frameState, updateForAnimations);
2497
+ model._userAnimationDirty = false;
2498
+ }
2499
+
2500
+ function updateShowCreditsOnScreen(model) {
2501
+ if (!model._showCreditsOnScreenDirty) {
2502
+ return;
2503
+ }
2504
+ model._showCreditsOnScreenDirty = false;
2505
+ model._credits.length = 0;
2506
+
2507
+ const showOnScreen = model._showCreditsOnScreen;
2508
+ if (defined(model._credit)) {
2509
+ const credit = Credit.clone(model._credit);
2510
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2511
+ model._credits.push(credit);
2512
+ }
2513
+
2514
+ const resourceCredits = model._resourceCredits;
2515
+ const resourceCreditsLength = resourceCredits.length;
2516
+ for (let i = 0; i < resourceCreditsLength; i++) {
2517
+ const credit = Credit.clone(resourceCredits[i]);
2518
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2519
+ model._credits.push(credit);
2520
+ }
2521
+
2522
+ const gltfCredits = model._gltfCredits;
2523
+ const gltfCreditsLength = gltfCredits.length;
2524
+ for (let i = 0; i < gltfCreditsLength; i++) {
2525
+ const credit = Credit.clone(gltfCredits[i]);
2526
+ credit.showOnScreen = credit.showOnScreen || showOnScreen;
2527
+ model._credits.push(credit);
2528
+ }
2529
+ }
2530
+
2531
+ function submitDrawCommands(model, frameState) {
2532
+ // Check that show is true after draw commands are built;
2533
+ // we want the user to be able to instantly see the model
2534
+ // when show is set to true.
2535
+
2536
+ const displayConditionPassed = passesDistanceDisplayCondition(
2537
+ model,
2538
+ frameState,
2539
+ );
2540
+
2541
+ const invisible = model.isInvisible();
2542
+ const silhouette = model.hasSilhouette(frameState);
2543
+
2544
+ // If the model is invisible but has a silhouette, it still
2545
+ // needs to draw in order to write to the stencil buffer and
2546
+ // render the silhouette.
2547
+ const showModel =
2548
+ model._show &&
2549
+ model._computedScale !== 0 &&
2550
+ displayConditionPassed &&
2551
+ (!invisible || silhouette);
2552
+
2553
+ const passes = frameState.passes;
2554
+ const submitCommandsForPass =
2555
+ passes.render || (passes.pick && model.allowPicking);
2556
+
2557
+ if (showModel && !model._ignoreCommands && submitCommandsForPass) {
2558
+ addCreditsToCreditDisplay(model, frameState);
2559
+ model._sceneGraph.pushDrawCommands(frameState);
2560
+ }
2561
+ }
2562
+
2563
+ const scratchBoundingSphere = new BoundingSphere();
2564
+
2565
+ function scaleInPixels(positionWC, radius, frameState) {
2566
+ scratchBoundingSphere.center = positionWC;
2567
+ scratchBoundingSphere.radius = radius;
2568
+ return frameState.camera.getPixelSize(
2569
+ scratchBoundingSphere,
2570
+ frameState.context.drawingBufferWidth,
2571
+ frameState.context.drawingBufferHeight,
2572
+ );
2573
+ }
2574
+
2575
+ const scratchUpdateHeightCartesian = new Cartesian3();
2576
+ function getUpdateHeightCallback(model, ellipsoid, originalPostition) {
2577
+ return function (clampedPosition) {
2578
+ if (isHeightReferenceRelative(model.heightReference)) {
2579
+ clampedPosition.height += originalPostition.height;
2580
+ }
2581
+
2582
+ ellipsoid.cartographicToCartesian(
2583
+ clampedPosition,
2584
+ scratchUpdateHeightCartesian,
2585
+ );
2586
+
2587
+ const clampedModelMatrix = model._clampedModelMatrix;
2588
+
2589
+ // Modify clamped model matrix to use new height
2590
+ Matrix4.clone(model.modelMatrix, clampedModelMatrix);
2591
+ clampedModelMatrix[12] = scratchUpdateHeightCartesian.x;
2592
+ clampedModelMatrix[13] = scratchUpdateHeightCartesian.y;
2593
+ clampedModelMatrix[14] = scratchUpdateHeightCartesian.z;
2594
+
2595
+ model._heightDirty = true;
2596
+ };
2597
+ }
2598
+
2599
+ const scratchDisplayConditionCartesian = new Cartesian3();
2600
+
2601
+ function passesDistanceDisplayCondition(model, frameState) {
2602
+ const condition = model.distanceDisplayCondition;
2603
+ if (!defined(condition)) {
2604
+ return true;
2605
+ }
2606
+
2607
+ const nearSquared = condition.near * condition.near;
2608
+ const farSquared = condition.far * condition.far;
2609
+ let distanceSquared;
2610
+
2611
+ if (frameState.mode === SceneMode.SCENE2D) {
2612
+ const frustum2DWidth =
2613
+ frameState.camera.frustum.right - frameState.camera.frustum.left;
2614
+ const distance = frustum2DWidth * 0.5;
2615
+ distanceSquared = distance * distance;
2616
+ } else {
2617
+ // Distance to center of primitive's reference frame
2618
+ const position = Matrix4.getTranslation(
2619
+ model.modelMatrix,
2620
+ scratchDisplayConditionCartesian,
2621
+ );
2622
+
2623
+ // This will project the position if the scene is in Columbus View,
2624
+ // but leave the position as-is in 3D mode.
2625
+ SceneTransforms.computeActualEllipsoidPosition(
2626
+ frameState,
2627
+ position,
2628
+ position,
2629
+ );
2630
+
2631
+ distanceSquared = Cartesian3.distanceSquared(
2632
+ position,
2633
+ frameState.camera.positionWC,
2634
+ );
2635
+ }
2636
+
2637
+ return distanceSquared >= nearSquared && distanceSquared <= farSquared;
2638
+ }
2639
+
2640
+ function addCreditsToCreditDisplay(model, frameState) {
2641
+ const creditDisplay = frameState.creditDisplay;
2642
+ const credits = model._credits;
2643
+ const creditsLength = credits.length;
2644
+ for (let c = 0; c < creditsLength; c++) {
2645
+ creditDisplay.addCreditToNextFrame(credits[c]);
2646
+ }
2647
+ }
2648
+
2649
+ /**
2650
+ * Gets whether or not the model is translucent based on its assigned model color.
2651
+ * If the model color's alpha is equal to zero, then it is considered invisible,
2652
+ * not translucent.
2653
+ *
2654
+ * @returns {boolean} <code>true</code> if the model is translucent, otherwise <code>false</code>.
2655
+ * @private
2656
+ */
2657
+ Model.prototype.isTranslucent = function () {
2658
+ const color = this.color;
2659
+ return defined(color) && color.alpha > 0.0 && color.alpha < 1.0;
2660
+ };
2661
+
2662
+ /**
2663
+ * Gets whether or not the model is invisible, i.e. if the model color's alpha
2664
+ * is equal to zero.
2665
+ *
2666
+ * @returns {boolean} <code>true</code> if the model is invisible, otherwise <code>false</code>.
2667
+ * @private
2668
+ */
2669
+ Model.prototype.isInvisible = function () {
2670
+ const color = this.color;
2671
+ return defined(color) && color.alpha === 0.0;
2672
+ };
2673
+
2674
+ function supportsSilhouettes(frameState) {
2675
+ return frameState.context.stencilBuffer;
2676
+ }
2677
+
2678
+ /**
2679
+ * Gets whether or not the model has a silhouette. This accounts for whether
2680
+ * silhouettes are supported (i.e. the context supports stencil buffers).
2681
+ * <p>
2682
+ * If the model classifies another model, its silhouette will be disabled.
2683
+ * </p>
2684
+ *
2685
+ * @param {FrameState} The frame state.
2686
+ * @returns {boolean} <code>true</code> if the model has silhouettes, otherwise <code>false</code>.
2687
+ * @private
2688
+ */
2689
+ Model.prototype.hasSilhouette = function (frameState) {
2690
+ return (
2691
+ supportsSilhouettes(frameState) &&
2692
+ this._silhouetteSize > 0.0 &&
2693
+ this._silhouetteColor.alpha > 0.0 &&
2694
+ !defined(this._classificationType)
2695
+ );
2696
+ };
2697
+
2698
+ /**
2699
+ * Gets whether or not the model is part of a tileset that uses the
2700
+ * skipLevelOfDetail optimization. This accounts for whether skipLevelOfDetail
2701
+ * is supported (i.e. the context supports stencil buffers).
2702
+ *
2703
+ * @param {FrameState} frameState The frame state.
2704
+ * @returns {boolean} <code>true</code> if the model is part of a tileset that uses the skipLevelOfDetail optimization, <code>false</code> otherwise.
2705
+ * @private
2706
+ */
2707
+ Model.prototype.hasSkipLevelOfDetail = function (frameState) {
2708
+ if (!ModelType.is3DTiles(this.type)) {
2709
+ return false;
2710
+ }
2711
+
2712
+ const supportsSkipLevelOfDetail = frameState.context.stencilBuffer;
2713
+ const tileset = this._content.tileset;
2714
+ return supportsSkipLevelOfDetail && tileset.isSkippingLevelOfDetail;
2715
+ };
2716
+
2717
+ /**
2718
+ * Gets whether or not clipping planes are enabled for this model.
2719
+ *
2720
+ * @returns {boolean} <code>true</code> if clipping planes are enabled for this model, <code>false</code>.
2721
+ * @private
2722
+ */
2723
+ Model.prototype.isClippingEnabled = function () {
2724
+ const clippingPlanes = this._clippingPlanes;
2725
+ return (
2726
+ defined(clippingPlanes) &&
2727
+ clippingPlanes.enabled &&
2728
+ clippingPlanes.length !== 0
2729
+ );
2730
+ };
2731
+
2732
+ /**
2733
+ * Find an intersection between a ray and the model surface that was rendered. The ray must be given in world coordinates.
2734
+ *
2735
+ * @param {Ray} ray The ray to test for intersection.
2736
+ * @param {FrameState} frameState The frame state.
2737
+ * @param {number} [verticalExaggeration=1.0] A scalar used to exaggerate the height of a position relative to the ellipsoid. If the value is 1.0 there will be no effect.
2738
+ * @param {number} [relativeHeight=0.0] The height above the ellipsoid relative to which a position is exaggerated. If the value is 0.0 the position will be exaggerated relative to the ellipsoid surface.
2739
+ * @param {Cartesian3|undefined} [result] The intersection or <code>undefined</code> if none was found.
2740
+ * @returns {Cartesian3|undefined} The intersection or <code>undefined</code> if none was found.
2741
+ *
2742
+ * @private
2743
+ */
2744
+ Model.prototype.pick = function (
2745
+ ray,
2746
+ frameState,
2747
+ verticalExaggeration,
2748
+ relativeHeight,
2749
+ result,
2750
+ ) {
2751
+ return pickModel(
2752
+ this,
2753
+ ray,
2754
+ frameState,
2755
+ verticalExaggeration,
2756
+ relativeHeight,
2757
+ result,
2758
+ );
2759
+ };
2760
+
2761
+ /**
2762
+ * Gets whether or not clipping polygons are enabled for this model.
2763
+ *
2764
+ * @returns {boolean} <code>true</code> if clipping polygons are enabled for this model, <code>false</code>.
2765
+ * @private
2766
+ */
2767
+ Model.prototype.isClippingPolygonsEnabled = function () {
2768
+ const clippingPolygons = this._clippingPolygons;
2769
+ return (
2770
+ defined(clippingPolygons) &&
2771
+ clippingPolygons.enabled &&
2772
+ clippingPolygons.length !== 0
2773
+ );
2774
+ };
2775
+
2776
+ /**
2777
+ * Returns true if this object was destroyed; otherwise, false.
2778
+ * <br /><br />
2779
+ * If this object was destroyed, it should not be used; calling any function other than
2780
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
2781
+ *
2782
+ * @returns {boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
2783
+ *
2784
+ * @see Model#destroy
2785
+ */
2786
+ Model.prototype.isDestroyed = function () {
2787
+ return false;
2788
+ };
2789
+
2790
+ /**
2791
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
2792
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
2793
+ * <br /><br />
2794
+ * Once an object is destroyed, it should not be used; calling any function other than
2795
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
2796
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
2797
+ *
2798
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
2799
+ *
2800
+ *
2801
+ * @example
2802
+ * model = model && model.destroy();
2803
+ *
2804
+ * @see Model#isDestroyed
2805
+ */
2806
+ Model.prototype.destroy = function () {
2807
+ const loader = this._loader;
2808
+ if (defined(loader)) {
2809
+ loader.destroy();
2810
+ }
2811
+
2812
+ const featureTables = this._featureTables;
2813
+ if (defined(featureTables)) {
2814
+ const length = featureTables.length;
2815
+ for (let i = 0; i < length; i++) {
2816
+ featureTables[i].destroy();
2817
+ }
2818
+ }
2819
+
2820
+ this.destroyPipelineResources();
2821
+ this.destroyModelResources();
2822
+
2823
+ // Remove callbacks for height reference behavior.
2824
+ if (defined(this._removeUpdateHeightCallback)) {
2825
+ this._removeUpdateHeightCallback();
2826
+ this._removeUpdateHeightCallback = undefined;
2827
+ }
2828
+
2829
+ if (defined(this._terrainProviderChangedCallback)) {
2830
+ this._terrainProviderChangedCallback();
2831
+ this._terrainProviderChangedCallback = undefined;
2832
+ }
2833
+
2834
+ // Only destroy the ClippingPlaneCollection if this is the owner.
2835
+ const clippingPlaneCollection = this._clippingPlanes;
2836
+ if (
2837
+ defined(clippingPlaneCollection) &&
2838
+ !clippingPlaneCollection.isDestroyed() &&
2839
+ clippingPlaneCollection.owner === this
2840
+ ) {
2841
+ clippingPlaneCollection.destroy();
2842
+ }
2843
+ this._clippingPlanes = undefined;
2844
+
2845
+ // Only destroy the ClippingPolygonCollection if this is the owner.
2846
+ const clippingPolygonCollection = this._clippingPolygons;
2847
+ if (
2848
+ defined(clippingPolygonCollection) &&
2849
+ !clippingPolygonCollection.isDestroyed() &&
2850
+ clippingPolygonCollection.owner === this
2851
+ ) {
2852
+ clippingPolygonCollection.destroy();
2853
+ }
2854
+ this._clippingPolygons = undefined;
2855
+
2856
+ // Only destroy the ImageBasedLighting if this is the owner.
2857
+ if (
2858
+ this._shouldDestroyImageBasedLighting &&
2859
+ !this._imageBasedLighting.isDestroyed()
2860
+ ) {
2861
+ this._imageBasedLighting.destroy();
2862
+ }
2863
+ this._imageBasedLighting = undefined;
2864
+
2865
+ // Only destroy the environment map manager if this is the owner.
2866
+ const environmentMapManager = this._environmentMapManager;
2867
+ if (
2868
+ !environmentMapManager.isDestroyed() &&
2869
+ environmentMapManager.owner === this
2870
+ ) {
2871
+ environmentMapManager.destroy();
2872
+ }
2873
+ this._environmentMapManager = undefined;
2874
+
2875
+ destroyObject(this);
2876
+ };
2877
+
2878
+ /**
2879
+ * Destroys resources generated in the pipeline stages
2880
+ * that must be destroyed when draw commands are rebuilt.
2881
+ * @private
2882
+ */
2883
+ Model.prototype.destroyPipelineResources = function () {
2884
+ const resources = this._pipelineResources;
2885
+ for (let i = 0; i < resources.length; i++) {
2886
+ resources[i].destroy();
2887
+ }
2888
+ this._pipelineResources.length = 0;
2889
+ this._pickIds.length = 0;
2890
+ };
2891
+
2892
+ /**
2893
+ * Destroys resources generated in the pipeline stages
2894
+ * that exist for the lifetime of the model.
2895
+ * @private
2896
+ */
2897
+ Model.prototype.destroyModelResources = function () {
2898
+ const resources = this._modelResources;
2899
+ for (let i = 0; i < resources.length; i++) {
2900
+ resources[i].destroy();
2901
+ }
2902
+ this._modelResources.length = 0;
2903
+ };
2904
+
2905
+ /**
2906
+ * <p>
2907
+ * Asynchronously creates a model from a glTF asset. This function returns a promise that resolves when the model is ready to render, i.e., when the external binary, image,
2908
+ * and shader files are downloaded and the WebGL resources are created.
2909
+ * </p>
2910
+ * <p>
2911
+ * The model can be a traditional glTF asset with a .gltf extension or a Binary glTF using the .glb extension.
2912
+ *
2913
+ * @param {object} options Object with the following properties:
2914
+ * @param {string|Resource} options.url The url to the .gltf or .glb file.
2915
+ * @param {string|Resource} [options.basePath=''] The base path that paths in the glTF JSON are relative to.
2916
+ * @param {boolean} [options.show=true] Whether or not to render the model.
2917
+ * @param {Matrix4} [options.modelMatrix=Matrix4.IDENTITY] The 4x4 transformation matrix that transforms the model from model to world coordinates.
2918
+ * @param {number} [options.scale=1.0] A uniform scale applied to this model.
2919
+ * @param {boolean} [options.enableVerticalExaggeration=true] If <code>true</code>, the model is exaggerated along the ellipsoid normal when {@link Scene.verticalExaggeration} is set to a value other than <code>1.0</code>.
2920
+ * @param {number} [options.minimumPixelSize=0.0] The approximate minimum pixel size of the model regardless of zoom.
2921
+ * @param {number} [options.maximumScale] The maximum scale size of a model. An upper limit for minimumPixelSize.
2922
+ * @param {object} [options.id] A user-defined object to return when the model is picked with {@link Scene#pick}.
2923
+ * @param {boolean} [options.allowPicking=true] When <code>true</code>, each primitive is pickable with {@link Scene#pick}.
2924
+ * @param {boolean} [options.incrementallyLoadTextures=true] Determine if textures may continue to stream in after the model is loaded.
2925
+ * @param {boolean} [options.asynchronous=true] Determines if model WebGL resource creation will be spread out over several frames or block until completion once all glTF files are loaded.
2926
+ * @param {boolean} [options.clampAnimations=true] Determines if the model's animations should hold a pose over frames where no keyframes are specified.
2927
+ * @param {ShadowMode} [options.shadows=ShadowMode.ENABLED] Determines whether the model casts or receives shadows from light sources.
2928
+ * @param {boolean} [options.releaseGltfJson=false] When true, the glTF JSON is released once the glTF is loaded. This is is especially useful for cases like 3D Tiles, where each .gltf model is unique and caching the glTF JSON is not effective.
2929
+ * @param {boolean} [options.debugShowBoundingVolume=false] For debugging only. Draws the bounding sphere for each draw command in the model.
2930
+ * @param {boolean} [options.enableDebugWireframe=false] For debugging only. This must be set to true for debugWireframe to work in WebGL1. This cannot be set after the model has loaded.
2931
+ * @param {boolean} [options.debugWireframe=false] For debugging only. Draws the model in wireframe. Will only work for WebGL1 if enableDebugWireframe is set to true.
2932
+ * @param {boolean} [options.cull=true] Whether or not to cull the model using frustum/horizon culling. If the model is part of a 3D Tiles tileset, this property will always be false, since the 3D Tiles culling system is used.
2933
+ * @param {boolean} [options.opaquePass=Pass.OPAQUE] The pass to use in the {@link DrawCommand} for the opaque portions of the model.
2934
+ * @param {Axis} [options.upAxis=Axis.Y] The up-axis of the glTF model.
2935
+ * @param {Axis} [options.forwardAxis=Axis.Z] The forward-axis of the glTF model.
2936
+ * @param {CustomShader} [options.customShader] A custom shader. This will add user-defined GLSL code to the vertex and fragment shaders. Using custom shaders with a {@link Cesium3DTileStyle} may lead to undefined behavior.
2937
+ * @param {Cesium3DTileContent} [options.content] The tile content this model belongs to. This property will be undefined if model is not loaded as part of a tileset.
2938
+ * @param {HeightReference} [options.heightReference=HeightReference.NONE] Determines how the model is drawn relative to terrain.
2939
+ * @param {Scene} [options.scene] Must be passed in for models that use the height reference property.
2940
+ * @param {DistanceDisplayCondition} [options.distanceDisplayCondition] The condition specifying at what distance from the camera that this model will be displayed.
2941
+ * @param {Color} [options.color] A color that blends with the model's rendered color.
2942
+ * @param {ColorBlendMode} [options.colorBlendMode=ColorBlendMode.HIGHLIGHT] Defines how the color blends with the model.
2943
+ * @param {number} [options.colorBlendAmount=0.5] Value used to determine the color strength when the <code>colorBlendMode</code> is <code>MIX</code>. A value of 0.0 results in the model's rendered color while a value of 1.0 results in a solid color, with any value in-between resulting in a mix of the two.
2944
+ * @param {Color} [options.silhouetteColor=Color.RED] The silhouette color. If more than 256 models have silhouettes enabled, there is a small chance that overlapping models will have minor artifacts.
2945
+ * @param {number} [options.silhouetteSize=0.0] The size of the silhouette in pixels.
2946
+ * @param {boolean} [options.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 false to avoid post-processing geometry at load time. When false, the showOutlines and outlineColor options are ignored.
2947
+ * @param {boolean} [options.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.
2948
+ * @param {Color} [options.outlineColor=Color.BLACK] The color to use when rendering outlines.
2949
+ * @param {ClippingPlaneCollection} [options.clippingPlanes] The {@link ClippingPlaneCollection} used to selectively disable rendering the model.
2950
+ * @param {ClippingPolygonCollection} [options.clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the model.
2951
+ * @param {Cartesian3} [options.lightColor] The light color when shading the model. When <code>undefined</code> the scene's light color is used instead.
2952
+ * @param {ImageBasedLighting} [options.imageBasedLighting] The properties for managing image-based lighting on this model.
2953
+ * @param {DynamicEnvironmentMapManager.ConstructorOptions} [options.environmentMapOptions] The properties for managing dynamic environment maps on this model.
2954
+ * @param {boolean} [options.backFaceCulling=true] Whether to cull back-facing geometry. When true, back face culling is determined by the material's doubleSided property; when false, back face culling is disabled. Back faces are not culled if the model's color is translucent.
2955
+ * @param {Credit|string} [options.credit] A credit for the data source, which is displayed on the canvas.
2956
+ * @param {boolean} [options.showCreditsOnScreen=false] Whether to display the credits of this model on screen.
2957
+ * @param {SplitDirection} [options.splitDirection=SplitDirection.NONE] The {@link SplitDirection} split to apply to this model.
2958
+ * @param {boolean} [options.projectTo2D=false] Whether to accurately project the model's positions in 2D. If this is true, the model will be projected accurately to 2D, but it will use more memory to do so. If this is false, the model will use less memory and will still render in 2D / CV mode, but its positions may be inaccurate. This disables minimumPixelSize and prevents future modification to the model matrix. This also cannot be set after the model has loaded.
2959
+ * @param {boolean} [options.enablePick=false] Whether to allow with CPU picking with <code>pick</code> when not using WebGL 2 or above. 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 model has loaded.
2960
+ * @param {string|number} [options.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.
2961
+ * @param {string|number} [options.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.
2962
+ * @param {object} [options.pointCloudShading] Options for constructing a {@link PointCloudShading} object to control point attenuation and lighting.
2963
+ * @param {ClassificationType} [options.classificationType] Determines whether terrain, 3D Tiles or both will be classified by this model. This cannot be set after the model has loaded.
2964
+ * @param {Model.GltfCallback} [options.gltfCallback] A function that is called with the loaded gltf object once loaded.
2965
+ *
2966
+ * @returns {Promise<Model>} A promise that resolves to the created model when it is ready to render.
2967
+ *
2968
+ * @exception {RuntimeError} The model failed to load.
2969
+ * @exception {RuntimeError} Unsupported glTF version.
2970
+ * @exception {RuntimeError} Unsupported glTF Extension
2971
+ *
2972
+ * @example
2973
+ * // Load a model and add it to the scene
2974
+ * try {
2975
+ * const model = await Cesium.Model.fromGltfAsync({
2976
+ * url: "../../SampleData/models/CesiumMan/Cesium_Man.glb"
2977
+ * });
2978
+ * viewer.scene.primitives.add(model);
2979
+ * } catch (error) {
2980
+ * console.log(`Failed to load model. ${error}`);
2981
+ * }
2982
+ *
2983
+ * @example
2984
+ * // Position a model with modelMatrix and display it with a minimum size of 128 pixels
2985
+ * const position = Cesium.Cartesian3.fromDegrees(
2986
+ * -123.0744619,
2987
+ * 44.0503706,
2988
+ * 5000.0
2989
+ * );
2990
+ * const headingPositionRoll = new Cesium.HeadingPitchRoll();
2991
+ * const fixedFrameTransform = Cesium.Transforms.localFrameToFixedFrameGenerator(
2992
+ * "north",
2993
+ * "west"
2994
+ * );
2995
+ * try {
2996
+ * const model = await Cesium.Model.fromGltfAsync({
2997
+ * url: "../../SampleData/models/CesiumAir/Cesium_Air.glb",
2998
+ * modelMatrix: Cesium.Transforms.headingPitchRollToFixedFrame(
2999
+ * position,
3000
+ * headingPositionRoll,
3001
+ * Cesium.Ellipsoid.WGS84,
3002
+ * fixedFrameTransform
3003
+ * ),
3004
+ * minimumPixelSize: 128,
3005
+ * });
3006
+ * viewer.scene.primitives.add(model);
3007
+ * } catch (error) {
3008
+ * console.log(`Failed to load model. ${error}`);
3009
+ * }
3010
+ *
3011
+ * @example
3012
+ * // Load a model and play the last animation at half speed
3013
+ * let animations;
3014
+ * try {
3015
+ * const model = await Cesium.Model.fromGltfAsync({
3016
+ * url: "../../SampleData/models/CesiumMan/Cesium_Man.glb",
3017
+ * gltfCallback: gltf => {
3018
+ * animations = gltf.animations
3019
+ * }
3020
+ * });
3021
+ * viewer.scene.primitives.add(model);
3022
+ * model.readyEvent.addEventListener(() => {
3023
+ * model.activeAnimations.add({
3024
+ * index: animations.length - 1,
3025
+ * loop: Cesium.ModelAnimationLoop.REPEAT,
3026
+ * multiplier: 0.5,
3027
+ * });
3028
+ * });
3029
+ * } catch (error) {
3030
+ * console.log(`Failed to load model. ${error}`);
3031
+ * }
3032
+ */
3033
+ Model.fromGltfAsync = async function (options) {
3034
+ options = options ?? Frozen.EMPTY_OBJECT;
3035
+
3036
+ //>>includeStart('debug', pragmas.debug);
3037
+ if (!defined(options.url) && !defined(options.gltf)) {
3038
+ throw new DeveloperError("options.url is required.");
3039
+ }
3040
+ //>>includeEnd('debug');
3041
+
3042
+ // options.gltf is used internally for 3D Tiles. It can be a Resource, a URL
3043
+ // to a glTF/glb file, a binary glTF buffer, or a JSON object containing the
3044
+ // glTF contents.
3045
+ const gltf = options.url ?? options.gltf;
3046
+
3047
+ const loaderOptions = {
3048
+ releaseGltfJson: options.releaseGltfJson,
3049
+ asynchronous: options.asynchronous,
3050
+ incrementallyLoadTextures: options.incrementallyLoadTextures,
3051
+ upAxis: options.upAxis,
3052
+ forwardAxis: options.forwardAxis,
3053
+ loadAttributesFor2D: options.projectTo2D,
3054
+ enablePick: options.enablePick,
3055
+ loadIndicesForWireframe: options.enableDebugWireframe,
3056
+ loadPrimitiveOutline: options.enableShowOutline,
3057
+ loadForClassification: defined(options.classificationType),
3058
+ };
3059
+
3060
+ const basePath = options.basePath ?? "";
3061
+ const baseResource = Resource.createIfNeeded(basePath);
3062
+
3063
+ if (defined(gltf.asset)) {
3064
+ loaderOptions.gltfJson = gltf;
3065
+ loaderOptions.baseResource = baseResource;
3066
+ loaderOptions.gltfResource = baseResource;
3067
+ } else if (gltf instanceof Uint8Array) {
3068
+ loaderOptions.typedArray = gltf;
3069
+ loaderOptions.baseResource = baseResource;
3070
+ loaderOptions.gltfResource = baseResource;
3071
+ } else {
3072
+ loaderOptions.gltfResource = Resource.createIfNeeded(gltf);
3073
+ }
3074
+
3075
+ const loader = new GltfLoader(loaderOptions);
3076
+
3077
+ const is3DTiles = defined(options.content);
3078
+ const type = is3DTiles ? ModelType.TILE_GLTF : ModelType.GLTF;
3079
+
3080
+ const resource = loaderOptions.gltfResource;
3081
+
3082
+ const modelOptions = makeModelOptions(loader, type, options);
3083
+ modelOptions.resource = resource;
3084
+ modelOptions.environmentMapOptions = options.environmentMapOptions;
3085
+
3086
+ try {
3087
+ // This load the gltf JSON and ensures the gltf is valid
3088
+ // Further resource loading is handled synchronously in loader.process(), and requires
3089
+ // hooking into model's update() as the frameState is needed
3090
+ await loader.load();
3091
+ } catch (error) {
3092
+ loader.destroy();
3093
+ throw ModelUtility.getError("model", resource, error);
3094
+ }
3095
+
3096
+ const gltfCallback = options.gltfCallback;
3097
+ if (defined(gltfCallback)) {
3098
+ //>>includeStart('debug', pragmas.debug);
3099
+ Check.typeOf.func("options.gltfCallback", gltfCallback);
3100
+ //>>includeEnd('debug');
3101
+
3102
+ gltfCallback(loader.gltfJson);
3103
+ }
3104
+
3105
+ const model = new Model(modelOptions);
3106
+
3107
+ const resourceCredits = model._resource.credits;
3108
+ if (defined(resourceCredits)) {
3109
+ const length = resourceCredits.length;
3110
+ for (let i = 0; i < length; i++) {
3111
+ model._resourceCredits.push(Credit.clone(resourceCredits[i]));
3112
+ }
3113
+ }
3114
+
3115
+ return model;
3116
+ };
3117
+
3118
+ /*
3119
+ * @private
3120
+ */
3121
+ Model.fromB3dm = async function (options) {
3122
+ const loaderOptions = {
3123
+ b3dmResource: options.resource,
3124
+ arrayBuffer: options.arrayBuffer,
3125
+ byteOffset: options.byteOffset,
3126
+ releaseGltfJson: options.releaseGltfJson,
3127
+ asynchronous: options.asynchronous,
3128
+ incrementallyLoadTextures: options.incrementallyLoadTextures,
3129
+ upAxis: options.upAxis,
3130
+ forwardAxis: options.forwardAxis,
3131
+ loadAttributesFor2D: options.projectTo2D,
3132
+ enablePick: options.enablePick,
3133
+ loadIndicesForWireframe: options.enableDebugWireframe,
3134
+ loadPrimitiveOutline: options.enableShowOutline,
3135
+ loadForClassification: defined(options.classificationType),
3136
+ };
3137
+
3138
+ const loader = new B3dmLoader(loaderOptions);
3139
+
3140
+ try {
3141
+ await loader.load();
3142
+
3143
+ const modelOptions = makeModelOptions(loader, ModelType.TILE_B3DM, options);
3144
+ const model = new Model(modelOptions);
3145
+ return model;
3146
+ } catch (error) {
3147
+ loader.destroy();
3148
+ throw error;
3149
+ }
3150
+ };
3151
+
3152
+ /**
3153
+ * @private
3154
+ */
3155
+ Model.fromPnts = async function (options) {
3156
+ const loaderOptions = {
3157
+ arrayBuffer: options.arrayBuffer,
3158
+ byteOffset: options.byteOffset,
3159
+ loadAttributesFor2D: options.projectTo2D,
3160
+ };
3161
+ const loader = new PntsLoader(loaderOptions);
3162
+
3163
+ try {
3164
+ await loader.load();
3165
+ const modelOptions = makeModelOptions(loader, ModelType.TILE_PNTS, options);
3166
+ const model = new Model(modelOptions);
3167
+ return model;
3168
+ } catch (error) {
3169
+ loader.destroy();
3170
+ throw error;
3171
+ }
3172
+ };
3173
+
3174
+ /*
3175
+ * @private
3176
+ */
3177
+ Model.fromI3dm = async function (options) {
3178
+ const loaderOptions = {
3179
+ i3dmResource: options.resource,
3180
+ arrayBuffer: options.arrayBuffer,
3181
+ byteOffset: options.byteOffset,
3182
+ releaseGltfJson: options.releaseGltfJson,
3183
+ asynchronous: options.asynchronous,
3184
+ incrementallyLoadTextures: options.incrementallyLoadTextures,
3185
+ upAxis: options.upAxis,
3186
+ forwardAxis: options.forwardAxis,
3187
+ loadAttributesFor2D: options.projectTo2D,
3188
+ enablePick: options.enablePick,
3189
+ loadIndicesForWireframe: options.enableDebugWireframe,
3190
+ loadPrimitiveOutline: options.enableShowOutline,
3191
+ };
3192
+ const loader = new I3dmLoader(loaderOptions);
3193
+
3194
+ try {
3195
+ await loader.load();
3196
+
3197
+ const modelOptions = makeModelOptions(loader, ModelType.TILE_I3DM, options);
3198
+ const model = new Model(modelOptions);
3199
+ return model;
3200
+ } catch (error) {
3201
+ loader.destroy();
3202
+ throw error;
3203
+ }
3204
+ };
3205
+
3206
+ /*
3207
+ * @private
3208
+ */
3209
+ Model.fromGeoJson = async function (options) {
3210
+ const loaderOptions = {
3211
+ geoJson: options.geoJson,
3212
+ };
3213
+ const loader = new GeoJsonLoader(loaderOptions);
3214
+ const modelOptions = makeModelOptions(
3215
+ loader,
3216
+ ModelType.TILE_GEOJSON,
3217
+ options,
3218
+ );
3219
+ const model = new Model(modelOptions);
3220
+ return model;
3221
+ };
3222
+
3223
+ const scratchColor = new Color();
3224
+
3225
+ /**
3226
+ * @private
3227
+ */
3228
+ Model.prototype.applyColorAndShow = function (style) {
3229
+ const previousColor = Color.clone(this._color, scratchColor);
3230
+ const hasColorStyle = defined(style) && defined(style.color);
3231
+ const hasShowStyle = defined(style) && defined(style.show);
3232
+
3233
+ this._color = hasColorStyle
3234
+ ? style.color.evaluateColor(undefined, this._color)
3235
+ : Color.clone(Color.WHITE, this._color);
3236
+ this._show = hasShowStyle ? style.show.evaluate(undefined) : true;
3237
+
3238
+ if (isColorAlphaDirty(previousColor, this._color)) {
3239
+ this.resetDrawCommands();
3240
+ }
3241
+ };
3242
+
3243
+ /**
3244
+ * @private
3245
+ */
3246
+ Model.prototype.applyStyle = function (style) {
3247
+ const isPnts = this.type === ModelType.TILE_PNTS;
3248
+
3249
+ const hasFeatureTable =
3250
+ defined(this.featureTableId) &&
3251
+ this.featureTables[this.featureTableId].featuresLength > 0;
3252
+
3253
+ const propertyAttributes = defined(this.structuralMetadata)
3254
+ ? this.structuralMetadata.propertyAttributes
3255
+ : undefined;
3256
+ const hasPropertyAttributes =
3257
+ defined(propertyAttributes) && defined(propertyAttributes[0]);
3258
+
3259
+ // Point clouds will be styled on the GPU unless they contain a batch table.
3260
+ // That is, CPU styling will not be applied if:
3261
+ // - points have no metadata at all, or
3262
+ // - points have metadata stored as a property attribute
3263
+ if (isPnts && (!hasFeatureTable || hasPropertyAttributes)) {
3264
+ // Commands are rebuilt for point cloud styling since the new style may
3265
+ // contain different shader functions.
3266
+ this.resetDrawCommands();
3267
+ return;
3268
+ }
3269
+
3270
+ // The style is only set by the ModelFeatureTable. If there are no features,
3271
+ // the color and show from the style are directly applied.
3272
+ if (hasFeatureTable) {
3273
+ const featureTable = this.featureTables[this.featureTableId];
3274
+ featureTable.applyStyle(style);
3275
+ updateStyleCommandsNeeded(this, style);
3276
+ } else {
3277
+ this.applyColorAndShow(style);
3278
+ this._styleCommandsNeeded = undefined;
3279
+ }
3280
+ };
3281
+
3282
+ function makeModelOptions(loader, modelType, options) {
3283
+ return {
3284
+ loader: loader,
3285
+ type: modelType,
3286
+ resource: options.resource,
3287
+ show: options.show,
3288
+ modelMatrix: options.modelMatrix,
3289
+ scale: options.scale,
3290
+ enableVerticalExaggeration: options.enableVerticalExaggeration,
3291
+ minimumPixelSize: options.minimumPixelSize,
3292
+ maximumScale: options.maximumScale,
3293
+ id: options.id,
3294
+ allowPicking: options.allowPicking,
3295
+ clampAnimations: options.clampAnimations,
3296
+ shadows: options.shadows,
3297
+ debugShowBoundingVolume: options.debugShowBoundingVolume,
3298
+ enableDebugWireframe: options.enableDebugWireframe,
3299
+ debugWireframe: options.debugWireframe,
3300
+ cull: options.cull,
3301
+ opaquePass: options.opaquePass,
3302
+ customShader: options.customShader,
3303
+ content: options.content,
3304
+ heightReference: options.heightReference,
3305
+ scene: options.scene,
3306
+ distanceDisplayCondition: options.distanceDisplayCondition,
3307
+ color: options.color,
3308
+ colorBlendAmount: options.colorBlendAmount,
3309
+ colorBlendMode: options.colorBlendMode,
3310
+ silhouetteColor: options.silhouetteColor,
3311
+ silhouetteSize: options.silhouetteSize,
3312
+ enableShowOutline: options.enableShowOutline,
3313
+ showOutline: options.showOutline,
3314
+ outlineColor: options.outlineColor,
3315
+ clippingPlanes: options.clippingPlanes,
3316
+ clippingPolygons: options.clippingPolygons,
3317
+ lightColor: options.lightColor,
3318
+ imageBasedLighting: options.imageBasedLighting,
3319
+ backFaceCulling: options.backFaceCulling,
3320
+ credit: options.credit,
3321
+ showCreditsOnScreen: options.showCreditsOnScreen,
3322
+ splitDirection: options.splitDirection,
3323
+ projectTo2D: options.projectTo2D,
3324
+ enablePick: options.enablePick,
3325
+ featureIdLabel: options.featureIdLabel,
3326
+ instanceFeatureIdLabel: options.instanceFeatureIdLabel,
3327
+ pointCloudShading: options.pointCloudShading,
3328
+ classificationType: options.classificationType,
3329
+ pickObject: options.pickObject,
3330
+ };
3331
+ }
3332
+
3333
+ /**
3334
+ * Interface for the function that is called with the loaded gltf object once loaded.
3335
+ * @callback Model.GltfCallback
3336
+ *
3337
+ * @param {object} gltf The gltf object
3338
+ */
3339
+
3340
+ export default Model;