@cesium/engine 26.2.0 → 26.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +656 -518
  2. package/Build/Workers/{chunk-FU4BGABC.js → chunk-2DKJSPYF.js} +14 -14
  3. package/Build/Workers/{chunk-NCL22ZUX.js → chunk-2PWVICP6.js} +1 -1
  4. package/Build/Workers/{chunk-ILME5BXA.js → chunk-2YY724ZX.js} +8 -8
  5. package/Build/Workers/{chunk-IJZJMIUY.js → chunk-4DMAXPKB.js} +11 -11
  6. package/Build/Workers/{chunk-IMBVP57H.js → chunk-4LRFYRBX.js} +2 -2
  7. package/Build/Workers/{chunk-76FDC45O.js → chunk-5JCZHJUU.js} +13 -13
  8. package/Build/Workers/{chunk-5LSOO2KD.js → chunk-5KG7KDDW.js} +7 -7
  9. package/Build/Workers/{chunk-UAZUP4I5.js → chunk-6BSNYZZG.js} +5 -5
  10. package/Build/Workers/{chunk-D6AY775A.js → chunk-6R6SGKYN.js} +6 -6
  11. package/Build/Workers/{chunk-3PSS3T43.js → chunk-6V2KDEHL.js} +4 -4
  12. package/Build/Workers/{chunk-GHXVQVUM.js → chunk-75BC2IHI.js} +7 -7
  13. package/Build/Workers/{chunk-SMTGMFBL.js → chunk-7SESBH2I.js} +4 -4
  14. package/Build/Workers/{chunk-NEFDMMLY.js → chunk-7WXBTNRV.js} +8 -8
  15. package/Build/Workers/{chunk-NXGQBQWE.js → chunk-A7SMPV6B.js} +12 -12
  16. package/Build/Workers/{chunk-O3XFXGPZ.js → chunk-ATSXKJ3L.js} +7 -7
  17. package/Build/Workers/{chunk-AHWAZRBV.js → chunk-B4AVL7VI.js} +1 -1
  18. package/Build/Workers/{chunk-OZGPS7FB.js → chunk-B7Q2WF6Q.js} +4 -4
  19. package/Build/Workers/{chunk-2RGJPWQX.js → chunk-BNDSDQ7D.js} +9 -9
  20. package/Build/Workers/{chunk-2Z4ZLVOD.js → chunk-CKK6CUXK.js} +6 -6
  21. package/Build/Workers/{chunk-FCP2QY4G.js → chunk-COKOYTRS.js} +5 -5
  22. package/Build/Workers/{chunk-6FZDPMTO.js → chunk-CQ4TZXAT.js} +6 -6
  23. package/Build/Workers/{chunk-HDL4HOXZ.js → chunk-DKSANM4A.js} +12 -12
  24. package/Build/Workers/{chunk-XCBZVTIV.js → chunk-DZK34ZVD.js} +1 -1
  25. package/Build/Workers/{chunk-N7CCOFLX.js → chunk-E7G32DWL.js} +1 -1
  26. package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-EDETO6NY.js} +2 -2
  27. package/Build/Workers/{chunk-NSKZ6SBK.js → chunk-F34TJJLA.js} +14 -14
  28. package/Build/Workers/{chunk-GXWQZBAI.js → chunk-GLHDTTTO.js} +2 -2
  29. package/Build/Workers/{chunk-SJYSIOEM.js → chunk-GS7RY2DH.js} +11 -11
  30. package/Build/Workers/{chunk-5YPQBFRD.js → chunk-HDD3RFLT.js} +3 -3
  31. package/Build/Workers/{chunk-36NI5E6W.js → chunk-HDPNFEPP.js} +18 -18
  32. package/Build/Workers/{chunk-DSGLDRTI.js → chunk-JBJ6BRIM.js} +4 -4
  33. package/Build/Workers/{chunk-DZUFEE4L.js → chunk-JKTWW7IO.js} +5 -5
  34. package/Build/Workers/{chunk-O3DKEX7Q.js → chunk-JL4NWWQY.js} +5 -5
  35. package/Build/Workers/{chunk-I74ZH5LK.js → chunk-JMUUAW4X.js} +10 -10
  36. package/Build/Workers/{chunk-SXSP3JHS.js → chunk-KBGAHN5R.js} +1 -1
  37. package/Build/Workers/{chunk-GVA7XQI2.js → chunk-KEWK6VZL.js} +12 -12
  38. package/Build/Workers/{chunk-EOWDZN5S.js → chunk-L73K5UPP.js} +10 -10
  39. package/Build/Workers/{chunk-J73T2VOY.js → chunk-LL2SGJYH.js} +6 -6
  40. package/Build/Workers/{chunk-QFSSCLLZ.js → chunk-LYJUL4XQ.js} +6 -6
  41. package/Build/Workers/{chunk-MAAHFYPC.js → chunk-M6W46OAP.js} +7 -7
  42. package/Build/Workers/{chunk-FX3VEAIU.js → chunk-MDDKCLMF.js} +16 -16
  43. package/Build/Workers/{chunk-M6QKXVAU.js → chunk-MUW4DJV7.js} +17 -17
  44. package/Build/Workers/{chunk-EZGQPOIG.js → chunk-N5YK44FS.js} +5 -5
  45. package/Build/Workers/{chunk-27FWRTJI.js → chunk-NZQUP52G.js} +9 -9
  46. package/Build/Workers/{chunk-A62YI6S6.js → chunk-PKZA44LH.js} +4 -4
  47. package/Build/Workers/{chunk-7MM3N2VE.js → chunk-Q2JS5LCB.js} +17 -17
  48. package/Build/Workers/{chunk-KGXSYGBG.js → chunk-QTAEVUED.js} +13 -13
  49. package/Build/Workers/{chunk-KP5QD7WU.js → chunk-SEJIXZZ4.js} +10 -10
  50. package/Build/Workers/{chunk-PRWUMCXF.js → chunk-SL2HCFYW.js} +10 -10
  51. package/Build/Workers/{chunk-NJVBJG63.js → chunk-SLHK3KAR.js} +5 -5
  52. package/Build/Workers/{chunk-JKXV6PG5.js → chunk-UZY5XRL2.js} +1 -1
  53. package/Build/Workers/{chunk-LDRQSYBN.js → chunk-VRECSMG3.js} +2 -2
  54. package/Build/Workers/{chunk-NLLCQBX3.js → chunk-X27HKF5E.js} +2 -2
  55. package/Build/Workers/{chunk-B3QHNA4A.js → chunk-XBY3354M.js} +6 -6
  56. package/Build/Workers/{chunk-CRCGE4J4.js → chunk-XRZCS3HE.js} +8 -8
  57. package/Build/Workers/{chunk-XLQZNQ4Z.js → chunk-XSIUYAT6.js} +2 -2
  58. package/Build/Workers/{chunk-SA2A2AN5.js → chunk-Z2DW5NM2.js} +4 -4
  59. package/Build/Workers/combineGeometry.js +24 -24
  60. package/Build/Workers/createBoxGeometry.js +18 -18
  61. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  62. package/Build/Workers/createCircleGeometry.js +26 -26
  63. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  64. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  65. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  66. package/Build/Workers/createCorridorGeometry.js +29 -29
  67. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  68. package/Build/Workers/createCylinderGeometry.js +20 -20
  69. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  70. package/Build/Workers/createEllipseGeometry.js +26 -26
  71. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  73. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  74. package/Build/Workers/createFrustumGeometry.js +18 -18
  75. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  76. package/Build/Workers/createGeometry.js +24 -24
  77. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  78. package/Build/Workers/createPlaneGeometry.js +16 -16
  79. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  80. package/Build/Workers/createPolygonGeometry.js +32 -32
  81. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  82. package/Build/Workers/createPolylineGeometry.js +25 -25
  83. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  84. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  85. package/Build/Workers/createRectangleGeometry.js +27 -27
  86. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  87. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  88. package/Build/Workers/createSphereGeometry.js +19 -19
  89. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  90. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  91. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  92. package/Build/Workers/createVectorTileGeometries.js +24 -24
  93. package/Build/Workers/createVectorTilePoints.js +13 -13
  94. package/Build/Workers/createVectorTilePolygons.js +22 -22
  95. package/Build/Workers/createVectorTilePolylines.js +14 -14
  96. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  97. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  98. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  99. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  100. package/Build/Workers/createWallGeometry.js +24 -24
  101. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  102. package/Build/Workers/decodeDraco.js +10 -10
  103. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  104. package/Build/Workers/decodeI3S.js +10 -10
  105. package/Build/Workers/gaussianSplatSorter.js +4 -4
  106. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  107. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  108. package/Build/Workers/transcodeKTX2.js +6 -6
  109. package/Build/Workers/transferTypedArrayTest.js +1 -1
  110. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  111. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  112. package/Source/Core/Ion.js +1 -1
  113. package/Source/Core/IonResource.js +5 -0
  114. package/Source/Core/IonSnapGeometryType.js +59 -0
  115. package/Source/Core/IonSnapHeat.js +33 -0
  116. package/Source/Core/IonSnapMode.js +45 -0
  117. package/Source/Core/IonSnapParentGeometryType.js +52 -0
  118. package/Source/Core/IonSnapService.js +369 -0
  119. package/Source/Core/SnapService.js +63 -0
  120. package/Source/Core/VectorPipeline.js +139 -45
  121. package/Source/Core/VectorProvider.js +311 -71
  122. package/Source/Renderer/AutomaticUniforms.js +44 -2
  123. package/Source/Renderer/ShaderBuilder.js +1 -1
  124. package/Source/Renderer/UniformState.js +47 -1
  125. package/Source/Scene/ArcGisMapService.js +1 -1
  126. package/Source/Scene/BufferPointCollection.js +4 -7
  127. package/Source/Scene/BufferPolygonCollection.js +56 -27
  128. package/Source/Scene/BufferPolylineCollection.js +61 -8
  129. package/Source/Scene/BufferPolylineMaterial.js +6 -5
  130. package/Source/Scene/BufferPrimitiveCollection.js +199 -29
  131. package/Source/Scene/Cesium3DTile.js +12 -0
  132. package/Source/Scene/Cesium3DTileset.js +61 -8
  133. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
  134. package/Source/Scene/Cesium3DTilesetCache.js +15 -0
  135. package/Source/Scene/ClippingPolygon.js +154 -100
  136. package/Source/Scene/ClippingPolygonCollection.js +352 -694
  137. package/Source/Scene/CreditDisplay.js +62 -0
  138. package/Source/Scene/GeoJsonPrimitive.js +114 -24
  139. package/Source/Scene/GlobeSurfaceShaderSet.js +33 -54
  140. package/Source/Scene/GlobeSurfaceTile.js +14 -1
  141. package/Source/Scene/GlobeSurfaceTileProvider.js +232 -25
  142. package/Source/Scene/GltfLoader.js +56 -6
  143. package/Source/Scene/HeightReference.js +1 -1
  144. package/Source/Scene/MVTDataProvider.js +9 -0
  145. package/Source/Scene/Model/Model.js +242 -16
  146. package/Source/Scene/Model/Model3DTileContent.js +5 -0
  147. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
  148. package/Source/Scene/Model/ModelRenderResources.js +2 -3
  149. package/Source/Scene/Model/ModelSceneGraph.js +10 -1
  150. package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
  151. package/Source/Scene/Model/PickingPipelineStage.js +4 -0
  152. package/Source/Scene/PostProcessStage.js +22 -3
  153. package/Source/Scene/Scene.js +56 -1
  154. package/Source/Scene/Snapping.js +57 -0
  155. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +12 -1
  156. package/Source/Scene/VectorGltf3DTileContent.js +10 -2
  157. package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
  158. package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
  159. package/Source/Scene/renderBufferPolylineCollection.js +5 -1
  160. package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
  161. package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
  162. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -4
  163. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
  164. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
  165. package/Source/Shaders/GlobeFS.glsl +10 -9
  166. package/Source/Shaders/GlobeFS.js +11 -9
  167. package/Source/Shaders/GlobeVS.glsl +0 -32
  168. package/Source/Shaders/GlobeVS.js +0 -32
  169. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +15 -3
  170. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +15 -3
  171. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +20 -24
  172. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +20 -24
  173. package/Source/Shaders/Model/ModelFS.glsl +4 -0
  174. package/Source/Shaders/Model/ModelFS.js +4 -0
  175. package/Source/Shaders/Model/ModelVS.glsl +7 -2
  176. package/Source/Shaders/Model/ModelVS.js +7 -2
  177. package/Source/Shaders/Model/ModelVectorLookupStageFS.glsl +6 -0
  178. package/Source/Shaders/Model/ModelVectorLookupStageFS.js +8 -0
  179. package/Source/Shaders/Model/ModelVectorLookupStageVS.glsl +15 -0
  180. package/Source/Shaders/Model/ModelVectorLookupStageVS.js +17 -0
  181. package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +9 -10
  182. package/Source/Shaders/Model/VerticalExaggerationStageVS.js +9 -11
  183. package/Source/Shaders/VectorCommon.glsl +177 -50
  184. package/Source/Shaders/VectorCommon.js +251 -19
  185. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  186. package/index.d.ts +556 -55
  187. package/index.js +20 -13
  188. package/package.json +6 -6
  189. package/Build/Workers/chunk-2EFYUSUY.js +0 -1483
  190. package/Build/Workers/chunk-2H5264K7.js +0 -1284
  191. package/Build/Workers/chunk-2H73KDBM.js +0 -511
  192. package/Build/Workers/chunk-2ZKH2QZB.js +0 -387
  193. package/Build/Workers/chunk-37SW7SYS.js +0 -778
  194. package/Build/Workers/chunk-3GHVJ3SO.js +0 -455
  195. package/Build/Workers/chunk-3LB4UVPU.js +0 -387
  196. package/Build/Workers/chunk-3PONLKEL.js +0 -778
  197. package/Build/Workers/chunk-3QR662HH.js +0 -3820
  198. package/Build/Workers/chunk-3SX2WYSO.js +0 -973
  199. package/Build/Workers/chunk-3UDN6LYX.js +0 -476
  200. package/Build/Workers/chunk-47MCBSXI.js +0 -9237
  201. package/Build/Workers/chunk-4E626OCE.js +0 -1067
  202. package/Build/Workers/chunk-4NW2MJKH.js +0 -455
  203. package/Build/Workers/chunk-52YK5BSN.js +0 -198
  204. package/Build/Workers/chunk-5RNAQZK6.js +0 -9234
  205. package/Build/Workers/chunk-6FHT43QR.js +0 -140
  206. package/Build/Workers/chunk-6HK6IXK2.js +0 -138
  207. package/Build/Workers/chunk-6R5X2GUA.js +0 -1284
  208. package/Build/Workers/chunk-6YR6JBMY.js +0 -163
  209. package/Build/Workers/chunk-7A2OGDHT.js +0 -305
  210. package/Build/Workers/chunk-7CGEQUM2.js +0 -305
  211. package/Build/Workers/chunk-7D2HZKH7.js +0 -455
  212. package/Build/Workers/chunk-7I325HV6.js +0 -1344
  213. package/Build/Workers/chunk-7KVKHY7O.js +0 -147
  214. package/Build/Workers/chunk-7TKLTCZW.js +0 -219
  215. package/Build/Workers/chunk-7UUKBDH6.js +0 -1054
  216. package/Build/Workers/chunk-7W6DUHAB.js +0 -693
  217. package/Build/Workers/chunk-7XM5JK5F.js +0 -162
  218. package/Build/Workers/chunk-7YG3ND3P.js +0 -454
  219. package/Build/Workers/chunk-A3O6EDBK.js +0 -73
  220. package/Build/Workers/chunk-A6X24AZI.js +0 -1992
  221. package/Build/Workers/chunk-A7TTWVTF.js +0 -2719
  222. package/Build/Workers/chunk-ACTVJHSP.js +0 -519
  223. package/Build/Workers/chunk-ADX3CBKD.js +0 -9234
  224. package/Build/Workers/chunk-AF7DTMJ7.js +0 -398
  225. package/Build/Workers/chunk-AJSFRY4U.js +0 -1344
  226. package/Build/Workers/chunk-ARZICEEP.js +0 -301
  227. package/Build/Workers/chunk-B4CQSLZJ.js +0 -305
  228. package/Build/Workers/chunk-BKPQFCXH.js +0 -511
  229. package/Build/Workers/chunk-BSPCI2LO.js +0 -959
  230. package/Build/Workers/chunk-BUJWSX5S.js +0 -301
  231. package/Build/Workers/chunk-C7JQVRLM.js +0 -497
  232. package/Build/Workers/chunk-C7QDUNI3.js +0 -138
  233. package/Build/Workers/chunk-CDJDJ5LK.js +0 -44
  234. package/Build/Workers/chunk-CEEZE3YZ.js +0 -476
  235. package/Build/Workers/chunk-CIV5DJOQ.js +0 -778
  236. package/Build/Workers/chunk-CLCTQVVL.js +0 -241
  237. package/Build/Workers/chunk-CQNFIAZU.js +0 -56
  238. package/Build/Workers/chunk-CUTRKXUQ.js +0 -288
  239. package/Build/Workers/chunk-DBD5WWG2.js +0 -959
  240. package/Build/Workers/chunk-DIGUUD6G.js +0 -171
  241. package/Build/Workers/chunk-DZBQUULR.js +0 -138
  242. package/Build/Workers/chunk-E2NKV5YT.js +0 -3820
  243. package/Build/Workers/chunk-E7NZJOK7.js +0 -3792
  244. package/Build/Workers/chunk-EB3Y5P3A.js +0 -368
  245. package/Build/Workers/chunk-EHTS2YPT.js +0 -2719
  246. package/Build/Workers/chunk-ELE6SC2C.js +0 -837
  247. package/Build/Workers/chunk-ENNFMWDW.js +0 -789
  248. package/Build/Workers/chunk-ERKUET22.js +0 -3201
  249. package/Build/Workers/chunk-F2IMBMZY.js +0 -241
  250. package/Build/Workers/chunk-F4CSNRZO.js +0 -219
  251. package/Build/Workers/chunk-FBP4DUQJ.js +0 -693
  252. package/Build/Workers/chunk-FDK4K5IA.js +0 -280
  253. package/Build/Workers/chunk-FGQFQHN5.js +0 -1054
  254. package/Build/Workers/chunk-FJWZMGOQ.js +0 -1992
  255. package/Build/Workers/chunk-FQ42MT7M.js +0 -58
  256. package/Build/Workers/chunk-GGNWQWSB.js +0 -301
  257. package/Build/Workers/chunk-GNKXEN4C.js +0 -682
  258. package/Build/Workers/chunk-GSWMAFTE.js +0 -9230
  259. package/Build/Workers/chunk-GXDHRC4J.js +0 -1344
  260. package/Build/Workers/chunk-GYSYP6PC.js +0 -1067
  261. package/Build/Workers/chunk-H2WCFXLP.js +0 -241
  262. package/Build/Workers/chunk-HHV3MCGV.js +0 -162
  263. package/Build/Workers/chunk-HLW2ZRVK.js +0 -368
  264. package/Build/Workers/chunk-HS6AD4P2.js +0 -398
  265. package/Build/Workers/chunk-HT6FASOT.js +0 -973
  266. package/Build/Workers/chunk-IDVHUDZT.js +0 -352
  267. package/Build/Workers/chunk-IGAZBTFZ.js +0 -3201
  268. package/Build/Workers/chunk-IOO7Z2AV.js +0 -57
  269. package/Build/Workers/chunk-IUIFLOYO.js +0 -44
  270. package/Build/Workers/chunk-JALGQYDY.js +0 -288
  271. package/Build/Workers/chunk-JW6OZT4R.js +0 -288
  272. package/Build/Workers/chunk-JXYLJCTC.js +0 -124
  273. package/Build/Workers/chunk-K27QOAW6.js +0 -97
  274. package/Build/Workers/chunk-KMV25A63.js +0 -789
  275. package/Build/Workers/chunk-KZWFWJML.js +0 -2719
  276. package/Build/Workers/chunk-LCXRRALY.js +0 -387
  277. package/Build/Workers/chunk-LD64RPYV.js +0 -368
  278. package/Build/Workers/chunk-LGNDTZVX.js +0 -97
  279. package/Build/Workers/chunk-LNSQVXFH.js +0 -1800
  280. package/Build/Workers/chunk-M4JZ6TSZ.js +0 -959
  281. package/Build/Workers/chunk-MCJDRDJQ.js +0 -102
  282. package/Build/Workers/chunk-MEENMEAH.js +0 -198
  283. package/Build/Workers/chunk-NAWU5RF4.js +0 -162
  284. package/Build/Workers/chunk-NIWITKQK.js +0 -693
  285. package/Build/Workers/chunk-OA6MYL2C.js +0 -837
  286. package/Build/Workers/chunk-OBEU25PI.js +0 -1067
  287. package/Build/Workers/chunk-OHP4ELS7.js +0 -198
  288. package/Build/Workers/chunk-PCL3Y7H5.js +0 -82
  289. package/Build/Workers/chunk-PD4GK4EM.js +0 -57
  290. package/Build/Workers/chunk-PEDU33QG.js +0 -2342
  291. package/Build/Workers/chunk-PVTSNNVI.js +0 -288
  292. package/Build/Workers/chunk-QHPZH22L.js +0 -241
  293. package/Build/Workers/chunk-QIZDWZK6.js +0 -301
  294. package/Build/Workers/chunk-QV6DG2YX.js +0 -1483
  295. package/Build/Workers/chunk-QVLAFFJY.js +0 -56
  296. package/Build/Workers/chunk-R4FPNAZ2.js +0 -352
  297. package/Build/Workers/chunk-R4K7EHOU.js +0 -171
  298. package/Build/Workers/chunk-R7JGHDD6.js +0 -789
  299. package/Build/Workers/chunk-RASQEYD4.js +0 -1483
  300. package/Build/Workers/chunk-RG4F5R57.js +0 -454
  301. package/Build/Workers/chunk-RW6ITX7Q.js +0 -3820
  302. package/Build/Workers/chunk-RYSQVJR6.js +0 -398
  303. package/Build/Workers/chunk-S6RJU5NM.js +0 -1054
  304. package/Build/Workers/chunk-SDFHDNS4.js +0 -147
  305. package/Build/Workers/chunk-SF6K72D7.js +0 -124
  306. package/Build/Workers/chunk-SGRGNDOD.js +0 -682
  307. package/Build/Workers/chunk-SM2CDCYF.js +0 -198
  308. package/Build/Workers/chunk-SS5ABQGY.js +0 -102
  309. package/Build/Workers/chunk-T5QBPLE3.js +0 -414
  310. package/Build/Workers/chunk-TN35HP5B.js +0 -1067
  311. package/Build/Workers/chunk-TNWKJNUZ.js +0 -454
  312. package/Build/Workers/chunk-TOAF47AQ.js +0 -102
  313. package/Build/Workers/chunk-TQ4QCOXT.js +0 -2719
  314. package/Build/Workers/chunk-TSDSILQB.js +0 -124
  315. package/Build/Workers/chunk-TVZD72WJ.js +0 -778
  316. package/Build/Workers/chunk-U5LV3F3Z.js +0 -1054
  317. package/Build/Workers/chunk-UEY73NRN.js +0 -38
  318. package/Build/Workers/chunk-UF46SZEZ.js +0 -789
  319. package/Build/Workers/chunk-UNRTMCET.js +0 -398
  320. package/Build/Workers/chunk-UTB7U3O6.js +0 -1992
  321. package/Build/Workers/chunk-UVO6COT2.js +0 -352
  322. package/Build/Workers/chunk-V46YGZE6.js +0 -352
  323. package/Build/Workers/chunk-VAL7DYNR.js +0 -278
  324. package/Build/Workers/chunk-VDGOCROW.js +0 -57
  325. package/Build/Workers/chunk-VFWSSBPT.js +0 -511
  326. package/Build/Workers/chunk-VVYMXI3I.js +0 -1284
  327. package/Build/Workers/chunk-VXWHPYQM.js +0 -837
  328. package/Build/Workers/chunk-VXYUBRSB.js +0 -219
  329. package/Build/Workers/chunk-VZLDLEWI.js +0 -387
  330. package/Build/Workers/chunk-W5OCKMPJ.js +0 -101
  331. package/Build/Workers/chunk-WBSY7HDY.js +0 -837
  332. package/Build/Workers/chunk-WN3F4CVG.js +0 -3201
  333. package/Build/Workers/chunk-WPRUWXGV.js +0 -693
  334. package/Build/Workers/chunk-WTO2ERBP.js +0 -414
  335. package/Build/Workers/chunk-WVHMDVG4.js +0 -959
  336. package/Build/Workers/chunk-XGA23TAX.js +0 -73
  337. package/Build/Workers/chunk-XLXSDIP5.js +0 -973
  338. package/Build/Workers/chunk-XQ3SKCMM.js +0 -140
  339. package/Build/Workers/chunk-XQH66YJC.js +0 -147
  340. package/Build/Workers/chunk-XTA7BXJG.js +0 -682
  341. package/Build/Workers/chunk-XTIDAFRS.js +0 -476
  342. package/Build/Workers/chunk-XUEDWBUD.js +0 -682
  343. package/Build/Workers/chunk-XYFLRH3H.js +0 -124
  344. package/Build/Workers/chunk-Y7JRTRTO.js +0 -305
  345. package/Build/Workers/chunk-Y7QSMDCJ.js +0 -352
  346. package/Build/Workers/chunk-YCB5TYTR.js +0 -1483
  347. package/Build/Workers/chunk-YEYOSTJX.js +0 -219
  348. package/Build/Workers/chunk-YGFVAGYF.js +0 -630
  349. package/Build/Workers/chunk-YIIACKQO.js +0 -368
  350. package/Build/Workers/chunk-YJGSP6PE.js +0 -511
  351. package/Build/Workers/chunk-YKU2Q3A2.js +0 -1287
  352. package/Build/Workers/chunk-Z4LR5EHE.js +0 -454
  353. package/Build/Workers/chunk-Z66EVE2A.js +0 -44
  354. package/Build/Workers/chunk-ZHIHHHTB.js +0 -414
  355. package/Build/Workers/chunk-ZMBHFYOX.js +0 -1344
  356. package/Build/Workers/chunk-ZNWHFSLE.js +0 -171
  357. package/Build/Workers/chunk-ZQLZG4IN.js +0 -2342
  358. package/Build/Workers/chunk-ZRTSMUZ2.js +0 -414
  359. package/Build/Workers/chunk-ZSGUV73H.js +0 -2342
  360. package/Build/Workers/chunk-ZZUVT5BM.js +0 -476
  361. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +0 -37
  362. package/Source/Shaders/Builtin/Functions/clipPolygons.js +0 -39
  363. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +0 -14
  364. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +0 -15
  365. package/Source/Shaders/PolygonSignedDistanceFS.glsl +0 -131
  366. package/Source/Shaders/PolygonSignedDistanceFS.js +0 -132
@@ -40,6 +40,7 @@ import ClippingPlaneCollection from "./ClippingPlaneCollection.js";
40
40
  import ClippingPolygonCollection from "./ClippingPolygonCollection.js";
41
41
  import DepthFunction from "./DepthFunction.js";
42
42
  import GlobeSurfaceTile from "./GlobeSurfaceTile.js";
43
+ import HeightReference from "./HeightReference.js";
43
44
  import ImageryLayer from "./ImageryLayer.js";
44
45
  import ImageryState from "./ImageryState.js";
45
46
  import PerInstanceColorAppearance from "./PerInstanceColorAppearance.js";
@@ -209,6 +210,12 @@ class GlobeSurfaceTileProvider {
209
210
  */
210
211
  this._clippingPolygons = undefined;
211
212
 
213
+ this._clippingPolygonsDirty = false;
214
+
215
+ this._removeClippingPolygonAdded = undefined;
216
+
217
+ this._removeClippingPolygonRemoved = undefined;
218
+
212
219
  /**
213
220
  * A property specifying a {@link Rectangle} used to selectively limit terrain and imagery rendering.
214
221
  * @type {Rectangle}
@@ -348,7 +355,33 @@ class GlobeSurfaceTileProvider {
348
355
  }
349
356
 
350
357
  set clippingPolygons(value) {
358
+ if (value === this._clippingPolygons) {
359
+ return;
360
+ }
361
+
351
362
  ClippingPolygonCollection.setOwner(value, this, "_clippingPolygons");
363
+
364
+ // First, remove the previous listeners if they exist
365
+ this._removeClippingPolygonAdded =
366
+ this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
367
+ this._removeClippingPolygonRemoved =
368
+ this._removeClippingPolygonRemoved &&
369
+ this._removeClippingPolygonRemoved();
370
+
371
+ this._clippingPolygonsDirty = true;
372
+
373
+ if (!defined(value)) {
374
+ return;
375
+ }
376
+
377
+ const markDirty = () => {
378
+ this._clippingPolygonsDirty = true;
379
+ };
380
+
381
+ this._removeClippingPolygonAdded =
382
+ value.polygonAdded.addEventListener(markDirty);
383
+ this._removeClippingPolygonRemoved =
384
+ value.polygonRemoved.addEventListener(markDirty);
352
385
  }
353
386
 
354
387
  /**
@@ -384,7 +417,8 @@ class GlobeSurfaceTileProvider {
384
417
  // Record regions dirtied by changed collections, re-bake overlapping
385
418
  // tiles, and build vector data for new surface tiles.
386
419
  const vectorProvider = this._vectorProvider;
387
- vectorProvider.update();
420
+ vectorProvider.minimumTileScreenPixels = minimumTileScreenPixels(this);
421
+ vectorProvider.update(frameState.frameNumber);
388
422
  this._quadtree.forEachRenderedTile(
389
423
  /** @param {QuadtreeTile} tile */
390
424
  (tile) => {
@@ -397,6 +431,7 @@ class GlobeSurfaceTileProvider {
397
431
  tile.level,
398
432
  frameState.context,
399
433
  surfaceTile.vectorData,
434
+ HeightReference.CLAMP_TO_TERRAIN,
400
435
  );
401
436
  } else {
402
437
  surfaceTile.vectorData = vectorProvider.requestTileData(
@@ -404,6 +439,7 @@ class GlobeSurfaceTileProvider {
404
439
  tile.y,
405
440
  tile.level,
406
441
  frameState.context,
442
+ HeightReference.CLAMP_TO_TERRAIN,
407
443
  );
408
444
  }
409
445
  },
@@ -447,8 +483,6 @@ class GlobeSurfaceTileProvider {
447
483
  if (defined(clippingPolygons) && clippingPolygons.enabled) {
448
484
  // @ts-expect-error Missing types.
449
485
  clippingPolygons.update(frameState);
450
- // @ts-expect-error Missing types.
451
- clippingPolygons.queueCommands(frameState);
452
486
  }
453
487
 
454
488
  this._usedDrawCommands = 0;
@@ -555,6 +589,10 @@ class GlobeSurfaceTileProvider {
555
589
  );
556
590
  }
557
591
 
592
+ if (this._clippingPolygonsDirty) {
593
+ releaseClippingPolygonData(this);
594
+ }
595
+
558
596
  // Add the tile render commands to the command list, sorted by texture count.
559
597
  const tilesToRenderByTextureCount = this._tilesToRenderByTextureCount;
560
598
  for (
@@ -575,6 +613,7 @@ class GlobeSurfaceTileProvider {
575
613
  ) {
576
614
  const tile = tilesToRender[tileIndex];
577
615
  const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
616
+ updateTileClippingPolygonData(this, tile, surfaceTile, frameState);
578
617
  const tileBoundingRegion = surfaceTile.tileBoundingRegion;
579
618
  addDrawCommandsForTile(this, tile, frameState);
580
619
  frameState.minimumTerrainHeight = Math.min(
@@ -594,7 +633,16 @@ class GlobeSurfaceTileProvider {
594
633
  // Add the tile pick commands from the tiles drawn last frame.
595
634
  const drawCommands = this._drawCommands;
596
635
  for (let i = 0, length = this._usedDrawCommands; i < length; ++i) {
597
- pushCommand(drawCommands[i], frameState);
636
+ const command = drawCommands[i];
637
+ // Pooled commands move between tiles, so a cached pick command may still
638
+ // hold the vertex array of a tile that has since been released.
639
+ command.dirty = true;
640
+ command.derivedCommands.picking = undefined;
641
+ const logDepthCommand = command.derivedCommands.logDepth?.command;
642
+ if (defined(logDepthCommand)) {
643
+ logDepthCommand.derivedCommands.picking = undefined;
644
+ }
645
+ pushCommand(command, frameState);
598
646
  }
599
647
  }
600
648
 
@@ -1161,8 +1209,7 @@ class GlobeSurfaceTileProvider {
1161
1209
  this._tileProvider = this._tileProvider && this._tileProvider.destroy();
1162
1210
  this._clippingPlanes =
1163
1211
  this._clippingPlanes && this._clippingPlanes.destroy();
1164
- this._clippingPolygons =
1165
- this._clippingPolygons && this._clippingPolygons.destroy();
1212
+ this._clippingPolygons = undefined;
1166
1213
  this._removeLayerAddedListener =
1167
1214
  this._removeLayerAddedListener && this._removeLayerAddedListener();
1168
1215
  this._removeLayerRemovedListener =
@@ -1171,6 +1218,11 @@ class GlobeSurfaceTileProvider {
1171
1218
  this._removeLayerMovedListener && this._removeLayerMovedListener();
1172
1219
  this._removeLayerShownListener =
1173
1220
  this._removeLayerShownListener && this._removeLayerShownListener();
1221
+ this._removeClippingPolygonAdded =
1222
+ this._removeClippingPolygonAdded && this._removeClippingPolygonAdded();
1223
+ this._removeClippingPolygonRemoved =
1224
+ this._removeClippingPolygonRemoved &&
1225
+ this._removeClippingPolygonRemoved();
1174
1226
 
1175
1227
  return destroyObject(this);
1176
1228
  }
@@ -1325,6 +1377,40 @@ class GlobeSurfaceTileProvider {
1325
1377
  }
1326
1378
  }
1327
1379
 
1380
+ const scratchLevelZeroRectangle = new Rectangle();
1381
+
1382
+ /**
1383
+ * Estimates the smallest screen size, in pixels, a rendered tile can have. Screen-space error is
1384
+ * the tile's geometric error projected to the screen, so the tile projects to that error scaled by
1385
+ * their ratio in meters, and refinement holds the error above half the maximum.
1386
+ *
1387
+ * @param {GlobeSurfaceTileProvider} tileProvider
1388
+ * @returns {number}
1389
+ * @private
1390
+ */
1391
+ function minimumTileScreenPixels(tileProvider) {
1392
+ const geometricError = tileProvider.getLevelMaximumGeometricError(0);
1393
+ if (geometricError <= 0.0) {
1394
+ // No terrain provider yet.
1395
+ return tileProvider._vectorProvider.minimumTileScreenPixels;
1396
+ }
1397
+
1398
+ const tilingScheme = tileProvider.tilingScheme;
1399
+ const rectangle = tilingScheme.tileXYToRectangle(
1400
+ 0,
1401
+ 0,
1402
+ 0,
1403
+ scratchLevelZeroRectangle,
1404
+ );
1405
+ const tileWidth = rectangle.width * tilingScheme.ellipsoid.maximumRadius;
1406
+
1407
+ return (
1408
+ ((tileWidth / geometricError) *
1409
+ tileProvider._quadtree.maximumScreenSpaceError) /
1410
+ 2.0
1411
+ );
1412
+ }
1413
+
1328
1414
  function sortTileImageryByLayerIndex(a, b) {
1329
1415
  let aImagery = a.loadingImagery;
1330
1416
  if (!defined(aImagery)) {
@@ -1339,6 +1425,81 @@ function sortTileImageryByLayerIndex(a, b) {
1339
1425
  return aImagery.imageryLayer._layerIndex - bImagery.imageryLayer._layerIndex;
1340
1426
  }
1341
1427
 
1428
+ /**
1429
+ * Releases cached clipping polygon data on all loaded tiles so it is rebuilt
1430
+ * against the current collection, and clears the dirty flag.
1431
+ * @param {GlobeSurfaceTileProvider} tileProvider
1432
+ * @ignore
1433
+ */
1434
+ function releaseClippingPolygonData(tileProvider) {
1435
+ tileProvider._quadtree.forEachLoadedTile(
1436
+ /** @param {QuadtreeTile} tile */
1437
+ function (tile) {
1438
+ const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
1439
+ if (!defined(surfaceTile?.clippingPolygonData)) {
1440
+ return;
1441
+ }
1442
+
1443
+ ClippingPolygonCollection.releaseRectangleData(
1444
+ surfaceTile.clippingPolygonData,
1445
+ );
1446
+ surfaceTile.clippingPolygonData = undefined;
1447
+ },
1448
+ );
1449
+ tileProvider._clippingPolygonsDirty = false;
1450
+ }
1451
+
1452
+ /**
1453
+ * Builds clipping polygon data for a tile about to be rendered, unless it is
1454
+ * unclipped or its data was already built this frame.
1455
+ * @param {GlobeSurfaceTileProvider} tileProvider
1456
+ * @param {QuadtreeTile} tile
1457
+ * @param {GlobeSurfaceTile} surfaceTile
1458
+ * @param {FrameState} frameState
1459
+ * @ignore
1460
+ */
1461
+ function updateTileClippingPolygonData(
1462
+ tileProvider,
1463
+ tile,
1464
+ surfaceTile,
1465
+ frameState,
1466
+ ) {
1467
+ const clippingPolygons = tileProvider._clippingPolygons;
1468
+ if (
1469
+ !defined(clippingPolygons) ||
1470
+ !clippingPolygons.enabled ||
1471
+ !tile.isClipped ||
1472
+ defined(surfaceTile.clippingPolygonData)
1473
+ ) {
1474
+ return;
1475
+ }
1476
+
1477
+ surfaceTile.clippingPolygonData = clippingPolygons.requestRectangleData(
1478
+ tile.rectangle,
1479
+ frameState.context,
1480
+ );
1481
+ }
1482
+
1483
+ /**
1484
+ * Determines whether a tile is wholly clipped away by inverse clipping. In
1485
+ * inverse mode a clipped tile with no polygon geometry lies entirely outside
1486
+ * every polygon, so all of it is clipped and it should not be drawn.
1487
+ * @param {GlobeSurfaceTileProvider} tileProvider
1488
+ * @param {GlobeSurfaceTile} surfaceTile
1489
+ * @returns {boolean}
1490
+ * @ignore
1491
+ */
1492
+ function isTileClippedAwayByInversePolygons(tileProvider, surfaceTile) {
1493
+ const clippingPolygons = tileProvider._clippingPolygons;
1494
+ return (
1495
+ defined(clippingPolygons) &&
1496
+ clippingPolygons.enabled &&
1497
+ clippingPolygons.length > 0 &&
1498
+ clippingPolygons.inverse &&
1499
+ (surfaceTile.clippingPolygonData?.polygonRings.length ?? 0) === 0
1500
+ );
1501
+ }
1502
+
1342
1503
  /**
1343
1504
  * @param {GlobeSurfaceTileProvider} surface
1344
1505
  * @param {FrameState} frameState
@@ -1910,22 +2071,6 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
1910
2071
  style.alpha = this.properties.clippingPlanesEdgeWidth;
1911
2072
  return style;
1912
2073
  },
1913
- u_clippingDistance: function () {
1914
- const texture =
1915
- globeSurfaceTileProvider._clippingPolygons.clippingTexture;
1916
- if (defined(texture)) {
1917
- return texture;
1918
- }
1919
- return frameState.context.defaultTexture;
1920
- },
1921
- u_clippingExtents: function () {
1922
- // @ts-expect-error Missing types.
1923
- const texture = globeSurfaceTileProvider._clippingPolygons.extentsTexture;
1924
- if (defined(texture)) {
1925
- return texture;
1926
- }
1927
- return frameState.context.defaultTexture;
1928
- },
1929
2074
  u_minimumBrightness: function () {
1930
2075
  return frameState.fog.minimumBrightness;
1931
2076
  },
@@ -1972,6 +2117,12 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
1972
2117
  this.properties.vectorColorTexture ?? frameState.context.defaultTexture
1973
2118
  );
1974
2119
  },
2120
+ u_vectorPickColorTexture: function () {
2121
+ return (
2122
+ this.properties.vectorPickColorTexture ??
2123
+ frameState.context.defaultTexture
2124
+ );
2125
+ },
1975
2126
  u_vectorSegmentPrimitiveIndicesTexture: function () {
1976
2127
  return (
1977
2128
  this.properties.vectorSegmentPrimitiveIndicesTexture ??
@@ -2002,6 +2153,26 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
2002
2153
  frameState.context.defaultTexture
2003
2154
  );
2004
2155
  },
2156
+ u_vectorMetersPerUv: function () {
2157
+ return this.properties.vectorMetersPerUv;
2158
+ },
2159
+ u_clippingEdgeTexture: function () {
2160
+ return (
2161
+ this.properties.clippingEdgeTexture ?? frameState.context.defaultTexture
2162
+ );
2163
+ },
2164
+ u_clippingEdgePrimitiveIndicesTexture: function () {
2165
+ return (
2166
+ this.properties.clippingEdgePrimitiveIndicesTexture ??
2167
+ frameState.context.defaultTexture
2168
+ );
2169
+ },
2170
+ u_clippingGridCellIndicesTexture: function () {
2171
+ return (
2172
+ this.properties.clippingGridCellIndicesTexture ??
2173
+ frameState.context.defaultTexture
2174
+ );
2175
+ },
2005
2176
 
2006
2177
  // make a separate object so that changes to the properties are seen on
2007
2178
  // derived commands that combine another uniform map with this one.
@@ -2068,11 +2239,17 @@ function createTileUniformMap(frameState, globeSurfaceTileProvider) {
2068
2239
  vectorSegmentTexture: undefined,
2069
2240
  vectorWidthTexture: undefined,
2070
2241
  vectorColorTexture: undefined,
2242
+ vectorPickColorTexture: undefined,
2071
2243
  vectorSegmentPrimitiveIndicesTexture: undefined,
2072
2244
  vectorGridCellIndicesTexture: undefined,
2073
2245
  vectorPolygonEdgeTexture: undefined,
2074
2246
  vectorPolygonEdgePrimitiveIndicesTexture: undefined,
2075
2247
  vectorPolygonGridCellIndicesTexture: undefined,
2248
+ vectorMetersPerUv: new Cartesian2(),
2249
+
2250
+ clippingEdgeTexture: undefined,
2251
+ clippingEdgePrimitiveIndicesTexture: undefined,
2252
+ clippingGridCellIndicesTexture: undefined,
2076
2253
  },
2077
2254
  };
2078
2255
 
@@ -2312,6 +2489,7 @@ const surfaceShaderSetOptionsScratch = {
2312
2489
  colorToAlpha: undefined,
2313
2490
  hasGeodeticSurfaceNormals: undefined,
2314
2491
  hasExaggeration: undefined,
2492
+ vectorAntialias: undefined,
2315
2493
  };
2316
2494
 
2317
2495
  const defaultUndergroundColor = Color.TRANSPARENT;
@@ -2326,6 +2504,10 @@ const defaultUndergroundColorAlphaByDistance = new NearFarScalar();
2326
2504
  function addDrawCommandsForTile(tileProvider, tile, frameState) {
2327
2505
  const surfaceTile = /** @type {GlobeSurfaceTile} */ (tile.data);
2328
2506
 
2507
+ if (isTileClippedAwayByInversePolygons(tileProvider, surfaceTile)) {
2508
+ return;
2509
+ }
2510
+
2329
2511
  if (!defined(surfaceTile.vertexArray)) {
2330
2512
  if (surfaceTile.fill === undefined) {
2331
2513
  // No fill was created for this tile, probably because this tile is not connected to
@@ -2445,8 +2627,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2445
2627
  defined(tileProvider.clippingPolygons) &&
2446
2628
  tileProvider.clippingPolygons.enabled
2447
2629
  ) {
2448
- --maxTextures;
2449
- --maxTextures;
2630
+ // Vector polygon clipping samples three textures: edges, per-edge
2631
+ // primitive indices, and the grid cell index header.
2632
+ maxTextures -= 3;
2450
2633
  }
2451
2634
 
2452
2635
  maxTextures -= globeTranslucencyState.numberOfTextureUniforms;
@@ -2565,6 +2748,8 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2565
2748
  surfaceShaderSetOptions.clippedByBoundaries = surfaceTile.clippedByBoundaries;
2566
2749
  surfaceShaderSetOptions.hasGeodeticSurfaceNormals = hasGeodeticSurfaceNormals;
2567
2750
  surfaceShaderSetOptions.hasExaggeration = hasExaggeration;
2751
+ surfaceShaderSetOptions.vectorAntialias =
2752
+ tileProvider.vectorProvider.antialias;
2568
2753
 
2569
2754
  const tileImageryCollection = surfaceTile.imagery;
2570
2755
  let imageryIndex = 0;
@@ -3019,6 +3204,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
3019
3204
  vectorData.polylineSegmentTexture;
3020
3205
  uniformMapProperties.vectorWidthTexture = vectorData.widthTexture;
3021
3206
  uniformMapProperties.vectorColorTexture = vectorData.colorTexture;
3207
+ uniformMapProperties.vectorPickColorTexture = vectorData.pickColorTexture;
3022
3208
  uniformMapProperties.vectorSegmentPrimitiveIndicesTexture =
3023
3209
  vectorData.polylineSegmentPrimitiveIndicesTexture;
3024
3210
  uniformMapProperties.vectorGridCellIndicesTexture =
@@ -3029,15 +3215,32 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
3029
3215
  vectorData.polygonEdgePrimitiveIndicesTexture;
3030
3216
  uniformMapProperties.vectorPolygonGridCellIndicesTexture =
3031
3217
  vectorData.polygonGridCellIndicesTexture;
3218
+ Cartesian2.clone(
3219
+ vectorData.metersPerUv,
3220
+ uniformMapProperties.vectorMetersPerUv,
3221
+ );
3222
+ }
3223
+
3224
+ const clippingPolygonData = surfaceTile.clippingPolygonData;
3225
+ if (defined(clippingPolygonData)) {
3226
+ uniformMapProperties.clippingEdgeTexture =
3227
+ clippingPolygonData.polygonEdgeTexture;
3228
+ uniformMapProperties.clippingEdgePrimitiveIndicesTexture =
3229
+ clippingPolygonData.polygonEdgePrimitiveIndicesTexture;
3230
+ uniformMapProperties.clippingGridCellIndicesTexture =
3231
+ clippingPolygonData.polygonGridCellIndicesTexture;
3032
3232
  }
3033
3233
 
3034
3234
  // update clipping polygons
3035
3235
  const clippingPolygons = tileProvider._clippingPolygons;
3236
+ const hasClippingPolygonGeometry =
3237
+ (clippingPolygonData?.polygonRings.length ?? 0) > 0;
3036
3238
  const clippingPolygonsEnabled =
3037
3239
  defined(clippingPolygons) &&
3038
3240
  clippingPolygons.enabled &&
3039
3241
  clippingPolygons.length > 0 &&
3040
- tile.isClipped;
3242
+ tile.isClipped &&
3243
+ hasClippingPolygonGeometry;
3041
3244
 
3042
3245
  surfaceShaderSetOptions.numberOfDayTextures = numberOfDayTextures;
3043
3246
  surfaceShaderSetOptions.applyBrightness = applyBrightness;
@@ -3068,6 +3271,10 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
3068
3271
  command.shaderProgram = tileProvider._surfaceShaderSet.getShaderProgram(
3069
3272
  surfaceShaderSetOptions,
3070
3273
  );
3274
+ // Draped vectors are picked through the surface; zero elsewhere keeps the globe unpickable.
3275
+ command.pickId = surfaceTile.vectorData?.show
3276
+ ? "vectorPickColorOver(vec4(0.0))"
3277
+ : undefined;
3071
3278
  command.castShadows = castShadows;
3072
3279
  command.receiveShadows = receiveShadows;
3073
3280
  command.renderState = renderState;
@@ -14,6 +14,8 @@ import PrimitiveType from "../Core/PrimitiveType.js";
14
14
  import Quaternion from "../Core/Quaternion.js";
15
15
  import RuntimeError from "../Core/RuntimeError.js";
16
16
  import Sampler from "../Renderer/Sampler.js";
17
+ import TextureMagnificationFilter from "../Renderer/TextureMagnificationFilter.js";
18
+ import TextureMinificationFilter from "../Renderer/TextureMinificationFilter.js";
17
19
  import getAccessorByteStride from "./GltfPipeline/getAccessorByteStride.js";
18
20
  import getComponentReader from "./GltfPipeline/getComponentReader.js";
19
21
  import numberOfComponentsForType from "./GltfPipeline/numberOfComponentsForType.js";
@@ -1570,7 +1572,41 @@ function loadIndices(
1570
1572
  return indicesPlan;
1571
1573
  }
1572
1574
 
1573
- function loadTexture(loader, textureInfo, frameState, samplerOverride) {
1575
+ /**
1576
+ * Returns a copy of <code>sampler</code> with its minification and magnification
1577
+ * filters replaced. Undefined filters keep the value already on the sampler, and
1578
+ * every other property, in particular the wrap modes declared by the glTF, is
1579
+ * carried over unchanged.
1580
+ *
1581
+ * @param {Sampler} sampler The sampler created from the glTF.
1582
+ * @param {TextureMinificationFilter} [minificationFilter] The minification filter to apply instead of the one on <code>sampler</code>.
1583
+ * @param {TextureMagnificationFilter} [magnificationFilter] The magnification filter to apply instead of the one on <code>sampler</code>.
1584
+ * @returns {Sampler} A sampler using the given filters and the original wrap modes.
1585
+ *
1586
+ * @private
1587
+ */
1588
+ function overrideSamplerFilters(
1589
+ sampler,
1590
+ minificationFilter,
1591
+ magnificationFilter,
1592
+ ) {
1593
+ return new Sampler({
1594
+ wrapR: sampler.wrapR,
1595
+ wrapS: sampler.wrapS,
1596
+ wrapT: sampler.wrapT,
1597
+ minificationFilter: minificationFilter ?? sampler.minificationFilter,
1598
+ magnificationFilter: magnificationFilter ?? sampler.magnificationFilter,
1599
+ maximumAnisotropy: sampler.maximumAnisotropy,
1600
+ });
1601
+ }
1602
+
1603
+ function loadTexture(
1604
+ loader,
1605
+ textureInfo,
1606
+ frameState,
1607
+ minificationFilterOverride,
1608
+ magnificationFilterOverride,
1609
+ ) {
1574
1610
  const gltf = loader.gltfJson;
1575
1611
  const imageId = GltfLoaderUtil.getImageIdFromTexture({
1576
1612
  gltf: gltf,
@@ -1618,9 +1654,17 @@ function loadTexture(loader, textureInfo, frameState, samplerOverride) {
1618
1654
  // Save this finish callback by the loader index so it can be called
1619
1655
  // in process().
1620
1656
  loader._textureCallbacks[index] = () => {
1621
- textureReader.texture = textureLoader.texture;
1622
- if (defined(samplerOverride)) {
1623
- textureReader.texture.sampler = samplerOverride;
1657
+ const texture = textureLoader.texture;
1658
+ textureReader.texture = texture;
1659
+ if (
1660
+ defined(minificationFilterOverride) ||
1661
+ defined(magnificationFilterOverride)
1662
+ ) {
1663
+ texture.sampler = overrideSamplerFilters(
1664
+ texture.sampler,
1665
+ minificationFilterOverride,
1666
+ magnificationFilterOverride,
1667
+ );
1624
1668
  }
1625
1669
  };
1626
1670
 
@@ -2013,7 +2057,10 @@ function loadFeatureIdTexture(
2013
2057
  loader,
2014
2058
  textureInfo,
2015
2059
  frameState,
2016
- Sampler.NEAREST, // Feature ID textures require nearest sampling
2060
+ // Feature ID textures require nearest sampling. Only the filters are
2061
+ // overridden so the wrap modes declared by the glTF are preserved.
2062
+ TextureMinificationFilter.NEAREST,
2063
+ TextureMagnificationFilter.NEAREST,
2017
2064
  );
2018
2065
 
2019
2066
  // Though the new channel index is more future-proof, this implementation
@@ -2048,7 +2095,10 @@ function loadFeatureIdTextureLegacy(
2048
2095
  loader,
2049
2096
  textureInfo,
2050
2097
  frameState,
2051
- Sampler.NEAREST, // Feature ID textures require nearest sampling
2098
+ // Feature ID textures require nearest sampling. Only the filters are
2099
+ // overridden so the wrap modes declared by the glTF are preserved.
2100
+ TextureMinificationFilter.NEAREST,
2101
+ TextureMagnificationFilter.NEAREST,
2052
2102
  );
2053
2103
 
2054
2104
  featureIdTexture.textureReader.channels = featureIds.channels;
@@ -28,7 +28,7 @@ const HeightReference = {
28
28
  RELATIVE_TO_GROUND: 2,
29
29
 
30
30
  /**
31
- * The position is clamped to terain.
31
+ * The position is clamped to terrain.
32
32
  * @type {number}
33
33
  * @constant
34
34
  */
@@ -12,8 +12,10 @@ import defined from "../Core/defined.js";
12
12
 
13
13
  /** @import Cesium3DTile from "./Cesium3DTile.js"; */
14
14
  /** @import Cesium3DTileset from "./Cesium3DTileset.js"; */
15
+ /** @import HeightReference from "./HeightReference.js"; */
15
16
  /** @import Rectangle from "../Core/Rectangle.js"; */
16
17
  /** @import Resource from "../Core/Resource.js"; */
18
+ /** @import Scene from "./Scene.js"; */
17
19
 
18
20
  /**
19
21
  * A Mapbox Vector Tiles (MVT) data provider. Loads .mvt or .pbf tiles, converting tiles
@@ -36,6 +38,12 @@ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
36
38
  * @param {number} [options.maxZoom=14] Maximum zoom level represented in the generated tileset.
37
39
  * @param {Rectangle} [options.extent] Optional geographic extent in radians to constrain the generated tile tree.
38
40
  * @param {string} [options.featureIdProperty] MVT property name to use as feature ID.
41
+ * @param {HeightReference} [options.heightReference] Drapes the decoded points, lines and polygons onto the
42
+ * surfaces selected by the value: {@link HeightReference.CLAMP_TO_TERRAIN} drapes onto the globe,
43
+ * {@link HeightReference.CLAMP_TO_3D_TILE} drapes onto 3D Tiles and models, and
44
+ * {@link HeightReference.CLAMP_TO_GROUND} drapes onto both. Requires <code>options.scene</code>.
45
+ * @param {Scene} [options.scene] The scene the generated tileset is rendered in, required when
46
+ * <code>options.heightReference</code> is a clamping value.
39
47
  * @returns {Promise<MVTDataProvider>}
40
48
  */
41
49
  static async fromUrl(url, options) {
@@ -51,6 +59,7 @@ class MVTDataProvider extends UrlTemplate3DTilesDataProvider {
51
59
  */
52
60
  _createTilesetLoadOptions() {
53
61
  return {
62
+ ...super._createTilesetLoadOptions(),
54
63
  skipLevelOfDetail: false,
55
64
  enablePick: true,
56
65
  featureIdLabel: "featureId_0",