@cesium/engine 21.0.1-ion.0 → 22.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 (244) hide show
  1. package/Build/Workers/{chunk-LSNF6CIP.js → chunk-2D3GLFZD.js} +12 -12
  2. package/Build/Workers/chunk-34YXP222.js +352 -0
  3. package/Build/Workers/{chunk-OLH67Z2S.js → chunk-3GL53OCU.js} +17 -18
  4. package/Build/Workers/{chunk-WIPOMPA5.js → chunk-5B7VZQZY.js} +6 -6
  5. package/Build/Workers/{chunk-NWJRIJQG.js → chunk-5T5SY63I.js} +2 -2
  6. package/Build/Workers/{chunk-DTYIUWZU.js → chunk-5ZF53EY6.js} +4 -4
  7. package/Build/Workers/{chunk-UTTKH2UG.js → chunk-6HBKE43B.js} +7 -7
  8. package/Build/Workers/{chunk-ZTGZMKAB.js → chunk-726NINF5.js} +16 -16
  9. package/Build/Workers/{chunk-L73TRTIG.js → chunk-75HAJIDT.js} +1 -1
  10. package/Build/Workers/{chunk-G5RX7BPJ.js → chunk-7KAXDKRU.js} +10 -10
  11. package/Build/Workers/chunk-7XEJGXX2.js +2759 -0
  12. package/Build/Workers/{chunk-ZOVMWDPW.js → chunk-A4DPJIWS.js} +18 -10
  13. package/Build/Workers/{chunk-UTL4WVC3.js → chunk-A6JAFSZT.js} +5 -5
  14. package/Build/Workers/{chunk-E6T4LSM6.js → chunk-AARZSH4V.js} +5 -5
  15. package/Build/Workers/{chunk-EEDSGIH7.js → chunk-AOM3FHBN.js} +6 -6
  16. package/Build/Workers/{chunk-WJV24LAS.js → chunk-BJSNGGBM.js} +4 -4
  17. package/Build/Workers/{chunk-VIDWZGD6.js → chunk-ECHAJNQJ.js} +12 -12
  18. package/Build/Workers/{chunk-MIFUV36K.js → chunk-EJO3NKMS.js} +1 -1
  19. package/Build/Workers/{chunk-ADADBRLI.js → chunk-EZ7NJXQN.js} +4 -4
  20. package/Build/Workers/{chunk-MJWRSKJV.js → chunk-FA3SCJDX.js} +2 -2
  21. package/Build/Workers/{chunk-XFS2ORSO.js → chunk-GYRDA3XK.js} +14 -14
  22. package/Build/Workers/{chunk-3XTJC4CV.js → chunk-H7B7FU2U.js} +7 -7
  23. package/Build/Workers/{chunk-HDBIC7IL.js → chunk-IGX772ZQ.js} +1 -1
  24. package/Build/Workers/{chunk-EHMAKCWQ.js → chunk-JDJAPBZP.js} +1 -1
  25. package/Build/Workers/{chunk-LK7H6V2E.js → chunk-JZFU2LEM.js} +4 -4
  26. package/Build/Workers/{chunk-3K4DRV7Y.js → chunk-KGLDJRSO.js} +9 -9
  27. package/Build/Workers/{chunk-LEFV6H2V.js → chunk-KUB64XW6.js} +11 -11
  28. package/Build/Workers/{chunk-26ZRRKTU.js → chunk-L7U26FFD.js} +16 -16
  29. package/Build/Workers/{chunk-T7WXNKIA.js → chunk-LEFQBK6H.js} +11 -11
  30. package/Build/Workers/{chunk-75UG66GR.js → chunk-LWJXCI3F.js} +5 -5
  31. package/Build/Workers/{chunk-ESPNIYL5.js → chunk-M7HRE4QR.js} +8 -8
  32. package/Build/Workers/{chunk-SGEAS4NZ.js → chunk-MXHRZHDF.js} +6 -6
  33. package/Build/Workers/{chunk-YFZMB6FZ.js → chunk-N52ZRKUE.js} +6 -6
  34. package/Build/Workers/{chunk-AQ4A5CMC.js → chunk-NE5JTQJP.js} +7 -7
  35. package/Build/Workers/{chunk-G74UMFQ4.js → chunk-NGKF5NTR.js} +5 -5
  36. package/Build/Workers/{chunk-TXK2FF6N.js → chunk-NHZNMTIR.js} +5 -5
  37. package/Build/Workers/{chunk-2PX2ULSM.js → chunk-OE22564R.js} +3 -3
  38. package/Build/Workers/{chunk-AGT6W3JS.js → chunk-OUBBMEWX.js} +6 -6
  39. package/Build/Workers/{chunk-JESBYOH5.js → chunk-P2H75UV5.js} +67 -33
  40. package/Build/Workers/{chunk-B56XVJRS.js → chunk-QCMRUVVF.js} +12 -12
  41. package/Build/Workers/{chunk-SDFGZML6.js → chunk-QSMIHPUM.js} +2 -2
  42. package/Build/Workers/{chunk-SF2XXYOB.js → chunk-RCCYW6E7.js} +12 -12
  43. package/Build/Workers/{chunk-EZJXK2UP.js → chunk-RQRODXVN.js} +4 -4
  44. package/Build/Workers/{chunk-WMG6UOCJ.js → chunk-SZN34LQ5.js} +10 -10
  45. package/Build/Workers/{chunk-XYBFMHXA.js → chunk-U4XMLGSR.js} +7 -7
  46. package/Build/Workers/{chunk-KGL66RWW.js → chunk-U7CX3HHE.js} +8 -8
  47. package/Build/Workers/{chunk-MFPT34BC.js → chunk-VCVA7BMD.js} +4 -4
  48. package/Build/Workers/{chunk-H3G7OYZY.js → chunk-VVZ667H6.js} +2 -2
  49. package/Build/Workers/{chunk-PQW63B2T.js → chunk-W4PIP5PG.js} +2 -2
  50. package/Build/Workers/{chunk-XPTKQIVN.js → chunk-XPVZWY4A.js} +8 -8
  51. package/Build/Workers/{chunk-OWCFUM4Z.js → chunk-XQ347YWU.js} +13 -13
  52. package/Build/Workers/{chunk-MBIUW42A.js → chunk-XZO6F23E.js} +1 -1
  53. package/Build/Workers/{chunk-6KX3IUUT.js → chunk-YLILBDWK.js} +2 -2
  54. package/Build/Workers/{chunk-RFZAUDYZ.js → chunk-YLXWC7OW.js} +4 -4
  55. package/Build/Workers/combineGeometry.js +21 -21
  56. package/Build/Workers/createBoxGeometry.js +15 -15
  57. package/Build/Workers/createBoxOutlineGeometry.js +13 -13
  58. package/Build/Workers/createCircleGeometry.js +23 -23
  59. package/Build/Workers/createCircleOutlineGeometry.js +16 -16
  60. package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
  61. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
  62. package/Build/Workers/createCorridorGeometry.js +26 -26
  63. package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
  64. package/Build/Workers/createCylinderGeometry.js +17 -17
  65. package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
  66. package/Build/Workers/createEllipseGeometry.js +23 -23
  67. package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
  68. package/Build/Workers/createEllipsoidGeometry.js +16 -16
  69. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
  70. package/Build/Workers/createFrustumGeometry.js +15 -15
  71. package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
  72. package/Build/Workers/createGeometry.js +24 -22
  73. package/Build/Workers/createGroundPolylineGeometry.js +19 -19
  74. package/Build/Workers/createPlaneGeometry.js +13 -13
  75. package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
  76. package/Build/Workers/createPolygonGeometry.js +29 -29
  77. package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
  78. package/Build/Workers/createPolylineGeometry.js +22 -22
  79. package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
  80. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
  81. package/Build/Workers/createRectangleGeometry.js +24 -24
  82. package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
  83. package/Build/Workers/createSimplePolylineGeometry.js +20 -20
  84. package/Build/Workers/createSphereGeometry.js +16 -16
  85. package/Build/Workers/createSphereOutlineGeometry.js +15 -15
  86. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  87. package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
  88. package/Build/Workers/createVectorTileGeometries.js +21 -21
  89. package/Build/Workers/createVectorTilePoints.js +11 -11
  90. package/Build/Workers/createVectorTilePolygons.js +19 -19
  91. package/Build/Workers/createVectorTilePolylines.js +12 -12
  92. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +88 -0
  93. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
  94. package/Build/Workers/createVerticesFromHeightmap.js +21 -21
  95. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -277
  96. package/Build/Workers/createWallGeometry.js +21 -21
  97. package/Build/Workers/createWallOutlineGeometry.js +20 -20
  98. package/Build/Workers/decodeDraco.js +10 -10
  99. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  100. package/Build/Workers/decodeI3S.js +9 -9
  101. package/Build/Workers/gaussianSplatSorter.js +4 -4
  102. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  103. package/Build/Workers/transcodeKTX2.js +6 -6
  104. package/Build/Workers/transferTypedArrayTest.js +1 -1
  105. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
  106. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +92 -0
  107. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +2 -2
  108. package/Source/Core/Cesium3DTilesTerrainData.js +930 -0
  109. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1866 -0
  110. package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
  111. package/Source/Core/CesiumTerrainProvider.js +2 -2
  112. package/Source/Core/Color.js +23 -6
  113. package/Source/Core/EllipsoidalOccluder.js +2 -2
  114. package/Source/Core/FeatureDetection.js +0 -2
  115. package/Source/Core/GoogleEarthEnterpriseMetadata.js +1 -1
  116. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +1 -1
  117. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
  118. package/Source/Core/HeightmapTerrainData.js +10 -22
  119. package/Source/Core/HilbertOrder.js +0 -6
  120. package/Source/Core/ITwinPlatform.js +6 -6
  121. package/Source/Core/Ion.js +1 -1
  122. package/Source/Core/IonResource.js +35 -27
  123. package/Source/Core/PixelFormat.js +2 -2
  124. package/Source/Core/QuantizedMeshTerrainData.js +23 -57
  125. package/Source/Core/Resource.js +15 -11
  126. package/Source/Core/S2Cell.js +6 -18
  127. package/Source/Core/TaskProcessor.js +1 -1
  128. package/Source/Core/TerrainData.js +2 -1
  129. package/Source/Core/TerrainEncoding.js +215 -38
  130. package/Source/Core/TerrainMesh.js +8 -8
  131. package/Source/Core/TerrainProvider.js +151 -0
  132. package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
  133. package/Source/Core/binarySearch.js +1 -1
  134. package/Source/Core/createWorldBathymetryAsync.js +2 -2
  135. package/Source/Core/createWorldTerrainAsync.js +3 -3
  136. package/Source/Core/loadImageFromTypedArray.js +9 -3
  137. package/Source/Core/mergeSort.js +1 -1
  138. package/Source/DataSources/PropertyArray.js +2 -2
  139. package/Source/Renderer/AutomaticUniforms.js +61 -0
  140. package/Source/Renderer/Context.js +13 -7
  141. package/Source/Renderer/Pass.js +10 -9
  142. package/Source/Renderer/UniformState.js +12 -0
  143. package/Source/Renderer/VertexArray.js +1 -1
  144. package/Source/Scene/ArcGisMapServerImageryProvider.js +1 -1
  145. package/Source/Scene/ArcGisMapService.js +1 -1
  146. package/Source/Scene/Azure2DImageryProvider.js +7 -5
  147. package/Source/Scene/BatchTable.js +2 -2
  148. package/Source/Scene/BillboardCollection.js +25 -21
  149. package/Source/Scene/BingMapsImageryProvider.js +1 -1
  150. package/Source/Scene/BoundingVolumeSemantics.js +54 -62
  151. package/Source/Scene/Cesium3DTile.js +3 -3
  152. package/Source/Scene/Cesium3DTilesVoxelProvider.js +1 -1
  153. package/Source/Scene/Cesium3DTileset.js +1 -1
  154. package/Source/Scene/EdgeFramebuffer.js +245 -0
  155. package/Source/Scene/FrameState.js +12 -0
  156. package/Source/Scene/GaussianSplat3DTileContent.js +12 -16
  157. package/Source/Scene/GaussianSplatPrimitive.js +12 -8
  158. package/Source/Scene/GaussianSplatSorter.js +2 -2
  159. package/Source/Scene/Globe.js +1 -1
  160. package/Source/Scene/GlobeSurfaceTile.js +10 -4
  161. package/Source/Scene/GltfBufferViewLoader.js +18 -0
  162. package/Source/Scene/GltfLoader.js +46 -8
  163. package/Source/Scene/Google2DImageryProvider.js +39 -27
  164. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
  165. package/Source/Scene/I3SDataProvider.js +1 -1
  166. package/Source/Scene/I3SDecoder.js +3 -3
  167. package/Source/Scene/ITwinData.js +4 -4
  168. package/Source/Scene/ImageryLayer.js +1 -1
  169. package/Source/Scene/Implicit3DTileContent.js +18 -7
  170. package/Source/Scene/ImplicitSubtree.js +3 -3
  171. package/Source/Scene/ImplicitTileset.js +2 -2
  172. package/Source/Scene/IonImageryProvider.js +15 -84
  173. package/Source/Scene/IonImageryProviderFactory.js +194 -0
  174. package/Source/Scene/LabelCollection.js +54 -36
  175. package/Source/Scene/MetadataComponentType.js +5 -5
  176. package/Source/Scene/MetadataTableProperty.js +3 -9
  177. package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
  178. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
  179. package/Source/Scene/Model/MetadataPipelineStage.js +7 -7
  180. package/Source/Scene/Model/ModelDrawCommand.js +69 -0
  181. package/Source/Scene/Model/ModelImagery.js +4 -0
  182. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  183. package/Source/Scene/Model/ModelRuntimePrimitive.js +13 -2
  184. package/Source/Scene/Model/ModelSceneGraph.js +15 -3
  185. package/Source/Scene/Model/ModelUtility.js +0 -1
  186. package/Source/Scene/Model/NodeRenderResources.js +1 -1
  187. package/Source/Scene/Model/PrimitiveRenderResources.js +1 -1
  188. package/Source/Scene/OIT.js +11 -1
  189. package/Source/Scene/PickFramebuffer.js +13 -17
  190. package/Source/Scene/Picking.js +104 -80
  191. package/Source/Scene/QuadtreePrimitive.js +34 -26
  192. package/Source/Scene/QuadtreeTile.js +66 -46
  193. package/Source/Scene/ResourceLoaderState.js +1 -1
  194. package/Source/Scene/Scene.js +124 -12
  195. package/Source/Scene/ScreenSpaceCameraController.js +1 -1
  196. package/Source/Scene/SensorVolumePortionToDisplay.js +6 -6
  197. package/Source/Scene/SingleTileImageryProvider.js +3 -3
  198. package/Source/Scene/Terrain.js +5 -5
  199. package/Source/Scene/TileMapServiceImageryProvider.js +2 -2
  200. package/Source/Scene/UrlTemplateImageryProvider.js +1 -1
  201. package/Source/Scene/View.js +3 -0
  202. package/Source/Scene/VoxelPrimitive.js +196 -189
  203. package/Source/Scene/VoxelShape.js +2 -0
  204. package/Source/Scene/createWorldImageryAsync.js +1 -1
  205. package/Source/Shaders/BillboardCollectionFS.glsl +102 -62
  206. package/Source/Shaders/BillboardCollectionFS.js +102 -63
  207. package/Source/Shaders/BillboardCollectionVS.glsl +44 -37
  208. package/Source/Shaders/BillboardCollectionVS.js +45 -38
  209. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  210. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  211. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  212. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  213. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  214. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  215. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
  216. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  217. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  218. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  219. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  220. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  221. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  222. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  223. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  224. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  225. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  226. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  227. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  228. package/Source/Shaders/GlobeVS.glsl +1 -1
  229. package/Source/Shaders/GlobeVS.js +1 -1
  230. package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
  231. package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
  232. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
  233. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
  234. package/Source/Shaders/Model/ModelFS.glsl +5 -0
  235. package/Source/Shaders/Model/ModelFS.js +5 -0
  236. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +0 -1
  237. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
  238. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +7 -15
  239. package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
  240. package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
  241. package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
  242. package/index.d.ts +281 -27
  243. package/index.js +176 -166
  244. package/package.json +2 -1
@@ -1,72 +1,11 @@
1
1
  import Check from "../Core/Check.js";
2
+ import clone from "../Core/clone.js";
2
3
  import Frozen from "../Core/Frozen.js";
3
4
  import defined from "../Core/defined.js";
4
5
  import Event from "../Core/Event.js";
5
6
  import IonResource from "../Core/IonResource.js";
6
7
  import RuntimeError from "../Core/RuntimeError.js";
7
- import ArcGisMapServerImageryProvider from "./ArcGisMapServerImageryProvider.js";
8
- import BingMapsImageryProvider from "./BingMapsImageryProvider.js";
9
- import TileMapServiceImageryProvider from "./TileMapServiceImageryProvider.js";
10
- import GoogleEarthEnterpriseMapsProvider from "./GoogleEarthEnterpriseMapsProvider.js";
11
- import MapboxImageryProvider from "./MapboxImageryProvider.js";
12
- import SingleTileImageryProvider from "./SingleTileImageryProvider.js";
13
- import UrlTemplateImageryProvider from "./UrlTemplateImageryProvider.js";
14
- import WebMapServiceImageryProvider from "./WebMapServiceImageryProvider.js";
15
- import WebMapTileServiceImageryProvider from "./WebMapTileServiceImageryProvider.js";
16
- import Google2DImageryProvider from "./Google2DImageryProvider.js";
17
- import Azure2DImageryProvider from "./Azure2DImageryProvider.js";
18
-
19
- // These values are the list of supported external imagery
20
- // assets in the Cesium ion beta. They are subject to change.
21
- const ImageryProviderAsyncMapping = {
22
- ARCGIS_MAPSERVER: ArcGisMapServerImageryProvider.fromUrl,
23
- BING: async (url, options) => {
24
- return BingMapsImageryProvider.fromUrl(url, options);
25
- },
26
- GOOGLE_EARTH: async (url, options) => {
27
- const channel = options.channel;
28
- delete options.channel;
29
- return GoogleEarthEnterpriseMapsProvider.fromUrl(url, channel, options);
30
- },
31
- MAPBOX: (url, options) => {
32
- return new MapboxImageryProvider({
33
- url: url,
34
- ...options,
35
- });
36
- },
37
- SINGLE_TILE: SingleTileImageryProvider.fromUrl,
38
- TMS: TileMapServiceImageryProvider.fromUrl,
39
- URL_TEMPLATE: (url, options) => {
40
- return new UrlTemplateImageryProvider({
41
- url: url,
42
- ...options,
43
- });
44
- },
45
- WMS: (url, options) => {
46
- return new WebMapServiceImageryProvider({
47
- url: url,
48
- ...options,
49
- });
50
- },
51
- WMTS: (url, options) => {
52
- return new WebMapTileServiceImageryProvider({
53
- url: url,
54
- ...options,
55
- });
56
- },
57
- GOOGLE_2D_MAPS: (ionResource, options) => {
58
- return new Google2DImageryProvider({
59
- ...options,
60
- url: ionResource,
61
- });
62
- },
63
- AZURE_MAPS: (ionResource, options) => {
64
- return new Azure2DImageryProvider({
65
- ...options,
66
- url: ionResource,
67
- });
68
- },
69
- };
8
+ import IonImageryProviderFactory from "./IonImageryProviderFactory.js";
70
9
 
71
10
  /**
72
11
  * @typedef {object} IonImageryProvider.ConstructorOptions
@@ -264,7 +203,7 @@ Object.defineProperties(IonImageryProvider.prototype, {
264
203
  /**
265
204
  * Creates a provider for tiled imagery using the Cesium ion REST API.
266
205
  *
267
- * @param {Number} assetId An ion imagery asset ID.
206
+ * @param {number} assetId An ion imagery asset ID.
268
207
  * @param {IonImageryProvider.ConstructorOptions} [options] Object describing initialization options.
269
208
  * @returns {Promise<IonImageryProvider>} A promise which resolves to the created IonImageryProvider.
270
209
  *
@@ -297,41 +236,33 @@ IonImageryProvider.fromAssetId = async function (assetId, options) {
297
236
  IonImageryProvider._endpointCache[cacheKey] = promise;
298
237
  }
299
238
 
300
- const endpoint = await promise;
239
+ let endpoint = await promise;
301
240
  if (endpoint.type !== "IMAGERY") {
302
241
  throw new RuntimeError(
303
242
  `Cesium ion asset ${assetId} is not an imagery asset.`,
304
243
  );
305
244
  }
306
245
 
307
- let imageryProvider;
308
246
  const externalType = endpoint.externalType;
309
- if (!defined(externalType)) {
310
- imageryProvider = await TileMapServiceImageryProvider.fromUrl(
311
- new IonResource(endpoint, endpointResource),
312
- );
313
- } else {
314
- const factory = ImageryProviderAsyncMapping[externalType];
247
+ let factory = IonImageryProviderFactory.defaultFactoryCallback;
248
+
249
+ // Make a copy before editing since this object reference is cached;
250
+ endpoint = clone(endpoint, true);
251
+ endpoint.options = endpoint.options ?? {};
252
+ const url = endpoint.options?.url;
253
+ delete options.url;
254
+
255
+ if (defined(externalType)) {
256
+ factory = IonImageryProviderFactory[externalType];
315
257
 
316
258
  if (!defined(factory)) {
317
259
  throw new RuntimeError(
318
260
  `Unrecognized Cesium ion imagery type: ${externalType}`,
319
261
  );
320
262
  }
321
- // Make a copy before editing since this object reference is cached;
322
- const options = { ...endpoint.options };
323
- const url = options.url;
324
- delete options.url;
325
- if (["GOOGLE_2D_MAPS", "AZURE_MAPS"].includes(endpoint.externalType)) {
326
- imageryProvider = await factory(
327
- new IonResource(endpoint, endpointResource),
328
- options,
329
- );
330
- } else {
331
- imageryProvider = await factory(url, options);
332
- }
333
263
  }
334
264
 
265
+ const imageryProvider = await factory(url, endpoint, endpointResource);
335
266
  const provider = new IonImageryProvider(options);
336
267
 
337
268
  imageryProvider.errorEvent.addEventListener(function (tileProviderError) {
@@ -0,0 +1,194 @@
1
+ import IonResource from "../Core/IonResource.js";
2
+ import ArcGisMapServerImageryProvider from "./ArcGisMapServerImageryProvider.js";
3
+ import BingMapsImageryProvider from "./BingMapsImageryProvider.js";
4
+ import TileMapServiceImageryProvider from "./TileMapServiceImageryProvider.js";
5
+ import GoogleEarthEnterpriseMapsProvider from "./GoogleEarthEnterpriseMapsProvider.js";
6
+ import MapboxImageryProvider from "./MapboxImageryProvider.js";
7
+ import SingleTileImageryProvider from "./SingleTileImageryProvider.js";
8
+ import UrlTemplateImageryProvider from "./UrlTemplateImageryProvider.js";
9
+ import WebMapServiceImageryProvider from "./WebMapServiceImageryProvider.js";
10
+ import WebMapTileServiceImageryProvider from "./WebMapTileServiceImageryProvider.js";
11
+ import Google2DImageryProvider from "./Google2DImageryProvider.js";
12
+ import Azure2DImageryProvider from "./Azure2DImageryProvider.js";
13
+
14
+ /**
15
+ * An asynchronous callback function that creates an ImageryProvider from
16
+ * a Cesium ion asset endpoint.
17
+ * @template {ImageryProvider} T
18
+ * @callback IonImageryProviderFactoryCallback
19
+ * @param {string} url The URL of the imagery service.
20
+ * @param {object} endpoint The result of the Cesium ion asset endpoint service.
21
+ * @param {Resource} endpointResource The original resource used to retrieve the endpoint.
22
+ * @returns {Promise<T>} A promise that resolves to an instance of an ImageryProvider.
23
+ * @private
24
+ */
25
+
26
+ /**
27
+ * @private
28
+ * @type {IonImageryProviderFactoryCallback<TileMapServiceImageryProvider>}
29
+ */
30
+ export const defaultFactoryCallback = async (url, endpoint, endpointResource) =>
31
+ TileMapServiceImageryProvider.fromUrl(
32
+ new IonResource(endpoint, endpointResource),
33
+ );
34
+
35
+ /**
36
+ * @private
37
+ * @type {IonImageryProviderFactoryCallback<ArcGisMapServerImageryProvider>}
38
+ */
39
+ export const ARCGIS_MAPSERVER = async (url, { options }) =>
40
+ ArcGisMapServerImageryProvider.fromUrl(url, options);
41
+
42
+ /**
43
+ * @private
44
+ * @type {IonImageryProviderFactoryCallback<BingMapsImageryProvider>}
45
+ */
46
+ export const BING = async (url, { options }) => {
47
+ return BingMapsImageryProvider.fromUrl(url, options);
48
+ };
49
+
50
+ /**
51
+ * @private
52
+ * @type {IonImageryProviderFactoryCallback<GoogleEarthEnterpriseMapsProvider>}
53
+ */
54
+ export const GOOGLE_EARTH = async (url, { options }) => {
55
+ const channel = options.channel;
56
+ delete options.channel;
57
+ return GoogleEarthEnterpriseMapsProvider.fromUrl(url, channel, options);
58
+ };
59
+
60
+ /**
61
+ * @private
62
+ * @type {IonImageryProviderFactoryCallback<MapboxImageryProvider>}
63
+ */
64
+ export const MAPBOX = async (url, { options }) => {
65
+ return new MapboxImageryProvider({
66
+ url: url,
67
+ ...options,
68
+ });
69
+ };
70
+
71
+ /**
72
+ * @private
73
+ * @type {IonImageryProviderFactoryCallback<SingleTileImageryProvider>}
74
+ */
75
+ export const SINGLE_TILE = async (url, { options }) =>
76
+ SingleTileImageryProvider.fromUrl(url, options);
77
+
78
+ /**
79
+ * @private
80
+ * @type {IonImageryProviderFactoryCallback<TileMapServiceImageryProvider>}
81
+ */
82
+ export const TMS = async (url, { options }) =>
83
+ TileMapServiceImageryProvider.fromUrl(url, options);
84
+
85
+ /**
86
+ * @private
87
+ * @type {IonImageryProviderFactoryCallback<UrlTemplateImageryProvider>}
88
+ */
89
+ export const URL_TEMPLATE = async (url, { options }) => {
90
+ return new UrlTemplateImageryProvider({
91
+ url: url,
92
+ ...options,
93
+ });
94
+ };
95
+
96
+ /**
97
+ * @private
98
+ * @type {IonImageryProviderFactoryCallback<WebMapServiceImageryProvider>}
99
+ */
100
+ export const WMS = async (url, { options }) => {
101
+ return new WebMapServiceImageryProvider({
102
+ url: url,
103
+ ...options,
104
+ });
105
+ };
106
+
107
+ /**
108
+ * @private
109
+ * @type {IonImageryProviderFactoryCallback<WebMapTileServiceImageryProvider>}
110
+ */
111
+ export const WMTS = async (url, { options }) => {
112
+ return new WebMapTileServiceImageryProvider({
113
+ url: url,
114
+ ...options,
115
+ });
116
+ };
117
+
118
+ /**
119
+ * @private
120
+ * @type {IonImageryProviderFactoryCallback<Google2DImageryProvider>}
121
+ */
122
+ export const GOOGLE_2D_MAPS = async (url, endpoint, endpointResource) => {
123
+ delete endpoint.externalType;
124
+ endpoint.url = url;
125
+
126
+ const ionResource = new IonResource(endpoint, endpointResource);
127
+
128
+ const callback = (ionRoot, endpoint) => {
129
+ delete endpoint.externalType;
130
+ endpoint.url = url;
131
+
132
+ const { options } = endpoint;
133
+ ionRoot.setQueryParameters({
134
+ session: options.session,
135
+ key: options.key,
136
+ });
137
+ };
138
+
139
+ ionResource.refreshCallback = callback;
140
+ return new Google2DImageryProvider({
141
+ ...endpoint.options,
142
+ url: ionResource,
143
+ });
144
+ };
145
+
146
+ /**
147
+ * @private
148
+ * @type {IonImageryProviderFactoryCallback<Azure2DImageryProvider>}
149
+ */
150
+ export const AZURE_MAPS = async (url, endpoint, endpointResource) => {
151
+ delete endpoint.externalType;
152
+ endpoint.url = url;
153
+
154
+ const ionResource = new IonResource(endpoint, endpointResource);
155
+
156
+ const callback = (ionRoot, endpoint) => {
157
+ delete endpoint.externalType;
158
+ endpoint.url = url;
159
+
160
+ const { options } = endpoint;
161
+ ionRoot.setQueryParameters({
162
+ "subscription-key": options["subscription-key"],
163
+ });
164
+ };
165
+
166
+ ionResource.refreshCallback = callback;
167
+ return new Azure2DImageryProvider({
168
+ ...endpoint.options,
169
+ url: ionResource,
170
+ });
171
+ };
172
+
173
+ /**
174
+ * Mapping of supported external imagery asset types returned from Cesium ion to their
175
+ * corresponding ImageryProvider constructors.
176
+ * @private
177
+ * @type {object<string, IonImageryProviderFactoryCallback>}
178
+ */
179
+ const IonImageryProviderFactory = {
180
+ ARCGIS_MAPSERVER,
181
+ BING,
182
+ GOOGLE_EARTH,
183
+ MAPBOX,
184
+ SINGLE_TILE,
185
+ TMS,
186
+ URL_TEMPLATE,
187
+ WMS,
188
+ WMTS,
189
+ GOOGLE_2D_MAPS,
190
+ AZURE_MAPS,
191
+ defaultFactoryCallback,
192
+ };
193
+
194
+ export default Object.freeze(IonImageryProviderFactory);
@@ -150,47 +150,25 @@ function rebindAllGlyphs(labelCollection, label) {
150
150
  // presize glyphs to match the new text length
151
151
  glyphs.length = textLength;
152
152
 
153
- const showBackground =
154
- label.show && label._showBackground && text.split("\n").join("").length > 0;
155
153
  let backgroundBillboard = label._backgroundBillboard;
156
154
  const backgroundBillboardCollection =
157
155
  labelCollection._backgroundBillboardCollection;
158
- if (!showBackground) {
159
- if (defined(backgroundBillboard)) {
160
- backgroundBillboardCollection.remove(backgroundBillboard);
161
- label._backgroundBillboard = backgroundBillboard = undefined;
162
- }
163
- } else {
164
- if (!defined(backgroundBillboard)) {
165
- backgroundBillboard = getWhitePixelBillboard(
166
- backgroundBillboardCollection,
167
- labelCollection,
168
- );
169
- label._backgroundBillboard = backgroundBillboard;
170
- }
171
156
 
172
- backgroundBillboard.color = label._backgroundColor;
173
- backgroundBillboard.show = label._show;
174
- backgroundBillboard.position = label._position;
175
- backgroundBillboard.eyeOffset = label._eyeOffset;
176
- backgroundBillboard.pixelOffset = label._pixelOffset;
177
- backgroundBillboard.horizontalOrigin = HorizontalOrigin.LEFT;
178
- backgroundBillboard.verticalOrigin = label._verticalOrigin;
179
- backgroundBillboard.heightReference = label._heightReference;
180
- backgroundBillboard.scale = label.totalScale;
181
- backgroundBillboard.pickPrimitive = label;
182
- backgroundBillboard.id = label._id;
183
- backgroundBillboard.translucencyByDistance = label._translucencyByDistance;
184
- backgroundBillboard.pixelOffsetScaleByDistance =
185
- label._pixelOffsetScaleByDistance;
186
- backgroundBillboard.scaleByDistance = label._scaleByDistance;
187
- backgroundBillboard.distanceDisplayCondition =
188
- label._distanceDisplayCondition;
189
- backgroundBillboard.disableDepthTestDistance =
190
- label._disableDepthTestDistance;
191
- backgroundBillboard.clusterShow = label.clusterShow;
157
+ // Create backgroundBillboard if needed
158
+ if (label._showBackground && !defined(backgroundBillboard)) {
159
+ backgroundBillboard = getWhitePixelBillboard(
160
+ backgroundBillboardCollection,
161
+ labelCollection,
162
+ );
163
+ label._backgroundBillboard = backgroundBillboard;
192
164
  }
193
165
 
166
+ updateBackgroundBillboard(
167
+ backgroundBillboardCollection,
168
+ label,
169
+ backgroundBillboard,
170
+ );
171
+
194
172
  const glyphBillboardCollection = labelCollection._glyphBillboardCollection;
195
173
  const glyphTextureCache = glyphBillboardCollection.billboardTextureCache;
196
174
  const textDimensionsCache = labelCollection._textDimensionsCache;
@@ -335,6 +313,47 @@ function rebindAllGlyphs(labelCollection, label) {
335
313
  label._repositionAllGlyphs = true;
336
314
  }
337
315
 
316
+ function updateBackgroundBillboard(
317
+ backgroundBillboardCollection,
318
+ label,
319
+ backgroundBillboard,
320
+ ) {
321
+ if (!defined(backgroundBillboard)) {
322
+ return;
323
+ }
324
+ const showBackground =
325
+ label.show &&
326
+ label._showBackground &&
327
+ label._renderedText.split("\n").join("").length > 0;
328
+ // Label is shown and background is hidden - remove the background billboard
329
+ if (label.show && !showBackground) {
330
+ backgroundBillboardCollection.remove(backgroundBillboard);
331
+ label._backgroundBillboard = backgroundBillboard = undefined;
332
+ return;
333
+ }
334
+
335
+ backgroundBillboard.color = label._backgroundColor;
336
+ backgroundBillboard.show = label._show;
337
+ backgroundBillboard.position = label._position;
338
+ backgroundBillboard.eyeOffset = label._eyeOffset;
339
+ backgroundBillboard.pixelOffset = label._pixelOffset;
340
+ backgroundBillboard.horizontalOrigin = HorizontalOrigin.LEFT;
341
+ backgroundBillboard.verticalOrigin = label._verticalOrigin;
342
+ backgroundBillboard.heightReference = label._heightReference;
343
+ backgroundBillboard.scale = label.totalScale;
344
+ backgroundBillboard.pickPrimitive = label;
345
+ backgroundBillboard.id = label._id;
346
+ backgroundBillboard.translucencyByDistance = label._translucencyByDistance;
347
+ backgroundBillboard.pixelOffsetScaleByDistance =
348
+ label._pixelOffsetScaleByDistance;
349
+ backgroundBillboard.scaleByDistance = label._scaleByDistance;
350
+ backgroundBillboard.distanceDisplayCondition =
351
+ label._distanceDisplayCondition;
352
+ backgroundBillboard.disableDepthTestDistance =
353
+ label._disableDepthTestDistance;
354
+ backgroundBillboard.clusterShow = label.clusterShow;
355
+ }
356
+
338
357
  function calculateWidthOffset(lineWidth, horizontalOrigin, backgroundPadding) {
339
358
  if (horizontalOrigin === HorizontalOrigin.CENTER) {
340
359
  return -lineWidth / 2;
@@ -507,7 +526,6 @@ function repositionAllGlyphs(label) {
507
526
  glyphPixelOffset.y = 0;
508
527
  }
509
528
  glyphPixelOffset.y = glyphPixelOffset.y * scale;
510
-
511
529
  backgroundBillboard.width = totalLineWidth;
512
530
  backgroundBillboard.height = totalLineHeight;
513
531
  backgroundBillboard._setTranslate(glyphPixelOffset);
@@ -119,12 +119,12 @@ MetadataComponentType.getMinimum = function (type) {
119
119
  return 0;
120
120
  case MetadataComponentType.INT64:
121
121
  if (FeatureDetection.supportsBigInt()) {
122
- return BigInt("-9223372036854775808"); // eslint-disable-line
122
+ return BigInt("-9223372036854775808");
123
123
  }
124
124
  return -Math.pow(2, 63);
125
125
  case MetadataComponentType.UINT64:
126
126
  if (FeatureDetection.supportsBigInt()) {
127
- return BigInt(0); // eslint-disable-line
127
+ return BigInt(0);
128
128
  }
129
129
  return 0;
130
130
  case MetadataComponentType.FLOAT32:
@@ -168,13 +168,13 @@ MetadataComponentType.getMaximum = function (type) {
168
168
  case MetadataComponentType.INT64:
169
169
  if (FeatureDetection.supportsBigInt()) {
170
170
  // Need to initialize with a string otherwise the value will be 9223372036854775808
171
- return BigInt("9223372036854775807"); // eslint-disable-line
171
+ return BigInt("9223372036854775807");
172
172
  }
173
173
  return Math.pow(2, 63) - 1;
174
174
  case MetadataComponentType.UINT64:
175
175
  if (FeatureDetection.supportsBigInt()) {
176
176
  // Need to initialize with a string otherwise the value will be 18446744073709551616
177
- return BigInt("18446744073709551615"); // eslint-disable-line
177
+ return BigInt("18446744073709551615");
178
178
  }
179
179
  return Math.pow(2, 64) - 1;
180
180
  case MetadataComponentType.FLOAT32:
@@ -333,7 +333,7 @@ MetadataComponentType.unnormalize = function (value, type) {
333
333
  type === MetadataComponentType.UINT64) &&
334
334
  FeatureDetection.supportsBigInt()
335
335
  ) {
336
- value = BigInt(value); // eslint-disable-line
336
+ value = BigInt(value);
337
337
  }
338
338
 
339
339
  if (value > max) {
@@ -549,7 +549,6 @@ function getInt64NumberFallback(index, values) {
549
549
  function getInt64BigIntFallback(index, values) {
550
550
  const dataView = values.dataView;
551
551
  const byteOffset = index * 8;
552
- // eslint-disable-next-line no-undef
553
552
  let value = BigInt(0);
554
553
  const isNegative = (dataView.getUint8(byteOffset + 7) & 0x80) > 0;
555
554
  let carrying = true;
@@ -565,7 +564,7 @@ function getInt64BigIntFallback(index, values) {
565
564
  byte = ~byte & 0xff;
566
565
  }
567
566
  }
568
- value += BigInt(byte) * (BigInt(1) << BigInt(i * 8)); // eslint-disable-line
567
+ value += BigInt(byte) * (BigInt(1) << BigInt(i * 8));
569
568
  }
570
569
  if (isNegative) {
571
570
  value = -value;
@@ -592,14 +591,11 @@ function getUint64BigIntFallback(index, values) {
592
591
  const byteOffset = index * 8;
593
592
 
594
593
  // Split 64-bit number into two 32-bit (4-byte) parts
595
- // eslint-disable-next-line no-undef
596
594
  const left = BigInt(dataView.getUint32(byteOffset, true));
597
595
 
598
- // eslint-disable-next-line no-undef
599
596
  const right = BigInt(dataView.getUint32(byteOffset + 4, true));
600
597
 
601
598
  // Combine the two 32-bit values
602
- // eslint-disable-next-line no-undef
603
599
  const value = left + BigInt(4294967296) * right;
604
600
 
605
601
  return value;
@@ -770,7 +766,6 @@ function BufferView(bufferView, componentType, length) {
770
766
  return getInt64BigIntFallback(index, that);
771
767
  };
772
768
  } else {
773
- // eslint-disable-next-line
774
769
  typedArray = new BigInt64Array(
775
770
  bufferView.buffer,
776
771
  bufferView.byteOffset,
@@ -778,7 +773,7 @@ function BufferView(bufferView, componentType, length) {
778
773
  );
779
774
  setFunction = function (index, value) {
780
775
  // Convert the number to a BigInt before setting the value in the typed array
781
- that.typedArray[index] = BigInt(value); // eslint-disable-line
776
+ that.typedArray[index] = BigInt(value);
782
777
  };
783
778
  }
784
779
  } else if (componentType === MetadataComponentType.UINT64) {
@@ -804,7 +799,6 @@ function BufferView(bufferView, componentType, length) {
804
799
  return getUint64BigIntFallback(index, that);
805
800
  };
806
801
  } else {
807
- // eslint-disable-next-line
808
802
  typedArray = new BigUint64Array(
809
803
  bufferView.buffer,
810
804
  bufferView.byteOffset,
@@ -812,7 +806,7 @@ function BufferView(bufferView, componentType, length) {
812
806
  );
813
807
  setFunction = function (index, value) {
814
808
  // Convert the number to a BigInt before setting the value in the typed array
815
- that.typedArray[index] = BigInt(value); // eslint-disable-line
809
+ that.typedArray[index] = BigInt(value);
816
810
  };
817
811
  }
818
812
  } else {
@@ -0,0 +1,42 @@
1
+ import EdgeDetectionStageFS from "../../Shaders/Model/EdgeDetectionStageFS.js";
2
+
3
+ /**
4
+ * Performs the screen-space edge visibility / composition pass. This stage does not
5
+ * build edge geometry itself; that work is handled earlier by {@link EdgeVisibilityPipelineStage},
6
+ * which extracts unique model edges and writes them during a dedicated edge render pass
7
+ * into edge ID / color targets. The fragment logic added here then:
8
+ * <ul>
9
+ * <li>Samples the edge render targets (edge color + per-edge feature ID)</li>
10
+ * <li>Compares per-edge feature IDs with underlying surface feature IDs to suppress
11
+ * edges that belong to filtered or hidden features</li>
12
+ * <li>Performs depth-based tests (e.g., against globe or scene depth) to discard
13
+ * occluded edges</li>
14
+ * </ul>
15
+ * In summary: EdgeVisibilityPipelineStage = generate & encode edges; this stage = decide which of
16
+ * those encoded edges are actually visible in the final frame and composite them.
17
+ *
18
+ * @namespace EdgeDetectionPipelineStage
19
+ * @private
20
+ */
21
+ const EdgeDetectionPipelineStage = {
22
+ name: "EdgeDetectionPipelineStage",
23
+ };
24
+
25
+ /**
26
+ * Process a primitive by injecting the fragment shader logic that consumes the
27
+ * intermediate edge buffers produced by the edge geometry pass. It adds code to:
28
+ * <ul>
29
+ * <li>Read edge color / edge ID MRT outputs</li>
30
+ * <li>Apply depth & feature ID based rejection</li>
31
+ * <li>Emit final edge color for composition</li>
32
+ * </ul>
33
+ * @param {PrimitiveRenderResources} renderResources The render resources for the primitive
34
+ * @private
35
+ */
36
+ EdgeDetectionPipelineStage.process = function (renderResources) {
37
+ const shaderBuilder = renderResources.shaderBuilder;
38
+
39
+ shaderBuilder.addFragmentLines([EdgeDetectionStageFS]);
40
+ };
41
+
42
+ export default EdgeDetectionPipelineStage;