@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
@@ -6,7 +6,7 @@ import Cartographic from "../Core/Cartographic.js";
6
6
  import Check from "../Core/Check.js";
7
7
  import Color from "../Core/Color.js";
8
8
  import createGuid from "../Core/createGuid.js";
9
- import defaultValue from "../Core/defaultValue.js";
9
+ import Frozen from "../Core/Frozen.js";
10
10
  import defined from "../Core/defined.js";
11
11
  import DeveloperError from "../Core/DeveloperError.js";
12
12
  import DistanceDisplayCondition from "../Core/DistanceDisplayCondition.js";
@@ -14,6 +14,7 @@ import Ellipsoid from "../Core/Ellipsoid.js";
14
14
  import Matrix4 from "../Core/Matrix4.js";
15
15
  import NearFarScalar from "../Core/NearFarScalar.js";
16
16
  import Resource from "../Core/Resource.js";
17
+ import BillboardTexture from "./BillboardTexture.js";
17
18
  import HeightReference, {
18
19
  isHeightReferenceRelative,
19
20
  } from "./HeightReference.js";
@@ -93,7 +94,7 @@ import SplitDirection from "./SplitDirection.js";
93
94
  * @demo {@link https://sandcastle.cesium.com/index.html?src=Billboards.html|Cesium Sandcastle Billboard Demo}
94
95
  */
95
96
  function Billboard(options, billboardCollection) {
96
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
97
+ options = options ?? Frozen.EMPTY_OBJECT;
97
98
 
98
99
  //>>includeStart('debug', pragmas.debug);
99
100
  if (
@@ -155,59 +156,39 @@ function Billboard(options, billboardCollection) {
155
156
  );
156
157
  }
157
158
 
158
- this._show = defaultValue(options.show, true);
159
- this._position = Cartesian3.clone(
160
- defaultValue(options.position, Cartesian3.ZERO),
161
- );
159
+ this._show = options.show ?? true;
160
+ this._position = Cartesian3.clone(options.position ?? Cartesian3.ZERO);
162
161
  this._actualPosition = Cartesian3.clone(this._position); // For columbus view and 2D
163
- this._pixelOffset = Cartesian2.clone(
164
- defaultValue(options.pixelOffset, Cartesian2.ZERO),
165
- );
162
+ this._pixelOffset = Cartesian2.clone(options.pixelOffset ?? Cartesian2.ZERO);
166
163
  this._translate = new Cartesian2(0.0, 0.0); // used by labels for glyph vertex translation
167
- this._eyeOffset = Cartesian3.clone(
168
- defaultValue(options.eyeOffset, Cartesian3.ZERO),
169
- );
170
- this._heightReference = defaultValue(
171
- options.heightReference,
172
- HeightReference.NONE,
173
- );
174
- this._verticalOrigin = defaultValue(
175
- options.verticalOrigin,
176
- VerticalOrigin.CENTER,
177
- );
178
- this._horizontalOrigin = defaultValue(
179
- options.horizontalOrigin,
180
- HorizontalOrigin.CENTER,
181
- );
182
- this._scale = defaultValue(options.scale, 1.0);
183
- this._color = Color.clone(defaultValue(options.color, Color.WHITE));
184
- this._rotation = defaultValue(options.rotation, 0.0);
185
- this._alignedAxis = Cartesian3.clone(
186
- defaultValue(options.alignedAxis, Cartesian3.ZERO),
187
- );
164
+ this._eyeOffset = Cartesian3.clone(options.eyeOffset ?? Cartesian3.ZERO);
165
+ this._heightReference = options.heightReference ?? HeightReference.NONE;
166
+ this._verticalOrigin = options.verticalOrigin ?? VerticalOrigin.CENTER;
167
+ this._horizontalOrigin = options.horizontalOrigin ?? HorizontalOrigin.CENTER;
168
+ this._scale = options.scale ?? 1.0;
169
+ this._color = Color.clone(options.color ?? Color.WHITE);
170
+ this._rotation = options.rotation ?? 0.0;
171
+ this._alignedAxis = Cartesian3.clone(options.alignedAxis ?? Cartesian3.ZERO);
188
172
  this._width = options.width;
189
173
  this._height = options.height;
190
174
  this._scaleByDistance = scaleByDistance;
191
175
  this._translucencyByDistance = translucencyByDistance;
192
176
  this._pixelOffsetScaleByDistance = pixelOffsetScaleByDistance;
193
- this._sizeInMeters = defaultValue(options.sizeInMeters, false);
177
+ this._sizeInMeters = options.sizeInMeters ?? false;
194
178
  this._distanceDisplayCondition = distanceDisplayCondition;
195
179
  this._disableDepthTestDistance = options.disableDepthTestDistance;
196
180
  this._id = options.id;
197
- this._collection = defaultValue(options.collection, billboardCollection);
181
+ this._collection = options.collection ?? billboardCollection; // Used only for pick ids
198
182
 
199
183
  this._pickId = undefined;
200
- this._pickPrimitive = defaultValue(options._pickPrimitive, this);
184
+ this._pickPrimitive = options._pickPrimitive ?? this;
185
+
201
186
  this._billboardCollection = billboardCollection;
202
187
  this._dirty = false;
203
- this._index = -1; //Used only by BillboardCollection
188
+ this._index = -1; // Used only by BillboardCollection
204
189
  this._batchIndex = undefined; // Used only by Vector3DTilePoints and BillboardCollection
205
190
 
206
- this._imageIndex = -1;
207
- this._imageIndexPromise = undefined;
208
- this._imageId = undefined;
209
- this._image = undefined;
210
- this._imageSubRegion = undefined;
191
+ this._imageTexture = new BillboardTexture(billboardCollection);
211
192
  this._imageWidth = undefined;
212
193
  this._imageHeight = undefined;
213
194
 
@@ -228,17 +209,11 @@ function Billboard(options, billboardCollection) {
228
209
  }
229
210
  }
230
211
 
231
- this._imageId = imageId;
232
- this._image = image;
212
+ this._imageTexture.loadImage(imageId, image);
233
213
  }
234
214
 
235
215
  if (defined(options.imageSubRegion)) {
236
- this._imageId = imageId;
237
- this._imageSubRegion = options.imageSubRegion;
238
- }
239
-
240
- if (defined(this._billboardCollection._textureAtlas)) {
241
- this._loadImage();
216
+ this._imageTexture.addImageSubRegion(imageId, options.imageSubRegion);
242
217
  }
243
218
 
244
219
  this._actualClampedPosition = undefined;
@@ -246,17 +221,12 @@ function Billboard(options, billboardCollection) {
246
221
  this._mode = SceneMode.SCENE3D;
247
222
 
248
223
  this._clusterShow = true;
249
- this._outlineColor = Color.clone(
250
- defaultValue(options.outlineColor, Color.BLACK),
251
- );
252
- this._outlineWidth = defaultValue(options.outlineWidth, 0.0);
224
+ this._outlineColor = Color.clone(options.outlineColor ?? Color.BLACK);
225
+ this._outlineWidth = options.outlineWidth ?? 0.0;
253
226
 
254
227
  this._updateClamping();
255
228
 
256
- this._splitDirection = defaultValue(
257
- options.splitDirection,
258
- SplitDirection.NONE,
259
- );
229
+ this._splitDirection = options.splitDirection ?? SplitDirection.NONE;
260
230
  }
261
231
 
262
232
  const SHOW_INDEX = (Billboard.SHOW_INDEX = 0);
@@ -775,18 +745,19 @@ Object.defineProperties(Billboard.prototype, {
775
745
  /**
776
746
  * Gets or sets a width for the billboard. If undefined, the image width will be used.
777
747
  * @memberof Billboard.prototype
778
- * @type {number}
748
+ * @type {number|undefined}
779
749
  */
780
750
  width: {
781
751
  get: function () {
782
- return defaultValue(this._width, this._imageWidth);
752
+ return this._width ?? this._imageTexture.width;
783
753
  },
784
754
  set: function (value) {
785
755
  //>>includeStart('debug', pragmas.debug);
786
756
  if (defined(value)) {
787
- Check.typeOf.number("value", value);
757
+ Check.typeOf.number("width", value);
788
758
  }
789
759
  //>>includeEnd('debug');
760
+
790
761
  if (this._width !== value) {
791
762
  this._width = value;
792
763
  makeDirty(this, IMAGE_INDEX_INDEX);
@@ -797,18 +768,19 @@ Object.defineProperties(Billboard.prototype, {
797
768
  /**
798
769
  * Gets or sets a height for the billboard. If undefined, the image height will be used.
799
770
  * @memberof Billboard.prototype
800
- * @type {number}
771
+ * @type {number|undefined}
801
772
  */
802
773
  height: {
803
774
  get: function () {
804
- return defaultValue(this._height, this._imageHeight);
775
+ return this._height ?? this._imageTexture.height;
805
776
  },
806
777
  set: function (value) {
807
778
  //>>includeStart('debug', pragmas.debug);
808
779
  if (defined(value)) {
809
- Check.typeOf.number("value", value);
780
+ Check.typeOf.number("height", value);
810
781
  }
811
782
  //>>includeEnd('debug');
783
+
812
784
  if (this._height !== value) {
813
785
  this._height = value;
814
786
  makeDirty(this, IMAGE_INDEX_INDEX);
@@ -964,42 +936,69 @@ Object.defineProperties(Billboard.prototype, {
964
936
  */
965
937
  image: {
966
938
  get: function () {
967
- return this._imageId;
939
+ return this._imageTexture.id;
968
940
  },
969
941
  set: function (value) {
970
942
  if (!defined(value)) {
971
- this._imageIndex = -1;
972
- this._imageSubRegion = undefined;
973
- this._imageId = undefined;
974
- this._image = undefined;
975
- this._imageIndexPromise = undefined;
976
- makeDirty(this, IMAGE_INDEX_INDEX);
977
- } else if (typeof value === "string") {
978
- this.setImage(value, value);
943
+ this._imageTexture.unload();
944
+ return;
945
+ }
946
+
947
+ let id;
948
+ if (typeof value === "string") {
949
+ id = value;
979
950
  } else if (value instanceof Resource) {
980
- this.setImage(value.url, value);
951
+ id = value._url;
981
952
  } else if (defined(value.src)) {
982
- this.setImage(value.src, value);
953
+ id = value.src;
983
954
  } else {
984
- this.setImage(createGuid(), value);
955
+ id = createGuid();
985
956
  }
957
+
958
+ this._imageTexture.loadImage(id, value);
986
959
  },
987
960
  },
988
961
 
989
962
  /**
990
963
  * When <code>true</code>, this billboard is ready to render, i.e., the image
991
964
  * has been downloaded and the WebGL resources are created.
992
- *
993
965
  * @memberof Billboard.prototype
994
- *
995
966
  * @type {boolean}
996
967
  * @readonly
997
- *
998
968
  * @default false
999
969
  */
1000
970
  ready: {
1001
971
  get: function () {
1002
- return this._imageIndex !== -1;
972
+ return this._imageTexture.ready;
973
+ },
974
+ },
975
+
976
+ /**
977
+ * If defined, this error was encountered during the loading process.
978
+ * @memberof Billboard.prototype
979
+ * @type {Error|undefined}
980
+ * @readonly
981
+ * @private
982
+ */
983
+ loadError: {
984
+ get: function () {
985
+ return this._imageTexture.loadError;
986
+ },
987
+ },
988
+
989
+ /**
990
+ * Used by <code>billboardCollection</code> to track which billboards to update based on image load status.
991
+ * @memberof Billboard.prototype
992
+ * @type {boolean}
993
+ * @private
994
+ * @default false
995
+ */
996
+ textureDirty: {
997
+ get: function () {
998
+ return this._imageTexture.dirty;
999
+ },
1000
+ set: function (value) {
1001
+ this._imageTexture.dirty = value;
1003
1002
  },
1004
1003
  },
1005
1004
 
@@ -1120,8 +1119,7 @@ Billboard.prototype._updateClamping = function () {
1120
1119
 
1121
1120
  const scratchCartographic = new Cartographic();
1122
1121
  Billboard._updateClamping = function (collection, owner) {
1123
- const scene = collection._scene;
1124
- if (!defined(scene)) {
1122
+ if (!defined(collection) || !defined(collection._scene)) {
1125
1123
  //>>includeStart('debug', pragmas.debug);
1126
1124
  if (owner._heightReference !== HeightReference.NONE) {
1127
1125
  throw new DeveloperError(
@@ -1131,11 +1129,10 @@ Billboard._updateClamping = function (collection, owner) {
1131
1129
  //>>includeEnd('debug');
1132
1130
  return;
1133
1131
  }
1134
-
1135
- const ellipsoid = defaultValue(scene.ellipsoid, Ellipsoid.default);
1132
+ const scene = collection._scene;
1133
+ const ellipsoid = scene.ellipsoid ?? Ellipsoid.default;
1136
1134
 
1137
1135
  const mode = scene.frameState.mode;
1138
-
1139
1136
  const modeChanged = mode !== owner._mode;
1140
1137
  owner._mode = mode;
1141
1138
 
@@ -1201,68 +1198,14 @@ Billboard._updateClamping = function (collection, owner) {
1201
1198
  updateFunction(scratchCartographic);
1202
1199
  };
1203
1200
 
1204
- Billboard.prototype._loadImage = function () {
1205
- const atlas = this._billboardCollection._textureAtlas;
1206
-
1207
- const imageId = this._imageId;
1208
- const image = this._image;
1209
- const imageSubRegion = this._imageSubRegion;
1210
- let imageIndexPromise;
1211
-
1212
- const that = this;
1213
- function completeImageLoad(index) {
1214
- if (
1215
- that._imageId !== imageId ||
1216
- that._image !== image ||
1217
- !BoundingRectangle.equals(that._imageSubRegion, imageSubRegion)
1218
- ) {
1219
- // another load occurred before this one finished, ignore the index
1220
- return;
1221
- }
1222
-
1223
- // fill in imageWidth and imageHeight
1224
- const textureCoordinates = atlas.textureCoordinates[index];
1225
- that._imageWidth = atlas.texture.width * textureCoordinates.width;
1226
- that._imageHeight = atlas.texture.height * textureCoordinates.height;
1227
-
1228
- that._imageIndex = index;
1229
- that._ready = true;
1230
- that._image = undefined;
1231
- that._imageIndexPromise = undefined;
1232
- makeDirty(that, IMAGE_INDEX_INDEX);
1233
-
1234
- const scene = that._billboardCollection._scene;
1235
- if (!defined(scene)) {
1236
- return;
1237
- }
1238
- // Request a new render in request render mode
1239
- scene.frameState.afterRender.push(() => true);
1240
- }
1241
-
1242
- if (defined(image)) {
1243
- imageIndexPromise = atlas.addImage(imageId, image);
1244
- }
1245
- if (defined(imageSubRegion)) {
1246
- imageIndexPromise = atlas.addSubRegion(imageId, imageSubRegion);
1247
- }
1248
-
1249
- this._imageIndexPromise = imageIndexPromise;
1250
-
1251
- if (!defined(imageIndexPromise)) {
1252
- return;
1253
- }
1254
-
1255
- // If the promise has already successfully resolved, we can return immediately without waiting a frame
1256
- const index = atlas.getImageIndex(imageId);
1257
- if (defined(index) && !defined(imageSubRegion)) {
1258
- completeImageLoad(index);
1259
- return;
1260
- }
1261
-
1262
- imageIndexPromise.then(completeImageLoad).catch(function (error) {
1263
- console.error(`Error loading image for billboard: ${error}`);
1264
- that._imageIndexPromise = undefined;
1265
- });
1201
+ /**
1202
+ * Get the texture coordinates for reading the loaded texture in shaders.
1203
+ * @param {BoundingRectangle} [result] The modified result parameter or a new BoundingRectangle instance if one was not provided.
1204
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
1205
+ * @private
1206
+ */
1207
+ Billboard.prototype.computeTextureCoordinates = function (result) {
1208
+ return this._imageTexture.computeTextureCoordinates(result);
1266
1209
  };
1267
1210
 
1268
1211
  /**
@@ -1301,26 +1244,24 @@ Billboard.prototype._loadImage = function () {
1301
1244
  */
1302
1245
  Billboard.prototype.setImage = function (id, image) {
1303
1246
  //>>includeStart('debug', pragmas.debug);
1304
- if (!defined(id)) {
1305
- throw new DeveloperError("id is required.");
1306
- }
1307
- if (!defined(image)) {
1308
- throw new DeveloperError("image is required.");
1309
- }
1247
+ Check.typeOf.string("id", id);
1248
+ Check.defined("image", image);
1310
1249
  //>>includeEnd('debug');
1311
1250
 
1312
- if (this._imageId === id) {
1313
- return;
1314
- }
1251
+ this._imageTexture.loadImage(id, image);
1252
+ };
1315
1253
 
1316
- this._imageIndex = -1;
1317
- this._imageSubRegion = undefined;
1318
- this._imageId = id;
1319
- this._image = image;
1254
+ /**
1255
+ * Copy the values of an existing billboard texture into this one. Useful for prevent downtime for images that have already been loaded.
1256
+ * @private
1257
+ * @param {BillboardTexture} billboardTexture
1258
+ */
1259
+ Billboard.prototype.setImageTexture = function (billboardTexture) {
1260
+ //>>includeStart('debug', pragmas.debug);
1261
+ Check.defined("billboardTexture", billboardTexture);
1262
+ //>>includeEnd('debug');
1320
1263
 
1321
- if (defined(this._billboardCollection._textureAtlas)) {
1322
- this._loadImage();
1323
- }
1264
+ BillboardTexture.clone(billboardTexture, this._imageTexture);
1324
1265
  };
1325
1266
 
1326
1267
  /**
@@ -1334,28 +1275,11 @@ Billboard.prototype.setImage = function (id, image) {
1334
1275
  */
1335
1276
  Billboard.prototype.setImageSubRegion = function (id, subRegion) {
1336
1277
  //>>includeStart('debug', pragmas.debug);
1337
- if (!defined(id)) {
1338
- throw new DeveloperError("id is required.");
1339
- }
1340
- if (!defined(subRegion)) {
1341
- throw new DeveloperError("subRegion is required.");
1342
- }
1278
+ Check.typeOf.string("id", id);
1279
+ Check.defined("subRegion", subRegion);
1343
1280
  //>>includeEnd('debug');
1344
1281
 
1345
- if (
1346
- this._imageId === id &&
1347
- BoundingRectangle.equals(this._imageSubRegion, subRegion)
1348
- ) {
1349
- return;
1350
- }
1351
-
1352
- this._imageIndex = -1;
1353
- this._imageId = id;
1354
- this._imageSubRegion = BoundingRectangle.clone(subRegion);
1355
-
1356
- if (defined(this._billboardCollection._textureAtlas)) {
1357
- this._loadImage();
1358
- }
1282
+ this._imageTexture.addImageSubRegion(id, subRegion);
1359
1283
  };
1360
1284
 
1361
1285
  Billboard.prototype._setTranslate = function (value) {
@@ -1571,13 +1495,12 @@ Billboard.prototype.equals = function (other) {
1571
1495
  (defined(other) &&
1572
1496
  this._id === other._id &&
1573
1497
  Cartesian3.equals(this._position, other._position) &&
1574
- this._imageId === other._imageId &&
1498
+ this.image === other.image &&
1575
1499
  this._show === other._show &&
1576
1500
  this._scale === other._scale &&
1577
1501
  this._verticalOrigin === other._verticalOrigin &&
1578
1502
  this._horizontalOrigin === other._horizontalOrigin &&
1579
1503
  this._heightReference === other._heightReference &&
1580
- BoundingRectangle.equals(this._imageSubRegion, other._imageSubRegion) &&
1581
1504
  Color.equals(this._color, other._color) &&
1582
1505
  Cartesian2.equals(this._pixelOffset, other._pixelOffset) &&
1583
1506
  Cartesian2.equals(this._translate, other._translate) &&