@cesium/engine 26.1.0 → 26.2.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 +586 -480
- package/Build/Workers/chunk-27FWRTJI.js +454 -0
- package/Build/Workers/chunk-2H5264K7.js +1284 -0
- package/Build/Workers/chunk-2H73KDBM.js +511 -0
- package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
- package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
- package/Build/Workers/chunk-2ZKH2QZB.js +387 -0
- package/Build/Workers/chunk-36NI5E6W.js +3820 -0
- package/Build/Workers/chunk-37SW7SYS.js +778 -0
- package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
- package/Build/Workers/chunk-3LB4UVPU.js +387 -0
- package/Build/Workers/chunk-3PONLKEL.js +778 -0
- package/Build/Workers/chunk-3PSS3T43.js +102 -0
- package/Build/Workers/chunk-3QR662HH.js +3820 -0
- package/Build/Workers/chunk-3SX2WYSO.js +973 -0
- package/Build/Workers/chunk-3UDN6LYX.js +476 -0
- package/Build/Workers/chunk-47MCBSXI.js +9237 -0
- package/Build/Workers/chunk-4E626OCE.js +1067 -0
- package/Build/Workers/chunk-4NW2MJKH.js +455 -0
- package/Build/Workers/chunk-52YK5BSN.js +198 -0
- package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
- package/Build/Workers/chunk-5YPQBFRD.js +519 -0
- package/Build/Workers/chunk-6FHT43QR.js +140 -0
- package/Build/Workers/chunk-6FZDPMTO.js +455 -0
- package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
- package/Build/Workers/chunk-7A2OGDHT.js +305 -0
- package/Build/Workers/chunk-7CGEQUM2.js +305 -0
- package/Build/Workers/chunk-7I325HV6.js +1344 -0
- package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
- package/Build/Workers/chunk-7TKLTCZW.js +219 -0
- package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
- package/Build/Workers/chunk-7W6DUHAB.js +693 -0
- package/Build/Workers/chunk-7XM5JK5F.js +162 -0
- package/Build/Workers/chunk-7YG3ND3P.js +454 -0
- package/Build/Workers/chunk-A62YI6S6.js +305 -0
- package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
- package/Build/Workers/chunk-ACTVJHSP.js +519 -0
- package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
- package/Build/Workers/chunk-AF7DTMJ7.js +398 -0
- package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
- package/Build/Workers/chunk-ARZICEEP.js +301 -0
- package/Build/Workers/chunk-B3QHNA4A.js +147 -0
- package/Build/Workers/chunk-BKPQFCXH.js +511 -0
- package/Build/Workers/chunk-BSPCI2LO.js +959 -0
- package/Build/Workers/chunk-BUJWSX5S.js +301 -0
- package/Build/Workers/chunk-C7QDUNI3.js +138 -0
- package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
- package/Build/Workers/chunk-CQNFIAZU.js +56 -0
- package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
- package/Build/Workers/chunk-CUTRKXUQ.js +288 -0
- package/Build/Workers/chunk-D6AY775A.js +3201 -0
- package/Build/Workers/chunk-DSGLDRTI.js +278 -0
- package/Build/Workers/chunk-DZBQUULR.js +138 -0
- package/Build/Workers/chunk-DZUFEE4L.js +140 -0
- package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
- package/Build/Workers/chunk-EB3Y5P3A.js +368 -0
- package/Build/Workers/chunk-ELE6SC2C.js +837 -0
- package/Build/Workers/chunk-EOWDZN5S.js +288 -0
- package/Build/Workers/chunk-ERKUET22.js +3201 -0
- package/Build/Workers/chunk-EZGQPOIG.js +162 -0
- package/Build/Workers/chunk-F2IMBMZY.js +241 -0
- package/Build/Workers/chunk-F4CSNRZO.js +219 -0
- package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
- package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
- package/Build/Workers/chunk-FQ42MT7M.js +58 -0
- package/Build/Workers/chunk-FU4BGABC.js +398 -0
- package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
- package/Build/Workers/chunk-GGNWQWSB.js +301 -0
- package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
- package/Build/Workers/chunk-GNKXEN4C.js +682 -0
- package/Build/Workers/chunk-GVA7XQI2.js +368 -0
- package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
- package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
- package/Build/Workers/chunk-H2WCFXLP.js +241 -0
- package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
- package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
- package/Build/Workers/chunk-HT6FASOT.js +973 -0
- package/Build/Workers/chunk-I74ZH5LK.js +959 -0
- package/Build/Workers/chunk-IDVHUDZT.js +352 -0
- package/Build/Workers/chunk-IJZJMIUY.js +789 -0
- package/Build/Workers/chunk-IMBVP57H.js +44 -0
- package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
- package/Build/Workers/chunk-IUIFLOYO.js +44 -0
- package/Build/Workers/chunk-J73T2VOY.js +171 -0
- package/Build/Workers/chunk-JALGQYDY.js +288 -0
- package/Build/Workers/chunk-JXYLJCTC.js +124 -0
- package/Build/Workers/chunk-K27QOAW6.js +97 -0
- package/Build/Workers/chunk-KMV25A63.js +789 -0
- package/Build/Workers/chunk-KP5QD7WU.js +693 -0
- package/Build/Workers/chunk-KZWFWJML.js +2719 -0
- package/Build/Workers/chunk-LCXRRALY.js +387 -0
- package/Build/Workers/chunk-LDRQSYBN.js +1800 -0
- package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
- package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
- package/Build/Workers/chunk-MAAHFYPC.js +198 -0
- package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
- package/Build/Workers/chunk-MEENMEAH.js +198 -0
- package/Build/Workers/chunk-NAWU5RF4.js +162 -0
- package/Build/Workers/chunk-NCL22ZUX.js +56 -0
- package/Build/Workers/chunk-NEFDMMLY.js +241 -0
- package/Build/Workers/chunk-NJVBJG63.js +124 -0
- package/Build/Workers/chunk-NLLCQBX3.js +73 -0
- package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
- package/Build/Workers/chunk-NXGQBQWE.js +837 -0
- package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
- package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
- package/Build/Workers/chunk-OA6MYL2C.js +837 -0
- package/Build/Workers/chunk-OHP4ELS7.js +198 -0
- package/Build/Workers/chunk-OZGPS7FB.js +138 -0
- package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
- package/Build/Workers/chunk-PD4GK4EM.js +57 -0
- package/Build/Workers/chunk-PEDU33QG.js +2342 -0
- package/Build/Workers/chunk-PRWUMCXF.js +682 -0
- package/Build/Workers/chunk-PVTSNNVI.js +288 -0
- package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
- package/Build/Workers/chunk-QHPZH22L.js +241 -0
- package/Build/Workers/chunk-QIZDWZK6.js +301 -0
- package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
- package/Build/Workers/chunk-R4K7EHOU.js +171 -0
- package/Build/Workers/chunk-R7JGHDD6.js +789 -0
- package/Build/Workers/chunk-RASQEYD4.js +1483 -0
- package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
- package/Build/Workers/chunk-RYSQVJR6.js +398 -0
- package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
- package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
- package/Build/Workers/chunk-SDFHDNS4.js +147 -0
- package/Build/Workers/chunk-SJYSIOEM.js +414 -0
- package/Build/Workers/chunk-SMTGMFBL.js +97 -0
- package/Build/Workers/chunk-SXSP3JHS.js +38 -0
- package/Build/Workers/chunk-TN35HP5B.js +1067 -0
- package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
- package/Build/Workers/chunk-TOAF47AQ.js +102 -0
- package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
- package/Build/Workers/chunk-TSDSILQB.js +124 -0
- package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
- package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
- package/Build/Workers/chunk-UF46SZEZ.js +789 -0
- package/Build/Workers/chunk-UNRTMCET.js +398 -0
- package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
- package/Build/Workers/chunk-V46YGZE6.js +352 -0
- package/Build/Workers/chunk-VDGOCROW.js +57 -0
- package/Build/Workers/chunk-VFWSSBPT.js +511 -0
- package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
- package/Build/Workers/chunk-VXWHPYQM.js +837 -0
- package/Build/Workers/chunk-VXYUBRSB.js +219 -0
- package/Build/Workers/chunk-VZLDLEWI.js +387 -0
- package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
- package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
- package/Build/Workers/chunk-WPRUWXGV.js +693 -0
- package/Build/Workers/chunk-WTO2ERBP.js +414 -0
- package/Build/Workers/chunk-WVHMDVG4.js +959 -0
- package/Build/Workers/chunk-XCBZVTIV.js +280 -0
- package/Build/Workers/chunk-XGA23TAX.js +73 -0
- package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
- package/Build/Workers/chunk-XQH66YJC.js +147 -0
- package/Build/Workers/chunk-XTA7BXJG.js +682 -0
- package/Build/Workers/chunk-XTIDAFRS.js +476 -0
- package/Build/Workers/chunk-XUEDWBUD.js +682 -0
- package/Build/Workers/chunk-XYFLRH3H.js +124 -0
- package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
- package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
- package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
- package/Build/Workers/chunk-YEYOSTJX.js +219 -0
- package/Build/Workers/chunk-YGFVAGYF.js +630 -0
- package/Build/Workers/chunk-YIIACKQO.js +368 -0
- package/Build/Workers/chunk-YJGSP6PE.js +511 -0
- package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
- package/Build/Workers/chunk-Z66EVE2A.js +44 -0
- package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
- package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
- package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
- package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
- package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
- package/Build/Workers/combineGeometry.js +16 -16
- package/Build/Workers/createBoxGeometry.js +10 -10
- package/Build/Workers/createBoxOutlineGeometry.js +8 -8
- package/Build/Workers/createCircleGeometry.js +18 -18
- package/Build/Workers/createCircleOutlineGeometry.js +11 -11
- package/Build/Workers/createCoplanarPolygonGeometry.js +27 -27
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +23 -23
- package/Build/Workers/createCorridorGeometry.js +23 -25
- package/Build/Workers/createCorridorOutlineGeometry.js +21 -23
- package/Build/Workers/createCylinderGeometry.js +12 -12
- package/Build/Workers/createCylinderOutlineGeometry.js +10 -10
- package/Build/Workers/createEllipseGeometry.js +18 -18
- package/Build/Workers/createEllipseOutlineGeometry.js +11 -11
- package/Build/Workers/createEllipsoidGeometry.js +11 -11
- package/Build/Workers/createEllipsoidOutlineGeometry.js +10 -10
- package/Build/Workers/createFrustumGeometry.js +11 -11
- package/Build/Workers/createFrustumOutlineGeometry.js +11 -11
- package/Build/Workers/createGeometry.js +16 -16
- package/Build/Workers/createGroundPolylineGeometry.js +16 -16
- package/Build/Workers/createPlaneGeometry.js +9 -9
- package/Build/Workers/createPlaneOutlineGeometry.js +8 -8
- package/Build/Workers/createPolygonGeometry.js +25 -25
- package/Build/Workers/createPolygonOutlineGeometry.js +22 -22
- package/Build/Workers/createPolylineGeometry.js +18 -18
- package/Build/Workers/createPolylineVolumeGeometry.js +24 -24
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +20 -20
- package/Build/Workers/createRectangleGeometry.js +19 -19
- package/Build/Workers/createRectangleOutlineGeometry.js +13 -13
- package/Build/Workers/createSimplePolylineGeometry.js +16 -16
- package/Build/Workers/createSphereGeometry.js +11 -11
- package/Build/Workers/createSphereOutlineGeometry.js +10 -10
- package/Build/Workers/createVectorTileClampedPolylines.js +7 -7
- package/Build/Workers/createVectorTileGeometries.js +15 -15
- package/Build/Workers/createVectorTilePoints.js +6 -6
- package/Build/Workers/createVectorTilePolygons.js +14 -14
- package/Build/Workers/createVectorTilePolylines.js +7 -7
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +17 -17
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +14 -14
- package/Build/Workers/createVerticesFromHeightmap.js +14 -14
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +12 -12
- package/Build/Workers/createWallGeometry.js +17 -17
- package/Build/Workers/createWallOutlineGeometry.js +17 -17
- package/Build/Workers/decodeDraco.js +2 -2
- package/Build/Workers/decodeI3S.js +5 -5
- package/Build/Workers/incrementallyBuildTerrainPicker.js +4 -4
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +14 -14
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +17 -17
- 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/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/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 +1117 -0
- package/Source/Core/VectorProvider.js +429 -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 +23 -0
- 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/Texture.js +11 -0
- package/Source/Renderer/UniformState.js +7 -0
- 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/BufferPrimitiveCollection.js +27 -5
- package/Source/Scene/Camera.js +71 -5
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/ClippingPlaneCollection.js +2 -2
- 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/DerivedCommand.js +94 -0
- package/Source/Scene/EdgeFramebuffer.js +1 -5
- package/Source/Scene/FrameState.js +17 -0
- package/Source/Scene/Globe.js +20 -0
- package/Source/Scene/GlobeDepth.js +27 -1
- package/Source/Scene/GlobeSurfaceShaderSet.js +12 -2
- package/Source/Scene/GlobeSurfaceTile.js +48 -10
- package/Source/Scene/GlobeSurfaceTileProvider.js +121 -3
- package/Source/Scene/GltfLoader.js +32 -3
- package/Source/Scene/GltfSpzLoader.js +1 -1
- package/Source/Scene/GltfVertexBufferLoader.js +6 -3
- 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 +2 -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 +8 -10
- package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
- package/Source/Scene/Model/ModelDrawCommand.js +160 -16
- package/Source/Scene/Model/ModelDrawCommands.js +4 -0
- package/Source/Scene/Model/ModelSceneGraph.js +21 -0
- package/Source/Scene/Model/PickingPipelineStage.js +29 -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 +4 -2
- package/Source/Scene/ResourceCache.js +7 -4
- package/Source/Scene/ResourceCacheKey.js +16 -13
- package/Source/Scene/Scene.js +202 -5
- 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 +184 -0
- package/Source/Scene/TerrainFillMesh.js +3 -2
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
- package/Source/Scene/Vector3DTileContent.js +2 -3
- package/Source/Scene/VectorGltf3DTileContent.js +23 -3
- package/Source/Scene/View.js +10 -8
- package/Source/Scene/VoxelTraversal.js +1 -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 +1 -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 +2 -0
- package/Source/Shaders/GlobeFS.glsl +10 -5
- package/Source/Shaders/GlobeFS.js +9 -5
- 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/ModelFS.glsl +105 -0
- package/Source/Shaders/Model/ModelFS.js +105 -0
- package/Source/Shaders/VectorCommon.glsl +178 -0
- package/Source/Shaders/VectorCommon.js +75 -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 +770 -10
- package/index.js +177 -160
- package/package.json +1 -1
package/Source/Scene/Globe.js
CHANGED
|
@@ -28,6 +28,7 @@ import QuadtreePrimitive from "./QuadtreePrimitive.js";
|
|
|
28
28
|
import SceneMode from "./SceneMode.js";
|
|
29
29
|
import ShadowMode from "./ShadowMode.js";
|
|
30
30
|
import CesiumMath from "../Core/Math.js";
|
|
31
|
+
import VectorProvider from "../Core/VectorProvider.js";
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* The globe rendered in the scene, including its terrain ({@link Globe#terrainProvider})
|
|
@@ -45,6 +46,9 @@ function Globe(ellipsoid) {
|
|
|
45
46
|
ellipsoid: ellipsoid,
|
|
46
47
|
});
|
|
47
48
|
const imageryLayerCollection = new ImageryLayerCollection();
|
|
49
|
+
const vectorProvider = new VectorProvider({
|
|
50
|
+
tilingScheme: terrainProvider.tilingScheme,
|
|
51
|
+
});
|
|
48
52
|
|
|
49
53
|
this._ellipsoid = ellipsoid;
|
|
50
54
|
this._imageryLayerCollection = imageryLayerCollection;
|
|
@@ -57,12 +61,15 @@ function Globe(ellipsoid) {
|
|
|
57
61
|
terrainProvider: terrainProvider,
|
|
58
62
|
imageryLayers: imageryLayerCollection,
|
|
59
63
|
surfaceShaderSet: this._surfaceShaderSet,
|
|
64
|
+
vectorProvider,
|
|
60
65
|
}),
|
|
61
66
|
});
|
|
62
67
|
|
|
63
68
|
this._terrainProvider = terrainProvider;
|
|
64
69
|
this._terrainProviderChanged = new Event();
|
|
65
70
|
|
|
71
|
+
this._vectorProvider = vectorProvider;
|
|
72
|
+
|
|
66
73
|
this._undergroundColor = Color.clone(Color.BLACK);
|
|
67
74
|
this._undergroundColorAlphaByDistance = new NearFarScalar(
|
|
68
75
|
ellipsoid.maximumRadius / 1000.0,
|
|
@@ -515,6 +522,9 @@ Object.defineProperties(Globe.prototype, {
|
|
|
515
522
|
set: function (value) {
|
|
516
523
|
if (value !== this._terrainProvider) {
|
|
517
524
|
this._terrainProvider = value;
|
|
525
|
+
if (defined(value)) {
|
|
526
|
+
this._vectorProvider.tilingScheme = value.tilingScheme;
|
|
527
|
+
}
|
|
518
528
|
this._terrainProviderChanged.raiseEvent(value);
|
|
519
529
|
if (defined(this._material)) {
|
|
520
530
|
makeShadersDirty(this);
|
|
@@ -534,6 +544,16 @@ Object.defineProperties(Globe.prototype, {
|
|
|
534
544
|
return this._terrainProviderChanged;
|
|
535
545
|
},
|
|
536
546
|
},
|
|
547
|
+
/**
|
|
548
|
+
* @memberof Globe.prototype
|
|
549
|
+
* @type {VectorProvider}
|
|
550
|
+
* @ignore
|
|
551
|
+
*/
|
|
552
|
+
vectorProvider: {
|
|
553
|
+
get: function () {
|
|
554
|
+
return this._vectorProvider;
|
|
555
|
+
},
|
|
556
|
+
},
|
|
537
557
|
/**
|
|
538
558
|
* Gets an event that's raised when the length of the tile load queue has changed since the last render frame. When the load queue is empty,
|
|
539
559
|
* all terrain and imagery for the current view have been loaded. The event passes the new length of the tile load queue.
|
|
@@ -2,6 +2,7 @@ import BoundingRectangle from "../Core/BoundingRectangle.js";
|
|
|
2
2
|
import Color from "../Core/Color.js";
|
|
3
3
|
import defined from "../Core/defined.js";
|
|
4
4
|
import destroyObject from "../Core/destroyObject.js";
|
|
5
|
+
import PixelFormat from "../Core/PixelFormat.js";
|
|
5
6
|
import ClearCommand from "../Renderer/ClearCommand.js";
|
|
6
7
|
import FramebufferManager from "../Renderer/FramebufferManager.js";
|
|
7
8
|
import PixelDatatype from "../Renderer/PixelDatatype.js";
|
|
@@ -21,6 +22,7 @@ import StencilOperation from "./StencilOperation.js";
|
|
|
21
22
|
*/
|
|
22
23
|
function GlobeDepth() {
|
|
23
24
|
this._picking = false;
|
|
25
|
+
this._snapping = false;
|
|
24
26
|
this._numSamples = 1;
|
|
25
27
|
this._tempCopyDepthTexture = undefined;
|
|
26
28
|
|
|
@@ -28,6 +30,16 @@ function GlobeDepth() {
|
|
|
28
30
|
depthStencil: true,
|
|
29
31
|
supportsDepthTexture: true,
|
|
30
32
|
});
|
|
33
|
+
// Float twin of the pick color framebuffer, used during a snapping pass
|
|
34
|
+
// (see Scene#snap). RGBA32F so each pixel can carry the snap payload
|
|
35
|
+
// (uint32 pick ID, isEdge flag, eye-space depth). GPU resources are only
|
|
36
|
+
// allocated on first use (FramebufferManager allocates lazily in update).
|
|
37
|
+
this._snapColorFramebuffer = new FramebufferManager({
|
|
38
|
+
depthStencil: true,
|
|
39
|
+
supportsDepthTexture: true,
|
|
40
|
+
pixelDatatype: PixelDatatype.FLOAT,
|
|
41
|
+
pixelFormat: PixelFormat.RGBA,
|
|
42
|
+
});
|
|
31
43
|
this._outputFramebuffer = new FramebufferManager({
|
|
32
44
|
depthStencil: true,
|
|
33
45
|
supportsDepthTexture: true,
|
|
@@ -61,6 +73,9 @@ function GlobeDepth() {
|
|
|
61
73
|
Object.defineProperties(GlobeDepth.prototype, {
|
|
62
74
|
colorFramebufferManager: {
|
|
63
75
|
get: function () {
|
|
76
|
+
if (this._snapping) {
|
|
77
|
+
return this._snapColorFramebuffer;
|
|
78
|
+
}
|
|
64
79
|
return this._picking
|
|
65
80
|
? this._pickColorFramebuffer
|
|
66
81
|
: this._outputFramebuffer;
|
|
@@ -84,6 +99,14 @@ Object.defineProperties(GlobeDepth.prototype, {
|
|
|
84
99
|
this._picking = value;
|
|
85
100
|
},
|
|
86
101
|
},
|
|
102
|
+
snapping: {
|
|
103
|
+
get: function () {
|
|
104
|
+
return this._snapping;
|
|
105
|
+
},
|
|
106
|
+
set: function (value) {
|
|
107
|
+
this._snapping = value;
|
|
108
|
+
},
|
|
109
|
+
},
|
|
87
110
|
});
|
|
88
111
|
|
|
89
112
|
function updateCopyCommands(globeDepth, context, width, height, passState) {
|
|
@@ -260,7 +283,9 @@ GlobeDepth.prototype.update = function (
|
|
|
260
283
|
: PixelDatatype.FLOAT
|
|
261
284
|
: PixelDatatype.UNSIGNED_BYTE;
|
|
262
285
|
this._numSamples = numSamples;
|
|
263
|
-
if (this.
|
|
286
|
+
if (this.snapping) {
|
|
287
|
+
this._snapColorFramebuffer.update(context, width, height);
|
|
288
|
+
} else if (this.picking) {
|
|
264
289
|
this._pickColorFramebuffer.update(context, width, height);
|
|
265
290
|
} else {
|
|
266
291
|
this._outputFramebuffer.update(
|
|
@@ -377,6 +402,7 @@ GlobeDepth.prototype.isDestroyed = function () {
|
|
|
377
402
|
|
|
378
403
|
GlobeDepth.prototype.destroy = function () {
|
|
379
404
|
this._pickColorFramebuffer.destroy();
|
|
405
|
+
this._snapColorFramebuffer.destroy();
|
|
380
406
|
this._outputFramebuffer.destroy();
|
|
381
407
|
this._copyDepthFramebuffer.destroy();
|
|
382
408
|
this._tempCopyDepthFramebuffer.destroy();
|
|
@@ -4,6 +4,7 @@ import defined from "../Core/defined.js";
|
|
|
4
4
|
import destroyObject from "../Core/destroyObject.js";
|
|
5
5
|
import TerrainQuantization from "../Core/TerrainQuantization.js";
|
|
6
6
|
import ShaderProgram from "../Renderer/ShaderProgram.js";
|
|
7
|
+
import VectorCommon from "../Shaders/VectorCommon.js";
|
|
7
8
|
import getClippingFunction from "./getClippingFunction.js";
|
|
8
9
|
import SceneMode from "./SceneMode.js";
|
|
9
10
|
|
|
@@ -81,7 +82,7 @@ class GlobeSurfaceShader {
|
|
|
81
82
|
* @property {boolean} [hasExaggeration]
|
|
82
83
|
* @property {boolean} [showUndergroundColor]
|
|
83
84
|
* @property {boolean} [translucent]
|
|
84
|
-
* @
|
|
85
|
+
* @private
|
|
85
86
|
*/
|
|
86
87
|
|
|
87
88
|
/**
|
|
@@ -138,6 +139,8 @@ class GlobeSurfaceShaderSet {
|
|
|
138
139
|
const hasExaggeration = options.hasExaggeration;
|
|
139
140
|
const showUndergroundColor = options.showUndergroundColor;
|
|
140
141
|
const translucent = options.translucent;
|
|
142
|
+
const vectorData = surfaceTile.vectorData;
|
|
143
|
+
const hasVectorLayer = vectorData?.show;
|
|
141
144
|
|
|
142
145
|
let quantization = 0;
|
|
143
146
|
let quantizationDefine = "";
|
|
@@ -201,7 +204,8 @@ class GlobeSurfaceShaderSet {
|
|
|
201
204
|
(+showUndergroundColor << 30) |
|
|
202
205
|
(+translucent << 31)) >>>
|
|
203
206
|
0) +
|
|
204
|
-
(applyDayNightAlpha ? 0x100000000 : 0)
|
|
207
|
+
(applyDayNightAlpha ? 0x100000000 : 0) +
|
|
208
|
+
(hasVectorLayer ? 0x200000000 : 0);
|
|
205
209
|
|
|
206
210
|
let currentClippingShaderState = 0;
|
|
207
211
|
// @ts-expect-error Missing types.
|
|
@@ -392,6 +396,12 @@ class GlobeSurfaceShaderSet {
|
|
|
392
396
|
vs.defines.push("EXAGGERATION");
|
|
393
397
|
}
|
|
394
398
|
|
|
399
|
+
if (hasVectorLayer) {
|
|
400
|
+
vs.defines.push("HAS_VECTOR_LAYER");
|
|
401
|
+
fs.defines.push("HAS_VECTOR_LAYER");
|
|
402
|
+
fs.sources.unshift(VectorCommon); // before GlobeFS.
|
|
403
|
+
}
|
|
404
|
+
|
|
395
405
|
let computeDayColor =
|
|
396
406
|
"\
|
|
397
407
|
vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend)\n\
|
|
@@ -9,6 +9,7 @@ import RequestState from "../Core/RequestState.js";
|
|
|
9
9
|
import RequestType from "../Core/RequestType.js";
|
|
10
10
|
import TerrainEncoding from "../Core/TerrainEncoding.js";
|
|
11
11
|
import TileProviderError from "../Core/TileProviderError.js";
|
|
12
|
+
import VectorPipeline from "../Core/VectorPipeline.js";
|
|
12
13
|
import Buffer from "../Renderer/Buffer.js";
|
|
13
14
|
import BufferUsage from "../Renderer/BufferUsage.js";
|
|
14
15
|
import PixelDatatype from "../Renderer/PixelDatatype.js";
|
|
@@ -36,6 +37,7 @@ import TerrainState from "./TerrainState.js";
|
|
|
36
37
|
/** @import TerrainProvider from "../Core/TerrainProvider.js"; */
|
|
37
38
|
/** @import TileBoundingRegion from "./TileBoundingRegion.js"; */
|
|
38
39
|
/** @import TileImagery from "./TileImagery.js"; */
|
|
40
|
+
/** @import VectorProvider, { VectorTileData } from "../Core/VectorProvider.js"; */
|
|
39
41
|
|
|
40
42
|
/**
|
|
41
43
|
* Contains additional information about a {@link QuadtreeTile} of the globe's surface, and
|
|
@@ -62,6 +64,9 @@ class GlobeSurfaceTile {
|
|
|
62
64
|
/** @type {HeightmapTerrainData} */
|
|
63
65
|
this.terrainData = undefined;
|
|
64
66
|
|
|
67
|
+
/** @type {VectorTileData} */
|
|
68
|
+
this.vectorData = undefined;
|
|
69
|
+
|
|
65
70
|
/** @type {VertexArray} */
|
|
66
71
|
this.vertexArray = undefined;
|
|
67
72
|
|
|
@@ -159,6 +164,11 @@ class GlobeSurfaceTile {
|
|
|
159
164
|
this.waterMaskTexture = undefined;
|
|
160
165
|
}
|
|
161
166
|
|
|
167
|
+
if (defined(this.vectorData)) {
|
|
168
|
+
VectorPipeline.freeResources(this.vectorData);
|
|
169
|
+
this.vectorData = undefined;
|
|
170
|
+
}
|
|
171
|
+
|
|
162
172
|
this.terrainData = undefined;
|
|
163
173
|
|
|
164
174
|
this.terrainState = TerrainState.UNLOADED;
|
|
@@ -184,26 +194,37 @@ class GlobeSurfaceTile {
|
|
|
184
194
|
/**
|
|
185
195
|
* @param {QuadtreeTile} tile
|
|
186
196
|
* @param {TerrainProvider} terrainProvider
|
|
197
|
+
* @param {VectorProvider} vectorProvider
|
|
187
198
|
* @param {ImageryLayerCollection} imageryLayerCollection
|
|
188
199
|
*/
|
|
189
|
-
static initialize(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
static initialize(
|
|
201
|
+
tile,
|
|
202
|
+
terrainProvider,
|
|
203
|
+
vectorProvider,
|
|
204
|
+
imageryLayerCollection,
|
|
205
|
+
) {
|
|
206
|
+
if (!defined(tile.data)) {
|
|
207
|
+
tile.data = new GlobeSurfaceTile();
|
|
193
208
|
}
|
|
194
209
|
|
|
195
210
|
if (tile.state === QuadtreeTileLoadState.START) {
|
|
196
|
-
prepareNewTile(
|
|
211
|
+
prepareNewTile(
|
|
212
|
+
tile,
|
|
213
|
+
terrainProvider,
|
|
214
|
+
vectorProvider,
|
|
215
|
+
imageryLayerCollection,
|
|
216
|
+
);
|
|
197
217
|
tile.state = QuadtreeTileLoadState.LOADING;
|
|
198
218
|
}
|
|
199
219
|
}
|
|
200
220
|
|
|
201
221
|
/**
|
|
202
|
-
* @param {
|
|
222
|
+
* @param {QuadtreeTile} tile
|
|
203
223
|
* @param {FrameState} frameState
|
|
204
224
|
* @param {TerrainProvider} terrainProvider
|
|
225
|
+
* @param {VectorProvider} vectorProvider
|
|
205
226
|
* @param {ImageryLayerCollection} imageryLayerCollection
|
|
206
|
-
* @param {
|
|
227
|
+
* @param {QuadtreePrimitive} quadtree
|
|
207
228
|
* @param {*} vertexArraysToDestroy
|
|
208
229
|
* @param {*} terrainOnly
|
|
209
230
|
*/
|
|
@@ -211,12 +232,18 @@ class GlobeSurfaceTile {
|
|
|
211
232
|
tile,
|
|
212
233
|
frameState,
|
|
213
234
|
terrainProvider,
|
|
235
|
+
vectorProvider,
|
|
214
236
|
imageryLayerCollection,
|
|
215
237
|
quadtree,
|
|
216
238
|
vertexArraysToDestroy,
|
|
217
239
|
terrainOnly,
|
|
218
240
|
) {
|
|
219
|
-
GlobeSurfaceTile.initialize(
|
|
241
|
+
GlobeSurfaceTile.initialize(
|
|
242
|
+
tile,
|
|
243
|
+
terrainProvider,
|
|
244
|
+
vectorProvider,
|
|
245
|
+
imageryLayerCollection,
|
|
246
|
+
);
|
|
220
247
|
|
|
221
248
|
const surfaceTile = tile.data;
|
|
222
249
|
|
|
@@ -225,6 +252,7 @@ class GlobeSurfaceTile {
|
|
|
225
252
|
tile,
|
|
226
253
|
frameState,
|
|
227
254
|
terrainProvider,
|
|
255
|
+
vectorProvider,
|
|
228
256
|
imageryLayerCollection,
|
|
229
257
|
quadtree,
|
|
230
258
|
vertexArraysToDestroy,
|
|
@@ -604,10 +632,16 @@ function toggleGeodeticSurfaceNormals(
|
|
|
604
632
|
/**
|
|
605
633
|
* @param {QuadtreeTile} tile
|
|
606
634
|
* @param {TerrainProvider} terrainProvider
|
|
635
|
+
* @param {VectorProvider} vectorProvider
|
|
607
636
|
* @param {ImageryLayerCollection} imageryLayerCollection
|
|
608
637
|
* @ignore
|
|
609
638
|
*/
|
|
610
|
-
function prepareNewTile(
|
|
639
|
+
function prepareNewTile(
|
|
640
|
+
tile,
|
|
641
|
+
terrainProvider,
|
|
642
|
+
vectorProvider,
|
|
643
|
+
imageryLayerCollection,
|
|
644
|
+
) {
|
|
611
645
|
/** @type {boolean} */
|
|
612
646
|
let available = terrainProvider.getTileDataAvailable(
|
|
613
647
|
// @ts-expect-error Missing types.
|
|
@@ -630,8 +664,9 @@ function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
|
|
|
630
664
|
}
|
|
631
665
|
}
|
|
632
666
|
|
|
667
|
+
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
668
|
+
|
|
633
669
|
if (available === false) {
|
|
634
|
-
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
635
670
|
// This tile is not available, so mark it failed so we start upsampling right away.
|
|
636
671
|
surfaceTile.terrainState = TerrainState.FAILED;
|
|
637
672
|
}
|
|
@@ -650,6 +685,7 @@ function prepareNewTile(tile, terrainProvider, imageryLayerCollection) {
|
|
|
650
685
|
* @param {QuadtreeTile} tile
|
|
651
686
|
* @param {FrameState} frameState
|
|
652
687
|
* @param {TerrainProvider} terrainProvider
|
|
688
|
+
* @param {VectorProvider} vectorProvider
|
|
653
689
|
* @param {ImageryLayerCollection} imageryLayerCollection
|
|
654
690
|
* @param {QuadtreePrimitive} quadtree
|
|
655
691
|
* @param {*} vertexArraysToDestroy
|
|
@@ -659,6 +695,7 @@ function processTerrainStateMachine(
|
|
|
659
695
|
tile,
|
|
660
696
|
frameState,
|
|
661
697
|
terrainProvider,
|
|
698
|
+
vectorProvider,
|
|
662
699
|
imageryLayerCollection,
|
|
663
700
|
quadtree,
|
|
664
701
|
vertexArraysToDestroy,
|
|
@@ -684,6 +721,7 @@ function processTerrainStateMachine(
|
|
|
684
721
|
parent,
|
|
685
722
|
frameState,
|
|
686
723
|
terrainProvider,
|
|
724
|
+
vectorProvider,
|
|
687
725
|
imageryLayerCollection,
|
|
688
726
|
quadtree,
|
|
689
727
|
vertexArraysToDestroy,
|
|
@@ -63,6 +63,7 @@ import TileSelectionResult from "./TileSelectionResult.js";
|
|
|
63
63
|
/** @import TerrainMesh from "../Core/TerrainMesh.js"; */
|
|
64
64
|
/** @import TerrainProvider from "../Core/TerrainProvider.js"; */
|
|
65
65
|
/** @import TilingScheme from "../Core/TilingScheme.js"; */
|
|
66
|
+
/** @import VectorProvider, { VectorTileData } from "../Core/VectorProvider.js"; */
|
|
66
67
|
/** @import { GlobeSurfaceShaderSetOptions } from "./GlobeSurfaceShaderSet.js"; */
|
|
67
68
|
|
|
68
69
|
/**
|
|
@@ -77,6 +78,7 @@ class GlobeSurfaceTileProvider {
|
|
|
77
78
|
* @param {TerrainProvider} options.terrainProvider The terrain provider that describes the surface geometry.
|
|
78
79
|
* @param {ImageryLayerCollection} options.imageryLayers The collection of imagery layers describing the shading of the surface.
|
|
79
80
|
* @param {GlobeSurfaceShaderSet} options.surfaceShaderSet The set of shaders used to render the surface.
|
|
81
|
+
* @param {VectorProvider} options.vectorProvider
|
|
80
82
|
*/
|
|
81
83
|
constructor(options) {
|
|
82
84
|
//>>includeStart('debug', pragmas.debug);
|
|
@@ -89,6 +91,8 @@ class GlobeSurfaceTileProvider {
|
|
|
89
91
|
throw new DeveloperError("options.imageryLayers is required.");
|
|
90
92
|
} else if (!defined(options.surfaceShaderSet)) {
|
|
91
93
|
throw new DeveloperError("options.surfaceShaderSet is required.");
|
|
94
|
+
} else if (!defined(options.vectorProvider)) {
|
|
95
|
+
throw new DeveloperError("options.vectorProvider is required.");
|
|
92
96
|
}
|
|
93
97
|
//>>includeEnd('debug');
|
|
94
98
|
|
|
@@ -131,6 +135,7 @@ class GlobeSurfaceTileProvider {
|
|
|
131
135
|
|
|
132
136
|
this._quadtree = undefined;
|
|
133
137
|
this._terrainProvider = options.terrainProvider;
|
|
138
|
+
this._vectorProvider = options.vectorProvider;
|
|
134
139
|
this._imageryLayers = options.imageryLayers;
|
|
135
140
|
this._surfaceShaderSet = options.surfaceShaderSet;
|
|
136
141
|
|
|
@@ -311,6 +316,11 @@ class GlobeSurfaceTileProvider {
|
|
|
311
316
|
}
|
|
312
317
|
}
|
|
313
318
|
|
|
319
|
+
/** @type {VectorProvider} */
|
|
320
|
+
get vectorProvider() {
|
|
321
|
+
return this._vectorProvider;
|
|
322
|
+
}
|
|
323
|
+
|
|
314
324
|
/**
|
|
315
325
|
* The {@link ClippingPlaneCollection} used to selectively disable rendering.
|
|
316
326
|
*
|
|
@@ -371,6 +381,35 @@ class GlobeSurfaceTileProvider {
|
|
|
371
381
|
);
|
|
372
382
|
}
|
|
373
383
|
|
|
384
|
+
// Record regions dirtied by changed collections, re-bake overlapping
|
|
385
|
+
// tiles, and build vector data for new surface tiles.
|
|
386
|
+
const vectorProvider = this._vectorProvider;
|
|
387
|
+
vectorProvider.update();
|
|
388
|
+
this._quadtree.forEachRenderedTile(
|
|
389
|
+
/** @param {QuadtreeTile} tile */
|
|
390
|
+
(tile) => {
|
|
391
|
+
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
392
|
+
|
|
393
|
+
if (defined(surfaceTile.vectorData)) {
|
|
394
|
+
surfaceTile.vectorData = vectorProvider.updateTileData(
|
|
395
|
+
tile.x,
|
|
396
|
+
tile.y,
|
|
397
|
+
tile.level,
|
|
398
|
+
frameState.context,
|
|
399
|
+
surfaceTile.vectorData,
|
|
400
|
+
);
|
|
401
|
+
} else {
|
|
402
|
+
surfaceTile.vectorData = vectorProvider.requestTileData(
|
|
403
|
+
tile.x,
|
|
404
|
+
tile.y,
|
|
405
|
+
tile.level,
|
|
406
|
+
frameState.context,
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
);
|
|
411
|
+
vectorProvider.makeClean();
|
|
412
|
+
|
|
374
413
|
// Add credits for terrain and imagery providers.
|
|
375
414
|
updateCredits(this, frameState);
|
|
376
415
|
|
|
@@ -609,6 +648,7 @@ class GlobeSurfaceTileProvider {
|
|
|
609
648
|
tile,
|
|
610
649
|
frameState,
|
|
611
650
|
this.terrainProvider,
|
|
651
|
+
this.vectorProvider,
|
|
612
652
|
this._imageryLayers,
|
|
613
653
|
this.quadtree,
|
|
614
654
|
this._vertexArraysToDestroy,
|
|
@@ -635,6 +675,7 @@ class GlobeSurfaceTileProvider {
|
|
|
635
675
|
tile,
|
|
636
676
|
frameState,
|
|
637
677
|
this.terrainProvider,
|
|
678
|
+
this.vectorProvider,
|
|
638
679
|
this._imageryLayers,
|
|
639
680
|
this.quadtree,
|
|
640
681
|
this._vertexArraysToDestroy,
|
|
@@ -1915,6 +1956,52 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1915
1956
|
u_vertexShadowDarkness: function () {
|
|
1916
1957
|
return this.properties.vertexShadowDarkness;
|
|
1917
1958
|
},
|
|
1959
|
+
u_vectorSegmentTexture: function () {
|
|
1960
|
+
return (
|
|
1961
|
+
this.properties.vectorSegmentTexture ??
|
|
1962
|
+
frameState.context.defaultTexture
|
|
1963
|
+
);
|
|
1964
|
+
},
|
|
1965
|
+
u_vectorWidthTexture: function () {
|
|
1966
|
+
return (
|
|
1967
|
+
this.properties.vectorWidthTexture ?? frameState.context.defaultTexture
|
|
1968
|
+
);
|
|
1969
|
+
},
|
|
1970
|
+
u_vectorColorTexture: function () {
|
|
1971
|
+
return (
|
|
1972
|
+
this.properties.vectorColorTexture ?? frameState.context.defaultTexture
|
|
1973
|
+
);
|
|
1974
|
+
},
|
|
1975
|
+
u_vectorSegmentPrimitiveIndicesTexture: function () {
|
|
1976
|
+
return (
|
|
1977
|
+
this.properties.vectorSegmentPrimitiveIndicesTexture ??
|
|
1978
|
+
frameState.context.defaultTexture
|
|
1979
|
+
);
|
|
1980
|
+
},
|
|
1981
|
+
u_vectorGridCellIndicesTexture: function () {
|
|
1982
|
+
return (
|
|
1983
|
+
this.properties.vectorGridCellIndicesTexture ??
|
|
1984
|
+
frameState.context.defaultTexture
|
|
1985
|
+
);
|
|
1986
|
+
},
|
|
1987
|
+
u_vectorPolygonEdgeTexture: function () {
|
|
1988
|
+
return (
|
|
1989
|
+
this.properties.vectorPolygonEdgeTexture ??
|
|
1990
|
+
frameState.context.defaultTexture
|
|
1991
|
+
);
|
|
1992
|
+
},
|
|
1993
|
+
u_vectorPolygonEdgePrimitiveIndicesTexture: function () {
|
|
1994
|
+
return (
|
|
1995
|
+
this.properties.vectorPolygonEdgePrimitiveIndicesTexture ??
|
|
1996
|
+
frameState.context.defaultTexture
|
|
1997
|
+
);
|
|
1998
|
+
},
|
|
1999
|
+
u_vectorPolygonGridCellIndicesTexture: function () {
|
|
2000
|
+
return (
|
|
2001
|
+
this.properties.vectorPolygonGridCellIndicesTexture ??
|
|
2002
|
+
frameState.context.defaultTexture
|
|
2003
|
+
);
|
|
2004
|
+
},
|
|
1918
2005
|
|
|
1919
2006
|
// make a separate object so that changes to the properties are seen on
|
|
1920
2007
|
// derived commands that combine another uniform map with this one.
|
|
@@ -1977,6 +2064,15 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1977
2064
|
undergroundColorAlphaByDistance: new Cartesian4(),
|
|
1978
2065
|
lambertDiffuseMultiplier: 0.0,
|
|
1979
2066
|
vertexShadowDarkness: 0.0,
|
|
2067
|
+
|
|
2068
|
+
vectorSegmentTexture: undefined,
|
|
2069
|
+
vectorWidthTexture: undefined,
|
|
2070
|
+
vectorColorTexture: undefined,
|
|
2071
|
+
vectorSegmentPrimitiveIndicesTexture: undefined,
|
|
2072
|
+
vectorGridCellIndicesTexture: undefined,
|
|
2073
|
+
vectorPolygonEdgeTexture: undefined,
|
|
2074
|
+
vectorPolygonEdgePrimitiveIndicesTexture: undefined,
|
|
2075
|
+
vectorPolygonGridCellIndicesTexture: undefined,
|
|
1980
2076
|
},
|
|
1981
2077
|
};
|
|
1982
2078
|
|
|
@@ -2916,10 +3012,32 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2916
3012
|
uniformMapProperties.clippingPlanesEdgeWidth = clippingPlanes.edgeWidth;
|
|
2917
3013
|
}
|
|
2918
3014
|
|
|
3015
|
+
// update vector collections clamped to terrain
|
|
3016
|
+
const vectorData = surfaceTile.vectorData;
|
|
3017
|
+
if (defined(vectorData)) {
|
|
3018
|
+
uniformMapProperties.vectorSegmentTexture =
|
|
3019
|
+
vectorData.polylineSegmentTexture;
|
|
3020
|
+
uniformMapProperties.vectorWidthTexture = vectorData.widthTexture;
|
|
3021
|
+
uniformMapProperties.vectorColorTexture = vectorData.colorTexture;
|
|
3022
|
+
uniformMapProperties.vectorSegmentPrimitiveIndicesTexture =
|
|
3023
|
+
vectorData.polylineSegmentPrimitiveIndicesTexture;
|
|
3024
|
+
uniformMapProperties.vectorGridCellIndicesTexture =
|
|
3025
|
+
vectorData.polylineGridCellIndicesTexture;
|
|
3026
|
+
uniformMapProperties.vectorPolygonEdgeTexture =
|
|
3027
|
+
vectorData.polygonEdgeTexture;
|
|
3028
|
+
uniformMapProperties.vectorPolygonEdgePrimitiveIndicesTexture =
|
|
3029
|
+
vectorData.polygonEdgePrimitiveIndicesTexture;
|
|
3030
|
+
uniformMapProperties.vectorPolygonGridCellIndicesTexture =
|
|
3031
|
+
vectorData.polygonGridCellIndicesTexture;
|
|
3032
|
+
}
|
|
3033
|
+
|
|
2919
3034
|
// update clipping polygons
|
|
2920
3035
|
const clippingPolygons = tileProvider._clippingPolygons;
|
|
2921
3036
|
const clippingPolygonsEnabled =
|
|
2922
|
-
defined(clippingPolygons) &&
|
|
3037
|
+
defined(clippingPolygons) &&
|
|
3038
|
+
clippingPolygons.enabled &&
|
|
3039
|
+
clippingPolygons.length > 0 &&
|
|
3040
|
+
tile.isClipped;
|
|
2923
3041
|
|
|
2924
3042
|
surfaceShaderSetOptions.numberOfDayTextures = numberOfDayTextures;
|
|
2925
3043
|
surfaceShaderSetOptions.applyBrightness = applyBrightness;
|
|
@@ -2969,7 +3087,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2969
3087
|
}
|
|
2970
3088
|
}
|
|
2971
3089
|
|
|
2972
|
-
|
|
3090
|
+
const boundingVolume = command.boundingVolume;
|
|
2973
3091
|
const orientedBoundingBox = command.orientedBoundingBox;
|
|
2974
3092
|
|
|
2975
3093
|
if (frameState.mode !== SceneMode.SCENE3D) {
|
|
@@ -2988,7 +3106,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2988
3106
|
);
|
|
2989
3107
|
|
|
2990
3108
|
if (frameState.mode === SceneMode.MORPHING) {
|
|
2991
|
-
|
|
3109
|
+
BoundingSphere.union(
|
|
2992
3110
|
// @ts-expect-error Missing types.
|
|
2993
3111
|
tileBoundingRegion.boundingSphere,
|
|
2994
3112
|
boundingVolume,
|
|
@@ -61,6 +61,7 @@ const {
|
|
|
61
61
|
Specular,
|
|
62
62
|
Anisotropy,
|
|
63
63
|
Clearcoat,
|
|
64
|
+
PlanarFill,
|
|
64
65
|
LineStyle,
|
|
65
66
|
Material,
|
|
66
67
|
Vector,
|
|
@@ -1787,6 +1788,23 @@ function loadClearcoat(loader, clearcoatInfo, frameState) {
|
|
|
1787
1788
|
return clearcoat;
|
|
1788
1789
|
}
|
|
1789
1790
|
|
|
1791
|
+
/**
|
|
1792
|
+
* Load properties for the BENTLEY_materials_planar_fill extension.
|
|
1793
|
+
*
|
|
1794
|
+
* Note: The wireframeFill property is loaded but is currently a NO-OP in the
|
|
1795
|
+
* rendering pipeline. CesiumJS does not yet have a proper wireframe rendering
|
|
1796
|
+
* mode, so this value is stored for completeness but has no effect on rendering.
|
|
1797
|
+
* See https://github.com/CesiumGS/cesium/issues/13620 and
|
|
1798
|
+
* MaterialPipelineStage.js for more details.
|
|
1799
|
+
*
|
|
1800
|
+
* @param {object} planarFillInfo The contents of the BENTLEY_materials_planar_fill extension in the parsed glTF JSON
|
|
1801
|
+
* @returns {ModelComponents.PlanarFill}
|
|
1802
|
+
* @private
|
|
1803
|
+
*/
|
|
1804
|
+
function loadPlanarFill(planarFillInfo) {
|
|
1805
|
+
return new PlanarFill(planarFillInfo);
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1790
1808
|
function loadLineStyle(lineStyleInfo) {
|
|
1791
1809
|
if (!defined(lineStyleInfo)) {
|
|
1792
1810
|
return undefined;
|
|
@@ -1833,6 +1851,7 @@ function loadMaterial(loader, gltfMaterial, frameState) {
|
|
|
1833
1851
|
const pbrAnisotropy = extensions.KHR_materials_anisotropy;
|
|
1834
1852
|
const pbrClearcoat = extensions.KHR_materials_clearcoat;
|
|
1835
1853
|
const pbrMetallicRoughness = gltfMaterial.pbrMetallicRoughness;
|
|
1854
|
+
const planarFill = extensions.BENTLEY_materials_planar_fill;
|
|
1836
1855
|
|
|
1837
1856
|
material.unlit = defined(extensions.KHR_materials_unlit);
|
|
1838
1857
|
|
|
@@ -1889,6 +1908,11 @@ function loadMaterial(loader, gltfMaterial, frameState) {
|
|
|
1889
1908
|
material.alphaCutoff = gltfMaterial.alphaCutoff;
|
|
1890
1909
|
material.doubleSided = gltfMaterial.doubleSided;
|
|
1891
1910
|
|
|
1911
|
+
// BENTLEY_materials_planar_fill extension
|
|
1912
|
+
if (defined(planarFill)) {
|
|
1913
|
+
material.planarFill = loadPlanarFill(planarFill);
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1892
1916
|
// BENTLEY_materials_point_style extension
|
|
1893
1917
|
const pointStyleExtension = extensions.BENTLEY_materials_point_style;
|
|
1894
1918
|
if (defined(pointStyleExtension) && defined(pointStyleExtension.diameter)) {
|
|
@@ -2156,7 +2180,7 @@ function loadEdgeVisibilityLineStrings(
|
|
|
2156
2180
|
throw new RuntimeError("Edge visibility line string accessor not found!");
|
|
2157
2181
|
}
|
|
2158
2182
|
|
|
2159
|
-
const indices =
|
|
2183
|
+
const indices = loadAccessorTypedArray(loader, accessor);
|
|
2160
2184
|
const restartIndex = getLineStringPrimitiveRestartValue(
|
|
2161
2185
|
accessor.componentType,
|
|
2162
2186
|
);
|
|
@@ -2188,7 +2212,10 @@ function loadEdgeVisibility(loader, edgeVisibilityExtension) {
|
|
|
2188
2212
|
if (!defined(visibilityAccessor)) {
|
|
2189
2213
|
throw new RuntimeError("Edge visibility accessor not found!");
|
|
2190
2214
|
}
|
|
2191
|
-
edgeVisibility.visibility =
|
|
2215
|
+
edgeVisibility.visibility = loadAccessorTypedArray(
|
|
2216
|
+
loader,
|
|
2217
|
+
visibilityAccessor,
|
|
2218
|
+
);
|
|
2192
2219
|
}
|
|
2193
2220
|
|
|
2194
2221
|
edgeVisibility.materialColor = getEdgeVisibilityMaterialColor(
|
|
@@ -2200,7 +2227,9 @@ function loadEdgeVisibility(loader, edgeVisibilityExtension) {
|
|
|
2200
2227
|
const silhouetteNormalsAccessor =
|
|
2201
2228
|
loader.gltfJson.accessors[edgeVisibilityExtension.silhouetteNormals];
|
|
2202
2229
|
if (defined(silhouetteNormalsAccessor)) {
|
|
2203
|
-
|
|
2230
|
+
// Packed typed array (x0,y0,z0, x1,y1,z1, ...), not an array of
|
|
2231
|
+
// Cartesian3s. Avoids a large JS heap cost for edge-heavy tiles.
|
|
2232
|
+
edgeVisibility.silhouetteNormals = loadAccessorTypedArray(
|
|
2204
2233
|
loader,
|
|
2205
2234
|
silhouetteNormalsAccessor,
|
|
2206
2235
|
);
|
|
@@ -267,7 +267,7 @@ async function loadResources(loader) {
|
|
|
267
267
|
try {
|
|
268
268
|
const bufferViewLoader = resourceCache.getBufferViewLoader({
|
|
269
269
|
gltf: loader._gltf,
|
|
270
|
-
bufferViewId:
|
|
270
|
+
bufferViewId: loader._spz.bufferView,
|
|
271
271
|
gltfResource: loader._gltfResource,
|
|
272
272
|
baseResource: loader._baseResource,
|
|
273
273
|
});
|
|
@@ -29,6 +29,7 @@ class GltfVertexBufferLoader extends ResourceLoader {
|
|
|
29
29
|
* @param {number} [options.bufferViewId] The bufferView ID corresponding to the vertex buffer.
|
|
30
30
|
* @param {object} [options.primitive] The primitive containing the Draco extension.
|
|
31
31
|
* @param {object} [options.draco] The Draco extension object.
|
|
32
|
+
* @param {object} [options.spz] The SPZ extension object.
|
|
32
33
|
* @param {string} [options.attributeSemantic] The attribute semantic, e.g. POSITION or NORMAL.
|
|
33
34
|
* @param {number} [options.accessorId] The accessor id.
|
|
34
35
|
* @param {string} [options.cacheKey] The cache key of the resource.
|
|
@@ -36,7 +37,7 @@ class GltfVertexBufferLoader extends ResourceLoader {
|
|
|
36
37
|
* @param {boolean} [options.loadBuffer=false] Load vertex buffer as a GPU vertex buffer.
|
|
37
38
|
* @param {boolean} [options.loadTypedArray=false] Load vertex buffer as a typed array.
|
|
38
39
|
*
|
|
39
|
-
* @exception {DeveloperError}
|
|
40
|
+
* @exception {DeveloperError} Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.
|
|
40
41
|
* @exception {DeveloperError} When options.draco is defined options.attributeSemantic must also be defined.
|
|
41
42
|
* @exception {DeveloperError} When options.draco is defined options.accessorId must also be defined.
|
|
42
43
|
*/
|
|
@@ -76,9 +77,11 @@ class GltfVertexBufferLoader extends ResourceLoader {
|
|
|
76
77
|
const hasAttributeSemantic = defined(attributeSemantic);
|
|
77
78
|
const hasAccessorId = defined(accessorId);
|
|
78
79
|
const hasSpz = defined(spz);
|
|
79
|
-
|
|
80
|
+
const sourceCount =
|
|
81
|
+
Number(hasBufferViewId) + Number(hasDraco) + Number(hasSpz);
|
|
82
|
+
if (sourceCount !== 1) {
|
|
80
83
|
throw new DeveloperError(
|
|
81
|
-
"
|
|
84
|
+
"Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.",
|
|
82
85
|
);
|
|
83
86
|
}
|
|
84
87
|
|
|
@@ -408,7 +408,7 @@ I3SDataProvider.prototype.updateForPass = function (frameState, passState) {
|
|
|
408
408
|
function buildLayerUrl(provider, layerId) {
|
|
409
409
|
const dataProviderUrl = provider.resource.getUrlComponent();
|
|
410
410
|
|
|
411
|
-
let layerUrl
|
|
411
|
+
let layerUrl;
|
|
412
412
|
if (dataProviderUrl.match(/layers\/\d/)) {
|
|
413
413
|
layerUrl = `${dataProviderUrl}`.replace(/\/+$/, "");
|
|
414
414
|
} else {
|