@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
|
@@ -3,8 +3,8 @@ import Frozen from "../Core/Frozen.js";
|
|
|
3
3
|
import defined from "../Core/defined.js";
|
|
4
4
|
import DeveloperError from "../Core/DeveloperError.js";
|
|
5
5
|
import getAbsoluteUri from "../Core/getAbsoluteUri.js";
|
|
6
|
+
import findMeshoptExtension from "./findMeshoptExtension.js";
|
|
6
7
|
import GltfLoaderUtil from "./GltfLoaderUtil.js";
|
|
7
|
-
import hasExtension from "./hasExtension.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Compute cache keys for resources in {@link ResourceCache}.
|
|
@@ -22,8 +22,8 @@ function getExternalResourceCacheKey(resource) {
|
|
|
22
22
|
function getBufferViewCacheKey(bufferView) {
|
|
23
23
|
let { byteOffset, byteLength } = bufferView;
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const meshopt = findMeshoptExtension(bufferView);
|
|
26
|
+
if (defined(meshopt)) {
|
|
27
27
|
byteOffset = meshopt.byteOffset ?? 0;
|
|
28
28
|
byteLength = meshopt.byteLength;
|
|
29
29
|
}
|
|
@@ -71,8 +71,8 @@ function getDracoCacheKey(gltf, draco, gltfResource, baseResource) {
|
|
|
71
71
|
return `${bufferCacheKey}-range-${bufferViewCacheKey}`;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
function getSpzCacheKey(gltf,
|
|
75
|
-
const bufferViewId =
|
|
74
|
+
function getSpzCacheKey(gltf, spz, gltfResource, baseResource) {
|
|
75
|
+
const bufferViewId = spz.bufferView;
|
|
76
76
|
const bufferView = gltf.bufferViews[bufferViewId];
|
|
77
77
|
const bufferId = bufferView.buffer;
|
|
78
78
|
const buffer = gltf.buffers[bufferId];
|
|
@@ -247,8 +247,8 @@ ResourceCacheKey.getBufferViewCacheKey = function (options) {
|
|
|
247
247
|
const bufferView = gltf.bufferViews[bufferViewId];
|
|
248
248
|
let bufferId = bufferView.buffer;
|
|
249
249
|
const buffer = gltf.buffers[bufferId];
|
|
250
|
-
|
|
251
|
-
|
|
250
|
+
const meshopt = findMeshoptExtension(bufferView);
|
|
251
|
+
if (defined(meshopt)) {
|
|
252
252
|
bufferId = meshopt.buffer;
|
|
253
253
|
}
|
|
254
254
|
|
|
@@ -292,16 +292,16 @@ ResourceCacheKey.getDracoCacheKey = function (options) {
|
|
|
292
292
|
|
|
293
293
|
ResourceCacheKey.getSpzCacheKey = function (options) {
|
|
294
294
|
options = options ?? Frozen.EMPTY_OBJECT;
|
|
295
|
-
const { gltf,
|
|
295
|
+
const { gltf, spz, gltfResource, baseResource } = options;
|
|
296
296
|
|
|
297
297
|
//>>includeStart('debug', pragmas.debug);
|
|
298
298
|
Check.typeOf.object("options.gltf", gltf);
|
|
299
|
-
Check.typeOf.object("options.
|
|
299
|
+
Check.typeOf.object("options.spz", spz);
|
|
300
300
|
Check.typeOf.object("options.gltfResource", gltfResource);
|
|
301
301
|
Check.typeOf.object("options.baseResource", baseResource);
|
|
302
302
|
//>>includeEnd('debug');
|
|
303
303
|
|
|
304
|
-
return `spz:${getSpzCacheKey(gltf,
|
|
304
|
+
return `spz:${getSpzCacheKey(gltf, spz, gltfResource, baseResource)}`;
|
|
305
305
|
};
|
|
306
306
|
/**
|
|
307
307
|
* Gets the vertex buffer cache key.
|
|
@@ -313,11 +313,12 @@ ResourceCacheKey.getSpzCacheKey = function (options) {
|
|
|
313
313
|
* @param {FrameState} options.frameState The frame state.
|
|
314
314
|
* @param {number} [options.bufferViewId] The bufferView ID corresponding to the vertex buffer.
|
|
315
315
|
* @param {object} [options.draco] The Draco extension object.
|
|
316
|
+
* @param {object} [options.spz] The SPZ extension object.
|
|
316
317
|
* @param {string} [options.attributeSemantic] The attribute semantic, e.g. POSITION or NORMAL.
|
|
317
318
|
* @param {boolean} [options.dequantize=false] Determines whether or not the vertex buffer will be dequantized on the CPU.
|
|
318
319
|
* @param {boolean} [options.loadBuffer=false] Load vertex buffer as a GPU vertex buffer.
|
|
319
320
|
* @param {boolean} [options.loadTypedArray=false] Load vertex buffer as a typed array.
|
|
320
|
-
* @exception {DeveloperError}
|
|
321
|
+
* @exception {DeveloperError} Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.
|
|
321
322
|
* @exception {DeveloperError} When options.draco is defined options.attributeSemantic must also be defined.
|
|
322
323
|
*
|
|
323
324
|
* @returns {string} The vertex buffer cache key.
|
|
@@ -350,9 +351,11 @@ ResourceCacheKey.getVertexBufferCacheKey = function (options) {
|
|
|
350
351
|
const hasAttributeSemantic = defined(attributeSemantic);
|
|
351
352
|
const hasSpz = defined(spz);
|
|
352
353
|
|
|
353
|
-
|
|
354
|
+
const sourceCount =
|
|
355
|
+
Number(hasBufferViewId) + Number(hasDraco) + Number(hasSpz);
|
|
356
|
+
if (sourceCount !== 1) {
|
|
354
357
|
throw new DeveloperError(
|
|
355
|
-
"
|
|
358
|
+
"Exactly one vertex buffer source must be effective: options.bufferViewId, options.spz, or options.draco for options.attributeSemantic.",
|
|
356
359
|
);
|
|
357
360
|
}
|
|
358
361
|
|
|
@@ -388,6 +391,11 @@ ResourceCacheKey.getVertexBufferCacheKey = function (options) {
|
|
|
388
391
|
cacheKeySuffix += "-typed-array";
|
|
389
392
|
}
|
|
390
393
|
|
|
394
|
+
if (defined(spz)) {
|
|
395
|
+
const spzCacheKey = getSpzCacheKey(gltf, spz, gltfResource, baseResource);
|
|
396
|
+
return `vertex-buffer:${spzCacheKey}-spz-${attributeSemantic}${cacheKeySuffix}`;
|
|
397
|
+
}
|
|
398
|
+
|
|
391
399
|
if (defined(draco)) {
|
|
392
400
|
const dracoCacheKey = getDracoCacheKey(
|
|
393
401
|
gltf,
|
|
@@ -398,11 +406,6 @@ ResourceCacheKey.getVertexBufferCacheKey = function (options) {
|
|
|
398
406
|
return `vertex-buffer:${dracoCacheKey}-draco-${attributeSemantic}${cacheKeySuffix}`;
|
|
399
407
|
}
|
|
400
408
|
|
|
401
|
-
if (spz) {
|
|
402
|
-
const spzCacheKey = getSpzCacheKey(gltf, spz, gltfResource, baseResource);
|
|
403
|
-
return `vertex-buffer:${spzCacheKey}-spz-${attributeSemantic}${cacheKeySuffix}`;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
409
|
const bufferView = gltf.bufferViews[bufferViewId];
|
|
407
410
|
const bufferId = bufferView.buffer;
|
|
408
411
|
const buffer = gltf.buffers[bufferId];
|
package/Source/Scene/Scene.js
CHANGED
|
@@ -45,6 +45,7 @@ import BrdfLutGenerator from "./BrdfLutGenerator.js";
|
|
|
45
45
|
import Camera from "./Camera.js";
|
|
46
46
|
import Cesium3DTilePass from "./Cesium3DTilePass.js";
|
|
47
47
|
import Cesium3DTilePassState from "./Cesium3DTilePassState.js";
|
|
48
|
+
import ControllerHost from "./Controllers/ControllerHost.js";
|
|
48
49
|
import CreditDisplay from "./CreditDisplay.js";
|
|
49
50
|
import DebugCameraPrimitive from "./DebugCameraPrimitive.js";
|
|
50
51
|
import DepthPlane from "./DepthPlane.js";
|
|
@@ -69,6 +70,7 @@ import SceneTransitioner from "./SceneTransitioner.js";
|
|
|
69
70
|
import ScreenSpaceCameraController from "./ScreenSpaceCameraController.js";
|
|
70
71
|
import ShadowMap from "./ShadowMap.js";
|
|
71
72
|
import SharedContext from "../Renderer/SharedContext.js";
|
|
73
|
+
import Snapping from "./Snapping.js";
|
|
72
74
|
import SpecularEnvironmentCubeMap from "./SpecularEnvironmentCubeMap.js";
|
|
73
75
|
import StencilConstants from "./StencilConstants.js";
|
|
74
76
|
import SunLight from "./SunLight.js";
|
|
@@ -241,6 +243,8 @@ function Scene(options) {
|
|
|
241
243
|
this._preRender = new Event();
|
|
242
244
|
this._postRender = new Event();
|
|
243
245
|
|
|
246
|
+
this._controllerHost = new ControllerHost();
|
|
247
|
+
|
|
244
248
|
this._minimumDisableDepthTestDistance = 0.0;
|
|
245
249
|
this._debugInspector = new DebugInspector();
|
|
246
250
|
|
|
@@ -770,6 +774,15 @@ function Scene(options) {
|
|
|
770
774
|
*/
|
|
771
775
|
this._enableEdgeVisibility = false;
|
|
772
776
|
|
|
777
|
+
/**
|
|
778
|
+
* Whether or not to enable the planar fill feature-ID pre-pass.
|
|
779
|
+
* Updated each frame from FrameState.planarFillRequested.
|
|
780
|
+
* @type {boolean}
|
|
781
|
+
* @default false
|
|
782
|
+
* @private
|
|
783
|
+
*/
|
|
784
|
+
this._enablePlanarFillId = false;
|
|
785
|
+
|
|
773
786
|
// Give frameState, camera, and screen space camera controller initial state before rendering
|
|
774
787
|
updateFrameNumber(this, 0.0, JulianDate.now());
|
|
775
788
|
this.updateFrameState();
|
|
@@ -1079,6 +1092,25 @@ Object.defineProperties(Scene.prototype, {
|
|
|
1079
1092
|
},
|
|
1080
1093
|
},
|
|
1081
1094
|
|
|
1095
|
+
/**
|
|
1096
|
+
* Collects an array of <code>Controller</code> objects that can be registered with the scene to handle input events, camera animations, and other interactions.
|
|
1097
|
+
* @see {@link Controller}
|
|
1098
|
+
* @type {ControllerHost}
|
|
1099
|
+
* @memberof Scene.prototype
|
|
1100
|
+
* @readonly
|
|
1101
|
+
* @example
|
|
1102
|
+
* scene.screenSpaceCameraController.enableInputs = false;
|
|
1103
|
+
* scene.screenSpaceCameraController.enableCollisionDetection = false;
|
|
1104
|
+
*
|
|
1105
|
+
* const tiltOrbitController = new Cesium.ScreenSpaceTiltOrbitCameraController();
|
|
1106
|
+
* scene.controllerHost.registerController(tiltOrbitController, scene.canvas.parentNode);
|
|
1107
|
+
*/
|
|
1108
|
+
controllerHost: {
|
|
1109
|
+
get: function () {
|
|
1110
|
+
return this._controllerHost;
|
|
1111
|
+
},
|
|
1112
|
+
},
|
|
1113
|
+
|
|
1082
1114
|
/**
|
|
1083
1115
|
* Gets the controller for camera input handling.
|
|
1084
1116
|
* @memberof Scene.prototype
|
|
@@ -1227,6 +1259,17 @@ Object.defineProperties(Scene.prototype, {
|
|
|
1227
1259
|
},
|
|
1228
1260
|
},
|
|
1229
1261
|
|
|
1262
|
+
/**
|
|
1263
|
+
* @memberof Scene.prototype
|
|
1264
|
+
* @type {VectorProvider}
|
|
1265
|
+
* @ignore
|
|
1266
|
+
*/
|
|
1267
|
+
vectorProvider: {
|
|
1268
|
+
get: function () {
|
|
1269
|
+
return this.globe?.vectorProvider;
|
|
1270
|
+
},
|
|
1271
|
+
},
|
|
1272
|
+
|
|
1230
1273
|
/**
|
|
1231
1274
|
* Gets the event that will be raised before the scene is updated or rendered. Subscribers to the event
|
|
1232
1275
|
* receive the Scene instance as the first parameter and the current time as the second parameter.
|
|
@@ -1770,6 +1813,16 @@ function updateDerivedCommands(scene, command, shadowsDirty) {
|
|
|
1770
1813
|
derivedCommands.picking,
|
|
1771
1814
|
);
|
|
1772
1815
|
}
|
|
1816
|
+
// Snap derived commands are only created on demand, during a snapping pass,
|
|
1817
|
+
// so applications that never call Scene.snap pay no shader-derivation cost.
|
|
1818
|
+
if (defined(command.snapId) && frameState.passes.snap) {
|
|
1819
|
+
derivedCommands.snapping = DerivedCommand.createSnapDerivedCommand(
|
|
1820
|
+
scene,
|
|
1821
|
+
command,
|
|
1822
|
+
context,
|
|
1823
|
+
derivedCommands.snapping,
|
|
1824
|
+
);
|
|
1825
|
+
}
|
|
1773
1826
|
if (frameState.pickingMetadata && command.pickMetadataAllowed) {
|
|
1774
1827
|
command.pickedMetadataInfo = frameState.pickedMetadataInfo;
|
|
1775
1828
|
if (defined(command.pickedMetadataInfo)) {
|
|
@@ -1867,12 +1920,17 @@ Scene.prototype.updateDerivedCommands = function (command) {
|
|
|
1867
1920
|
const needsUpdateForMetadataPicking =
|
|
1868
1921
|
frameState.pickingMetadata &&
|
|
1869
1922
|
pickedMetadataInfoChanged(command, frameState);
|
|
1923
|
+
const needsUpdateForSnap =
|
|
1924
|
+
frameState.passes.snap &&
|
|
1925
|
+
defined(command.snapId) &&
|
|
1926
|
+
!defined(derivedCommands.snapping);
|
|
1870
1927
|
command.dirty =
|
|
1871
1928
|
command.dirty ||
|
|
1872
1929
|
needsLogDepthDerivedCommands ||
|
|
1873
1930
|
needsHdrCommands ||
|
|
1874
1931
|
needsDerivedCommands ||
|
|
1875
|
-
needsUpdateForMetadataPicking
|
|
1932
|
+
needsUpdateForMetadataPicking ||
|
|
1933
|
+
needsUpdateForSnap;
|
|
1876
1934
|
|
|
1877
1935
|
if (!command.dirty) {
|
|
1878
1936
|
return;
|
|
@@ -1960,6 +2018,7 @@ Scene.prototype.clearPasses = function (passes) {
|
|
|
1960
2018
|
passes.render = false;
|
|
1961
2019
|
passes.pick = false;
|
|
1962
2020
|
passes.pickVoxel = false;
|
|
2021
|
+
passes.snap = false;
|
|
1963
2022
|
passes.depth = false;
|
|
1964
2023
|
passes.postProcess = false;
|
|
1965
2024
|
passes.offscreen = false;
|
|
@@ -2245,6 +2304,21 @@ function executeCommand(command, scene, passState, debugFramebuffer) {
|
|
|
2245
2304
|
|
|
2246
2305
|
if (passes.pick || passes.depth) {
|
|
2247
2306
|
if (passes.pick && !passes.depth) {
|
|
2307
|
+
if (frameState.passes.snap) {
|
|
2308
|
+
// Snapping pass: only commands with a snap variant write the float
|
|
2309
|
+
// snap payload. Commands without one (no snapId, e.g. globe/terrain)
|
|
2310
|
+
// execute depth-only so they still occlude snappable geometry behind
|
|
2311
|
+
// them without polluting the RGBA32F snap framebuffer with RGBA8
|
|
2312
|
+
// pick colors.
|
|
2313
|
+
if (defined(command.derivedCommands.snapping)) {
|
|
2314
|
+
command = command.derivedCommands.snapping.snapCommand;
|
|
2315
|
+
command.execute(context, passState);
|
|
2316
|
+
} else if (defined(command.derivedCommands.depth)) {
|
|
2317
|
+
command = command.derivedCommands.depth.depthOnlyCommand;
|
|
2318
|
+
command.execute(context, passState);
|
|
2319
|
+
}
|
|
2320
|
+
return;
|
|
2321
|
+
}
|
|
2248
2322
|
if (
|
|
2249
2323
|
frameState.pickingMetadata &&
|
|
2250
2324
|
defined(command.derivedCommands.pickingMetadata)
|
|
@@ -2466,6 +2540,7 @@ function createWorkingFrustum(camera) {
|
|
|
2466
2540
|
*
|
|
2467
2541
|
* @param {Scene} scene The scene.
|
|
2468
2542
|
* @returns {Function} A function to execute translucent commands.
|
|
2543
|
+
* @ignore
|
|
2469
2544
|
*/
|
|
2470
2545
|
function obtainTranslucentCommandExecutionFunction(scene) {
|
|
2471
2546
|
if (scene._environmentState.useOIT) {
|
|
@@ -2618,6 +2693,54 @@ function performCesium3DTileEdgesPass(scene, passState, frustumCommands) {
|
|
|
2618
2693
|
passState.framebuffer = originalFramebuffer;
|
|
2619
2694
|
}
|
|
2620
2695
|
|
|
2696
|
+
/**
|
|
2697
|
+
* Execute the planar fill feature-ID pre-pass.
|
|
2698
|
+
*
|
|
2699
|
+
* Non-behind planar fill geometry writes its per-fragment feature ID into the
|
|
2700
|
+
* planar fill ID framebuffer. This allows behind fills in the main 3D tile
|
|
2701
|
+
* pass to check whether the existing pixel belongs to the same logical object.
|
|
2702
|
+
*
|
|
2703
|
+
* @param {Scene} scene
|
|
2704
|
+
* @param {PassState} passState
|
|
2705
|
+
* @param {FrustumCommands} frustumCommands
|
|
2706
|
+
* @private
|
|
2707
|
+
*/
|
|
2708
|
+
function performPlanarFillIdPass(scene, passState, frustumCommands) {
|
|
2709
|
+
const { context } = scene;
|
|
2710
|
+
const { uniformState } = context;
|
|
2711
|
+
|
|
2712
|
+
uniformState.updatePass(Pass.CESIUM_3D_TILE_PLANAR_FILL_ID);
|
|
2713
|
+
|
|
2714
|
+
// Default to a blank texture so shaders always have something to sample.
|
|
2715
|
+
uniformState.planarFillIdTexture = context.defaultTexture;
|
|
2716
|
+
|
|
2717
|
+
const view = scene._view;
|
|
2718
|
+
const fb = view && view.planarFillIdFramebuffer;
|
|
2719
|
+
|
|
2720
|
+
const commands = frustumCommands.commands[Pass.CESIUM_3D_TILE_PLANAR_FILL_ID];
|
|
2721
|
+
const commandCount =
|
|
2722
|
+
frustumCommands.indices[Pass.CESIUM_3D_TILE_PLANAR_FILL_ID];
|
|
2723
|
+
|
|
2724
|
+
if (commandCount === 0) {
|
|
2725
|
+
return;
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
if (scene._enablePlanarFillId && defined(fb) && defined(fb.framebuffer)) {
|
|
2729
|
+
const originalFramebuffer = passState.framebuffer;
|
|
2730
|
+
passState.framebuffer = fb.framebuffer;
|
|
2731
|
+
|
|
2732
|
+
// Clear to (0,0,0,0) — feature ID 0 means "no planar fill here".
|
|
2733
|
+
const clearCommand = fb.getClearCommand(new Color(0.0, 0.0, 0.0, 0.0));
|
|
2734
|
+
clearCommand.execute(context, passState);
|
|
2735
|
+
|
|
2736
|
+
for (let j = 0; j < commandCount; ++j) {
|
|
2737
|
+
executeCommand(commands[j], scene, passState);
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
passState.framebuffer = originalFramebuffer;
|
|
2741
|
+
}
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2621
2744
|
/**
|
|
2622
2745
|
* Execute edge commands that should render directly to the main framebuffer
|
|
2623
2746
|
* (EDGES_ONLY mode). These edges bypass the MRT edge framebuffer and render
|
|
@@ -2655,6 +2778,10 @@ function executeCommands(scene, passState) {
|
|
|
2655
2778
|
|
|
2656
2779
|
uniformState.updateCamera(camera);
|
|
2657
2780
|
|
|
2781
|
+
// Ensure planar fill ID texture is always available (even during edge pass)
|
|
2782
|
+
// so that shaders referencing czm_planarFillIdTexture never see undefined.
|
|
2783
|
+
uniformState.planarFillIdTexture = context.defaultTexture;
|
|
2784
|
+
|
|
2658
2785
|
const frustum = createWorkingFrustum(camera);
|
|
2659
2786
|
frustum.near = camera.frustum.near;
|
|
2660
2787
|
frustum.far = camera.frustum.far;
|
|
@@ -2825,6 +2952,23 @@ function executeCommands(scene, passState) {
|
|
|
2825
2952
|
scene.context.defaultTexture;
|
|
2826
2953
|
}
|
|
2827
2954
|
|
|
2955
|
+
// Planar fill feature-ID pre-pass: write feature IDs from non-behind
|
|
2956
|
+
// planar fill geometry so that behind fills can test same-object.
|
|
2957
|
+
performPlanarFillIdPass(scene, passState, frustumCommands);
|
|
2958
|
+
|
|
2959
|
+
if (
|
|
2960
|
+
scene._enablePlanarFillId &&
|
|
2961
|
+
defined(scene._view) &&
|
|
2962
|
+
defined(scene._view.planarFillIdFramebuffer)
|
|
2963
|
+
) {
|
|
2964
|
+
const pfIdTexture = scene._view.planarFillIdFramebuffer.idTexture;
|
|
2965
|
+
uniformState.planarFillIdTexture = defined(pfIdTexture)
|
|
2966
|
+
? pfIdTexture
|
|
2967
|
+
: context.defaultTexture;
|
|
2968
|
+
} else {
|
|
2969
|
+
uniformState.planarFillIdTexture = context.defaultTexture;
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2828
2972
|
if (!useInvertClassification || picking || renderTranslucentDepthForPick) {
|
|
2829
2973
|
// Common/fastest path. Draw 3D Tiles and classification normally.
|
|
2830
2974
|
|
|
@@ -2888,7 +3032,7 @@ function executeCommands(scene, passState) {
|
|
|
2888
3032
|
passState.framebuffer = scene._invertClassification._fbo.framebuffer;
|
|
2889
3033
|
|
|
2890
3034
|
// Draw normally
|
|
2891
|
-
|
|
3035
|
+
performPass(frustumCommands, Pass.CESIUM_3D_TILE);
|
|
2892
3036
|
|
|
2893
3037
|
if (useGlobeDepthFramebuffer) {
|
|
2894
3038
|
scene._invertClassification.prepareTextures(context);
|
|
@@ -3635,10 +3779,11 @@ Scene.prototype.updateEnvironment = function () {
|
|
|
3635
3779
|
);
|
|
3636
3780
|
|
|
3637
3781
|
const envMaps = this.specularEnvironmentMaps;
|
|
3638
|
-
|
|
3782
|
+
const specularEnvironmentCubeMap = this._specularEnvironmentCubeMap;
|
|
3639
3783
|
if (defined(envMaps) && specularEnvironmentCubeMap?.url !== envMaps) {
|
|
3640
|
-
specularEnvironmentCubeMap
|
|
3641
|
-
specularEnvironmentCubeMap
|
|
3784
|
+
if (defined(specularEnvironmentCubeMap)) {
|
|
3785
|
+
specularEnvironmentCubeMap.destroy();
|
|
3786
|
+
}
|
|
3642
3787
|
this._specularEnvironmentCubeMap = new SpecularEnvironmentCubeMap(envMaps);
|
|
3643
3788
|
} else if (!defined(envMaps) && defined(specularEnvironmentCubeMap)) {
|
|
3644
3789
|
specularEnvironmentCubeMap.destroy();
|
|
@@ -3728,6 +3873,7 @@ function updateAndRenderPrimitives(scene) {
|
|
|
3728
3873
|
|
|
3729
3874
|
// Reset per-frame edge visibility request flag before primitives update
|
|
3730
3875
|
frameState.edgeVisibilityRequested = false;
|
|
3876
|
+
frameState.planarFillRequested = false;
|
|
3731
3877
|
|
|
3732
3878
|
scene._groundPrimitives.update(frameState);
|
|
3733
3879
|
scene._primitives.update(frameState);
|
|
@@ -3740,6 +3886,10 @@ function updateAndRenderPrimitives(scene) {
|
|
|
3740
3886
|
scene._enableEdgeVisibility = true;
|
|
3741
3887
|
}
|
|
3742
3888
|
|
|
3889
|
+
// True only while at least one planar fill primitive is rendering;
|
|
3890
|
+
// the request flag is renewed each frame by ModelSceneGraph.
|
|
3891
|
+
scene._enablePlanarFillId = frameState.planarFillRequested;
|
|
3892
|
+
|
|
3743
3893
|
updateDebugFrustumPlanes(scene);
|
|
3744
3894
|
updateShadowMaps(scene);
|
|
3745
3895
|
|
|
@@ -3758,6 +3908,7 @@ function updateAndClearFramebuffers(scene, passState, clearColor) {
|
|
|
3758
3908
|
const picking = passes.pick || passes.pickVoxel;
|
|
3759
3909
|
if (defined(view.globeDepth)) {
|
|
3760
3910
|
view.globeDepth.picking = picking;
|
|
3911
|
+
view.globeDepth.snapping = passes.snap;
|
|
3761
3912
|
}
|
|
3762
3913
|
const useWebVR = environmentState.useWebVR;
|
|
3763
3914
|
|
|
@@ -3863,6 +4014,15 @@ function updateAndClearFramebuffers(scene, passState, clearColor) {
|
|
|
3863
4014
|
view.edgeFramebuffer.update(context, view.viewport, scene._hdr);
|
|
3864
4015
|
}
|
|
3865
4016
|
|
|
4017
|
+
// Update planar fill ID framebuffer
|
|
4018
|
+
const usePlanarFillIdFramebuffer = !picking && scene._enablePlanarFillId;
|
|
4019
|
+
if (usePlanarFillIdFramebuffer) {
|
|
4020
|
+
view.planarFillIdFramebuffer.update(context, view.viewport, scene._hdr);
|
|
4021
|
+
} else if (!picking) {
|
|
4022
|
+
// Release GPU resources while unused; recreated on demand by update().
|
|
4023
|
+
view.planarFillIdFramebuffer.releaseResources();
|
|
4024
|
+
}
|
|
4025
|
+
|
|
3866
4026
|
if (useInvertClassification) {
|
|
3867
4027
|
let depthFramebuffer;
|
|
3868
4028
|
if (frameState.invertClassificationColor.alpha === 1.0) {
|
|
@@ -4419,6 +4579,8 @@ Scene.prototype.render = function (time) {
|
|
|
4419
4579
|
time = JulianDate.now();
|
|
4420
4580
|
}
|
|
4421
4581
|
|
|
4582
|
+
this._controllerHost.update(this, time);
|
|
4583
|
+
|
|
4422
4584
|
const cameraChanged = this._view.checkForCameraUpdates(this);
|
|
4423
4585
|
if (cameraChanged) {
|
|
4424
4586
|
this._globeHeightDirty = true;
|
|
@@ -4556,6 +4718,42 @@ Scene.prototype.pick = function (windowPosition, width, height) {
|
|
|
4556
4718
|
return this._picking.pick(this, windowPosition, width, height, 1)[0];
|
|
4557
4719
|
};
|
|
4558
4720
|
|
|
4721
|
+
/**
|
|
4722
|
+
* The result of a snap operation. See {@link Scene#snap}.
|
|
4723
|
+
*
|
|
4724
|
+
* @typedef {object} SceneSnapResult
|
|
4725
|
+
* @property {object} object The snapped primitive or feature.
|
|
4726
|
+
* @property {Cartesian3} position The world-space position of the snap point, un-projected from the snap framebuffer's eye-space depth.
|
|
4727
|
+
* @property {Cartesian2} screenPosition The window coordinates of the snap point.
|
|
4728
|
+
* @property {boolean} isEdge <code>true</code> if the snap point lies on an edge; <code>false</code> if it lies on a surface.
|
|
4729
|
+
*
|
|
4730
|
+
* @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
|
|
4731
|
+
*/
|
|
4732
|
+
|
|
4733
|
+
/**
|
|
4734
|
+
* Returns the best snap target in a screen-space region around <code>windowPosition</code>.
|
|
4735
|
+
* Edges are preferred over surfaces; among hits of the same kind the one
|
|
4736
|
+
* nearest the cursor wins. Returns <code>undefined</code> if the region contains
|
|
4737
|
+
* no snappable geometry.
|
|
4738
|
+
* <p>
|
|
4739
|
+
* Only primitives rendered through the Model pipeline (e.g. 3D Tiles and glTF
|
|
4740
|
+
* models) are snappable. Snapping requires float color attachments
|
|
4741
|
+
* (WebGL2 with <code>EXT_color_buffer_float</code>); if unsupported, this
|
|
4742
|
+
* function returns <code>undefined</code>.
|
|
4743
|
+
* </p>
|
|
4744
|
+
*
|
|
4745
|
+
* @param {Cartesian2} windowPosition Window coordinates at the center of the search region.
|
|
4746
|
+
* @param {object} [options] Object with the following properties:
|
|
4747
|
+
* @param {number} [options.width=25] Width of the search region in pixels.
|
|
4748
|
+
* @param {number} [options.height=options.width] Height of the search region in pixels.
|
|
4749
|
+
* @returns {SceneSnapResult | undefined} The best snap target in the region, or <code>undefined</code> if there is none.
|
|
4750
|
+
*
|
|
4751
|
+
* @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
|
|
4752
|
+
*/
|
|
4753
|
+
Scene.prototype.snap = function (windowPosition, options) {
|
|
4754
|
+
return Snapping.snap(this, windowPosition, options);
|
|
4755
|
+
};
|
|
4756
|
+
|
|
4559
4757
|
/**
|
|
4560
4758
|
* Performs the same operation as Scene.pick but asynchonosly without blocking the main render thread.
|
|
4561
4759
|
* Requires WebGL2 else using fallback.
|
|
@@ -1959,7 +1959,7 @@ function spin3D(controller, startPosition, movement) {
|
|
|
1959
1959
|
scratchMousePosition,
|
|
1960
1960
|
);
|
|
1961
1961
|
if (defined(mousePos)) {
|
|
1962
|
-
let strafing
|
|
1962
|
+
let strafing;
|
|
1963
1963
|
const ray = camera.getPickRay(
|
|
1964
1964
|
movement.startPosition,
|
|
1965
1965
|
pickGlobeScratchRay,
|
|
@@ -2367,7 +2367,6 @@ function zoom3D(controller, startPosition, movement) {
|
|
|
2367
2367
|
if (!defined(controller._globe) && defined(distance)) {
|
|
2368
2368
|
const targetDistance = camera.getMagnitude();
|
|
2369
2369
|
if (targetDistance < distance) {
|
|
2370
|
-
intersection = undefined;
|
|
2371
2370
|
distance = undefined;
|
|
2372
2371
|
}
|
|
2373
2372
|
}
|
|
@@ -1719,20 +1719,25 @@ function createCastDerivedCommand(
|
|
|
1719
1719
|
const isPointLight = shadowMap._isPointLight;
|
|
1720
1720
|
const usesDepthTexture = shadowMap._usesDepthTexture;
|
|
1721
1721
|
|
|
1722
|
+
const vertexShaderSource = shaderProgram.vertexShaderSource;
|
|
1723
|
+
const fragmentShaderSource = shaderProgram.fragmentShaderSource;
|
|
1724
|
+
|
|
1725
|
+
const hasClipping =
|
|
1726
|
+
isOpaque &&
|
|
1727
|
+
ShadowMapShader.hasClippingForShadowCast(fragmentShaderSource);
|
|
1728
|
+
|
|
1722
1729
|
const keyword = ShadowMapShader.getShadowCastShaderKeyword(
|
|
1723
1730
|
isPointLight,
|
|
1724
1731
|
isTerrain,
|
|
1725
1732
|
usesDepthTexture,
|
|
1726
1733
|
isOpaque,
|
|
1734
|
+
hasClipping,
|
|
1727
1735
|
);
|
|
1728
1736
|
castShader = context.shaderCache.getDerivedShaderProgram(
|
|
1729
1737
|
shaderProgram,
|
|
1730
1738
|
keyword,
|
|
1731
1739
|
);
|
|
1732
1740
|
if (!defined(castShader)) {
|
|
1733
|
-
const vertexShaderSource = shaderProgram.vertexShaderSource;
|
|
1734
|
-
const fragmentShaderSource = shaderProgram.fragmentShaderSource;
|
|
1735
|
-
|
|
1736
1741
|
const castVS = ShadowMapShader.createShadowCastVertexShader(
|
|
1737
1742
|
vertexShaderSource,
|
|
1738
1743
|
isPointLight,
|
|
@@ -1743,6 +1748,7 @@ function createCastDerivedCommand(
|
|
|
1743
1748
|
isPointLight,
|
|
1744
1749
|
usesDepthTexture,
|
|
1745
1750
|
isOpaque,
|
|
1751
|
+
hasClipping,
|
|
1746
1752
|
);
|
|
1747
1753
|
|
|
1748
1754
|
castShader = context.shaderCache.createDerivedShaderProgram(
|
|
@@ -6,13 +6,48 @@ import ShaderSource from "../Renderer/ShaderSource.js";
|
|
|
6
6
|
*/
|
|
7
7
|
function ShadowMapShader() {}
|
|
8
8
|
|
|
9
|
+
const clippingDefines = {
|
|
10
|
+
HAS_CLIPPING_PLANES: true,
|
|
11
|
+
ENABLE_CLIPPING_POLYGONS: true,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Returns true if the fragment shader clips fragments via a
|
|
16
|
+
* ClippingPlaneCollection or ClippingPolygonCollection, in which case the
|
|
17
|
+
* shadow cast pass must run the original main so that clipped fragments
|
|
18
|
+
* are discarded and do not cast shadows.
|
|
19
|
+
*
|
|
20
|
+
* @param {ShaderSource} fragmentShaderSource
|
|
21
|
+
* @returns {boolean}
|
|
22
|
+
*/
|
|
23
|
+
ShadowMapShader.hasClippingForShadowCast = function (fragmentShaderSource) {
|
|
24
|
+
const defines = fragmentShaderSource.defines;
|
|
25
|
+
return (
|
|
26
|
+
defined(defines) &&
|
|
27
|
+
defines.some(function (define) {
|
|
28
|
+
return clippingDefines[define] === true;
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @param {boolean} isPointLight
|
|
35
|
+
* @param {boolean} isTerrain
|
|
36
|
+
* @param {boolean} usesDepthTexture
|
|
37
|
+
* @param {boolean} isOpaque
|
|
38
|
+
* @param {boolean} hasClipping True if the fragment shader discards clipped
|
|
39
|
+
* fragments. Differentiates cached shader variants so that a shader that
|
|
40
|
+
* must call czm_shadow_cast_main() is never reused for one that does not.
|
|
41
|
+
* @returns {string}
|
|
42
|
+
*/
|
|
9
43
|
ShadowMapShader.getShadowCastShaderKeyword = function (
|
|
10
44
|
isPointLight,
|
|
11
45
|
isTerrain,
|
|
12
46
|
usesDepthTexture,
|
|
13
47
|
isOpaque,
|
|
48
|
+
hasClipping,
|
|
14
49
|
) {
|
|
15
|
-
return `castShadow ${isPointLight} ${isTerrain} ${usesDepthTexture} ${isOpaque}`;
|
|
50
|
+
return `castShadow ${isPointLight} ${isTerrain} ${usesDepthTexture} ${isOpaque} ${hasClipping}`;
|
|
16
51
|
};
|
|
17
52
|
|
|
18
53
|
ShadowMapShader.createShadowCastVertexShader = function (
|
|
@@ -54,11 +89,22 @@ ShadowMapShader.createShadowCastVertexShader = function (
|
|
|
54
89
|
});
|
|
55
90
|
};
|
|
56
91
|
|
|
92
|
+
/**
|
|
93
|
+
* @param {ShaderSource} fs
|
|
94
|
+
* @param {boolean} isPointLight
|
|
95
|
+
* @param {boolean} usesDepthTexture
|
|
96
|
+
* @param {boolean} opaque
|
|
97
|
+
* @param {boolean} hasClipping True if the fragment shader discards clipped
|
|
98
|
+
* fragments. When true, czm_shadow_cast_main() (the renamed original main)
|
|
99
|
+
* is called first so that clipping discards execute during the shadow cast pass.
|
|
100
|
+
* @returns {ShaderSource}
|
|
101
|
+
*/
|
|
57
102
|
ShadowMapShader.createShadowCastFragmentShader = function (
|
|
58
103
|
fs,
|
|
59
104
|
isPointLight,
|
|
60
105
|
usesDepthTexture,
|
|
61
106
|
opaque,
|
|
107
|
+
hasClipping,
|
|
62
108
|
) {
|
|
63
109
|
const defines = fs.defines.slice(0);
|
|
64
110
|
const sources = fs.sources.slice(0);
|
|
@@ -85,7 +131,9 @@ ShadowMapShader.createShadowCastFragmentShader = function (
|
|
|
85
131
|
fsSource += "uniform vec4 shadowMap_lightPositionEC; \n";
|
|
86
132
|
}
|
|
87
133
|
|
|
88
|
-
if (opaque) {
|
|
134
|
+
if (opaque && hasClipping) {
|
|
135
|
+
fsSource += "void main() \n" + "{ \n" + " czm_shadow_cast_main(); \n";
|
|
136
|
+
} else if (opaque) {
|
|
89
137
|
fsSource += "void main() \n" + "{ \n";
|
|
90
138
|
} else {
|
|
91
139
|
fsSource +=
|