@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,14 +1,14 @@
1
1
  import AttributeCompression from "../Core/AttributeCompression.js";
2
+ import BoundingRectangle from "../Core/BoundingRectangle.js";
2
3
  import BoundingSphere from "../Core/BoundingSphere.js";
3
4
  import Cartesian2 from "../Core/Cartesian2.js";
4
5
  import Cartesian3 from "../Core/Cartesian3.js";
5
6
  import Check from "../Core/Check.js";
6
7
  import Color from "../Core/Color.js";
7
8
  import ComponentDatatype from "../Core/ComponentDatatype.js";
8
- import defaultValue from "../Core/defaultValue.js";
9
+ import Frozen from "../Core/Frozen.js";
9
10
  import defined from "../Core/defined.js";
10
11
  import destroyObject from "../Core/destroyObject.js";
11
- import DeveloperError from "../Core/DeveloperError.js";
12
12
  import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
13
13
  import IndexDatatype from "../Core/IndexDatatype.js";
14
14
  import CesiumMath from "../Core/Math.js";
@@ -32,7 +32,7 @@ import HeightReference, { isHeightReferenceClamp } from "./HeightReference.js";
32
32
  import HorizontalOrigin from "./HorizontalOrigin.js";
33
33
  import SceneMode from "./SceneMode.js";
34
34
  import SDFSettings from "./SDFSettings.js";
35
- import TextureAtlas from "./TextureAtlas.js";
35
+ import TextureAtlas from "../Renderer/TextureAtlas.js";
36
36
  import VerticalOrigin from "./VerticalOrigin.js";
37
37
 
38
38
  const SHOW_INDEX = Billboard.SHOW_INDEX;
@@ -143,14 +143,20 @@ const attributeLocationsInstanced = {
143
143
  * });
144
144
  */
145
145
  function BillboardCollection(options) {
146
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
146
+ options = options ?? Frozen.EMPTY_OBJECT;
147
147
 
148
148
  this._scene = options.scene;
149
149
  this._batchTable = options.batchTable;
150
150
 
151
- this._textureAtlas = undefined;
152
- this._textureAtlasGUID = undefined;
151
+ let textureAtlas = options.textureAtlas; // Hidden option for internal use
152
+ if (!defined(textureAtlas)) {
153
+ textureAtlas = new TextureAtlas();
154
+ }
155
+ this._textureAtlas = textureAtlas;
156
+ this._textureAtlasGUID = textureAtlas.guid;
153
157
  this._destroyTextureAtlas = true;
158
+ this._billboardTextureCache = new Map();
159
+
154
160
  this._sp = undefined;
155
161
  this._spTranslucent = undefined;
156
162
  this._rsOpaque = undefined;
@@ -205,13 +211,15 @@ function BillboardCollection(options) {
205
211
 
206
212
  this._colorCommands = [];
207
213
 
214
+ this._allBillboardsReady = false;
215
+
208
216
  /**
209
217
  * Determines if billboards in this collection will be shown.
210
218
  *
211
219
  * @type {boolean}
212
220
  * @default true
213
221
  */
214
- this.show = defaultValue(options.show, true);
222
+ this.show = options.show ?? true;
215
223
 
216
224
  /**
217
225
  * The 4x4 transformation matrix that transforms each billboard in this collection from model to world coordinates.
@@ -245,9 +253,7 @@ function BillboardCollection(options) {
245
253
  *
246
254
  * @see Transforms.eastNorthUpToFixedFrame
247
255
  */
248
- this.modelMatrix = Matrix4.clone(
249
- defaultValue(options.modelMatrix, Matrix4.IDENTITY),
250
- );
256
+ this.modelMatrix = Matrix4.clone(options.modelMatrix ?? Matrix4.IDENTITY);
251
257
  this._modelMatrix = Matrix4.clone(Matrix4.IDENTITY);
252
258
 
253
259
  /**
@@ -260,10 +266,7 @@ function BillboardCollection(options) {
260
266
  *
261
267
  * @default false
262
268
  */
263
- this.debugShowBoundingVolume = defaultValue(
264
- options.debugShowBoundingVolume,
265
- false,
266
- );
269
+ this.debugShowBoundingVolume = options.debugShowBoundingVolume ?? false;
267
270
 
268
271
  /**
269
272
  * This property is for debugging only; it is not for production use nor is it optimized.
@@ -275,10 +278,7 @@ function BillboardCollection(options) {
275
278
  *
276
279
  * @default false
277
280
  */
278
- this.debugShowTextureAtlas = defaultValue(
279
- options.debugShowTextureAtlas,
280
- false,
281
- );
281
+ this.debugShowTextureAtlas = options.debugShowTextureAtlas ?? false;
282
282
 
283
283
  /**
284
284
  * The billboard blending option. The default is used for rendering both opaque and translucent billboards.
@@ -288,10 +288,7 @@ function BillboardCollection(options) {
288
288
  * @type {BlendOption}
289
289
  * @default BlendOption.OPAQUE_AND_TRANSLUCENT
290
290
  */
291
- this.blendOption = defaultValue(
292
- options.blendOption,
293
- BlendOption.OPAQUE_AND_TRANSLUCENT,
294
- );
291
+ this.blendOption = options.blendOption ?? BlendOption.OPAQUE_AND_TRANSLUCENT;
295
292
  this._blendOption = undefined;
296
293
 
297
294
  this._mode = SceneMode.SCENE3D;
@@ -319,13 +316,12 @@ function BillboardCollection(options) {
319
316
 
320
317
  this._highlightColor = Color.clone(Color.WHITE); // Only used by Vector3DTilePoints
321
318
 
322
- const that = this;
323
319
  this._uniforms = {
324
- u_atlas: function () {
325
- return that._textureAtlas.texture;
320
+ u_atlas: () => {
321
+ return this.textureAtlas.texture;
326
322
  },
327
- u_highlightColor: function () {
328
- return that._highlightColor;
323
+ u_highlightColor: () => {
324
+ return this._highlightColor;
329
325
  },
330
326
  };
331
327
 
@@ -353,6 +349,7 @@ Object.defineProperties(BillboardCollection.prototype, {
353
349
  * in the collection.
354
350
  * @memberof BillboardCollection.prototype
355
351
  * @type {number}
352
+ * @readonly
356
353
  */
357
354
  length: {
358
355
  get: function () {
@@ -372,13 +369,16 @@ Object.defineProperties(BillboardCollection.prototype, {
372
369
  return this._textureAtlas;
373
370
  },
374
371
  set: function (value) {
372
+ //>>includeStart('debug', pragmas.debug);
373
+ Check.defined("textureAtlas", value);
374
+ //>>includeEnd('debug');
375
+
375
376
  if (this._textureAtlas !== value) {
376
377
  this._textureAtlas =
377
378
  this._destroyTextureAtlas &&
378
379
  this._textureAtlas &&
379
380
  this._textureAtlas.destroy();
380
381
  this._textureAtlas = value;
381
- this._createVertexArray = true; // New per-billboard texture coordinates
382
382
  }
383
383
  },
384
384
  },
@@ -398,12 +398,10 @@ Object.defineProperties(BillboardCollection.prototype, {
398
398
  * // Set destroyTextureAtlas
399
399
  * // Destroy a billboard collection but not its texture atlas.
400
400
  *
401
- * const atlas = new TextureAtlas({
402
- * scene : scene,
403
- * images : images
404
- * });
401
+ * const atlas = new TextureAtlas();
405
402
  * billboards.textureAtlas = atlas;
406
403
  * billboards.destroyTextureAtlas = false;
404
+ *
407
405
  * billboards = billboards.destroy();
408
406
  * console.log(atlas.isDestroyed()); // False
409
407
  */
@@ -415,6 +413,45 @@ Object.defineProperties(BillboardCollection.prototype, {
415
413
  this._destroyTextureAtlas = value;
416
414
  },
417
415
  },
416
+
417
+ /**
418
+ * Returns the size in bytes of the WebGL texture resources.
419
+ * @private
420
+ * @memberof BillboardCollection.prototype
421
+ * @type {number}
422
+ * @readonly
423
+ */
424
+ sizeInBytes: {
425
+ get: function () {
426
+ return this._textureAtlas.sizeInBytes;
427
+ },
428
+ },
429
+
430
+ /**
431
+ * True when all billboards currently in the collection are ready for rendering.
432
+ * @private
433
+ * @memberof BillboardCollection.prototype
434
+ * @type {boolean}
435
+ * @readonly
436
+ */
437
+ ready: {
438
+ get: function () {
439
+ return this._allBillboardsReady;
440
+ },
441
+ },
442
+
443
+ /**
444
+ * Cache of loaded billboard images.
445
+ * @private
446
+ * @memberof BillboardCollection.prototype
447
+ * @type {Map<string, BillboardTexture>}
448
+ * @readonly
449
+ */
450
+ billboardTextureCache: {
451
+ get: function () {
452
+ return this._billboardTextureCache;
453
+ },
454
+ },
418
455
  });
419
456
 
420
457
  function destroyBillboards(billboards) {
@@ -836,7 +873,6 @@ const writePositionScratch = new EncodedCartesian3();
836
873
  function writePositionScaleAndRotation(
837
874
  billboardCollection,
838
875
  frameState,
839
- textureAtlasCoordinates,
840
876
  vafWriters,
841
877
  billboard,
842
878
  ) {
@@ -909,10 +945,11 @@ const LOWER_RIGHT = 2.0;
909
945
  const UPPER_RIGHT = 3.0;
910
946
  const UPPER_LEFT = 1.0;
911
947
 
948
+ const scratchBoundingRectangle = new BoundingRectangle();
949
+
912
950
  function writeCompressedAttrib0(
913
951
  billboardCollection,
914
952
  frameState,
915
- textureAtlasCoordinates,
916
953
  vafWriters,
917
954
  billboard,
918
955
  ) {
@@ -958,15 +995,10 @@ function writeCompressedAttrib0(
958
995
  let bottomLeftY = 0;
959
996
  let width = 0;
960
997
  let height = 0;
961
- const index = billboard._imageIndex;
962
- if (index !== -1) {
963
- const imageRectangle = textureAtlasCoordinates[index];
964
-
965
- //>>includeStart('debug', pragmas.debug);
966
- if (!defined(imageRectangle)) {
967
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
968
- }
969
- //>>includeEnd('debug');
998
+ if (billboard.ready) {
999
+ const imageRectangle = billboard.computeTextureCoordinates(
1000
+ scratchBoundingRectangle,
1001
+ );
970
1002
 
971
1003
  bottomLeftX = imageRectangle.x;
972
1004
  bottomLeftY = imageRectangle.y;
@@ -1057,7 +1089,6 @@ function writeCompressedAttrib0(
1057
1089
  function writeCompressedAttrib1(
1058
1090
  billboardCollection,
1059
1091
  frameState,
1060
- textureAtlasCoordinates,
1061
1092
  vafWriters,
1062
1093
  billboard,
1063
1094
  ) {
@@ -1087,24 +1118,7 @@ function writeCompressedAttrib1(
1087
1118
  }
1088
1119
  }
1089
1120
 
1090
- let width = 0;
1091
- const index = billboard._imageIndex;
1092
- if (index !== -1) {
1093
- const imageRectangle = textureAtlasCoordinates[index];
1094
-
1095
- //>>includeStart('debug', pragmas.debug);
1096
- if (!defined(imageRectangle)) {
1097
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
1098
- }
1099
- //>>includeEnd('debug');
1100
-
1101
- width = imageRectangle.width;
1102
- }
1103
-
1104
- const textureWidth = billboardCollection._textureAtlas.texture.width;
1105
- const imageWidth = Math.round(
1106
- defaultValue(billboard.width, textureWidth * width),
1107
- );
1121
+ const imageWidth = billboard.width ?? 0;
1108
1122
  billboardCollection._maxSize = Math.max(
1109
1123
  billboardCollection._maxSize,
1110
1124
  imageWidth,
@@ -1143,7 +1157,6 @@ function writeCompressedAttrib1(
1143
1157
  function writeCompressedAttrib2(
1144
1158
  billboardCollection,
1145
1159
  frameState,
1146
- textureAtlasCoordinates,
1147
1160
  vafWriters,
1148
1161
  billboard,
1149
1162
  ) {
@@ -1163,32 +1176,12 @@ function writeCompressedAttrib2(
1163
1176
  billboardCollection._allSizedInMeters =
1164
1177
  billboardCollection._allSizedInMeters && sizeInMeters === 1.0;
1165
1178
 
1166
- let height = 0;
1167
- const index = billboard._imageIndex;
1168
- if (index !== -1) {
1169
- const imageRectangle = textureAtlasCoordinates[index];
1170
-
1171
- //>>includeStart('debug', pragmas.debug);
1172
- if (!defined(imageRectangle)) {
1173
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
1174
- }
1175
- //>>includeEnd('debug');
1176
-
1177
- height = imageRectangle.height;
1178
- }
1179
-
1180
- const dimensions = billboardCollection._textureAtlas.texture.dimensions;
1181
- const imageHeight = Math.round(
1182
- defaultValue(billboard.height, dimensions.y * height),
1183
- );
1179
+ const imageHeight = billboard.height ?? 0;
1184
1180
  billboardCollection._maxSize = Math.max(
1185
1181
  billboardCollection._maxSize,
1186
1182
  imageHeight,
1187
1183
  );
1188
- let labelHorizontalOrigin = defaultValue(
1189
- billboard._labelHorizontalOrigin,
1190
- -2,
1191
- );
1184
+ let labelHorizontalOrigin = billboard._labelHorizontalOrigin ?? -2;
1192
1185
  labelHorizontalOrigin += 2;
1193
1186
  const compressed3 = imageHeight * LEFT_SHIFT2 + labelHorizontalOrigin;
1194
1187
 
@@ -1222,7 +1215,6 @@ function writeCompressedAttrib2(
1222
1215
  function writeEyeOffset(
1223
1216
  billboardCollection,
1224
1217
  frameState,
1225
- textureAtlasCoordinates,
1226
1218
  vafWriters,
1227
1219
  billboard,
1228
1220
  ) {
@@ -1243,24 +1235,18 @@ function writeEyeOffset(
1243
1235
  );
1244
1236
 
1245
1237
  if (billboardCollection._instanced) {
1246
- let width = 0;
1247
- let height = 0;
1248
- const index = billboard._imageIndex;
1249
- if (index !== -1) {
1250
- const imageRectangle = textureAtlasCoordinates[index];
1238
+ scratchCartesian2.x = 0;
1239
+ scratchCartesian2.y = 0;
1251
1240
 
1252
- //>>includeStart('debug', pragmas.debug);
1253
- if (!defined(imageRectangle)) {
1254
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
1255
- }
1256
- //>>includeEnd('debug');
1241
+ if (billboard.ready) {
1242
+ const imageRectangle = billboard.computeTextureCoordinates(
1243
+ scratchBoundingRectangle,
1244
+ );
1257
1245
 
1258
- width = imageRectangle.width;
1259
- height = imageRectangle.height;
1246
+ scratchCartesian2.x = imageRectangle.width;
1247
+ scratchCartesian2.y = imageRectangle.height;
1260
1248
  }
1261
1249
 
1262
- scratchCartesian2.x = width;
1263
- scratchCartesian2.y = height;
1264
1250
  const compressedTexCoordsRange =
1265
1251
  AttributeCompression.compressTextureCoordinates(scratchCartesian2);
1266
1252
 
@@ -1278,7 +1264,6 @@ function writeEyeOffset(
1278
1264
  function writeScaleByDistance(
1279
1265
  billboardCollection,
1280
1266
  frameState,
1281
- textureAtlasCoordinates,
1282
1267
  vafWriters,
1283
1268
  billboard,
1284
1269
  ) {
@@ -1318,7 +1303,6 @@ function writeScaleByDistance(
1318
1303
  function writePixelOffsetScaleByDistance(
1319
1304
  billboardCollection,
1320
1305
  frameState,
1321
- textureAtlasCoordinates,
1322
1306
  vafWriters,
1323
1307
  billboard,
1324
1308
  ) {
@@ -1358,7 +1342,6 @@ function writePixelOffsetScaleByDistance(
1358
1342
  function writeCompressedAttribute3(
1359
1343
  billboardCollection,
1360
1344
  frameState,
1361
- textureAtlasCoordinates,
1362
1345
  vafWriters,
1363
1346
  billboard,
1364
1347
  ) {
@@ -1398,33 +1381,8 @@ function writeCompressedAttribute3(
1398
1381
  let imageWidth;
1399
1382
 
1400
1383
  if (!defined(billboard._labelDimensions)) {
1401
- let height = 0;
1402
- let width = 0;
1403
- const index = billboard._imageIndex;
1404
- if (index !== -1) {
1405
- const imageRectangle = textureAtlasCoordinates[index];
1406
-
1407
- //>>includeStart('debug', pragmas.debug);
1408
- if (!defined(imageRectangle)) {
1409
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
1410
- }
1411
- //>>includeEnd('debug');
1412
-
1413
- height = imageRectangle.height;
1414
- width = imageRectangle.width;
1415
- }
1416
-
1417
- imageHeight = Math.round(
1418
- defaultValue(
1419
- billboard.height,
1420
- billboardCollection._textureAtlas.texture.dimensions.y * height,
1421
- ),
1422
- );
1423
-
1424
- const textureWidth = billboardCollection._textureAtlas.texture.width;
1425
- imageWidth = Math.round(
1426
- defaultValue(billboard.width, textureWidth * width),
1427
- );
1384
+ imageWidth = billboard.width ?? 0;
1385
+ imageHeight = billboard.height ?? 0;
1428
1386
  } else {
1429
1387
  imageWidth = billboard._labelDimensions.x;
1430
1388
  imageHeight = billboard._labelDimensions.y;
@@ -1449,7 +1407,6 @@ function writeCompressedAttribute3(
1449
1407
  function writeTextureCoordinateBoundsOrLabelTranslate(
1450
1408
  billboardCollection,
1451
1409
  frameState,
1452
- textureAtlasCoordinates,
1453
1410
  vafWriters,
1454
1411
  billboard,
1455
1412
  ) {
@@ -1489,20 +1446,15 @@ function writeTextureCoordinateBoundsOrLabelTranslate(
1489
1446
  return;
1490
1447
  }
1491
1448
 
1492
- //write texture coordinate bounds, used by depth testing in fragment shader
1449
+ // Write texture coordinate bounds, used by depth testing in fragment shader
1493
1450
  let minX = 0;
1494
1451
  let minY = 0;
1495
1452
  let width = 0;
1496
1453
  let height = 0;
1497
- const index = billboard._imageIndex;
1498
- if (index !== -1) {
1499
- const imageRectangle = textureAtlasCoordinates[index];
1500
-
1501
- //>>includeStart('debug', pragmas.debug);
1502
- if (!defined(imageRectangle)) {
1503
- throw new DeveloperError(`Invalid billboard image index: ${index}`);
1504
- }
1505
- //>>includeEnd('debug');
1454
+ if (billboard.ready) {
1455
+ const imageRectangle = billboard.computeTextureCoordinates(
1456
+ scratchBoundingRectangle,
1457
+ );
1506
1458
 
1507
1459
  minX = imageRectangle.x;
1508
1460
  minY = imageRectangle.y;
@@ -1524,13 +1476,7 @@ function writeTextureCoordinateBoundsOrLabelTranslate(
1524
1476
  }
1525
1477
  }
1526
1478
 
1527
- function writeBatchId(
1528
- billboardCollection,
1529
- frameState,
1530
- textureAtlasCoordinates,
1531
- vafWriters,
1532
- billboard,
1533
- ) {
1479
+ function writeBatchId(billboardCollection, frameState, vafWriters, billboard) {
1534
1480
  if (!defined(billboardCollection._batchTable)) {
1535
1481
  return;
1536
1482
  }
@@ -1551,13 +1497,7 @@ function writeBatchId(
1551
1497
  }
1552
1498
  }
1553
1499
 
1554
- function writeSDF(
1555
- billboardCollection,
1556
- frameState,
1557
- textureAtlasCoordinates,
1558
- vafWriters,
1559
- billboard,
1560
- ) {
1500
+ function writeSDF(billboardCollection, frameState, vafWriters, billboard) {
1561
1501
  if (!billboardCollection._sdf) {
1562
1502
  return;
1563
1503
  }
@@ -1594,7 +1534,6 @@ function writeSDF(
1594
1534
  function writeSplitDirection(
1595
1535
  billboardCollection,
1596
1536
  frameState,
1597
- textureAtlasCoordinates,
1598
1537
  vafWriters,
1599
1538
  billboard,
1600
1539
  ) {
@@ -1622,94 +1561,56 @@ function writeSplitDirection(
1622
1561
  function writeBillboard(
1623
1562
  billboardCollection,
1624
1563
  frameState,
1625
- textureAtlasCoordinates,
1626
1564
  vafWriters,
1627
1565
  billboard,
1628
1566
  ) {
1629
1567
  writePositionScaleAndRotation(
1630
1568
  billboardCollection,
1631
1569
  frameState,
1632
- textureAtlasCoordinates,
1633
1570
  vafWriters,
1634
1571
  billboard,
1635
1572
  );
1636
1573
  writeCompressedAttrib0(
1637
1574
  billboardCollection,
1638
1575
  frameState,
1639
- textureAtlasCoordinates,
1640
1576
  vafWriters,
1641
1577
  billboard,
1642
1578
  );
1643
1579
  writeCompressedAttrib1(
1644
1580
  billboardCollection,
1645
1581
  frameState,
1646
- textureAtlasCoordinates,
1647
1582
  vafWriters,
1648
1583
  billboard,
1649
1584
  );
1650
1585
  writeCompressedAttrib2(
1651
1586
  billboardCollection,
1652
1587
  frameState,
1653
- textureAtlasCoordinates,
1654
- vafWriters,
1655
- billboard,
1656
- );
1657
- writeEyeOffset(
1658
- billboardCollection,
1659
- frameState,
1660
- textureAtlasCoordinates,
1661
- vafWriters,
1662
- billboard,
1663
- );
1664
- writeScaleByDistance(
1665
- billboardCollection,
1666
- frameState,
1667
- textureAtlasCoordinates,
1668
1588
  vafWriters,
1669
1589
  billboard,
1670
1590
  );
1591
+ writeEyeOffset(billboardCollection, frameState, vafWriters, billboard);
1592
+ writeScaleByDistance(billboardCollection, frameState, vafWriters, billboard);
1671
1593
  writePixelOffsetScaleByDistance(
1672
1594
  billboardCollection,
1673
1595
  frameState,
1674
- textureAtlasCoordinates,
1675
1596
  vafWriters,
1676
1597
  billboard,
1677
1598
  );
1678
1599
  writeCompressedAttribute3(
1679
1600
  billboardCollection,
1680
1601
  frameState,
1681
- textureAtlasCoordinates,
1682
1602
  vafWriters,
1683
1603
  billboard,
1684
1604
  );
1685
1605
  writeTextureCoordinateBoundsOrLabelTranslate(
1686
1606
  billboardCollection,
1687
1607
  frameState,
1688
- textureAtlasCoordinates,
1689
- vafWriters,
1690
- billboard,
1691
- );
1692
- writeBatchId(
1693
- billboardCollection,
1694
- frameState,
1695
- textureAtlasCoordinates,
1696
- vafWriters,
1697
- billboard,
1698
- );
1699
- writeSDF(
1700
- billboardCollection,
1701
- frameState,
1702
- textureAtlasCoordinates,
1703
- vafWriters,
1704
- billboard,
1705
- );
1706
- writeSplitDirection(
1707
- billboardCollection,
1708
- frameState,
1709
- textureAtlasCoordinates,
1710
1608
  vafWriters,
1711
1609
  billboard,
1712
1610
  );
1611
+ writeBatchId(billboardCollection, frameState, vafWriters, billboard);
1612
+ writeSDF(billboardCollection, frameState, vafWriters, billboard);
1613
+ writeSplitDirection(billboardCollection, frameState, vafWriters, billboard);
1713
1614
  }
1714
1615
 
1715
1616
  function recomputeActualPositions(
@@ -1838,7 +1739,7 @@ function createDebugCommand(billboardCollection, context) {
1838
1739
  const drawCommand = context.createViewportQuadCommand(fs, {
1839
1740
  uniformMap: {
1840
1741
  billboard_texture: function () {
1841
- return billboardCollection._textureAtlas.texture;
1742
+ return billboardCollection.textureAtlas.texture;
1842
1743
  },
1843
1744
  },
1844
1745
  });
@@ -1865,9 +1766,6 @@ BillboardCollection.prototype.update = function (frameState) {
1865
1766
  return;
1866
1767
  }
1867
1768
 
1868
- let billboards = this._billboards;
1869
- let billboardsLength = billboards.length;
1870
-
1871
1769
  const context = frameState.context;
1872
1770
  this._instanced = context.instancedArrays;
1873
1771
  attributeLocations = this._instanced
@@ -1877,21 +1775,40 @@ BillboardCollection.prototype.update = function (frameState) {
1877
1775
  ? getIndexBufferInstanced
1878
1776
  : getIndexBufferBatched;
1879
1777
 
1880
- let textureAtlas = this._textureAtlas;
1881
- if (!defined(textureAtlas)) {
1882
- textureAtlas = this._textureAtlas = new TextureAtlas({
1883
- context: context,
1884
- });
1778
+ let billboards = this._billboards;
1779
+ let billboardsLength = billboards.length;
1780
+ let allBillboardsReady = true;
1781
+ for (let i = 0; i < billboardsLength; ++i) {
1782
+ const billboard = billboards[i];
1783
+ if (defined(billboard.loadError)) {
1784
+ console.error(
1785
+ `Error loading image for billboard: ${billboard.loadError}`,
1786
+ );
1787
+ billboard.image = undefined;
1788
+ }
1789
+
1790
+ if (billboard.textureDirty) {
1791
+ this._updateBillboard(billboard, IMAGE_INDEX_INDEX);
1792
+ }
1885
1793
 
1886
- for (let ii = 0; ii < billboardsLength; ++ii) {
1887
- billboards[ii]._loadImage();
1794
+ if (billboard.show) {
1795
+ allBillboardsReady = allBillboardsReady && billboard.ready;
1888
1796
  }
1889
1797
  }
1890
1798
 
1891
- const textureAtlasCoordinates = textureAtlas.textureCoordinates;
1892
- if (textureAtlasCoordinates.length === 0) {
1893
- // Can't write billboard vertices until we have texture coordinates
1894
- // provided by a texture atlas
1799
+ // Queue any texture resource updates for after the frame is rendered
1800
+ const textureAtlas = this._textureAtlas;
1801
+ frameState.afterRender.push(() => {
1802
+ if (this.isDestroyed()) {
1803
+ return;
1804
+ }
1805
+
1806
+ return textureAtlas.update(frameState.context);
1807
+ });
1808
+
1809
+ if (!defined(textureAtlas.texture)) {
1810
+ // Can't write billboard vertices until the texture atlas
1811
+ // has been updated once
1895
1812
  return;
1896
1813
  }
1897
1814
 
@@ -1939,13 +1856,8 @@ BillboardCollection.prototype.update = function (frameState) {
1939
1856
  for (let i = 0; i < billboardsLength; ++i) {
1940
1857
  const billboard = this._billboards[i];
1941
1858
  billboard._dirty = false; // In case it needed an update.
1942
- writeBillboard(
1943
- this,
1944
- frameState,
1945
- textureAtlasCoordinates,
1946
- vafWriters,
1947
- billboard,
1948
- );
1859
+ billboard.textureDirty = false;
1860
+ writeBillboard(this, frameState, vafWriters, billboard);
1949
1861
  }
1950
1862
 
1951
1863
  // Different billboard collections share the same index buffer.
@@ -1992,7 +1904,7 @@ BillboardCollection.prototype.update = function (frameState) {
1992
1904
  writers.push(writeCompressedAttrib2);
1993
1905
  }
1994
1906
 
1995
- if (properties[EYE_OFFSET_INDEX]) {
1907
+ if (properties[IMAGE_INDEX_INDEX] || properties[EYE_OFFSET_INDEX]) {
1996
1908
  writers.push(writeEyeOffset);
1997
1909
  }
1998
1910
 
@@ -2036,9 +1948,10 @@ BillboardCollection.prototype.update = function (frameState) {
2036
1948
  for (let m = 0; m < billboardsToUpdateLength; ++m) {
2037
1949
  const b = billboardsToUpdate[m];
2038
1950
  b._dirty = false;
1951
+ b.textureDirty = false;
2039
1952
 
2040
1953
  for (let n = 0; n < numWriters; ++n) {
2041
- writers[n](this, frameState, textureAtlasCoordinates, vafWriters, b);
1954
+ writers[n](this, frameState, vafWriters, b);
2042
1955
  }
2043
1956
  }
2044
1957
  this._vaf.commit(getIndexBuffer(context));
@@ -2046,9 +1959,10 @@ BillboardCollection.prototype.update = function (frameState) {
2046
1959
  for (let h = 0; h < billboardsToUpdateLength; ++h) {
2047
1960
  const bb = billboardsToUpdate[h];
2048
1961
  bb._dirty = false;
1962
+ bb.textureDirty = false;
2049
1963
 
2050
1964
  for (let o = 0; o < numWriters; ++o) {
2051
- writers[o](this, frameState, textureAtlasCoordinates, vafWriters, bb);
1965
+ writers[o](this, frameState, vafWriters, bb);
2052
1966
  }
2053
1967
 
2054
1968
  if (this._instanced) {
@@ -2412,6 +2326,8 @@ BillboardCollection.prototype.update = function (frameState) {
2412
2326
  commandList.push(this.debugCommand);
2413
2327
  }
2414
2328
  }
2329
+
2330
+ this._allBillboardsReady = allBillboardsReady;
2415
2331
  };
2416
2332
 
2417
2333
  /**