@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
@@ -14,10 +14,11 @@ import createPropertyDescriptor from "./createPropertyDescriptor.js";
14
14
  * @property {Property | number} [leadTime] A Property specifying the number of seconds in front the object to show.
15
15
  * @property {Property | number} [trailTime] A Property specifying the number of seconds behind of the object to show.
16
16
  * @property {Property | number} [width=1.0] A numeric Property specifying the width in pixels.
17
- * @property {Property | number} [resolution=60] A numeric Property specifying the maximum number of seconds to step when sampling the position.
17
+ * @property {Property | number} [resolution=60] A numeric Property specifying the maximum number of seconds to step when sampling the position. Fractional positive values are allowed; in PORTIONS materialMode, non-positive values fall back to the default resolution of 60 seconds.
18
18
  * @property {MaterialProperty | Color} [material=Color.WHITE] A Property specifying the material used to draw the path.
19
19
  * @property {Property | DistanceDisplayCondition} [distanceDisplayCondition] A Property specifying at what distance from the camera that this path will be displayed.
20
20
  * @property {Property | string} [relativeTo] A Property specifying the frame in which to visualize the path. Use another entity's id to visualize the path relative to that entity, or use the string values "FIXED" or "INERTIAL" to visualize the path in those reference frames.
21
+ * @property {Property | PathMode} [materialMode] A Property specifying how material properties are applied along the path.
21
22
  */
22
23
 
23
24
  /**
@@ -46,6 +47,8 @@ function PathGraphics(options) {
46
47
  this._distanceDisplayConditionSubscription = undefined;
47
48
  this._relativeTo = undefined;
48
49
  this._relativeToSubscription = undefined;
50
+ this._materialMode = undefined;
51
+ this._materialModeSubscription = undefined;
49
52
 
50
53
  this.merge(options ?? Frozen.EMPTY_OBJECT);
51
54
  }
@@ -95,6 +98,7 @@ Object.defineProperties(PathGraphics.prototype, {
95
98
 
96
99
  /**
97
100
  * Gets or sets the Property specifying the maximum number of seconds to step when sampling the position.
101
+ * Fractional positive values are allowed; in PORTIONS materialMode, non-positive values fall back to the default resolution of 60 seconds.
98
102
  * @memberof PathGraphics.prototype
99
103
  * @type {Property|undefined}
100
104
  * @default 60
@@ -125,6 +129,7 @@ Object.defineProperties(PathGraphics.prototype, {
125
129
  * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
126
130
  */
127
131
  relativeTo: createPropertyDescriptor("relativeTo"),
132
+ materialMode: createPropertyDescriptor("materialMode"),
128
133
  });
129
134
 
130
135
  /**
@@ -145,6 +150,7 @@ PathGraphics.prototype.clone = function (result) {
145
150
  result.material = this.material;
146
151
  result.distanceDisplayCondition = this.distanceDisplayCondition;
147
152
  result.relativeTo = this.relativeTo;
153
+ result.materialMode = this.materialMode;
148
154
  return result;
149
155
  };
150
156
 
@@ -170,5 +176,6 @@ PathGraphics.prototype.merge = function (source) {
170
176
  this.distanceDisplayCondition =
171
177
  this.distanceDisplayCondition ?? source.distanceDisplayCondition;
172
178
  this.relativeTo = this.relativeTo ?? source.relativeTo;
179
+ this.materialMode = this.materialMode ?? source.materialMode;
173
180
  };
174
181
  export default PathGraphics;
@@ -0,0 +1,27 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * Defines how material properties are applied along a path.
5
+ *
6
+ * @enum {number}
7
+ */
8
+ const PathMode = {
9
+ /**
10
+ * The material is applied to the entire path as a whole.
11
+ * @type {number}
12
+ * @constant
13
+ */
14
+ WHOLE: 0,
15
+
16
+ /**
17
+ * The material is applied in portions based on temporal position information,
18
+ * using interval-based material properties.
19
+ * @type {number}
20
+ * @constant
21
+ */
22
+ PORTIONS: 1,
23
+ };
24
+
25
+ Object.freeze(PathMode);
26
+
27
+ export default PathMode;
@@ -17,12 +17,14 @@ import CallbackPositionProperty from "./CallbackPositionProperty.js";
17
17
  import CompositePositionProperty from "./CompositePositionProperty.js";
18
18
  import ConstantPositionProperty from "./ConstantPositionProperty.js";
19
19
  import MaterialProperty from "./MaterialProperty.js";
20
+ import PathMode from "./PathMode.js";
20
21
  import Property from "./Property.js";
21
22
  import ReferenceProperty from "./ReferenceProperty.js";
22
23
  import SampledPositionProperty from "./SampledPositionProperty.js";
23
24
  import ScaledPositionProperty from "./ScaledPositionProperty.js";
24
25
  import TimeIntervalCollectionPositionProperty from "./TimeIntervalCollectionPositionProperty.js";
25
26
  import Quaternion from "../Core/Quaternion.js";
27
+ import arrayRemoveDuplicates from "../Core/arrayRemoveDuplicates.js";
26
28
 
27
29
  const update3DMatrix3Scratch1 = new Matrix3();
28
30
  const update3DMatrix3Scratch2 = new Matrix3();
@@ -210,6 +212,7 @@ const subSampleIntervalPropertyScratch = new TimeInterval();
210
212
  function EntityData(entity) {
211
213
  this.entity = entity;
212
214
  this.polyline = undefined;
215
+ this.segmentPolylines = [];
213
216
  this.index = undefined;
214
217
  this.updater = undefined;
215
218
  }
@@ -734,6 +737,111 @@ function subSample(
734
737
  const toFixedScratch = new Matrix3();
735
738
  const updateOrientationScratch = new Quaternion();
736
739
  const updateRotationScratch = new Matrix3();
740
+ const portionsVisibleIntervalScratch = new TimeInterval();
741
+ const portionsSegmentIntervalScratch = new TimeInterval();
742
+ const portionsDynamicIntervalScratch = new TimeInterval();
743
+
744
+ function getDynamicMaterialProperties(materialData) {
745
+ const dynamic = [];
746
+ if (!defined(materialData)) {
747
+ return dynamic;
748
+ }
749
+
750
+ for (const key in materialData) {
751
+ // Material properties store uniforms as underscored backing fields.
752
+ // Ignore event and subscription bookkeeping fields.
753
+ if (
754
+ key[0] !== "_" ||
755
+ key === "_definitionChanged" ||
756
+ key.endsWith("Subscription")
757
+ ) {
758
+ continue;
759
+ }
760
+
761
+ const prop = materialData[key];
762
+ if (
763
+ defined(prop) &&
764
+ typeof prop.getValue === "function" &&
765
+ !Property.isConstant(prop)
766
+ ) {
767
+ dynamic.push(prop);
768
+ }
769
+ }
770
+
771
+ return dynamic;
772
+ }
773
+
774
+ function emitSegmentsForSplitTimes(
775
+ splitTimes,
776
+ positionProperty,
777
+ time,
778
+ pathGraphics,
779
+ entity,
780
+ item,
781
+ polylineCollection,
782
+ resolution,
783
+ referenceFrame,
784
+ materialProp,
785
+ startingSegIndex,
786
+ ) {
787
+ // Sort and dedupe
788
+ splitTimes.sort(JulianDate.compare);
789
+ splitTimes = arrayRemoveDuplicates(splitTimes, JulianDate.equalsEpsilon);
790
+
791
+ let segIndex = startingSegIndex;
792
+ for (let j = 0; j < splitTimes.length - 1; j++) {
793
+ const splitStart = splitTimes[j];
794
+ const splitStop = splitTimes[j + 1];
795
+ if (!JulianDate.lessThan(splitStart, splitStop)) {
796
+ continue;
797
+ }
798
+
799
+ // Get segment midpoint
800
+ const splitMidTime = JulianDate.addSeconds(
801
+ splitStart,
802
+ JulianDate.secondsDifference(splitStop, splitStart) / 2,
803
+ new JulianDate(),
804
+ );
805
+
806
+ // Subsample positions
807
+ const subPositions = subSample(
808
+ positionProperty,
809
+ splitStart,
810
+ splitStop,
811
+ time,
812
+ referenceFrame,
813
+ resolution,
814
+ [],
815
+ );
816
+ if (subPositions.length < 2) {
817
+ continue;
818
+ }
819
+
820
+ // Get or create a polyline for this segment
821
+ let segPolyline = item.segmentPolylines[segIndex];
822
+ if (!defined(segPolyline)) {
823
+ segPolyline = polylineCollection.add();
824
+ segPolyline.id = entity;
825
+ item.segmentPolylines[segIndex] = segPolyline;
826
+ }
827
+ segPolyline.show = true;
828
+ segPolyline.positions = subPositions;
829
+ segPolyline.material = MaterialProperty.getValue(
830
+ splitMidTime,
831
+ materialProp,
832
+ segPolyline.material,
833
+ );
834
+ segPolyline.width = Property.getValueOrDefault(
835
+ pathGraphics._width,
836
+ time,
837
+ defaultWidth,
838
+ );
839
+
840
+ segIndex++;
841
+ }
842
+ return segIndex;
843
+ }
844
+
737
845
  function PolylineUpdater(scene, referenceFrame) {
738
846
  this._unusedIndexes = [];
739
847
  this._polylineCollection = new PolylineCollection();
@@ -845,6 +953,9 @@ PolylineUpdater.prototype.updateObject = function (time, item) {
845
953
  polyline.show = false;
846
954
  item.index = undefined;
847
955
  }
956
+ for (let j = 0; j < item.segmentPolylines.length; j++) {
957
+ item.segmentPolylines[j].show = false;
958
+ }
848
959
  return;
849
960
  }
850
961
 
@@ -883,16 +994,198 @@ PolylineUpdater.prototype.updateObject = function (time, item) {
883
994
  // This can happen if the position is sampled at a time when it is only defined at a single point
884
995
  if (positions.length < 2) {
885
996
  polyline.show = false;
997
+ for (let j = 0; j < item.segmentPolylines.length; j++) {
998
+ item.segmentPolylines[j].show = false;
999
+ }
886
1000
  return;
887
1001
  }
888
1002
 
889
1003
  polyline.show = true;
890
1004
  polyline.positions = positions;
1005
+
891
1006
  polyline.material = MaterialProperty.getValue(
892
1007
  time,
893
- pathGraphics._material,
1008
+ pathGraphics.material,
894
1009
  polyline.material,
895
1010
  );
1011
+
1012
+ const materialMode = Property.getValueOrUndefined(
1013
+ pathGraphics.materialMode,
1014
+ time,
1015
+ );
1016
+ const materialProp = pathGraphics.material;
1017
+ if (materialMode === PathMode.PORTIONS && !materialProp.isConstant) {
1018
+ // Hide the single polyline if it exists
1019
+ if (defined(polyline)) {
1020
+ polyline.show = false;
1021
+ }
1022
+
1023
+ // Prevent non-positive split steps from creating non-terminating loops.
1024
+ // Positive fractional resolutions are valid; only values <= 0 fall back to the default.
1025
+ const splitResolution = resolution > 0 ? resolution : defaultResolution;
1026
+
1027
+ const intervals = materialProp.intervals;
1028
+ let nextSegIndex = 0;
1029
+
1030
+ if (!defined(intervals)) {
1031
+ // Sampled/interpolated root material - generate synthetic times at resolution intervals
1032
+ const splitTimes = [
1033
+ JulianDate.clone(sampleStart),
1034
+ JulianDate.clone(sampleStop),
1035
+ ];
1036
+ let splitTime = JulianDate.addSeconds(
1037
+ sampleStart,
1038
+ splitResolution,
1039
+ new JulianDate(),
1040
+ );
1041
+ while (JulianDate.lessThan(splitTime, sampleStop)) {
1042
+ splitTimes.push(JulianDate.clone(splitTime));
1043
+ splitTime = JulianDate.addSeconds(
1044
+ splitTime,
1045
+ splitResolution,
1046
+ new JulianDate(),
1047
+ );
1048
+ }
1049
+ nextSegIndex = emitSegmentsForSplitTimes(
1050
+ splitTimes,
1051
+ positionProperty,
1052
+ time,
1053
+ pathGraphics,
1054
+ entity,
1055
+ item,
1056
+ this._polylineCollection,
1057
+ splitResolution,
1058
+ this._referenceFrame,
1059
+ pathGraphics.material,
1060
+ nextSegIndex,
1061
+ );
1062
+ } else {
1063
+ portionsVisibleIntervalScratch.start = sampleStart;
1064
+ portionsVisibleIntervalScratch.stop = sampleStop;
1065
+ portionsVisibleIntervalScratch.isStartIncluded = true;
1066
+ portionsVisibleIntervalScratch.isStopIncluded = true;
1067
+
1068
+ // Interval-based material - process each interval separately
1069
+ for (let i = 0; i < intervals.length; i++) {
1070
+ const interval = intervals.get(i);
1071
+
1072
+ if (
1073
+ !TimeInterval.intersect(
1074
+ interval,
1075
+ portionsVisibleIntervalScratch,
1076
+ portionsSegmentIntervalScratch,
1077
+ )
1078
+ ) {
1079
+ continue;
1080
+ }
1081
+
1082
+ const segStart = portionsSegmentIntervalScratch.start;
1083
+ const segStop = portionsSegmentIntervalScratch.stop;
1084
+
1085
+ if (JulianDate.greaterThanOrEquals(segStart, segStop)) {
1086
+ continue;
1087
+ }
1088
+
1089
+ // Detect dynamic properties and collect their split times
1090
+ const dynamic = getDynamicMaterialProperties(interval.data);
1091
+ const splitTimes = [
1092
+ JulianDate.clone(segStart),
1093
+ JulianDate.clone(segStop),
1094
+ ];
1095
+
1096
+ for (let j = 0; j < dynamic.length; j++) {
1097
+ const prop = dynamic[j];
1098
+ const timeDynamicIntervals = prop.intervals;
1099
+
1100
+ if (defined(timeDynamicIntervals)) {
1101
+ // Interval-based property: collect interval boundaries
1102
+ for (let k = 0; k < timeDynamicIntervals.length; k++) {
1103
+ const timeDynamicInterval = timeDynamicIntervals.get(k);
1104
+
1105
+ if (
1106
+ !TimeInterval.intersect(
1107
+ timeDynamicInterval,
1108
+ portionsSegmentIntervalScratch,
1109
+ portionsDynamicIntervalScratch,
1110
+ )
1111
+ ) {
1112
+ continue;
1113
+ }
1114
+
1115
+ if (
1116
+ JulianDate.greaterThan(
1117
+ portionsDynamicIntervalScratch.start,
1118
+ segStart,
1119
+ ) &&
1120
+ JulianDate.lessThan(
1121
+ portionsDynamicIntervalScratch.start,
1122
+ segStop,
1123
+ )
1124
+ ) {
1125
+ splitTimes.push(
1126
+ JulianDate.clone(portionsDynamicIntervalScratch.start),
1127
+ );
1128
+ }
1129
+
1130
+ if (
1131
+ JulianDate.greaterThan(
1132
+ portionsDynamicIntervalScratch.stop,
1133
+ segStart,
1134
+ ) &&
1135
+ JulianDate.lessThan(
1136
+ portionsDynamicIntervalScratch.stop,
1137
+ segStop,
1138
+ )
1139
+ ) {
1140
+ splitTimes.push(
1141
+ JulianDate.clone(portionsDynamicIntervalScratch.stop),
1142
+ );
1143
+ }
1144
+ }
1145
+ } else if (!Property.isConstant(prop)) {
1146
+ // Sampled/interpolated property: add resolution-based split times
1147
+ let sampledTime = JulianDate.clone(segStart);
1148
+ while (JulianDate.lessThan(sampledTime, segStop)) {
1149
+ splitTimes.push(JulianDate.clone(sampledTime));
1150
+ sampledTime = JulianDate.addSeconds(
1151
+ sampledTime,
1152
+ splitResolution,
1153
+ new JulianDate(),
1154
+ );
1155
+ }
1156
+ }
1157
+ }
1158
+
1159
+ // Emit segments for this interval's split times
1160
+ nextSegIndex = emitSegmentsForSplitTimes(
1161
+ splitTimes,
1162
+ positionProperty,
1163
+ time,
1164
+ pathGraphics,
1165
+ entity,
1166
+ item,
1167
+ this._polylineCollection,
1168
+ splitResolution,
1169
+ this._referenceFrame,
1170
+ interval.data,
1171
+ nextSegIndex,
1172
+ );
1173
+ }
1174
+ }
1175
+
1176
+ // Hide any excess segment polylines from previous frames.
1177
+ for (let j = nextSegIndex; j < item.segmentPolylines.length; j++) {
1178
+ if (defined(item.segmentPolylines[j])) {
1179
+ item.segmentPolylines[j].show = false;
1180
+ }
1181
+ }
1182
+ } else {
1183
+ // Not in PORTIONS mode, hide all segment polylines from previous frames
1184
+ for (let j = 0; j < item.segmentPolylines.length; j++) {
1185
+ item.segmentPolylines[j].show = false;
1186
+ }
1187
+ }
1188
+
896
1189
  polyline.width = Property.getValueOrDefault(
897
1190
  pathGraphics._width,
898
1191
  time,
@@ -914,6 +1207,10 @@ PolylineUpdater.prototype.removeObject = function (item) {
914
1207
  polyline.id = undefined;
915
1208
  item.index = undefined;
916
1209
  }
1210
+ for (let i = 0; i < item.segmentPolylines.length; i++) {
1211
+ item.segmentPolylines[i].show = false;
1212
+ }
1213
+ item.segmentPolylines.length = 0;
917
1214
  };
918
1215
 
919
1216
  PolylineUpdater.prototype.destroy = function () {
@@ -295,7 +295,7 @@ PolylineVisualizer.prototype.getBoundingSphere = function (entity, result) {
295
295
  const tmp = getBoundingSphereBoundingSphereScratch;
296
296
 
297
297
  let count = 0;
298
- let state = BoundingSphereState.DONE;
298
+ let state;
299
299
  const batches = this._batches;
300
300
  const batchesLength = batches.length;
301
301
  const updater = this._updaters.get(entity.id);
@@ -375,7 +375,7 @@ StaticOutlineGeometryBatch.prototype.update = function (time) {
375
375
  const translucentBatchesLength = translucentBatches.length;
376
376
  let itemsToRemove;
377
377
  let isUpdated = true;
378
- let needUpdate = false;
378
+ let needUpdate;
379
379
 
380
380
  do {
381
381
  needUpdate = false;
@@ -222,6 +222,29 @@ const AutomaticUniforms = {
222
222
  },
223
223
  }),
224
224
 
225
+ /**
226
+ * An automatic GLSL uniform containing the feature-ID texture produced by
227
+ * the planar fill pre-pass (BENTLEY_materials_planar_fill). Non-behind
228
+ * planar fill geometry writes its per-fragment feature ID here so that
229
+ * behind fills can test whether the existing pixel belongs to the same
230
+ * logical object.
231
+ *
232
+ * @example
233
+ * // GLSL declaration
234
+ * uniform sampler2D czm_planarFillIdTexture;
235
+ *
236
+ * // Sample
237
+ * vec2 coords = gl_FragCoord.xy / czm_viewport.zw;
238
+ * float existingFeatureId = texture(czm_planarFillIdTexture, coords).r;
239
+ */
240
+ czm_planarFillIdTexture: new AutomaticUniform({
241
+ size: 1,
242
+ datatype: WebGLConstants.SAMPLER_2D,
243
+ getValue: function (uniformState) {
244
+ return uniformState.planarFillIdTexture;
245
+ },
246
+ }),
247
+
225
248
  /**
226
249
  * An automatic GLSL uniform representing a 4x4 model transformation matrix that
227
250
  * transforms model coordinates to world coordinates.
@@ -1010,20 +1010,26 @@ Object.defineProperties(Context.prototype, {
1010
1010
  },
1011
1011
 
1012
1012
  /**
1013
- * A 1x1 RGBA texture initialized to [255, 255, 255, 255]. This can
1014
- * be used as a placeholder texture while other textures are downloaded.
1013
+ * A 1x1 RGBA texture initialized to the color defined by {@link Texture.defaultColor}.
1014
+ * This can be used as a placeholder texture while other textures are downloaded.
1015
1015
  * @memberof Context.prototype
1016
1016
  * @type {Texture}
1017
1017
  */
1018
1018
  defaultTexture: {
1019
1019
  get: function () {
1020
1020
  if (this._defaultTexture === undefined) {
1021
+ const color = Texture.defaultColor;
1021
1022
  this._defaultTexture = new Texture({
1022
1023
  context: this,
1023
1024
  source: {
1024
1025
  width: 1,
1025
1026
  height: 1,
1026
- arrayBufferView: new Uint8Array([255, 255, 255, 255]),
1027
+ arrayBufferView: new Uint8Array([
1028
+ color.red * 255,
1029
+ color.green * 255,
1030
+ color.blue * 255,
1031
+ color.alpha * 255,
1032
+ ]),
1027
1033
  },
1028
1034
  flipY: false,
1029
1035
  });
@@ -47,6 +47,7 @@ const Flags = {
47
47
  * @property {Pass} [pass]
48
48
  * @property {object} [owner]
49
49
  * @property {string} [pickId]
50
+ * @property {string} [snapId]
50
51
  * @property {boolean} [pickMetadataAllowed=false]
51
52
  * @property {boolean} [cull=true]
52
53
  * @property {boolean} [occlude=true]
@@ -102,6 +103,7 @@ class DrawCommand {
102
103
  this._debugOverlappingFrustums = 0;
103
104
  /** @private */
104
105
  this._pickId = options.pickId;
106
+ this._snapId = options.snapId;
105
107
  /** @private */
106
108
  this._pickMetadataAllowed = options.pickMetadataAllowed === true;
107
109
  /**
@@ -532,6 +534,25 @@ class DrawCommand {
532
534
  }
533
535
  }
534
536
 
537
+ /**
538
+ * A GLSL string that will evaluate to the float snap payload written during
539
+ * a snapping pass (see {@link Scene#snap}). When <code>undefined</code>, the
540
+ * command does not render during a snapping pass.
541
+ *
542
+ * @type {string|undefined}
543
+ * @default undefined
544
+ */
545
+ get snapId() {
546
+ return this._snapId;
547
+ }
548
+
549
+ set snapId(value) {
550
+ if (this._snapId !== value) {
551
+ this._snapId = value;
552
+ this.dirty = true;
553
+ }
554
+ }
555
+
535
556
  /**
536
557
  * Whether metadata picking is allowed.
537
558
  *
@@ -628,6 +649,7 @@ class DrawCommand {
628
649
  result._owner = command._owner;
629
650
  result._debugOverlappingFrustums = command._debugOverlappingFrustums;
630
651
  result._pickId = command._pickId;
652
+ result._snapId = command._snapId;
631
653
  result._pickMetadataAllowed = command._pickMetadataAllowed;
632
654
  result._pickedMetadataInfo = command._pickedMetadataInfo;
633
655
  result._flags = command._flags;
@@ -287,6 +287,10 @@ function Framebuffer(options) {
287
287
  }
288
288
 
289
289
  this._unBind();
290
+
291
+ // _bind and _unBind bypass the context's framebuffer binding cache. The GL
292
+ // binding is now the default framebuffer; update the cache to match.
293
+ context._currentFramebuffer = undefined;
290
294
  }
291
295
 
292
296
  Object.defineProperties(Framebuffer.prototype, {
@@ -19,16 +19,17 @@ const Pass = {
19
19
  GLOBE: 2,
20
20
  TERRAIN_CLASSIFICATION: 3,
21
21
  CESIUM_3D_TILE_EDGES: 4,
22
- CESIUM_3D_TILE: 5,
23
- CESIUM_3D_TILE_CLASSIFICATION: 6,
24
- CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW: 7,
25
- OPAQUE: 8,
26
- TRANSLUCENT: 9,
27
- VOXELS: 10,
28
- GAUSSIAN_SPLATS: 11,
29
- CESIUM_3D_TILE_EDGES_DIRECT: 12,
30
- OVERLAY: 13,
31
- NUMBER_OF_PASSES: 14,
22
+ CESIUM_3D_TILE_PLANAR_FILL_ID: 5,
23
+ CESIUM_3D_TILE: 6,
24
+ CESIUM_3D_TILE_CLASSIFICATION: 7,
25
+ CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW: 8,
26
+ OPAQUE: 9,
27
+ TRANSLUCENT: 10,
28
+ VOXELS: 11,
29
+ GAUSSIAN_SPLATS: 12,
30
+ CESIUM_3D_TILE_EDGES_DIRECT: 13,
31
+ OVERLAY: 14,
32
+ NUMBER_OF_PASSES: 15,
32
33
  };
33
34
 
34
35
  Object.freeze(Pass);
@@ -1,5 +1,6 @@
1
1
  import Cartesian2 from "../Core/Cartesian2.js";
2
2
  import Check from "../Core/Check.js";
3
+ import Color from "../Core/Color.js";
3
4
  import createGuid from "../Core/createGuid.js";
4
5
  import Frozen from "../Core/Frozen.js";
5
6
  import defined from "../Core/defined.js";
@@ -576,7 +577,7 @@ function loadNull(texture) {
576
577
  /**
577
578
  * This function is identical to using the Texture constructor except that it can be
578
579
  * replaced with a mock/spy in tests.
579
- * @private
580
+ * @ignore
580
581
  */
581
582
  Texture.create = function (options) {
582
583
  return new Texture(options);
@@ -1123,4 +1124,14 @@ Texture.prototype.destroy = function () {
1123
1124
  this._context._gl.deleteTexture(this._texture);
1124
1125
  return destroyObject(this);
1125
1126
  };
1127
+
1128
+ /**
1129
+ * The default color used as a placeholder texture while other textures are downloaded.
1130
+ * This can be changed globally to customize the placeholder appearance.
1131
+ *
1132
+ * @type {Color}
1133
+ * @default Color.WHITE
1134
+ */
1135
+ Texture.defaultColor = Color.WHITE;
1136
+
1126
1137
  export default Texture;
@@ -37,6 +37,13 @@ function UniformState() {
37
37
  * @type {Texture}
38
38
  */
39
39
  this.edgeDepthTexture = undefined; // packed depth color attachment from edge pass
40
+ /**
41
+ * Texture written by the planar fill feature-ID pre-pass.
42
+ * Contains per-pixel feature IDs for non-behind planar fill geometry.
43
+ * Sampled by behind fills to test same-object coplanarity.
44
+ * @type {Texture}
45
+ */
46
+ this.planarFillIdTexture = undefined;
40
47
  /**
41
48
  * @type {number}
42
49
  */
@@ -16,6 +16,7 @@ import assert from "../Core/assert.js";
16
16
 
17
17
  /** @import {TypedArray, TypedArrayConstructor} from "../Core/globalTypes.js"; */
18
18
 
19
+ /** @ignore */
19
20
  function addAttribute(attributes, attribute, index, context) {
20
21
  const hasVertexBuffer = defined(attribute.vertexBuffer);
21
22
  const hasValue = defined(attribute.value);
@@ -644,7 +645,6 @@ VertexArray.fromGeometry = function (options) {
644
645
  }
645
646
 
646
647
  let attrProps = {};
647
- vertexBuffer = undefined;
648
648
  if (defined(attribute.values)) {
649
649
  vertexBuffer = Buffer.createVertexBuffer({
650
650
  context: context,
@@ -325,11 +325,6 @@ function ArcGisMapServerImageryProvider(options) {
325
325
  this._credit = options.credit;
326
326
  this._tileCredits = undefined;
327
327
 
328
- let credit = options.credit;
329
- if (typeof credit === "string") {
330
- credit = new Credit(credit);
331
- }
332
-
333
328
  /**
334
329
  * Gets or sets a value indicating whether feature picking is enabled. If true, {@link ArcGisMapServerImageryProvider#pickFeatures} will
335
330
  * invoke the "identify" operation on the ArcGIS server and return the features included in the response. If false,
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPTauP-rqeCeHTtrSMga9XbPxQ..ZMIZzf1tcwicoJi5E5T2mG0EO3qlIRkQNe5S-uA95RJKU0YkrwOT0AF-lSIyXXBFakDJIPaxsZ5vpnzlaW3kCYG2Tk53bY6OntMqn1EBYtDPyqz38iM4NU_bbDN3DuxUdkxYDWnxJXxxWe3bEeUANbvhKK76PU7N0wjZgtEYHYocspYXSHxbCEYo_eXrHDkrWpgkzcmQ3WpQqf2XprJ39pbqVSZbxskDh3zBm92XxUaiSmdf7rC1w3VoAT1_UarLJfAQ";
7
+ "AAPTa7BPWL4PoZRFPJ2CM2YRclg..ub1vMOBXctC7ozMMKNnmx3ZwVTsDJAXo2GLomQ2CZjuOc2HLr1-CryeuRo9ZsV65cuZ9xN1yFKeLTu7Cxld7B97aI28os_NnuC9nvWde_l4G1DTApSHmhrVoZfKgO0bqOrsDfvvSgO-cdkUEvBASNX_4Lb9tB5fEY7lbYaWdOOWBXyZylR9il0-biB248V6HdDT1kgkSwz9esfKialRTLgxJx8AFM9is--UXK0CLvZn6JUU44PZSFuMyAT1_rgxsirsZ";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *