@cesium/engine 26.2.0 → 26.3.1-wasm.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 +707 -600
- package/Build/Workers/chunk-2P3WKV6V.js +290 -0
- package/Build/Workers/{chunk-M6QKXVAU.js → chunk-2U5272QU.js} +17 -17
- package/Build/Workers/{chunk-NEFDMMLY.js → chunk-4KCOC6OZ.js} +8 -10
- package/Build/Workers/{chunk-SJYSIOEM.js → chunk-5FULJNWY.js} +11 -13
- package/Build/Workers/{chunk-NCL22ZUX.js → chunk-65ZF23AQ.js} +1 -1
- package/Build/Workers/{chunk-KP5QD7WU.js → chunk-6D5534B7.js} +10 -12
- package/Build/Workers/{chunk-FX3VEAIU.js → chunk-6GFMBHBD.js} +19 -19
- package/Build/Workers/{chunk-A62YI6S6.js → chunk-6VRGQF3D.js} +4 -4
- package/Build/Workers/{chunk-DSGLDRTI.js → chunk-6XUIECFB.js} +4 -6
- package/Build/Workers/{chunk-HDL4HOXZ.js → chunk-7KWUH6RK.js} +14 -14
- package/Build/Workers/{chunk-UAZUP4I5.js → chunk-7ZBJRQQT.js} +7 -7
- package/Build/Workers/{chunk-CRCGE4J4.js → chunk-AEHANE5A.js} +991 -5612
- package/Build/Workers/chunk-AUU74SIZ.js +2420 -0
- package/Build/Workers/{chunk-ARZICEEP.js → chunk-B6V5NMIE.js} +13 -11
- package/Build/Workers/{chunk-76FDC45O.js → chunk-BRQ52ASU.js} +15 -17
- package/Build/Workers/{chunk-SA2A2AN5.js → chunk-FVLSQBPH.js} +7 -14
- package/Build/Workers/{chunk-CUTRKXUQ.js → chunk-IFKM2GZR.js} +12 -12
- package/Build/Workers/{chunk-NSKZ6SBK.js → chunk-KF6OEWVT.js} +17 -17
- package/Build/Workers/{chunk-O3DKEX7Q.js → chunk-KOAXSU77.js} +5 -7
- package/Build/Workers/{chunk-2Z4ZLVOD.js → chunk-KRVYCMGN.js} +6 -6
- package/Build/Workers/{chunk-SXSP3JHS.js → chunk-LTZRLNQP.js} +1 -1
- package/Build/Workers/{chunk-6FZDPMTO.js → chunk-M7WEAGWT.js} +8 -8
- package/Build/Workers/{chunk-NXGQBQWE.js → chunk-MJTLGN63.js} +14 -14
- package/Build/Workers/{chunk-XCBZVTIV.js → chunk-MUNZ77KV.js} +1 -1
- package/Build/Workers/{chunk-NLLCQBX3.js → chunk-NC5BUJEF.js} +2 -2
- package/Build/Workers/chunk-NYKURYFR.js +2131 -0
- package/Build/Workers/{chunk-5LSOO2KD.js → chunk-NZAQG57U.js} +7 -7
- package/Build/Workers/{chunk-DZUFEE4L.js → chunk-O5GUOP2G.js} +5 -7
- package/Build/Workers/{chunk-D6AY775A.js → chunk-OQUOLQTN.js} +8 -10
- package/Build/Workers/{chunk-CDJDJ5LK.js → chunk-OUG5JB2K.js} +16 -14
- package/Build/Workers/{chunk-ACTVJHSP.js → chunk-P4SDLSGF.js} +13 -6
- package/Build/Workers/{chunk-MAAHFYPC.js → chunk-P6PC2OIM.js} +7 -7
- package/Build/Workers/{chunk-6YR6JBMY.js → chunk-PPRK3XQU.js} +31 -35
- package/Build/Workers/{chunk-IMBVP57H.js → chunk-QGTYLWOT.js} +2 -2
- package/Build/Workers/{chunk-FCP2QY4G.js → chunk-QHTLIQUH.js} +5 -7
- package/Build/Workers/{chunk-EZGQPOIG.js → chunk-ROHWZQZ5.js} +5 -5
- package/Build/Workers/{chunk-B3QHNA4A.js → chunk-SNUWISJO.js} +6 -8
- package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-T67YY3KP.js} +4 -2
- package/Build/Workers/{chunk-IJZJMIUY.js → chunk-TF5473GK.js} +13 -13
- package/Build/Workers/{chunk-OZGPS7FB.js → chunk-THHFTMAL.js} +4 -6
- package/Build/Workers/{chunk-PRWUMCXF.js → chunk-UFCZ62WM.js} +15 -13
- package/Build/Workers/{chunk-27FWRTJI.js → chunk-UV2YC2Q5.js} +11 -11
- package/Build/Workers/{chunk-N7CCOFLX.js → chunk-V4ICCWYA.js} +1 -1
- package/Build/Workers/{chunk-GHXVQVUM.js → chunk-VC6XXI2Z.js} +9 -9
- package/Build/Workers/{chunk-I74ZH5LK.js → chunk-VXJ6P4UI.js} +10 -10
- package/Build/Workers/{chunk-KGXSYGBG.js → chunk-W2BKP7G7.js} +15 -17
- package/Build/Workers/{chunk-LDRQSYBN.js → chunk-WMVGNBSH.js} +2 -2
- package/Build/Workers/{chunk-SMTGMFBL.js → chunk-XFZMQZSZ.js} +4 -4
- package/Build/Workers/{chunk-7MM3N2VE.js → chunk-XJ532R6R.js} +20 -20
- package/Build/Workers/{chunk-NJVBJG63.js → chunk-YJNU4SM4.js} +5 -5
- package/Build/Workers/{chunk-DIGUUD6G.js → chunk-YJRDTEHQ.js} +8 -8
- package/Build/Workers/chunk-YUICDZKO.js +2660 -0
- package/Build/Workers/{chunk-O3XFXGPZ.js → chunk-Z3DEVGJV.js} +7 -7
- package/Build/Workers/{chunk-3PSS3T43.js → chunk-ZECGI7UZ.js} +4 -4
- package/Build/Workers/{chunk-QFSSCLLZ.js → chunk-ZFLPVPUJ.js} +6 -8
- package/Build/Workers/{chunk-2RGJPWQX.js → chunk-ZIM5H2DB.js} +11 -11
- package/Build/Workers/{chunk-GVA7XQI2.js → chunk-ZSQMGGSB.js} +14 -16
- package/Build/Workers/{chunk-FU4BGABC.js → chunk-ZWYRGMBK.js} +16 -18
- package/Build/Workers/{chunk-JKXV6PG5.js → chunk-ZY733NZA.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +20 -19
- package/Build/Workers/createCircleGeometry.js +28 -27
- package/Build/Workers/createCircleOutlineGeometry.js +21 -20
- package/Build/Workers/createCoplanarPolygonGeometry.js +34 -34
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -32
- package/Build/Workers/createCorridorGeometry.js +31 -31
- package/Build/Workers/createCorridorOutlineGeometry.js +30 -30
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +22 -21
- 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 +27 -26
- package/Build/Workers/createGroundPolylineGeometry.js +27 -26
- package/Build/Workers/createPlaneGeometry.js +18 -17
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +35 -35
- package/Build/Workers/createPolygonOutlineGeometry.js +34 -34
- package/Build/Workers/createPolylineGeometry.js +28 -29
- package/Build/Workers/createPolylineVolumeGeometry.js +34 -35
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +30 -31
- package/Build/Workers/createRectangleGeometry.js +30 -30
- package/Build/Workers/createRectangleOutlineGeometry.js +23 -24
- package/Build/Workers/createSimplePolylineGeometry.js +26 -27
- 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 +17 -16
- 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 +17 -16
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +36 -26
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -24
- package/Build/Workers/createVerticesFromHeightmap.js +24 -25
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +27 -28
- package/Build/Workers/createWallOutlineGeometry.js +26 -27
- package/Build/Workers/decodeDraco.js +16 -12
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +336 -337
- package/Build/Workers/decodeI3S.js +17 -12
- package/Build/Workers/{chunk-GXWQZBAI.js → decodeMeshopt.js} +23 -29
- package/Build/Workers/decodeSpz.js +1960 -0
- package/Build/Workers/gaussianSplatSorter.js +13 -6
- package/Build/Workers/gaussianSplatTextureGenerator.js +13 -6
- package/Build/Workers/incrementallyBuildTerrainPicker.js +9 -10
- package/Build/Workers/transcodeKTX2.js +26 -12
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/Cesium3DTilesTerrainData.js +11 -1
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +33 -23
- 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/KTX2Transcoder.js +99 -5
- package/Source/Core/Resource.js +2 -0
- package/Source/Core/SnapService.js +63 -0
- package/Source/Core/TaskProcessor.js +249 -129
- package/Source/Core/TrustedServers.js +34 -1
- package/Source/Core/VectorPipeline.js +139 -45
- package/Source/Core/VectorProvider.js +311 -71
- package/Source/Core/WebAssemblyWorkerInitializer.js +125 -0
- package/Source/Core/fetchWebAssemblyBinary.js +52 -0
- 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/GaussianSplatPrimitive.js +153 -66
- 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/GltfBufferViewLoader.js +25 -13
- package/Source/Scene/GltfLoader.js +56 -6
- package/Source/Scene/GltfSpzLoader.js +5 -4
- 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/SpzDecoder.js +106 -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/Source/ThirdParty/zip-module.wasm +0 -0
- package/Source/Workers/createTaskProcessorWorker.js +2 -0
- package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +13 -1
- package/Source/Workers/decodeDraco.js +7 -3
- package/Source/Workers/decodeI3S.js +7 -3
- package/Source/Workers/decodeMeshopt.js +21 -0
- package/Source/Workers/decodeSpz.js +20 -0
- package/Source/Workers/gaussianSplatSorter.js +7 -3
- package/Source/Workers/gaussianSplatTextureGenerator.js +7 -3
- package/Source/Workers/transcodeKTX2.js +22 -5
- package/index.d.ts +649 -55
- package/index.js +23 -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-36NI5E6W.js +0 -3820
- 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-5YPQBFRD.js +0 -519
- 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-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-ADX3CBKD.js +0 -9234
- package/Build/Workers/chunk-AF7DTMJ7.js +0 -398
- package/Build/Workers/chunk-AHWAZRBV.js +0 -82
- package/Build/Workers/chunk-AJSFRY4U.js +0 -1344
- 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-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-DBD5WWG2.js +0 -959
- 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-EOWDZN5S.js +0 -288
- 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-ILME5BXA.js +0 -301
- package/Build/Workers/chunk-IOO7Z2AV.js +0 -57
- package/Build/Workers/chunk-IUIFLOYO.js +0 -44
- package/Build/Workers/chunk-J73T2VOY.js +0 -171
- 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-XLQZNQ4Z.js +0 -163
- 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
|
@@ -82,6 +82,7 @@ class GlobeSurfaceShader {
|
|
|
82
82
|
* @property {boolean} [hasExaggeration]
|
|
83
83
|
* @property {boolean} [showUndergroundColor]
|
|
84
84
|
* @property {boolean} [translucent]
|
|
85
|
+
* @property {boolean} [vectorAntialias]
|
|
85
86
|
* @private
|
|
86
87
|
*/
|
|
87
88
|
|
|
@@ -141,6 +142,12 @@ class GlobeSurfaceShaderSet {
|
|
|
141
142
|
const translucent = options.translucent;
|
|
142
143
|
const vectorData = surfaceTile.vectorData;
|
|
143
144
|
const hasVectorLayer = vectorData?.show;
|
|
145
|
+
const hasVectorPolylines = hasVectorLayer && vectorData.hasPolylines;
|
|
146
|
+
const hasVectorPolygons = hasVectorLayer && vectorData.hasPolygons;
|
|
147
|
+
const vectorAntialias = hasVectorLayer && options.vectorAntialias;
|
|
148
|
+
const vectorWidthInMeters = hasVectorPolylines && vectorData.hasMeterWidths;
|
|
149
|
+
const vectorMixedWidthUnits =
|
|
150
|
+
vectorWidthInMeters && vectorData.hasPixelWidths;
|
|
144
151
|
|
|
145
152
|
let quantization = 0;
|
|
146
153
|
let quantizationDefine = "";
|
|
@@ -205,7 +212,12 @@ class GlobeSurfaceShaderSet {
|
|
|
205
212
|
(+translucent << 31)) >>>
|
|
206
213
|
0) +
|
|
207
214
|
(applyDayNightAlpha ? 0x100000000 : 0) +
|
|
208
|
-
(hasVectorLayer ? 0x200000000 : 0)
|
|
215
|
+
(hasVectorLayer ? 0x200000000 : 0) +
|
|
216
|
+
(hasVectorPolylines ? 0x400000000 : 0) +
|
|
217
|
+
(hasVectorPolygons ? 0x800000000 : 0) +
|
|
218
|
+
(vectorAntialias ? 0x1000000000 : 0) +
|
|
219
|
+
(vectorWidthInMeters ? 0x2000000000 : 0) +
|
|
220
|
+
(vectorMixedWidthUnits ? 0x4000000000 : 0);
|
|
209
221
|
|
|
210
222
|
let currentClippingShaderState = 0;
|
|
211
223
|
// @ts-expect-error Missing types.
|
|
@@ -263,12 +275,6 @@ class GlobeSurfaceShaderSet {
|
|
|
263
275
|
);
|
|
264
276
|
}
|
|
265
277
|
|
|
266
|
-
// Need to go before GlobeFS
|
|
267
|
-
if (currentClippingPolygonsShaderState !== 0) {
|
|
268
|
-
fs.sources.unshift(getPolygonClippingFunction(frameState.context));
|
|
269
|
-
vs.sources.unshift(getUnpackClippingFunction(frameState.context));
|
|
270
|
-
}
|
|
271
|
-
|
|
272
278
|
vs.defines.push(quantizationDefine);
|
|
273
279
|
fs.defines.push(
|
|
274
280
|
`TEXTURE_UNITS ${numberOfDayTextures}`,
|
|
@@ -364,20 +370,10 @@ class GlobeSurfaceShaderSet {
|
|
|
364
370
|
|
|
365
371
|
if (enableClippingPolygons) {
|
|
366
372
|
fs.defines.push("ENABLE_CLIPPING_POLYGONS");
|
|
367
|
-
vs.defines.push("ENABLE_CLIPPING_POLYGONS");
|
|
368
373
|
|
|
369
374
|
if (clippingPolygons.inverse) {
|
|
370
375
|
fs.defines.push("CLIPPING_INVERSE");
|
|
371
376
|
}
|
|
372
|
-
|
|
373
|
-
fs.defines.push(
|
|
374
|
-
// @ts-expect-error Missing types.
|
|
375
|
-
`CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
|
|
376
|
-
);
|
|
377
|
-
vs.defines.push(
|
|
378
|
-
// @ts-expect-error Missing types.
|
|
379
|
-
`CLIPPING_POLYGON_REGIONS_LENGTH ${clippingPolygons.extentsCount}`,
|
|
380
|
-
);
|
|
381
377
|
}
|
|
382
378
|
|
|
383
379
|
if (colorCorrect) {
|
|
@@ -397,9 +393,27 @@ class GlobeSurfaceShaderSet {
|
|
|
397
393
|
}
|
|
398
394
|
|
|
399
395
|
if (hasVectorLayer) {
|
|
400
|
-
vs.defines.push("HAS_VECTOR_LAYER");
|
|
401
396
|
fs.defines.push("HAS_VECTOR_LAYER");
|
|
402
|
-
|
|
397
|
+
if (hasVectorPolylines) {
|
|
398
|
+
fs.defines.push("HAS_VECTOR_POLYLINES");
|
|
399
|
+
}
|
|
400
|
+
if (hasVectorPolygons) {
|
|
401
|
+
fs.defines.push("HAS_VECTOR_POLYGONS");
|
|
402
|
+
}
|
|
403
|
+
if (vectorAntialias) {
|
|
404
|
+
fs.defines.push("VECTOR_ANTIALIAS");
|
|
405
|
+
}
|
|
406
|
+
if (vectorWidthInMeters) {
|
|
407
|
+
fs.defines.push("VECTOR_WIDTH_IN_METERS");
|
|
408
|
+
}
|
|
409
|
+
if (vectorMixedWidthUnits) {
|
|
410
|
+
fs.defines.push("VECTOR_WIDTH_MIXED_UNITS");
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// Polygon clipping builds on top of the same machinery vector rendering uses
|
|
415
|
+
if (hasVectorLayer || enableClippingPolygons) {
|
|
416
|
+
fs.sources.unshift(VectorCommon);
|
|
403
417
|
}
|
|
404
418
|
|
|
405
419
|
let computeDayColor =
|
|
@@ -538,41 +552,6 @@ function getPositionMode(sceneMode) {
|
|
|
538
552
|
return positionMode;
|
|
539
553
|
}
|
|
540
554
|
|
|
541
|
-
/**
|
|
542
|
-
* @param {Context} context
|
|
543
|
-
* @ignore
|
|
544
|
-
*/
|
|
545
|
-
function getPolygonClippingFunction(context) {
|
|
546
|
-
// return a noop for webgl1
|
|
547
|
-
// @ts-expect-error Missing types.
|
|
548
|
-
if (!context.webgl2) {
|
|
549
|
-
return `void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
|
|
550
|
-
}`;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
return `void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) {
|
|
554
|
-
czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex);
|
|
555
|
-
}`;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* @param {Context} context
|
|
560
|
-
* @ignore
|
|
561
|
-
*/
|
|
562
|
-
function getUnpackClippingFunction(context) {
|
|
563
|
-
// return a noop for webgl1
|
|
564
|
-
// @ts-expect-error Missing types.
|
|
565
|
-
if (!context.webgl2) {
|
|
566
|
-
return `vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
|
|
567
|
-
return vec4();
|
|
568
|
-
}`;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
return `vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) {
|
|
572
|
-
return czm_unpackClippingExtents(extentsTexture, index);
|
|
573
|
-
}`;
|
|
574
|
-
}
|
|
575
|
-
|
|
576
555
|
/**
|
|
577
556
|
* @param {boolean} useWebMercatorProjection
|
|
578
557
|
* @returns {string}
|
|
@@ -19,6 +19,7 @@ import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.j
|
|
|
19
19
|
import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
|
|
20
20
|
import TextureWrap from "../Renderer/TextureWrap.js";
|
|
21
21
|
import VertexArray from "../Renderer/VertexArray.js";
|
|
22
|
+
import ClippingPolygonCollection from "./ClippingPolygonCollection.js";
|
|
22
23
|
import ImageryState from "./ImageryState.js";
|
|
23
24
|
import QuadtreeTileLoadState from "./QuadtreeTileLoadState.js";
|
|
24
25
|
import TerrainState from "./TerrainState.js";
|
|
@@ -37,7 +38,8 @@ import TerrainState from "./TerrainState.js";
|
|
|
37
38
|
/** @import TerrainProvider from "../Core/TerrainProvider.js"; */
|
|
38
39
|
/** @import TileBoundingRegion from "./TileBoundingRegion.js"; */
|
|
39
40
|
/** @import TileImagery from "./TileImagery.js"; */
|
|
40
|
-
/** @import VectorProvider
|
|
41
|
+
/** @import VectorProvider from "../Core/VectorProvider.js"; */
|
|
42
|
+
/** @import { VectorTileData } from "../Core/VectorPipeline.js"; */
|
|
41
43
|
|
|
42
44
|
/**
|
|
43
45
|
* Contains additional information about a {@link QuadtreeTile} of the globe's surface, and
|
|
@@ -67,6 +69,12 @@ class GlobeSurfaceTile {
|
|
|
67
69
|
/** @type {VectorTileData} */
|
|
68
70
|
this.vectorData = undefined;
|
|
69
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Clipping polygons build on top of the vector tile data system (both rely on the same rendering technique).
|
|
74
|
+
* @type {VectorTileData}
|
|
75
|
+
*/
|
|
76
|
+
this.clippingPolygonData = undefined;
|
|
77
|
+
|
|
70
78
|
/** @type {VertexArray} */
|
|
71
79
|
this.vertexArray = undefined;
|
|
72
80
|
|
|
@@ -169,6 +177,11 @@ class GlobeSurfaceTile {
|
|
|
169
177
|
this.vectorData = undefined;
|
|
170
178
|
}
|
|
171
179
|
|
|
180
|
+
if (defined(this.clippingPolygonData)) {
|
|
181
|
+
ClippingPolygonCollection.releaseRectangleData(this.clippingPolygonData);
|
|
182
|
+
this.clippingPolygonData = undefined;
|
|
183
|
+
}
|
|
184
|
+
|
|
172
185
|
this.terrainData = undefined;
|
|
173
186
|
|
|
174
187
|
this.terrainState = TerrainState.UNLOADED;
|
|
@@ -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;
|
|
@@ -2,9 +2,11 @@ import Check from "../Core/Check.js";
|
|
|
2
2
|
import Frozen from "../Core/Frozen.js";
|
|
3
3
|
import defined from "../Core/defined.js";
|
|
4
4
|
import findMeshoptExtension from "./findMeshoptExtension.js";
|
|
5
|
-
import { MeshoptDecoder } from "meshoptimizer";
|
|
6
5
|
import ResourceLoader from "./ResourceLoader.js";
|
|
7
6
|
import ResourceLoaderState from "./ResourceLoaderState.js";
|
|
7
|
+
import TaskProcessor from "../Core/TaskProcessor.js";
|
|
8
|
+
|
|
9
|
+
const decodeMeshoptTaskProcessor = new TaskProcessor("decodeMeshopt");
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* Loads a glTF buffer view.
|
|
@@ -159,29 +161,39 @@ async function loadResources(loader) {
|
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
const bufferTypedArray = bufferLoader.typedArray;
|
|
162
|
-
|
|
164
|
+
let bufferViewTypedArray = new Uint8Array(
|
|
163
165
|
bufferTypedArray.buffer,
|
|
164
166
|
bufferTypedArray.byteOffset + loader._byteOffset,
|
|
165
167
|
loader._byteLength,
|
|
166
168
|
);
|
|
167
169
|
|
|
170
|
+
if (loader._hasMeshopt) {
|
|
171
|
+
// The buffer can be shared with other cached resources. Copy the encoded
|
|
172
|
+
// range before transferring it to the worker so the cache stays intact.
|
|
173
|
+
bufferViewTypedArray = new Uint8Array(bufferViewTypedArray);
|
|
174
|
+
}
|
|
175
|
+
|
|
168
176
|
// Unload the buffer
|
|
169
177
|
loader.unload();
|
|
170
178
|
|
|
171
179
|
loader._typedArray = bufferViewTypedArray;
|
|
172
180
|
if (loader._hasMeshopt) {
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
loader.
|
|
182
|
-
loader._meshoptFilter,
|
|
181
|
+
const result = await decodeMeshoptTaskProcessor.scheduleTask(
|
|
182
|
+
{
|
|
183
|
+
source: loader._typedArray,
|
|
184
|
+
count: loader._meshoptCount,
|
|
185
|
+
byteStride: loader._meshoptByteStride,
|
|
186
|
+
mode: loader._meshoptMode,
|
|
187
|
+
filter: loader._meshoptFilter,
|
|
188
|
+
},
|
|
189
|
+
[loader._typedArray.buffer],
|
|
183
190
|
);
|
|
184
|
-
|
|
191
|
+
|
|
192
|
+
if (loader.isDestroyed()) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
loader._typedArray = new Uint8Array(result);
|
|
185
197
|
}
|
|
186
198
|
|
|
187
199
|
loader._state = ResourceLoaderState.READY;
|