@hztxi/cesium-engine 25.0.6 → 26.2.1

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 (484) hide show
  1. package/Build/Workers/chunk-2GJAWJJT.js +1344 -0
  2. package/Build/Workers/chunk-2J2VS5RI.js +288 -0
  3. package/Build/Workers/chunk-2NCNUVAT.js +56 -0
  4. package/Build/Workers/chunk-2ZYRUVVU.js +301 -0
  5. package/Build/Workers/chunk-36IU7N4V.js +1284 -0
  6. package/Build/Workers/chunk-375SHKGW.js +44 -0
  7. package/Build/Workers/chunk-3BDLET5S.js +198 -0
  8. package/Build/Workers/chunk-3PRHI4KX.js +241 -0
  9. package/Build/Workers/chunk-3R6E2SH4.js +672 -0
  10. package/Build/Workers/chunk-3ZKKXEXL.js +415 -0
  11. package/Build/Workers/chunk-47KVKPTO.js +415 -0
  12. package/Build/Workers/chunk-4N227IPR.js +973 -0
  13. package/Build/Workers/chunk-4P6OAPBM.js +97 -0
  14. package/Build/Workers/chunk-4ZOLEPZK.js +519 -0
  15. package/Build/Workers/chunk-5EF3WWQG.js +352 -0
  16. package/Build/Workers/chunk-5FYUSABU.js +945 -0
  17. package/Build/Workers/chunk-5I76476T.js +288 -0
  18. package/Build/Workers/chunk-5PBZKBAP.js +511 -0
  19. package/Build/Workers/chunk-5RVAAW26.js +82 -0
  20. package/Build/Workers/chunk-5VWK76PO.js +511 -0
  21. package/Build/Workers/chunk-5WU37CUJ.js +630 -0
  22. package/Build/Workers/chunk-6EBDN5WS.js +97 -0
  23. package/Build/Workers/chunk-75HIWCEV.js +301 -0
  24. package/Build/Workers/chunk-77DBX23X.js +455 -0
  25. package/Build/Workers/chunk-7AMVPXZY.js +1992 -0
  26. package/Build/Workers/chunk-7BMDD6SM.js +124 -0
  27. package/Build/Workers/chunk-7GQOWCSN.js +959 -0
  28. package/Build/Workers/chunk-7J2ONMKC.js +198 -0
  29. package/Build/Workers/chunk-7MHUHXZZ.js +219 -0
  30. package/Build/Workers/chunk-7MQPHOAS.js +455 -0
  31. package/Build/Workers/chunk-7NJ5O7TP.js +387 -0
  32. package/Build/Workers/chunk-7OME2OKM.js +171 -0
  33. package/Build/Workers/chunk-7Y642MCO.js +352 -0
  34. package/Build/Workers/chunk-7ZFKBLUE.js +1054 -0
  35. package/Build/Workers/chunk-A2BROW3D.js +352 -0
  36. package/Build/Workers/chunk-A7LGY5XS.js +140 -0
  37. package/Build/Workers/chunk-AN2NVYL6.js +1483 -0
  38. package/Build/Workers/chunk-B4XOVZGA.js +476 -0
  39. package/Build/Workers/chunk-B7PT2VL5.js +630 -0
  40. package/Build/Workers/chunk-C6XQGBPV.js +476 -0
  41. package/Build/Workers/chunk-CAEC5DA2.js +57 -0
  42. package/Build/Workers/chunk-CBCOHH5O.js +837 -0
  43. package/Build/Workers/chunk-CDLPLYLV.js +1287 -0
  44. package/Build/Workers/chunk-CEKCKPFN.js +368 -0
  45. package/Build/Workers/chunk-CEMXKBQO.js +1800 -0
  46. package/Build/Workers/chunk-CHMDKP5L.js +2342 -0
  47. package/Build/Workers/chunk-CKW3STKA.js +1067 -0
  48. package/Build/Workers/chunk-CV5RICKT.js +1992 -0
  49. package/Build/Workers/chunk-CWGB3D4Z.js +257 -0
  50. package/Build/Workers/chunk-DBWSISJT.js +56 -0
  51. package/Build/Workers/chunk-DQEUGBGA.js +2719 -0
  52. package/Build/Workers/chunk-DSBSPPPJ.js +1344 -0
  53. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  54. package/Build/Workers/chunk-DUBE5G2H.js +497 -0
  55. package/Build/Workers/chunk-DXD7OPSP.js +1992 -0
  56. package/Build/Workers/chunk-DXECZBSA.js +368 -0
  57. package/Build/Workers/chunk-DZIRO6ZK.js +682 -0
  58. package/Build/Workers/chunk-E4CRPGX5.js +140 -0
  59. package/Build/Workers/chunk-E4IVMEBH.js +52 -0
  60. package/Build/Workers/chunk-E4PBNWWK.js +58 -0
  61. package/Build/Workers/chunk-E5MWOMVC.js +57 -0
  62. package/Build/Workers/chunk-ECN3VUMA.js +73 -0
  63. package/Build/Workers/chunk-ECSKVHUB.js +476 -0
  64. package/Build/Workers/chunk-EE3XBOQI.js +1483 -0
  65. package/Build/Workers/chunk-EHA2ZDPZ.js +415 -0
  66. package/Build/Workers/chunk-EKEKPAJF.js +454 -0
  67. package/Build/Workers/chunk-EL4B5CSQ.js +162 -0
  68. package/Build/Workers/chunk-EOHKUXPX.js +198 -0
  69. package/Build/Workers/chunk-ERENMHG2.js +754 -0
  70. package/Build/Workers/chunk-ESQGFRLZ.js +163 -0
  71. package/Build/Workers/chunk-FAYBQGKO.js +219 -0
  72. package/Build/Workers/chunk-FGCXPEZM.js +3201 -0
  73. package/Build/Workers/chunk-FHCRXPA6.js +44 -0
  74. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  75. package/Build/Workers/chunk-FQDYQG4P.js +1284 -0
  76. package/Build/Workers/chunk-FTCBY5HH.js +138 -0
  77. package/Build/Workers/chunk-FV4OWDV4.js +9230 -0
  78. package/Build/Workers/chunk-FYRNNQSL.js +280 -0
  79. package/Build/Workers/chunk-GI5RWJAY.js +101 -0
  80. package/Build/Workers/chunk-GNLMSDRO.js +945 -0
  81. package/Build/Workers/chunk-GVUJ6O3R.js +73 -0
  82. package/Build/Workers/chunk-HCGU7OCG.js +97 -0
  83. package/Build/Workers/chunk-HRIPVWSC.js +58 -0
  84. package/Build/Workers/chunk-IC3BR6SC.js +102 -0
  85. package/Build/Workers/chunk-IU3YAYPT.js +1344 -0
  86. package/Build/Workers/chunk-J7MZR7B2.js +1483 -0
  87. package/Build/Workers/chunk-JMF4ATAS.js +3794 -0
  88. package/Build/Workers/chunk-KEJKMITY.js +82 -0
  89. package/Build/Workers/chunk-KSIEJYNL.js +3822 -0
  90. package/Build/Workers/chunk-KT3GG7AW.js +754 -0
  91. package/Build/Workers/chunk-KW2QZDUS.js +147 -0
  92. package/Build/Workers/chunk-KYCEM22I.js +1800 -0
  93. package/Build/Workers/chunk-L6B5XPBL.js +73 -0
  94. package/Build/Workers/chunk-LGJXN2VP.js +352 -0
  95. package/Build/Workers/chunk-LJTQW46H.js +57 -0
  96. package/Build/Workers/chunk-LMQGYJME.js +672 -0
  97. package/Build/Workers/chunk-LOBYJQA4.js +76 -0
  98. package/Build/Workers/chunk-LOF32O7F.js +163 -0
  99. package/Build/Workers/chunk-LOTIJA7D.js +124 -0
  100. package/Build/Workers/chunk-LY2UG3HV.js +38 -0
  101. package/Build/Workers/chunk-M7Z3MPAX.js +973 -0
  102. package/Build/Workers/chunk-MHNLTQHO.js +3201 -0
  103. package/Build/Workers/chunk-ML7OMD72.js +2342 -0
  104. package/Build/Workers/chunk-NBTGXEMT.js +945 -0
  105. package/Build/Workers/chunk-NCPJBP24.js +140 -0
  106. package/Build/Workers/chunk-NFY5V6MR.js +102 -0
  107. package/Build/Workers/chunk-NQZC37F7.js +38 -0
  108. package/Build/Workers/chunk-O3X3D2Z3.js +352 -0
  109. package/Build/Workers/chunk-OBUIHPKF.js +352 -0
  110. package/Build/Workers/chunk-OYPSUED3.js +1067 -0
  111. package/Build/Workers/chunk-PAEWNYIV.js +138 -0
  112. package/Build/Workers/chunk-PANJ7YH6.js +102 -0
  113. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  114. package/Build/Workers/chunk-PIIUGRQD.js +387 -0
  115. package/Build/Workers/chunk-POKD22OT.js +2719 -0
  116. package/Build/Workers/chunk-PQMA7MFS.js +9237 -0
  117. package/Build/Workers/chunk-PURIPUSY.js +682 -0
  118. package/Build/Workers/chunk-QIOOTLWN.js +56 -0
  119. package/Build/Workers/chunk-QQZPPXY4.js +3822 -0
  120. package/Build/Workers/chunk-QUPRALOD.js +101 -0
  121. package/Build/Workers/chunk-QXLQLGL2.js +1067 -0
  122. package/Build/Workers/chunk-RBEVHHXK.js +3201 -0
  123. package/Build/Workers/chunk-RC4YC3VU.js +278 -0
  124. package/Build/Workers/chunk-RGNNWVR6.js +171 -0
  125. package/Build/Workers/chunk-RHO5HV52.js +305 -0
  126. package/Build/Workers/chunk-SBBIEHYT.js +44 -0
  127. package/Build/Workers/chunk-SVCZUP5R.js +837 -0
  128. package/Build/Workers/chunk-SWVZTU6X.js +305 -0
  129. package/Build/Workers/chunk-T3EUPM5A.js +454 -0
  130. package/Build/Workers/chunk-TA6IU2XL.js +171 -0
  131. package/Build/Workers/chunk-TBHW5UME.js +973 -0
  132. package/Build/Workers/chunk-TLSGD5TR.js +280 -0
  133. package/Build/Workers/chunk-TOXDLWKZ.js +368 -0
  134. package/Build/Workers/chunk-TPOX6IOR.js +1054 -0
  135. package/Build/Workers/chunk-TZBM6TAB.js +124 -0
  136. package/Build/Workers/chunk-U2OY6MX6.js +398 -0
  137. package/Build/Workers/chunk-UCY4B5EV.js +288 -0
  138. package/Build/Workers/chunk-ULNBTI6R.js +138 -0
  139. package/Build/Workers/chunk-UMUS2AQQ.js +398 -0
  140. package/Build/Workers/chunk-UZ7GTP2L.js +162 -0
  141. package/Build/Workers/chunk-V52FEPCV.js +754 -0
  142. package/Build/Workers/chunk-VBEXZBG5.js +147 -0
  143. package/Build/Workers/chunk-VC76B6GM.js +959 -0
  144. package/Build/Workers/chunk-VCUOYHWC.js +519 -0
  145. package/Build/Workers/chunk-VJIL5H6K.js +2719 -0
  146. package/Build/Workers/chunk-VMF7KOGY.js +162 -0
  147. package/Build/Workers/chunk-W3C7OHXF.js +387 -0
  148. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  149. package/Build/Workers/chunk-WB5GWYDP.js +455 -0
  150. package/Build/Workers/chunk-WN6MAL25.js +682 -0
  151. package/Build/Workers/chunk-WTR7KMQA.js +693 -0
  152. package/Build/Workers/chunk-WTTFMU3P.js +241 -0
  153. package/Build/Workers/chunk-WULONJZC.js +1800 -0
  154. package/Build/Workers/chunk-WZPMAVTV.js +511 -0
  155. package/Build/Workers/chunk-XHT5SVP4.js +52 -0
  156. package/Build/Workers/chunk-XITBARMZ.js +2342 -0
  157. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  158. package/Build/Workers/chunk-XZ6HDXKM.js +76 -0
  159. package/Build/Workers/chunk-Y7KVUJEB.js +219 -0
  160. package/Build/Workers/chunk-Y7NDFEQ3.js +398 -0
  161. package/Build/Workers/chunk-YBBQDYX2.js +301 -0
  162. package/Build/Workers/chunk-YHPYPVAB.js +837 -0
  163. package/Build/Workers/chunk-YNKK6BXY.js +454 -0
  164. package/Build/Workers/chunk-YRAJ74HR.js +305 -0
  165. package/Build/Workers/chunk-YULTZK5O.js +147 -0
  166. package/Build/Workers/chunk-YUNQYP3Z.js +9237 -0
  167. package/Build/Workers/chunk-Z6JV4DZG.js +1046 -0
  168. package/Build/Workers/chunk-Z7BONRW2.js +241 -0
  169. package/Build/Workers/chunk-ZK2R3DEJ.js +1054 -0
  170. package/Build/Workers/chunk-ZTK5EBUI.js +76 -0
  171. package/Build/Workers/chunk-ZZPDORJK.js +56 -0
  172. package/Build/Workers/combineGeometry.js +24 -24
  173. package/Build/Workers/createBoxGeometry.js +18 -18
  174. package/Build/Workers/createBoxOutlineGeometry.js +18 -18
  175. package/Build/Workers/createCircleGeometry.js +26 -26
  176. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  177. package/Build/Workers/createCoplanarPolygonGeometry.js +39 -39
  178. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -33
  179. package/Build/Workers/createCorridorGeometry.js +36 -37
  180. package/Build/Workers/createCorridorOutlineGeometry.js +34 -35
  181. package/Build/Workers/createCylinderGeometry.js +20 -20
  182. package/Build/Workers/createCylinderOutlineGeometry.js +20 -20
  183. package/Build/Workers/createEllipseGeometry.js +26 -26
  184. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  185. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  187. package/Build/Workers/createFrustumGeometry.js +18 -18
  188. package/Build/Workers/createFrustumOutlineGeometry.js +20 -20
  189. package/Build/Workers/createGeometry.js +25 -24
  190. package/Build/Workers/createGroundPolylineGeometry.js +98 -34
  191. package/Build/Workers/createMvtTile.js +111 -19
  192. package/Build/Workers/createPlaneGeometry.js +18 -18
  193. package/Build/Workers/createPlaneOutlineGeometry.js +17 -17
  194. package/Build/Workers/createPolygonGeometry.js +36 -36
  195. package/Build/Workers/createPolygonOutlineGeometry.js +33 -33
  196. package/Build/Workers/createPolylineGeometry.js +28 -28
  197. package/Build/Workers/createPolylineVolumeGeometry.js +38 -36
  198. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -31
  199. package/Build/Workers/createRectangleGeometry.js +29 -29
  200. package/Build/Workers/createRectangleOutlineGeometry.js +23 -23
  201. package/Build/Workers/createSimplePolylineGeometry.js +26 -26
  202. package/Build/Workers/createSphereGeometry.js +19 -19
  203. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  204. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  205. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  206. package/Build/Workers/createVectorTileGeometries.js +24 -24
  207. package/Build/Workers/createVectorTilePoints.js +13 -13
  208. package/Build/Workers/createVectorTilePolygons.js +22 -22
  209. package/Build/Workers/createVectorTilePolylines.js +14 -14
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  212. package/Build/Workers/createVerticesFromHeightmap.js +23 -23
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  214. package/Build/Workers/createWallGeometry.js +26 -26
  215. package/Build/Workers/createWallOutlineGeometry.js +26 -26
  216. package/Build/Workers/decodeDraco.js +10 -10
  217. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +993 -2334
  218. package/Build/Workers/decodeI3S.js +10 -10
  219. package/Build/Workers/gaussianSplatSorter.js +4 -4
  220. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  221. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  222. package/Build/Workers/transcodeKTX2.js +6 -6
  223. package/Build/Workers/transferTypedArrayTest.js +1 -1
  224. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  225. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  226. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  227. package/Source/Core/BoundingRectangle.js +6 -8
  228. package/Source/Core/BoundingSphere.js +0 -3
  229. package/Source/Core/Cartesian2.js +1 -1
  230. package/Source/Core/Cartesian3.js +1 -1
  231. package/Source/Core/Cartesian4.js +1 -1
  232. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  233. package/Source/Core/Color.js +1 -0
  234. package/Source/Core/ComponentDatatype.js +35 -0
  235. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  236. package/Source/Core/CorridorGeometry.js +2 -4
  237. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  238. package/Source/Core/EarthOrientationParameters.js +2 -2
  239. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  240. package/Source/Core/EllipsoidGeodesic.js +3 -3
  241. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  242. package/Source/Core/GroundPolylineGeometry.js +99 -4
  243. package/Source/Core/Heap.js +1 -1
  244. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  245. package/Source/Core/InterpolationAlgorithm.js +58 -50
  246. package/Source/Core/Ion.js +1 -1
  247. package/Source/Core/JulianDate.js +1 -1
  248. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  249. package/Source/Core/LinearApproximation.js +69 -66
  250. package/Source/Core/MapProjection.js +1 -0
  251. package/Source/Core/Math.js +59 -0
  252. package/Source/Core/Matrix2.js +3 -3
  253. package/Source/Core/Matrix3.js +3 -3
  254. package/Source/Core/Matrix4.js +1 -1
  255. package/Source/Core/OrthographicFrustum.js +1 -1
  256. package/Source/Core/PerspectiveFrustum.js +1 -1
  257. package/Source/Core/PolygonGeometry.js +2 -2
  258. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  259. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  260. package/Source/Core/PolylineGeometry.js +1 -1
  261. package/Source/Core/PolylinePipeline.js +9 -2
  262. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  263. package/Source/Core/Rectangle.js +7 -1
  264. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  265. package/Source/Core/Resource.js +1 -1
  266. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  267. package/Source/Core/SimplePolylineGeometry.js +1 -1
  268. package/Source/Core/TerrainEncoding.js +2 -2
  269. package/Source/Core/TerrainMesh.js +3 -3
  270. package/Source/Core/TerrainPicker.js +180 -168
  271. package/Source/Core/TimeIntervalCollection.js +1 -3
  272. package/Source/Core/Tipsify.js +1 -1
  273. package/Source/Core/Transforms.js +5 -1
  274. package/Source/Core/VectorPipeline.js +1117 -0
  275. package/Source/Core/VectorProvider.js +429 -0
  276. package/Source/Core/WallOutlineGeometry.js +1 -1
  277. package/Source/Core/createColorRamp.js +37 -0
  278. package/Source/Core/getTimestamp.js +4 -2
  279. package/Source/Core/globalTypes.js +25 -0
  280. package/Source/Core/writeTextToCanvas.js +1 -0
  281. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  282. package/Source/DataSources/CzmlDataSource.js +14 -0
  283. package/Source/DataSources/DataSourceDisplay.js +1 -1
  284. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  285. package/Source/DataSources/GeometryVisualizer.js +1 -1
  286. package/Source/DataSources/KmlDataSource.js +529 -557
  287. package/Source/DataSources/PathGraphics.js +8 -1
  288. package/Source/DataSources/PathMode.js +27 -0
  289. package/Source/DataSources/PathVisualizer.js +298 -1
  290. package/Source/DataSources/PolylineGeometryUpdater.js +125 -7
  291. package/Source/DataSources/PolylineVisualizer.js +1 -1
  292. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  293. package/Source/Renderer/AutomaticUniforms.js +23 -0
  294. package/Source/Renderer/Context.js +9 -3
  295. package/Source/Renderer/DrawCommand.js +22 -0
  296. package/Source/Renderer/Framebuffer.js +4 -0
  297. package/Source/Renderer/Pass.js +11 -9
  298. package/Source/Renderer/Texture.js +12 -1
  299. package/Source/Renderer/UniformState.js +7 -0
  300. package/Source/Renderer/VertexArray.js +1 -1
  301. package/Source/Renderer/createUniform.js +346 -239
  302. package/Source/Renderer/createUniformArray.js +494 -381
  303. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  304. package/Source/Scene/ArcGisMapService.js +1 -1
  305. package/Source/Scene/Billboard.js +2 -1
  306. package/Source/Scene/BillboardCollection.js +15 -5
  307. package/Source/Scene/BillboardTexture.js +5 -3
  308. package/Source/Scene/BufferPointCollection.js +11 -1
  309. package/Source/Scene/BufferPolygonCollection.js +26 -0
  310. package/Source/Scene/BufferPolylineCollection.js +2 -0
  311. package/Source/Scene/BufferPrimitiveCollection.js +105 -32
  312. package/Source/Scene/Camera.js +137 -8
  313. package/Source/Scene/CameraEventAggregator.js +30 -18
  314. package/Source/Scene/CameraFlightPath.js +17 -0
  315. package/Source/Scene/Cesium3DTile.js +102 -4
  316. package/Source/Scene/Cesium3DTileContent.js +195 -254
  317. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  318. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  319. package/Source/Scene/Cesium3DTileStyle.js +40 -0
  320. package/Source/Scene/Cesium3DTileset.js +213 -8
  321. package/Source/Scene/Cesium3DTilesetTraversal.js +14 -0
  322. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  323. package/Source/Scene/ClippingPolygon.js +2 -0
  324. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  325. package/Source/Scene/ColumbusWorlds.js +190 -0
  326. package/Source/Scene/Composite3DTileContent.js +254 -292
  327. package/Source/Scene/Controllers/Controller.js +63 -0
  328. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  329. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  330. package/Source/Scene/Controllers/MouseButton.js +32 -0
  331. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  332. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  333. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  334. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  335. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  336. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  337. package/Source/Scene/DerivedCommand.js +98 -0
  338. package/Source/Scene/EdgeDisplayMode.js +50 -0
  339. package/Source/Scene/EdgeFramebuffer.js +1 -5
  340. package/Source/Scene/Empty3DTileContent.js +100 -132
  341. package/Source/Scene/Expression.js +6 -8
  342. package/Source/Scene/FrameState.js +27 -0
  343. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  344. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  345. package/Source/Scene/Geometry3DTileContent.js +151 -185
  346. package/Source/Scene/Globe.js +110 -22
  347. package/Source/Scene/GlobeDepth.js +243 -6
  348. package/Source/Scene/GlobeSurfaceShaderSet.js +637 -540
  349. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  350. package/Source/Scene/GlobeSurfaceTileProvider.js +2289 -1842
  351. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  352. package/Source/Scene/GltfLoader.js +146 -3
  353. package/Source/Scene/GltfLoaderUtil.js +20 -4
  354. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  355. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  356. package/Source/Scene/GltfSpzLoader.js +1 -1
  357. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  358. package/Source/Scene/GroundPolylinePrimitive.js +2 -1
  359. package/Source/Scene/I3SDataProvider.js +1 -1
  360. package/Source/Scene/I3SLayer.js +1 -1
  361. package/Source/Scene/I3SNode.js +2 -2
  362. package/Source/Scene/ImageryLayer.js +2 -2
  363. package/Source/Scene/ImageryLayerCollection.js +190 -6
  364. package/Source/Scene/Implicit3DTileContent.js +192 -216
  365. package/Source/Scene/ImplicitTileCoordinates.js +17 -0
  366. package/Source/Scene/IonImageryProvider.js +1 -5
  367. package/Source/Scene/Label.js +4 -4
  368. package/Source/Scene/LabelCollection.js +4 -1
  369. package/Source/Scene/MVTDataProvider.js +555 -0
  370. package/Source/Scene/Material.js +1 -0
  371. package/Source/Scene/Model/B3dmLoader.js +1 -2
  372. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +82 -312
  373. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  374. package/Source/Scene/Model/I3dmLoader.js +1 -1
  375. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  376. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  377. package/Source/Scene/Model/Model.js +45 -10
  378. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  379. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  380. package/Source/Scene/Model/ModelDrawCommand.js +180 -8
  381. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  382. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  383. package/Source/Scene/Model/ModelUtility.js +5 -0
  384. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  385. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  386. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +645 -153
  387. package/Source/Scene/ModelComponents.js +112 -0
  388. package/Source/Scene/Multiple3DTileContent.js +291 -334
  389. package/Source/Scene/MvtLabelCandidates.js +295 -0
  390. package/Source/Scene/MvtLabelManager.js +1069 -0
  391. package/Source/Scene/Picking.js +19 -3
  392. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  393. package/Source/Scene/PntsParser.js +1 -1
  394. package/Source/Scene/Polyline.js +32 -5
  395. package/Source/Scene/PolylineCollection.js +39 -0
  396. package/Source/Scene/PostProcessStage.js +4 -2
  397. package/Source/Scene/Primitive.js +12 -13
  398. package/Source/Scene/PrimitivePipeline.js +158 -28
  399. package/Source/Scene/QuadtreePrimitive.js +3 -2
  400. package/Source/Scene/ResourceCache.js +7 -4
  401. package/Source/Scene/ResourceCacheKey.js +21 -18
  402. package/Source/Scene/Scene.js +655 -6
  403. package/Source/Scene/SceneTransforms.js +18 -0
  404. package/Source/Scene/ScreenSpaceCameraController.js +12 -3
  405. package/Source/Scene/ShadowMap.js +9 -3
  406. package/Source/Scene/ShadowMapShader.js +50 -2
  407. package/Source/Scene/SnapFramebuffer.js +121 -0
  408. package/Source/Scene/Snapping.js +184 -0
  409. package/Source/Scene/TerrainFillMesh.js +3 -2
  410. package/Source/Scene/Tileset3DTileContent.js +113 -146
  411. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +543 -0
  412. package/Source/Scene/Vector3DTileContent.js +207 -237
  413. package/Source/Scene/VectorGltf3DTileContent.js +185 -45
  414. package/Source/Scene/View.js +10 -8
  415. package/Source/Scene/VoxelPrimitive.js +159 -175
  416. package/Source/Scene/VoxelProvider.js +64 -91
  417. package/Source/Scene/VoxelTraversal.js +1 -1
  418. package/Source/Scene/buildVectorGltfFromMVT.js +1208 -0
  419. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  420. package/Source/Scene/createElevationBandMaterial.js +1 -1
  421. package/Source/Scene/decodeMVT.js +877 -0
  422. package/Source/Scene/findMeshoptExtension.js +23 -0
  423. package/Source/Scene/renderBufferPointCollection.js +114 -64
  424. package/Source/Scene/renderBufferPolygonCollection.js +245 -53
  425. package/Source/Scene/renderBufferPolylineCollection.js +271 -145
  426. package/Source/Shaders/BillboardCollectionVS.glsl +23 -25
  427. package/Source/Shaders/BillboardCollectionVS.js +23 -25
  428. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  429. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  430. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  431. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  432. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  433. package/Source/Shaders/BufferPolygonMaterialFS.js +13 -0
  434. package/Source/Shaders/BufferPolygonMaterialVS.glsl +22 -4
  435. package/Source/Shaders/BufferPolygonMaterialVS.js +23 -5
  436. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  437. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  443. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  444. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  445. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  446. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  447. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  448. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  449. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  450. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  451. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  452. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  453. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  454. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  455. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  456. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  457. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  458. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  459. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  460. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  461. package/Source/Shaders/GlobeFS.glsl +10 -6
  462. package/Source/Shaders/GlobeFS.js +10 -6
  463. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  464. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  465. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  466. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  467. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  468. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  469. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  470. package/Source/Shaders/Model/ModelFS.js +105 -0
  471. package/Source/Shaders/PolylineShadowVolumeFS.glsl +14 -0
  472. package/Source/Shaders/PolylineShadowVolumeFS.js +14 -0
  473. package/Source/Shaders/RestoreDepth.glsl +8 -0
  474. package/Source/Shaders/RestoreDepth.js +10 -0
  475. package/Source/Shaders/VectorCommon.glsl +178 -0
  476. package/Source/Shaders/VectorCommon.js +180 -0
  477. package/Source/ThirdParty/zip-module.wasm +0 -0
  478. package/Source/Widget/CesiumWidget.js +30 -0
  479. package/Source/Workers/createMvtTile.js +39 -0
  480. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  481. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  482. package/index.d.ts +535 -1393
  483. package/index.js +125 -93
  484. package/package.json +13 -13
@@ -76,6 +76,8 @@ function Cesium3DTileStyle(style) {
76
76
 
77
77
  // Vector Tiles in 3D Tiles 2.0.
78
78
  this._lineWidth = undefined;
79
+ this._polygonOutlineColor = undefined;
80
+ this._polygonOutlineWidth = undefined;
79
81
 
80
82
  this._colorShaderFunction = undefined;
81
83
  this._showShaderFunction = undefined;
@@ -122,6 +124,8 @@ function setup(that, styleJson) {
122
124
 
123
125
  // Vector Tiles in 3D Tiles 2.0.
124
126
  that.lineWidth = styleJson.lineWidth;
127
+ that.polygonOutlineColor = styleJson.polygonOutlineColor;
128
+ that.polygonOutlineWidth = styleJson.polygonOutlineWidth;
125
129
 
126
130
  const meta = {};
127
131
  if (defined(styleJson.meta)) {
@@ -1290,6 +1294,42 @@ Object.defineProperties(Cesium3DTileStyle.prototype, {
1290
1294
  },
1291
1295
  },
1292
1296
 
1297
+ /**
1298
+ * Internal-only, supported in Vector Tiles with 3D Tiles 2.0.
1299
+ * @memberof Cesium3DTileStyle.prototype
1300
+ * @type {StyleExpression}
1301
+ * @ignore
1302
+ */
1303
+ polygonOutlineColor: {
1304
+ get: function () {
1305
+ return this._polygonOutlineColor;
1306
+ },
1307
+ set: function (value) {
1308
+ this._polygonOutlineColor = getExpression(this, value);
1309
+ this._style.polygonOutlineColor = getJsonFromExpression(
1310
+ this._polygonOutlineColor,
1311
+ );
1312
+ },
1313
+ },
1314
+
1315
+ /**
1316
+ * Internal-only, supported in Vector Tiles with 3D Tiles 2.0.
1317
+ * @memberof Cesium3DTileStyle.prototype
1318
+ * @type {StyleExpression}
1319
+ * @ignore
1320
+ */
1321
+ polygonOutlineWidth: {
1322
+ get: function () {
1323
+ return this._polygonOutlineWidth;
1324
+ },
1325
+ set: function (value) {
1326
+ this._polygonOutlineWidth = getExpression(this, value);
1327
+ this._style.polygonOutlineWidth = getJsonFromExpression(
1328
+ this._polygonOutlineWidth,
1329
+ );
1330
+ },
1331
+ },
1332
+
1293
1333
  /**
1294
1334
  * Internal-only, supported in Vector Tiles with 3D Tiles 2.0.
1295
1335
  * @memberof Cesium3DTileStyle.prototype
@@ -42,6 +42,7 @@ import Cesium3DTilesetStatistics from "./Cesium3DTilesetStatistics.js";
42
42
  import Cesium3DTileStyleEngine from "./Cesium3DTileStyleEngine.js";
43
43
  import ClippingPlaneCollection from "./ClippingPlaneCollection.js";
44
44
  import ClippingPolygonCollection from "./ClippingPolygonCollection.js";
45
+ import EdgeDisplayMode from "./EdgeDisplayMode.js";
45
46
  import hasExtension from "./hasExtension.js";
46
47
  import ImplicitTileset from "./ImplicitTileset.js";
47
48
  import ImplicitTileCoordinates from "./ImplicitTileCoordinates.js";
@@ -75,6 +76,8 @@ import ImageryLayerCollection from "./ImageryLayerCollection.js";
75
76
  * @property {Axis} [modelForwardAxis=Axis.X] Which axis is considered forward when loading models for tile contents.
76
77
  * @property {ShadowMode} [shadows=ShadowMode.ENABLED] Determines whether the tileset casts or receives shadows from light sources.
77
78
  * @property {number} [maximumScreenSpaceError=16] The maximum screen space error used to drive level of detail refinement.
79
+ * @property {object} [uniformLevelMode] Evaluates tile refinement against a shared
80
+ * per-frame reference distance so visible tiles converge on a uniform level.
78
81
  * @property {number} [cacheBytes=536870912] The size (in bytes) to which the tile cache will be trimmed, if the cache contains tiles not needed for the current view.
79
82
  * @property {number} [maximumCacheOverflowBytes=536870912] The maximum additional memory (in bytes) to allow for cache headroom, if more than {@link Cesium3DTileset#cacheBytes} are needed for the current view.
80
83
  * @property {boolean} [cullWithChildrenBounds=true] Optimization option. Whether to cull tiles using the union of their children bounding volumes.
@@ -99,10 +102,11 @@ import ImageryLayerCollection from "./ImageryLayerCollection.js";
99
102
  * @property {number} [skipLevels=1] When <code>skipLevelOfDetail</code> is <code>true</code>, a constant defining the minimum number of levels to skip when loading tiles. When it is 0, no levels are skipped. Used in conjunction with <code>skipScreenSpaceErrorFactor</code> to determine which tiles to load.
100
103
  * @property {boolean} [immediatelyLoadDesiredLevelOfDetail=false] When <code>skipLevelOfDetail</code> is <code>true</code>, only tiles that meet the maximum screen space error will ever be downloaded. Skipping factors are ignored and just the desired tiles are loaded.
101
104
  * @property {boolean} [loadSiblings=false] When <code>skipLevelOfDetail</code> is <code>true</code>, determines whether siblings of visible tiles are always downloaded during traversal.
105
+ * @property {number} [maximumSimultaneousTileRequests=Infinity] Maximum number of this tileset's tile network requests that may be pending at once.
102
106
  * @property {ClippingPlaneCollection} [clippingPlanes] The {@link ClippingPlaneCollection} used to selectively disable rendering the tileset.
103
107
  * @property {ClippingPolygonCollection} [clippingPolygons] The {@link ClippingPolygonCollection} used to selectively disable rendering the tileset.
104
108
  * @property {ClassificationType} [classificationType] Determines whether terrain, 3D Tiles or both will be classified by this tileset. See {@link Cesium3DTileset#classificationType} for details about restrictions and limitations.
105
- * @property {HeightReference} [heightReference] Sets the {@link HeightReference} for point features in vector tilesets.
109
+ * @property {HeightReference} [heightReference] Sets the {@link HeightReference} for features in vector tilesets.
106
110
  * @property {Scene} [scene] The {@link CesiumWidget#scene} that the tileset will be rendered in, required for tilesets that specify a {@link heightReference} value for clamping 3D Tiles vector data content- like points, lines, and labels- to terrain or 3D tiles.
107
111
  * @property {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid determining the size and shape of the globe.
108
112
  * @property {object} [pointCloudShading] Options for constructing a {@link PointCloudShading} object to control point attenuation based on geometric error and lighting.
@@ -128,6 +132,7 @@ import ImageryLayerCollection from "./ImageryLayerCollection.js";
128
132
  * @property {boolean} [debugColorizeTiles=false] For debugging only. When true, assigns a random color to each tile.
129
133
  * @property {boolean} [enableDebugWireframe=false] For debugging only. This must be true for debugWireframe to work in WebGL1. This cannot be set after the tileset has been created.
130
134
  * @property {boolean} [debugWireframe=false] For debugging only. When true, render's each tile's content as a wireframe.
135
+ * @property {EdgeDisplayMode} [edgeDisplayMode=EdgeDisplayMode.SURFACES_ONLY] Controls how edges from the {@link https://github.com/KhronosGroup/glTF/pull/2479|EXT_mesh_primitive_edge_visibility} glTF extension are rendered relative to surface geometry.
131
136
  * @property {boolean} [debugShowBoundingVolume=false] For debugging only. When true, renders the bounding volume for each tile.
132
137
  * @property {boolean} [debugShowContentBoundingVolume=false] For debugging only. When true, renders the bounding volume for each tile's content.
133
138
  * @property {boolean} [debugShowViewerRequestVolume=false] For debugging only. When true, renders the viewer request volume for each tile.
@@ -242,6 +247,17 @@ function Cesium3DTileset(options) {
242
247
 
243
248
  this._maximumScreenSpaceError = options.maximumScreenSpaceError ?? 16;
244
249
  this._memoryAdjustedScreenSpaceError = this._maximumScreenSpaceError;
250
+ this._uniformLevelMode = options.uniformLevelMode;
251
+ this._uniformLevelState = {
252
+ active: false,
253
+ engage: 0.0,
254
+ referenceDistance: undefined,
255
+ deviationFactor: 8.0,
256
+ coarsenFactor: 2.0,
257
+ };
258
+ this._nearestTileDistanceThisFrame = undefined;
259
+ this._nearestTileDistanceLastFrame = undefined;
260
+ this._uniformLevelFrameNumber = -1;
245
261
 
246
262
  this._cacheBytes = options.cacheBytes ?? 512 * 1024 * 1024;
247
263
  //>>includeStart('debug', pragmas.debug);
@@ -759,6 +775,30 @@ function Cesium3DTileset(options) {
759
775
 
760
776
  this._disableSkipLevelOfDetail = false;
761
777
 
778
+ /**
779
+ * Optional runtime content codec injected by data providers
780
+ * (e.g. {@link MVTDataProvider}). When set, {@link Cesium3DTile} bypasses
781
+ * the standard magic-number / URL based content dispatch and delegates
782
+ * content construction to <code>codec.createContent(...)</code>. This
783
+ * keeps format-specific logic out of the runtime.
784
+ *
785
+ * Shape:
786
+ * {
787
+ * contentType: string, // diagnostic only
788
+ * disableSkipLevelOfDetail?: boolean,
789
+ * createContent: (tileset, tile, resource, arrayBuffer) => Promise<Cesium3DTileContent>,
790
+ * missingTilePolicy?: { statusCodes?: number[] }
791
+ * // A missing tile policy specifies HTTP Status Codes to be interpreted
792
+ * // as "no content", and rendered as empty tiles, rather than throwing
793
+ * // errors or retrying the request. Allows tiles to be statically hosted,
794
+ * // without generating and serving unnecessary content for empty tiles.
795
+ * }
796
+ *
797
+ * @type {object|undefined}
798
+ * @ignore
799
+ */
800
+ this._runtimeContentCodec = undefined;
801
+
762
802
  /**
763
803
  * The screen space error that must be reached before skipping levels of detail.
764
804
  * <p>
@@ -820,6 +860,16 @@ function Cesium3DTileset(options) {
820
860
  */
821
861
  this.loadSiblings = options.loadSiblings ?? false;
822
862
 
863
+ /**
864
+ * Maximum number of this tileset's tile network requests that may be
865
+ * pending at once.
866
+ *
867
+ * @type {number}
868
+ * @default Infinity
869
+ */
870
+ this.maximumSimultaneousTileRequests =
871
+ options.maximumSimultaneousTileRequests ?? Number.POSITIVE_INFINITY;
872
+
823
873
  this._clippingPlanes = undefined;
824
874
  if (defined(options.clippingPlanes)) {
825
875
  ClippingPlaneCollection.setOwner(
@@ -957,6 +1007,20 @@ function Cesium3DTileset(options) {
957
1007
  );
958
1008
  }
959
1009
 
1010
+ /**
1011
+ * Controls how edges from the
1012
+ * {@link https://github.com/KhronosGroup/glTF/pull/2479|EXT_mesh_primitive_edge_visibility}
1013
+ * glTF extension are rendered relative to surface geometry. Tile content
1014
+ * primitives that do not declare the extension are unaffected.
1015
+ *
1016
+ * @type {EdgeDisplayMode}
1017
+ * @default EdgeDisplayMode.SURFACES_ONLY
1018
+ *
1019
+ * @experimental This feature is using part of the glTF spec that is not yet final and is subject to change without Cesium's standard deprecation policy.
1020
+ */
1021
+ this.edgeDisplayMode =
1022
+ options.edgeDisplayMode ?? EdgeDisplayMode.SURFACES_ONLY;
1023
+
960
1024
  /**
961
1025
  * This property is for debugging only; it is not optimized for production use.
962
1026
  * <p>
@@ -1515,6 +1579,27 @@ Object.defineProperties(Cesium3DTileset.prototype, {
1515
1579
  },
1516
1580
  },
1517
1581
 
1582
+ /**
1583
+ * Uniform level-of-detail configuration. When enabled, perspective screen-space
1584
+ * error is blended toward the error at a single reference distance, preventing
1585
+ * visible tiles at different distances from selecting different levels solely
1586
+ * because of distance.
1587
+ *
1588
+ * @memberof Cesium3DTileset.prototype
1589
+ *
1590
+ * @type {object|undefined}
1591
+ */
1592
+ uniformLevelMode: {
1593
+ get: function () {
1594
+ return this._uniformLevelMode;
1595
+ },
1596
+ set: function (value) {
1597
+ this._uniformLevelMode = value;
1598
+ this._uniformLevelState.active = false;
1599
+ this._uniformLevelState.referenceDistance = undefined;
1600
+ },
1601
+ },
1602
+
1518
1603
  /**
1519
1604
  * The amount of GPU memory (in bytes) used to cache tiles. This memory usage is estimated from
1520
1605
  * geometry, textures, and batch table textures of loaded tiles. For point clouds, this value also
@@ -2632,7 +2717,7 @@ function sortTilesByPriority(a, b) {
2632
2717
 
2633
2718
  /**
2634
2719
  * Perform any pass invariant tasks here. Called after the render pass.
2635
- * @private
2720
+ * @ignore
2636
2721
  * @param {FrameState} frameState
2637
2722
  */
2638
2723
  Cesium3DTileset.prototype.postPassesUpdate = function (frameState) {
@@ -2655,7 +2740,7 @@ Cesium3DTileset.prototype.postPassesUpdate = function (frameState) {
2655
2740
 
2656
2741
  /**
2657
2742
  * Perform any pass invariant tasks here. Called before any passes are executed.
2658
- * @private
2743
+ * @ignore
2659
2744
  * @param {FrameState} frameState
2660
2745
  */
2661
2746
  Cesium3DTileset.prototype.prePassesUpdate = function (frameState) {
@@ -2708,11 +2793,14 @@ function cancelOutOfViewRequests(tileset, frameState) {
2708
2793
 
2709
2794
  // NOTE: This is framerate dependant so make sure the threshold check is small
2710
2795
  const outOfView = frameState.frameNumber - tile._touchedFrame >= 1;
2796
+ const noLongerDesired =
2797
+ tileset.immediatelyLoadDesiredLevelOfDetail &&
2798
+ tile._desiredFrame !== frameState.frameNumber;
2711
2799
  if (tile._contentState !== Cesium3DTileContentState.LOADING) {
2712
2800
  // No longer fetching from host, don't need to track it anymore. Gets marked as LOADING in Cesium3DTile::requestContent().
2713
2801
  ++removeCount;
2714
2802
  continue;
2715
- } else if (outOfView) {
2803
+ } else if (outOfView || noLongerDesired) {
2716
2804
  // RequestScheduler will take care of cancelling it
2717
2805
  tile.cancelRequests();
2718
2806
  ++removeCount;
@@ -2736,7 +2824,13 @@ function cancelOutOfViewRequests(tileset, frameState) {
2736
2824
  function requestTiles(tileset) {
2737
2825
  const requestedTiles = tileset._requestedTiles;
2738
2826
  requestedTiles.sort(sortTilesByPriority);
2739
- for (let i = 0; i < requestedTiles.length; ++i) {
2827
+ const availableRequests = Math.max(
2828
+ 0,
2829
+ tileset.maximumSimultaneousTileRequests -
2830
+ tileset._requestedTilesInFlight.length,
2831
+ );
2832
+ const requestCount = Math.min(requestedTiles.length, availableRequests);
2833
+ for (let i = 0; i < requestCount; ++i) {
2740
2834
  requestContent(tileset, requestedTiles[i]);
2741
2835
  }
2742
2836
  }
@@ -2915,6 +3009,115 @@ function decreaseScreenSpaceError(tileset) {
2915
3009
  );
2916
3010
  }
2917
3011
 
3012
+ const uniformLevelScratchUp = new Cartesian3();
3013
+ const uniformLevelScratchRay = new Ray();
3014
+
3015
+ /**
3016
+ * Compute the shared reference distance and engagement used by uniform-level SSE.
3017
+ * @private
3018
+ * @param {Cesium3DTileset} tileset
3019
+ * @param {FrameState} frameState
3020
+ */
3021
+ function updateUniformLevelState(tileset, frameState) {
3022
+ const state = tileset._uniformLevelState;
3023
+ if (tileset._uniformLevelFrameNumber !== frameState.frameNumber) {
3024
+ tileset._uniformLevelFrameNumber = frameState.frameNumber;
3025
+ tileset._nearestTileDistanceLastFrame =
3026
+ tileset._nearestTileDistanceThisFrame;
3027
+ tileset._nearestTileDistanceThisFrame = undefined;
3028
+ }
3029
+ state.active = false;
3030
+
3031
+ const mode = tileset._uniformLevelMode;
3032
+ if (!defined(mode) || mode.enabled !== true) {
3033
+ state.referenceDistance = undefined;
3034
+ return;
3035
+ }
3036
+
3037
+ const camera = frameState.camera;
3038
+ const alignment = CesiumMath.clamp(
3039
+ -Cartesian3.dot(
3040
+ Cartesian3.normalize(camera.positionWC, uniformLevelScratchUp),
3041
+ camera.directionWC,
3042
+ ),
3043
+ 0.0,
3044
+ 1.0,
3045
+ );
3046
+
3047
+ let engage = 1.0;
3048
+ const pitchRange = mode.pitchRangeDegrees;
3049
+ if (defined(pitchRange) && pitchRange !== null) {
3050
+ const fullAlignment = Math.sin(
3051
+ CesiumMath.toRadians(Math.abs(pitchRange[0])),
3052
+ );
3053
+ const noneAlignment = Math.sin(
3054
+ CesiumMath.toRadians(Math.abs(pitchRange[1])),
3055
+ );
3056
+ const alignmentRange = Math.max(fullAlignment - noneAlignment, 1e-6);
3057
+ let interpolation = (alignment - noneAlignment) / alignmentRange;
3058
+ interpolation = CesiumMath.clamp(interpolation, 0.0, 1.0);
3059
+ engage = interpolation * interpolation * (3.0 - 2.0 * interpolation);
3060
+ }
3061
+ if (engage <= 0.0) {
3062
+ return;
3063
+ }
3064
+
3065
+ let referenceDistance;
3066
+ const nearestDistance = tileset._nearestTileDistanceLastFrame;
3067
+ if (mode.reference === "nearest") {
3068
+ referenceDistance = nearestDistance;
3069
+ } else if (frameState.mode === SceneMode.COLUMBUS_VIEW) {
3070
+ const directionX = camera.directionWC.x;
3071
+ if (directionX !== 0.0) {
3072
+ const scalar = -camera.positionWC.x / directionX;
3073
+ referenceDistance = scalar > 0.0 ? scalar : undefined;
3074
+ }
3075
+ } else {
3076
+ Cartesian3.clone(camera.positionWC, uniformLevelScratchRay.origin);
3077
+ Cartesian3.clone(camera.directionWC, uniformLevelScratchRay.direction);
3078
+ const intersection = IntersectionTests.rayEllipsoid(
3079
+ uniformLevelScratchRay,
3080
+ tileset.ellipsoid,
3081
+ );
3082
+ referenceDistance = defined(intersection) ? intersection.start : undefined;
3083
+ }
3084
+
3085
+ if (!defined(referenceDistance) && defined(nearestDistance)) {
3086
+ referenceDistance = nearestDistance;
3087
+ }
3088
+ if (
3089
+ defined(referenceDistance) &&
3090
+ defined(nearestDistance) &&
3091
+ nearestDistance > 0.0
3092
+ ) {
3093
+ referenceDistance = Math.min(referenceDistance, 8.0 * nearestDistance);
3094
+ }
3095
+ if (!defined(referenceDistance) || referenceDistance <= 0.0) {
3096
+ return;
3097
+ }
3098
+
3099
+ const previous = state.referenceDistance;
3100
+ if (defined(previous) && previous > 0.0) {
3101
+ const ratio = referenceDistance / previous;
3102
+ if (ratio >= 0.5 && ratio <= 2.0) {
3103
+ referenceDistance = previous + 0.25 * (referenceDistance - previous);
3104
+ }
3105
+ }
3106
+
3107
+ const maxDeviationLevels = CesiumMath.clamp(
3108
+ mode.maxDeviationLevels ?? 3,
3109
+ 0,
3110
+ 10,
3111
+ );
3112
+ const maxCoarsenLevels = CesiumMath.clamp(mode.maxCoarsenLevels ?? 1, 0, 10);
3113
+
3114
+ state.referenceDistance = referenceDistance;
3115
+ state.engage = engage;
3116
+ state.deviationFactor = 2 ** maxDeviationLevels;
3117
+ state.coarsenFactor = 2 ** maxCoarsenLevels;
3118
+ state.active = true;
3119
+ }
3120
+
2918
3121
  const scratchCartesian = new Cartesian3();
2919
3122
 
2920
3123
  const stringOptions = {
@@ -3393,6 +3596,8 @@ function update(tileset, frameState, passStatistics, passOptions) {
3393
3596
  // Update any tracked min max values
3394
3597
  resetMinimumMaximum(tileset);
3395
3598
 
3599
+ updateUniformLevelState(tileset, frameState);
3600
+
3396
3601
  detectModelMatrixChanged(tileset, frameState);
3397
3602
  tileset._cullRequestsWhileMoving =
3398
3603
  tileset.cullRequestsWhileMoving && !tileset._modelMatrixChanged;
@@ -3477,7 +3682,7 @@ Cesium3DTileset.prototype.getTraversal = function (passOptions) {
3477
3682
  };
3478
3683
 
3479
3684
  /**
3480
- * @private
3685
+ * @ignore
3481
3686
  * @param {FrameState} frameState
3482
3687
  */
3483
3688
  Cesium3DTileset.prototype.update = function (frameState) {
@@ -3485,7 +3690,7 @@ Cesium3DTileset.prototype.update = function (frameState) {
3485
3690
  };
3486
3691
 
3487
3692
  /**
3488
- * @private
3693
+ * @ignore
3489
3694
  * @param {FrameState} frameState
3490
3695
  * @param {object} tilesetPassState
3491
3696
  */
@@ -3670,11 +3875,11 @@ Cesium3DTileset.supportedExtensions = {
3670
3875
  "3DTILES_metadata": true,
3671
3876
  "3DTILES_implicit_tiling": true,
3672
3877
  "3DTILES_content_gltf": true,
3878
+ "3DTILES_content_gltf_vector": true,
3673
3879
  "3DTILES_multiple_contents": true,
3674
3880
  "3DTILES_bounding_volume_S2": true,
3675
3881
  "3DTILES_batch_table_hierarchy": true,
3676
3882
  "3DTILES_draco_point_compression": true,
3677
- CESIUM_mesh_vector: true,
3678
3883
  MAXAR_content_geojson: true,
3679
3884
  };
3680
3885
 
@@ -130,6 +130,9 @@ Cesium3DTilesetTraversal.touchTile = function (tile, frameState) {
130
130
  */
131
131
  Cesium3DTilesetTraversal.loadTile = function (tile, frameState) {
132
132
  const { tileset } = tile;
133
+ if (tileset.immediatelyLoadDesiredLevelOfDetail) {
134
+ tile._desiredFrame = frameState.frameNumber;
135
+ }
133
136
  if (
134
137
  tile._requestedFrame === frameState.frameNumber ||
135
138
  (!tile.hasUnloadedRenderableContent && !tile.contentExpired)
@@ -189,6 +192,17 @@ function isOnScreenLongEnough(tile, frameState) {
189
192
  */
190
193
  Cesium3DTilesetTraversal.updateTile = function (tile, frameState) {
191
194
  updateTileVisibility(tile, frameState);
195
+ const uniformMode = tile.tileset.uniformLevelMode;
196
+ if (
197
+ defined(uniformMode) &&
198
+ uniformMode.enabled === true &&
199
+ defined(tile._distanceToCamera)
200
+ ) {
201
+ const nearest = tile.tileset._nearestTileDistanceThisFrame;
202
+ if (!defined(nearest) || tile._distanceToCamera < nearest) {
203
+ tile.tileset._nearestTileDistanceThisFrame = tile._distanceToCamera;
204
+ }
205
+ }
192
206
  tile.updateExpiration();
193
207
 
194
208
  tile._wasMinPriorityChild = false;
@@ -545,8 +545,8 @@ ClippingPlaneCollection.prototype.update = function (frameState) {
545
545
  }
546
546
  if (!this._multipleDirtyPlanes) {
547
547
  // partial updates possible
548
- let offsetX = 0;
549
- let offsetY = 0;
548
+ let offsetX;
549
+ let offsetY;
550
550
  if (useFloatTexture) {
551
551
  offsetY = Math.floor(dirtyIndex / clippingPlanesTexture.width);
552
552
  offsetX = Math.floor(dirtyIndex - offsetY * clippingPlanesTexture.width);
@@ -605,7 +605,7 @@ const scratchMatrix = new Matrix4();
605
605
  const scratchPlane = new Plane(Cartesian3.UNIT_X, 0.0);
606
606
  /**
607
607
  * Determines the type intersection with the planes of this ClippingPlaneCollection instance and the specified {@link TileBoundingVolume}.
608
- * @private
608
+ * @ignore
609
609
  *
610
610
  * @param {object} tileBoundingVolume The volume to determine the intersection with the planes.
611
611
  * @param {Matrix4} [transform] An optional, additional matrix to transform the plane to world coordinates.
@@ -656,7 +656,7 @@ ClippingPlaneCollection.prototype.computeIntersectionWithBoundingVolume =
656
656
  * @param {ClippingPlaneCollection} [clippingPlaneCollection] A ClippingPlaneCollection (or undefined) being attached to an object
657
657
  * @param {object} owner An Object that should receive the new ClippingPlaneCollection
658
658
  * @param {string} key The Key for the Object to reference the ClippingPlaneCollection
659
- * @private
659
+ * @ignore
660
660
  */
661
661
  ClippingPlaneCollection.setOwner = function (
662
662
  clippingPlaneCollection,
@@ -84,6 +84,7 @@ function ClippingPolygon(options) {
84
84
  *
85
85
  * @param {Cartesian3[]|undefined} input The input array
86
86
  * @returns {Cartesian3[]|undefined} The copy
87
+ * @ignore
87
88
  */
88
89
  function copyArrayCartesian3(input) {
89
90
  if (!defined(input)) {
@@ -110,6 +111,7 @@ function copyArrayCartesian3(input) {
110
111
  * @param {Cartesian3[]|undefined} a The first array
111
112
  * @param {Cartesian3[]|undefined} b The second array
112
113
  * @returns {boolean} Whether the arrays are equal
114
+ * @ignore
113
115
  */
114
116
  function equalsArrayCartesian3(a, b) {
115
117
  if (!defined(a) && !defined(b)) {
@@ -897,7 +897,7 @@ const scratchRectangleIntersection = new Rectangle();
897
897
  const scratchRectanglePolygon = new Rectangle();
898
898
  /**
899
899
  * Determines the type intersection with the polygons of this ClippingPolygonCollection instance and the specified {@link TileBoundingVolume}.
900
- * @private
900
+ * @ignore
901
901
  *
902
902
  * @param {object} tileBoundingVolume The volume to determine the intersection with the polygons.
903
903
  * @param {Ellipsoid} [ellipsoid=Ellipsoid.default] The ellipsoid on which the bounding volumes are defined.
@@ -963,7 +963,7 @@ ClippingPolygonCollection.prototype.computeIntersectionWithBoundingVolume =
963
963
  * @param {ClippingPolygonCollection} [clippingPolygonsCollection] A ClippingPolygonCollection (or undefined) being attached to an object
964
964
  * @param {object} owner An Object that should receive the new ClippingPolygonCollection
965
965
  * @param {string} key The Key for the Object to reference the ClippingPolygonCollection
966
- * @private
966
+ * @ignore
967
967
  */
968
968
  ClippingPolygonCollection.setOwner = function (
969
969
  clippingPolygonsCollection,