@cesium/engine 26.1.0 → 26.3.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/ThirdParty/Workers/zip-web-worker.js +764 -520
- package/Build/Workers/{chunk-HS6AD4P2.js → chunk-2DKJSPYF.js} +14 -14
- package/Build/Workers/{chunk-QVLAFFJY.js → chunk-2PWVICP6.js} +1 -1
- package/Build/Workers/{chunk-ILME5BXA.js → chunk-2YY724ZX.js} +8 -8
- package/Build/Workers/{chunk-ENNFMWDW.js → chunk-4DMAXPKB.js} +12 -12
- package/Build/Workers/{chunk-CDJDJ5LK.js → chunk-4LRFYRBX.js} +2 -2
- package/Build/Workers/{chunk-76FDC45O.js → chunk-5JCZHJUU.js} +13 -13
- package/Build/Workers/{chunk-5LSOO2KD.js → chunk-5KG7KDDW.js} +7 -7
- package/Build/Workers/{chunk-A6X24AZI.js → chunk-6BSNYZZG.js} +5 -5
- package/Build/Workers/{chunk-IGAZBTFZ.js → chunk-6R6SGKYN.js} +6 -6
- package/Build/Workers/{chunk-SS5ABQGY.js → chunk-6V2KDEHL.js} +4 -4
- package/Build/Workers/{chunk-ZMBHFYOX.js → chunk-75BC2IHI.js} +7 -7
- package/Build/Workers/{chunk-LGNDTZVX.js → chunk-7SESBH2I.js} +4 -4
- package/Build/Workers/{chunk-CLCTQVVL.js → chunk-7WXBTNRV.js} +8 -8
- package/Build/Workers/{chunk-WBSY7HDY.js → chunk-A7SMPV6B.js} +12 -12
- package/Build/Workers/{chunk-CEEZE3YZ.js → chunk-ATSXKJ3L.js} +7 -7
- package/Build/Workers/{chunk-AHWAZRBV.js → chunk-B4AVL7VI.js} +1 -1
- package/Build/Workers/{chunk-6HK6IXK2.js → chunk-B7Q2WF6Q.js} +4 -4
- package/Build/Workers/{chunk-YKU2Q3A2.js → chunk-BNDSDQ7D.js} +9 -12
- package/Build/Workers/{chunk-R4FPNAZ2.js → chunk-CKK6CUXK.js} +9 -9
- package/Build/Workers/{chunk-FCP2QY4G.js → chunk-COKOYTRS.js} +5 -5
- package/Build/Workers/{chunk-7D2HZKH7.js → chunk-CQ4TZXAT.js} +7 -7
- package/Build/Workers/{chunk-TVZD72WJ.js → chunk-DKSANM4A.js} +12 -12
- package/Build/Workers/{chunk-FDK4K5IA.js → chunk-DZK34ZVD.js} +1 -1
- package/Build/Workers/{chunk-N7CCOFLX.js → chunk-E7G32DWL.js} +1 -1
- package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-EDETO6NY.js} +2 -2
- package/Build/Workers/{chunk-2EFYUSUY.js → chunk-F34TJJLA.js} +16 -16
- package/Build/Workers/{chunk-GXWQZBAI.js → chunk-GLHDTTTO.js} +2 -2
- package/Build/Workers/{chunk-T5QBPLE3.js → chunk-GS7RY2DH.js} +11 -11
- package/Build/Workers/{chunk-C7JQVRLM.js → chunk-HDD3RFLT.js} +25 -3
- package/Build/Workers/{chunk-E7NZJOK7.js → chunk-HDPNFEPP.js} +121 -93
- package/Build/Workers/{chunk-VAL7DYNR.js → chunk-JBJ6BRIM.js} +4 -4
- package/Build/Workers/{chunk-XQ3SKCMM.js → chunk-JKTWW7IO.js} +5 -5
- package/Build/Workers/{chunk-UVO6COT2.js → chunk-JL4NWWQY.js} +5 -5
- package/Build/Workers/{chunk-DBD5WWG2.js → chunk-JMUUAW4X.js} +10 -10
- package/Build/Workers/{chunk-UEY73NRN.js → chunk-KBGAHN5R.js} +1 -1
- package/Build/Workers/{chunk-LD64RPYV.js → chunk-KEWK6VZL.js} +12 -12
- package/Build/Workers/{chunk-JW6OZT4R.js → chunk-L73K5UPP.js} +10 -10
- package/Build/Workers/{chunk-DIGUUD6G.js → chunk-LL2SGJYH.js} +6 -6
- package/Build/Workers/{chunk-XLXSDIP5.js → chunk-LYJUL4XQ.js} +6 -6
- package/Build/Workers/{chunk-SM2CDCYF.js → chunk-M6W46OAP.js} +7 -7
- package/Build/Workers/{chunk-EHTS2YPT.js → chunk-MDDKCLMF.js} +17 -17
- package/Build/Workers/{chunk-FGQFQHN5.js → chunk-MUW4DJV7.js} +18 -18
- package/Build/Workers/{chunk-HHV3MCGV.js → chunk-N5YK44FS.js} +5 -5
- package/Build/Workers/{chunk-RG4F5R57.js → chunk-NZQUP52G.js} +9 -9
- package/Build/Workers/{chunk-B4CQSLZJ.js → chunk-PKZA44LH.js} +6 -6
- package/Build/Workers/{chunk-OBEU25PI.js → chunk-Q2JS5LCB.js} +17 -17
- package/Build/Workers/{chunk-KGXSYGBG.js → chunk-QTAEVUED.js} +13 -13
- package/Build/Workers/{chunk-NIWITKQK.js → chunk-SEJIXZZ4.js} +11 -11
- package/Build/Workers/{chunk-SGRGNDOD.js → chunk-SL2HCFYW.js} +10 -10
- package/Build/Workers/{chunk-SF6K72D7.js → chunk-SLHK3KAR.js} +5 -5
- package/Build/Workers/{chunk-JKXV6PG5.js → chunk-UZY5XRL2.js} +1 -1
- package/Build/Workers/{chunk-LNSQVXFH.js → chunk-VRECSMG3.js} +2 -2
- package/Build/Workers/{chunk-A3O6EDBK.js → chunk-X27HKF5E.js} +2 -2
- package/Build/Workers/{chunk-7KVKHY7O.js → chunk-XBY3354M.js} +6 -6
- package/Build/Workers/{chunk-GSWMAFTE.js → chunk-XRZCS3HE.js} +23 -16
- package/Build/Workers/{chunk-6YR6JBMY.js → chunk-XSIUYAT6.js} +2 -2
- package/Build/Workers/{chunk-ZSGUV73H.js → chunk-Z2DW5NM2.js} +6 -6
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +31 -33
- package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +24 -24
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +34 -34
- package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createPolylineGeometry.js +26 -26
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
- package/Build/Workers/createSimplePolylineGeometry.js +24 -24
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +24 -24
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
- package/Source/Core/BoundingSphere.js +0 -3
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
- package/Source/Core/CoplanarPolygonGeometry.js +2 -2
- package/Source/Core/CorridorGeometry.js +2 -4
- package/Source/Core/CorridorOutlineGeometry.js +1 -3
- package/Source/Core/EarthOrientationParameters.js +2 -2
- package/Source/Core/EllipseGeometryLibrary.js +2 -2
- package/Source/Core/EllipsoidGeodesic.js +3 -3
- package/Source/Core/EllipsoidRhumbLine.js +1 -1
- package/Source/Core/GroundPolylineGeometry.js +2 -2
- package/Source/Core/Heap.js +1 -1
- package/Source/Core/HermitePolynomialApproximation.js +215 -179
- package/Source/Core/InterpolationAlgorithm.js +1 -0
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +5 -0
- package/Source/Core/IonSnapGeometryType.js +59 -0
- package/Source/Core/IonSnapHeat.js +33 -0
- package/Source/Core/IonSnapMode.js +45 -0
- package/Source/Core/IonSnapParentGeometryType.js +52 -0
- package/Source/Core/IonSnapService.js +369 -0
- package/Source/Core/JulianDate.js +1 -1
- package/Source/Core/LagrangePolynomialApproximation.js +55 -52
- package/Source/Core/LinearApproximation.js +69 -66
- package/Source/Core/Math.js +59 -0
- package/Source/Core/Matrix2.js +2 -2
- package/Source/Core/Matrix3.js +2 -2
- package/Source/Core/OrthographicFrustum.js +1 -1
- package/Source/Core/PerspectiveFrustum.js +1 -1
- package/Source/Core/PolygonGeometry.js +2 -2
- package/Source/Core/PolygonGeometryLibrary.js +1 -1
- package/Source/Core/PolygonOutlineGeometry.js +1 -1
- package/Source/Core/PolylineGeometry.js +1 -1
- package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
- package/Source/Core/Rectangle.js +7 -1
- package/Source/Core/RectangleOutlineGeometry.js +1 -1
- package/Source/Core/SimplePolylineGeometry.js +1 -1
- package/Source/Core/SnapService.js +63 -0
- package/Source/Core/TerrainEncoding.js +2 -2
- package/Source/Core/TerrainPicker.js +179 -168
- package/Source/Core/TimeIntervalCollection.js +1 -3
- package/Source/Core/Tipsify.js +1 -1
- package/Source/Core/Transforms.js +5 -1
- package/Source/Core/VectorPipeline.js +1211 -0
- package/Source/Core/VectorProvider.js +669 -0
- package/Source/Core/WallOutlineGeometry.js +1 -1
- package/Source/Core/getTimestamp.js +4 -2
- package/Source/DataSources/CompositeEntityCollection.js +0 -1
- package/Source/DataSources/CzmlDataSource.js +2 -0
- package/Source/DataSources/DataSourceDisplay.js +1 -1
- package/Source/DataSources/GeoJsonDataSource.js +0 -1
- package/Source/DataSources/GeometryVisualizer.js +1 -1
- package/Source/DataSources/KmlDataSource.js +1 -2
- package/Source/DataSources/PolylineVisualizer.js +1 -1
- package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
- package/Source/Renderer/AutomaticUniforms.js +67 -2
- package/Source/Renderer/Context.js +9 -3
- package/Source/Renderer/DrawCommand.js +22 -0
- package/Source/Renderer/Framebuffer.js +4 -0
- package/Source/Renderer/Pass.js +11 -10
- package/Source/Renderer/ShaderBuilder.js +1 -1
- package/Source/Renderer/Texture.js +11 -0
- package/Source/Renderer/UniformState.js +54 -1
- package/Source/Renderer/VertexArray.js +0 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Billboard.js +2 -1
- package/Source/Scene/BillboardCollection.js +7 -3
- package/Source/Scene/BufferPointCollection.js +4 -7
- package/Source/Scene/BufferPolygonCollection.js +56 -27
- package/Source/Scene/BufferPolylineCollection.js +61 -8
- package/Source/Scene/BufferPolylineMaterial.js +6 -5
- package/Source/Scene/BufferPrimitiveCollection.js +226 -34
- package/Source/Scene/Camera.js +71 -5
- package/Source/Scene/Cesium3DTile.js +12 -0
- package/Source/Scene/Cesium3DTileset.js +62 -9
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
- package/Source/Scene/Cesium3DTilesetCache.js +15 -0
- package/Source/Scene/ClippingPlaneCollection.js +2 -2
- package/Source/Scene/ClippingPolygon.js +154 -100
- package/Source/Scene/ClippingPolygonCollection.js +352 -694
- package/Source/Scene/Controllers/Controller.js +63 -0
- package/Source/Scene/Controllers/ControllerHost.js +78 -0
- package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
- package/Source/Scene/Controllers/MouseButton.js +32 -0
- package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
- package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
- package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
- package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
- package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
- package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
- package/Source/Scene/CreditDisplay.js +62 -0
- package/Source/Scene/DerivedCommand.js +94 -0
- package/Source/Scene/EdgeFramebuffer.js +1 -5
- package/Source/Scene/FrameState.js +17 -0
- package/Source/Scene/GeoJsonPrimitive.js +114 -24
- package/Source/Scene/Globe.js +20 -0
- package/Source/Scene/GlobeDepth.js +27 -1
- package/Source/Scene/GlobeSurfaceShaderSet.js +42 -53
- package/Source/Scene/GlobeSurfaceTile.js +61 -10
- package/Source/Scene/GlobeSurfaceTileProvider.js +351 -26
- package/Source/Scene/GltfLoader.js +88 -9
- package/Source/Scene/GltfSpzLoader.js +1 -1
- package/Source/Scene/GltfVertexBufferLoader.js +6 -3
- package/Source/Scene/HeightReference.js +1 -1
- package/Source/Scene/I3SDataProvider.js +1 -1
- package/Source/Scene/I3SLayer.js +1 -1
- package/Source/Scene/I3SNode.js +2 -2
- package/Source/Scene/ImageryLayerCollection.js +188 -4
- package/Source/Scene/IonImageryProvider.js +1 -5
- package/Source/Scene/Label.js +4 -4
- package/Source/Scene/LabelCollection.js +1 -1
- package/Source/Scene/MVTDataProvider.js +11 -0
- package/Source/Scene/Model/B3dmLoader.js +1 -2
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
- package/Source/Scene/Model/I3dmLoader.js +1 -1
- package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
- package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
- package/Source/Scene/Model/Model.js +250 -26
- package/Source/Scene/Model/Model3DTileContent.js +5 -0
- package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
- package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
- package/Source/Scene/Model/ModelDrawCommand.js +160 -16
- package/Source/Scene/Model/ModelDrawCommands.js +4 -0
- package/Source/Scene/Model/ModelRenderResources.js +2 -3
- package/Source/Scene/Model/ModelSceneGraph.js +31 -1
- package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
- package/Source/Scene/Model/PickingPipelineStage.js +33 -0
- package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
- package/Source/Scene/ModelComponents.js +71 -0
- package/Source/Scene/Picking.js +16 -5
- package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
- package/Source/Scene/PntsParser.js +0 -1
- package/Source/Scene/PolylineCollection.js +1 -1
- package/Source/Scene/PostProcessStage.js +26 -5
- package/Source/Scene/ResourceCache.js +7 -4
- package/Source/Scene/ResourceCacheKey.js +16 -13
- package/Source/Scene/Scene.js +258 -6
- package/Source/Scene/ScreenSpaceCameraController.js +1 -2
- package/Source/Scene/ShadowMap.js +9 -3
- package/Source/Scene/ShadowMapShader.js +50 -2
- package/Source/Scene/SnapFramebuffer.js +121 -0
- package/Source/Scene/Snapping.js +241 -0
- package/Source/Scene/TerrainFillMesh.js +3 -2
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +13 -2
- package/Source/Scene/Vector3DTileContent.js +2 -3
- package/Source/Scene/VectorGltf3DTileContent.js +31 -3
- package/Source/Scene/View.js +10 -8
- package/Source/Scene/VoxelTraversal.js +1 -1
- package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
- package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
- package/Source/Scene/createElevationBandMaterial.js +1 -1
- package/Source/Scene/renderBufferPointCollection.js +1 -2
- package/Source/Scene/renderBufferPolygonCollection.js +1 -2
- package/Source/Scene/renderBufferPolylineCollection.js +6 -3
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
- 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/passCesium3DTilePlanarFillId.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
- package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
- 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/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 +4 -4
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
- package/Source/Shaders/GlobeFS.glsl +20 -14
- package/Source/Shaders/GlobeFS.js +20 -14
- package/Source/Shaders/GlobeVS.glsl +0 -32
- package/Source/Shaders/GlobeVS.js +0 -32
- package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
- package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
- package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
- package/Source/Shaders/Model/MaterialStageFS.js +8 -2
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +15 -3
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +15 -3
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +20 -24
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +20 -24
- package/Source/Shaders/Model/ModelFS.glsl +109 -0
- package/Source/Shaders/Model/ModelFS.js +109 -0
- package/Source/Shaders/Model/ModelVS.glsl +7 -2
- package/Source/Shaders/Model/ModelVS.js +7 -2
- package/Source/Shaders/Model/ModelVectorLookupStageFS.glsl +6 -0
- package/Source/Shaders/Model/ModelVectorLookupStageFS.js +8 -0
- package/Source/Shaders/Model/ModelVectorLookupStageVS.glsl +15 -0
- package/Source/Shaders/Model/ModelVectorLookupStageVS.js +17 -0
- package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +9 -10
- package/Source/Shaders/Model/VerticalExaggerationStageVS.js +9 -11
- package/Source/Shaders/VectorCommon.glsl +305 -0
- package/Source/Shaders/VectorCommon.js +307 -0
- package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
- package/Source/ThirdParty/zip-module.wasm +0 -0
- package/Source/Widget/CesiumWidget.js +30 -0
- package/index.d.ts +1326 -65
- package/index.js +179 -155
- package/package.json +6 -6
- package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +0 -37
- package/Source/Shaders/Builtin/Functions/clipPolygons.js +0 -39
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +0 -14
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +0 -15
- package/Source/Shaders/PolygonSignedDistanceFS.glsl +0 -131
- package/Source/Shaders/PolygonSignedDistanceFS.js +0 -132
|
@@ -40,6 +40,7 @@ import ClippingPlaneCollection from "./ClippingPlaneCollection.js";
|
|
|
40
40
|
import ClippingPolygonCollection from "./ClippingPolygonCollection.js";
|
|
41
41
|
import DepthFunction from "./DepthFunction.js";
|
|
42
42
|
import GlobeSurfaceTile from "./GlobeSurfaceTile.js";
|
|
43
|
+
import HeightReference from "./HeightReference.js";
|
|
43
44
|
import ImageryLayer from "./ImageryLayer.js";
|
|
44
45
|
import ImageryState from "./ImageryState.js";
|
|
45
46
|
import PerInstanceColorAppearance from "./PerInstanceColorAppearance.js";
|
|
@@ -63,6 +64,7 @@ import TileSelectionResult from "./TileSelectionResult.js";
|
|
|
63
64
|
/** @import TerrainMesh from "../Core/TerrainMesh.js"; */
|
|
64
65
|
/** @import TerrainProvider from "../Core/TerrainProvider.js"; */
|
|
65
66
|
/** @import TilingScheme from "../Core/TilingScheme.js"; */
|
|
67
|
+
/** @import VectorProvider, { VectorTileData } from "../Core/VectorProvider.js"; */
|
|
66
68
|
/** @import { GlobeSurfaceShaderSetOptions } from "./GlobeSurfaceShaderSet.js"; */
|
|
67
69
|
|
|
68
70
|
/**
|
|
@@ -77,6 +79,7 @@ class GlobeSurfaceTileProvider {
|
|
|
77
79
|
* @param {TerrainProvider} options.terrainProvider The terrain provider that describes the surface geometry.
|
|
78
80
|
* @param {ImageryLayerCollection} options.imageryLayers The collection of imagery layers describing the shading of the surface.
|
|
79
81
|
* @param {GlobeSurfaceShaderSet} options.surfaceShaderSet The set of shaders used to render the surface.
|
|
82
|
+
* @param {VectorProvider} options.vectorProvider
|
|
80
83
|
*/
|
|
81
84
|
constructor(options) {
|
|
82
85
|
//>>includeStart('debug', pragmas.debug);
|
|
@@ -89,6 +92,8 @@ class GlobeSurfaceTileProvider {
|
|
|
89
92
|
throw new DeveloperError("options.imageryLayers is required.");
|
|
90
93
|
} else if (!defined(options.surfaceShaderSet)) {
|
|
91
94
|
throw new DeveloperError("options.surfaceShaderSet is required.");
|
|
95
|
+
} else if (!defined(options.vectorProvider)) {
|
|
96
|
+
throw new DeveloperError("options.vectorProvider is required.");
|
|
92
97
|
}
|
|
93
98
|
//>>includeEnd('debug');
|
|
94
99
|
|
|
@@ -131,6 +136,7 @@ class GlobeSurfaceTileProvider {
|
|
|
131
136
|
|
|
132
137
|
this._quadtree = undefined;
|
|
133
138
|
this._terrainProvider = options.terrainProvider;
|
|
139
|
+
this._vectorProvider = options.vectorProvider;
|
|
134
140
|
this._imageryLayers = options.imageryLayers;
|
|
135
141
|
this._surfaceShaderSet = options.surfaceShaderSet;
|
|
136
142
|
|
|
@@ -204,6 +210,12 @@ class GlobeSurfaceTileProvider {
|
|
|
204
210
|
*/
|
|
205
211
|
this._clippingPolygons = undefined;
|
|
206
212
|
|
|
213
|
+
this._clippingPolygonsDirty = false;
|
|
214
|
+
|
|
215
|
+
this._removeClippingPolygonAdded = undefined;
|
|
216
|
+
|
|
217
|
+
this._removeClippingPolygonRemoved = undefined;
|
|
218
|
+
|
|
207
219
|
/**
|
|
208
220
|
* A property specifying a {@link Rectangle} used to selectively limit terrain and imagery rendering.
|
|
209
221
|
* @type {Rectangle}
|
|
@@ -311,6 +323,11 @@ class GlobeSurfaceTileProvider {
|
|
|
311
323
|
}
|
|
312
324
|
}
|
|
313
325
|
|
|
326
|
+
/** @type {VectorProvider} */
|
|
327
|
+
get vectorProvider() {
|
|
328
|
+
return this._vectorProvider;
|
|
329
|
+
}
|
|
330
|
+
|
|
314
331
|
/**
|
|
315
332
|
* The {@link ClippingPlaneCollection} used to selectively disable rendering.
|
|
316
333
|
*
|
|
@@ -338,7 +355,33 @@ class GlobeSurfaceTileProvider {
|
|
|
338
355
|
}
|
|
339
356
|
|
|
340
357
|
set clippingPolygons(value) {
|
|
358
|
+
if (value === this._clippingPolygons) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
|
|
341
362
|
ClippingPolygonCollection.setOwner(value, this, "_clippingPolygons");
|
|
363
|
+
|
|
364
|
+
// First, remove the previous listeners if they exist
|
|
365
|
+
this._removeClippingPolygonAdded =
|
|
366
|
+
this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
|
|
367
|
+
this._removeClippingPolygonRemoved =
|
|
368
|
+
this._removeClippingPolygonRemoved &&
|
|
369
|
+
this._removeClippingPolygonRemoved();
|
|
370
|
+
|
|
371
|
+
this._clippingPolygonsDirty = true;
|
|
372
|
+
|
|
373
|
+
if (!defined(value)) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const markDirty = () => {
|
|
378
|
+
this._clippingPolygonsDirty = true;
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
this._removeClippingPolygonAdded =
|
|
382
|
+
value.polygonAdded.addEventListener(markDirty);
|
|
383
|
+
this._removeClippingPolygonRemoved =
|
|
384
|
+
value.polygonRemoved.addEventListener(markDirty);
|
|
342
385
|
}
|
|
343
386
|
|
|
344
387
|
/**
|
|
@@ -371,6 +414,38 @@ class GlobeSurfaceTileProvider {
|
|
|
371
414
|
);
|
|
372
415
|
}
|
|
373
416
|
|
|
417
|
+
// Record regions dirtied by changed collections, re-bake overlapping
|
|
418
|
+
// tiles, and build vector data for new surface tiles.
|
|
419
|
+
const vectorProvider = this._vectorProvider;
|
|
420
|
+
vectorProvider.minimumTileScreenPixels = minimumTileScreenPixels(this);
|
|
421
|
+
vectorProvider.update(frameState.frameNumber);
|
|
422
|
+
this._quadtree.forEachRenderedTile(
|
|
423
|
+
/** @param {QuadtreeTile} tile */
|
|
424
|
+
(tile) => {
|
|
425
|
+
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
426
|
+
|
|
427
|
+
if (defined(surfaceTile.vectorData)) {
|
|
428
|
+
surfaceTile.vectorData = vectorProvider.updateTileData(
|
|
429
|
+
tile.x,
|
|
430
|
+
tile.y,
|
|
431
|
+
tile.level,
|
|
432
|
+
frameState.context,
|
|
433
|
+
surfaceTile.vectorData,
|
|
434
|
+
HeightReference.CLAMP_TO_TERRAIN,
|
|
435
|
+
);
|
|
436
|
+
} else {
|
|
437
|
+
surfaceTile.vectorData = vectorProvider.requestTileData(
|
|
438
|
+
tile.x,
|
|
439
|
+
tile.y,
|
|
440
|
+
tile.level,
|
|
441
|
+
frameState.context,
|
|
442
|
+
HeightReference.CLAMP_TO_TERRAIN,
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
);
|
|
447
|
+
vectorProvider.makeClean();
|
|
448
|
+
|
|
374
449
|
// Add credits for terrain and imagery providers.
|
|
375
450
|
updateCredits(this, frameState);
|
|
376
451
|
|
|
@@ -408,8 +483,6 @@ class GlobeSurfaceTileProvider {
|
|
|
408
483
|
if (defined(clippingPolygons) && clippingPolygons.enabled) {
|
|
409
484
|
// @ts-expect-error Missing types.
|
|
410
485
|
clippingPolygons.update(frameState);
|
|
411
|
-
// @ts-expect-error Missing types.
|
|
412
|
-
clippingPolygons.queueCommands(frameState);
|
|
413
486
|
}
|
|
414
487
|
|
|
415
488
|
this._usedDrawCommands = 0;
|
|
@@ -516,6 +589,10 @@ class GlobeSurfaceTileProvider {
|
|
|
516
589
|
);
|
|
517
590
|
}
|
|
518
591
|
|
|
592
|
+
if (this._clippingPolygonsDirty) {
|
|
593
|
+
releaseClippingPolygonData(this);
|
|
594
|
+
}
|
|
595
|
+
|
|
519
596
|
// Add the tile render commands to the command list, sorted by texture count.
|
|
520
597
|
const tilesToRenderByTextureCount = this._tilesToRenderByTextureCount;
|
|
521
598
|
for (
|
|
@@ -536,6 +613,7 @@ class GlobeSurfaceTileProvider {
|
|
|
536
613
|
) {
|
|
537
614
|
const tile = tilesToRender[tileIndex];
|
|
538
615
|
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
616
|
+
updateTileClippingPolygonData(this, tile, surfaceTile, frameState);
|
|
539
617
|
const tileBoundingRegion = surfaceTile.tileBoundingRegion;
|
|
540
618
|
addDrawCommandsForTile(this, tile, frameState);
|
|
541
619
|
frameState.minimumTerrainHeight = Math.min(
|
|
@@ -555,7 +633,16 @@ class GlobeSurfaceTileProvider {
|
|
|
555
633
|
// Add the tile pick commands from the tiles drawn last frame.
|
|
556
634
|
const drawCommands = this._drawCommands;
|
|
557
635
|
for (let i = 0, length = this._usedDrawCommands; i < length; ++i) {
|
|
558
|
-
|
|
636
|
+
const command = drawCommands[i];
|
|
637
|
+
// Pooled commands move between tiles, so a cached pick command may still
|
|
638
|
+
// hold the vertex array of a tile that has since been released.
|
|
639
|
+
command.dirty = true;
|
|
640
|
+
command.derivedCommands.picking = undefined;
|
|
641
|
+
const logDepthCommand = command.derivedCommands.logDepth?.command;
|
|
642
|
+
if (defined(logDepthCommand)) {
|
|
643
|
+
logDepthCommand.derivedCommands.picking = undefined;
|
|
644
|
+
}
|
|
645
|
+
pushCommand(command, frameState);
|
|
559
646
|
}
|
|
560
647
|
}
|
|
561
648
|
|
|
@@ -609,6 +696,7 @@ class GlobeSurfaceTileProvider {
|
|
|
609
696
|
tile,
|
|
610
697
|
frameState,
|
|
611
698
|
this.terrainProvider,
|
|
699
|
+
this.vectorProvider,
|
|
612
700
|
this._imageryLayers,
|
|
613
701
|
this.quadtree,
|
|
614
702
|
this._vertexArraysToDestroy,
|
|
@@ -635,6 +723,7 @@ class GlobeSurfaceTileProvider {
|
|
|
635
723
|
tile,
|
|
636
724
|
frameState,
|
|
637
725
|
this.terrainProvider,
|
|
726
|
+
this.vectorProvider,
|
|
638
727
|
this._imageryLayers,
|
|
639
728
|
this.quadtree,
|
|
640
729
|
this._vertexArraysToDestroy,
|
|
@@ -1120,8 +1209,7 @@ class GlobeSurfaceTileProvider {
|
|
|
1120
1209
|
this._tileProvider = this._tileProvider && this._tileProvider.destroy();
|
|
1121
1210
|
this._clippingPlanes =
|
|
1122
1211
|
this._clippingPlanes && this._clippingPlanes.destroy();
|
|
1123
|
-
this._clippingPolygons =
|
|
1124
|
-
this._clippingPolygons && this._clippingPolygons.destroy();
|
|
1212
|
+
this._clippingPolygons = undefined;
|
|
1125
1213
|
this._removeLayerAddedListener =
|
|
1126
1214
|
this._removeLayerAddedListener && this._removeLayerAddedListener();
|
|
1127
1215
|
this._removeLayerRemovedListener =
|
|
@@ -1130,6 +1218,11 @@ class GlobeSurfaceTileProvider {
|
|
|
1130
1218
|
this._removeLayerMovedListener && this._removeLayerMovedListener();
|
|
1131
1219
|
this._removeLayerShownListener =
|
|
1132
1220
|
this._removeLayerShownListener && this._removeLayerShownListener();
|
|
1221
|
+
this._removeClippingPolygonAdded =
|
|
1222
|
+
this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
|
|
1223
|
+
this._removeClippingPolygonRemoved =
|
|
1224
|
+
this._removeClippingPolygonRemoved &&
|
|
1225
|
+
this._removeClippingPolygonRemoved();
|
|
1133
1226
|
|
|
1134
1227
|
return destroyObject(this);
|
|
1135
1228
|
}
|
|
@@ -1284,6 +1377,40 @@ class GlobeSurfaceTileProvider {
|
|
|
1284
1377
|
}
|
|
1285
1378
|
}
|
|
1286
1379
|
|
|
1380
|
+
const scratchLevelZeroRectangle = new Rectangle();
|
|
1381
|
+
|
|
1382
|
+
/**
|
|
1383
|
+
* Estimates the smallest screen size, in pixels, a rendered tile can have. Screen-space error is
|
|
1384
|
+
* the tile's geometric error projected to the screen, so the tile projects to that error scaled by
|
|
1385
|
+
* their ratio in meters, and refinement holds the error above half the maximum.
|
|
1386
|
+
*
|
|
1387
|
+
* @param {GlobeSurfaceTileProvider} tileProvider
|
|
1388
|
+
* @returns {number}
|
|
1389
|
+
* @private
|
|
1390
|
+
*/
|
|
1391
|
+
function minimumTileScreenPixels(tileProvider) {
|
|
1392
|
+
const geometricError = tileProvider.getLevelMaximumGeometricError(0);
|
|
1393
|
+
if (geometricError <= 0.0) {
|
|
1394
|
+
// No terrain provider yet.
|
|
1395
|
+
return tileProvider._vectorProvider.minimumTileScreenPixels;
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
const tilingScheme = tileProvider.tilingScheme;
|
|
1399
|
+
const rectangle = tilingScheme.tileXYToRectangle(
|
|
1400
|
+
0,
|
|
1401
|
+
0,
|
|
1402
|
+
0,
|
|
1403
|
+
scratchLevelZeroRectangle,
|
|
1404
|
+
);
|
|
1405
|
+
const tileWidth = rectangle.width * tilingScheme.ellipsoid.maximumRadius;
|
|
1406
|
+
|
|
1407
|
+
return (
|
|
1408
|
+
((tileWidth / geometricError) *
|
|
1409
|
+
tileProvider._quadtree.maximumScreenSpaceError) /
|
|
1410
|
+
2.0
|
|
1411
|
+
);
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1287
1414
|
function sortTileImageryByLayerIndex(a, b) {
|
|
1288
1415
|
let aImagery = a.loadingImagery;
|
|
1289
1416
|
if (!defined(aImagery)) {
|
|
@@ -1298,6 +1425,81 @@ function sortTileImageryByLayerIndex(a, b) {
|
|
|
1298
1425
|
return aImagery.imageryLayer._layerIndex - bImagery.imageryLayer._layerIndex;
|
|
1299
1426
|
}
|
|
1300
1427
|
|
|
1428
|
+
/**
|
|
1429
|
+
* Releases cached clipping polygon data on all loaded tiles so it is rebuilt
|
|
1430
|
+
* against the current collection, and clears the dirty flag.
|
|
1431
|
+
* @param {GlobeSurfaceTileProvider} tileProvider
|
|
1432
|
+
* @ignore
|
|
1433
|
+
*/
|
|
1434
|
+
function releaseClippingPolygonData(tileProvider) {
|
|
1435
|
+
tileProvider._quadtree.forEachLoadedTile(
|
|
1436
|
+
/** @param {QuadtreeTile} tile */
|
|
1437
|
+
function (tile) {
|
|
1438
|
+
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
1439
|
+
if (!defined(surfaceTile?.clippingPolygonData)) {
|
|
1440
|
+
return;
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
ClippingPolygonCollection.releaseRectangleData(
|
|
1444
|
+
surfaceTile.clippingPolygonData,
|
|
1445
|
+
);
|
|
1446
|
+
surfaceTile.clippingPolygonData = undefined;
|
|
1447
|
+
},
|
|
1448
|
+
);
|
|
1449
|
+
tileProvider._clippingPolygonsDirty = false;
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
/**
|
|
1453
|
+
* Builds clipping polygon data for a tile about to be rendered, unless it is
|
|
1454
|
+
* unclipped or its data was already built this frame.
|
|
1455
|
+
* @param {GlobeSurfaceTileProvider} tileProvider
|
|
1456
|
+
* @param {QuadtreeTile} tile
|
|
1457
|
+
* @param {GlobeSurfaceTile} surfaceTile
|
|
1458
|
+
* @param {FrameState} frameState
|
|
1459
|
+
* @ignore
|
|
1460
|
+
*/
|
|
1461
|
+
function updateTileClippingPolygonData(
|
|
1462
|
+
tileProvider,
|
|
1463
|
+
tile,
|
|
1464
|
+
surfaceTile,
|
|
1465
|
+
frameState,
|
|
1466
|
+
) {
|
|
1467
|
+
const clippingPolygons = tileProvider._clippingPolygons;
|
|
1468
|
+
if (
|
|
1469
|
+
!defined(clippingPolygons) ||
|
|
1470
|
+
!clippingPolygons.enabled ||
|
|
1471
|
+
!tile.isClipped ||
|
|
1472
|
+
defined(surfaceTile.clippingPolygonData)
|
|
1473
|
+
) {
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
surfaceTile.clippingPolygonData = clippingPolygons.requestRectangleData(
|
|
1478
|
+
tile.rectangle,
|
|
1479
|
+
frameState.context,
|
|
1480
|
+
);
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
/**
|
|
1484
|
+
* Determines whether a tile is wholly clipped away by inverse clipping. In
|
|
1485
|
+
* inverse mode a clipped tile with no polygon geometry lies entirely outside
|
|
1486
|
+
* every polygon, so all of it is clipped and it should not be drawn.
|
|
1487
|
+
* @param {GlobeSurfaceTileProvider} tileProvider
|
|
1488
|
+
* @param {GlobeSurfaceTile} surfaceTile
|
|
1489
|
+
* @returns {boolean}
|
|
1490
|
+
* @ignore
|
|
1491
|
+
*/
|
|
1492
|
+
function isTileClippedAwayByInversePolygons(tileProvider, surfaceTile) {
|
|
1493
|
+
const clippingPolygons = tileProvider._clippingPolygons;
|
|
1494
|
+
return (
|
|
1495
|
+
defined(clippingPolygons) &&
|
|
1496
|
+
clippingPolygons.enabled &&
|
|
1497
|
+
clippingPolygons.length > 0 &&
|
|
1498
|
+
clippingPolygons.inverse &&
|
|
1499
|
+
(surfaceTile.clippingPolygonData?.polygonRings.length ?? 0) === 0
|
|
1500
|
+
);
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1301
1503
|
/**
|
|
1302
1504
|
* @param {GlobeSurfaceTileProvider} surface
|
|
1303
1505
|
* @param {FrameState} frameState
|
|
@@ -1869,22 +2071,6 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1869
2071
|
style.alpha = this.properties.clippingPlanesEdgeWidth;
|
|
1870
2072
|
return style;
|
|
1871
2073
|
},
|
|
1872
|
-
u_clippingDistance: function () {
|
|
1873
|
-
const texture =
|
|
1874
|
-
globeSurfaceTileProvider._clippingPolygons.clippingTexture;
|
|
1875
|
-
if (defined(texture)) {
|
|
1876
|
-
return texture;
|
|
1877
|
-
}
|
|
1878
|
-
return frameState.context.defaultTexture;
|
|
1879
|
-
},
|
|
1880
|
-
u_clippingExtents: function () {
|
|
1881
|
-
// @ts-expect-error Missing types.
|
|
1882
|
-
const texture = globeSurfaceTileProvider._clippingPolygons.extentsTexture;
|
|
1883
|
-
if (defined(texture)) {
|
|
1884
|
-
return texture;
|
|
1885
|
-
}
|
|
1886
|
-
return frameState.context.defaultTexture;
|
|
1887
|
-
},
|
|
1888
2074
|
u_minimumBrightness: function () {
|
|
1889
2075
|
return frameState.fog.minimumBrightness;
|
|
1890
2076
|
},
|
|
@@ -1915,6 +2101,78 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1915
2101
|
u_vertexShadowDarkness: function () {
|
|
1916
2102
|
return this.properties.vertexShadowDarkness;
|
|
1917
2103
|
},
|
|
2104
|
+
u_vectorSegmentTexture: function () {
|
|
2105
|
+
return (
|
|
2106
|
+
this.properties.vectorSegmentTexture ??
|
|
2107
|
+
frameState.context.defaultTexture
|
|
2108
|
+
);
|
|
2109
|
+
},
|
|
2110
|
+
u_vectorWidthTexture: function () {
|
|
2111
|
+
return (
|
|
2112
|
+
this.properties.vectorWidthTexture ?? frameState.context.defaultTexture
|
|
2113
|
+
);
|
|
2114
|
+
},
|
|
2115
|
+
u_vectorColorTexture: function () {
|
|
2116
|
+
return (
|
|
2117
|
+
this.properties.vectorColorTexture ?? frameState.context.defaultTexture
|
|
2118
|
+
);
|
|
2119
|
+
},
|
|
2120
|
+
u_vectorPickColorTexture: function () {
|
|
2121
|
+
return (
|
|
2122
|
+
this.properties.vectorPickColorTexture ??
|
|
2123
|
+
frameState.context.defaultTexture
|
|
2124
|
+
);
|
|
2125
|
+
},
|
|
2126
|
+
u_vectorSegmentPrimitiveIndicesTexture: function () {
|
|
2127
|
+
return (
|
|
2128
|
+
this.properties.vectorSegmentPrimitiveIndicesTexture ??
|
|
2129
|
+
frameState.context.defaultTexture
|
|
2130
|
+
);
|
|
2131
|
+
},
|
|
2132
|
+
u_vectorGridCellIndicesTexture: function () {
|
|
2133
|
+
return (
|
|
2134
|
+
this.properties.vectorGridCellIndicesTexture ??
|
|
2135
|
+
frameState.context.defaultTexture
|
|
2136
|
+
);
|
|
2137
|
+
},
|
|
2138
|
+
u_vectorPolygonEdgeTexture: function () {
|
|
2139
|
+
return (
|
|
2140
|
+
this.properties.vectorPolygonEdgeTexture ??
|
|
2141
|
+
frameState.context.defaultTexture
|
|
2142
|
+
);
|
|
2143
|
+
},
|
|
2144
|
+
u_vectorPolygonEdgePrimitiveIndicesTexture: function () {
|
|
2145
|
+
return (
|
|
2146
|
+
this.properties.vectorPolygonEdgePrimitiveIndicesTexture ??
|
|
2147
|
+
frameState.context.defaultTexture
|
|
2148
|
+
);
|
|
2149
|
+
},
|
|
2150
|
+
u_vectorPolygonGridCellIndicesTexture: function () {
|
|
2151
|
+
return (
|
|
2152
|
+
this.properties.vectorPolygonGridCellIndicesTexture ??
|
|
2153
|
+
frameState.context.defaultTexture
|
|
2154
|
+
);
|
|
2155
|
+
},
|
|
2156
|
+
u_vectorMetersPerUv: function () {
|
|
2157
|
+
return this.properties.vectorMetersPerUv;
|
|
2158
|
+
},
|
|
2159
|
+
u_clippingEdgeTexture: function () {
|
|
2160
|
+
return (
|
|
2161
|
+
this.properties.clippingEdgeTexture ?? frameState.context.defaultTexture
|
|
2162
|
+
);
|
|
2163
|
+
},
|
|
2164
|
+
u_clippingEdgePrimitiveIndicesTexture: function () {
|
|
2165
|
+
return (
|
|
2166
|
+
this.properties.clippingEdgePrimitiveIndicesTexture ??
|
|
2167
|
+
frameState.context.defaultTexture
|
|
2168
|
+
);
|
|
2169
|
+
},
|
|
2170
|
+
u_clippingGridCellIndicesTexture: function () {
|
|
2171
|
+
return (
|
|
2172
|
+
this.properties.clippingGridCellIndicesTexture ??
|
|
2173
|
+
frameState.context.defaultTexture
|
|
2174
|
+
);
|
|
2175
|
+
},
|
|
1918
2176
|
|
|
1919
2177
|
// make a separate object so that changes to the properties are seen on
|
|
1920
2178
|
// derived commands that combine another uniform map with this one.
|
|
@@ -1977,6 +2235,21 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1977
2235
|
undergroundColorAlphaByDistance: new Cartesian4(),
|
|
1978
2236
|
lambertDiffuseMultiplier: 0.0,
|
|
1979
2237
|
vertexShadowDarkness: 0.0,
|
|
2238
|
+
|
|
2239
|
+
vectorSegmentTexture: undefined,
|
|
2240
|
+
vectorWidthTexture: undefined,
|
|
2241
|
+
vectorColorTexture: undefined,
|
|
2242
|
+
vectorPickColorTexture: undefined,
|
|
2243
|
+
vectorSegmentPrimitiveIndicesTexture: undefined,
|
|
2244
|
+
vectorGridCellIndicesTexture: undefined,
|
|
2245
|
+
vectorPolygonEdgeTexture: undefined,
|
|
2246
|
+
vectorPolygonEdgePrimitiveIndicesTexture: undefined,
|
|
2247
|
+
vectorPolygonGridCellIndicesTexture: undefined,
|
|
2248
|
+
vectorMetersPerUv: new Cartesian2(),
|
|
2249
|
+
|
|
2250
|
+
clippingEdgeTexture: undefined,
|
|
2251
|
+
clippingEdgePrimitiveIndicesTexture: undefined,
|
|
2252
|
+
clippingGridCellIndicesTexture: undefined,
|
|
1980
2253
|
},
|
|
1981
2254
|
};
|
|
1982
2255
|
|
|
@@ -2216,6 +2489,7 @@ const surfaceShaderSetOptionsScratch = {
|
|
|
2216
2489
|
colorToAlpha: undefined,
|
|
2217
2490
|
hasGeodeticSurfaceNormals: undefined,
|
|
2218
2491
|
hasExaggeration: undefined,
|
|
2492
|
+
vectorAntialias: undefined,
|
|
2219
2493
|
};
|
|
2220
2494
|
|
|
2221
2495
|
const defaultUndergroundColor = Color.TRANSPARENT;
|
|
@@ -2230,6 +2504,10 @@ const defaultUndergroundColorAlphaByDistance = new NearFarScalar();
|
|
|
2230
2504
|
function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
2231
2505
|
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
2232
2506
|
|
|
2507
|
+
if (isTileClippedAwayByInversePolygons(tileProvider, surfaceTile)) {
|
|
2508
|
+
return;
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2233
2511
|
if (!defined(surfaceTile.vertexArray)) {
|
|
2234
2512
|
if (surfaceTile.fill === undefined) {
|
|
2235
2513
|
// No fill was created for this tile, probably because this tile is not connected to
|
|
@@ -2349,8 +2627,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2349
2627
|
defined(tileProvider.clippingPolygons) &&
|
|
2350
2628
|
tileProvider.clippingPolygons.enabled
|
|
2351
2629
|
) {
|
|
2352
|
-
|
|
2353
|
-
|
|
2630
|
+
// Vector polygon clipping samples three textures: edges, per-edge
|
|
2631
|
+
// primitive indices, and the grid cell index header.
|
|
2632
|
+
maxTextures -= 3;
|
|
2354
2633
|
}
|
|
2355
2634
|
|
|
2356
2635
|
maxTextures -= globeTranslucencyState.numberOfTextureUniforms;
|
|
@@ -2469,6 +2748,8 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2469
2748
|
surfaceShaderSetOptions.clippedByBoundaries = surfaceTile.clippedByBoundaries;
|
|
2470
2749
|
surfaceShaderSetOptions.hasGeodeticSurfaceNormals = hasGeodeticSurfaceNormals;
|
|
2471
2750
|
surfaceShaderSetOptions.hasExaggeration = hasExaggeration;
|
|
2751
|
+
surfaceShaderSetOptions.vectorAntialias =
|
|
2752
|
+
tileProvider.vectorProvider.antialias;
|
|
2472
2753
|
|
|
2473
2754
|
const tileImageryCollection = surfaceTile.imagery;
|
|
2474
2755
|
let imageryIndex = 0;
|
|
@@ -2916,10 +3197,50 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2916
3197
|
uniformMapProperties.clippingPlanesEdgeWidth = clippingPlanes.edgeWidth;
|
|
2917
3198
|
}
|
|
2918
3199
|
|
|
3200
|
+
// update vector collections clamped to terrain
|
|
3201
|
+
const vectorData = surfaceTile.vectorData;
|
|
3202
|
+
if (defined(vectorData)) {
|
|
3203
|
+
uniformMapProperties.vectorSegmentTexture =
|
|
3204
|
+
vectorData.polylineSegmentTexture;
|
|
3205
|
+
uniformMapProperties.vectorWidthTexture = vectorData.widthTexture;
|
|
3206
|
+
uniformMapProperties.vectorColorTexture = vectorData.colorTexture;
|
|
3207
|
+
uniformMapProperties.vectorPickColorTexture = vectorData.pickColorTexture;
|
|
3208
|
+
uniformMapProperties.vectorSegmentPrimitiveIndicesTexture =
|
|
3209
|
+
vectorData.polylineSegmentPrimitiveIndicesTexture;
|
|
3210
|
+
uniformMapProperties.vectorGridCellIndicesTexture =
|
|
3211
|
+
vectorData.polylineGridCellIndicesTexture;
|
|
3212
|
+
uniformMapProperties.vectorPolygonEdgeTexture =
|
|
3213
|
+
vectorData.polygonEdgeTexture;
|
|
3214
|
+
uniformMapProperties.vectorPolygonEdgePrimitiveIndicesTexture =
|
|
3215
|
+
vectorData.polygonEdgePrimitiveIndicesTexture;
|
|
3216
|
+
uniformMapProperties.vectorPolygonGridCellIndicesTexture =
|
|
3217
|
+
vectorData.polygonGridCellIndicesTexture;
|
|
3218
|
+
Cartesian2.clone(
|
|
3219
|
+
vectorData.metersPerUv,
|
|
3220
|
+
uniformMapProperties.vectorMetersPerUv,
|
|
3221
|
+
);
|
|
3222
|
+
}
|
|
3223
|
+
|
|
3224
|
+
const clippingPolygonData = surfaceTile.clippingPolygonData;
|
|
3225
|
+
if (defined(clippingPolygonData)) {
|
|
3226
|
+
uniformMapProperties.clippingEdgeTexture =
|
|
3227
|
+
clippingPolygonData.polygonEdgeTexture;
|
|
3228
|
+
uniformMapProperties.clippingEdgePrimitiveIndicesTexture =
|
|
3229
|
+
clippingPolygonData.polygonEdgePrimitiveIndicesTexture;
|
|
3230
|
+
uniformMapProperties.clippingGridCellIndicesTexture =
|
|
3231
|
+
clippingPolygonData.polygonGridCellIndicesTexture;
|
|
3232
|
+
}
|
|
3233
|
+
|
|
2919
3234
|
// update clipping polygons
|
|
2920
3235
|
const clippingPolygons = tileProvider._clippingPolygons;
|
|
3236
|
+
const hasClippingPolygonGeometry =
|
|
3237
|
+
(clippingPolygonData?.polygonRings.length ?? 0) > 0;
|
|
2921
3238
|
const clippingPolygonsEnabled =
|
|
2922
|
-
defined(clippingPolygons) &&
|
|
3239
|
+
defined(clippingPolygons) &&
|
|
3240
|
+
clippingPolygons.enabled &&
|
|
3241
|
+
clippingPolygons.length > 0 &&
|
|
3242
|
+
tile.isClipped &&
|
|
3243
|
+
hasClippingPolygonGeometry;
|
|
2923
3244
|
|
|
2924
3245
|
surfaceShaderSetOptions.numberOfDayTextures = numberOfDayTextures;
|
|
2925
3246
|
surfaceShaderSetOptions.applyBrightness = applyBrightness;
|
|
@@ -2950,6 +3271,10 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2950
3271
|
command.shaderProgram = tileProvider._surfaceShaderSet.getShaderProgram(
|
|
2951
3272
|
surfaceShaderSetOptions,
|
|
2952
3273
|
);
|
|
3274
|
+
// Draped vectors are picked through the surface; zero elsewhere keeps the globe unpickable.
|
|
3275
|
+
command.pickId = surfaceTile.vectorData?.show
|
|
3276
|
+
? "vectorPickColorOver(vec4(0.0))"
|
|
3277
|
+
: undefined;
|
|
2953
3278
|
command.castShadows = castShadows;
|
|
2954
3279
|
command.receiveShadows = receiveShadows;
|
|
2955
3280
|
command.renderState = renderState;
|
|
@@ -2969,7 +3294,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2969
3294
|
}
|
|
2970
3295
|
}
|
|
2971
3296
|
|
|
2972
|
-
|
|
3297
|
+
const boundingVolume = command.boundingVolume;
|
|
2973
3298
|
const orientedBoundingBox = command.orientedBoundingBox;
|
|
2974
3299
|
|
|
2975
3300
|
if (frameState.mode !== SceneMode.SCENE3D) {
|
|
@@ -2988,7 +3313,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2988
3313
|
);
|
|
2989
3314
|
|
|
2990
3315
|
if (frameState.mode === SceneMode.MORPHING) {
|
|
2991
|
-
|
|
3316
|
+
BoundingSphere.union(
|
|
2992
3317
|
// @ts-expect-error Missing types.
|
|
2993
3318
|
tileBoundingRegion.boundingSphere,
|
|
2994
3319
|
boundingVolume,
|