@cesium/engine 26.1.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 (384) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
  2. package/Build/Workers/chunk-27FWRTJI.js +454 -0
  3. package/Build/Workers/chunk-2H5264K7.js +1284 -0
  4. package/Build/Workers/chunk-2H73KDBM.js +511 -0
  5. package/Build/Workers/chunk-2RGJPWQX.js +1284 -0
  6. package/Build/Workers/chunk-2Z4ZLVOD.js +352 -0
  7. package/Build/Workers/chunk-2ZKH2QZB.js +387 -0
  8. package/Build/Workers/chunk-36NI5E6W.js +3820 -0
  9. package/Build/Workers/chunk-37SW7SYS.js +778 -0
  10. package/Build/Workers/chunk-3GHVJ3SO.js +455 -0
  11. package/Build/Workers/chunk-3LB4UVPU.js +387 -0
  12. package/Build/Workers/chunk-3PONLKEL.js +778 -0
  13. package/Build/Workers/chunk-3PSS3T43.js +102 -0
  14. package/Build/Workers/chunk-3QR662HH.js +3820 -0
  15. package/Build/Workers/chunk-3SX2WYSO.js +973 -0
  16. package/Build/Workers/chunk-3UDN6LYX.js +476 -0
  17. package/Build/Workers/chunk-47MCBSXI.js +9237 -0
  18. package/Build/Workers/chunk-4E626OCE.js +1067 -0
  19. package/Build/Workers/chunk-4NW2MJKH.js +455 -0
  20. package/Build/Workers/chunk-52YK5BSN.js +198 -0
  21. package/Build/Workers/chunk-5RNAQZK6.js +9234 -0
  22. package/Build/Workers/chunk-5YPQBFRD.js +519 -0
  23. package/Build/Workers/chunk-6FHT43QR.js +140 -0
  24. package/Build/Workers/chunk-6FZDPMTO.js +455 -0
  25. package/Build/Workers/chunk-6R5X2GUA.js +1284 -0
  26. package/Build/Workers/chunk-7A2OGDHT.js +305 -0
  27. package/Build/Workers/chunk-7CGEQUM2.js +305 -0
  28. package/Build/Workers/chunk-7I325HV6.js +1344 -0
  29. package/Build/Workers/chunk-7MM3N2VE.js +1067 -0
  30. package/Build/Workers/chunk-7TKLTCZW.js +219 -0
  31. package/Build/Workers/chunk-7UUKBDH6.js +1054 -0
  32. package/Build/Workers/chunk-7W6DUHAB.js +693 -0
  33. package/Build/Workers/chunk-7XM5JK5F.js +162 -0
  34. package/Build/Workers/chunk-7YG3ND3P.js +454 -0
  35. package/Build/Workers/chunk-A62YI6S6.js +305 -0
  36. package/Build/Workers/chunk-A7TTWVTF.js +2719 -0
  37. package/Build/Workers/chunk-ACTVJHSP.js +519 -0
  38. package/Build/Workers/chunk-ADX3CBKD.js +9234 -0
  39. package/Build/Workers/chunk-AF7DTMJ7.js +398 -0
  40. package/Build/Workers/chunk-AJSFRY4U.js +1344 -0
  41. package/Build/Workers/chunk-ARZICEEP.js +301 -0
  42. package/Build/Workers/chunk-B3QHNA4A.js +147 -0
  43. package/Build/Workers/chunk-BKPQFCXH.js +511 -0
  44. package/Build/Workers/chunk-BSPCI2LO.js +959 -0
  45. package/Build/Workers/chunk-BUJWSX5S.js +301 -0
  46. package/Build/Workers/chunk-C7QDUNI3.js +138 -0
  47. package/Build/Workers/chunk-CIV5DJOQ.js +778 -0
  48. package/Build/Workers/chunk-CQNFIAZU.js +56 -0
  49. package/Build/Workers/chunk-CRCGE4J4.js +9237 -0
  50. package/Build/Workers/chunk-CUTRKXUQ.js +288 -0
  51. package/Build/Workers/chunk-D6AY775A.js +3201 -0
  52. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  53. package/Build/Workers/chunk-DZBQUULR.js +138 -0
  54. package/Build/Workers/chunk-DZUFEE4L.js +140 -0
  55. package/Build/Workers/chunk-E2NKV5YT.js +3820 -0
  56. package/Build/Workers/chunk-EB3Y5P3A.js +368 -0
  57. package/Build/Workers/chunk-ELE6SC2C.js +837 -0
  58. package/Build/Workers/chunk-EOWDZN5S.js +288 -0
  59. package/Build/Workers/chunk-ERKUET22.js +3201 -0
  60. package/Build/Workers/chunk-EZGQPOIG.js +162 -0
  61. package/Build/Workers/chunk-F2IMBMZY.js +241 -0
  62. package/Build/Workers/chunk-F4CSNRZO.js +219 -0
  63. package/Build/Workers/chunk-FBP4DUQJ.js +693 -0
  64. package/Build/Workers/chunk-FJWZMGOQ.js +1992 -0
  65. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  66. package/Build/Workers/chunk-FU4BGABC.js +398 -0
  67. package/Build/Workers/chunk-FX3VEAIU.js +2719 -0
  68. package/Build/Workers/chunk-GGNWQWSB.js +301 -0
  69. package/Build/Workers/chunk-GHXVQVUM.js +1344 -0
  70. package/Build/Workers/chunk-GNKXEN4C.js +682 -0
  71. package/Build/Workers/chunk-GVA7XQI2.js +368 -0
  72. package/Build/Workers/chunk-GXDHRC4J.js +1344 -0
  73. package/Build/Workers/chunk-GYSYP6PC.js +1067 -0
  74. package/Build/Workers/chunk-H2WCFXLP.js +241 -0
  75. package/Build/Workers/chunk-HDL4HOXZ.js +778 -0
  76. package/Build/Workers/chunk-HLW2ZRVK.js +368 -0
  77. package/Build/Workers/chunk-HT6FASOT.js +973 -0
  78. package/Build/Workers/chunk-I74ZH5LK.js +959 -0
  79. package/Build/Workers/chunk-IDVHUDZT.js +352 -0
  80. package/Build/Workers/chunk-IJZJMIUY.js +789 -0
  81. package/Build/Workers/chunk-IMBVP57H.js +44 -0
  82. package/Build/Workers/chunk-IOO7Z2AV.js +57 -0
  83. package/Build/Workers/chunk-IUIFLOYO.js +44 -0
  84. package/Build/Workers/chunk-J73T2VOY.js +171 -0
  85. package/Build/Workers/chunk-JALGQYDY.js +288 -0
  86. package/Build/Workers/chunk-JXYLJCTC.js +124 -0
  87. package/Build/Workers/chunk-K27QOAW6.js +97 -0
  88. package/Build/Workers/chunk-KMV25A63.js +789 -0
  89. package/Build/Workers/chunk-KP5QD7WU.js +693 -0
  90. package/Build/Workers/chunk-KZWFWJML.js +2719 -0
  91. package/Build/Workers/chunk-LCXRRALY.js +387 -0
  92. package/Build/Workers/chunk-LDRQSYBN.js +1800 -0
  93. package/Build/Workers/chunk-M4JZ6TSZ.js +959 -0
  94. package/Build/Workers/chunk-M6QKXVAU.js +1054 -0
  95. package/Build/Workers/chunk-MAAHFYPC.js +198 -0
  96. package/Build/Workers/chunk-MCJDRDJQ.js +102 -0
  97. package/Build/Workers/chunk-MEENMEAH.js +198 -0
  98. package/Build/Workers/chunk-NAWU5RF4.js +162 -0
  99. package/Build/Workers/chunk-NCL22ZUX.js +56 -0
  100. package/Build/Workers/chunk-NEFDMMLY.js +241 -0
  101. package/Build/Workers/chunk-NJVBJG63.js +124 -0
  102. package/Build/Workers/chunk-NLLCQBX3.js +73 -0
  103. package/Build/Workers/chunk-NSKZ6SBK.js +1483 -0
  104. package/Build/Workers/chunk-NXGQBQWE.js +837 -0
  105. package/Build/Workers/chunk-O3DKEX7Q.js +352 -0
  106. package/Build/Workers/chunk-O3XFXGPZ.js +476 -0
  107. package/Build/Workers/chunk-OA6MYL2C.js +837 -0
  108. package/Build/Workers/chunk-OHP4ELS7.js +198 -0
  109. package/Build/Workers/chunk-OZGPS7FB.js +138 -0
  110. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  111. package/Build/Workers/chunk-PD4GK4EM.js +57 -0
  112. package/Build/Workers/chunk-PEDU33QG.js +2342 -0
  113. package/Build/Workers/chunk-PRWUMCXF.js +682 -0
  114. package/Build/Workers/chunk-PVTSNNVI.js +288 -0
  115. package/Build/Workers/chunk-QFSSCLLZ.js +973 -0
  116. package/Build/Workers/chunk-QHPZH22L.js +241 -0
  117. package/Build/Workers/chunk-QIZDWZK6.js +301 -0
  118. package/Build/Workers/chunk-QV6DG2YX.js +1483 -0
  119. package/Build/Workers/chunk-R4K7EHOU.js +171 -0
  120. package/Build/Workers/chunk-R7JGHDD6.js +789 -0
  121. package/Build/Workers/chunk-RASQEYD4.js +1483 -0
  122. package/Build/Workers/chunk-RW6ITX7Q.js +3820 -0
  123. package/Build/Workers/chunk-RYSQVJR6.js +398 -0
  124. package/Build/Workers/chunk-S6RJU5NM.js +1054 -0
  125. package/Build/Workers/chunk-SA2A2AN5.js +2342 -0
  126. package/Build/Workers/chunk-SDFHDNS4.js +147 -0
  127. package/Build/Workers/chunk-SJYSIOEM.js +414 -0
  128. package/Build/Workers/chunk-SMTGMFBL.js +97 -0
  129. package/Build/Workers/chunk-SXSP3JHS.js +38 -0
  130. package/Build/Workers/chunk-TN35HP5B.js +1067 -0
  131. package/Build/Workers/chunk-TNWKJNUZ.js +454 -0
  132. package/Build/Workers/chunk-TOAF47AQ.js +102 -0
  133. package/Build/Workers/chunk-TQ4QCOXT.js +2719 -0
  134. package/Build/Workers/chunk-TSDSILQB.js +124 -0
  135. package/Build/Workers/chunk-U5LV3F3Z.js +1054 -0
  136. package/Build/Workers/chunk-UAZUP4I5.js +1992 -0
  137. package/Build/Workers/chunk-UF46SZEZ.js +789 -0
  138. package/Build/Workers/chunk-UNRTMCET.js +398 -0
  139. package/Build/Workers/chunk-UTB7U3O6.js +1992 -0
  140. package/Build/Workers/chunk-V46YGZE6.js +352 -0
  141. package/Build/Workers/chunk-VDGOCROW.js +57 -0
  142. package/Build/Workers/chunk-VFWSSBPT.js +511 -0
  143. package/Build/Workers/chunk-VVYMXI3I.js +1284 -0
  144. package/Build/Workers/chunk-VXWHPYQM.js +837 -0
  145. package/Build/Workers/chunk-VXYUBRSB.js +219 -0
  146. package/Build/Workers/chunk-VZLDLEWI.js +387 -0
  147. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  148. package/Build/Workers/chunk-WN3F4CVG.js +3201 -0
  149. package/Build/Workers/chunk-WPRUWXGV.js +693 -0
  150. package/Build/Workers/chunk-WTO2ERBP.js +414 -0
  151. package/Build/Workers/chunk-WVHMDVG4.js +959 -0
  152. package/Build/Workers/chunk-XCBZVTIV.js +280 -0
  153. package/Build/Workers/chunk-XGA23TAX.js +73 -0
  154. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  155. package/Build/Workers/chunk-XQH66YJC.js +147 -0
  156. package/Build/Workers/chunk-XTA7BXJG.js +682 -0
  157. package/Build/Workers/chunk-XTIDAFRS.js +476 -0
  158. package/Build/Workers/chunk-XUEDWBUD.js +682 -0
  159. package/Build/Workers/chunk-XYFLRH3H.js +124 -0
  160. package/Build/Workers/chunk-Y7JRTRTO.js +305 -0
  161. package/Build/Workers/chunk-Y7QSMDCJ.js +352 -0
  162. package/Build/Workers/chunk-YCB5TYTR.js +1483 -0
  163. package/Build/Workers/chunk-YEYOSTJX.js +219 -0
  164. package/Build/Workers/chunk-YGFVAGYF.js +630 -0
  165. package/Build/Workers/chunk-YIIACKQO.js +368 -0
  166. package/Build/Workers/chunk-YJGSP6PE.js +511 -0
  167. package/Build/Workers/chunk-Z4LR5EHE.js +454 -0
  168. package/Build/Workers/chunk-Z66EVE2A.js +44 -0
  169. package/Build/Workers/chunk-ZHIHHHTB.js +414 -0
  170. package/Build/Workers/chunk-ZNWHFSLE.js +171 -0
  171. package/Build/Workers/chunk-ZQLZG4IN.js +2342 -0
  172. package/Build/Workers/chunk-ZRTSMUZ2.js +414 -0
  173. package/Build/Workers/chunk-ZZUVT5BM.js +476 -0
  174. package/Build/Workers/combineGeometry.js +16 -16
  175. package/Build/Workers/createBoxGeometry.js +10 -10
  176. package/Build/Workers/createBoxOutlineGeometry.js +8 -8
  177. package/Build/Workers/createCircleGeometry.js +18 -18
  178. package/Build/Workers/createCircleOutlineGeometry.js +11 -11
  179. package/Build/Workers/createCoplanarPolygonGeometry.js +27 -27
  180. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +23 -23
  181. package/Build/Workers/createCorridorGeometry.js +23 -25
  182. package/Build/Workers/createCorridorOutlineGeometry.js +21 -23
  183. package/Build/Workers/createCylinderGeometry.js +12 -12
  184. package/Build/Workers/createCylinderOutlineGeometry.js +10 -10
  185. package/Build/Workers/createEllipseGeometry.js +18 -18
  186. package/Build/Workers/createEllipseOutlineGeometry.js +11 -11
  187. package/Build/Workers/createEllipsoidGeometry.js +11 -11
  188. package/Build/Workers/createEllipsoidOutlineGeometry.js +10 -10
  189. package/Build/Workers/createFrustumGeometry.js +11 -11
  190. package/Build/Workers/createFrustumOutlineGeometry.js +11 -11
  191. package/Build/Workers/createGeometry.js +16 -16
  192. package/Build/Workers/createGroundPolylineGeometry.js +16 -16
  193. package/Build/Workers/createPlaneGeometry.js +9 -9
  194. package/Build/Workers/createPlaneOutlineGeometry.js +8 -8
  195. package/Build/Workers/createPolygonGeometry.js +25 -25
  196. package/Build/Workers/createPolygonOutlineGeometry.js +22 -22
  197. package/Build/Workers/createPolylineGeometry.js +18 -18
  198. package/Build/Workers/createPolylineVolumeGeometry.js +24 -24
  199. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +20 -20
  200. package/Build/Workers/createRectangleGeometry.js +19 -19
  201. package/Build/Workers/createRectangleOutlineGeometry.js +13 -13
  202. package/Build/Workers/createSimplePolylineGeometry.js +16 -16
  203. package/Build/Workers/createSphereGeometry.js +11 -11
  204. package/Build/Workers/createSphereOutlineGeometry.js +10 -10
  205. package/Build/Workers/createVectorTileClampedPolylines.js +7 -7
  206. package/Build/Workers/createVectorTileGeometries.js +15 -15
  207. package/Build/Workers/createVectorTilePoints.js +6 -6
  208. package/Build/Workers/createVectorTilePolygons.js +14 -14
  209. package/Build/Workers/createVectorTilePolylines.js +7 -7
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +17 -17
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +14 -14
  212. package/Build/Workers/createVerticesFromHeightmap.js +14 -14
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +12 -12
  214. package/Build/Workers/createWallGeometry.js +17 -17
  215. package/Build/Workers/createWallOutlineGeometry.js +17 -17
  216. package/Build/Workers/decodeDraco.js +2 -2
  217. package/Build/Workers/decodeI3S.js +5 -5
  218. package/Build/Workers/incrementallyBuildTerrainPicker.js +4 -4
  219. package/Build/Workers/upsampleQuantizedTerrainMesh.js +14 -14
  220. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +17 -17
  221. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  222. package/Source/Core/BoundingSphere.js +0 -3
  223. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  224. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  225. package/Source/Core/CorridorGeometry.js +2 -4
  226. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  227. package/Source/Core/EarthOrientationParameters.js +2 -2
  228. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  229. package/Source/Core/EllipsoidGeodesic.js +3 -3
  230. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  231. package/Source/Core/GroundPolylineGeometry.js +2 -2
  232. package/Source/Core/Heap.js +1 -1
  233. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  234. package/Source/Core/InterpolationAlgorithm.js +1 -0
  235. package/Source/Core/Ion.js +1 -1
  236. package/Source/Core/JulianDate.js +1 -1
  237. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  238. package/Source/Core/LinearApproximation.js +69 -66
  239. package/Source/Core/Math.js +59 -0
  240. package/Source/Core/Matrix2.js +2 -2
  241. package/Source/Core/Matrix3.js +2 -2
  242. package/Source/Core/OrthographicFrustum.js +1 -1
  243. package/Source/Core/PerspectiveFrustum.js +1 -1
  244. package/Source/Core/PolygonGeometry.js +2 -2
  245. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  246. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  247. package/Source/Core/PolylineGeometry.js +1 -1
  248. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  249. package/Source/Core/Rectangle.js +7 -1
  250. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  251. package/Source/Core/SimplePolylineGeometry.js +1 -1
  252. package/Source/Core/TerrainEncoding.js +2 -2
  253. package/Source/Core/TerrainPicker.js +179 -168
  254. package/Source/Core/TimeIntervalCollection.js +1 -3
  255. package/Source/Core/Tipsify.js +1 -1
  256. package/Source/Core/Transforms.js +5 -1
  257. package/Source/Core/VectorPipeline.js +1117 -0
  258. package/Source/Core/VectorProvider.js +429 -0
  259. package/Source/Core/WallOutlineGeometry.js +1 -1
  260. package/Source/Core/getTimestamp.js +4 -2
  261. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  262. package/Source/DataSources/CzmlDataSource.js +2 -0
  263. package/Source/DataSources/DataSourceDisplay.js +1 -1
  264. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  265. package/Source/DataSources/GeometryVisualizer.js +1 -1
  266. package/Source/DataSources/KmlDataSource.js +1 -2
  267. package/Source/DataSources/PolylineVisualizer.js +1 -1
  268. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  269. package/Source/Renderer/AutomaticUniforms.js +23 -0
  270. package/Source/Renderer/Context.js +9 -3
  271. package/Source/Renderer/DrawCommand.js +22 -0
  272. package/Source/Renderer/Framebuffer.js +4 -0
  273. package/Source/Renderer/Pass.js +11 -10
  274. package/Source/Renderer/Texture.js +11 -0
  275. package/Source/Renderer/UniformState.js +7 -0
  276. package/Source/Renderer/VertexArray.js +0 -1
  277. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  278. package/Source/Scene/ArcGisMapService.js +1 -1
  279. package/Source/Scene/Billboard.js +2 -1
  280. package/Source/Scene/BillboardCollection.js +7 -3
  281. package/Source/Scene/BufferPrimitiveCollection.js +27 -5
  282. package/Source/Scene/Camera.js +71 -5
  283. package/Source/Scene/Cesium3DTileset.js +1 -1
  284. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  285. package/Source/Scene/Controllers/Controller.js +63 -0
  286. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  287. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  288. package/Source/Scene/Controllers/MouseButton.js +32 -0
  289. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  290. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  291. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  292. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  293. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  294. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  295. package/Source/Scene/DerivedCommand.js +94 -0
  296. package/Source/Scene/EdgeFramebuffer.js +1 -5
  297. package/Source/Scene/FrameState.js +17 -0
  298. package/Source/Scene/Globe.js +20 -0
  299. package/Source/Scene/GlobeDepth.js +27 -1
  300. package/Source/Scene/GlobeSurfaceShaderSet.js +12 -2
  301. package/Source/Scene/GlobeSurfaceTile.js +48 -10
  302. package/Source/Scene/GlobeSurfaceTileProvider.js +121 -3
  303. package/Source/Scene/GltfLoader.js +32 -3
  304. package/Source/Scene/GltfSpzLoader.js +1 -1
  305. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  306. package/Source/Scene/I3SDataProvider.js +1 -1
  307. package/Source/Scene/I3SLayer.js +1 -1
  308. package/Source/Scene/I3SNode.js +2 -2
  309. package/Source/Scene/ImageryLayerCollection.js +188 -4
  310. package/Source/Scene/IonImageryProvider.js +1 -5
  311. package/Source/Scene/Label.js +4 -4
  312. package/Source/Scene/LabelCollection.js +1 -1
  313. package/Source/Scene/MVTDataProvider.js +2 -0
  314. package/Source/Scene/Model/B3dmLoader.js +1 -2
  315. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  316. package/Source/Scene/Model/I3dmLoader.js +1 -1
  317. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  318. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  319. package/Source/Scene/Model/Model.js +8 -10
  320. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  321. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  322. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  323. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  324. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  325. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  326. package/Source/Scene/ModelComponents.js +71 -0
  327. package/Source/Scene/Picking.js +16 -5
  328. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  329. package/Source/Scene/PntsParser.js +0 -1
  330. package/Source/Scene/PolylineCollection.js +1 -1
  331. package/Source/Scene/PostProcessStage.js +4 -2
  332. package/Source/Scene/ResourceCache.js +7 -4
  333. package/Source/Scene/ResourceCacheKey.js +16 -13
  334. package/Source/Scene/Scene.js +202 -5
  335. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  336. package/Source/Scene/ShadowMap.js +9 -3
  337. package/Source/Scene/ShadowMapShader.js +50 -2
  338. package/Source/Scene/SnapFramebuffer.js +121 -0
  339. package/Source/Scene/Snapping.js +184 -0
  340. package/Source/Scene/TerrainFillMesh.js +3 -2
  341. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +1 -1
  342. package/Source/Scene/Vector3DTileContent.js +2 -3
  343. package/Source/Scene/VectorGltf3DTileContent.js +23 -3
  344. package/Source/Scene/View.js +10 -8
  345. package/Source/Scene/VoxelTraversal.js +1 -1
  346. package/Source/Scene/createElevationBandMaterial.js +1 -1
  347. package/Source/Scene/renderBufferPointCollection.js +1 -2
  348. package/Source/Scene/renderBufferPolygonCollection.js +1 -2
  349. package/Source/Scene/renderBufferPolylineCollection.js +1 -2
  350. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  351. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  352. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  353. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  354. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  355. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  356. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  357. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  358. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  359. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  360. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  361. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  362. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  363. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  364. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  365. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  366. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  367. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  368. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  369. package/Source/Shaders/GlobeFS.glsl +10 -5
  370. package/Source/Shaders/GlobeFS.js +9 -5
  371. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  372. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  373. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  374. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  375. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  376. package/Source/Shaders/Model/ModelFS.js +105 -0
  377. package/Source/Shaders/VectorCommon.glsl +178 -0
  378. package/Source/Shaders/VectorCommon.js +75 -0
  379. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  380. package/Source/ThirdParty/zip-module.wasm +0 -0
  381. package/Source/Widget/CesiumWidget.js +30 -0
  382. package/index.d.ts +770 -10
  383. package/index.js +177 -160
  384. package/package.json +1 -1
@@ -0,0 +1,429 @@
1
+ // @ts-check
2
+
3
+ import BufferPolygonCollection from "../Scene/BufferPolygonCollection.js";
4
+ import BufferPolylineCollection from "../Scene/BufferPolylineCollection.js";
5
+ import Rectangle from "./Rectangle.js";
6
+ import defined from "./defined.js";
7
+ import VectorPipeline from "./VectorPipeline.js";
8
+
9
+ /** @import BufferPrimitive from "../Scene/BufferPrimitive.js"; */
10
+ /** @import BufferPrimitiveCollection from "../Scene/BufferPrimitiveCollection.js"; */
11
+ /** @import Context from "../Renderer/Context.js"; */
12
+ /** @import Ellipsoid from "./Ellipsoid.js"; */
13
+ /** @import TilingScheme from "./TilingScheme.js"; */
14
+ /** @import { VectorCollectionData, VectorTileData } from "./VectorPipeline.js"; */
15
+
16
+ /** @ignore */
17
+ const scratchTileRectangle = new Rectangle();
18
+ const scratchCollectionRectangle = new Rectangle();
19
+ const scratchIntersectRectangle = new Rectangle();
20
+
21
+ /**
22
+ * Extracts a collection's snapshot of projected positions and per-primitive
23
+ * material properties.
24
+ *
25
+ * @callback PackCollectionData
26
+ * @param {*} collection
27
+ * @param {TilingScheme} tilingScheme
28
+ * @param {VectorCollectionData} [result]
29
+ * @returns {VectorCollectionData}
30
+ * @private
31
+ */
32
+
33
+ /**
34
+ * Packs a collection's primitives into a tile's vector data.
35
+ *
36
+ * @callback PackTilePrimitives
37
+ * @param {*} collection
38
+ * @param {VectorCollectionData} collectionData
39
+ * @param {Rectangle} rectangle
40
+ * @param {VectorTileData} result
41
+ * @returns {void}
42
+ * @private
43
+ */
44
+
45
+ /**
46
+ * Packing functions for a collection type.
47
+ *
48
+ * @typedef {object} CollectionPacker
49
+ * @property {PackCollectionData} packCollectionData Extracts the per-collection snapshot.
50
+ * @property {PackTilePrimitives} packTilePrimitives Packs the collection's primitives into a tile.
51
+ * @private
52
+ */
53
+
54
+ /**
55
+ * Per-type packing functions, keyed by collection class.
56
+ * @type {Map<Function, CollectionPacker>}
57
+ * @private
58
+ */
59
+ const collectionPackers = new Map();
60
+ collectionPackers.set(BufferPolylineCollection, {
61
+ packCollectionData: VectorPipeline.packPolylineCollectionData,
62
+ packTilePrimitives: VectorPipeline.packPolylineSegments,
63
+ });
64
+ collectionPackers.set(BufferPolygonCollection, {
65
+ packCollectionData: VectorPipeline.packPolygonCollectionData,
66
+ packTilePrimitives: VectorPipeline.packPolygonRings,
67
+ });
68
+
69
+ /**
70
+ * @typedef {object} VectorProviderConstructorOptions
71
+ * @property {TilingScheme} tilingScheme
72
+ * @private
73
+ */
74
+
75
+ /**
76
+ * @ignore
77
+ */
78
+ class VectorProvider {
79
+ /** @param {VectorProviderConstructorOptions} options */
80
+ constructor(options) {
81
+ /** @private */
82
+ this._tilingScheme = options.tilingScheme;
83
+
84
+ /**
85
+ * @type {Set<BufferPrimitiveCollection<BufferPrimitive>>}
86
+ * @private
87
+ */
88
+ this._collections = new Set();
89
+
90
+ /**
91
+ * Per-collection snapshot of projected positions and per-primitive
92
+ * material properties, keyed by collection version.
93
+ * @type {WeakMap<BufferPrimitiveCollection<BufferPrimitive>, VectorCollectionData>}
94
+ * @private
95
+ */
96
+ this._collectionDataCache = new WeakMap();
97
+
98
+ /**
99
+ * Collections marked selected this frame (only these are baked).
100
+ * @type {Set<BufferPrimitiveCollection<BufferPrimitive>>}
101
+ * @private
102
+ */
103
+ this._selectedThisFrame = new Set();
104
+
105
+ /**
106
+ * Collections added via markSelected (not add); only these are pruned.
107
+ * @type {Set<BufferPrimitiveCollection<BufferPrimitive>>}
108
+ * @private
109
+ */
110
+ this._selectionDriven = new Set();
111
+
112
+ /** @private */
113
+ this._selectionFrameNumber = -1;
114
+
115
+ /**
116
+ * Cartographic regions changed since the last
117
+ * {@link VectorProvider#makeClean}, so only overlapping terrain
118
+ * tiles are re-baked.
119
+ * @type {Rectangle[]}
120
+ * @private
121
+ */
122
+ this._dirtyRectangles = [];
123
+ }
124
+
125
+ /** @type {TilingScheme} */
126
+ get tilingScheme() {
127
+ return this._tilingScheme;
128
+ }
129
+
130
+ set tilingScheme(value) {
131
+ this._tilingScheme = value;
132
+ }
133
+
134
+ /** @type {Ellipsoid} */
135
+ get ellipsoid() {
136
+ return this._tilingScheme.ellipsoid;
137
+ }
138
+
139
+ /**
140
+ * @param {BufferPrimitiveCollection<BufferPrimitive>} collection
141
+ */
142
+ add(collection) {
143
+ const previousSize = this._collections.size;
144
+ this._collections.add(collection);
145
+ if (this._collections.size !== previousSize) {
146
+ this._markCollectionRegionDirty(collection);
147
+ }
148
+ }
149
+
150
+ /**
151
+ * @param {BufferPrimitiveCollection<BufferPrimitive>} collection
152
+ */
153
+ remove(collection) {
154
+ this._selectedThisFrame.delete(collection);
155
+ this._selectionDriven.delete(collection);
156
+ if (this._collections.delete(collection)) {
157
+ this._markCollectionRegionDirty(collection);
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Marks a collection as selected this frame so it is baked; collections not
163
+ * marked are pruned next frame, keeping the baked set aligned with the
164
+ * rendered LOD.
165
+ *
166
+ * @param {BufferPrimitiveCollection<BufferPrimitive>} collection
167
+ * @param {number} frameNumber
168
+ */
169
+ markSelected(collection, frameNumber) {
170
+ if (frameNumber !== this._selectionFrameNumber) {
171
+ this._commitSelectedFrame();
172
+ this._selectionFrameNumber = frameNumber;
173
+ }
174
+ this._selectedThisFrame.add(collection);
175
+ this._selectionDriven.add(collection);
176
+ const previousSize = this._collections.size;
177
+ this._collections.add(collection);
178
+ if (this._collections.size !== previousSize) {
179
+ this._markCollectionRegionDirty(collection);
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Prunes selection-driven collections not marked in the frame that just ended.
185
+ * @private
186
+ */
187
+ _commitSelectedFrame() {
188
+ for (const collection of this._selectionDriven) {
189
+ if (!this._selectedThisFrame.has(collection)) {
190
+ this._selectionDriven.delete(collection);
191
+ if (this._collections.delete(collection)) {
192
+ this._markCollectionRegionDirty(collection);
193
+ }
194
+ }
195
+ }
196
+ this._selectedThisFrame.clear();
197
+ }
198
+
199
+ /**
200
+ * Records a changed collection's region(s) so the next re-bake only touches
201
+ * overlapping tiles.
202
+ * @param {BufferPrimitiveCollection<BufferPrimitive>} collection
203
+ * @private
204
+ */
205
+ _markCollectionRegionDirty(collection) {
206
+ const collectionRectangle = Rectangle.fromBoundingSphere(
207
+ collection.boundingVolume,
208
+ this._tilingScheme.ellipsoid,
209
+ new Rectangle(),
210
+ );
211
+ this._dirtyRectangles.push(collectionRectangle);
212
+ }
213
+
214
+ /**
215
+ * @param {number} x
216
+ * @param {number} y
217
+ * @param {number} level
218
+ * @param {Context} context
219
+ * @returns {VectorTileData}
220
+ */
221
+ requestTileData(x, y, level, context) {
222
+ const tilingScheme = this._tilingScheme;
223
+ const tileRectangle = tilingScheme.tileXYToRectangle(x, y, level);
224
+
225
+ /** @type {VectorTileData} */
226
+ const result = { show: true };
227
+
228
+ for (const collection of this._collections) {
229
+ const packer = collectionPackers.get(collection.constructor);
230
+ if (!defined(packer)) {
231
+ continue;
232
+ }
233
+
234
+ const collectionRectangle = Rectangle.fromBoundingSphere(
235
+ collection.boundingVolume,
236
+ tilingScheme.ellipsoid,
237
+ scratchCollectionRectangle,
238
+ );
239
+
240
+ const isIntersected = !!Rectangle.intersection(
241
+ tileRectangle,
242
+ collectionRectangle,
243
+ scratchIntersectRectangle,
244
+ );
245
+
246
+ if (!isIntersected) {
247
+ continue;
248
+ }
249
+
250
+ const collectionData = this._getCollectionDataCached(
251
+ collection,
252
+ packer.packCollectionData,
253
+ );
254
+ packer.packTilePrimitives(
255
+ collection,
256
+ collectionData,
257
+ tileRectangle,
258
+ result,
259
+ );
260
+ }
261
+
262
+ const hasPolylines =
263
+ defined(result.polylineSegments) && result.polylineSegments.length > 0;
264
+ const hasPolygons =
265
+ defined(result.polygonRings) && result.polygonRings.length > 0;
266
+
267
+ if (!hasPolylines && !hasPolygons) {
268
+ result.show = false;
269
+ return result;
270
+ }
271
+
272
+ if (hasPolylines) {
273
+ VectorPipeline.packPolylineGrid(result);
274
+ VectorPipeline.packPolylineTextures(context, result);
275
+ }
276
+
277
+ if (hasPolygons) {
278
+ VectorPipeline.packPolygonGrid(result);
279
+ VectorPipeline.packPolygonTextures(context, result);
280
+ }
281
+
282
+ VectorPipeline.packPrimitiveTextures(context, result);
283
+
284
+ return result;
285
+ }
286
+
287
+ /**
288
+ * @param {VectorTileData} data
289
+ */
290
+ releaseTileData(data) {
291
+ VectorPipeline.freeResources(data);
292
+ }
293
+
294
+ /**
295
+ * Re-bakes a tile's vector data if the tile overlaps a region changed since
296
+ * the last {@link VectorProvider#makeClean}, releasing the previous data.
297
+ * Returns the current data unchanged when the tile is outside every changed
298
+ * region.
299
+ *
300
+ * @param {number} x
301
+ * @param {number} y
302
+ * @param {number} level
303
+ * @param {Context} context
304
+ * @param {VectorTileData|undefined} currentData
305
+ * @returns {VectorTileData|undefined}
306
+ */
307
+ updateTileData(x, y, level, context, currentData) {
308
+ const dirtyRectangles = this._dirtyRectangles;
309
+ const tilingScheme = this._tilingScheme;
310
+ if (!intersectRectangles(x, y, level, dirtyRectangles, tilingScheme)) {
311
+ return currentData;
312
+ }
313
+
314
+ if (defined(currentData)) {
315
+ this.releaseTileData(currentData);
316
+ }
317
+
318
+ return this.requestTileData(x, y, level, context);
319
+ }
320
+
321
+ /**
322
+ * Clears the regions recorded as changed. Call once after a re-bake pass has
323
+ * updated the overlapping tiles via {@link VectorProvider#updateTileData}.
324
+ */
325
+ makeClean() {
326
+ this._dirtyRectangles.length = 0;
327
+ }
328
+
329
+ /**
330
+ * Records dirty regions for collections whose content has changed since
331
+ * their last extraction, so overlapping tiles are re-baked. Call once per
332
+ * frame, before {@link VectorProvider#updateTileData}.
333
+ */
334
+ update() {
335
+ for (const collection of this._collections) {
336
+ const cache = this._collectionDataCache.get(collection);
337
+ if (!defined(cache)) {
338
+ // Never extracted; new tiles bake on request.
339
+ continue;
340
+ }
341
+ const changed =
342
+ collection._dirtyCount > 0 || cache.version !== collection._version;
343
+ if (!changed) {
344
+ continue;
345
+ }
346
+ // Re-bake both the previously baked region (content may have moved
347
+ // away from it) and the collection's current region.
348
+ if (defined(cache.rectangle)) {
349
+ this._dirtyRectangles.push(Rectangle.clone(cache.rectangle));
350
+ }
351
+ this._markCollectionRegionDirty(collection);
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Returns the collection's {@link VectorCollectionData} snapshot,
357
+ * re-extracted when the collection has changed. The collection is marked
358
+ * clean only after everything has been read back.
359
+ *
360
+ * @param {BufferPrimitiveCollection<BufferPrimitive>} collection
361
+ * @param {PackCollectionData} packCollectionData
362
+ * @returns {VectorCollectionData}
363
+ * @private
364
+ */
365
+ _getCollectionDataCached(collection, packCollectionData) {
366
+ const cache = this._collectionDataCache.get(collection);
367
+ const dirty = collection._dirtyCount > 0;
368
+ const outdated = cache?.version !== collection._version;
369
+
370
+ if (defined(cache) && !dirty && !outdated) {
371
+ return cache;
372
+ }
373
+
374
+ const data = packCollectionData(collection, this._tilingScheme, cache);
375
+
376
+ // If dirty, the version increments +1 when marked clean below.
377
+ data.version = collection._version + (dirty ? 1 : 0);
378
+ data.rectangle = Rectangle.fromBoundingSphere(
379
+ collection.boundingVolume,
380
+ this.ellipsoid,
381
+ data.rectangle,
382
+ );
383
+ this._collectionDataCache.set(collection, data);
384
+
385
+ collection._makeClean();
386
+
387
+ return data;
388
+ }
389
+ }
390
+
391
+ /**
392
+ * @param {number} x
393
+ * @param {number} y
394
+ * @param {number} level
395
+ * @param {Rectangle[]} rectangles
396
+ * @param {TilingScheme} tilingScheme
397
+ * @returns {boolean}
398
+ * @private
399
+ */
400
+ function intersectRectangles(x, y, level, rectangles, tilingScheme) {
401
+ // No dirty regions recorded — nothing to re-bake. A caller needing a full
402
+ // re-bake should record Rectangle.MAX_VALUE instead.
403
+ if (rectangles.length === 0) {
404
+ return false;
405
+ }
406
+
407
+ const tileRectangle = tilingScheme.tileXYToRectangle(
408
+ x,
409
+ y,
410
+ level,
411
+ scratchTileRectangle,
412
+ );
413
+
414
+ for (let i = 0; i < rectangles.length; i++) {
415
+ const isIntersected = Rectangle.intersection(
416
+ tileRectangle,
417
+ rectangles[i],
418
+ scratchIntersectRectangle,
419
+ );
420
+
421
+ if (isIntersected) {
422
+ return true;
423
+ }
424
+ }
425
+
426
+ return false;
427
+ }
428
+
429
+ export default VectorProvider;
@@ -419,7 +419,7 @@ WallOutlineGeometry.createGeometry = function (wallGeometry) {
419
419
  }
420
420
 
421
421
  indices[edgeIndex++] = numVertices - 2;
422
- indices[edgeIndex++] = numVertices - 1;
422
+ indices[edgeIndex] = numVertices - 1;
423
423
 
424
424
  return new Geometry({
425
425
  attributes: attributes,
@@ -1,11 +1,12 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * Gets a timestamp that can be used in measuring the time between events. Timestamps
3
5
  * are expressed in milliseconds, but it is not specified what the milliseconds are
4
6
  * measured from. This function uses performance.now() if it is available, or Date.now()
5
7
  * otherwise.
6
- *
8
+ * @type {Function}
7
9
  * @function getTimestamp
8
- *
9
10
  * @returns {number} The timestamp in milliseconds since some unspecified reference time.
10
11
  */
11
12
  let getTimestamp;
@@ -23,4 +24,5 @@ if (
23
24
  return Date.now();
24
25
  };
25
26
  }
27
+
26
28
  export default getTimestamp;
@@ -218,7 +218,6 @@ CompositeEntityCollection.prototype.addCollection = function (
218
218
  //>>includeEnd('debug');
219
219
 
220
220
  if (!hasIndex) {
221
- index = this._collections.length;
222
221
  this._collections.push(collection);
223
222
  } else {
224
223
  this._collections.splice(index, 0, collection);
@@ -497,6 +497,8 @@ function getPropertyType(czmlInterval) {
497
497
  return Object;
498
498
  } else if (czmlInterval.hasOwnProperty("unitQuaternion")) {
499
499
  return Quaternion;
500
+ } else if (czmlInterval.hasOwnProperty("pathMode")) {
501
+ return PathMode;
500
502
  } else if (czmlInterval.hasOwnProperty("shadowMode")) {
501
503
  return ShadowMode;
502
504
  } else if (czmlInterval.hasOwnProperty("string")) {
@@ -415,7 +415,7 @@ DataSourceDisplay.prototype.getBoundingSphere = function (
415
415
  const tmp = getBoundingSphereBoundingSphereScratch;
416
416
 
417
417
  let count = 0;
418
- let state = BoundingSphereState.DONE;
418
+ let state;
419
419
  const visualizers = dataSource._visualizers;
420
420
  const visualizersLength = visualizers.length;
421
421
 
@@ -149,7 +149,6 @@ function createObject(geoJson, entityCollection, describe) {
149
149
  const lowerKey = key.toLowerCase();
150
150
 
151
151
  if (namePropertyPrecedence > 1 && lowerKey === "title") {
152
- namePropertyPrecedence = 1;
153
152
  nameProperty = key;
154
153
  break;
155
154
  } else if (namePropertyPrecedence > 2 && lowerKey === "name") {
@@ -336,7 +336,7 @@ GeometryVisualizer.prototype.getBoundingSphere = function (entity, result) {
336
336
  const tmp = getBoundingSphereBoundingSphereScratch;
337
337
 
338
338
  let count = 0;
339
- let state = BoundingSphereState.DONE;
339
+ let state;
340
340
  const batches = this._batches;
341
341
  const batchesLength = batches.length;
342
342
 
@@ -1495,9 +1495,8 @@ function processPositionGraphics(
1495
1495
  billboard.image = undefined;
1496
1496
  }
1497
1497
 
1498
- let scale = 1.0;
1499
1498
  if (defined(billboard.scale)) {
1500
- scale = billboard.scale.getValue();
1499
+ const scale = billboard.scale.getValue();
1501
1500
  if (scale !== 0) {
1502
1501
  label.pixelOffset = new Cartesian2(scale * 16 + 1, 0);
1503
1502
  } else {
@@ -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);