@cesium/engine 26.0.0 → 26.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
- package/Build/Workers/{chunk-7J2HKPRH.js → chunk-27FWRTJI.js} +9 -9
- package/Build/Workers/{chunk-EF2QYXGA.js → chunk-2EFYUSUY.js} +14 -14
- package/Build/Workers/chunk-2H5264K7.js +1284 -0
- package/Build/Workers/{chunk-DOBXCNC3.js → chunk-2H73KDBM.js} +13 -13
- package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
- package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
- package/Build/Workers/{chunk-F6QDY6HU.js → chunk-2ZKH2QZB.js} +13 -13
- package/Build/Workers/chunk-36NI5E6W.js +3820 -0
- package/Build/Workers/{chunk-ZK3CF7ZD.js → chunk-37SW7SYS.js} +12 -12
- package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
- package/Build/Workers/chunk-3LB4UVPU.js +387 -0
- package/Build/Workers/chunk-3PONLKEL.js +778 -0
- package/Build/Workers/{chunk-Y57HREW5.js → chunk-3PSS3T43.js} +4 -4
- package/Build/Workers/chunk-3QR662HH.js +3820 -0
- package/Build/Workers/{chunk-QN67VG36.js → chunk-3SX2WYSO.js} +6 -6
- package/Build/Workers/{chunk-G7PXZRVF.js → chunk-3UDN6LYX.js} +7 -7
- package/Build/Workers/chunk-47MCBSXI.js +9237 -0
- package/Build/Workers/{chunk-KKOSKAZB.js → chunk-4E626OCE.js} +17 -17
- package/Build/Workers/chunk-4NW2MJKH.js +455 -0
- package/Build/Workers/{chunk-DBOEKL43.js → chunk-52YK5BSN.js} +7 -7
- package/Build/Workers/{chunk-KFSTQKNM.js → chunk-5LSOO2KD.js} +7 -7
- package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
- package/Build/Workers/chunk-5YPQBFRD.js +519 -0
- package/Build/Workers/{chunk-S4MCOY6I.js → chunk-6FHT43QR.js} +5 -5
- package/Build/Workers/chunk-6FZDPMTO.js +455 -0
- package/Build/Workers/{chunk-VQYETPWC.js → chunk-6HK6IXK2.js} +4 -4
- package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
- package/Build/Workers/{chunk-AYKR4VBR.js → chunk-6YR6JBMY.js} +2 -2
- package/Build/Workers/chunk-76FDC45O.js +511 -0
- package/Build/Workers/chunk-7A2OGDHT.js +305 -0
- package/Build/Workers/chunk-7CGEQUM2.js +305 -0
- package/Build/Workers/{chunk-54I6Y66F.js → chunk-7D2HZKH7.js} +6 -6
- package/Build/Workers/{chunk-3VFEWOBI.js → chunk-7I325HV6.js} +7 -7
- package/Build/Workers/{chunk-4MGMYHOO.js → chunk-7KVKHY7O.js} +6 -6
- package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
- package/Build/Workers/chunk-7TKLTCZW.js +219 -0
- package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
- package/Build/Workers/chunk-7W6DUHAB.js +693 -0
- package/Build/Workers/{chunk-DDWSZVMY.js → chunk-7XM5JK5F.js} +5 -5
- package/Build/Workers/chunk-7YG3ND3P.js +454 -0
- package/Build/Workers/{chunk-IRBKFCEJ.js → chunk-A3O6EDBK.js} +2 -2
- package/Build/Workers/chunk-A62YI6S6.js +305 -0
- package/Build/Workers/{chunk-V7VQKN6N.js → chunk-A6X24AZI.js} +5 -5
- package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
- package/Build/Workers/chunk-ACTVJHSP.js +519 -0
- package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
- package/Build/Workers/{chunk-52JDLOEM.js → chunk-AF7DTMJ7.js} +14 -14
- package/Build/Workers/{chunk-ZP7JMQV4.js → chunk-AHWAZRBV.js} +6 -2
- package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
- package/Build/Workers/{chunk-EBSIOBXY.js → chunk-ARZICEEP.js} +8 -8
- package/Build/Workers/chunk-B3QHNA4A.js +147 -0
- package/Build/Workers/{chunk-YLY7NKAB.js → chunk-B4CQSLZJ.js} +4 -4
- package/Build/Workers/chunk-BKPQFCXH.js +511 -0
- package/Build/Workers/{chunk-O3EA5HS7.js → chunk-BSPCI2LO.js} +10 -10
- package/Build/Workers/chunk-BUJWSX5S.js +301 -0
- package/Build/Workers/{chunk-J6BWOHUF.js → chunk-C7JQVRLM.js} +3 -3
- package/Build/Workers/chunk-C7QDUNI3.js +138 -0
- package/Build/Workers/{chunk-KSSWJIZW.js → chunk-CDJDJ5LK.js} +2 -2
- package/Build/Workers/chunk-CEEZE3YZ.js +476 -0
- package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
- package/Build/Workers/{chunk-INUEEEQA.js → chunk-CLCTQVVL.js} +8 -8
- package/Build/Workers/{chunk-C6J67V5A.js → chunk-CQNFIAZU.js} +1 -1
- package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
- package/Build/Workers/{chunk-SMQZZOW6.js → chunk-CUTRKXUQ.js} +10 -10
- package/Build/Workers/{chunk-Q3PY526V.js → chunk-D6AY775A.js} +6 -6
- package/Build/Workers/chunk-DBD5WWG2.js +959 -0
- package/Build/Workers/{chunk-E7VQ76KE.js → chunk-DIGUUD6G.js} +6 -6
- package/Build/Workers/{chunk-P3CK7MCY.js → chunk-DSGLDRTI.js} +4 -4
- package/Build/Workers/chunk-DZBQUULR.js +138 -0
- package/Build/Workers/chunk-DZUFEE4L.js +140 -0
- package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
- package/Build/Workers/{chunk-424RNO3D.js → chunk-E7NZJOK7.js} +196 -22
- package/Build/Workers/{chunk-UOOIQ3KX.js → chunk-EB3Y5P3A.js} +12 -12
- package/Build/Workers/{chunk-ACXQXN46.js → chunk-EHTS2YPT.js} +16 -16
- package/Build/Workers/{chunk-EPYXRCDB.js → chunk-ELE6SC2C.js} +12 -12
- package/Build/Workers/{chunk-VWV2IJRB.js → chunk-ENNFMWDW.js} +11 -11
- package/Build/Workers/chunk-EOWDZN5S.js +288 -0
- package/Build/Workers/chunk-ERKUET22.js +3201 -0
- package/Build/Workers/chunk-EZGQPOIG.js +162 -0
- package/Build/Workers/chunk-F2IMBMZY.js +241 -0
- package/Build/Workers/chunk-F4CSNRZO.js +219 -0
- package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
- package/Build/Workers/{chunk-FRQZECAO.js → chunk-FCP2QY4G.js} +5 -5
- package/Build/Workers/{chunk-ZZ46LWL6.js → chunk-FDK4K5IA.js} +1 -1
- package/Build/Workers/{chunk-C6KNZ7T4.js → chunk-FGQFQHN5.js} +17 -17
- package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
- package/Build/Workers/{chunk-Y5BF6AFU.js → chunk-FQ42MT7M.js} +2 -2
- package/Build/Workers/chunk-FU4BGABC.js +398 -0
- package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
- package/Build/Workers/chunk-GGNWQWSB.js +301 -0
- package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
- package/Build/Workers/{chunk-CZEYZU4N.js → chunk-GNKXEN4C.js} +10 -10
- package/Build/Workers/{chunk-MYP774IS.js → chunk-GSWMAFTE.js} +8 -8
- package/Build/Workers/chunk-GVA7XQI2.js +368 -0
- package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
- package/Build/Workers/chunk-GXWQZBAI.js +58 -0
- package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
- package/Build/Workers/chunk-H2WCFXLP.js +241 -0
- package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
- package/Build/Workers/chunk-HHV3MCGV.js +162 -0
- package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
- package/Build/Workers/chunk-HS6AD4P2.js +398 -0
- package/Build/Workers/chunk-HT6FASOT.js +973 -0
- package/Build/Workers/chunk-I74ZH5LK.js +959 -0
- package/Build/Workers/{chunk-7WM2PX4V.js → chunk-IDVHUDZT.js} +5 -5
- package/Build/Workers/chunk-IGAZBTFZ.js +3201 -0
- package/Build/Workers/chunk-IJZJMIUY.js +789 -0
- package/Build/Workers/chunk-ILME5BXA.js +301 -0
- package/Build/Workers/chunk-IMBVP57H.js +44 -0
- package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
- package/Build/Workers/chunk-IUIFLOYO.js +44 -0
- package/Build/Workers/chunk-J73T2VOY.js +171 -0
- package/Build/Workers/chunk-JALGQYDY.js +288 -0
- package/Build/Workers/chunk-JKXV6PG5.js +56 -0
- package/Build/Workers/chunk-JW6OZT4R.js +288 -0
- package/Build/Workers/{chunk-CXOYE2WM.js → chunk-JXYLJCTC.js} +5 -5
- package/Build/Workers/{chunk-CFQP6LYM.js → chunk-K27QOAW6.js} +4 -4
- package/Build/Workers/chunk-KGXSYGBG.js +387 -0
- package/Build/Workers/chunk-KMV25A63.js +789 -0
- package/Build/Workers/chunk-KP5QD7WU.js +693 -0
- package/Build/Workers/chunk-KZWFWJML.js +2719 -0
- package/Build/Workers/chunk-LCXRRALY.js +387 -0
- package/Build/Workers/chunk-LD64RPYV.js +368 -0
- package/Build/Workers/{chunk-U3ZA64U7.js → chunk-LDRQSYBN.js} +2 -2
- package/Build/Workers/chunk-LGNDTZVX.js +97 -0
- package/Build/Workers/chunk-LNSQVXFH.js +1800 -0
- package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
- package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
- package/Build/Workers/chunk-MAAHFYPC.js +198 -0
- package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
- package/Build/Workers/chunk-MEENMEAH.js +198 -0
- package/Build/Workers/{chunk-TKKIREQ6.js → chunk-N7CCOFLX.js} +1 -1
- package/Build/Workers/chunk-NAWU5RF4.js +162 -0
- package/Build/Workers/{chunk-M3B5JKSM.js → chunk-NCL22ZUX.js} +1 -1
- package/Build/Workers/chunk-NEFDMMLY.js +241 -0
- package/Build/Workers/{chunk-UA25D5MX.js → chunk-NIWITKQK.js} +10 -10
- package/Build/Workers/chunk-NJVBJG63.js +124 -0
- package/Build/Workers/chunk-NLLCQBX3.js +73 -0
- package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
- package/Build/Workers/chunk-NXGQBQWE.js +837 -0
- package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
- package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
- package/Build/Workers/chunk-OA6MYL2C.js +837 -0
- package/Build/Workers/chunk-OBEU25PI.js +1067 -0
- package/Build/Workers/chunk-OHP4ELS7.js +198 -0
- package/Build/Workers/chunk-OZGPS7FB.js +138 -0
- package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
- package/Build/Workers/chunk-PD4GK4EM.js +57 -0
- package/Build/Workers/chunk-PEDU33QG.js +2342 -0
- package/Build/Workers/chunk-PRWUMCXF.js +682 -0
- package/Build/Workers/chunk-PVTSNNVI.js +288 -0
- package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
- package/Build/Workers/chunk-QHPZH22L.js +241 -0
- package/Build/Workers/chunk-QIZDWZK6.js +301 -0
- package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
- package/Build/Workers/chunk-QVLAFFJY.js +56 -0
- package/Build/Workers/{chunk-6YEE6JDR.js → chunk-R4FPNAZ2.js} +6 -6
- package/Build/Workers/chunk-R4K7EHOU.js +171 -0
- package/Build/Workers/chunk-R7JGHDD6.js +789 -0
- package/Build/Workers/chunk-RASQEYD4.js +1483 -0
- package/Build/Workers/chunk-RG4F5R57.js +454 -0
- package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
- package/Build/Workers/chunk-RYSQVJR6.js +398 -0
- package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
- package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
- package/Build/Workers/chunk-SDFHDNS4.js +147 -0
- package/Build/Workers/chunk-SF6K72D7.js +124 -0
- package/Build/Workers/chunk-SGRGNDOD.js +682 -0
- package/Build/Workers/{chunk-QRWGUWI6.js → chunk-SJYSIOEM.js} +11 -11
- package/Build/Workers/chunk-SM2CDCYF.js +198 -0
- package/Build/Workers/chunk-SMTGMFBL.js +97 -0
- package/Build/Workers/chunk-SS5ABQGY.js +102 -0
- package/Build/Workers/{chunk-IYOUHCZB.js → chunk-SXSP3JHS.js} +1 -1
- package/Build/Workers/chunk-T5QBPLE3.js +414 -0
- package/Build/Workers/chunk-TN35HP5B.js +1067 -0
- package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
- package/Build/Workers/chunk-TOAF47AQ.js +102 -0
- package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
- package/Build/Workers/chunk-TSDSILQB.js +124 -0
- package/Build/Workers/chunk-TVZD72WJ.js +778 -0
- package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
- package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
- package/Build/Workers/chunk-UEY73NRN.js +38 -0
- package/Build/Workers/chunk-UF46SZEZ.js +789 -0
- package/Build/Workers/chunk-UNRTMCET.js +398 -0
- package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
- package/Build/Workers/chunk-UVO6COT2.js +352 -0
- package/Build/Workers/chunk-V46YGZE6.js +352 -0
- package/Build/Workers/chunk-VAL7DYNR.js +278 -0
- package/Build/Workers/chunk-VDGOCROW.js +57 -0
- package/Build/Workers/chunk-VFWSSBPT.js +511 -0
- package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
- package/Build/Workers/chunk-VXWHPYQM.js +837 -0
- package/Build/Workers/chunk-VXYUBRSB.js +219 -0
- package/Build/Workers/chunk-VZLDLEWI.js +387 -0
- package/Build/Workers/{chunk-4S7IE3LB.js → chunk-W5OCKMPJ.js} +2 -2
- package/Build/Workers/chunk-WBSY7HDY.js +837 -0
- package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
- package/Build/Workers/chunk-WPRUWXGV.js +693 -0
- package/Build/Workers/chunk-WTO2ERBP.js +414 -0
- package/Build/Workers/chunk-WVHMDVG4.js +959 -0
- package/Build/Workers/chunk-XCBZVTIV.js +280 -0
- package/Build/Workers/chunk-XDWCTQCZ.js +101 -0
- package/Build/Workers/chunk-XGA23TAX.js +73 -0
- package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
- package/Build/Workers/chunk-XLXSDIP5.js +973 -0
- package/Build/Workers/chunk-XQ3SKCMM.js +140 -0
- package/Build/Workers/chunk-XQH66YJC.js +147 -0
- package/Build/Workers/chunk-XTA7BXJG.js +682 -0
- package/Build/Workers/chunk-XTIDAFRS.js +476 -0
- package/Build/Workers/chunk-XUEDWBUD.js +682 -0
- package/Build/Workers/chunk-XYFLRH3H.js +124 -0
- package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
- package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
- package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
- package/Build/Workers/chunk-YEYOSTJX.js +219 -0
- package/Build/Workers/chunk-YGFVAGYF.js +630 -0
- package/Build/Workers/chunk-YIIACKQO.js +368 -0
- package/Build/Workers/chunk-YJGSP6PE.js +511 -0
- package/Build/Workers/{chunk-XZMBNNDX.js → chunk-YKU2Q3A2.js} +9 -9
- package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
- package/Build/Workers/chunk-Z66EVE2A.js +44 -0
- package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
- package/Build/Workers/chunk-ZMBHFYOX.js +1344 -0
- package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
- package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
- package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
- package/Build/Workers/{chunk-MPZHGZU6.js → chunk-ZSGUV73H.js} +4 -4
- package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +31 -33
- package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +24 -24
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +34 -34
- package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createPolylineGeometry.js +26 -26
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
- package/Build/Workers/createSimplePolylineGeometry.js +24 -24
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +24 -24
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +987 -2320
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
- package/Source/Core/BoundingRectangle.js +6 -8
- package/Source/Core/BoundingSphere.js +0 -3
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
- package/Source/Core/Color.js +1 -0
- package/Source/Core/CoplanarPolygonGeometry.js +2 -2
- package/Source/Core/CorridorGeometry.js +2 -4
- package/Source/Core/CorridorOutlineGeometry.js +1 -3
- package/Source/Core/EarthOrientationParameters.js +2 -2
- package/Source/Core/EllipseGeometryLibrary.js +2 -2
- package/Source/Core/EllipsoidGeodesic.js +3 -3
- package/Source/Core/EllipsoidRhumbLine.js +1 -1
- package/Source/Core/GroundPolylineGeometry.js +2 -2
- package/Source/Core/Heap.js +1 -1
- package/Source/Core/HermitePolynomialApproximation.js +215 -179
- package/Source/Core/InterpolationAlgorithm.js +58 -50
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/JulianDate.js +1 -1
- package/Source/Core/LagrangePolynomialApproximation.js +55 -52
- package/Source/Core/LinearApproximation.js +69 -66
- package/Source/Core/Math.js +59 -0
- package/Source/Core/Matrix2.js +2 -2
- package/Source/Core/Matrix3.js +2 -2
- package/Source/Core/OrthographicFrustum.js +1 -1
- package/Source/Core/PerspectiveFrustum.js +1 -1
- package/Source/Core/PolygonGeometry.js +2 -2
- package/Source/Core/PolygonGeometryLibrary.js +1 -1
- package/Source/Core/PolygonOutlineGeometry.js +1 -1
- package/Source/Core/PolylineGeometry.js +1 -1
- package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
- package/Source/Core/Rectangle.js +7 -1
- package/Source/Core/RectangleOutlineGeometry.js +1 -1
- package/Source/Core/SimplePolylineGeometry.js +1 -1
- package/Source/Core/TerrainEncoding.js +2 -2
- package/Source/Core/TerrainMesh.js +3 -3
- package/Source/Core/TerrainPicker.js +180 -168
- package/Source/Core/TimeIntervalCollection.js +1 -3
- package/Source/Core/Tipsify.js +1 -1
- package/Source/Core/Transforms.js +5 -1
- package/Source/Core/VectorPipeline.js +1117 -0
- package/Source/Core/VectorProvider.js +429 -0
- package/Source/Core/WallOutlineGeometry.js +1 -1
- package/Source/Core/getTimestamp.js +4 -2
- package/Source/Core/writeTextToCanvas.js +1 -0
- package/Source/DataSources/CompositeEntityCollection.js +0 -1
- package/Source/DataSources/CzmlDataSource.js +14 -0
- package/Source/DataSources/DataSourceDisplay.js +1 -1
- package/Source/DataSources/GeoJsonDataSource.js +0 -1
- package/Source/DataSources/GeometryVisualizer.js +1 -1
- package/Source/DataSources/KmlDataSource.js +529 -557
- package/Source/DataSources/PathGraphics.js +8 -1
- package/Source/DataSources/PathMode.js +27 -0
- package/Source/DataSources/PathVisualizer.js +298 -1
- package/Source/DataSources/PolylineVisualizer.js +1 -1
- package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
- package/Source/Renderer/AutomaticUniforms.js +23 -0
- package/Source/Renderer/Context.js +9 -3
- package/Source/Renderer/DrawCommand.js +22 -0
- package/Source/Renderer/Framebuffer.js +4 -0
- package/Source/Renderer/Pass.js +11 -10
- package/Source/Renderer/Texture.js +12 -1
- package/Source/Renderer/UniformState.js +7 -0
- package/Source/Renderer/VertexArray.js +1 -1
- package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Billboard.js +2 -1
- package/Source/Scene/BillboardCollection.js +7 -3
- package/Source/Scene/BillboardTexture.js +5 -3
- package/Source/Scene/BufferPrimitiveCollection.js +27 -5
- package/Source/Scene/Camera.js +71 -5
- package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/ClippingPlaneCollection.js +4 -4
- package/Source/Scene/ClippingPolygon.js +2 -0
- package/Source/Scene/ClippingPolygonCollection.js +2 -2
- package/Source/Scene/Controllers/Controller.js +63 -0
- package/Source/Scene/Controllers/ControllerHost.js +78 -0
- package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
- package/Source/Scene/Controllers/MouseButton.js +32 -0
- package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
- package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
- package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
- package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
- package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
- package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
- package/Source/Scene/DerivedCommand.js +98 -0
- package/Source/Scene/EdgeFramebuffer.js +1 -5
- package/Source/Scene/Expression.js +6 -8
- package/Source/Scene/FrameState.js +17 -0
- package/Source/Scene/Globe.js +20 -0
- package/Source/Scene/GlobeDepth.js +27 -1
- package/Source/Scene/GlobeSurfaceShaderSet.js +511 -409
- package/Source/Scene/GlobeSurfaceTile.js +575 -398
- package/Source/Scene/GlobeSurfaceTileProvider.js +1382 -1151
- package/Source/Scene/GltfBufferViewLoader.js +3 -3
- package/Source/Scene/GltfLoader.js +33 -3
- package/Source/Scene/GltfLoaderUtil.js +20 -4
- package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
- package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
- package/Source/Scene/GltfSpzLoader.js +1 -1
- package/Source/Scene/GltfVertexBufferLoader.js +6 -3
- package/Source/Scene/I3SDataProvider.js +1 -1
- package/Source/Scene/I3SLayer.js +1 -1
- package/Source/Scene/I3SNode.js +2 -2
- package/Source/Scene/ImageryLayer.js +2 -2
- package/Source/Scene/ImageryLayerCollection.js +190 -6
- package/Source/Scene/IonImageryProvider.js +1 -5
- package/Source/Scene/Label.js +4 -4
- package/Source/Scene/LabelCollection.js +1 -1
- package/Source/Scene/MVTDataProvider.js +2 -0
- package/Source/Scene/Material.js +1 -0
- package/Source/Scene/Model/B3dmLoader.js +1 -2
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
- package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
- package/Source/Scene/Model/I3dmLoader.js +1 -1
- package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
- package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
- package/Source/Scene/Model/Model.js +11 -10
- package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
- package/Source/Scene/Model/ModelDrawCommand.js +160 -16
- package/Source/Scene/Model/ModelDrawCommands.js +4 -0
- package/Source/Scene/Model/ModelSceneGraph.js +21 -0
- package/Source/Scene/Model/ModelUtility.js +1 -0
- package/Source/Scene/Model/PickingPipelineStage.js +29 -0
- package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
- package/Source/Scene/ModelComponents.js +71 -0
- package/Source/Scene/Picking.js +19 -3
- package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
- package/Source/Scene/PntsParser.js +1 -1
- package/Source/Scene/PolylineCollection.js +1 -1
- package/Source/Scene/PostProcessStage.js +4 -2
- package/Source/Scene/QuadtreePrimitive.js +3 -2
- package/Source/Scene/ResourceCache.js +7 -4
- package/Source/Scene/ResourceCacheKey.js +21 -18
- package/Source/Scene/Scene.js +203 -5
- package/Source/Scene/ScreenSpaceCameraController.js +1 -2
- package/Source/Scene/ShadowMap.js +9 -3
- package/Source/Scene/ShadowMapShader.js +50 -2
- package/Source/Scene/SnapFramebuffer.js +121 -0
- package/Source/Scene/Snapping.js +184 -0
- package/Source/Scene/TerrainFillMesh.js +3 -2
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
- package/Source/Scene/Vector3DTileContent.js +2 -3
- package/Source/Scene/VectorGltf3DTileContent.js +23 -3
- package/Source/Scene/View.js +10 -8
- package/Source/Scene/VoxelTraversal.js +1 -1
- package/Source/Scene/createElevationBandMaterial.js +1 -1
- package/Source/Scene/findMeshoptExtension.js +23 -0
- package/Source/Scene/renderBufferPointCollection.js +14 -10
- package/Source/Scene/renderBufferPolygonCollection.js +10 -15
- package/Source/Scene/renderBufferPolylineCollection.js +121 -194
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
- package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
- package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/GlobeFS.glsl +10 -5
- package/Source/Shaders/GlobeFS.js +9 -5
- package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
- package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
- package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
- package/Source/Shaders/Model/MaterialStageFS.js +8 -2
- package/Source/Shaders/Model/ModelFS.glsl +105 -0
- package/Source/Shaders/Model/ModelFS.js +105 -0
- package/Source/Shaders/VectorCommon.glsl +178 -0
- package/Source/Shaders/VectorCommon.js +75 -0
- package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
- package/Source/ThirdParty/zip-module.wasm +0 -0
- package/Source/Widget/CesiumWidget.js +30 -0
- package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
- package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
- package/index.d.ts +825 -260
- package/index.js +29 -10
- package/package.json +4 -4
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import BoundingRectangle from "../Core/BoundingRectangle.js";
|
|
2
|
+
import defined from "../Core/defined.js";
|
|
3
|
+
import destroyObject from "../Core/destroyObject.js";
|
|
4
|
+
import PixelFormat from "../Core/PixelFormat.js";
|
|
5
|
+
import FramebufferManager from "../Renderer/FramebufferManager.js";
|
|
6
|
+
import PassState from "../Renderer/PassState.js";
|
|
7
|
+
import PixelDatatype from "../Renderer/PixelDatatype.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
function SnapFramebuffer(context) {
|
|
13
|
+
const passState = new PassState(context);
|
|
14
|
+
passState.blendingEnabled = false;
|
|
15
|
+
passState.scissorTest = {
|
|
16
|
+
enabled: true,
|
|
17
|
+
rectangle: new BoundingRectangle(),
|
|
18
|
+
};
|
|
19
|
+
passState.viewport = new BoundingRectangle();
|
|
20
|
+
|
|
21
|
+
this._context = context;
|
|
22
|
+
this._fb = new FramebufferManager({
|
|
23
|
+
depthStencil: true,
|
|
24
|
+
pixelDatatype: PixelDatatype.FLOAT,
|
|
25
|
+
pixelFormat: PixelFormat.RGBA,
|
|
26
|
+
});
|
|
27
|
+
this._passState = passState;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getSnapObjectsFromPixels(context, pixels, width, height) {
|
|
31
|
+
const max = Math.max(width, height);
|
|
32
|
+
const length = max * max;
|
|
33
|
+
const halfWidth = Math.floor(width * 0.5);
|
|
34
|
+
const halfHeight = Math.floor(height * 0.5);
|
|
35
|
+
|
|
36
|
+
let x = 0;
|
|
37
|
+
let y = 0;
|
|
38
|
+
let dx = 0;
|
|
39
|
+
let dy = -1;
|
|
40
|
+
|
|
41
|
+
const results = [];
|
|
42
|
+
for (let i = 0; i < length; ++i) {
|
|
43
|
+
if (
|
|
44
|
+
-halfWidth <= x &&
|
|
45
|
+
x <= halfWidth &&
|
|
46
|
+
-halfHeight <= y &&
|
|
47
|
+
y <= halfHeight
|
|
48
|
+
) {
|
|
49
|
+
const index = 4 * ((halfHeight - y) * width + x + halfWidth);
|
|
50
|
+
|
|
51
|
+
const pickColor = pixels[index];
|
|
52
|
+
const object = context.getObjectByPickColor(pickColor);
|
|
53
|
+
if (defined(object)) {
|
|
54
|
+
results.push({
|
|
55
|
+
object: object,
|
|
56
|
+
isEdge: pixels[index + 1] > 0.0,
|
|
57
|
+
depth: pixels[index + 2],
|
|
58
|
+
x: x,
|
|
59
|
+
y: y,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (x === y || (x < 0 && -x === y) || (x > 0 && x === 1 - y)) {
|
|
65
|
+
const temp = dx;
|
|
66
|
+
dx = -dy;
|
|
67
|
+
dy = temp;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
x += dx;
|
|
71
|
+
y += dy;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
SnapFramebuffer.prototype.begin = function (screenSpaceRectangle, viewport) {
|
|
78
|
+
const context = this._context;
|
|
79
|
+
const { width, height } = viewport;
|
|
80
|
+
|
|
81
|
+
BoundingRectangle.clone(
|
|
82
|
+
screenSpaceRectangle,
|
|
83
|
+
this._passState.scissorTest.rectangle,
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
this._fb.update(context, width, height);
|
|
87
|
+
this._passState.framebuffer = this._fb.framebuffer;
|
|
88
|
+
|
|
89
|
+
this._passState.viewport.width = width;
|
|
90
|
+
this._passState.viewport.height = height;
|
|
91
|
+
|
|
92
|
+
return this._passState;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
SnapFramebuffer.prototype.end = function (screenSpaceRectangle) {
|
|
96
|
+
const width = screenSpaceRectangle.width ?? 1.0;
|
|
97
|
+
const height = screenSpaceRectangle.height ?? 1.0;
|
|
98
|
+
|
|
99
|
+
const context = this._context;
|
|
100
|
+
const pixels = context.readPixels({
|
|
101
|
+
x: screenSpaceRectangle.x,
|
|
102
|
+
y: screenSpaceRectangle.y,
|
|
103
|
+
width: width,
|
|
104
|
+
height: height,
|
|
105
|
+
pixelDatatype: PixelDatatype.FLOAT,
|
|
106
|
+
framebuffer: this._fb.framebuffer,
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
return getSnapObjectsFromPixels(context, pixels, width, height);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
SnapFramebuffer.prototype.isDestroyed = function () {
|
|
113
|
+
return false;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
SnapFramebuffer.prototype.destroy = function () {
|
|
117
|
+
this._fb.destroy();
|
|
118
|
+
return destroyObject(this);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export default SnapFramebuffer;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import BoundingRectangle from "../Core/BoundingRectangle.js";
|
|
2
|
+
import Cartesian2 from "../Core/Cartesian2.js";
|
|
3
|
+
import Cartesian3 from "../Core/Cartesian3.js";
|
|
4
|
+
import Check from "../Core/Check.js";
|
|
5
|
+
import defined from "../Core/defined.js";
|
|
6
|
+
import oneTimeWarning from "../Core/oneTimeWarning.js";
|
|
7
|
+
import Ray from "../Core/Ray.js";
|
|
8
|
+
import { pickBegin, pickEnd } from "./Picking.js";
|
|
9
|
+
import SnapFramebuffer from "./SnapFramebuffer.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Implementation of {@link Scene#snap}: snap-to-geometry picking.
|
|
13
|
+
*
|
|
14
|
+
* A snapping pass is an offscreen pick render (it reuses the pick render
|
|
15
|
+
* machinery via <code>pickBegin</code>/<code>pickEnd</code>) that targets a
|
|
16
|
+
* dedicated RGBA32F framebuffer instead of the RGBA8 pick framebuffer. Each
|
|
17
|
+
* pixel carries a fuller payload than a pick color:
|
|
18
|
+
* <ul>
|
|
19
|
+
* <li>R: pick ID (uint32)</li>
|
|
20
|
+
* <li>G: isEdge flag (0.0/1.0)</li>
|
|
21
|
+
* <li>B: linear eye-space depth (meters)</li>
|
|
22
|
+
* <li>A: unused</li>
|
|
23
|
+
* </ul>
|
|
24
|
+
* The payload expression is built in PickingPipelineStage (DrawCommand.snapId)
|
|
25
|
+
* and compiled into a snap-derived shader by
|
|
26
|
+
* DerivedCommand.createSnapDerivedCommand. Only commands with a
|
|
27
|
+
* <code>snapId</code> (i.e. Model-pipeline primitives) render during a
|
|
28
|
+
* snapping pass.
|
|
29
|
+
*
|
|
30
|
+
* @namespace Snapping
|
|
31
|
+
*
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
const Snapping = {};
|
|
35
|
+
|
|
36
|
+
const scratchRectangle = new BoundingRectangle(0.0, 0.0, 3.0, 3.0);
|
|
37
|
+
const scratchSnapCoord = new Cartesian2();
|
|
38
|
+
const scratchSnapRay = new Ray();
|
|
39
|
+
const scratchSnapOffset = new Cartesian3();
|
|
40
|
+
|
|
41
|
+
// Radius around the crosshair, in pixels, used to sample the nearest surface
|
|
42
|
+
// (the occluder the cursor is on).
|
|
43
|
+
const SNAP_OCCLUDER_RADIUS_PIXELS = 3.0;
|
|
44
|
+
|
|
45
|
+
// An edge more than this fraction deeper than that surface is treated as
|
|
46
|
+
// occluded by it (the edge is only visible because it pokes through a gap in a
|
|
47
|
+
// nearer silhouette), so snap doesn't punch through to geometry behind the
|
|
48
|
+
// object the cursor is on.
|
|
49
|
+
const SNAP_OCCLUSION_TOLERANCE = 0.1;
|
|
50
|
+
|
|
51
|
+
function cursorDist(hit) {
|
|
52
|
+
return Math.sqrt(hit.x * hit.x + hit.y * hit.y);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function selectBestHit(hits) {
|
|
56
|
+
// Depth of the nearest surface under the crosshair; edges well behind it are
|
|
57
|
+
// occluded by the object the cursor is on and must not win.
|
|
58
|
+
let occluderDepth = Number.POSITIVE_INFINITY;
|
|
59
|
+
for (const hit of hits) {
|
|
60
|
+
if (!hit.isEdge && cursorDist(hit) <= SNAP_OCCLUDER_RADIUS_PIXELS) {
|
|
61
|
+
occluderDepth = Math.min(occluderDepth, hit.depth);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const maxEdgeDepth = occluderDepth * (1.0 + SNAP_OCCLUSION_TOLERANCE);
|
|
65
|
+
|
|
66
|
+
// Edges outrank surfaces, but only edges in front of (or at) the occluder;
|
|
67
|
+
// otherwise fall back to the closest surface. Within the chosen group the
|
|
68
|
+
// hit closest to the crosshair wins.
|
|
69
|
+
const visible = hits.filter(
|
|
70
|
+
(hit) => !hit.isEdge || hit.depth <= maxEdgeDepth,
|
|
71
|
+
);
|
|
72
|
+
const wantEdge = visible.some((hit) => hit.isEdge);
|
|
73
|
+
const group = visible.filter((hit) => hit.isEdge === wantEdge);
|
|
74
|
+
return group.reduce((best, hit) =>
|
|
75
|
+
cursorDist(hit) < cursorDist(best) ? hit : best,
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Unproject a snap hit's eye-space depth (channel B of the snap framebuffer,
|
|
80
|
+
// written by the snap shader at the edge fragment itself) into a world
|
|
81
|
+
// position.
|
|
82
|
+
function snapHitToWorld(scene, windowPosition, hit) {
|
|
83
|
+
const coords = scratchSnapCoord;
|
|
84
|
+
coords.x = windowPosition.x + hit.x;
|
|
85
|
+
coords.y = windowPosition.y + hit.y;
|
|
86
|
+
|
|
87
|
+
const ray = scene.camera.getPickRay(coords, scratchSnapRay);
|
|
88
|
+
if (!defined(ray)) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// hit.depth is perpendicular distance from the camera plane along the view
|
|
93
|
+
// direction; convert to distance along the (non-axis-aligned) pick ray.
|
|
94
|
+
const cos = Cartesian3.dot(ray.direction, scene.camera.directionWC);
|
|
95
|
+
if (cos <= 0.0) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const t = hit.depth / cos;
|
|
99
|
+
|
|
100
|
+
const offset = Cartesian3.multiplyByScalar(
|
|
101
|
+
ray.direction,
|
|
102
|
+
t,
|
|
103
|
+
scratchSnapOffset,
|
|
104
|
+
);
|
|
105
|
+
return Cartesian3.add(ray.origin, offset, new Cartesian3());
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Returns the best snap target in a screen-space region around
|
|
110
|
+
* <code>windowPosition</code>. See {@link Scene#snap} for the public API.
|
|
111
|
+
*
|
|
112
|
+
* @param {Scene} scene
|
|
113
|
+
* @param {Cartesian2} windowPosition Window coordinates at the center of the search region.
|
|
114
|
+
* @param {object} [options] Object with the following properties:
|
|
115
|
+
* @param {number} [options.width=25] Width of the search region in pixels.
|
|
116
|
+
* @param {number} [options.height=options.width] Height of the search region in pixels.
|
|
117
|
+
* @returns {SceneSnapResult | undefined}
|
|
118
|
+
*
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
Snapping.snap = function (scene, windowPosition, options) {
|
|
122
|
+
//>>includeStart('debug', pragmas.debug);
|
|
123
|
+
Check.defined("windowPosition", windowPosition);
|
|
124
|
+
//>>includeEnd('debug');
|
|
125
|
+
|
|
126
|
+
const width = options?.width ?? 25;
|
|
127
|
+
const height = options?.height ?? width;
|
|
128
|
+
|
|
129
|
+
const { context, defaultView } = scene;
|
|
130
|
+
|
|
131
|
+
// The snap framebuffer is RGBA32F; rendering to it requires float color
|
|
132
|
+
// attachment support.
|
|
133
|
+
if (!context.colorBufferFloat) {
|
|
134
|
+
oneTimeWarning(
|
|
135
|
+
"snap-color-buffer-float",
|
|
136
|
+
"Scene.snap requires the EXT_color_buffer_float extension, which is not supported on this platform.",
|
|
137
|
+
);
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Created lazily so applications that never snap pay no framebuffer cost.
|
|
142
|
+
if (!defined(defaultView.snapFramebuffer)) {
|
|
143
|
+
defaultView.snapFramebuffer = new SnapFramebuffer(context);
|
|
144
|
+
}
|
|
145
|
+
const snapFramebuffer = defaultView.snapFramebuffer;
|
|
146
|
+
|
|
147
|
+
const drawingBufferRectangle = scratchRectangle;
|
|
148
|
+
pickBegin(scene, windowPosition, drawingBufferRectangle, width, height, {
|
|
149
|
+
framebuffer: snapFramebuffer,
|
|
150
|
+
snap: true,
|
|
151
|
+
});
|
|
152
|
+
const hits = snapFramebuffer.end(drawingBufferRectangle);
|
|
153
|
+
pickEnd(scene);
|
|
154
|
+
|
|
155
|
+
if (hits.length === 0) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const best = selectBestHit(hits);
|
|
160
|
+
if (!defined(best)) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const position = snapHitToWorld(scene, windowPosition, best);
|
|
165
|
+
if (!defined(position)) {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return {
|
|
170
|
+
object: best.object,
|
|
171
|
+
isEdge: best.isEdge,
|
|
172
|
+
position: position,
|
|
173
|
+
screenPosition: new Cartesian2(
|
|
174
|
+
windowPosition.x + best.x,
|
|
175
|
+
windowPosition.y + best.y,
|
|
176
|
+
),
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// Exposed for testing.
|
|
181
|
+
Snapping._selectBestHit = selectBestHit;
|
|
182
|
+
Snapping._snapHitToWorld = snapHitToWorld;
|
|
183
|
+
|
|
184
|
+
export default Snapping;
|
|
@@ -823,6 +823,7 @@ function createFillMesh(tileProvider, frameState, tile, vertexArraysToDestroy) {
|
|
|
823
823
|
GlobeSurfaceTile.initialize(
|
|
824
824
|
tile,
|
|
825
825
|
tileProvider.terrainProvider,
|
|
826
|
+
tileProvider.vectorProvider,
|
|
826
827
|
tileProvider._imageryLayers,
|
|
827
828
|
);
|
|
828
829
|
|
|
@@ -1243,7 +1244,7 @@ function createFillMesh(tileProvider, frameState, tile, vertexArraysToDestroy) {
|
|
|
1243
1244
|
|
|
1244
1245
|
indices[indexOut++] = centerIndex;
|
|
1245
1246
|
indices[indexOut++] = i;
|
|
1246
|
-
indices[indexOut
|
|
1247
|
+
indices[indexOut] = 0;
|
|
1247
1248
|
|
|
1248
1249
|
const westIndicesSouthToNorth = [];
|
|
1249
1250
|
for (i = southwestIndex; i >= northwestIndex; --i) {
|
|
@@ -1800,7 +1801,7 @@ function addEdgeMesh(
|
|
|
1800
1801
|
heightRange,
|
|
1801
1802
|
) {
|
|
1802
1803
|
// Handle copying edges across the anti-meridian.
|
|
1803
|
-
let sourceRectangle
|
|
1804
|
+
let sourceRectangle;
|
|
1804
1805
|
if (tileEdge === TileEdge.EAST && terrainFillMesh.tile.x === 0) {
|
|
1805
1806
|
sourceRectangle = Rectangle.clone(
|
|
1806
1807
|
edgeTile.rectangle,
|
|
@@ -41,7 +41,7 @@ const scratchIntersectionRectangle = new Rectangle();
|
|
|
41
41
|
* Base provider for URL-template vector sources that are rendered through a
|
|
42
42
|
* runtime-generated 3D Tiles tileset.
|
|
43
43
|
*
|
|
44
|
-
* @
|
|
44
|
+
* @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
|
|
45
45
|
*/
|
|
46
46
|
class UrlTemplate3DTilesDataProvider {
|
|
47
47
|
/**
|
|
@@ -402,8 +402,8 @@ function initialize(content, arrayBuffer, byteOffset) {
|
|
|
402
402
|
byteOffset += sizeOfUint32;
|
|
403
403
|
const polylinePositionByteLength = view.getUint32(byteOffset, true);
|
|
404
404
|
byteOffset += sizeOfUint32;
|
|
405
|
-
|
|
406
|
-
byteOffset += sizeOfUint32;
|
|
405
|
+
// Ignore pointsPositionByteLength
|
|
406
|
+
byteOffset += sizeOfUint32; // For pointsPositionByteLength
|
|
407
407
|
|
|
408
408
|
const featureTableJson = getJsonFromTypedArray(
|
|
409
409
|
uint8Array,
|
|
@@ -687,7 +687,6 @@ function initialize(content, arrayBuffer, byteOffset) {
|
|
|
687
687
|
byteOffset,
|
|
688
688
|
numberOfPoints * 3,
|
|
689
689
|
);
|
|
690
|
-
byteOffset += pointsPositionByteLength;
|
|
691
690
|
content._points = new Vector3DTilePoints({
|
|
692
691
|
positions: pointPositions,
|
|
693
692
|
batchIds: batchIds.points,
|
|
@@ -18,6 +18,7 @@ import createVectorTileBuffersFromModelComponents from "./Model/createVectorTile
|
|
|
18
18
|
import defined from "../Core/defined.js";
|
|
19
19
|
import destroyObject from "../Core/destroyObject.js";
|
|
20
20
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
21
|
+
import { isHeightReferenceClamp } from "./HeightReference.js";
|
|
21
22
|
|
|
22
23
|
/** @import BufferPrimitive from "./BufferPrimitive.js"; */
|
|
23
24
|
/** @import BufferPrimitiveCollection from "./BufferPrimitiveCollection.js"; */
|
|
@@ -319,6 +320,9 @@ class VectorGltf3DTileContent {
|
|
|
319
320
|
* @param {FrameState} frameState
|
|
320
321
|
*/
|
|
321
322
|
update(_tileset, frameState) {
|
|
323
|
+
const tileset = this._tileset;
|
|
324
|
+
const vectorProvider = tileset._scene?.vectorProvider;
|
|
325
|
+
|
|
322
326
|
if (defined(this._model) && !this._ready) {
|
|
323
327
|
const model = this._model;
|
|
324
328
|
model.modelMatrix = this._tile.computedTransform;
|
|
@@ -337,13 +341,24 @@ class VectorGltf3DTileContent {
|
|
|
337
341
|
scratchTileModelMatrix,
|
|
338
342
|
);
|
|
339
343
|
|
|
344
|
+
// Only bake collections selected to render this frame (avoids duplicates).
|
|
345
|
+
const isSelected =
|
|
346
|
+
defined(vectorProvider) &&
|
|
347
|
+
this._tile._selectedFrame === frameState.frameNumber;
|
|
348
|
+
|
|
340
349
|
for (let i = 0; i < this._collections.length; i++) {
|
|
350
|
+
const collection = this._collections[i];
|
|
341
351
|
Matrix4.multiplyTransformation(
|
|
342
352
|
scratchTileModelMatrix,
|
|
343
353
|
this._collectionLocalMatrices[i],
|
|
344
|
-
|
|
354
|
+
collection.modelMatrix,
|
|
345
355
|
);
|
|
346
|
-
|
|
356
|
+
|
|
357
|
+
if (!isHeightReferenceClamp(tileset._heightReference)) {
|
|
358
|
+
collection.update(frameState);
|
|
359
|
+
} else if (isSelected) {
|
|
360
|
+
vectorProvider.markSelected(collection, frameState.frameNumber);
|
|
361
|
+
}
|
|
347
362
|
}
|
|
348
363
|
}
|
|
349
364
|
|
|
@@ -362,9 +377,14 @@ class VectorGltf3DTileContent {
|
|
|
362
377
|
}
|
|
363
378
|
|
|
364
379
|
destroy() {
|
|
380
|
+
const vectorProvider = this._tileset._scene?.vectorProvider;
|
|
381
|
+
|
|
365
382
|
this._model?.destroy();
|
|
366
383
|
this._model = undefined;
|
|
367
|
-
|
|
384
|
+
for (const collection of this._collections) {
|
|
385
|
+
vectorProvider?.remove(collection);
|
|
386
|
+
collection.destroy();
|
|
387
|
+
}
|
|
368
388
|
this._collections.length = 0;
|
|
369
389
|
return destroyObject(this);
|
|
370
390
|
}
|
package/Source/Scene/View.js
CHANGED
|
@@ -11,6 +11,7 @@ import Pass from "../Renderer/Pass.js";
|
|
|
11
11
|
import PassState from "../Renderer/PassState.js";
|
|
12
12
|
import Camera from "./Camera.js";
|
|
13
13
|
import EdgeFramebuffer from "./EdgeFramebuffer.js";
|
|
14
|
+
import PlanarFillIdFramebuffer from "./PlanarFillIdFramebuffer.js";
|
|
14
15
|
import FrustumCommands from "./FrustumCommands.js";
|
|
15
16
|
import GlobeDepth from "./GlobeDepth.js";
|
|
16
17
|
import GlobeTranslucencyFramebuffer from "./GlobeTranslucencyFramebuffer.js";
|
|
@@ -62,9 +63,11 @@ function View(scene, camera, viewport) {
|
|
|
62
63
|
this.viewport = viewport;
|
|
63
64
|
this.passState = passState;
|
|
64
65
|
this.pickFramebuffer = new PickFramebuffer(context);
|
|
66
|
+
this.snapFramebuffer = undefined;
|
|
65
67
|
this.pickDepthFramebuffer = new PickDepthFramebuffer();
|
|
66
68
|
this.sceneFramebuffer = new SceneFramebuffer();
|
|
67
69
|
this.edgeFramebuffer = new EdgeFramebuffer();
|
|
70
|
+
this.planarFillIdFramebuffer = new PlanarFillIdFramebuffer();
|
|
68
71
|
this.globeDepth = globeDepth;
|
|
69
72
|
this.globeTranslucencyFramebuffer = new GlobeTranslucencyFramebuffer();
|
|
70
73
|
this.oit = oit;
|
|
@@ -211,15 +214,11 @@ function updateFrustums(view, scene, near, far) {
|
|
|
211
214
|
curNear = Math.max(near, Math.pow(farToNearRatio, m) * near);
|
|
212
215
|
curFar = Math.min(far, farToNearRatio * curNear);
|
|
213
216
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
frustumCommands = frustumCommandsList[m] = new FrustumCommands(
|
|
217
|
-
curNear,
|
|
218
|
-
curFar,
|
|
219
|
-
);
|
|
217
|
+
if (!defined(frustumCommandsList[m])) {
|
|
218
|
+
frustumCommandsList[m] = new FrustumCommands(curNear, curFar);
|
|
220
219
|
} else {
|
|
221
|
-
|
|
222
|
-
|
|
220
|
+
frustumCommandsList[m].near = curNear;
|
|
221
|
+
frustumCommandsList[m].far = curFar;
|
|
223
222
|
}
|
|
224
223
|
}
|
|
225
224
|
}
|
|
@@ -443,11 +442,14 @@ View.prototype.createPotentiallyVisibleSet = function (scene) {
|
|
|
443
442
|
|
|
444
443
|
View.prototype.destroy = function () {
|
|
445
444
|
this.pickFramebuffer = this.pickFramebuffer && this.pickFramebuffer.destroy();
|
|
445
|
+
this.snapFramebuffer = this.snapFramebuffer && this.snapFramebuffer.destroy();
|
|
446
446
|
this.pickDepthFramebuffer =
|
|
447
447
|
this.pickDepthFramebuffer && this.pickDepthFramebuffer.destroy();
|
|
448
448
|
this.sceneFramebuffer =
|
|
449
449
|
this.sceneFramebuffer && this.sceneFramebuffer.destroy();
|
|
450
450
|
this.edgeFramebuffer = this.edgeFramebuffer && this.edgeFramebuffer.destroy();
|
|
451
|
+
this.planarFillIdFramebuffer =
|
|
452
|
+
this.planarFillIdFramebuffer && this.planarFillIdFramebuffer.destroy();
|
|
451
453
|
this.globeDepth = this.globeDepth && this.globeDepth.destroy();
|
|
452
454
|
this.oit = this.oit && this.oit.destroy();
|
|
453
455
|
this.translucentTileClassification =
|
|
@@ -602,7 +602,7 @@ function updateKeyframeNodes(that, frameState) {
|
|
|
602
602
|
that._primitive.tileFailed.raiseEvent();
|
|
603
603
|
continue;
|
|
604
604
|
}
|
|
605
|
-
let addNodeIndex
|
|
605
|
+
let addNodeIndex;
|
|
606
606
|
if (megatexture.isFull()) {
|
|
607
607
|
// If the megatexture is full, try removing a discardable node with the lowest priority.
|
|
608
608
|
addNodeIndex = keyframeNodesInMegatextureCount - 1 - destroyedCount;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import defined from "../Core/defined.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns the meshopt compression extension object, KHR_meshopt_compression or
|
|
5
|
+
* EXT_meshopt_compression, on a glTF bufferView or buffer. If both are present,
|
|
6
|
+
* KHR is preferred.
|
|
7
|
+
* @param {object} gltfObject A glTF bufferView or buffer.
|
|
8
|
+
* @returns {object|undefined} The meshopt extension object, or undefined.
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
function findMeshoptExtension(gltfObject) {
|
|
12
|
+
const extensions = gltfObject?.extensions;
|
|
13
|
+
if (!defined(extensions)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
extensions["KHR_meshopt_compression"] ??
|
|
19
|
+
extensions["EXT_meshopt_compression"]
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default findMeshoptExtension;
|
|
@@ -109,6 +109,8 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
109
109
|
if (collection._dirtyCount > 0) {
|
|
110
110
|
const { attributeArrays } = renderContext;
|
|
111
111
|
|
|
112
|
+
const positionHighArray = attributeArrays.positionHigh;
|
|
113
|
+
const positionLowArray = attributeArrays.positionLow;
|
|
112
114
|
const pickColorArray = attributeArrays.pickColor;
|
|
113
115
|
const showSizeColorAlphaArray = attributeArrays.showSizeColorAlpha;
|
|
114
116
|
const outlineWidthColorAlphaArray = attributeArrays.outlineWidthColorAlpha;
|
|
@@ -125,12 +127,10 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
125
127
|
if (useFloat64) {
|
|
126
128
|
point.getPosition(cartesian);
|
|
127
129
|
EncodedCartesian3.fromCartesian(cartesian, encodedCartesian);
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
attributeArrays.positionLow[i * 3 + 1] = encodedCartesian.low.y;
|
|
133
|
-
attributeArrays.positionLow[i * 3 + 2] = encodedCartesian.low.z;
|
|
130
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
131
|
+
Cartesian3.pack(encodedCartesian.high, positionHighArray, i * 3);
|
|
132
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
133
|
+
Cartesian3.pack(encodedCartesian.low, positionLowArray, i * 3);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
point.getMaterial(material);
|
|
@@ -150,9 +150,14 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
150
150
|
|
|
151
151
|
outlineWidthColorAlphaArray[i * 3] = material.outlineWidth;
|
|
152
152
|
outlineWidthColorAlphaArray[i * 3 + 1] = AttributeCompression.encodeRGB8(
|
|
153
|
-
|
|
153
|
+
// When outlineWidth=0, overwrite outlineColor to prevent subpixel bleeding.
|
|
154
|
+
material.outlineWidth > 0 ? material.outlineColor : material.color,
|
|
154
155
|
);
|
|
155
|
-
outlineWidthColorAlphaArray[i * 3 + 2] =
|
|
156
|
+
outlineWidthColorAlphaArray[i * 3 + 2] =
|
|
157
|
+
// When outlineWidth=0, overwrite outlineAlpha to prevent subpixel bleeding.
|
|
158
|
+
material.outlineWidth > 0
|
|
159
|
+
? material.outlineColor.alpha
|
|
160
|
+
: material.color.alpha;
|
|
156
161
|
|
|
157
162
|
point._dirty = false;
|
|
158
163
|
}
|
|
@@ -301,8 +306,7 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
|
|
|
301
306
|
|
|
302
307
|
frameState.commandList.push(command);
|
|
303
308
|
|
|
304
|
-
collection.
|
|
305
|
-
collection._dirtyOffset = 0;
|
|
309
|
+
collection._makeClean();
|
|
306
310
|
|
|
307
311
|
return renderContext;
|
|
308
312
|
}
|
|
@@ -73,7 +73,7 @@ const polygon = new BufferPolygon();
|
|
|
73
73
|
const material = new BufferPolygonMaterial();
|
|
74
74
|
const pickColor = new Color();
|
|
75
75
|
const cartesian = new Cartesian3();
|
|
76
|
-
const
|
|
76
|
+
const encodedC = new EncodedCartesian3();
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* @param {BufferPolygonCollection} collection
|
|
@@ -118,6 +118,8 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
118
118
|
const { attributeArrays } = renderContext;
|
|
119
119
|
const { _dirtyOffset, _dirtyCount } = collection;
|
|
120
120
|
|
|
121
|
+
const positionHighArray = attributeArrays.positionHigh;
|
|
122
|
+
const positionLowArray = attributeArrays.positionLow;
|
|
121
123
|
const indexArray = renderContext.indexArray;
|
|
122
124
|
const pickColorArray = attributeArrays.pickColor;
|
|
123
125
|
const showColorAlphaArray = attributeArrays.showColorAlpha;
|
|
@@ -152,19 +154,13 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
152
154
|
// Update vertex arrays.
|
|
153
155
|
for (let j = 0, jl = polygon.vertexCount; j < jl; j++) {
|
|
154
156
|
if (useFloat64) {
|
|
155
|
-
// @ts-expect-error
|
|
157
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
156
158
|
Cartesian3.fromArray(cartesianArray, j * 3, cartesian);
|
|
157
|
-
EncodedCartesian3.fromCartesian(cartesian,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
attributeArrays.positionHigh[vOffset * 3 + 2] =
|
|
163
|
-
encodedCartesian.high.z;
|
|
164
|
-
|
|
165
|
-
attributeArrays.positionLow[vOffset * 3] = encodedCartesian.low.x;
|
|
166
|
-
attributeArrays.positionLow[vOffset * 3 + 1] = encodedCartesian.low.y;
|
|
167
|
-
attributeArrays.positionLow[vOffset * 3 + 2] = encodedCartesian.low.z;
|
|
159
|
+
EncodedCartesian3.fromCartesian(cartesian, encodedC);
|
|
160
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
161
|
+
Cartesian3.pack(encodedC.high, positionHighArray, vOffset * 3);
|
|
162
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
163
|
+
Cartesian3.pack(encodedC.low, positionLowArray, vOffset * 3);
|
|
168
164
|
}
|
|
169
165
|
|
|
170
166
|
pickColorArray[vOffset * 4] = Color.floatToByte(pickColor.red);
|
|
@@ -336,8 +332,7 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
|
|
|
336
332
|
|
|
337
333
|
frameState.commandList.push(command);
|
|
338
334
|
|
|
339
|
-
collection.
|
|
340
|
-
collection._dirtyOffset = 0;
|
|
335
|
+
collection._makeClean();
|
|
341
336
|
|
|
342
337
|
return renderContext;
|
|
343
338
|
}
|