@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,7 +1,7 @@
1
1
  import BoundingRectangle from "../Core/BoundingRectangle.js";
2
2
  import Cartesian2 from "../Core/Cartesian2.js";
3
3
  import Color from "../Core/Color.js";
4
- import defaultValue from "../Core/defaultValue.js";
4
+ import Frozen from "../Core/Frozen.js";
5
5
  import defined from "../Core/defined.js";
6
6
  import destroyObject from "../Core/destroyObject.js";
7
7
  import DeveloperError from "../Core/DeveloperError.js";
@@ -9,34 +9,43 @@ import Matrix4 from "../Core/Matrix4.js";
9
9
  import writeTextToCanvas from "../Core/writeTextToCanvas.js";
10
10
  import bitmapSDF from "bitmap-sdf";
11
11
  import BillboardCollection from "./BillboardCollection.js";
12
+ import BillboardTexture from "./BillboardTexture.js";
12
13
  import BlendOption from "./BlendOption.js";
13
14
  import { isHeightReferenceClamp } from "./HeightReference.js";
14
15
  import HorizontalOrigin from "./HorizontalOrigin.js";
15
16
  import Label from "./Label.js";
16
17
  import LabelStyle from "./LabelStyle.js";
17
18
  import SDFSettings from "./SDFSettings.js";
18
- import TextureAtlas from "./TextureAtlas.js";
19
+ import TextureAtlas from "../Renderer/TextureAtlas.js";
19
20
  import VerticalOrigin from "./VerticalOrigin.js";
20
21
  import GraphemeSplitter from "grapheme-splitter";
21
22
 
22
- // A glyph represents a single character in a particular label. It may or may
23
- // not have a billboard, depending on whether the texture info has an index into
24
- // the the label collection's texture atlas. Invisible characters have no texture, and
25
- // no billboard. However, it always has a valid dimensions object.
23
+ /**
24
+ * A glyph represents a single character in label.
25
+ * @private
26
+ */
26
27
  function Glyph() {
27
- this.textureInfo = undefined;
28
+ /**
29
+ * Object containing dimensions of the character as rendered to a canvas.
30
+ * @see {writeTextToCanvas}
31
+ * @type {object}
32
+ * @private
33
+ */
28
34
  this.dimensions = undefined;
29
- this.billboard = undefined;
30
- }
31
35
 
32
- // GlyphTextureInfo represents a single character, drawn in a particular style,
33
- // shared and reference counted across all labels. It may or may not have an
34
- // index into the label collection's texture atlas, depending on whether the character
35
- // has both width and height, but it always has a valid dimensions object.
36
- function GlyphTextureInfo(labelCollection, index, dimensions) {
37
- this.labelCollection = labelCollection;
38
- this.index = index;
39
- this.dimensions = dimensions;
36
+ /**
37
+ * Reference to loaded image data for a single character, drawn in a particular style, shared and referenced across all labels.
38
+ * @type {BillboardTexture}
39
+ * @private
40
+ */
41
+ this.billboardTexture = undefined;
42
+
43
+ /**
44
+ * The individual billboard used to render the glyph. This may be <code>undefined</code> if the associated character is whitespace.
45
+ * @type {Billboard|undefined}
46
+ * @private
47
+ */
48
+ this.billboard = undefined;
40
49
  }
41
50
 
42
51
  // Traditionally, leading is %20 of the font size.
@@ -45,18 +54,38 @@ const whitePixelCanvasId = "ID_WHITE_PIXEL";
45
54
  const whitePixelSize = new Cartesian2(4, 4);
46
55
  const whitePixelBoundingRegion = new BoundingRectangle(1, 1, 1, 1);
47
56
 
48
- function addWhitePixelCanvas(textureAtlas) {
49
- const canvas = document.createElement("canvas");
50
- canvas.width = whitePixelSize.x;
51
- canvas.height = whitePixelSize.y;
57
+ /**
58
+ * Create the background image and start loading it into a texture
59
+ * @private
60
+ * @param {BillboardCollection} billboardCollection
61
+ * @param {LabelCollection} labelCollection
62
+ * @returns {Billboard}
63
+ */
64
+ function getWhitePixelBillboard(billboardCollection, labelCollection) {
65
+ const billboardTexture = labelCollection._backgroundBillboardTexture;
66
+ if (!billboardTexture.hasImage) {
67
+ const canvas = document.createElement("canvas");
68
+ canvas.width = whitePixelSize.x;
69
+ canvas.height = whitePixelSize.y;
70
+
71
+ const context2D = canvas.getContext("2d");
72
+ context2D.fillStyle = "#fff";
73
+ context2D.fillRect(0, 0, canvas.width, canvas.height);
74
+
75
+ billboardTexture.loadImage(whitePixelCanvasId, canvas);
76
+ billboardTexture.addImageSubRegion(
77
+ whitePixelCanvasId,
78
+ whitePixelBoundingRegion,
79
+ );
80
+ }
81
+
82
+ const billboard = billboardCollection.add({
83
+ collection: labelCollection,
84
+ });
52
85
 
53
- const context2D = canvas.getContext("2d");
54
- context2D.fillStyle = "#fff";
55
- context2D.fillRect(0, 0, canvas.width, canvas.height);
86
+ billboard.setImageTexture(billboardTexture);
56
87
 
57
- // Canvas operations take a frame to draw. Use the asynchronous add function which resolves a promise and allows the draw to complete,
58
- // but there's no need to wait on the promise before operation can continue
59
- return textureAtlas.addImage(whitePixelCanvasId, canvas);
88
+ return billboard;
60
89
  }
61
90
 
62
91
  // reusable object for calling writeTextToCanvas
@@ -85,14 +114,10 @@ function createGlyphCanvas(
85
114
  return writeTextToCanvas(character, writeTextToCanvasParameters);
86
115
  }
87
116
 
88
- function unbindGlyph(labelCollection, glyph) {
89
- glyph.textureInfo = undefined;
90
- glyph.dimensions = undefined;
91
-
117
+ function unbindGlyphBillboard(labelCollection, glyph) {
92
118
  const billboard = glyph.billboard;
93
119
  if (defined(billboard)) {
94
120
  billboard.show = false;
95
- billboard.image = undefined;
96
121
  if (defined(billboard._removeCallbackFunc)) {
97
122
  billboard._removeCallbackFunc();
98
123
  billboard._removeCallbackFunc = undefined;
@@ -102,11 +127,8 @@ function unbindGlyph(labelCollection, glyph) {
102
127
  }
103
128
  }
104
129
 
105
- function addGlyphToTextureAtlas(textureAtlas, id, canvas, glyphTextureInfo) {
106
- glyphTextureInfo.index = textureAtlas.addImageSync(id, canvas);
107
- }
108
-
109
130
  const splitter = new GraphemeSplitter();
131
+ const whitespaceRegex = /\s/;
110
132
 
111
133
  function rebindAllGlyphs(labelCollection, label) {
112
134
  const text = label._renderedText;
@@ -115,17 +137,13 @@ function rebindAllGlyphs(labelCollection, label) {
115
137
  const glyphs = label._glyphs;
116
138
  const glyphsLength = glyphs.length;
117
139
 
118
- let glyph;
119
- let glyphIndex;
120
- let textIndex;
121
-
122
140
  // Compute a font size scale relative to the sdf font generated size.
123
141
  label._relativeSize = label._fontSize / SDFSettings.FONT_SIZE;
124
142
 
125
143
  // if we have more glyphs than needed, unbind the extras.
126
144
  if (textLength < glyphsLength) {
127
- for (glyphIndex = textLength; glyphIndex < glyphsLength; ++glyphIndex) {
128
- unbindGlyph(labelCollection, glyphs[glyphIndex]);
145
+ for (let glyphIndex = textLength; glyphIndex < glyphsLength; ++glyphIndex) {
146
+ unbindGlyphBillboard(labelCollection, glyphs[glyphIndex]);
129
147
  }
130
148
  }
131
149
 
@@ -144,11 +162,10 @@ function rebindAllGlyphs(labelCollection, label) {
144
162
  }
145
163
  } else {
146
164
  if (!defined(backgroundBillboard)) {
147
- backgroundBillboard = backgroundBillboardCollection.add({
148
- collection: labelCollection,
149
- image: whitePixelCanvasId,
150
- imageSubRegion: whitePixelBoundingRegion,
151
- });
165
+ backgroundBillboard = getWhitePixelBillboard(
166
+ backgroundBillboardCollection,
167
+ labelCollection,
168
+ );
152
169
  label._backgroundBillboard = backgroundBillboard;
153
170
  }
154
171
 
@@ -174,11 +191,13 @@ function rebindAllGlyphs(labelCollection, label) {
174
191
  backgroundBillboard.clusterShow = label.clusterShow;
175
192
  }
176
193
 
177
- const glyphTextureCache = labelCollection._glyphTextureCache;
194
+ const glyphBillboardCollection = labelCollection._glyphBillboardCollection;
195
+ const glyphTextureCache = glyphBillboardCollection.billboardTextureCache;
196
+ const textDimensionsCache = labelCollection._textDimensionsCache;
178
197
 
179
198
  // walk the text looking for new characters (creating new glyphs for each)
180
199
  // or changed characters (rebinding existing glyphs)
181
- for (textIndex = 0; textIndex < textLength; ++textIndex) {
200
+ for (let textIndex = 0; textIndex < textLength; ++textIndex) {
182
201
  const character = graphemes[textIndex];
183
202
  const verticalOrigin = label._verticalOrigin;
184
203
 
@@ -190,8 +209,12 @@ function rebindAllGlyphs(labelCollection, label) {
190
209
  +verticalOrigin,
191
210
  ]);
192
211
 
193
- let glyphTextureInfo = glyphTextureCache[id];
194
- if (!defined(glyphTextureInfo)) {
212
+ let dimensions = textDimensionsCache[id];
213
+ let glyphBillboardTexture = glyphTextureCache.get(id);
214
+ if (!defined(glyphBillboardTexture) || !defined(dimensions)) {
215
+ glyphBillboardTexture = new BillboardTexture(glyphBillboardCollection);
216
+ glyphTextureCache.set(id, glyphBillboardTexture);
217
+
195
218
  const glyphFont = `${label._fontStyle} ${label._fontWeight} ${SDFSettings.FONT_SIZE}px ${label._fontFamily}`;
196
219
 
197
220
  const canvas = createGlyphCanvas(
@@ -203,14 +226,14 @@ function rebindAllGlyphs(labelCollection, label) {
203
226
  LabelStyle.FILL,
204
227
  );
205
228
 
206
- glyphTextureInfo = new GlyphTextureInfo(
207
- labelCollection,
208
- -1,
209
- canvas.dimensions,
210
- );
211
- glyphTextureCache[id] = glyphTextureInfo;
229
+ dimensions = canvas.dimensions;
230
+ textDimensionsCache[id] = dimensions;
212
231
 
213
- if (canvas.width > 0 && canvas.height > 0) {
232
+ if (
233
+ canvas.width > 0 &&
234
+ canvas.height > 0 &&
235
+ !whitespaceRegex.test(character)
236
+ ) {
214
237
  const sdfValues = bitmapSDF(canvas, {
215
238
  cutoff: SDFSettings.CUTOFF,
216
239
  radius: SDFSettings.RADIUS,
@@ -233,84 +256,76 @@ function rebindAllGlyphs(labelCollection, label) {
233
256
  }
234
257
  }
235
258
  ctx.putImageData(imgData, 0, 0);
236
- if (character !== " ") {
237
- addGlyphToTextureAtlas(
238
- labelCollection._textureAtlas,
239
- id,
240
- canvas,
241
- glyphTextureInfo,
242
- );
243
- }
259
+ glyphBillboardTexture.loadImage(id, canvas);
244
260
  }
245
261
  }
246
262
 
247
- glyph = glyphs[textIndex];
248
-
249
- if (defined(glyph)) {
250
- // clean up leftover information from the previous glyph
251
- if (glyphTextureInfo.index === -1) {
252
- // no texture, and therefore no billboard, for this glyph.
253
- // so, completely unbind glyph.
254
- unbindGlyph(labelCollection, glyph);
255
- } else if (defined(glyph.textureInfo)) {
256
- // we have a texture and billboard. If we had one before, release
257
- // our reference to that texture info, but reuse the billboard.
258
- glyph.textureInfo = undefined;
259
- }
260
- } else {
261
- // create a glyph object
263
+ let glyph = glyphs[textIndex];
264
+ if (!defined(glyph)) {
262
265
  glyph = new Glyph();
266
+ glyph.dimensions = dimensions;
267
+ glyph.billboardTexture = glyphBillboardTexture;
263
268
  glyphs[textIndex] = glyph;
264
269
  }
265
270
 
266
- glyph.textureInfo = glyphTextureInfo;
267
- glyph.dimensions = glyphTextureInfo.dimensions;
268
-
269
- // if we have a texture, configure the existing billboard, or obtain one
270
- if (glyphTextureInfo.index !== -1) {
271
- let billboard = glyph.billboard;
272
- const spareBillboards = labelCollection._spareBillboards;
273
- if (!defined(billboard)) {
274
- if (spareBillboards.length > 0) {
275
- billboard = spareBillboards.pop();
276
- } else {
277
- billboard = labelCollection._billboardCollection.add({
278
- collection: labelCollection,
279
- });
280
- billboard._labelDimensions = new Cartesian2();
281
- billboard._labelTranslate = new Cartesian2();
282
- }
283
- glyph.billboard = billboard;
284
- }
271
+ if (glyph.billboardTexture.id !== id) {
272
+ // This glyph has been mapped to a new texture. If we had one before, release
273
+ // our reference to that texture and dimensions, but reuse the billboard.
274
+ glyph.billboardTexture = glyphBillboardTexture;
275
+ glyph.dimensions = dimensions;
276
+ }
277
+
278
+ if (!glyphBillboardTexture.hasImage) {
279
+ // No texture, and therefore no billboard, for this glyph.
280
+ // so, completely unbind glyph to free up the billboard for others
281
+ unbindGlyphBillboard(labelCollection, glyph);
282
+ continue;
283
+ }
285
284
 
286
- billboard.show = label._show;
287
- billboard.position = label._position;
288
- billboard.eyeOffset = label._eyeOffset;
289
- billboard.pixelOffset = label._pixelOffset;
290
- billboard.horizontalOrigin = HorizontalOrigin.LEFT;
291
- billboard.verticalOrigin = label._verticalOrigin;
292
- billboard.heightReference = label._heightReference;
293
- billboard.scale = label.totalScale;
294
- billboard.pickPrimitive = label;
295
- billboard.id = label._id;
296
- billboard.image = id;
297
- billboard.translucencyByDistance = label._translucencyByDistance;
298
- billboard.pixelOffsetScaleByDistance = label._pixelOffsetScaleByDistance;
299
- billboard.scaleByDistance = label._scaleByDistance;
300
- billboard.distanceDisplayCondition = label._distanceDisplayCondition;
301
- billboard.disableDepthTestDistance = label._disableDepthTestDistance;
302
- billboard._batchIndex = label._batchIndex;
303
- billboard.outlineColor = label.outlineColor;
304
- if (label.style === LabelStyle.FILL_AND_OUTLINE) {
305
- billboard.color = label._fillColor;
306
- billboard.outlineWidth = label.outlineWidth;
307
- } else if (label.style === LabelStyle.FILL) {
308
- billboard.color = label._fillColor;
309
- billboard.outlineWidth = 0.0;
310
- } else if (label.style === LabelStyle.OUTLINE) {
311
- billboard.color = Color.TRANSPARENT;
312
- billboard.outlineWidth = label.outlineWidth;
285
+ // If we have a texture, configure the existing billboard, or obtain one
286
+ let billboard = glyph.billboard;
287
+ const spareBillboards = labelCollection._spareBillboards;
288
+ if (!defined(billboard)) {
289
+ if (spareBillboards.length > 0) {
290
+ billboard = spareBillboards.pop();
291
+ } else {
292
+ billboard = glyphBillboardCollection.add({
293
+ collection: labelCollection,
294
+ });
295
+ billboard._labelDimensions = new Cartesian2();
296
+ billboard._labelTranslate = new Cartesian2();
313
297
  }
298
+ glyph.billboard = billboard;
299
+ }
300
+
301
+ billboard.setImageTexture(glyphBillboardTexture);
302
+
303
+ billboard.show = label._show;
304
+ billboard.position = label._position;
305
+ billboard.eyeOffset = label._eyeOffset;
306
+ billboard.pixelOffset = label._pixelOffset;
307
+ billboard.horizontalOrigin = HorizontalOrigin.LEFT;
308
+ billboard.verticalOrigin = label._verticalOrigin;
309
+ billboard.heightReference = label._heightReference;
310
+ billboard.scale = label.totalScale;
311
+ billboard.pickPrimitive = label;
312
+ billboard.id = label._id;
313
+ billboard.translucencyByDistance = label._translucencyByDistance;
314
+ billboard.pixelOffsetScaleByDistance = label._pixelOffsetScaleByDistance;
315
+ billboard.scaleByDistance = label._scaleByDistance;
316
+ billboard.distanceDisplayCondition = label._distanceDisplayCondition;
317
+ billboard.disableDepthTestDistance = label._disableDepthTestDistance;
318
+ billboard._batchIndex = label._batchIndex;
319
+ billboard.outlineColor = label.outlineColor;
320
+ if (label.style === LabelStyle.FILL_AND_OUTLINE) {
321
+ billboard.color = label._fillColor;
322
+ billboard.outlineWidth = label.outlineWidth;
323
+ } else if (label.style === LabelStyle.FILL) {
324
+ billboard.color = label._fillColor;
325
+ billboard.outlineWidth = 0.0;
326
+ } else if (label.style === LabelStyle.OUTLINE) {
327
+ billboard.color = Color.TRANSPARENT;
328
+ billboard.outlineWidth = label.outlineWidth;
314
329
  }
315
330
  }
316
331
 
@@ -335,15 +350,12 @@ const scratchBackgroundPadding = new Cartesian2();
335
350
  function repositionAllGlyphs(label) {
336
351
  const glyphs = label._glyphs;
337
352
  const text = label._renderedText;
338
- let glyph;
339
- let dimensions;
340
353
  let lastLineWidth = 0;
341
354
  let maxLineWidth = 0;
342
355
  const lineWidths = [];
343
356
  let maxGlyphDescent = Number.NEGATIVE_INFINITY;
344
357
  let maxGlyphY = 0;
345
358
  let numberOfLines = 1;
346
- let glyphIndex;
347
359
  const glyphLength = glyphs.length;
348
360
 
349
361
  const backgroundBillboard = label._backgroundBillboard;
@@ -356,18 +368,21 @@ function repositionAllGlyphs(label) {
356
368
  backgroundPadding.x /= label._relativeSize;
357
369
  backgroundPadding.y /= label._relativeSize;
358
370
 
359
- for (glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
371
+ for (let glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
360
372
  if (text.charAt(glyphIndex) === "\n") {
361
373
  lineWidths.push(lastLineWidth);
362
374
  ++numberOfLines;
363
375
  lastLineWidth = 0;
364
- } else {
365
- glyph = glyphs[glyphIndex];
366
- dimensions = glyph.dimensions;
376
+ continue;
377
+ }
378
+
379
+ const glyph = glyphs[glyphIndex];
380
+ const dimensions = glyph.dimensions;
381
+ if (defined(dimensions)) {
367
382
  maxGlyphY = Math.max(maxGlyphY, dimensions.height - dimensions.descent);
368
383
  maxGlyphDescent = Math.max(maxGlyphDescent, dimensions.descent);
369
384
 
370
- //Computing the line width must also account for the kerning that occurs between letters.
385
+ // Computing the line width must also account for the kerning that occurs between letters.
371
386
  lastLineWidth += dimensions.width - dimensions.minx;
372
387
  if (glyphIndex < glyphLength - 1) {
373
388
  lastLineWidth += glyphs[glyphIndex + 1].dimensions.minx;
@@ -408,7 +423,7 @@ function repositionAllGlyphs(label) {
408
423
  let firstCharOfLine = true;
409
424
 
410
425
  let lineOffsetY = 0;
411
- for (glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
426
+ for (let glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
412
427
  if (text.charAt(glyphIndex) === "\n") {
413
428
  ++lineIndex;
414
429
  lineOffsetY += lineSpacing;
@@ -420,10 +435,12 @@ function repositionAllGlyphs(label) {
420
435
  );
421
436
  glyphPixelOffset.x = widthOffset * scale;
422
437
  firstCharOfLine = true;
423
- } else {
424
- glyph = glyphs[glyphIndex];
425
- dimensions = glyph.dimensions;
438
+ continue;
439
+ }
426
440
 
441
+ const glyph = glyphs[glyphIndex];
442
+ const dimensions = glyph.dimensions;
443
+ if (defined(dimensions)) {
427
444
  if (verticalOrigin === VerticalOrigin.TOP) {
428
445
  glyphPixelOffset.y =
429
446
  dimensions.height - maxGlyphY - backgroundPadding.y;
@@ -500,8 +517,8 @@ function repositionAllGlyphs(label) {
500
517
  }
501
518
 
502
519
  if (isHeightReferenceClamp(label.heightReference)) {
503
- for (glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
504
- glyph = glyphs[glyphIndex];
520
+ for (let glyphIndex = 0; glyphIndex < glyphLength; ++glyphIndex) {
521
+ const glyph = glyphs[glyphIndex];
505
522
  const billboard = glyph.billboard;
506
523
  if (defined(billboard)) {
507
524
  billboard._labelTranslate = Cartesian2.clone(
@@ -516,7 +533,7 @@ function repositionAllGlyphs(label) {
516
533
  function destroyLabel(labelCollection, label) {
517
534
  const glyphs = label._glyphs;
518
535
  for (let i = 0, len = glyphs.length; i < len; ++i) {
519
- unbindGlyph(labelCollection, glyphs[i]);
536
+ unbindGlyphBillboard(labelCollection, glyphs[i]);
520
537
  }
521
538
  if (defined(label._backgroundBillboard)) {
522
539
  labelCollection._backgroundBillboardCollection.remove(
@@ -582,28 +599,30 @@ function destroyLabel(labelCollection, label) {
582
599
  * });
583
600
  */
584
601
  function LabelCollection(options) {
585
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
602
+ options = options ?? Frozen.EMPTY_OBJECT;
586
603
 
587
604
  this._scene = options.scene;
588
605
  this._batchTable = options.batchTable;
589
606
 
590
- this._textureAtlas = undefined;
591
- this._backgroundTextureAtlas = undefined;
592
-
593
- this._backgroundBillboardCollection = new BillboardCollection({
607
+ const backgroundBillboardCollection = new BillboardCollection({
594
608
  scene: this._scene,
609
+ textureAtlas: new TextureAtlas({
610
+ initialSize: whitePixelSize,
611
+ }),
595
612
  });
596
- this._backgroundBillboardCollection.destroyTextureAtlas = false;
613
+ this._backgroundBillboardCollection = backgroundBillboardCollection;
614
+ this._backgroundBillboardTexture = new BillboardTexture(
615
+ backgroundBillboardCollection,
616
+ );
597
617
 
598
- this._billboardCollection = new BillboardCollection({
618
+ this._glyphBillboardCollection = new BillboardCollection({
599
619
  scene: this._scene,
600
620
  batchTable: this._batchTable,
601
621
  });
602
- this._billboardCollection.destroyTextureAtlas = false;
603
- this._billboardCollection._sdf = true;
622
+ this._glyphBillboardCollection._sdf = true;
604
623
 
605
624
  this._spareBillboards = [];
606
- this._glyphTextureCache = {};
625
+ this._textDimensionsCache = {};
607
626
  this._labels = [];
608
627
  this._labelsToUpdate = [];
609
628
  this._totalGlyphCount = 0;
@@ -616,7 +635,7 @@ function LabelCollection(options) {
616
635
  * @type {boolean}
617
636
  * @default true
618
637
  */
619
- this.show = defaultValue(options.show, true);
638
+ this.show = options.show ?? true;
620
639
 
621
640
  /**
622
641
  * The 4x4 transformation matrix that transforms each label in this collection from model to world coordinates.
@@ -647,9 +666,7 @@ function LabelCollection(options) {
647
666
  * text : 'Up'
648
667
  * });
649
668
  */
650
- this.modelMatrix = Matrix4.clone(
651
- defaultValue(options.modelMatrix, Matrix4.IDENTITY),
652
- );
669
+ this.modelMatrix = Matrix4.clone(options.modelMatrix ?? Matrix4.IDENTITY);
653
670
 
654
671
  /**
655
672
  * This property is for debugging only; it is not for production use nor is it optimized.
@@ -661,10 +678,7 @@ function LabelCollection(options) {
661
678
  *
662
679
  * @default false
663
680
  */
664
- this.debugShowBoundingVolume = defaultValue(
665
- options.debugShowBoundingVolume,
666
- false,
667
- );
681
+ this.debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
668
682
 
669
683
  /**
670
684
  * The label blending option. The default is used for rendering both opaque and translucent labels.
@@ -674,10 +688,7 @@ function LabelCollection(options) {
674
688
  * @type {BlendOption}
675
689
  * @default BlendOption.OPAQUE_AND_TRANSLUCENT
676
690
  */
677
- this.blendOption = defaultValue(
678
- options.blendOption,
679
- BlendOption.OPAQUE_AND_TRANSLUCENT,
680
- );
691
+ this.blendOption = options.blendOption ?? BlendOption.OPAQUE_AND_TRANSLUCENT;
681
692
  }
682
693
 
683
694
  Object.defineProperties(LabelCollection.prototype, {
@@ -687,12 +698,47 @@ Object.defineProperties(LabelCollection.prototype, {
687
698
  * in the collection.
688
699
  * @memberof LabelCollection.prototype
689
700
  * @type {number}
701
+ * @readonly
690
702
  */
691
703
  length: {
692
704
  get: function () {
693
705
  return this._labels.length;
694
706
  },
695
707
  },
708
+
709
+ /**
710
+ * Returns the size in bytes of the WebGL texture resources.
711
+ * @private
712
+ * @memberof LabelCollection.prototype
713
+ * @type {number}
714
+ * @readonly
715
+ */
716
+ sizeInBytes: {
717
+ get: function () {
718
+ return (
719
+ this._glyphBillboardCollection.sizeInBytes +
720
+ this._backgroundBillboardCollection.sizeInBytes
721
+ );
722
+ },
723
+ },
724
+
725
+ /**
726
+ * True when all labels currently in the collection are ready for rendering.
727
+ * @private
728
+ * @memberof LabelCollection.prototype
729
+ * @type {boolean}
730
+ * @readonly
731
+ */
732
+ ready: {
733
+ get: function () {
734
+ const backgroundBillboard = this._backgroundBillboardCollection.get(0);
735
+ if (defined(backgroundBillboard) && !backgroundBillboard.ready) {
736
+ return false;
737
+ }
738
+
739
+ return this._glyphBillboardCollection.ready;
740
+ },
741
+ },
696
742
  });
697
743
 
698
744
  /**
@@ -709,7 +755,6 @@ Object.defineProperties(LabelCollection.prototype, {
709
755
  *
710
756
  * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
711
757
  *
712
- *
713
758
  * @example
714
759
  * // Example 1: Add a label, specifying all the default values.
715
760
  * const l = labels.add({
@@ -872,42 +917,22 @@ LabelCollection.prototype.get = function (index) {
872
917
 
873
918
  /**
874
919
  * @private
875
- *
876
920
  */
877
921
  LabelCollection.prototype.update = function (frameState) {
878
922
  if (!this.show) {
879
923
  return;
880
924
  }
881
925
 
882
- const billboardCollection = this._billboardCollection;
926
+ const glyphBillboardCollection = this._glyphBillboardCollection;
883
927
  const backgroundBillboardCollection = this._backgroundBillboardCollection;
884
928
 
885
- billboardCollection.modelMatrix = this.modelMatrix;
886
- billboardCollection.debugShowBoundingVolume = this.debugShowBoundingVolume;
929
+ glyphBillboardCollection.modelMatrix = this.modelMatrix;
930
+ glyphBillboardCollection.debugShowBoundingVolume =
931
+ this.debugShowBoundingVolume;
887
932
  backgroundBillboardCollection.modelMatrix = this.modelMatrix;
888
933
  backgroundBillboardCollection.debugShowBoundingVolume =
889
934
  this.debugShowBoundingVolume;
890
935
 
891
- const context = frameState.context;
892
-
893
- if (!defined(this._textureAtlas)) {
894
- this._textureAtlas = new TextureAtlas({
895
- context: context,
896
- });
897
- billboardCollection.textureAtlas = this._textureAtlas;
898
- }
899
-
900
- if (!defined(this._backgroundTextureAtlas)) {
901
- this._backgroundTextureAtlas = new TextureAtlas({
902
- context: context,
903
- initialSize: whitePixelSize,
904
- });
905
- backgroundBillboardCollection.textureAtlas = this._backgroundTextureAtlas;
906
-
907
- // Request a new render in request render mode after the next frame renders
908
- addWhitePixelCanvas(this._backgroundTextureAtlas);
909
- }
910
-
911
936
  const len = this._labelsToUpdate.length;
912
937
  for (let i = 0; i < len; ++i) {
913
938
  const label = this._labelsToUpdate[i];
@@ -935,15 +960,15 @@ LabelCollection.prototype.update = function (frameState) {
935
960
  backgroundBillboardCollection.length > 0
936
961
  ? BlendOption.TRANSLUCENT
937
962
  : this.blendOption;
938
- billboardCollection.blendOption = blendOption;
963
+ glyphBillboardCollection.blendOption = blendOption;
939
964
  backgroundBillboardCollection.blendOption = blendOption;
940
965
 
941
- billboardCollection._highlightColor = this._highlightColor;
966
+ glyphBillboardCollection._highlightColor = this._highlightColor;
942
967
  backgroundBillboardCollection._highlightColor = this._highlightColor;
943
968
 
944
969
  this._labelsToUpdate.length = 0;
945
970
  backgroundBillboardCollection.update(frameState);
946
- billboardCollection.update(frameState);
971
+ glyphBillboardCollection.update(frameState);
947
972
  };
948
973
 
949
974
  /**
@@ -978,12 +1003,9 @@ LabelCollection.prototype.isDestroyed = function () {
978
1003
  */
979
1004
  LabelCollection.prototype.destroy = function () {
980
1005
  this.removeAll();
981
- this._billboardCollection = this._billboardCollection.destroy();
982
- this._textureAtlas = this._textureAtlas && this._textureAtlas.destroy();
1006
+ this._glyphBillboardCollection = this._glyphBillboardCollection.destroy();
983
1007
  this._backgroundBillboardCollection =
984
1008
  this._backgroundBillboardCollection.destroy();
985
- this._backgroundTextureAtlas =
986
- this._backgroundTextureAtlas && this._backgroundTextureAtlas.destroy();
987
1009
 
988
1010
  return destroyObject(this);
989
1011
  };