@cesium/engine 14.0.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/Build/Workers/{chunk-WVNLSTOF.js → chunk-2TQ64T4I.js} +2 -2
  2. package/Build/Workers/{chunk-ED6GLQTK.js → chunk-34EWMUFG.js} +1 -1
  3. package/Build/Workers/{chunk-HEZHXDYB.js → chunk-4LHK6E47.js} +1 -1
  4. package/Build/Workers/{chunk-7EO56M5R.js → chunk-5TN3LG2T.js} +2 -2
  5. package/Build/Workers/{chunk-7ZB2RVIQ.js → chunk-6B7KGA5P.js} +16 -19
  6. package/Build/Workers/{chunk-3QLSKXKF.js → chunk-B75OO2DU.js} +7 -10
  7. package/Build/Workers/{chunk-Q4ZVWJXX.js → chunk-COOLDICB.js} +9 -11
  8. package/Build/Workers/{chunk-3PIZQT3I.js → chunk-CQNYYX3N.js} +4 -4
  9. package/Build/Workers/{chunk-JPDKYBLF.js → chunk-CUJH7PS5.js} +27 -29
  10. package/Build/Workers/{chunk-CI2HEJFC.js → chunk-EAWYQ44R.js} +39 -41
  11. package/Build/Workers/{chunk-SDIDRZDG.js → chunk-EJJDBH5W.js} +7 -7
  12. package/Build/Workers/{chunk-5KWRW7YL.js → chunk-EO44CO62.js} +2 -2
  13. package/Build/Workers/{chunk-N2XAJBC6.js → chunk-EOIUWEAK.js} +26 -28
  14. package/Build/Workers/{chunk-YJX7X577.js → chunk-ERKJ7IWJ.js} +21 -23
  15. package/Build/Workers/{chunk-J7IH4EYI.js → chunk-ESED7XBA.js} +13 -16
  16. package/Build/Workers/{chunk-F4CUH4MR.js → chunk-FW2OX42E.js} +18 -21
  17. package/Build/Workers/{chunk-FX4R4MTH.js → chunk-GH6I7PBY.js} +6 -9
  18. package/Build/Workers/{chunk-FYGLNDKG.js → chunk-GQVSADCI.js} +19 -22
  19. package/Build/Workers/{chunk-TY4DKOWR.js → chunk-ICU72UPR.js} +4 -4
  20. package/Build/Workers/{chunk-DT5NFR5C.js → chunk-ILVAXLMC.js} +7 -7
  21. package/Build/Workers/{chunk-ZGFIT57T.js → chunk-KKV6XBF5.js} +27 -23
  22. package/Build/Workers/{chunk-HKHQ3EDR.js → chunk-KV6TEHXY.js} +4 -4
  23. package/Build/Workers/{chunk-B4GSRXE3.js → chunk-LCSH4ZOB.js} +7 -10
  24. package/Build/Workers/{chunk-LNSWJ43X.js → chunk-M5J3S3HY.js} +17 -26
  25. package/Build/Workers/{chunk-LJBJM6VI.js → chunk-NB6D74SQ.js} +6 -6
  26. package/Build/Workers/{chunk-4CHMVQTQ.js → chunk-NREPBWCX.js} +14 -14
  27. package/Build/Workers/{chunk-PWF4EY5P.js → chunk-OD4Q7HE5.js} +4 -4
  28. package/Build/Workers/{chunk-77XPS7ZA.js → chunk-OMFZ4IN6.js} +15 -24
  29. package/Build/Workers/{chunk-HUFQVUMY.js → chunk-OMZGZVHI.js} +12 -17
  30. package/Build/Workers/{chunk-LOZ4NKY3.js → chunk-ORIMMEHO.js} +18 -20
  31. package/Build/Workers/{chunk-5S5OOA6U.js → chunk-OWLBD6BL.js} +1 -1
  32. package/Build/Workers/{chunk-VCNOFQYH.js → chunk-PB6SE3SZ.js} +9 -12
  33. package/Build/Workers/{chunk-3JBEPBPL.js → chunk-PT6U7UNY.js} +25 -30
  34. package/Build/Workers/{chunk-G3BVMPWG.js → chunk-RWAFHSX3.js} +2 -2
  35. package/Build/Workers/{chunk-KHWLAQVA.js → chunk-S2NKKWYE.js} +1 -1
  36. package/Build/Workers/{chunk-FFBJDW4A.js → chunk-S3IQBSIB.js} +6 -6
  37. package/Build/Workers/{chunk-3LYROPON.js → chunk-SCUQTTCN.js} +16 -19
  38. package/Build/Workers/{chunk-ZMNLEL6W.js → chunk-TBSA4MNF.js} +5 -8
  39. package/Build/Workers/{chunk-EWDGNOJE.js → chunk-TEUGW455.js} +9 -12
  40. package/Build/Workers/{chunk-XK4OP6VA.js → chunk-TL5YKZJF.js} +33 -41
  41. package/Build/Workers/{chunk-KM6MITPF.js → chunk-V4Y7C25O.js} +46 -42
  42. package/Build/Workers/{chunk-OMXHEJTK.js → chunk-VNDECE6N.js} +2 -2
  43. package/Build/Workers/{chunk-LS3KVHYY.js → chunk-VVTAI2TN.js} +6 -9
  44. package/Build/Workers/{chunk-WEHZP4SE.js → chunk-VXAAIRJ7.js} +129 -146
  45. package/Build/Workers/{chunk-MVM4JV5U.js → chunk-WGIOUM2S.js} +9 -12
  46. package/Build/Workers/{chunk-JHBPC4LK.js → chunk-XF6EBVKV.js} +7 -7
  47. package/Build/Workers/{chunk-D7ZBZPHV.js → chunk-XMKE4XB2.js} +5 -5
  48. package/Build/Workers/{chunk-7UHKH6M3.js → chunk-YA4XALD5.js} +34 -36
  49. package/Build/Workers/{chunk-KSYBJA4M.js → chunk-YFXXUW6U.js} +6 -12
  50. package/Build/Workers/{chunk-Z3QWTHI7.js → chunk-YL26OJCG.js} +21 -23
  51. package/Build/Workers/{chunk-K4AH3TDT.js → chunk-ZLJDDRGB.js} +14 -17
  52. package/Build/Workers/combineGeometry.js +21 -22
  53. package/Build/Workers/createBoxGeometry.js +15 -16
  54. package/Build/Workers/createBoxOutlineGeometry.js +20 -25
  55. package/Build/Workers/createCircleGeometry.js +26 -28
  56. package/Build/Workers/createCircleOutlineGeometry.js +19 -21
  57. package/Build/Workers/createCoplanarPolygonGeometry.js +38 -42
  58. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +34 -36
  59. package/Build/Workers/createCorridorGeometry.js +42 -49
  60. package/Build/Workers/createCorridorOutlineGeometry.js +36 -43
  61. package/Build/Workers/createCylinderGeometry.js +17 -18
  62. package/Build/Workers/createCylinderOutlineGeometry.js +23 -25
  63. package/Build/Workers/createEllipseGeometry.js +23 -24
  64. package/Build/Workers/createEllipseOutlineGeometry.js +16 -17
  65. package/Build/Workers/createEllipsoidGeometry.js +16 -17
  66. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -16
  67. package/Build/Workers/createFrustumGeometry.js +15 -16
  68. package/Build/Workers/createFrustumOutlineGeometry.js +18 -21
  69. package/Build/Workers/createGeometry.js +22 -25
  70. package/Build/Workers/createGroundPolylineGeometry.js +34 -42
  71. package/Build/Workers/createPlaneGeometry.js +19 -21
  72. package/Build/Workers/createPlaneOutlineGeometry.js +12 -13
  73. package/Build/Workers/createPolygonGeometry.js +45 -50
  74. package/Build/Workers/createPolygonOutlineGeometry.js +39 -44
  75. package/Build/Workers/createPolylineGeometry.js +33 -40
  76. package/Build/Workers/createPolylineVolumeGeometry.js +37 -44
  77. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -39
  78. package/Build/Workers/createRectangleGeometry.js +41 -51
  79. package/Build/Workers/createRectangleOutlineGeometry.js +28 -33
  80. package/Build/Workers/createSimplePolylineGeometry.js +29 -34
  81. package/Build/Workers/createSphereGeometry.js +17 -20
  82. package/Build/Workers/createSphereOutlineGeometry.js +16 -19
  83. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  84. package/Build/Workers/createVectorTileClampedPolylines.js +12 -13
  85. package/Build/Workers/createVectorTileGeometries.js +21 -22
  86. package/Build/Workers/createVectorTilePoints.js +11 -12
  87. package/Build/Workers/createVectorTilePolygons.js +19 -20
  88. package/Build/Workers/createVectorTilePolylines.js +12 -13
  89. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -23
  90. package/Build/Workers/createVerticesFromHeightmap.js +31 -58
  91. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -18
  92. package/Build/Workers/createWallGeometry.js +30 -35
  93. package/Build/Workers/createWallOutlineGeometry.js +28 -33
  94. package/Build/Workers/decodeDraco.js +10 -11
  95. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  96. package/Build/Workers/decodeI3S.js +10 -16
  97. package/Build/Workers/transcodeKTX2.js +50 -46
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -20
  100. package/Source/Core/ApproximateTerrainHeights.js +2 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +6 -6
  102. package/Source/Core/AxisAlignedBoundingBox.js +2 -3
  103. package/Source/Core/BingMapsGeocoderService.js +2 -2
  104. package/Source/Core/BoundingRectangle.js +7 -8
  105. package/Source/Core/BoundingSphere.js +10 -11
  106. package/Source/Core/BoxGeometry.js +7 -7
  107. package/Source/Core/BoxOutlineGeometry.js +7 -9
  108. package/Source/Core/Cartesian2.js +4 -5
  109. package/Source/Core/Cartesian3.js +7 -8
  110. package/Source/Core/Cartesian4.js +6 -7
  111. package/Source/Core/Cartographic.js +5 -6
  112. package/Source/Core/CatmullRomSpline.js +2 -2
  113. package/Source/Core/CesiumTerrainProvider.js +11 -14
  114. package/Source/Core/CircleGeometry.js +2 -2
  115. package/Source/Core/CircleOutlineGeometry.js +2 -2
  116. package/Source/Core/Clock.js +7 -10
  117. package/Source/Core/Color.js +28 -28
  118. package/Source/Core/ColorGeometryInstanceAttribute.js +4 -5
  119. package/Source/Core/ComponentDatatype.js +4 -6
  120. package/Source/Core/CoplanarPolygonGeometry.js +8 -10
  121. package/Source/Core/CoplanarPolygonOutlineGeometry.js +5 -5
  122. package/Source/Core/CorridorGeometry.js +15 -20
  123. package/Source/Core/CorridorOutlineGeometry.js +10 -15
  124. package/Source/Core/Credit.js +1 -2
  125. package/Source/Core/CullingVolume.js +1 -2
  126. package/Source/Core/CustomHeightmapTerrainProvider.js +3 -3
  127. package/Source/Core/CylinderGeometry.js +7 -7
  128. package/Source/Core/CylinderOutlineGeometry.js +7 -7
  129. package/Source/Core/DistanceDisplayCondition.js +4 -5
  130. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +2 -3
  131. package/Source/Core/EarthOrientationParameters.js +4 -4
  132. package/Source/Core/EllipseGeometry.js +17 -23
  133. package/Source/Core/EllipseOutlineGeometry.js +12 -15
  134. package/Source/Core/Ellipsoid.js +7 -8
  135. package/Source/Core/EllipsoidGeodesic.js +1 -2
  136. package/Source/Core/EllipsoidGeometry.js +15 -15
  137. package/Source/Core/EllipsoidOutlineGeometry.js +15 -15
  138. package/Source/Core/EllipsoidRhumbLine.js +3 -4
  139. package/Source/Core/EllipsoidTangentPlane.js +1 -2
  140. package/Source/Core/EllipsoidTerrainProvider.js +4 -4
  141. package/Source/Core/EllipsoidalOccluder.js +2 -3
  142. package/Source/Core/FeatureDetection.js +1 -2
  143. package/Source/Core/Frozen.js +24 -0
  144. package/Source/Core/FrustumGeometry.js +7 -8
  145. package/Source/Core/FrustumOutlineGeometry.js +3 -4
  146. package/Source/Core/GeographicProjection.js +1 -2
  147. package/Source/Core/GeographicTilingScheme.js +6 -12
  148. package/Source/Core/Geometry.js +4 -7
  149. package/Source/Core/GeometryAttribute.js +3 -3
  150. package/Source/Core/GeometryAttributes.js +2 -2
  151. package/Source/Core/GeometryInstance.js +4 -6
  152. package/Source/Core/GeometryInstanceAttribute.js +3 -3
  153. package/Source/Core/GeometryPipeline.js +3 -4
  154. package/Source/Core/GoogleEarthEnterpriseMetadata.js +13 -24
  155. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +9 -12
  156. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +3 -3
  157. package/Source/Core/GoogleGeocoderService.js +2 -2
  158. package/Source/Core/GregorianDate.js +8 -9
  159. package/Source/Core/GroundPolylineGeometry.js +8 -8
  160. package/Source/Core/HeadingPitchRange.js +3 -4
  161. package/Source/Core/HeadingPitchRoll.js +3 -4
  162. package/Source/Core/Heap.js +3 -4
  163. package/Source/Core/HeightmapTerrainData.js +22 -38
  164. package/Source/Core/HeightmapTessellator.js +21 -37
  165. package/Source/Core/HermitePolynomialApproximation.js +1 -2
  166. package/Source/Core/HermiteSpline.js +5 -5
  167. package/Source/Core/ITwinPlatform.js +66 -12
  168. package/Source/Core/Iau2006XysData.js +8 -10
  169. package/Source/Core/IntersectionTests.js +1 -2
  170. package/Source/Core/Interval.js +2 -4
  171. package/Source/Core/Ion.js +1 -1
  172. package/Source/Core/IonGeocoderService.js +6 -10
  173. package/Source/Core/IonResource.js +6 -6
  174. package/Source/Core/JulianDate.js +11 -12
  175. package/Source/Core/LinearSpline.js +2 -2
  176. package/Source/Core/ManagedArray.js +2 -3
  177. package/Source/Core/Math.js +36 -27
  178. package/Source/Core/Matrix2.js +7 -8
  179. package/Source/Core/Matrix3.js +12 -13
  180. package/Source/Core/Matrix4.js +28 -28
  181. package/Source/Core/MorphWeightSpline.js +2 -2
  182. package/Source/Core/NearFarScalar.js +6 -7
  183. package/Source/Core/Occluder.js +1 -2
  184. package/Source/Core/OffsetGeometryInstanceAttribute.js +3 -4
  185. package/Source/Core/OpenCageGeocoderService.js +1 -2
  186. package/Source/Core/OrientedBoundingBox.js +7 -8
  187. package/Source/Core/OrthographicFrustum.js +6 -6
  188. package/Source/Core/OrthographicOffCenterFrustum.js +4 -4
  189. package/Source/Core/PerspectiveFrustum.js +8 -8
  190. package/Source/Core/PerspectiveOffCenterFrustum.js +4 -4
  191. package/Source/Core/PlaneGeometry.js +5 -5
  192. package/Source/Core/PolygonGeometry.js +16 -19
  193. package/Source/Core/PolygonGeometryLibrary.js +27 -6
  194. package/Source/Core/PolygonOutlineGeometry.js +11 -14
  195. package/Source/Core/PolygonPipeline.js +5 -6
  196. package/Source/Core/PolylineGeometry.js +10 -15
  197. package/Source/Core/PolylinePipeline.js +7 -14
  198. package/Source/Core/PolylineVolumeGeometry.js +8 -13
  199. package/Source/Core/PolylineVolumeOutlineGeometry.js +7 -12
  200. package/Source/Core/QuantizedMeshTerrainData.js +12 -16
  201. package/Source/Core/Quaternion.js +7 -8
  202. package/Source/Core/QuaternionSpline.js +2 -2
  203. package/Source/Core/Ray.js +2 -3
  204. package/Source/Core/Rectangle.js +18 -19
  205. package/Source/Core/RectangleGeometry.js +17 -25
  206. package/Source/Core/RectangleGeometryLibrary.js +1 -1
  207. package/Source/Core/RectangleOutlineGeometry.js +10 -13
  208. package/Source/Core/Request.js +6 -6
  209. package/Source/Core/RequestScheduler.js +4 -6
  210. package/Source/Core/Resource.js +13 -16
  211. package/Source/Core/S2Cell.js +2 -3
  212. package/Source/Core/ScreenSpaceEventHandler.js +1 -2
  213. package/Source/Core/ShowGeometryInstanceAttribute.js +1 -2
  214. package/Source/Core/Simon1994PlanetaryPositions.js +9 -9
  215. package/Source/Core/SimplePolylineGeometry.js +8 -11
  216. package/Source/Core/SphereGeometry.js +1 -2
  217. package/Source/Core/SphereOutlineGeometry.js +1 -2
  218. package/Source/Core/Spherical.js +4 -5
  219. package/Source/Core/Spline.js +1 -2
  220. package/Source/Core/SteppedSpline.js +2 -2
  221. package/Source/Core/TaskProcessor.js +2 -9
  222. package/Source/Core/TerrainData.js +1 -1
  223. package/Source/Core/TerrainEncoding.js +4 -11
  224. package/Source/Core/TerrainMesh.js +1 -3
  225. package/Source/Core/TerrainProvider.js +1 -1
  226. package/Source/Core/TexturePacker.js +166 -0
  227. package/Source/Core/TileProviderError.js +1 -2
  228. package/Source/Core/TimeInterval.js +7 -7
  229. package/Source/Core/TimeIntervalCollection.js +7 -7
  230. package/Source/Core/Tipsify.js +5 -5
  231. package/Source/Core/Transforms.js +10 -15
  232. package/Source/Core/TranslationRotationScale.js +3 -6
  233. package/Source/Core/VRTheWorldTerrainProvider.js +5 -5
  234. package/Source/Core/VertexFormat.js +10 -10
  235. package/Source/Core/VerticalExaggeration.js +1 -1
  236. package/Source/Core/VideoSynchronizer.js +6 -6
  237. package/Source/Core/WallGeometry.js +8 -11
  238. package/Source/Core/WallOutlineGeometry.js +7 -10
  239. package/Source/Core/WebMercatorProjection.js +1 -2
  240. package/Source/Core/WebMercatorTilingScheme.js +5 -11
  241. package/Source/Core/arrayRemoveDuplicates.js +1 -2
  242. package/Source/Core/clone.js +1 -3
  243. package/Source/Core/combine.js +1 -2
  244. package/Source/Core/createWorldBathymetryAsync.js +3 -3
  245. package/Source/Core/createWorldTerrainAsync.js +4 -4
  246. package/Source/Core/defaultValue.js +20 -1
  247. package/Source/Core/destroyObject.js +1 -5
  248. package/Source/Core/getAbsoluteUri.js +1 -2
  249. package/Source/Core/getMagic.js +1 -2
  250. package/Source/Core/getStringFromTypedArray.js +2 -3
  251. package/Source/Core/loadImageFromTypedArray.js +2 -6
  252. package/Source/Core/oneTimeWarning.js +1 -2
  253. package/Source/Core/writeTextToCanvas.js +10 -13
  254. package/Source/DataSources/BillboardGraphics.js +27 -53
  255. package/Source/DataSources/BillboardVisualizer.js +3 -3
  256. package/Source/DataSources/BoxGraphics.js +13 -18
  257. package/Source/DataSources/CallbackPositionProperty.js +1 -2
  258. package/Source/DataSources/Cesium3DTilesetGraphics.js +6 -8
  259. package/Source/DataSources/CheckerboardMaterialProperty.js +2 -2
  260. package/Source/DataSources/CompositePositionProperty.js +1 -2
  261. package/Source/DataSources/ConstantPositionProperty.js +1 -2
  262. package/Source/DataSources/CorridorGraphics.js +23 -35
  263. package/Source/DataSources/CylinderGraphics.js +18 -25
  264. package/Source/DataSources/CzmlDataSource.js +34 -60
  265. package/Source/DataSources/DataSourceClock.js +12 -13
  266. package/Source/DataSources/DataSourceCollection.js +2 -3
  267. package/Source/DataSources/DataSourceDisplay.js +2 -5
  268. package/Source/DataSources/EllipseGraphics.js +26 -40
  269. package/Source/DataSources/EllipsoidGeometryUpdater.js +1 -2
  270. package/Source/DataSources/EllipsoidGraphics.js +21 -32
  271. package/Source/DataSources/Entity.js +7 -9
  272. package/Source/DataSources/EntityCluster.js +53 -28
  273. package/Source/DataSources/EntityView.js +1 -2
  274. package/Source/DataSources/GeoJsonDataSource.js +12 -12
  275. package/Source/DataSources/GeometryUpdater.js +12 -17
  276. package/Source/DataSources/GeometryVisualizer.js +2 -3
  277. package/Source/DataSources/GpxDataSource.js +4 -7
  278. package/Source/DataSources/GridMaterialProperty.js +2 -2
  279. package/Source/DataSources/GroundGeometryUpdater.js +1 -2
  280. package/Source/DataSources/ImageMaterialProperty.js +2 -2
  281. package/Source/DataSources/KmlDataSource.js +84 -158
  282. package/Source/DataSources/LabelGraphics.js +27 -56
  283. package/Source/DataSources/LabelVisualizer.js +1 -2
  284. package/Source/DataSources/ModelGraphics.js +29 -63
  285. package/Source/DataSources/ModelVisualizer.js +1 -2
  286. package/Source/DataSources/NodeTransformationProperty.js +2 -2
  287. package/Source/DataSources/PathGraphics.js +10 -12
  288. package/Source/DataSources/PlaneGraphics.js +13 -15
  289. package/Source/DataSources/PointGraphics.js +17 -32
  290. package/Source/DataSources/PolygonGraphics.js +28 -45
  291. package/Source/DataSources/PolylineDashMaterialProperty.js +2 -2
  292. package/Source/DataSources/PolylineGeometryUpdater.js +9 -14
  293. package/Source/DataSources/PolylineGlowMaterialProperty.js +2 -2
  294. package/Source/DataSources/PolylineGraphics.js +16 -23
  295. package/Source/DataSources/PolylineOutlineMaterialProperty.js +2 -2
  296. package/Source/DataSources/PolylineVisualizer.js +2 -3
  297. package/Source/DataSources/PolylineVolumeGraphics.js +15 -17
  298. package/Source/DataSources/PositionPropertyArray.js +1 -2
  299. package/Source/DataSources/Property.js +1 -2
  300. package/Source/DataSources/PropertyBag.js +1 -2
  301. package/Source/DataSources/RectangleGraphics.js +23 -35
  302. package/Source/DataSources/Rotation.js +4 -5
  303. package/Source/DataSources/SampledPositionProperty.js +2 -3
  304. package/Source/DataSources/SampledProperty.js +6 -11
  305. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -2
  306. package/Source/DataSources/StripeMaterialProperty.js +2 -2
  307. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +1 -2
  308. package/Source/DataSources/VelocityOrientationProperty.js +1 -2
  309. package/Source/DataSources/VelocityVectorProperty.js +1 -2
  310. package/Source/DataSources/WallGraphics.js +15 -23
  311. package/Source/DataSources/createPropertyDescriptor.js +2 -3
  312. package/Source/DataSources/exportKml.js +11 -14
  313. package/Source/Renderer/Buffer.js +5 -5
  314. package/Source/Renderer/ClearCommand.js +2 -2
  315. package/Source/Renderer/ComputeCommand.js +3 -3
  316. package/Source/Renderer/Context.js +22 -37
  317. package/Source/Renderer/CubeMap.js +6 -6
  318. package/Source/Renderer/CubeMapFace.js +11 -12
  319. package/Source/Renderer/DrawCommand.js +14 -25
  320. package/Source/Renderer/Framebuffer.js +3 -3
  321. package/Source/Renderer/FramebufferManager.js +25 -39
  322. package/Source/Renderer/MultisampleFramebuffer.js +2 -2
  323. package/Source/Renderer/RenderState.js +63 -92
  324. package/Source/Renderer/Renderbuffer.js +4 -4
  325. package/Source/Renderer/Sampler.js +2 -2
  326. package/Source/Renderer/ShaderBuilder.js +2 -3
  327. package/Source/Renderer/ShaderProgram.js +3 -3
  328. package/Source/Renderer/ShaderSource.js +3 -3
  329. package/Source/Renderer/Texture.js +16 -15
  330. package/Source/Renderer/TextureAtlas.js +802 -0
  331. package/Source/Renderer/UniformState.js +6 -11
  332. package/Source/Renderer/VertexArray.js +14 -23
  333. package/Source/Renderer/VertexArrayFacade.js +7 -11
  334. package/Source/Scene/Appearance.js +4 -4
  335. package/Source/Scene/ArcGisMapServerImageryProvider.js +23 -37
  336. package/Source/Scene/ArcGisMapService.js +1 -1
  337. package/Source/Scene/B3dmParser.js +2 -3
  338. package/Source/Scene/BatchTableHierarchy.js +6 -13
  339. package/Source/Scene/Billboard.js +105 -182
  340. package/Source/Scene/BillboardCollection.js +140 -224
  341. package/Source/Scene/BillboardLoadState.js +44 -0
  342. package/Source/Scene/BillboardTexture.js +348 -0
  343. package/Source/Scene/BingMapsImageryProvider.js +6 -6
  344. package/Source/Scene/BoxEmitter.js +1 -2
  345. package/Source/Scene/BufferLoader.js +2 -2
  346. package/Source/Scene/Camera.js +45 -64
  347. package/Source/Scene/CameraFlightPath.js +6 -6
  348. package/Source/Scene/Cesium3DContentGroup.js +2 -2
  349. package/Source/Scene/Cesium3DTile.js +3 -4
  350. package/Source/Scene/Cesium3DTileBatchTable.js +6 -49
  351. package/Source/Scene/Cesium3DTileFeatureTable.js +2 -3
  352. package/Source/Scene/Cesium3DTilePointFeature.js +10 -18
  353. package/Source/Scene/Cesium3DTileStyle.js +4 -7
  354. package/Source/Scene/Cesium3DTilesVoxelProvider.js +419 -137
  355. package/Source/Scene/Cesium3DTileset.js +77 -143
  356. package/Source/Scene/Cesium3DTilesetMetadata.js +3 -3
  357. package/Source/Scene/Cesium3DTilesetStatistics.js +0 -1
  358. package/Source/Scene/CircleEmitter.js +2 -3
  359. package/Source/Scene/ClassificationPrimitive.js +15 -26
  360. package/Source/Scene/ClippingPlaneCollection.js +7 -12
  361. package/Source/Scene/ClippingPolygon.js +1 -2
  362. package/Source/Scene/ClippingPolygonCollection.js +4 -4
  363. package/Source/Scene/CloudCollection.js +9 -11
  364. package/Source/Scene/Composite3DTileContent.js +1 -2
  365. package/Source/Scene/ConeEmitter.js +1 -2
  366. package/Source/Scene/ContentMetadata.js +2 -2
  367. package/Source/Scene/CreditDisplay.js +5 -9
  368. package/Source/Scene/CumulusCloud.js +9 -15
  369. package/Source/Scene/DebugAppearance.js +7 -7
  370. package/Source/Scene/DebugCameraPrimitive.js +5 -5
  371. package/Source/Scene/DebugModelMatrixPrimitive.js +6 -8
  372. package/Source/Scene/DepthPlane.js +1 -2
  373. package/Source/Scene/DirectionalLight.js +2 -3
  374. package/Source/Scene/DiscardMissingTileImagePolicy.js +2 -2
  375. package/Source/Scene/DynamicEnvironmentMapManager.js +15 -24
  376. package/Source/Scene/EllipsoidPrimitive.js +11 -19
  377. package/Source/Scene/EllipsoidSurfaceAppearance.js +11 -15
  378. package/Source/Scene/Expression.js +1 -0
  379. package/Source/Scene/FrameRateMonitor.js +12 -21
  380. package/Source/Scene/FrustumCommands.js +2 -3
  381. package/Source/Scene/Geometry3DTileContent.js +9 -16
  382. package/Source/Scene/Globe.js +3 -4
  383. package/Source/Scene/GlobeSurfaceTileProvider.js +9 -18
  384. package/Source/Scene/GlobeTranslucencyState.js +12 -25
  385. package/Source/Scene/GltfBufferViewLoader.js +4 -4
  386. package/Source/Scene/GltfDracoLoader.js +2 -2
  387. package/Source/Scene/GltfImageLoader.js +2 -2
  388. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  389. package/Source/Scene/GltfJsonLoader.js +2 -2
  390. package/Source/Scene/GltfLoader.js +22 -37
  391. package/Source/Scene/GltfLoaderUtil.js +11 -11
  392. package/Source/Scene/GltfPipeline/addDefaults.js +37 -64
  393. package/Source/Scene/GltfPipeline/addToArray.js +1 -3
  394. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -5
  395. package/Source/Scene/GltfPipeline/parseGlb.js +1 -5
  396. package/Source/Scene/GltfPipeline/removeUnusedElements.js +1 -2
  397. package/Source/Scene/GltfPipeline/updateVersion.js +28 -49
  398. package/Source/Scene/GltfStructuralMetadataLoader.js +5 -6
  399. package/Source/Scene/GltfTextureLoader.js +3 -3
  400. package/Source/Scene/GltfVertexBufferLoader.js +5 -5
  401. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +2 -2
  402. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +3 -4
  403. package/Source/Scene/GridImageryProvider.js +10 -13
  404. package/Source/Scene/GroundPolylinePrimitive.js +11 -22
  405. package/Source/Scene/GroundPrimitive.js +13 -24
  406. package/Source/Scene/GroupMetadata.js +2 -2
  407. package/Source/Scene/I3SDataProvider.js +10 -15
  408. package/Source/Scene/I3SNode.js +1 -6
  409. package/Source/Scene/I3SSublayer.js +1 -2
  410. package/Source/Scene/I3SSymbology.js +2 -3
  411. package/Source/Scene/I3dmParser.js +1 -2
  412. package/Source/Scene/ITwinData.js +11 -6
  413. package/Source/Scene/ImageBasedLighting.js +2 -2
  414. package/Source/Scene/ImageryLayer.js +42 -71
  415. package/Source/Scene/ImageryLayerCollection.js +2 -3
  416. package/Source/Scene/Implicit3DTileContent.js +3 -4
  417. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -5
  418. package/Source/Scene/ImplicitMetadataView.js +2 -2
  419. package/Source/Scene/ImplicitSubtree.js +10 -15
  420. package/Source/Scene/ImplicitSubtreeCache.js +3 -3
  421. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  422. package/Source/Scene/InstanceAttributeSemantic.js +1 -1
  423. package/Source/Scene/IonImageryProvider.js +3 -3
  424. package/Source/Scene/KeyframeNode.js +16 -2
  425. package/Source/Scene/Label.js +19 -36
  426. package/Source/Scene/LabelCollection.js +218 -196
  427. package/Source/Scene/MapboxImageryProvider.js +4 -4
  428. package/Source/Scene/MapboxStyleImageryProvider.js +5 -5
  429. package/Source/Scene/Material.js +14 -20
  430. package/Source/Scene/MaterialAppearance.js +12 -18
  431. package/Source/Scene/Megatexture.js +145 -82
  432. package/Source/Scene/MetadataClass.js +4 -4
  433. package/Source/Scene/MetadataClassProperty.js +11 -14
  434. package/Source/Scene/MetadataEnum.js +4 -7
  435. package/Source/Scene/MetadataEnumValue.js +2 -2
  436. package/Source/Scene/MetadataSchema.js +4 -4
  437. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  438. package/Source/Scene/MetadataTable.js +2 -2
  439. package/Source/Scene/MetadataTableProperty.js +17 -31
  440. package/Source/Scene/Model/AlphaPipelineStage.js +1 -2
  441. package/Source/Scene/Model/B3dmLoader.js +15 -26
  442. package/Source/Scene/Model/BatchTexturePipelineStage.js +1 -2
  443. package/Source/Scene/Model/ClassificationModelDrawCommand.js +2 -2
  444. package/Source/Scene/Model/CustomShader.js +10 -14
  445. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +3 -3
  446. package/Source/Scene/Model/FeatureIdPipelineStage.js +1 -5
  447. package/Source/Scene/Model/GeoJsonLoader.js +5 -8
  448. package/Source/Scene/Model/I3dmLoader.js +13 -21
  449. package/Source/Scene/Model/MaterialPipelineStage.js +1 -2
  450. package/Source/Scene/Model/Model.js +41 -63
  451. package/Source/Scene/Model/ModelAnimation.js +5 -6
  452. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  453. package/Source/Scene/Model/ModelAnimationCollection.js +4 -4
  454. package/Source/Scene/Model/ModelArticulation.js +2 -2
  455. package/Source/Scene/Model/ModelArticulationStage.js +2 -2
  456. package/Source/Scene/Model/ModelDrawCommand.js +3 -3
  457. package/Source/Scene/Model/ModelFeatureTable.js +3 -9
  458. package/Source/Scene/Model/ModelLightingOptions.js +3 -3
  459. package/Source/Scene/Model/ModelNode.js +1 -1
  460. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  461. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -2
  462. package/Source/Scene/Model/ModelSceneGraph.js +2 -2
  463. package/Source/Scene/Model/ModelSkin.js +2 -2
  464. package/Source/Scene/Model/ModelUtility.js +5 -1
  465. package/Source/Scene/Model/PickingPipelineStage.js +1 -2
  466. package/Source/Scene/Model/PntsLoader.js +6 -6
  467. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -5
  468. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +2 -2
  469. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +2 -3
  470. package/Source/Scene/Model/TextureUniform.js +5 -8
  471. package/Source/Scene/Model/VaryingType.js +2 -2
  472. package/Source/Scene/Model/pickModel.js +4 -5
  473. package/Source/Scene/Moon.js +5 -5
  474. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -7
  475. package/Source/Scene/OrderedGroundPrimitiveCollection.js +1 -2
  476. package/Source/Scene/Particle.js +11 -17
  477. package/Source/Scene/ParticleBurst.js +5 -5
  478. package/Source/Scene/ParticleSystem.js +24 -54
  479. package/Source/Scene/PerInstanceColorAppearance.js +8 -8
  480. package/Source/Scene/PerformanceDisplay.js +3 -3
  481. package/Source/Scene/PickFramebuffer.js +4 -5
  482. package/Source/Scene/Picking.js +3 -4
  483. package/Source/Scene/PntsParser.js +1 -2
  484. package/Source/Scene/PointCloud.js +6 -12
  485. package/Source/Scene/PointCloudShading.js +9 -18
  486. package/Source/Scene/PointPrimitive.js +11 -21
  487. package/Source/Scene/PointPrimitiveCollection.js +6 -14
  488. package/Source/Scene/Polyline.js +5 -5
  489. package/Source/Scene/PolylineCollection.js +5 -10
  490. package/Source/Scene/PolylineColorAppearance.js +7 -11
  491. package/Source/Scene/PolylineMaterialAppearance.js +7 -11
  492. package/Source/Scene/PostProcessStage.js +2 -2
  493. package/Source/Scene/PostProcessStageComposite.js +3 -6
  494. package/Source/Scene/Primitive.js +21 -42
  495. package/Source/Scene/PrimitiveCollection.js +4 -4
  496. package/Source/Scene/PrimitivePipeline.js +1 -2
  497. package/Source/Scene/PropertyAttribute.js +2 -2
  498. package/Source/Scene/PropertyAttributeProperty.js +4 -4
  499. package/Source/Scene/PropertyTable.js +2 -2
  500. package/Source/Scene/PropertyTexture.js +2 -2
  501. package/Source/Scene/PropertyTextureProperty.js +4 -4
  502. package/Source/Scene/QuadtreePrimitive.js +84 -66
  503. package/Source/Scene/QuadtreeTile.js +170 -0
  504. package/Source/Scene/ResourceCache.js +11 -11
  505. package/Source/Scene/ResourceCacheKey.js +11 -11
  506. package/Source/Scene/Scene.js +66 -40
  507. package/Source/Scene/ScreenSpaceCameraController.js +10 -20
  508. package/Source/Scene/ShadowMap.js +15 -15
  509. package/Source/Scene/ShadowVolumeAppearance.js +1 -2
  510. package/Source/Scene/SingleTileImageryProvider.js +4 -4
  511. package/Source/Scene/SkyAtmosphere.js +1 -2
  512. package/Source/Scene/SkyBox.js +1 -2
  513. package/Source/Scene/SpatialNode.js +4 -11
  514. package/Source/Scene/SphereEmitter.js +2 -3
  515. package/Source/Scene/StructuralMetadata.js +2 -2
  516. package/Source/Scene/SunLight.js +4 -4
  517. package/Source/Scene/SupportedImageFormats.js +4 -4
  518. package/Source/Scene/TileBoundingRegion.js +4 -5
  519. package/Source/Scene/TileBoundingS2Cell.js +3 -4
  520. package/Source/Scene/TileCoordinatesImageryProvider.js +5 -5
  521. package/Source/Scene/TileMapServiceImageryProvider.js +18 -27
  522. package/Source/Scene/TileMetadata.js +2 -2
  523. package/Source/Scene/TilesetMetadata.js +2 -2
  524. package/Source/Scene/TimeDynamicImagery.js +2 -2
  525. package/Source/Scene/TimeDynamicPointCloud.js +8 -10
  526. package/Source/Scene/TweenCollection.js +13 -16
  527. package/Source/Scene/UrlTemplateImageryProvider.js +11 -15
  528. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -2
  529. package/Source/Scene/Vector3DTileContent.js +16 -20
  530. package/Source/Scene/Vector3DTileGeometry.js +1 -2
  531. package/Source/Scene/Vector3DTilePoints.js +2 -5
  532. package/Source/Scene/Vector3DTilePolygons.js +2 -3
  533. package/Source/Scene/Vector3DTilePolylines.js +1 -2
  534. package/Source/Scene/Vector3DTilePrimitive.js +9 -13
  535. package/Source/Scene/VoxelBoxShape.js +14 -8
  536. package/Source/Scene/VoxelCell.js +6 -5
  537. package/Source/Scene/VoxelContent.js +171 -107
  538. package/Source/Scene/VoxelCylinderShape.js +69 -69
  539. package/Source/Scene/VoxelEllipsoidShape.js +17 -8
  540. package/Source/Scene/VoxelMetadataOrder.js +24 -0
  541. package/Source/Scene/VoxelPrimitive.js +134 -79
  542. package/Source/Scene/VoxelProvider.js +22 -29
  543. package/Source/Scene/VoxelRenderResources.js +26 -7
  544. package/Source/Scene/VoxelShape.js +10 -3
  545. package/Source/Scene/VoxelTraversal.js +260 -180
  546. package/Source/Scene/WebMapServiceImageryProvider.js +17 -24
  547. package/Source/Scene/WebMapTileServiceImageryProvider.js +7 -10
  548. package/Source/Scene/createElevationBandMaterial.js +4 -4
  549. package/Source/Scene/createGooglePhotorealistic3DTileset.js +8 -16
  550. package/Source/Scene/createOsmBuildingsAsync.js +3 -6
  551. package/Source/Scene/createTangentSpaceDebugPrimitive.js +4 -6
  552. package/Source/Scene/createWorldImageryAsync.js +3 -3
  553. package/Source/Scene/findContentMetadata.js +2 -5
  554. package/Source/Scene/findTileMetadata.js +2 -5
  555. package/Source/Scene/parseBatchTable.js +1 -5
  556. package/Source/Scene/parseFeatureMetadataLegacy.js +2 -2
  557. package/Source/Scene/parseStructuralMetadata.js +2 -2
  558. package/Source/Scene/processVoxelProperties.js +3 -0
  559. package/Source/Shaders/GlobeFS.glsl +10 -1
  560. package/Source/Shaders/GlobeFS.js +10 -1
  561. package/Source/Shaders/Voxels/Megatexture.glsl +4 -16
  562. package/Source/Shaders/Voxels/Megatexture.js +4 -16
  563. package/Source/Shaders/Voxels/Octree.glsl +44 -7
  564. package/Source/Shaders/Voxels/Octree.js +44 -7
  565. package/Source/Shaders/Voxels/VoxelFS.glsl +9 -15
  566. package/Source/Shaders/Voxels/VoxelFS.js +9 -15
  567. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +15 -15
  568. package/Source/Shaders/Voxels/convertUvToCylinder.js +15 -15
  569. package/Source/Widget/CesiumWidget.js +17 -25
  570. package/Source/Workers/createGeometry.js +1 -2
  571. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -2
  572. package/Source/Workers/decodeI3S.js +1 -5
  573. package/Source/Workers/transcodeKTX2.js +1 -2
  574. package/index.d.ts +231 -92
  575. package/index.js +315 -310
  576. package/package.json +3 -3
  577. package/Build/Workers/chunk-TVL3F7IU.js +0 -39
  578. package/Source/Scene/TextureAtlas.js +0 -558
@@ -1,4 +1,5 @@
1
1
  import Cartesian2 from "../Core/Cartesian2.js";
2
+ import Cartesian3 from "../Core/Cartesian3.js";
2
3
  import CesiumMath from "../Core/Math.js";
3
4
  import CullingVolume from "../Core/CullingVolume.js";
4
5
  import defined from "../Core/defined.js";
@@ -15,6 +16,7 @@ import SpatialNode from "./SpatialNode.js";
15
16
  import Texture from "../Renderer/Texture.js";
16
17
  import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.js";
17
18
  import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
19
+ import VoxelMetadataOrder from "./VoxelMetadataOrder.js";
18
20
 
19
21
  /**
20
22
  * Handles tileset traversal, tile requests, and GPU resources. Intended to be
@@ -23,32 +25,59 @@ import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js"
23
25
  * @alias VoxelTraversal
24
26
  * @constructor
25
27
  *
26
- * @param {VoxelPrimitive} primitive
27
- * @param {Context} context
28
- * @param {Cartesian3} dimensions
29
- * @param {MetadataType[]} types
30
- * @param {MetadataComponentType[]} componentTypes
31
- * @param {number} keyframeCount
32
- * @param {number} [maximumTextureMemoryByteLength]
28
+ * @param {VoxelPrimitive} primitive The voxel primitive for which this traversal will be used.
29
+ * @param {Context} context The context in which to create GPU resources.
30
+ * @param {number} keyframeCount The number of keyframes in the tileset.
31
+ * @param {number} [maximumTextureMemoryByteLength] The maximum amount of memory to use for textures.
33
32
  *
34
33
  * @private
35
34
  */
36
35
  function VoxelTraversal(
37
36
  primitive,
38
37
  context,
39
- dimensions,
40
- types,
41
- componentTypes,
42
38
  keyframeCount,
43
39
  maximumTextureMemoryByteLength,
44
40
  ) {
41
+ const { provider, dimensions, paddingBefore, paddingAfter } = primitive;
42
+ const { types, componentTypes, metadataOrder } = provider;
43
+
44
+ const inputDimensions = Cartesian3.add(
45
+ dimensions,
46
+ paddingBefore,
47
+ new Cartesian3(),
48
+ );
49
+ Cartesian3.add(inputDimensions, paddingAfter, inputDimensions);
50
+
51
+ if (metadataOrder === VoxelMetadataOrder.Y_UP) {
52
+ const inputDimensionsY = inputDimensions.y;
53
+ inputDimensions.y = inputDimensions.z;
54
+ inputDimensions.z = inputDimensionsY;
55
+ }
56
+
57
+ if (
58
+ !defined(maximumTextureMemoryByteLength) &&
59
+ defined(provider.maximumTileCount)
60
+ ) {
61
+ maximumTextureMemoryByteLength = getApproximateTextureMemoryByteLength(
62
+ provider.maximumTileCount,
63
+ inputDimensions,
64
+ types,
65
+ componentTypes,
66
+ );
67
+ }
68
+
45
69
  /**
46
- * TODO: maybe this shouldn't be stored or passed into update function?
47
70
  * @type {VoxelPrimitive}
48
71
  * @private
49
72
  */
50
73
  this._primitive = primitive;
51
74
 
75
+ /**
76
+ * @type {number}
77
+ * @private
78
+ */
79
+ this.textureMemoryByteLength = 0;
80
+
52
81
  /**
53
82
  * @type {Megatexture[]}
54
83
  * @readonly
@@ -63,11 +92,14 @@ function VoxelTraversal(
63
92
 
64
93
  this.megatextures[i] = new Megatexture(
65
94
  context,
66
- dimensions,
95
+ inputDimensions,
67
96
  componentCount,
68
97
  componentType,
69
98
  maximumTextureMemoryByteLength,
70
99
  );
100
+
101
+ this.textureMemoryByteLength +=
102
+ this.megatextures[i].textureMemoryByteLength;
71
103
  }
72
104
 
73
105
  const maximumTileCount = this.megatextures[0].maximumTileCount;
@@ -84,6 +116,12 @@ function VoxelTraversal(
84
116
  */
85
117
  this._debugPrint = false;
86
118
 
119
+ /**
120
+ * @type {boolean}
121
+ * @private
122
+ */
123
+ this._calculateStatistics = this._primitive._calculateStatistics ?? false;
124
+
87
125
  /**
88
126
  * @type {number}
89
127
  * @private
@@ -113,6 +151,12 @@ function VoxelTraversal(
113
151
  */
114
152
  this._highPriorityKeyframeNodes = new Array(maximumTileCount);
115
153
 
154
+ /**
155
+ * @type {number}
156
+ * @private
157
+ */
158
+ this._highPriorityKeyframeNodeCount = 0;
159
+
116
160
  /**
117
161
  * @type {KeyframeNode[]}
118
162
  * @private
@@ -318,15 +362,18 @@ VoxelTraversal.prototype.update = function (
318
362
 
319
363
  this._frameNumber = frameState.frameNumber;
320
364
  const timestamp0 = getTimestamp();
321
- loadAndUnload(this, frameState);
365
+ selectKeyframeNodes(this, frameState);
366
+ updateKeyframeNodes(this, frameState);
322
367
  const timestamp1 = getTimestamp();
323
368
  generateOctree(this, sampleCount, levelBlendFactor);
324
369
  const timestamp2 = getTimestamp();
370
+
325
371
  const checkEventListeners =
326
372
  primitive.loadProgress.numberOfListeners > 0 ||
327
373
  primitive.allTilesLoaded.numberOfListeners > 0 ||
328
374
  primitive.initialTilesLoaded.numberOfListeners > 0;
329
- if (this._debugPrint || checkEventListeners) {
375
+
376
+ if (this._debugPrint || this._calculateStatistics || checkEventListeners) {
330
377
  const loadAndUnloadTimeMs = timestamp1 - timestamp0;
331
378
  const generateOctreeTimeMs = timestamp2 - timestamp1;
332
379
  const totalTimeMs = timestamp2 - timestamp0;
@@ -384,6 +431,7 @@ VoxelTraversal.prototype.destroy = function () {
384
431
  for (let i = 0; i < megatextureLength; i++) {
385
432
  megatextures[i] = megatextures[i] && megatextures[i].destroy();
386
433
  }
434
+ this.textureMemoryByteLength = 0;
387
435
 
388
436
  this.internalNodeTexture =
389
437
  this.internalNodeTexture && this.internalNodeTexture.destroy();
@@ -427,7 +475,8 @@ function requestData(that, keyframeNode) {
427
475
  return;
428
476
  }
429
477
 
430
- const provider = that._primitive._provider;
478
+ const primitive = that._primitive;
479
+ const provider = primitive.provider;
431
480
  const { keyframe, spatialNode } = keyframeNode;
432
481
  if (
433
482
  defined(provider.availableLevels) &&
@@ -436,66 +485,34 @@ function requestData(that, keyframeNode) {
436
485
  return;
437
486
  }
438
487
 
439
- const requestOptions = {
440
- tileLevel: spatialNode.level,
441
- tileX: spatialNode.x,
442
- tileY: spatialNode.y,
443
- tileZ: spatialNode.z,
444
- keyframe: keyframe,
445
- };
446
-
447
488
  function postRequestSuccess(result) {
448
489
  that._simultaneousRequestCount--;
449
- const length = provider.types.length;
450
-
451
- if (!defined(result)) {
452
- keyframeNode.state = KeyframeNode.LoadState.UNAVAILABLE;
453
- } else if (result === KeyframeNode.LoadState.FAILED) {
454
- keyframeNode.state = KeyframeNode.LoadState.FAILED;
455
- } else if (!Array.isArray(result) || result.length !== length) {
456
- // TODO should this throw runtime error?
457
- keyframeNode.state = KeyframeNode.LoadState.FAILED;
458
- } else {
459
- const megatextures = that.megatextures;
460
- for (let i = 0; i < length; i++) {
461
- const { voxelCountPerTile, channelCount } = megatextures[i];
462
- const { x, y, z } = voxelCountPerTile;
463
- const tileVoxelCount = x * y * z;
464
-
465
- const data = result[i];
466
- const expectedLength = tileVoxelCount * channelCount;
467
- if (data.length === expectedLength) {
468
- keyframeNode.metadata[i] = data;
469
- // State is received only when all metadata requests have been received
470
- keyframeNode.state = KeyframeNode.LoadState.RECEIVED;
471
- that._primitive.tileLoad.raiseEvent();
472
- } else {
473
- keyframeNode.state = KeyframeNode.LoadState.FAILED;
474
- break;
475
- }
476
- }
477
- }
478
- if (keyframeNode.state === KeyframeNode.LoadState.FAILED) {
479
- that._primitive.tileFailed.raiseEvent();
480
- }
490
+ keyframeNode.content = result;
491
+ keyframeNode.state = defined(result)
492
+ ? KeyframeNode.LoadState.PROCESSING
493
+ : KeyframeNode.LoadState.UNAVAILABLE;
481
494
  }
482
495
 
483
- function postRequestFailure() {
496
+ function postRequestFailure(error) {
484
497
  that._simultaneousRequestCount--;
485
498
  keyframeNode.state = KeyframeNode.LoadState.FAILED;
486
499
  that._primitive.tileFailed.raiseEvent();
487
500
  }
488
501
 
489
- const promise = provider.requestData(requestOptions);
490
-
491
- if (defined(promise)) {
492
- that._simultaneousRequestCount++;
493
- keyframeNode.state = KeyframeNode.LoadState.RECEIVING;
494
- promise.then(postRequestSuccess).catch(postRequestFailure);
495
- } else {
496
- keyframeNode.state = KeyframeNode.LoadState.FAILED;
497
- that._primitive.tileFailed.raiseEvent();
502
+ const requestParameters = {
503
+ tileLevel: spatialNode.level,
504
+ tileX: spatialNode.x,
505
+ tileY: spatialNode.y,
506
+ tileZ: spatialNode.z,
507
+ keyframe: keyframe,
508
+ };
509
+ const promise = provider.requestData(requestParameters);
510
+ if (!defined(promise)) {
511
+ return;
498
512
  }
513
+ that._simultaneousRequestCount++;
514
+ keyframeNode.state = KeyframeNode.LoadState.RECEIVING;
515
+ promise.then(postRequestSuccess).catch(postRequestFailure);
499
516
  }
500
517
 
501
518
  /**
@@ -511,105 +528,23 @@ function mapInfiniteRangeToZeroOne(x) {
511
528
  }
512
529
 
513
530
  /**
514
- * @function
515
- *
516
531
  * @param {VoxelTraversal} that
517
532
  * @param {FrameState} frameState
518
533
  *
519
534
  * @private
520
535
  */
521
- function loadAndUnload(that, frameState) {
536
+ function selectKeyframeNodes(that, frameState) {
522
537
  const frameNumber = that._frameNumber;
523
- const primitive = that._primitive;
524
- const shape = primitive._shape;
525
- const targetScreenSpaceError = primitive.screenSpaceError;
526
538
  const priorityQueue = that._priorityQueue;
527
- const keyframeCount = that._keyframeCount;
528
-
529
- const previousKeyframe = CesiumMath.clamp(
530
- Math.floor(that._keyframeLocation),
531
- 0,
532
- keyframeCount - 2,
533
- );
534
- const nextKeyframe = previousKeyframe + 1;
535
-
536
- const { camera, context, pixelRatio } = frameState;
537
- const { positionWC, frustum } = camera;
538
- const screenHeight = context.drawingBufferHeight / pixelRatio;
539
- const screenSpaceErrorMultiplier = screenHeight / frustum.sseDenominator;
540
-
541
- /**
542
- * @ignore
543
- * @param {SpatialNode} spatialNode
544
- * @param {number} visibilityPlaneMask
545
- */
546
- function addToQueueRecursive(spatialNode, visibilityPlaneMask) {
547
- spatialNode.computeScreenSpaceError(positionWC, screenSpaceErrorMultiplier);
548
-
549
- visibilityPlaneMask = spatialNode.visibility(
550
- frameState,
551
- visibilityPlaneMask,
552
- );
553
- if (visibilityPlaneMask === CullingVolume.MASK_OUTSIDE) {
554
- return;
555
- }
556
- spatialNode.visitedFrameNumber = frameNumber;
557
-
558
- // Create keyframe nodes at the playhead.
559
- // If they already exist, nothing will be created.
560
- if (keyframeCount === 1) {
561
- spatialNode.createKeyframeNode(0);
562
- } else if (spatialNode.keyframeNodes.length !== keyframeCount) {
563
- for (let k = 0; k < keyframeCount; k++) {
564
- spatialNode.createKeyframeNode(k);
565
- }
566
- }
567
- const { screenSpaceError, keyframeNodes } = spatialNode;
568
- const ssePriority = mapInfiniteRangeToZeroOne(screenSpaceError);
569
-
570
- let hasLoadedKeyframe = false;
571
- for (let i = 0; i < keyframeNodes.length; i++) {
572
- const keyframeNode = keyframeNodes[i];
573
-
574
- keyframeNode.priority =
575
- 10.0 * ssePriority +
576
- keyframePriority(
577
- previousKeyframe,
578
- keyframeNode.keyframe,
579
- nextKeyframe,
580
- that,
581
- );
582
-
583
- if (
584
- keyframeNode.state !== KeyframeNode.LoadState.UNAVAILABLE &&
585
- keyframeNode.state !== KeyframeNode.LoadState.FAILED &&
586
- keyframeNode.priority !== -Number.MAX_VALUE
587
- ) {
588
- priorityQueue.insert(keyframeNode);
589
- }
590
- if (keyframeNode.state === KeyframeNode.LoadState.LOADED) {
591
- hasLoadedKeyframe = true;
592
- }
593
- }
594
-
595
- if (screenSpaceError < targetScreenSpaceError || !hasLoadedKeyframe) {
596
- // Free up memory
597
- spatialNode.children = undefined;
598
- return;
599
- }
600
-
601
- if (!defined(spatialNode.children)) {
602
- spatialNode.constructChildNodes(shape);
603
- }
604
- for (let childIndex = 0; childIndex < 8; childIndex++) {
605
- const child = spatialNode.children[childIndex];
606
- addToQueueRecursive(child, visibilityPlaneMask);
607
- }
608
- }
609
539
 
610
540
  // Add all the nodes to the queue, to sort them by priority.
611
541
  priorityQueue.reset();
612
- addToQueueRecursive(that.rootNode, CullingVolume.MASK_INDETERMINATE);
542
+ addToQueueRecursive(
543
+ that.rootNode,
544
+ CullingVolume.MASK_INDETERMINATE,
545
+ that,
546
+ frameState,
547
+ );
613
548
 
614
549
  // Move the nodes from the queue to array of high priority nodes.
615
550
  const highPriorityKeyframeNodes = that._highPriorityKeyframeNodes;
@@ -622,23 +557,29 @@ function loadAndUnload(that, frameState) {
622
557
  highPriorityKeyframeNode;
623
558
  highPriorityKeyframeNodeCount++;
624
559
  }
560
+ that._highPriorityKeyframeNodeCount = highPriorityKeyframeNodeCount;
561
+ }
562
+
563
+ /**
564
+ * @param {VoxelTraversal} that
565
+ * @param {FrameState} frameState
566
+ *
567
+ * @private
568
+ */
569
+ function updateKeyframeNodes(that, frameState) {
570
+ const megatexture = that.megatextures[0];
571
+ const keyframeNodesInMegatextureCount = megatexture.occupiedCount;
625
572
 
626
573
  // Sort the list of keyframe nodes in the megatexture by priority, so
627
574
  // we can remove the lowest priority nodes if we need space.
628
575
  const keyframeNodesInMegatexture = that._keyframeNodesInMegatexture;
629
- // TODO: some of the megatexture state should be stored once, not duplicate for each megatexture
630
- const megatexture = that.megatextures[0];
631
- const keyframeNodesInMegatextureCount = megatexture.occupiedCount;
632
576
  keyframeNodesInMegatexture.length = keyframeNodesInMegatextureCount;
633
- keyframeNodesInMegatexture.sort(function (a, b) {
634
- if (a.highPriorityFrameNumber === b.highPriorityFrameNumber) {
635
- return b.priority - a.priority;
636
- }
637
- return b.highPriorityFrameNumber - a.highPriorityFrameNumber;
638
- });
577
+ keyframeNodesInMegatexture.sort(keyframeNodeSort);
639
578
 
640
579
  // Add the high priority nodes to the megatexture,
641
580
  // removing existing lower-priority nodes if necessary.
581
+ const highPriorityKeyframeNodes = that._highPriorityKeyframeNodes;
582
+ const highPriorityKeyframeNodeCount = that._highPriorityKeyframeNodeCount;
642
583
  let destroyedCount = 0;
643
584
  let addedCount = 0;
644
585
 
@@ -647,7 +588,7 @@ function loadAndUnload(that, frameState) {
647
588
  highPriorityKeyframeNodeIndex < highPriorityKeyframeNodeCount;
648
589
  highPriorityKeyframeNodeIndex++
649
590
  ) {
650
- highPriorityKeyframeNode =
591
+ const highPriorityKeyframeNode =
651
592
  highPriorityKeyframeNodes[highPriorityKeyframeNodeIndex];
652
593
 
653
594
  if (
@@ -661,7 +602,18 @@ function loadAndUnload(that, frameState) {
661
602
  if (highPriorityKeyframeNode.state === KeyframeNode.LoadState.UNLOADED) {
662
603
  requestData(that, highPriorityKeyframeNode);
663
604
  }
664
- if (highPriorityKeyframeNode.state === KeyframeNode.LoadState.RECEIVED) {
605
+ if (highPriorityKeyframeNode.state === KeyframeNode.LoadState.PROCESSING) {
606
+ const { content } = highPriorityKeyframeNode;
607
+ content.update(that._primitive, frameState);
608
+ if (!content.ready) {
609
+ continue;
610
+ }
611
+ if (!validateMetadata(content.metadata, that)) {
612
+ highPriorityKeyframeNode.content = undefined;
613
+ highPriorityKeyframeNode.state = KeyframeNode.LoadState.FAILED;
614
+ that._primitive.tileFailed.raiseEvent();
615
+ continue;
616
+ }
665
617
  let addNodeIndex = 0;
666
618
  if (megatexture.isFull()) {
667
619
  // If the megatexture is full, try removing a discardable node with the lowest priority.
@@ -682,11 +634,140 @@ function loadAndUnload(that, frameState) {
682
634
  highPriorityKeyframeNode,
683
635
  that.megatextures,
684
636
  );
637
+ highPriorityKeyframeNode.state = KeyframeNode.LoadState.LOADED;
685
638
  keyframeNodesInMegatexture[addNodeIndex] = highPriorityKeyframeNode;
639
+ that._primitive.tileLoad.raiseEvent();
686
640
  }
687
641
  }
688
642
  }
689
643
 
644
+ function keyframeNodeSort(a, b) {
645
+ if (a.highPriorityFrameNumber === b.highPriorityFrameNumber) {
646
+ return b.priority - a.priority;
647
+ }
648
+ return b.highPriorityFrameNumber - a.highPriorityFrameNumber;
649
+ }
650
+
651
+ /**
652
+ * Check if an array of metadata is of the expected type and size
653
+ *
654
+ * @param {TypedArray[]} metadata The metadata to validate
655
+ * @param {VoxelTraversal} traversal The traversal to validate against
656
+ * @returns {boolean} <code>true</code> if the metadata is valid, <code>false</code> otherwise
657
+ *
658
+ * @private
659
+ */
660
+ function validateMetadata(metadata, traversal) {
661
+ const length = traversal._primitive.provider.types.length;
662
+ if (!Array.isArray(metadata) || metadata.length !== length) {
663
+ return false;
664
+ }
665
+ const { megatextures } = traversal;
666
+ for (let i = 0; i < length; i++) {
667
+ const { voxelCountPerTile, channelCount } = megatextures[i];
668
+ const { x, y, z } = voxelCountPerTile;
669
+ const tileVoxelCount = x * y * z;
670
+
671
+ const data = metadata[i];
672
+ const expectedLength = tileVoxelCount * channelCount;
673
+ if (data.length !== expectedLength) {
674
+ return false;
675
+ }
676
+ }
677
+ return true;
678
+ }
679
+
680
+ /**
681
+ * @param {SpatialNode} spatialNode
682
+ * @param {number} visibilityPlaneMask
683
+ * @param {VoxelTraversal} that
684
+ * @param {FrameState} frameState
685
+ *
686
+ * @private
687
+ */
688
+ function addToQueueRecursive(
689
+ spatialNode,
690
+ visibilityPlaneMask,
691
+ that,
692
+ frameState,
693
+ ) {
694
+ const { camera, context, pixelRatio, frameNumber } = frameState;
695
+ const { positionWC, frustum } = camera;
696
+ const screenHeight = context.drawingBufferHeight / pixelRatio;
697
+ const screenSpaceErrorMultiplier = screenHeight / frustum.sseDenominator;
698
+
699
+ spatialNode.computeScreenSpaceError(positionWC, screenSpaceErrorMultiplier);
700
+
701
+ visibilityPlaneMask = spatialNode.visibility(frameState, visibilityPlaneMask);
702
+ if (visibilityPlaneMask === CullingVolume.MASK_OUTSIDE) {
703
+ return;
704
+ }
705
+ spatialNode.visitedFrameNumber = frameNumber;
706
+
707
+ const primitive = that._primitive;
708
+ const shape = primitive._shape;
709
+ const targetScreenSpaceError = primitive.screenSpaceError;
710
+ const priorityQueue = that._priorityQueue;
711
+ const keyframeCount = that._keyframeCount;
712
+ const previousKeyframe = CesiumMath.clamp(
713
+ Math.floor(that._keyframeLocation),
714
+ 0,
715
+ keyframeCount - 2,
716
+ );
717
+ const nextKeyframe = previousKeyframe + 1;
718
+
719
+ // Create keyframe nodes at the playhead.
720
+ // If they already exist, nothing will be created.
721
+ if (keyframeCount === 1) {
722
+ spatialNode.createKeyframeNode(0);
723
+ } else if (spatialNode.keyframeNodes.length !== keyframeCount) {
724
+ for (let k = 0; k < keyframeCount; k++) {
725
+ spatialNode.createKeyframeNode(k);
726
+ }
727
+ }
728
+ const { screenSpaceError, keyframeNodes } = spatialNode;
729
+ const ssePriority = mapInfiniteRangeToZeroOne(screenSpaceError);
730
+
731
+ let hasLoadedKeyframe = false;
732
+ for (let i = 0; i < keyframeNodes.length; i++) {
733
+ const keyframeNode = keyframeNodes[i];
734
+
735
+ keyframeNode.priority =
736
+ 10.0 * ssePriority +
737
+ keyframePriority(
738
+ previousKeyframe,
739
+ keyframeNode.keyframe,
740
+ nextKeyframe,
741
+ that,
742
+ );
743
+
744
+ if (
745
+ keyframeNode.state !== KeyframeNode.LoadState.UNAVAILABLE &&
746
+ keyframeNode.state !== KeyframeNode.LoadState.FAILED &&
747
+ keyframeNode.priority !== -Number.MAX_VALUE
748
+ ) {
749
+ priorityQueue.insert(keyframeNode);
750
+ }
751
+ if (keyframeNode.state === KeyframeNode.LoadState.LOADED) {
752
+ hasLoadedKeyframe = true;
753
+ }
754
+ }
755
+
756
+ if (screenSpaceError < targetScreenSpaceError || !hasLoadedKeyframe) {
757
+ // Free up memory
758
+ spatialNode.children = undefined;
759
+ return;
760
+ }
761
+
762
+ if (!defined(spatialNode.children)) {
763
+ spatialNode.constructChildNodes(shape);
764
+ }
765
+ for (let childIndex = 0; childIndex < 8; childIndex++) {
766
+ const child = spatialNode.children[childIndex];
767
+ addToQueueRecursive(child, visibilityPlaneMask, that, frameState);
768
+ }
769
+ }
770
+
690
771
  /**
691
772
  * Compute a priority for a keyframe node.
692
773
  *
@@ -748,16 +829,12 @@ function postPassesUpdate(
748
829
  loadStateIndex < loadStateCount;
749
830
  loadStateIndex++
750
831
  ) {
751
- const keyframeArray = new Array(keyframeCount);
832
+ const keyframeArray = new Array(keyframeCount).fill(0);
752
833
  loadStatesByKeyframe[loadStateIndex] = keyframeArray;
753
- for (let i = 0; i < keyframeCount; i++) {
754
- keyframeArray[i] = 0;
755
- }
756
834
  loadStateByCount[loadStateIndex] = 0;
757
835
  }
758
836
 
759
837
  /**
760
- * @ignore
761
838
  * @param {SpatialNode} node
762
839
  */
763
840
  function traverseRecursive(node) {
@@ -784,16 +861,20 @@ function postPassesUpdate(
784
861
  }
785
862
  traverseRecursive(rootNode);
786
863
 
864
+ that._primitive.statistics.numberOfTilesWithContentReady =
865
+ loadStateByCount[KeyframeNode.LoadState.LOADED];
866
+ that._primitive.statistics.visited = nodeCountTotal;
867
+
787
868
  const numberOfPendingRequests =
788
869
  loadStateByCount[KeyframeNode.LoadState.RECEIVING];
789
870
  const numberOfTilesProcessing =
790
- loadStateByCount[KeyframeNode.LoadState.RECEIVED];
871
+ loadStateByCount[KeyframeNode.LoadState.PROCESSING];
791
872
 
792
873
  const progressChanged =
793
874
  numberOfPendingRequests !==
794
- that._primitive._statistics.numberOfPendingRequests ||
875
+ that._primitive.statistics.numberOfPendingRequests ||
795
876
  numberOfTilesProcessing !==
796
- that._primitive._statistics.numberOfTilesProcessing;
877
+ that._primitive.statistics.numberOfTilesProcessing;
797
878
 
798
879
  if (progressChanged) {
799
880
  frameState.afterRender.push(function () {
@@ -806,8 +887,8 @@ function postPassesUpdate(
806
887
  });
807
888
  }
808
889
 
809
- that._primitive._statistics.numberOfPendingRequests = numberOfPendingRequests;
810
- that._primitive._statistics.numberOfTilesProcessing = numberOfTilesProcessing;
890
+ that._primitive.statistics.numberOfPendingRequests = numberOfPendingRequests;
891
+ that._primitive.statistics.numberOfTilesProcessing = numberOfTilesProcessing;
811
892
 
812
893
  const tilesLoaded =
813
894
  numberOfPendingRequests === 0 && numberOfTilesProcessing === 0;
@@ -839,7 +920,7 @@ function postPassesUpdate(
839
920
  const loadStateStatistics =
840
921
  `UNLOADED: ${loadStateByCount[KeyframeNode.LoadState.UNLOADED]} | ` +
841
922
  `RECEIVING: ${loadStateByCount[KeyframeNode.LoadState.RECEIVING]} | ` +
842
- `RECEIVED: ${loadStateByCount[KeyframeNode.LoadState.RECEIVED]} | ` +
923
+ `PROCESSING: ${loadStateByCount[KeyframeNode.LoadState.PROCESSING]} | ` +
843
924
  `LOADED: ${loadStateByCount[KeyframeNode.LoadState.LOADED]} | ` +
844
925
  `FAILED: ${loadStateByCount[KeyframeNode.LoadState.FAILED]} | ` +
845
926
  `UNAVAILABLE: ${loadStateByCount[KeyframeNode.LoadState.UNAVAILABLE]} | ` +
@@ -900,7 +981,6 @@ const GpuOctreeFlag = {
900
981
  * @function
901
982
  *
902
983
  * @param {VoxelTraversal} that
903
- * @param {FrameState} frameState
904
984
  * @param {number} sampleCount
905
985
  * @param {number} levelBlendFactor
906
986
  * @private
@@ -917,7 +997,6 @@ function generateOctree(that, sampleCount, levelBlendFactor) {
917
997
  const leafNodeOctreeData = [];
918
998
 
919
999
  /**
920
- * @ignore
921
1000
  * @param {SpatialNode} node
922
1001
  * @param {number} childOctreeIndex
923
1002
  * @param {number} childEntryIndex
@@ -1154,8 +1233,9 @@ function copyToLeafNodeTexture(data, texelsPerTile, tilesPerRow, texture) {
1154
1233
  * @param {Cartesian3} dimensions
1155
1234
  * @param {MetadataType[]} types
1156
1235
  * @param {MetadataComponentType[]} componentTypes
1236
+ * @private
1157
1237
  */
1158
- VoxelTraversal.getApproximateTextureMemoryByteLength = function (
1238
+ function getApproximateTextureMemoryByteLength(
1159
1239
  tileCount,
1160
1240
  dimensions,
1161
1241
  types,
@@ -1179,6 +1259,6 @@ VoxelTraversal.getApproximateTextureMemoryByteLength = function (
1179
1259
  }
1180
1260
 
1181
1261
  return textureMemoryByteLength;
1182
- };
1262
+ }
1183
1263
 
1184
1264
  export default VoxelTraversal;