@cesium/engine 26.2.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 +656 -518
- package/Build/Workers/{chunk-FU4BGABC.js → chunk-2DKJSPYF.js} +14 -14
- package/Build/Workers/{chunk-NCL22ZUX.js → chunk-2PWVICP6.js} +1 -1
- package/Build/Workers/{chunk-ILME5BXA.js → chunk-2YY724ZX.js} +8 -8
- package/Build/Workers/{chunk-IJZJMIUY.js → chunk-4DMAXPKB.js} +11 -11
- package/Build/Workers/{chunk-IMBVP57H.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-UAZUP4I5.js → chunk-6BSNYZZG.js} +5 -5
- package/Build/Workers/{chunk-D6AY775A.js → chunk-6R6SGKYN.js} +6 -6
- package/Build/Workers/{chunk-3PSS3T43.js → chunk-6V2KDEHL.js} +4 -4
- package/Build/Workers/{chunk-GHXVQVUM.js → chunk-75BC2IHI.js} +7 -7
- package/Build/Workers/{chunk-SMTGMFBL.js → chunk-7SESBH2I.js} +4 -4
- package/Build/Workers/{chunk-NEFDMMLY.js → chunk-7WXBTNRV.js} +8 -8
- package/Build/Workers/{chunk-NXGQBQWE.js → chunk-A7SMPV6B.js} +12 -12
- package/Build/Workers/{chunk-O3XFXGPZ.js → chunk-ATSXKJ3L.js} +7 -7
- package/Build/Workers/{chunk-AHWAZRBV.js → chunk-B4AVL7VI.js} +1 -1
- package/Build/Workers/{chunk-OZGPS7FB.js → chunk-B7Q2WF6Q.js} +4 -4
- package/Build/Workers/{chunk-2RGJPWQX.js → chunk-BNDSDQ7D.js} +9 -9
- package/Build/Workers/{chunk-2Z4ZLVOD.js → chunk-CKK6CUXK.js} +6 -6
- package/Build/Workers/{chunk-FCP2QY4G.js → chunk-COKOYTRS.js} +5 -5
- package/Build/Workers/{chunk-6FZDPMTO.js → chunk-CQ4TZXAT.js} +6 -6
- package/Build/Workers/{chunk-HDL4HOXZ.js → chunk-DKSANM4A.js} +12 -12
- package/Build/Workers/{chunk-XCBZVTIV.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-NSKZ6SBK.js → chunk-F34TJJLA.js} +14 -14
- package/Build/Workers/{chunk-GXWQZBAI.js → chunk-GLHDTTTO.js} +2 -2
- package/Build/Workers/{chunk-SJYSIOEM.js → chunk-GS7RY2DH.js} +11 -11
- package/Build/Workers/{chunk-5YPQBFRD.js → chunk-HDD3RFLT.js} +3 -3
- package/Build/Workers/{chunk-36NI5E6W.js → chunk-HDPNFEPP.js} +18 -18
- package/Build/Workers/{chunk-DSGLDRTI.js → chunk-JBJ6BRIM.js} +4 -4
- package/Build/Workers/{chunk-DZUFEE4L.js → chunk-JKTWW7IO.js} +5 -5
- package/Build/Workers/{chunk-O3DKEX7Q.js → chunk-JL4NWWQY.js} +5 -5
- package/Build/Workers/{chunk-I74ZH5LK.js → chunk-JMUUAW4X.js} +10 -10
- package/Build/Workers/{chunk-SXSP3JHS.js → chunk-KBGAHN5R.js} +1 -1
- package/Build/Workers/{chunk-GVA7XQI2.js → chunk-KEWK6VZL.js} +12 -12
- package/Build/Workers/{chunk-EOWDZN5S.js → chunk-L73K5UPP.js} +10 -10
- package/Build/Workers/{chunk-J73T2VOY.js → chunk-LL2SGJYH.js} +6 -6
- package/Build/Workers/{chunk-QFSSCLLZ.js → chunk-LYJUL4XQ.js} +6 -6
- package/Build/Workers/{chunk-MAAHFYPC.js → chunk-M6W46OAP.js} +7 -7
- package/Build/Workers/{chunk-FX3VEAIU.js → chunk-MDDKCLMF.js} +16 -16
- package/Build/Workers/{chunk-M6QKXVAU.js → chunk-MUW4DJV7.js} +17 -17
- package/Build/Workers/{chunk-EZGQPOIG.js → chunk-N5YK44FS.js} +5 -5
- package/Build/Workers/{chunk-27FWRTJI.js → chunk-NZQUP52G.js} +9 -9
- package/Build/Workers/{chunk-A62YI6S6.js → chunk-PKZA44LH.js} +4 -4
- package/Build/Workers/{chunk-7MM3N2VE.js → chunk-Q2JS5LCB.js} +17 -17
- package/Build/Workers/{chunk-KGXSYGBG.js → chunk-QTAEVUED.js} +13 -13
- package/Build/Workers/{chunk-KP5QD7WU.js → chunk-SEJIXZZ4.js} +10 -10
- package/Build/Workers/{chunk-PRWUMCXF.js → chunk-SL2HCFYW.js} +10 -10
- package/Build/Workers/{chunk-NJVBJG63.js → chunk-SLHK3KAR.js} +5 -5
- package/Build/Workers/{chunk-JKXV6PG5.js → chunk-UZY5XRL2.js} +1 -1
- package/Build/Workers/{chunk-LDRQSYBN.js → chunk-VRECSMG3.js} +2 -2
- package/Build/Workers/{chunk-NLLCQBX3.js → chunk-X27HKF5E.js} +2 -2
- package/Build/Workers/{chunk-B3QHNA4A.js → chunk-XBY3354M.js} +6 -6
- package/Build/Workers/{chunk-CRCGE4J4.js → chunk-XRZCS3HE.js} +8 -8
- package/Build/Workers/{chunk-XLQZNQ4Z.js → chunk-XSIUYAT6.js} +2 -2
- package/Build/Workers/{chunk-SA2A2AN5.js → chunk-Z2DW5NM2.js} +4 -4
- 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 +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- 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 +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- 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 +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- 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 +23 -23
- 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/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/SnapService.js +63 -0
- package/Source/Core/VectorPipeline.js +139 -45
- package/Source/Core/VectorProvider.js +311 -71
- package/Source/Renderer/AutomaticUniforms.js +44 -2
- package/Source/Renderer/ShaderBuilder.js +1 -1
- package/Source/Renderer/UniformState.js +47 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- 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 +199 -29
- package/Source/Scene/Cesium3DTile.js +12 -0
- package/Source/Scene/Cesium3DTileset.js +61 -8
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
- package/Source/Scene/Cesium3DTilesetCache.js +15 -0
- package/Source/Scene/ClippingPolygon.js +154 -100
- package/Source/Scene/ClippingPolygonCollection.js +352 -694
- package/Source/Scene/CreditDisplay.js +62 -0
- package/Source/Scene/GeoJsonPrimitive.js +114 -24
- package/Source/Scene/GlobeSurfaceShaderSet.js +33 -54
- package/Source/Scene/GlobeSurfaceTile.js +14 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +232 -25
- package/Source/Scene/GltfLoader.js +56 -6
- package/Source/Scene/HeightReference.js +1 -1
- package/Source/Scene/MVTDataProvider.js +9 -0
- package/Source/Scene/Model/Model.js +242 -16
- package/Source/Scene/Model/Model3DTileContent.js +5 -0
- package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
- package/Source/Scene/Model/ModelRenderResources.js +2 -3
- package/Source/Scene/Model/ModelSceneGraph.js +10 -1
- package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
- package/Source/Scene/Model/PickingPipelineStage.js +4 -0
- package/Source/Scene/PostProcessStage.js +22 -3
- package/Source/Scene/Scene.js +56 -1
- package/Source/Scene/Snapping.js +57 -0
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +12 -1
- package/Source/Scene/VectorGltf3DTileContent.js +10 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
- package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
- package/Source/Scene/renderBufferPolylineCollection.js +5 -1
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -4
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
- package/Source/Shaders/GlobeFS.glsl +10 -9
- package/Source/Shaders/GlobeFS.js +11 -9
- package/Source/Shaders/GlobeVS.glsl +0 -32
- package/Source/Shaders/GlobeVS.js +0 -32
- 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 +4 -0
- package/Source/Shaders/Model/ModelFS.js +4 -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 +177 -50
- package/Source/Shaders/VectorCommon.js +251 -19
- package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
- package/index.d.ts +556 -55
- package/index.js +20 -13
- package/package.json +6 -6
- package/Build/Workers/chunk-2EFYUSUY.js +0 -1483
- package/Build/Workers/chunk-2H5264K7.js +0 -1284
- package/Build/Workers/chunk-2H73KDBM.js +0 -511
- package/Build/Workers/chunk-2ZKH2QZB.js +0 -387
- package/Build/Workers/chunk-37SW7SYS.js +0 -778
- package/Build/Workers/chunk-3GHVJ3SO.js +0 -455
- package/Build/Workers/chunk-3LB4UVPU.js +0 -387
- package/Build/Workers/chunk-3PONLKEL.js +0 -778
- package/Build/Workers/chunk-3QR662HH.js +0 -3820
- package/Build/Workers/chunk-3SX2WYSO.js +0 -973
- package/Build/Workers/chunk-3UDN6LYX.js +0 -476
- package/Build/Workers/chunk-47MCBSXI.js +0 -9237
- package/Build/Workers/chunk-4E626OCE.js +0 -1067
- package/Build/Workers/chunk-4NW2MJKH.js +0 -455
- package/Build/Workers/chunk-52YK5BSN.js +0 -198
- package/Build/Workers/chunk-5RNAQZK6.js +0 -9234
- package/Build/Workers/chunk-6FHT43QR.js +0 -140
- package/Build/Workers/chunk-6HK6IXK2.js +0 -138
- package/Build/Workers/chunk-6R5X2GUA.js +0 -1284
- package/Build/Workers/chunk-6YR6JBMY.js +0 -163
- package/Build/Workers/chunk-7A2OGDHT.js +0 -305
- package/Build/Workers/chunk-7CGEQUM2.js +0 -305
- package/Build/Workers/chunk-7D2HZKH7.js +0 -455
- package/Build/Workers/chunk-7I325HV6.js +0 -1344
- package/Build/Workers/chunk-7KVKHY7O.js +0 -147
- package/Build/Workers/chunk-7TKLTCZW.js +0 -219
- package/Build/Workers/chunk-7UUKBDH6.js +0 -1054
- package/Build/Workers/chunk-7W6DUHAB.js +0 -693
- package/Build/Workers/chunk-7XM5JK5F.js +0 -162
- package/Build/Workers/chunk-7YG3ND3P.js +0 -454
- package/Build/Workers/chunk-A3O6EDBK.js +0 -73
- package/Build/Workers/chunk-A6X24AZI.js +0 -1992
- package/Build/Workers/chunk-A7TTWVTF.js +0 -2719
- package/Build/Workers/chunk-ACTVJHSP.js +0 -519
- package/Build/Workers/chunk-ADX3CBKD.js +0 -9234
- package/Build/Workers/chunk-AF7DTMJ7.js +0 -398
- package/Build/Workers/chunk-AJSFRY4U.js +0 -1344
- package/Build/Workers/chunk-ARZICEEP.js +0 -301
- package/Build/Workers/chunk-B4CQSLZJ.js +0 -305
- package/Build/Workers/chunk-BKPQFCXH.js +0 -511
- package/Build/Workers/chunk-BSPCI2LO.js +0 -959
- package/Build/Workers/chunk-BUJWSX5S.js +0 -301
- package/Build/Workers/chunk-C7JQVRLM.js +0 -497
- package/Build/Workers/chunk-C7QDUNI3.js +0 -138
- package/Build/Workers/chunk-CDJDJ5LK.js +0 -44
- package/Build/Workers/chunk-CEEZE3YZ.js +0 -476
- package/Build/Workers/chunk-CIV5DJOQ.js +0 -778
- package/Build/Workers/chunk-CLCTQVVL.js +0 -241
- package/Build/Workers/chunk-CQNFIAZU.js +0 -56
- package/Build/Workers/chunk-CUTRKXUQ.js +0 -288
- package/Build/Workers/chunk-DBD5WWG2.js +0 -959
- package/Build/Workers/chunk-DIGUUD6G.js +0 -171
- package/Build/Workers/chunk-DZBQUULR.js +0 -138
- package/Build/Workers/chunk-E2NKV5YT.js +0 -3820
- package/Build/Workers/chunk-E7NZJOK7.js +0 -3792
- package/Build/Workers/chunk-EB3Y5P3A.js +0 -368
- package/Build/Workers/chunk-EHTS2YPT.js +0 -2719
- package/Build/Workers/chunk-ELE6SC2C.js +0 -837
- package/Build/Workers/chunk-ENNFMWDW.js +0 -789
- package/Build/Workers/chunk-ERKUET22.js +0 -3201
- package/Build/Workers/chunk-F2IMBMZY.js +0 -241
- package/Build/Workers/chunk-F4CSNRZO.js +0 -219
- package/Build/Workers/chunk-FBP4DUQJ.js +0 -693
- package/Build/Workers/chunk-FDK4K5IA.js +0 -280
- package/Build/Workers/chunk-FGQFQHN5.js +0 -1054
- package/Build/Workers/chunk-FJWZMGOQ.js +0 -1992
- package/Build/Workers/chunk-FQ42MT7M.js +0 -58
- package/Build/Workers/chunk-GGNWQWSB.js +0 -301
- package/Build/Workers/chunk-GNKXEN4C.js +0 -682
- package/Build/Workers/chunk-GSWMAFTE.js +0 -9230
- package/Build/Workers/chunk-GXDHRC4J.js +0 -1344
- package/Build/Workers/chunk-GYSYP6PC.js +0 -1067
- package/Build/Workers/chunk-H2WCFXLP.js +0 -241
- package/Build/Workers/chunk-HHV3MCGV.js +0 -162
- package/Build/Workers/chunk-HLW2ZRVK.js +0 -368
- package/Build/Workers/chunk-HS6AD4P2.js +0 -398
- package/Build/Workers/chunk-HT6FASOT.js +0 -973
- package/Build/Workers/chunk-IDVHUDZT.js +0 -352
- package/Build/Workers/chunk-IGAZBTFZ.js +0 -3201
- package/Build/Workers/chunk-IOO7Z2AV.js +0 -57
- package/Build/Workers/chunk-IUIFLOYO.js +0 -44
- package/Build/Workers/chunk-JALGQYDY.js +0 -288
- package/Build/Workers/chunk-JW6OZT4R.js +0 -288
- package/Build/Workers/chunk-JXYLJCTC.js +0 -124
- package/Build/Workers/chunk-K27QOAW6.js +0 -97
- package/Build/Workers/chunk-KMV25A63.js +0 -789
- package/Build/Workers/chunk-KZWFWJML.js +0 -2719
- package/Build/Workers/chunk-LCXRRALY.js +0 -387
- package/Build/Workers/chunk-LD64RPYV.js +0 -368
- package/Build/Workers/chunk-LGNDTZVX.js +0 -97
- package/Build/Workers/chunk-LNSQVXFH.js +0 -1800
- package/Build/Workers/chunk-M4JZ6TSZ.js +0 -959
- package/Build/Workers/chunk-MCJDRDJQ.js +0 -102
- package/Build/Workers/chunk-MEENMEAH.js +0 -198
- package/Build/Workers/chunk-NAWU5RF4.js +0 -162
- package/Build/Workers/chunk-NIWITKQK.js +0 -693
- package/Build/Workers/chunk-OA6MYL2C.js +0 -837
- package/Build/Workers/chunk-OBEU25PI.js +0 -1067
- package/Build/Workers/chunk-OHP4ELS7.js +0 -198
- package/Build/Workers/chunk-PCL3Y7H5.js +0 -82
- package/Build/Workers/chunk-PD4GK4EM.js +0 -57
- package/Build/Workers/chunk-PEDU33QG.js +0 -2342
- package/Build/Workers/chunk-PVTSNNVI.js +0 -288
- package/Build/Workers/chunk-QHPZH22L.js +0 -241
- package/Build/Workers/chunk-QIZDWZK6.js +0 -301
- package/Build/Workers/chunk-QV6DG2YX.js +0 -1483
- package/Build/Workers/chunk-QVLAFFJY.js +0 -56
- package/Build/Workers/chunk-R4FPNAZ2.js +0 -352
- package/Build/Workers/chunk-R4K7EHOU.js +0 -171
- package/Build/Workers/chunk-R7JGHDD6.js +0 -789
- package/Build/Workers/chunk-RASQEYD4.js +0 -1483
- package/Build/Workers/chunk-RG4F5R57.js +0 -454
- package/Build/Workers/chunk-RW6ITX7Q.js +0 -3820
- package/Build/Workers/chunk-RYSQVJR6.js +0 -398
- package/Build/Workers/chunk-S6RJU5NM.js +0 -1054
- package/Build/Workers/chunk-SDFHDNS4.js +0 -147
- package/Build/Workers/chunk-SF6K72D7.js +0 -124
- package/Build/Workers/chunk-SGRGNDOD.js +0 -682
- package/Build/Workers/chunk-SM2CDCYF.js +0 -198
- package/Build/Workers/chunk-SS5ABQGY.js +0 -102
- package/Build/Workers/chunk-T5QBPLE3.js +0 -414
- package/Build/Workers/chunk-TN35HP5B.js +0 -1067
- package/Build/Workers/chunk-TNWKJNUZ.js +0 -454
- package/Build/Workers/chunk-TOAF47AQ.js +0 -102
- package/Build/Workers/chunk-TQ4QCOXT.js +0 -2719
- package/Build/Workers/chunk-TSDSILQB.js +0 -124
- package/Build/Workers/chunk-TVZD72WJ.js +0 -778
- package/Build/Workers/chunk-U5LV3F3Z.js +0 -1054
- package/Build/Workers/chunk-UEY73NRN.js +0 -38
- package/Build/Workers/chunk-UF46SZEZ.js +0 -789
- package/Build/Workers/chunk-UNRTMCET.js +0 -398
- package/Build/Workers/chunk-UTB7U3O6.js +0 -1992
- package/Build/Workers/chunk-UVO6COT2.js +0 -352
- package/Build/Workers/chunk-V46YGZE6.js +0 -352
- package/Build/Workers/chunk-VAL7DYNR.js +0 -278
- package/Build/Workers/chunk-VDGOCROW.js +0 -57
- package/Build/Workers/chunk-VFWSSBPT.js +0 -511
- package/Build/Workers/chunk-VVYMXI3I.js +0 -1284
- package/Build/Workers/chunk-VXWHPYQM.js +0 -837
- package/Build/Workers/chunk-VXYUBRSB.js +0 -219
- package/Build/Workers/chunk-VZLDLEWI.js +0 -387
- package/Build/Workers/chunk-W5OCKMPJ.js +0 -101
- package/Build/Workers/chunk-WBSY7HDY.js +0 -837
- package/Build/Workers/chunk-WN3F4CVG.js +0 -3201
- package/Build/Workers/chunk-WPRUWXGV.js +0 -693
- package/Build/Workers/chunk-WTO2ERBP.js +0 -414
- package/Build/Workers/chunk-WVHMDVG4.js +0 -959
- package/Build/Workers/chunk-XGA23TAX.js +0 -73
- package/Build/Workers/chunk-XLXSDIP5.js +0 -973
- package/Build/Workers/chunk-XQ3SKCMM.js +0 -140
- package/Build/Workers/chunk-XQH66YJC.js +0 -147
- package/Build/Workers/chunk-XTA7BXJG.js +0 -682
- package/Build/Workers/chunk-XTIDAFRS.js +0 -476
- package/Build/Workers/chunk-XUEDWBUD.js +0 -682
- package/Build/Workers/chunk-XYFLRH3H.js +0 -124
- package/Build/Workers/chunk-Y7JRTRTO.js +0 -305
- package/Build/Workers/chunk-Y7QSMDCJ.js +0 -352
- package/Build/Workers/chunk-YCB5TYTR.js +0 -1483
- package/Build/Workers/chunk-YEYOSTJX.js +0 -219
- package/Build/Workers/chunk-YGFVAGYF.js +0 -630
- package/Build/Workers/chunk-YIIACKQO.js +0 -368
- package/Build/Workers/chunk-YJGSP6PE.js +0 -511
- package/Build/Workers/chunk-YKU2Q3A2.js +0 -1287
- package/Build/Workers/chunk-Z4LR5EHE.js +0 -454
- package/Build/Workers/chunk-Z66EVE2A.js +0 -44
- package/Build/Workers/chunk-ZHIHHHTB.js +0 -414
- package/Build/Workers/chunk-ZMBHFYOX.js +0 -1344
- package/Build/Workers/chunk-ZNWHFSLE.js +0 -171
- package/Build/Workers/chunk-ZQLZG4IN.js +0 -2342
- package/Build/Workers/chunk-ZRTSMUZ2.js +0 -414
- package/Build/Workers/chunk-ZSGUV73H.js +0 -2342
- package/Build/Workers/chunk-ZZUVT5BM.js +0 -476
- 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";
|
|
@@ -209,6 +210,12 @@ class GlobeSurfaceTileProvider {
|
|
|
209
210
|
*/
|
|
210
211
|
this._clippingPolygons = undefined;
|
|
211
212
|
|
|
213
|
+
this._clippingPolygonsDirty = false;
|
|
214
|
+
|
|
215
|
+
this._removeClippingPolygonAdded = undefined;
|
|
216
|
+
|
|
217
|
+
this._removeClippingPolygonRemoved = undefined;
|
|
218
|
+
|
|
212
219
|
/**
|
|
213
220
|
* A property specifying a {@link Rectangle} used to selectively limit terrain and imagery rendering.
|
|
214
221
|
* @type {Rectangle}
|
|
@@ -348,7 +355,33 @@ class GlobeSurfaceTileProvider {
|
|
|
348
355
|
}
|
|
349
356
|
|
|
350
357
|
set clippingPolygons(value) {
|
|
358
|
+
if (value === this._clippingPolygons) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
|
|
351
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);
|
|
352
385
|
}
|
|
353
386
|
|
|
354
387
|
/**
|
|
@@ -384,7 +417,8 @@ class GlobeSurfaceTileProvider {
|
|
|
384
417
|
// Record regions dirtied by changed collections, re-bake overlapping
|
|
385
418
|
// tiles, and build vector data for new surface tiles.
|
|
386
419
|
const vectorProvider = this._vectorProvider;
|
|
387
|
-
vectorProvider.
|
|
420
|
+
vectorProvider.minimumTileScreenPixels = minimumTileScreenPixels(this);
|
|
421
|
+
vectorProvider.update(frameState.frameNumber);
|
|
388
422
|
this._quadtree.forEachRenderedTile(
|
|
389
423
|
/** @param {QuadtreeTile} tile */
|
|
390
424
|
(tile) => {
|
|
@@ -397,6 +431,7 @@ class GlobeSurfaceTileProvider {
|
|
|
397
431
|
tile.level,
|
|
398
432
|
frameState.context,
|
|
399
433
|
surfaceTile.vectorData,
|
|
434
|
+
HeightReference.CLAMP_TO_TERRAIN,
|
|
400
435
|
);
|
|
401
436
|
} else {
|
|
402
437
|
surfaceTile.vectorData = vectorProvider.requestTileData(
|
|
@@ -404,6 +439,7 @@ class GlobeSurfaceTileProvider {
|
|
|
404
439
|
tile.y,
|
|
405
440
|
tile.level,
|
|
406
441
|
frameState.context,
|
|
442
|
+
HeightReference.CLAMP_TO_TERRAIN,
|
|
407
443
|
);
|
|
408
444
|
}
|
|
409
445
|
},
|
|
@@ -447,8 +483,6 @@ class GlobeSurfaceTileProvider {
|
|
|
447
483
|
if (defined(clippingPolygons) && clippingPolygons.enabled) {
|
|
448
484
|
// @ts-expect-error Missing types.
|
|
449
485
|
clippingPolygons.update(frameState);
|
|
450
|
-
// @ts-expect-error Missing types.
|
|
451
|
-
clippingPolygons.queueCommands(frameState);
|
|
452
486
|
}
|
|
453
487
|
|
|
454
488
|
this._usedDrawCommands = 0;
|
|
@@ -555,6 +589,10 @@ class GlobeSurfaceTileProvider {
|
|
|
555
589
|
);
|
|
556
590
|
}
|
|
557
591
|
|
|
592
|
+
if (this._clippingPolygonsDirty) {
|
|
593
|
+
releaseClippingPolygonData(this);
|
|
594
|
+
}
|
|
595
|
+
|
|
558
596
|
// Add the tile render commands to the command list, sorted by texture count.
|
|
559
597
|
const tilesToRenderByTextureCount = this._tilesToRenderByTextureCount;
|
|
560
598
|
for (
|
|
@@ -575,6 +613,7 @@ class GlobeSurfaceTileProvider {
|
|
|
575
613
|
) {
|
|
576
614
|
const tile = tilesToRender[tileIndex];
|
|
577
615
|
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
616
|
+
updateTileClippingPolygonData(this, tile, surfaceTile, frameState);
|
|
578
617
|
const tileBoundingRegion = surfaceTile.tileBoundingRegion;
|
|
579
618
|
addDrawCommandsForTile(this, tile, frameState);
|
|
580
619
|
frameState.minimumTerrainHeight = Math.min(
|
|
@@ -594,7 +633,16 @@ class GlobeSurfaceTileProvider {
|
|
|
594
633
|
// Add the tile pick commands from the tiles drawn last frame.
|
|
595
634
|
const drawCommands = this._drawCommands;
|
|
596
635
|
for (let i = 0, length = this._usedDrawCommands; i < length; ++i) {
|
|
597
|
-
|
|
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);
|
|
598
646
|
}
|
|
599
647
|
}
|
|
600
648
|
|
|
@@ -1161,8 +1209,7 @@ class GlobeSurfaceTileProvider {
|
|
|
1161
1209
|
this._tileProvider = this._tileProvider && this._tileProvider.destroy();
|
|
1162
1210
|
this._clippingPlanes =
|
|
1163
1211
|
this._clippingPlanes && this._clippingPlanes.destroy();
|
|
1164
|
-
this._clippingPolygons =
|
|
1165
|
-
this._clippingPolygons && this._clippingPolygons.destroy();
|
|
1212
|
+
this._clippingPolygons = undefined;
|
|
1166
1213
|
this._removeLayerAddedListener =
|
|
1167
1214
|
this._removeLayerAddedListener && this._removeLayerAddedListener();
|
|
1168
1215
|
this._removeLayerRemovedListener =
|
|
@@ -1171,6 +1218,11 @@ class GlobeSurfaceTileProvider {
|
|
|
1171
1218
|
this._removeLayerMovedListener && this._removeLayerMovedListener();
|
|
1172
1219
|
this._removeLayerShownListener =
|
|
1173
1220
|
this._removeLayerShownListener && this._removeLayerShownListener();
|
|
1221
|
+
this._removeClippingPolygonAdded =
|
|
1222
|
+
this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
|
|
1223
|
+
this._removeClippingPolygonRemoved =
|
|
1224
|
+
this._removeClippingPolygonRemoved &&
|
|
1225
|
+
this._removeClippingPolygonRemoved();
|
|
1174
1226
|
|
|
1175
1227
|
return destroyObject(this);
|
|
1176
1228
|
}
|
|
@@ -1325,6 +1377,40 @@ class GlobeSurfaceTileProvider {
|
|
|
1325
1377
|
}
|
|
1326
1378
|
}
|
|
1327
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
|
+
|
|
1328
1414
|
function sortTileImageryByLayerIndex(a, b) {
|
|
1329
1415
|
let aImagery = a.loadingImagery;
|
|
1330
1416
|
if (!defined(aImagery)) {
|
|
@@ -1339,6 +1425,81 @@ function sortTileImageryByLayerIndex(a, b) {
|
|
|
1339
1425
|
return aImagery.imageryLayer._layerIndex - bImagery.imageryLayer._layerIndex;
|
|
1340
1426
|
}
|
|
1341
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
|
+
|
|
1342
1503
|
/**
|
|
1343
1504
|
* @param {GlobeSurfaceTileProvider} surface
|
|
1344
1505
|
* @param {FrameState} frameState
|
|
@@ -1910,22 +2071,6 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1910
2071
|
style.alpha = this.properties.clippingPlanesEdgeWidth;
|
|
1911
2072
|
return style;
|
|
1912
2073
|
},
|
|
1913
|
-
u_clippingDistance: function () {
|
|
1914
|
-
const texture =
|
|
1915
|
-
globeSurfaceTileProvider._clippingPolygons.clippingTexture;
|
|
1916
|
-
if (defined(texture)) {
|
|
1917
|
-
return texture;
|
|
1918
|
-
}
|
|
1919
|
-
return frameState.context.defaultTexture;
|
|
1920
|
-
},
|
|
1921
|
-
u_clippingExtents: function () {
|
|
1922
|
-
// @ts-expect-error Missing types.
|
|
1923
|
-
const texture = globeSurfaceTileProvider._clippingPolygons.extentsTexture;
|
|
1924
|
-
if (defined(texture)) {
|
|
1925
|
-
return texture;
|
|
1926
|
-
}
|
|
1927
|
-
return frameState.context.defaultTexture;
|
|
1928
|
-
},
|
|
1929
2074
|
u_minimumBrightness: function () {
|
|
1930
2075
|
return frameState.fog.minimumBrightness;
|
|
1931
2076
|
},
|
|
@@ -1972,6 +2117,12 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
1972
2117
|
this.properties.vectorColorTexture ?? frameState.context.defaultTexture
|
|
1973
2118
|
);
|
|
1974
2119
|
},
|
|
2120
|
+
u_vectorPickColorTexture: function () {
|
|
2121
|
+
return (
|
|
2122
|
+
this.properties.vectorPickColorTexture ??
|
|
2123
|
+
frameState.context.defaultTexture
|
|
2124
|
+
);
|
|
2125
|
+
},
|
|
1975
2126
|
u_vectorSegmentPrimitiveIndicesTexture: function () {
|
|
1976
2127
|
return (
|
|
1977
2128
|
this.properties.vectorSegmentPrimitiveIndicesTexture ??
|
|
@@ -2002,6 +2153,26 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
2002
2153
|
frameState.context.defaultTexture
|
|
2003
2154
|
);
|
|
2004
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
|
+
},
|
|
2005
2176
|
|
|
2006
2177
|
// make a separate object so that changes to the properties are seen on
|
|
2007
2178
|
// derived commands that combine another uniform map with this one.
|
|
@@ -2068,11 +2239,17 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
|
|
|
2068
2239
|
vectorSegmentTexture: undefined,
|
|
2069
2240
|
vectorWidthTexture: undefined,
|
|
2070
2241
|
vectorColorTexture: undefined,
|
|
2242
|
+
vectorPickColorTexture: undefined,
|
|
2071
2243
|
vectorSegmentPrimitiveIndicesTexture: undefined,
|
|
2072
2244
|
vectorGridCellIndicesTexture: undefined,
|
|
2073
2245
|
vectorPolygonEdgeTexture: undefined,
|
|
2074
2246
|
vectorPolygonEdgePrimitiveIndicesTexture: undefined,
|
|
2075
2247
|
vectorPolygonGridCellIndicesTexture: undefined,
|
|
2248
|
+
vectorMetersPerUv: new Cartesian2(),
|
|
2249
|
+
|
|
2250
|
+
clippingEdgeTexture: undefined,
|
|
2251
|
+
clippingEdgePrimitiveIndicesTexture: undefined,
|
|
2252
|
+
clippingGridCellIndicesTexture: undefined,
|
|
2076
2253
|
},
|
|
2077
2254
|
};
|
|
2078
2255
|
|
|
@@ -2312,6 +2489,7 @@ const surfaceShaderSetOptionsScratch = {
|
|
|
2312
2489
|
colorToAlpha: undefined,
|
|
2313
2490
|
hasGeodeticSurfaceNormals: undefined,
|
|
2314
2491
|
hasExaggeration: undefined,
|
|
2492
|
+
vectorAntialias: undefined,
|
|
2315
2493
|
};
|
|
2316
2494
|
|
|
2317
2495
|
const defaultUndergroundColor = Color.TRANSPARENT;
|
|
@@ -2326,6 +2504,10 @@ const defaultUndergroundColorAlphaByDistance = new NearFarScalar();
|
|
|
2326
2504
|
function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
2327
2505
|
const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
|
|
2328
2506
|
|
|
2507
|
+
if (isTileClippedAwayByInversePolygons(tileProvider, surfaceTile)) {
|
|
2508
|
+
return;
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2329
2511
|
if (!defined(surfaceTile.vertexArray)) {
|
|
2330
2512
|
if (surfaceTile.fill === undefined) {
|
|
2331
2513
|
// No fill was created for this tile, probably because this tile is not connected to
|
|
@@ -2445,8 +2627,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2445
2627
|
defined(tileProvider.clippingPolygons) &&
|
|
2446
2628
|
tileProvider.clippingPolygons.enabled
|
|
2447
2629
|
) {
|
|
2448
|
-
|
|
2449
|
-
|
|
2630
|
+
// Vector polygon clipping samples three textures: edges, per-edge
|
|
2631
|
+
// primitive indices, and the grid cell index header.
|
|
2632
|
+
maxTextures -= 3;
|
|
2450
2633
|
}
|
|
2451
2634
|
|
|
2452
2635
|
maxTextures -= globeTranslucencyState.numberOfTextureUniforms;
|
|
@@ -2565,6 +2748,8 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
2565
2748
|
surfaceShaderSetOptions.clippedByBoundaries = surfaceTile.clippedByBoundaries;
|
|
2566
2749
|
surfaceShaderSetOptions.hasGeodeticSurfaceNormals = hasGeodeticSurfaceNormals;
|
|
2567
2750
|
surfaceShaderSetOptions.hasExaggeration = hasExaggeration;
|
|
2751
|
+
surfaceShaderSetOptions.vectorAntialias =
|
|
2752
|
+
tileProvider.vectorProvider.antialias;
|
|
2568
2753
|
|
|
2569
2754
|
const tileImageryCollection = surfaceTile.imagery;
|
|
2570
2755
|
let imageryIndex = 0;
|
|
@@ -3019,6 +3204,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
3019
3204
|
vectorData.polylineSegmentTexture;
|
|
3020
3205
|
uniformMapProperties.vectorWidthTexture = vectorData.widthTexture;
|
|
3021
3206
|
uniformMapProperties.vectorColorTexture = vectorData.colorTexture;
|
|
3207
|
+
uniformMapProperties.vectorPickColorTexture = vectorData.pickColorTexture;
|
|
3022
3208
|
uniformMapProperties.vectorSegmentPrimitiveIndicesTexture =
|
|
3023
3209
|
vectorData.polylineSegmentPrimitiveIndicesTexture;
|
|
3024
3210
|
uniformMapProperties.vectorGridCellIndicesTexture =
|
|
@@ -3029,15 +3215,32 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
3029
3215
|
vectorData.polygonEdgePrimitiveIndicesTexture;
|
|
3030
3216
|
uniformMapProperties.vectorPolygonGridCellIndicesTexture =
|
|
3031
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;
|
|
3032
3232
|
}
|
|
3033
3233
|
|
|
3034
3234
|
// update clipping polygons
|
|
3035
3235
|
const clippingPolygons = tileProvider._clippingPolygons;
|
|
3236
|
+
const hasClippingPolygonGeometry =
|
|
3237
|
+
(clippingPolygonData?.polygonRings.length ?? 0) > 0;
|
|
3036
3238
|
const clippingPolygonsEnabled =
|
|
3037
3239
|
defined(clippingPolygons) &&
|
|
3038
3240
|
clippingPolygons.enabled &&
|
|
3039
3241
|
clippingPolygons.length > 0 &&
|
|
3040
|
-
tile.isClipped
|
|
3242
|
+
tile.isClipped &&
|
|
3243
|
+
hasClippingPolygonGeometry;
|
|
3041
3244
|
|
|
3042
3245
|
surfaceShaderSetOptions.numberOfDayTextures = numberOfDayTextures;
|
|
3043
3246
|
surfaceShaderSetOptions.applyBrightness = applyBrightness;
|
|
@@ -3068,6 +3271,10 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
|
|
|
3068
3271
|
command.shaderProgram = tileProvider._surfaceShaderSet.getShaderProgram(
|
|
3069
3272
|
surfaceShaderSetOptions,
|
|
3070
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;
|
|
3071
3278
|
command.castShadows = castShadows;
|
|
3072
3279
|
command.receiveShadows = receiveShadows;
|
|
3073
3280
|
command.renderState = renderState;
|
|
@@ -14,6 +14,8 @@ import PrimitiveType from "../Core/PrimitiveType.js";
|
|
|
14
14
|
import Quaternion from "../Core/Quaternion.js";
|
|
15
15
|
import RuntimeError from "../Core/RuntimeError.js";
|
|
16
16
|
import Sampler from "../Renderer/Sampler.js";
|
|
17
|
+
import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.js";
|
|
18
|
+
import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
|
|
17
19
|
import getAccessorByteStride from "./GltfPipeline/getAccessorByteStride.js";
|
|
18
20
|
import getComponentReader from "./GltfPipeline/getComponentReader.js";
|
|
19
21
|
import numberOfComponentsForType from "./GltfPipeline/numberOfComponentsForType.js";
|
|
@@ -1570,7 +1572,41 @@ function loadIndices(
|
|
|
1570
1572
|
return indicesPlan;
|
|
1571
1573
|
}
|
|
1572
1574
|
|
|
1573
|
-
|
|
1575
|
+
/**
|
|
1576
|
+
* Returns a copy of <code>sampler</code> with its minification and magnification
|
|
1577
|
+
* filters replaced. Undefined filters keep the value already on the sampler, and
|
|
1578
|
+
* every other property, in particular the wrap modes declared by the glTF, is
|
|
1579
|
+
* carried over unchanged.
|
|
1580
|
+
*
|
|
1581
|
+
* @param {Sampler} sampler The sampler created from the glTF.
|
|
1582
|
+
* @param {TextureMinificationFilter} [minificationFilter] The minification filter to apply instead of the one on <code>sampler</code>.
|
|
1583
|
+
* @param {TextureMagnificationFilter} [magnificationFilter] The magnification filter to apply instead of the one on <code>sampler</code>.
|
|
1584
|
+
* @returns {Sampler} A sampler using the given filters and the original wrap modes.
|
|
1585
|
+
*
|
|
1586
|
+
* @private
|
|
1587
|
+
*/
|
|
1588
|
+
function overrideSamplerFilters(
|
|
1589
|
+
sampler,
|
|
1590
|
+
minificationFilter,
|
|
1591
|
+
magnificationFilter,
|
|
1592
|
+
) {
|
|
1593
|
+
return new Sampler({
|
|
1594
|
+
wrapR: sampler.wrapR,
|
|
1595
|
+
wrapS: sampler.wrapS,
|
|
1596
|
+
wrapT: sampler.wrapT,
|
|
1597
|
+
minificationFilter: minificationFilter ?? sampler.minificationFilter,
|
|
1598
|
+
magnificationFilter: magnificationFilter ?? sampler.magnificationFilter,
|
|
1599
|
+
maximumAnisotropy: sampler.maximumAnisotropy,
|
|
1600
|
+
});
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
function loadTexture(
|
|
1604
|
+
loader,
|
|
1605
|
+
textureInfo,
|
|
1606
|
+
frameState,
|
|
1607
|
+
minificationFilterOverride,
|
|
1608
|
+
magnificationFilterOverride,
|
|
1609
|
+
) {
|
|
1574
1610
|
const gltf = loader.gltfJson;
|
|
1575
1611
|
const imageId = GltfLoaderUtil.getImageIdFromTexture({
|
|
1576
1612
|
gltf: gltf,
|
|
@@ -1618,9 +1654,17 @@ function loadTexture(loader, textureInfo, frameState, samplerOverride) {
|
|
|
1618
1654
|
// Save this finish callback by the loader index so it can be called
|
|
1619
1655
|
// in process().
|
|
1620
1656
|
loader._textureCallbacks[index] = () => {
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1657
|
+
const texture = textureLoader.texture;
|
|
1658
|
+
textureReader.texture = texture;
|
|
1659
|
+
if (
|
|
1660
|
+
defined(minificationFilterOverride) ||
|
|
1661
|
+
defined(magnificationFilterOverride)
|
|
1662
|
+
) {
|
|
1663
|
+
texture.sampler = overrideSamplerFilters(
|
|
1664
|
+
texture.sampler,
|
|
1665
|
+
minificationFilterOverride,
|
|
1666
|
+
magnificationFilterOverride,
|
|
1667
|
+
);
|
|
1624
1668
|
}
|
|
1625
1669
|
};
|
|
1626
1670
|
|
|
@@ -2013,7 +2057,10 @@ function loadFeatureIdTexture(
|
|
|
2013
2057
|
loader,
|
|
2014
2058
|
textureInfo,
|
|
2015
2059
|
frameState,
|
|
2016
|
-
|
|
2060
|
+
// Feature ID textures require nearest sampling. Only the filters are
|
|
2061
|
+
// overridden so the wrap modes declared by the glTF are preserved.
|
|
2062
|
+
TextureMinificationFilter.NEAREST,
|
|
2063
|
+
TextureMagnificationFilter.NEAREST,
|
|
2017
2064
|
);
|
|
2018
2065
|
|
|
2019
2066
|
// Though the new channel index is more future-proof, this implementation
|
|
@@ -2048,7 +2095,10 @@ function loadFeatureIdTextureLegacy(
|
|
|
2048
2095
|
loader,
|
|
2049
2096
|
textureInfo,
|
|
2050
2097
|
frameState,
|
|
2051
|
-
|
|
2098
|
+
// Feature ID textures require nearest sampling. Only the filters are
|
|
2099
|
+
// overridden so the wrap modes declared by the glTF are preserved.
|
|
2100
|
+
TextureMinificationFilter.NEAREST,
|
|
2101
|
+
TextureMagnificationFilter.NEAREST,
|
|
2052
2102
|
);
|
|
2053
2103
|
|
|
2054
2104
|
featureIdTexture.textureReader.channels = featureIds.channels;
|
|
@@ -12,8 +12,10 @@ import defined from "../Core/defined.js";
|
|
|
12
12
|
|
|
13
13
|
/** @import Cesium3DTile from "./Cesium3DTile.js"; */
|
|
14
14
|
/** @import Cesium3DTileset from "./Cesium3DTileset.js"; */
|
|
15
|
+
/** @import HeightReference from "./HeightReference.js"; */
|
|
15
16
|
/** @import Rectangle from "../Core/Rectangle.js"; */
|
|
16
17
|
/** @import Resource from "../Core/Resource.js"; */
|
|
18
|
+
/** @import Scene from "./Scene.js"; */
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* A Mapbox Vector Tiles (MVT) data provider. Loads .mvt or .pbf tiles, converting tiles
|
|
@@ -36,6 +38,12 @@ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
|
|
|
36
38
|
* @param {number} [options.maxZoom=14] Maximum zoom level represented in the generated tileset.
|
|
37
39
|
* @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
|
|
38
40
|
* @param {string} [options.featureIdProperty] MVT property name to use as feature ID.
|
|
41
|
+
* @param {HeightReference} [options.heightReference] Drapes the decoded points, lines and polygons onto the
|
|
42
|
+
* surfaces selected by the value: {@link HeightReference.CLAMP_TO_TERRAIN} drapes onto the globe,
|
|
43
|
+
* {@link HeightReference.CLAMP_TO_3D_TILE} drapes onto 3D Tiles and models, and
|
|
44
|
+
* {@link HeightReference.CLAMP_TO_GROUND} drapes onto both. Requires <code>options.scene</code>.
|
|
45
|
+
* @param {Scene} [options.scene] The scene the generated tileset is rendered in, required when
|
|
46
|
+
* <code>options.heightReference</code> is a clamping value.
|
|
39
47
|
* @returns {Promise<MVTDataProvider>}
|
|
40
48
|
*/
|
|
41
49
|
static async fromUrl(url, options) {
|
|
@@ -51,6 +59,7 @@ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
|
|
|
51
59
|
*/
|
|
52
60
|
_createTilesetLoadOptions() {
|
|
53
61
|
return {
|
|
62
|
+
...super._createTilesetLoadOptions(),
|
|
54
63
|
skipLevelOfDetail: false,
|
|
55
64
|
enablePick: true,
|
|
56
65
|
featureIdLabel: "featureId_0",
|