@cesium/engine 21.0.1 → 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.
- package/Build/Workers/{chunk-LPKJSIMD.js → chunk-2D3GLFZD.js} +12 -12
- package/Build/Workers/chunk-34YXP222.js +352 -0
- package/Build/Workers/{chunk-UKA7OISV.js → chunk-3GL53OCU.js} +17 -18
- package/Build/Workers/{chunk-WQZL6CA2.js → chunk-5B7VZQZY.js} +6 -6
- package/Build/Workers/{chunk-FE565QHX.js → chunk-5T5SY63I.js} +2 -2
- package/Build/Workers/{chunk-RR3NCT4R.js → chunk-5ZF53EY6.js} +4 -4
- package/Build/Workers/{chunk-PZUZCAX3.js → chunk-6HBKE43B.js} +7 -7
- package/Build/Workers/{chunk-5YXA47QD.js → chunk-726NINF5.js} +16 -16
- package/Build/Workers/{chunk-3RKX3UFI.js → chunk-75HAJIDT.js} +1 -1
- package/Build/Workers/{chunk-CBPNIEGH.js → chunk-7KAXDKRU.js} +10 -10
- package/Build/Workers/chunk-7XEJGXX2.js +2759 -0
- package/Build/Workers/{chunk-U2GR5FDL.js → chunk-A4DPJIWS.js} +18 -10
- package/Build/Workers/{chunk-G3CKZ34K.js → chunk-A6JAFSZT.js} +5 -5
- package/Build/Workers/{chunk-2SI7DEW5.js → chunk-AARZSH4V.js} +5 -5
- package/Build/Workers/{chunk-W6KMV4F5.js → chunk-AOM3FHBN.js} +6 -6
- package/Build/Workers/{chunk-VVALNLSH.js → chunk-BJSNGGBM.js} +4 -4
- package/Build/Workers/{chunk-3YNW5K6O.js → chunk-ECHAJNQJ.js} +12 -12
- package/Build/Workers/{chunk-KZ7GDSAJ.js → chunk-EJO3NKMS.js} +1 -1
- package/Build/Workers/{chunk-UFSYRVC5.js → chunk-EZ7NJXQN.js} +4 -4
- package/Build/Workers/{chunk-P2UKEFCK.js → chunk-FA3SCJDX.js} +2 -2
- package/Build/Workers/{chunk-MXOGBWMP.js → chunk-GYRDA3XK.js} +14 -14
- package/Build/Workers/{chunk-KVB73ECP.js → chunk-H7B7FU2U.js} +7 -7
- package/Build/Workers/{chunk-XJVRYJVZ.js → chunk-IGX772ZQ.js} +1 -1
- package/Build/Workers/{chunk-MQPDOWGH.js → chunk-JDJAPBZP.js} +1 -1
- package/Build/Workers/{chunk-DDXI6UYW.js → chunk-JZFU2LEM.js} +4 -4
- package/Build/Workers/{chunk-DAJKOQW6.js → chunk-KGLDJRSO.js} +9 -9
- package/Build/Workers/{chunk-CSDYSXBI.js → chunk-KUB64XW6.js} +11 -11
- package/Build/Workers/{chunk-X3ZV3XNO.js → chunk-L7U26FFD.js} +16 -16
- package/Build/Workers/{chunk-YZ3RCE45.js → chunk-LEFQBK6H.js} +11 -11
- package/Build/Workers/{chunk-KEPPNSBL.js → chunk-LWJXCI3F.js} +5 -5
- package/Build/Workers/{chunk-YNOVMSUX.js → chunk-M7HRE4QR.js} +8 -8
- package/Build/Workers/{chunk-ASVODZNK.js → chunk-MXHRZHDF.js} +6 -6
- package/Build/Workers/{chunk-PJAA7QSC.js → chunk-N52ZRKUE.js} +6 -6
- package/Build/Workers/{chunk-W6I3LNPF.js → chunk-NE5JTQJP.js} +7 -7
- package/Build/Workers/{chunk-XG54SG4O.js → chunk-NGKF5NTR.js} +5 -5
- package/Build/Workers/{chunk-42EJCSIV.js → chunk-NHZNMTIR.js} +5 -5
- package/Build/Workers/{chunk-LU7DLY2L.js → chunk-OE22564R.js} +3 -3
- package/Build/Workers/{chunk-A2SP2EJZ.js → chunk-OUBBMEWX.js} +6 -6
- package/Build/Workers/{chunk-J2XQVKVH.js → chunk-P2H75UV5.js} +67 -33
- package/Build/Workers/{chunk-J3KPR6DJ.js → chunk-QCMRUVVF.js} +12 -12
- package/Build/Workers/{chunk-RVRN4KDB.js → chunk-QSMIHPUM.js} +2 -2
- package/Build/Workers/{chunk-EBDZDBJN.js → chunk-RCCYW6E7.js} +12 -12
- package/Build/Workers/{chunk-LV3G32QE.js → chunk-RQRODXVN.js} +4 -4
- package/Build/Workers/{chunk-OBS5EMZ6.js → chunk-SZN34LQ5.js} +10 -10
- package/Build/Workers/{chunk-IKUOV6DO.js → chunk-U4XMLGSR.js} +7 -7
- package/Build/Workers/{chunk-NYYQZ3LH.js → chunk-U7CX3HHE.js} +8 -8
- package/Build/Workers/{chunk-QNOIRRJK.js → chunk-VCVA7BMD.js} +4 -4
- package/Build/Workers/{chunk-TGJQMEL4.js → chunk-VVZ667H6.js} +2 -2
- package/Build/Workers/{chunk-DBHL2UVG.js → chunk-W4PIP5PG.js} +2 -2
- package/Build/Workers/{chunk-2QPH5QDK.js → chunk-XPVZWY4A.js} +8 -8
- package/Build/Workers/{chunk-4CORGH7N.js → chunk-XQ347YWU.js} +13 -13
- package/Build/Workers/{chunk-T7HU6E7G.js → chunk-XZO6F23E.js} +1 -1
- package/Build/Workers/{chunk-DTKSVIH5.js → chunk-YLILBDWK.js} +2 -2
- package/Build/Workers/{chunk-JG3C3LPY.js → chunk-YLXWC7OW.js} +4 -4
- package/Build/Workers/combineGeometry.js +21 -21
- package/Build/Workers/createBoxGeometry.js +15 -15
- package/Build/Workers/createBoxOutlineGeometry.js +13 -13
- package/Build/Workers/createCircleGeometry.js +23 -23
- package/Build/Workers/createCircleOutlineGeometry.js +16 -16
- package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
- package/Build/Workers/createCorridorGeometry.js +26 -26
- package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
- package/Build/Workers/createCylinderGeometry.js +17 -17
- package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
- package/Build/Workers/createEllipseGeometry.js +23 -23
- package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
- package/Build/Workers/createEllipsoidGeometry.js +16 -16
- package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
- package/Build/Workers/createFrustumGeometry.js +15 -15
- package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
- package/Build/Workers/createGeometry.js +24 -22
- package/Build/Workers/createGroundPolylineGeometry.js +19 -19
- package/Build/Workers/createPlaneGeometry.js +13 -13
- package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
- package/Build/Workers/createPolygonGeometry.js +29 -29
- package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
- package/Build/Workers/createPolylineGeometry.js +22 -22
- package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
- package/Build/Workers/createRectangleGeometry.js +24 -24
- package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
- package/Build/Workers/createSimplePolylineGeometry.js +20 -20
- package/Build/Workers/createSphereGeometry.js +16 -16
- package/Build/Workers/createSphereOutlineGeometry.js +15 -15
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
- package/Build/Workers/createVectorTileGeometries.js +21 -21
- package/Build/Workers/createVectorTilePoints.js +11 -11
- package/Build/Workers/createVectorTilePolygons.js +19 -19
- package/Build/Workers/createVectorTilePolylines.js +12 -12
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +88 -0
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
- package/Build/Workers/createVerticesFromHeightmap.js +21 -21
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -277
- package/Build/Workers/createWallGeometry.js +21 -21
- package/Build/Workers/createWallOutlineGeometry.js +20 -20
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +9 -9
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +92 -0
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +2 -2
- package/Source/Core/Cesium3DTilesTerrainData.js +930 -0
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1866 -0
- package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
- package/Source/Core/CesiumTerrainProvider.js +2 -2
- package/Source/Core/Color.js +23 -6
- package/Source/Core/EllipsoidalOccluder.js +2 -2
- package/Source/Core/FeatureDetection.js +0 -2
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseTerrainData.js +1 -1
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
- package/Source/Core/HeightmapTerrainData.js +10 -22
- package/Source/Core/HilbertOrder.js +0 -6
- package/Source/Core/ITwinPlatform.js +6 -6
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +35 -27
- package/Source/Core/PixelFormat.js +2 -2
- package/Source/Core/QuantizedMeshTerrainData.js +23 -57
- package/Source/Core/Resource.js +15 -11
- package/Source/Core/S2Cell.js +6 -18
- package/Source/Core/TaskProcessor.js +1 -1
- package/Source/Core/TerrainData.js +2 -1
- package/Source/Core/TerrainEncoding.js +215 -38
- package/Source/Core/TerrainMesh.js +8 -8
- package/Source/Core/TerrainProvider.js +151 -0
- package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
- package/Source/Core/binarySearch.js +1 -1
- package/Source/Core/createWorldBathymetryAsync.js +2 -2
- package/Source/Core/createWorldTerrainAsync.js +3 -3
- package/Source/Core/loadImageFromTypedArray.js +9 -3
- package/Source/Core/mergeSort.js +1 -1
- package/Source/DataSources/PropertyArray.js +2 -2
- package/Source/Renderer/AutomaticUniforms.js +61 -0
- package/Source/Renderer/Context.js +13 -7
- package/Source/Renderer/Pass.js +10 -9
- package/Source/Renderer/UniformState.js +12 -0
- package/Source/Renderer/VertexArray.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +1 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Azure2DImageryProvider.js +7 -5
- package/Source/Scene/BatchTable.js +2 -2
- package/Source/Scene/BillboardCollection.js +25 -21
- package/Source/Scene/BingMapsImageryProvider.js +1 -1
- package/Source/Scene/BoundingVolumeSemantics.js +54 -62
- package/Source/Scene/Cesium3DTile.js +3 -3
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +1 -1
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/EdgeFramebuffer.js +245 -0
- package/Source/Scene/FrameState.js +12 -0
- package/Source/Scene/GaussianSplat3DTileContent.js +12 -16
- package/Source/Scene/GaussianSplatPrimitive.js +12 -8
- package/Source/Scene/GaussianSplatSorter.js +2 -2
- package/Source/Scene/Globe.js +1 -1
- package/Source/Scene/GlobeSurfaceTile.js +10 -4
- package/Source/Scene/GltfBufferViewLoader.js +18 -0
- package/Source/Scene/GltfLoader.js +46 -8
- package/Source/Scene/Google2DImageryProvider.js +39 -27
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
- package/Source/Scene/I3SDataProvider.js +1 -1
- package/Source/Scene/I3SDecoder.js +3 -3
- package/Source/Scene/ITwinData.js +4 -4
- package/Source/Scene/ImageryLayer.js +1 -1
- package/Source/Scene/Implicit3DTileContent.js +18 -7
- package/Source/Scene/ImplicitSubtree.js +3 -3
- package/Source/Scene/ImplicitTileset.js +2 -2
- package/Source/Scene/IonImageryProvider.js +15 -84
- package/Source/Scene/IonImageryProviderFactory.js +194 -0
- package/Source/Scene/LabelCollection.js +54 -36
- package/Source/Scene/MetadataComponentType.js +5 -5
- package/Source/Scene/MetadataTableProperty.js +3 -9
- package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
- package/Source/Scene/Model/MetadataPipelineStage.js +7 -7
- package/Source/Scene/Model/ModelDrawCommand.js +69 -0
- package/Source/Scene/Model/ModelImagery.js +4 -0
- package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
- package/Source/Scene/Model/ModelRuntimePrimitive.js +13 -2
- package/Source/Scene/Model/ModelSceneGraph.js +15 -3
- package/Source/Scene/Model/ModelUtility.js +0 -1
- package/Source/Scene/Model/NodeRenderResources.js +1 -1
- package/Source/Scene/Model/PrimitiveRenderResources.js +1 -1
- package/Source/Scene/OIT.js +11 -1
- package/Source/Scene/PickFramebuffer.js +13 -17
- package/Source/Scene/Picking.js +104 -80
- package/Source/Scene/QuadtreePrimitive.js +34 -26
- package/Source/Scene/QuadtreeTile.js +66 -46
- package/Source/Scene/ResourceLoaderState.js +1 -1
- package/Source/Scene/Scene.js +124 -12
- package/Source/Scene/ScreenSpaceCameraController.js +1 -1
- package/Source/Scene/SensorVolumePortionToDisplay.js +6 -6
- package/Source/Scene/SingleTileImageryProvider.js +3 -3
- package/Source/Scene/Terrain.js +5 -5
- package/Source/Scene/TileMapServiceImageryProvider.js +2 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +1 -1
- package/Source/Scene/View.js +3 -0
- package/Source/Scene/VoxelPrimitive.js +196 -189
- package/Source/Scene/VoxelShape.js +2 -0
- package/Source/Scene/createWorldImageryAsync.js +1 -1
- package/Source/Shaders/BillboardCollectionFS.glsl +102 -62
- package/Source/Shaders/BillboardCollectionFS.js +102 -63
- package/Source/Shaders/BillboardCollectionVS.glsl +44 -37
- package/Source/Shaders/BillboardCollectionVS.js +45 -38
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/GlobeVS.glsl +1 -1
- package/Source/Shaders/GlobeVS.js +1 -1
- package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
- package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
- package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
- package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
- package/Source/Shaders/Model/ModelFS.glsl +5 -0
- package/Source/Shaders/Model/ModelFS.js +5 -0
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +0 -1
- package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
- package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +7 -15
- package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
- package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
- package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
- package/index.d.ts +281 -27
- package/index.js +200 -190
- 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
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
backgroundBillboard
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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");
|
|
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);
|
|
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");
|
|
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");
|
|
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);
|
|
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));
|
|
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);
|
|
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);
|
|
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;
|