@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
|
@@ -13,6 +13,7 @@ import Ellipsoid from "../../Core/Ellipsoid.js";
|
|
|
13
13
|
import Event from "../../Core/Event.js";
|
|
14
14
|
import Matrix3 from "../../Core/Matrix3.js";
|
|
15
15
|
import Matrix4 from "../../Core/Matrix4.js";
|
|
16
|
+
import Rectangle from "../../Core/Rectangle.js";
|
|
16
17
|
import Resource from "../../Core/Resource.js";
|
|
17
18
|
import RuntimeError from "../../Core/RuntimeError.js";
|
|
18
19
|
import Pass from "../../Renderer/Pass.js";
|
|
@@ -46,6 +47,8 @@ import StyleCommandsNeeded from "./StyleCommandsNeeded.js";
|
|
|
46
47
|
import pickModel from "./pickModel.js";
|
|
47
48
|
import ModelImagery from "./ModelImagery.js";
|
|
48
49
|
|
|
50
|
+
/** @import { VectorTileData } from "../../Core/VectorPipeline.js"; */
|
|
51
|
+
|
|
49
52
|
/**
|
|
50
53
|
* <div class="notice">
|
|
51
54
|
* To construct a Model, call {@link Model.fromGltfAsync}. Do not call the constructor directly.
|
|
@@ -399,6 +402,30 @@ function Model(options) {
|
|
|
399
402
|
this._clippingPolygons = clippingPolygons;
|
|
400
403
|
}
|
|
401
404
|
this._clippingPolygonsState = 0; // If this value changes, the shaders need to be regenerated.
|
|
405
|
+
this._clippingPolygonsNeedRebake = false; // If true, the clipping textures are rebaked.
|
|
406
|
+
this._removeClippingPolygonAdded = undefined;
|
|
407
|
+
this._removeClippingPolygonRemoved = undefined;
|
|
408
|
+
updateClippingPolygonListeners(this);
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Vector lookup data baked for this model's bounding region by the scene's
|
|
412
|
+
* VectorProvider, draping vector data onto the model's surface.
|
|
413
|
+
* @type {VectorTileData|undefined}
|
|
414
|
+
* @ignore
|
|
415
|
+
*/
|
|
416
|
+
this._vectorData = undefined;
|
|
417
|
+
|
|
418
|
+
this._vectorLookupFlags = 0; // If this value changes, the shaders need to be regenerated.
|
|
419
|
+
|
|
420
|
+
/*
|
|
421
|
+
* Textures and other intermediate data used in polygon clipping workflows.
|
|
422
|
+
* Clipping polygons build on top of the vector tile data system (both rely on the same rendering technique), thus the type.
|
|
423
|
+
* @type {VectorTileData | undefined}
|
|
424
|
+
* @private
|
|
425
|
+
*/
|
|
426
|
+
this._clippingPolygonData = undefined;
|
|
427
|
+
|
|
428
|
+
this._rectangle = new Rectangle();
|
|
402
429
|
|
|
403
430
|
this._modelImagery = new ModelImagery(this);
|
|
404
431
|
|
|
@@ -1376,7 +1403,17 @@ Object.defineProperties(Model.prototype, {
|
|
|
1376
1403
|
if (value !== this._clippingPolygons) {
|
|
1377
1404
|
// Handle destroying old clipping polygons, new clipping polygons ownership
|
|
1378
1405
|
ClippingPolygonCollection.setOwner(value, this, "_clippingPolygons");
|
|
1406
|
+
updateClippingPolygonListeners(this);
|
|
1379
1407
|
this.resetDrawCommands();
|
|
1408
|
+
|
|
1409
|
+
this._clippingPolygonsState = 0;
|
|
1410
|
+
this._clippingPolygonsNeedRebake = true;
|
|
1411
|
+
if (defined(this._clippingPolygonData)) {
|
|
1412
|
+
ClippingPolygonCollection.releaseRectangleData(
|
|
1413
|
+
this._clippingPolygonData,
|
|
1414
|
+
);
|
|
1415
|
+
this._clippingPolygonData = undefined;
|
|
1416
|
+
}
|
|
1380
1417
|
}
|
|
1381
1418
|
},
|
|
1382
1419
|
},
|
|
@@ -1788,6 +1825,41 @@ Object.defineProperties(Model.prototype, {
|
|
|
1788
1825
|
},
|
|
1789
1826
|
});
|
|
1790
1827
|
|
|
1828
|
+
/**
|
|
1829
|
+
* A rectangle that bounds the model in geodetic coordinates. For 3D tile content with a
|
|
1830
|
+
* region bounding volume this is the tile's rectangle. Otherwise the model's bounding sphere
|
|
1831
|
+
* is projected onto the given ellipsoid.
|
|
1832
|
+
*
|
|
1833
|
+
* @param {Ellipsoid} [ellipsoid=Ellipsoid.default] Projects the bounding sphere (for models without a region bounding volume).
|
|
1834
|
+
* @returns {Rectangle} The bounding rectangle.
|
|
1835
|
+
*
|
|
1836
|
+
* @exception {DeveloperError} The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.
|
|
1837
|
+
*
|
|
1838
|
+
* @private
|
|
1839
|
+
*/
|
|
1840
|
+
Model.prototype.getRectangle = function (ellipsoid) {
|
|
1841
|
+
//>>includeStart('debug', pragmas.debug);
|
|
1842
|
+
if (!this._ready) {
|
|
1843
|
+
throw new DeveloperError(
|
|
1844
|
+
"The model is not loaded. Use Model.readyEvent or wait for Model.ready to be true.",
|
|
1845
|
+
);
|
|
1846
|
+
}
|
|
1847
|
+
//>>includeEnd('debug');
|
|
1848
|
+
|
|
1849
|
+
// A region bounding volume's rectangle is fixed in WGS84, so the ellipsoid argument does not apply.
|
|
1850
|
+
const bv = this._content?.tile?.contentBoundingVolume;
|
|
1851
|
+
if (defined(bv?.rectangle)) {
|
|
1852
|
+
return bv.rectangle;
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
ellipsoid = ellipsoid ?? this._scene?.ellipsoid ?? Ellipsoid.default;
|
|
1856
|
+
return Rectangle.fromBoundingSphere(
|
|
1857
|
+
this.boundingSphere,
|
|
1858
|
+
ellipsoid,
|
|
1859
|
+
this._rectangle,
|
|
1860
|
+
);
|
|
1861
|
+
};
|
|
1862
|
+
|
|
1791
1863
|
/**
|
|
1792
1864
|
* Returns the node with the given <code>name</code> in the glTF. This is used to
|
|
1793
1865
|
* modify a node's transform for user-defined animation.
|
|
@@ -2016,6 +2088,7 @@ Model.prototype.update = function (frameState) {
|
|
|
2016
2088
|
updateSkipLevelOfDetail(this, frameState);
|
|
2017
2089
|
updateClippingPlanes(this, frameState);
|
|
2018
2090
|
updateClippingPolygons(this, frameState);
|
|
2091
|
+
updateVectorLookup(this, frameState);
|
|
2019
2092
|
updateSceneMode(this, frameState);
|
|
2020
2093
|
updateFog(this, frameState);
|
|
2021
2094
|
updateVerticalExaggeration(this, frameState);
|
|
@@ -2219,22 +2292,140 @@ function updateClippingPlanes(model, frameState) {
|
|
|
2219
2292
|
}
|
|
2220
2293
|
}
|
|
2221
2294
|
|
|
2295
|
+
// Only the collection's owner subscribes to its add/remove events. Tileset-owned
|
|
2296
|
+
// collections are handled by the tileset, which marks its tiles dirty instead.
|
|
2297
|
+
function updateClippingPolygonListeners(model) {
|
|
2298
|
+
model._removeClippingPolygonAdded =
|
|
2299
|
+
model._removeClippingPolygonAdded && model._removeClippingPolygonAdded();
|
|
2300
|
+
model._removeClippingPolygonRemoved =
|
|
2301
|
+
model._removeClippingPolygonRemoved &&
|
|
2302
|
+
model._removeClippingPolygonRemoved();
|
|
2303
|
+
|
|
2304
|
+
const clippingPolygons = model._clippingPolygons;
|
|
2305
|
+
if (!defined(clippingPolygons) || clippingPolygons.owner !== model) {
|
|
2306
|
+
return;
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
const markDirty = () => {
|
|
2310
|
+
model._clippingPolygonsNeedRebake = true;
|
|
2311
|
+
};
|
|
2312
|
+
model._removeClippingPolygonAdded =
|
|
2313
|
+
clippingPolygons.polygonAdded.addEventListener(markDirty);
|
|
2314
|
+
model._removeClippingPolygonRemoved =
|
|
2315
|
+
clippingPolygons.polygonRemoved.addEventListener(markDirty);
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2222
2318
|
function updateClippingPolygons(model, frameState) {
|
|
2223
|
-
|
|
2319
|
+
const clippingPolygons = model._clippingPolygons;
|
|
2320
|
+
const enabled = model.isClippingPolygonsEnabled();
|
|
2321
|
+
|
|
2322
|
+
// Detect enabled/inverse changes, which require shader regeneration.
|
|
2224
2323
|
let currentClippingPolygonsState = 0;
|
|
2225
|
-
if (
|
|
2226
|
-
if (
|
|
2227
|
-
|
|
2228
|
-
model._clippingPolygons.queueCommands(frameState);
|
|
2324
|
+
if (enabled) {
|
|
2325
|
+
if (clippingPolygons.owner === model) {
|
|
2326
|
+
clippingPolygons.update(frameState);
|
|
2229
2327
|
}
|
|
2230
|
-
currentClippingPolygonsState =
|
|
2231
|
-
model._clippingPolygons.clippingPolygonsState;
|
|
2328
|
+
currentClippingPolygonsState = clippingPolygons.clippingPolygonsState;
|
|
2232
2329
|
}
|
|
2233
2330
|
|
|
2234
2331
|
if (currentClippingPolygonsState !== model._clippingPolygonsState) {
|
|
2235
2332
|
model.resetDrawCommands();
|
|
2236
2333
|
model._clippingPolygonsState = currentClippingPolygonsState;
|
|
2237
2334
|
}
|
|
2335
|
+
|
|
2336
|
+
const wasClipped = (model._clippingPolygonData?.polygonRings.length ?? 0) > 0;
|
|
2337
|
+
|
|
2338
|
+
// A polygon add/remove or a model move only requires rebaking the clipping textures.
|
|
2339
|
+
if (model._clippingPolygonsNeedRebake) {
|
|
2340
|
+
model._clippingPolygonsNeedRebake = false;
|
|
2341
|
+
if (defined(model._clippingPolygonData)) {
|
|
2342
|
+
ClippingPolygonCollection.releaseRectangleData(
|
|
2343
|
+
model._clippingPolygonData,
|
|
2344
|
+
);
|
|
2345
|
+
model._clippingPolygonData = undefined;
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
|
|
2349
|
+
if (!enabled || !model._ready) {
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
if (!defined(model._clippingPolygonData)) {
|
|
2354
|
+
model._clippingPolygonData = clippingPolygons.requestRectangleData(
|
|
2355
|
+
model.getRectangle(clippingPolygons.ellipsoid),
|
|
2356
|
+
frameState.context,
|
|
2357
|
+
);
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
const isClipped = (model._clippingPolygonData?.polygonRings.length ?? 0) > 0;
|
|
2361
|
+
if (wasClipped !== isClipped) {
|
|
2362
|
+
// Rerun the model pipeline to enable/disable clipping
|
|
2363
|
+
model.resetDrawCommands();
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
|
|
2367
|
+
const scratchVectorRectangle = new Rectangle();
|
|
2368
|
+
|
|
2369
|
+
function releaseVectorData(model) {
|
|
2370
|
+
if (!defined(model._vectorData)) {
|
|
2371
|
+
return;
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
model._scene?.vectorProvider?.releaseTileData(model._vectorData);
|
|
2375
|
+
model._vectorData = undefined;
|
|
2376
|
+
}
|
|
2377
|
+
|
|
2378
|
+
// Each kind of geometry declares its own lookup textures, so the mix drives the shader.
|
|
2379
|
+
function vectorLookupFlags(vectorData) {
|
|
2380
|
+
if (vectorData?.show !== true) {
|
|
2381
|
+
return 0;
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
let flags = 1;
|
|
2385
|
+
flags |= vectorData.hasPolylines ? 2 : 0;
|
|
2386
|
+
flags |= vectorData.hasPolygons ? 4 : 0;
|
|
2387
|
+
return flags;
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
function updateVectorLookup(model, frameState) {
|
|
2391
|
+
const provider = model._scene?.vectorProvider;
|
|
2392
|
+
// HeightReference.CLAMP_TO_3D_TILE covers tileset content only, not standalone glTF.
|
|
2393
|
+
const active =
|
|
2394
|
+
defined(provider) &&
|
|
2395
|
+
defined(model._content) &&
|
|
2396
|
+
model.ready &&
|
|
2397
|
+
frameState.mode === SceneMode.SCENE3D;
|
|
2398
|
+
|
|
2399
|
+
if (active) {
|
|
2400
|
+
// A tile's content region is far tighter than a rectangle circumscribing the bounding sphere.
|
|
2401
|
+
const rectangle =
|
|
2402
|
+
model._content?.tile?.contentBoundingVolume.rectangle ??
|
|
2403
|
+
Rectangle.fromBoundingSphere(
|
|
2404
|
+
model.boundingSphere,
|
|
2405
|
+
provider.ellipsoid,
|
|
2406
|
+
scratchVectorRectangle,
|
|
2407
|
+
);
|
|
2408
|
+
model._vectorData = defined(model._vectorData)
|
|
2409
|
+
? provider.updateDataForRectangle(
|
|
2410
|
+
rectangle,
|
|
2411
|
+
frameState.context,
|
|
2412
|
+
model._vectorData,
|
|
2413
|
+
HeightReference.CLAMP_TO_3D_TILE,
|
|
2414
|
+
)
|
|
2415
|
+
: provider.requestDataForRectangle(
|
|
2416
|
+
rectangle,
|
|
2417
|
+
frameState.context,
|
|
2418
|
+
HeightReference.CLAMP_TO_3D_TILE,
|
|
2419
|
+
);
|
|
2420
|
+
} else {
|
|
2421
|
+
releaseVectorData(model);
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
const flags = vectorLookupFlags(model._vectorData);
|
|
2425
|
+
if (flags !== model._vectorLookupFlags) {
|
|
2426
|
+
model.resetDrawCommands();
|
|
2427
|
+
model._vectorLookupFlags = flags;
|
|
2428
|
+
}
|
|
2238
2429
|
}
|
|
2239
2430
|
|
|
2240
2431
|
function updateSceneMode(model, frameState) {
|
|
@@ -2502,6 +2693,10 @@ function updateSceneGraph(model, frameState) {
|
|
|
2502
2693
|
? model._clampedModelMatrix
|
|
2503
2694
|
: model.modelMatrix;
|
|
2504
2695
|
sceneGraph.updateModelMatrix(modelMatrix, frameState);
|
|
2696
|
+
if (model._updateModelMatrix) {
|
|
2697
|
+
// The model moved, so re-bake the clipping textures for its new rectangle.
|
|
2698
|
+
model._clippingPolygonsNeedRebake = true;
|
|
2699
|
+
}
|
|
2505
2700
|
model._updateModelMatrix = false;
|
|
2506
2701
|
}
|
|
2507
2702
|
|
|
@@ -2561,6 +2756,22 @@ function updateShowCreditsOnScreen(model) {
|
|
|
2561
2756
|
}
|
|
2562
2757
|
}
|
|
2563
2758
|
|
|
2759
|
+
/**
|
|
2760
|
+
* Determines whether a model is wholly clipped away by inverse clipping. In
|
|
2761
|
+
* inverse mode a model with no polygon geometry lies entirely outside every
|
|
2762
|
+
* polygon, so all of it is clipped and it should not be drawn.
|
|
2763
|
+
* @param {Model} model
|
|
2764
|
+
* @returns {boolean}
|
|
2765
|
+
* @private
|
|
2766
|
+
*/
|
|
2767
|
+
function isModelClippedAwayByInversePolygons(model) {
|
|
2768
|
+
return (
|
|
2769
|
+
model.isClippingPolygonsEnabled() &&
|
|
2770
|
+
model._clippingPolygons.inverse &&
|
|
2771
|
+
(model._clippingPolygonData?.polygonRings.length ?? 0) === 0
|
|
2772
|
+
);
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2564
2775
|
function submitDrawCommands(model, frameState) {
|
|
2565
2776
|
// Check that show is true after draw commands are built;
|
|
2566
2777
|
// we want the user to be able to instantly see the model
|
|
@@ -2581,7 +2792,8 @@ function submitDrawCommands(model, frameState) {
|
|
|
2581
2792
|
model._show &&
|
|
2582
2793
|
model._computedScale !== 0 &&
|
|
2583
2794
|
displayConditionPassed &&
|
|
2584
|
-
(!invisible || silhouette)
|
|
2795
|
+
(!invisible || silhouette) &&
|
|
2796
|
+
!isModelClippedAwayByInversePolygons(model);
|
|
2585
2797
|
|
|
2586
2798
|
const passes = frameState.passes;
|
|
2587
2799
|
const submitCommandsForPass =
|
|
@@ -2806,6 +3018,16 @@ Model.prototype.isClippingPolygonsEnabled = function () {
|
|
|
2806
3018
|
);
|
|
2807
3019
|
};
|
|
2808
3020
|
|
|
3021
|
+
/**
|
|
3022
|
+
* Gets whether draped vector data is baked and renderable for this model.
|
|
3023
|
+
*
|
|
3024
|
+
* @returns {boolean} <code>true</code> if the model drapes vector data.
|
|
3025
|
+
* @private
|
|
3026
|
+
*/
|
|
3027
|
+
Model.prototype.hasDrapedVectors = function () {
|
|
3028
|
+
return this._vectorData?.show === true;
|
|
3029
|
+
};
|
|
3030
|
+
|
|
2809
3031
|
/**
|
|
2810
3032
|
* Returns true if this object was destroyed; otherwise, false.
|
|
2811
3033
|
* <br /><br />
|
|
@@ -2853,6 +3075,8 @@ Model.prototype.destroy = function () {
|
|
|
2853
3075
|
this.destroyPipelineResources();
|
|
2854
3076
|
this.destroyModelResources();
|
|
2855
3077
|
|
|
3078
|
+
releaseVectorData(this);
|
|
3079
|
+
|
|
2856
3080
|
// Remove callbacks for height reference behavior.
|
|
2857
3081
|
if (defined(this._removeUpdateHeightCallback)) {
|
|
2858
3082
|
this._removeUpdateHeightCallback();
|
|
@@ -2864,6 +3088,12 @@ Model.prototype.destroy = function () {
|
|
|
2864
3088
|
this._terrainProviderChangedCallback = undefined;
|
|
2865
3089
|
}
|
|
2866
3090
|
|
|
3091
|
+
// Remove clipping polygon event listeners if this model subscribed to them.
|
|
3092
|
+
this._removeClippingPolygonAdded =
|
|
3093
|
+
this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
|
|
3094
|
+
this._removeClippingPolygonRemoved =
|
|
3095
|
+
this._removeClippingPolygonRemoved && this._removeClippingPolygonRemoved();
|
|
3096
|
+
|
|
2867
3097
|
// Only destroy the ClippingPlaneCollection if this is the owner.
|
|
2868
3098
|
const clippingPlaneCollection = this._clippingPlanes;
|
|
2869
3099
|
if (
|
|
@@ -2875,15 +3105,11 @@ Model.prototype.destroy = function () {
|
|
|
2875
3105
|
}
|
|
2876
3106
|
this._clippingPlanes = undefined;
|
|
2877
3107
|
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
if (
|
|
2881
|
-
defined(clippingPolygonCollection) &&
|
|
2882
|
-
!clippingPolygonCollection.isDestroyed() &&
|
|
2883
|
-
clippingPolygonCollection.owner === this
|
|
2884
|
-
) {
|
|
2885
|
-
clippingPolygonCollection.destroy();
|
|
3108
|
+
if (defined(this._clippingPolygonData)) {
|
|
3109
|
+
ClippingPolygonCollection.releaseRectangleData(this._clippingPolygonData);
|
|
2886
3110
|
}
|
|
3111
|
+
this._clippingPolygonData = undefined;
|
|
3112
|
+
|
|
2887
3113
|
this._clippingPolygons = undefined;
|
|
2888
3114
|
|
|
2889
3115
|
// Only destroy the ImageBasedLighting if this is the owner.
|
|
@@ -310,6 +310,10 @@ class Model3DTileContent {
|
|
|
310
310
|
model._clippingPolygonsState = 0;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
+
if (tile.clippingPolygonsNeedRebake) {
|
|
314
|
+
model._clippingPolygonsNeedRebake = true;
|
|
315
|
+
}
|
|
316
|
+
|
|
313
317
|
model.update(frameState);
|
|
314
318
|
|
|
315
319
|
if (!this._ready && model.ready) {
|
|
@@ -490,6 +494,7 @@ function makeModelOptions(tileset, tile, content, additionalOptions) {
|
|
|
490
494
|
incrementallyLoadTextures: false,
|
|
491
495
|
customShader: tileset.customShader,
|
|
492
496
|
content: content,
|
|
497
|
+
scene: tileset._scene,
|
|
493
498
|
colorBlendMode: tileset.colorBlendMode,
|
|
494
499
|
colorBlendAmount: tileset.colorBlendAmount,
|
|
495
500
|
lightColor: tileset.lightColor,
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import combine from "../../Core/combine.js";
|
|
2
|
-
import ModelClippingPolygonsStageVS from "../../Shaders/Model/ModelClippingPolygonsStageVS.js";
|
|
3
2
|
import ModelClippingPolygonsStageFS from "../../Shaders/Model/ModelClippingPolygonsStageFS.js";
|
|
3
|
+
import ModelClippingPolygonsStageVS from "../../Shaders/Model/ModelClippingPolygonsStageVS.js";
|
|
4
4
|
import ShaderDestination from "../../Renderer/ShaderDestination.js";
|
|
5
|
+
import VectorCommon from "../../Shaders/VectorCommon.js";
|
|
6
|
+
import Cartesian2 from "../../Core/Cartesian2.js";
|
|
7
|
+
import CesiumMath from "../../Core/Math.js";
|
|
8
|
+
import Rectangle from "../../Core/Rectangle.js";
|
|
5
9
|
|
|
6
10
|
/**
|
|
7
11
|
* The model clipping planes stage is responsible for applying clipping planes to the model.
|
|
@@ -14,6 +18,10 @@ const ModelClippingPolygonsPipelineStage = {
|
|
|
14
18
|
name: "ModelClippingPolygonsPipelineStage", // Helps with debugging
|
|
15
19
|
};
|
|
16
20
|
|
|
21
|
+
const scratchCameraUv = new Cartesian2();
|
|
22
|
+
const scratchRectangleInverseSize = new Cartesian2();
|
|
23
|
+
const defaultRectangle = Rectangle.MAX_VALUE;
|
|
24
|
+
|
|
17
25
|
/**
|
|
18
26
|
* Process a model for polygon clipping. This modifies the following parts of the render resources:
|
|
19
27
|
*
|
|
@@ -54,40 +62,67 @@ ModelClippingPolygonsPipelineStage.process = function (
|
|
|
54
62
|
);
|
|
55
63
|
}
|
|
56
64
|
|
|
57
|
-
shaderBuilder.
|
|
58
|
-
"CLIPPING_POLYGON_REGIONS_LENGTH",
|
|
59
|
-
clippingPolygons.extentsCount,
|
|
60
|
-
ShaderDestination.BOTH,
|
|
61
|
-
);
|
|
65
|
+
shaderBuilder.addVarying("vec2", "v_clippingUv");
|
|
62
66
|
|
|
63
67
|
shaderBuilder.addUniform(
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
ShaderDestination.
|
|
68
|
+
"vec2",
|
|
69
|
+
"u_clippingCameraUv",
|
|
70
|
+
ShaderDestination.VERTEX,
|
|
67
71
|
);
|
|
68
72
|
|
|
69
73
|
shaderBuilder.addUniform(
|
|
70
|
-
"
|
|
71
|
-
"
|
|
74
|
+
"vec2",
|
|
75
|
+
"u_clippingRectangleInverseSize",
|
|
72
76
|
ShaderDestination.VERTEX,
|
|
73
77
|
);
|
|
74
78
|
|
|
75
|
-
shaderBuilder.addVarying("vec2", "v_clippingPosition");
|
|
76
|
-
shaderBuilder.addVarying("int", "v_regionIndex", "flat");
|
|
77
79
|
shaderBuilder.addVertexLines(ModelClippingPolygonsStageVS);
|
|
80
|
+
shaderBuilder.addFragmentLines(VectorCommon);
|
|
78
81
|
shaderBuilder.addFragmentLines(ModelClippingPolygonsStageFS);
|
|
79
82
|
|
|
80
83
|
const uniformMap = {
|
|
81
|
-
|
|
84
|
+
// The UV coordinates of the camera within the model's clipping rectangle.
|
|
85
|
+
u_clippingCameraUv: function () {
|
|
86
|
+
const rectangle =
|
|
87
|
+
model._clippingPolygonData?.rectangle ?? defaultRectangle;
|
|
88
|
+
const halfWidth = rectangle.width * 0.5;
|
|
89
|
+
const centerLongitude = rectangle.west + halfWidth;
|
|
90
|
+
const carto = frameState.camera.positionCartographic;
|
|
91
|
+
|
|
92
|
+
const longitudeOffset =
|
|
93
|
+
CesiumMath.negativePiToPi(carto.longitude - centerLongitude) +
|
|
94
|
+
halfWidth;
|
|
95
|
+
return Cartesian2.fromElements(
|
|
96
|
+
longitudeOffset / rectangle.width,
|
|
97
|
+
(carto.latitude - rectangle.south) / rectangle.height,
|
|
98
|
+
scratchCameraUv,
|
|
99
|
+
);
|
|
100
|
+
},
|
|
101
|
+
u_clippingRectangleInverseSize: function () {
|
|
102
|
+
const rectangle =
|
|
103
|
+
model._clippingPolygonData?.rectangle ?? defaultRectangle;
|
|
104
|
+
return Cartesian2.fromElements(
|
|
105
|
+
1.0 / rectangle.width,
|
|
106
|
+
1.0 / rectangle.height,
|
|
107
|
+
scratchRectangleInverseSize,
|
|
108
|
+
);
|
|
109
|
+
},
|
|
110
|
+
u_clippingEdgeTexture: function () {
|
|
111
|
+
return (
|
|
112
|
+
model._clippingPolygonData?.polygonEdgeTexture ??
|
|
113
|
+
frameState.context.defaultTexture
|
|
114
|
+
);
|
|
115
|
+
},
|
|
116
|
+
u_clippingEdgePrimitiveIndicesTexture: function () {
|
|
82
117
|
return (
|
|
83
|
-
|
|
84
|
-
|
|
118
|
+
model._clippingPolygonData?.polygonEdgePrimitiveIndicesTexture ??
|
|
119
|
+
frameState.context.defaultTexture
|
|
85
120
|
);
|
|
86
121
|
},
|
|
87
|
-
|
|
122
|
+
u_clippingGridCellIndicesTexture: function () {
|
|
88
123
|
return (
|
|
89
|
-
|
|
90
|
-
|
|
124
|
+
model._clippingPolygonData?.polygonGridCellIndicesTexture ??
|
|
125
|
+
frameState.context.defaultTexture
|
|
91
126
|
);
|
|
92
127
|
},
|
|
93
128
|
};
|
|
@@ -25,7 +25,7 @@ function ModelRenderResources(model) {
|
|
|
25
25
|
* @type {ShaderBuilder}
|
|
26
26
|
* @readonly
|
|
27
27
|
*
|
|
28
|
-
* @
|
|
28
|
+
* @ignore
|
|
29
29
|
*/
|
|
30
30
|
this.shaderBuilder = new ShaderBuilder();
|
|
31
31
|
|
|
@@ -44,9 +44,8 @@ function ModelRenderResources(model) {
|
|
|
44
44
|
* values.
|
|
45
45
|
*
|
|
46
46
|
* @type {Object<string, Function>}
|
|
47
|
-
* @readonly
|
|
48
47
|
*
|
|
49
|
-
* @
|
|
48
|
+
* @ignore
|
|
50
49
|
*/
|
|
51
50
|
this.uniformMap = {};
|
|
52
51
|
|
|
@@ -14,6 +14,7 @@ import ModelArticulation from "./ModelArticulation.js";
|
|
|
14
14
|
import ModelColorPipelineStage from "./ModelColorPipelineStage.js";
|
|
15
15
|
import ModelClippingPlanesPipelineStage from "./ModelClippingPlanesPipelineStage.js";
|
|
16
16
|
import ModelClippingPolygonsPipelineStage from "./ModelClippingPolygonsPipelineStage.js";
|
|
17
|
+
import ModelVectorLookupPipelineStage from "./ModelVectorLookupPipelineStage.js";
|
|
17
18
|
import ModelNode from "./ModelNode.js";
|
|
18
19
|
import ModelRuntimeNode from "./ModelRuntimeNode.js";
|
|
19
20
|
import ModelRuntimePrimitive from "./ModelRuntimePrimitive.js";
|
|
@@ -735,10 +736,18 @@ ModelSceneGraph.prototype.configurePipeline = function (frameState) {
|
|
|
735
736
|
modelPipelineStages.push(ModelClippingPlanesPipelineStage);
|
|
736
737
|
}
|
|
737
738
|
|
|
738
|
-
if
|
|
739
|
+
// Even if a model has a clipping polygon collection, the polygons may not overlap the model geometry,
|
|
740
|
+
// in which case the clipping polygon pipeline stage should not be added.
|
|
741
|
+
const hasClippingPolygonGeometry =
|
|
742
|
+
(model._clippingPolygonData?.polygonRings.length ?? 0) > 0;
|
|
743
|
+
if (model.isClippingPolygonsEnabled() && hasClippingPolygonGeometry) {
|
|
739
744
|
modelPipelineStages.push(ModelClippingPolygonsPipelineStage);
|
|
740
745
|
}
|
|
741
746
|
|
|
747
|
+
if (model.hasDrapedVectors()) {
|
|
748
|
+
modelPipelineStages.push(ModelVectorLookupPipelineStage);
|
|
749
|
+
}
|
|
750
|
+
|
|
742
751
|
if (model.hasSilhouette(frameState)) {
|
|
743
752
|
modelPipelineStages.push(ModelSilhouettePipelineStage);
|
|
744
753
|
}
|