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