@cesium/engine 26.1.0 → 26.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +764 -520
  2. package/Build/Workers/{chunk-HS6AD4P2.js → chunk-2DKJSPYF.js} +14 -14
  3. package/Build/Workers/{chunk-QVLAFFJY.js → chunk-2PWVICP6.js} +1 -1
  4. package/Build/Workers/{chunk-ILME5BXA.js → chunk-2YY724ZX.js} +8 -8
  5. package/Build/Workers/{chunk-ENNFMWDW.js → chunk-4DMAXPKB.js} +12 -12
  6. package/Build/Workers/{chunk-CDJDJ5LK.js → chunk-4LRFYRBX.js} +2 -2
  7. package/Build/Workers/{chunk-76FDC45O.js → chunk-5JCZHJUU.js} +13 -13
  8. package/Build/Workers/{chunk-5LSOO2KD.js → chunk-5KG7KDDW.js} +7 -7
  9. package/Build/Workers/{chunk-A6X24AZI.js → chunk-6BSNYZZG.js} +5 -5
  10. package/Build/Workers/{chunk-IGAZBTFZ.js → chunk-6R6SGKYN.js} +6 -6
  11. package/Build/Workers/{chunk-SS5ABQGY.js → chunk-6V2KDEHL.js} +4 -4
  12. package/Build/Workers/{chunk-ZMBHFYOX.js → chunk-75BC2IHI.js} +7 -7
  13. package/Build/Workers/{chunk-LGNDTZVX.js → chunk-7SESBH2I.js} +4 -4
  14. package/Build/Workers/{chunk-CLCTQVVL.js → chunk-7WXBTNRV.js} +8 -8
  15. package/Build/Workers/{chunk-WBSY7HDY.js → chunk-A7SMPV6B.js} +12 -12
  16. package/Build/Workers/{chunk-CEEZE3YZ.js → chunk-ATSXKJ3L.js} +7 -7
  17. package/Build/Workers/{chunk-AHWAZRBV.js → chunk-B4AVL7VI.js} +1 -1
  18. package/Build/Workers/{chunk-6HK6IXK2.js → chunk-B7Q2WF6Q.js} +4 -4
  19. package/Build/Workers/{chunk-YKU2Q3A2.js → chunk-BNDSDQ7D.js} +9 -12
  20. package/Build/Workers/{chunk-R4FPNAZ2.js → chunk-CKK6CUXK.js} +9 -9
  21. package/Build/Workers/{chunk-FCP2QY4G.js → chunk-COKOYTRS.js} +5 -5
  22. package/Build/Workers/{chunk-7D2HZKH7.js → chunk-CQ4TZXAT.js} +7 -7
  23. package/Build/Workers/{chunk-TVZD72WJ.js → chunk-DKSANM4A.js} +12 -12
  24. package/Build/Workers/{chunk-FDK4K5IA.js → chunk-DZK34ZVD.js} +1 -1
  25. package/Build/Workers/{chunk-N7CCOFLX.js → chunk-E7G32DWL.js} +1 -1
  26. package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-EDETO6NY.js} +2 -2
  27. package/Build/Workers/{chunk-2EFYUSUY.js → chunk-F34TJJLA.js} +16 -16
  28. package/Build/Workers/{chunk-GXWQZBAI.js → chunk-GLHDTTTO.js} +2 -2
  29. package/Build/Workers/{chunk-T5QBPLE3.js → chunk-GS7RY2DH.js} +11 -11
  30. package/Build/Workers/{chunk-C7JQVRLM.js → chunk-HDD3RFLT.js} +25 -3
  31. package/Build/Workers/{chunk-E7NZJOK7.js → chunk-HDPNFEPP.js} +121 -93
  32. package/Build/Workers/{chunk-VAL7DYNR.js → chunk-JBJ6BRIM.js} +4 -4
  33. package/Build/Workers/{chunk-XQ3SKCMM.js → chunk-JKTWW7IO.js} +5 -5
  34. package/Build/Workers/{chunk-UVO6COT2.js → chunk-JL4NWWQY.js} +5 -5
  35. package/Build/Workers/{chunk-DBD5WWG2.js → chunk-JMUUAW4X.js} +10 -10
  36. package/Build/Workers/{chunk-UEY73NRN.js → chunk-KBGAHN5R.js} +1 -1
  37. package/Build/Workers/{chunk-LD64RPYV.js → chunk-KEWK6VZL.js} +12 -12
  38. package/Build/Workers/{chunk-JW6OZT4R.js → chunk-L73K5UPP.js} +10 -10
  39. package/Build/Workers/{chunk-DIGUUD6G.js → chunk-LL2SGJYH.js} +6 -6
  40. package/Build/Workers/{chunk-XLXSDIP5.js → chunk-LYJUL4XQ.js} +6 -6
  41. package/Build/Workers/{chunk-SM2CDCYF.js → chunk-M6W46OAP.js} +7 -7
  42. package/Build/Workers/{chunk-EHTS2YPT.js → chunk-MDDKCLMF.js} +17 -17
  43. package/Build/Workers/{chunk-FGQFQHN5.js → chunk-MUW4DJV7.js} +18 -18
  44. package/Build/Workers/{chunk-HHV3MCGV.js → chunk-N5YK44FS.js} +5 -5
  45. package/Build/Workers/{chunk-RG4F5R57.js → chunk-NZQUP52G.js} +9 -9
  46. package/Build/Workers/{chunk-B4CQSLZJ.js → chunk-PKZA44LH.js} +6 -6
  47. package/Build/Workers/{chunk-OBEU25PI.js → chunk-Q2JS5LCB.js} +17 -17
  48. package/Build/Workers/{chunk-KGXSYGBG.js → chunk-QTAEVUED.js} +13 -13
  49. package/Build/Workers/{chunk-NIWITKQK.js → chunk-SEJIXZZ4.js} +11 -11
  50. package/Build/Workers/{chunk-SGRGNDOD.js → chunk-SL2HCFYW.js} +10 -10
  51. package/Build/Workers/{chunk-SF6K72D7.js → chunk-SLHK3KAR.js} +5 -5
  52. package/Build/Workers/{chunk-JKXV6PG5.js → chunk-UZY5XRL2.js} +1 -1
  53. package/Build/Workers/{chunk-LNSQVXFH.js → chunk-VRECSMG3.js} +2 -2
  54. package/Build/Workers/{chunk-A3O6EDBK.js → chunk-X27HKF5E.js} +2 -2
  55. package/Build/Workers/{chunk-7KVKHY7O.js → chunk-XBY3354M.js} +6 -6
  56. package/Build/Workers/{chunk-GSWMAFTE.js → chunk-XRZCS3HE.js} +23 -16
  57. package/Build/Workers/{chunk-6YR6JBMY.js → chunk-XSIUYAT6.js} +2 -2
  58. package/Build/Workers/{chunk-ZSGUV73H.js → chunk-Z2DW5NM2.js} +6 -6
  59. package/Build/Workers/combineGeometry.js +24 -24
  60. package/Build/Workers/createBoxGeometry.js +18 -18
  61. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  62. package/Build/Workers/createCircleGeometry.js +26 -26
  63. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  64. package/Build/Workers/createCoplanarPolygonGeometry.js +35 -35
  65. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  66. package/Build/Workers/createCorridorGeometry.js +31 -33
  67. package/Build/Workers/createCorridorOutlineGeometry.js +29 -31
  68. package/Build/Workers/createCylinderGeometry.js +20 -20
  69. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  70. package/Build/Workers/createEllipseGeometry.js +26 -26
  71. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  73. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  74. package/Build/Workers/createFrustumGeometry.js +18 -18
  75. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  76. package/Build/Workers/createGeometry.js +24 -24
  77. package/Build/Workers/createGroundPolylineGeometry.js +24 -24
  78. package/Build/Workers/createPlaneGeometry.js +16 -16
  79. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  80. package/Build/Workers/createPolygonGeometry.js +34 -34
  81. package/Build/Workers/createPolygonOutlineGeometry.js +31 -31
  82. package/Build/Workers/createPolylineGeometry.js +26 -26
  83. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  84. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  85. package/Build/Workers/createRectangleGeometry.js +27 -27
  86. package/Build/Workers/createRectangleOutlineGeometry.js +21 -21
  87. package/Build/Workers/createSimplePolylineGeometry.js +24 -24
  88. package/Build/Workers/createSphereGeometry.js +19 -19
  89. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  90. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  91. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  92. package/Build/Workers/createVectorTileGeometries.js +24 -24
  93. package/Build/Workers/createVectorTilePoints.js +13 -13
  94. package/Build/Workers/createVectorTilePolygons.js +22 -22
  95. package/Build/Workers/createVectorTilePolylines.js +14 -14
  96. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  97. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  98. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  99. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  100. package/Build/Workers/createWallGeometry.js +24 -24
  101. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  102. package/Build/Workers/decodeDraco.js +10 -10
  103. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  104. package/Build/Workers/decodeI3S.js +10 -10
  105. package/Build/Workers/gaussianSplatSorter.js +4 -4
  106. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  107. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  108. package/Build/Workers/transcodeKTX2.js +6 -6
  109. package/Build/Workers/transferTypedArrayTest.js +1 -1
  110. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  111. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  112. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  113. package/Source/Core/BoundingSphere.js +0 -3
  114. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  115. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  116. package/Source/Core/CorridorGeometry.js +2 -4
  117. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  118. package/Source/Core/EarthOrientationParameters.js +2 -2
  119. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  120. package/Source/Core/EllipsoidGeodesic.js +3 -3
  121. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  122. package/Source/Core/GroundPolylineGeometry.js +2 -2
  123. package/Source/Core/Heap.js +1 -1
  124. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  125. package/Source/Core/InterpolationAlgorithm.js +1 -0
  126. package/Source/Core/Ion.js +1 -1
  127. package/Source/Core/IonResource.js +5 -0
  128. package/Source/Core/IonSnapGeometryType.js +59 -0
  129. package/Source/Core/IonSnapHeat.js +33 -0
  130. package/Source/Core/IonSnapMode.js +45 -0
  131. package/Source/Core/IonSnapParentGeometryType.js +52 -0
  132. package/Source/Core/IonSnapService.js +369 -0
  133. package/Source/Core/JulianDate.js +1 -1
  134. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  135. package/Source/Core/LinearApproximation.js +69 -66
  136. package/Source/Core/Math.js +59 -0
  137. package/Source/Core/Matrix2.js +2 -2
  138. package/Source/Core/Matrix3.js +2 -2
  139. package/Source/Core/OrthographicFrustum.js +1 -1
  140. package/Source/Core/PerspectiveFrustum.js +1 -1
  141. package/Source/Core/PolygonGeometry.js +2 -2
  142. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  143. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  144. package/Source/Core/PolylineGeometry.js +1 -1
  145. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  146. package/Source/Core/Rectangle.js +7 -1
  147. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  148. package/Source/Core/SimplePolylineGeometry.js +1 -1
  149. package/Source/Core/SnapService.js +63 -0
  150. package/Source/Core/TerrainEncoding.js +2 -2
  151. package/Source/Core/TerrainPicker.js +179 -168
  152. package/Source/Core/TimeIntervalCollection.js +1 -3
  153. package/Source/Core/Tipsify.js +1 -1
  154. package/Source/Core/Transforms.js +5 -1
  155. package/Source/Core/VectorPipeline.js +1211 -0
  156. package/Source/Core/VectorProvider.js +669 -0
  157. package/Source/Core/WallOutlineGeometry.js +1 -1
  158. package/Source/Core/getTimestamp.js +4 -2
  159. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  160. package/Source/DataSources/CzmlDataSource.js +2 -0
  161. package/Source/DataSources/DataSourceDisplay.js +1 -1
  162. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  163. package/Source/DataSources/GeometryVisualizer.js +1 -1
  164. package/Source/DataSources/KmlDataSource.js +1 -2
  165. package/Source/DataSources/PolylineVisualizer.js +1 -1
  166. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  167. package/Source/Renderer/AutomaticUniforms.js +67 -2
  168. package/Source/Renderer/Context.js +9 -3
  169. package/Source/Renderer/DrawCommand.js +22 -0
  170. package/Source/Renderer/Framebuffer.js +4 -0
  171. package/Source/Renderer/Pass.js +11 -10
  172. package/Source/Renderer/ShaderBuilder.js +1 -1
  173. package/Source/Renderer/Texture.js +11 -0
  174. package/Source/Renderer/UniformState.js +54 -1
  175. package/Source/Renderer/VertexArray.js +0 -1
  176. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  177. package/Source/Scene/ArcGisMapService.js +1 -1
  178. package/Source/Scene/Billboard.js +2 -1
  179. package/Source/Scene/BillboardCollection.js +7 -3
  180. package/Source/Scene/BufferPointCollection.js +4 -7
  181. package/Source/Scene/BufferPolygonCollection.js +56 -27
  182. package/Source/Scene/BufferPolylineCollection.js +61 -8
  183. package/Source/Scene/BufferPolylineMaterial.js +6 -5
  184. package/Source/Scene/BufferPrimitiveCollection.js +226 -34
  185. package/Source/Scene/Camera.js +71 -5
  186. package/Source/Scene/Cesium3DTile.js +12 -0
  187. package/Source/Scene/Cesium3DTileset.js +62 -9
  188. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
  189. package/Source/Scene/Cesium3DTilesetCache.js +15 -0
  190. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  191. package/Source/Scene/ClippingPolygon.js +154 -100
  192. package/Source/Scene/ClippingPolygonCollection.js +352 -694
  193. package/Source/Scene/Controllers/Controller.js +63 -0
  194. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  195. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  196. package/Source/Scene/Controllers/MouseButton.js +32 -0
  197. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  198. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  199. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  200. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  201. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  202. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  203. package/Source/Scene/CreditDisplay.js +62 -0
  204. package/Source/Scene/DerivedCommand.js +94 -0
  205. package/Source/Scene/EdgeFramebuffer.js +1 -5
  206. package/Source/Scene/FrameState.js +17 -0
  207. package/Source/Scene/GeoJsonPrimitive.js +114 -24
  208. package/Source/Scene/Globe.js +20 -0
  209. package/Source/Scene/GlobeDepth.js +27 -1
  210. package/Source/Scene/GlobeSurfaceShaderSet.js +42 -53
  211. package/Source/Scene/GlobeSurfaceTile.js +61 -10
  212. package/Source/Scene/GlobeSurfaceTileProvider.js +351 -26
  213. package/Source/Scene/GltfLoader.js +88 -9
  214. package/Source/Scene/GltfSpzLoader.js +1 -1
  215. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  216. package/Source/Scene/HeightReference.js +1 -1
  217. package/Source/Scene/I3SDataProvider.js +1 -1
  218. package/Source/Scene/I3SLayer.js +1 -1
  219. package/Source/Scene/I3SNode.js +2 -2
  220. package/Source/Scene/ImageryLayerCollection.js +188 -4
  221. package/Source/Scene/IonImageryProvider.js +1 -5
  222. package/Source/Scene/Label.js +4 -4
  223. package/Source/Scene/LabelCollection.js +1 -1
  224. package/Source/Scene/MVTDataProvider.js +11 -0
  225. package/Source/Scene/Model/B3dmLoader.js +1 -2
  226. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +10 -8
  227. package/Source/Scene/Model/I3dmLoader.js +1 -1
  228. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  229. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  230. package/Source/Scene/Model/Model.js +250 -26
  231. package/Source/Scene/Model/Model3DTileContent.js +5 -0
  232. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  233. package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
  234. package/Source/Scene/Model/ModelDrawCommand.js +160 -16
  235. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  236. package/Source/Scene/Model/ModelRenderResources.js +2 -3
  237. package/Source/Scene/Model/ModelSceneGraph.js +31 -1
  238. package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
  239. package/Source/Scene/Model/PickingPipelineStage.js +33 -0
  240. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  241. package/Source/Scene/ModelComponents.js +71 -0
  242. package/Source/Scene/Picking.js +16 -5
  243. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  244. package/Source/Scene/PntsParser.js +0 -1
  245. package/Source/Scene/PolylineCollection.js +1 -1
  246. package/Source/Scene/PostProcessStage.js +26 -5
  247. package/Source/Scene/ResourceCache.js +7 -4
  248. package/Source/Scene/ResourceCacheKey.js +16 -13
  249. package/Source/Scene/Scene.js +258 -6
  250. package/Source/Scene/ScreenSpaceCameraController.js +1 -2
  251. package/Source/Scene/ShadowMap.js +9 -3
  252. package/Source/Scene/ShadowMapShader.js +50 -2
  253. package/Source/Scene/SnapFramebuffer.js +121 -0
  254. package/Source/Scene/Snapping.js +241 -0
  255. package/Source/Scene/TerrainFillMesh.js +3 -2
  256. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +13 -2
  257. package/Source/Scene/Vector3DTileContent.js +2 -3
  258. package/Source/Scene/VectorGltf3DTileContent.js +31 -3
  259. package/Source/Scene/View.js +10 -8
  260. package/Source/Scene/VoxelTraversal.js +1 -1
  261. package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
  262. package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
  263. package/Source/Scene/createElevationBandMaterial.js +1 -1
  264. package/Source/Scene/renderBufferPointCollection.js +1 -2
  265. package/Source/Scene/renderBufferPolygonCollection.js +1 -2
  266. package/Source/Scene/renderBufferPolylineCollection.js +6 -3
  267. package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
  268. package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
  269. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  270. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  271. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  272. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  273. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  274. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  275. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  276. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  277. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  278. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  279. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  280. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  281. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  282. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  283. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  284. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  285. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  286. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  287. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -4
  288. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
  289. package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
  290. package/Source/Shaders/GlobeFS.glsl +20 -14
  291. package/Source/Shaders/GlobeFS.js +20 -14
  292. package/Source/Shaders/GlobeVS.glsl +0 -32
  293. package/Source/Shaders/GlobeVS.js +0 -32
  294. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  295. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  296. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  297. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  298. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +15 -3
  299. package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +15 -3
  300. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +20 -24
  301. package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +20 -24
  302. package/Source/Shaders/Model/ModelFS.glsl +109 -0
  303. package/Source/Shaders/Model/ModelFS.js +109 -0
  304. package/Source/Shaders/Model/ModelVS.glsl +7 -2
  305. package/Source/Shaders/Model/ModelVS.js +7 -2
  306. package/Source/Shaders/Model/ModelVectorLookupStageFS.glsl +6 -0
  307. package/Source/Shaders/Model/ModelVectorLookupStageFS.js +8 -0
  308. package/Source/Shaders/Model/ModelVectorLookupStageVS.glsl +15 -0
  309. package/Source/Shaders/Model/ModelVectorLookupStageVS.js +17 -0
  310. package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +9 -10
  311. package/Source/Shaders/Model/VerticalExaggerationStageVS.js +9 -11
  312. package/Source/Shaders/VectorCommon.glsl +305 -0
  313. package/Source/Shaders/VectorCommon.js +307 -0
  314. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  315. package/Source/ThirdParty/zip-module.wasm +0 -0
  316. package/Source/Widget/CesiumWidget.js +30 -0
  317. package/index.d.ts +1326 -65
  318. package/index.js +179 -155
  319. package/package.json +6 -6
  320. package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +0 -37
  321. package/Source/Shaders/Builtin/Functions/clipPolygons.js +0 -39
  322. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +0 -14
  323. package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +0 -15
  324. package/Source/Shaders/PolygonSignedDistanceFS.glsl +0 -131
  325. package/Source/Shaders/PolygonSignedDistanceFS.js +0 -132
@@ -0,0 +1,205 @@
1
+ // @ts-check
2
+
3
+ import Cartesian2 from "../../Core/Cartesian2.js";
4
+ import combine from "../../Core/combine.js";
5
+ import CesiumMath from "../../Core/Math.js";
6
+ import ShaderDestination from "../../Renderer/ShaderDestination.js";
7
+ import VectorCommon from "../../Shaders/VectorCommon.js";
8
+ import ModelVectorLookupStageVS from "../../Shaders/Model/ModelVectorLookupStageVS.js";
9
+ import ModelVectorLookupStageFS from "../../Shaders/Model/ModelVectorLookupStageFS.js";
10
+
11
+ /** @import FrameState from "../FrameState.js"; */
12
+ /** @import Model from "./Model.js"; */
13
+ /** @import ModelRenderResources from "./ModelRenderResources.js"; */
14
+
15
+ /**
16
+ * The model vector lookup stage drapes vector data, baked into
17
+ * per-content lookup textures by the scene's VectorProvider, onto the model's
18
+ * surface.
19
+ *
20
+ * @namespace ModelVectorLookupPipelineStage
21
+ *
22
+ * @private
23
+ */
24
+ const ModelVectorLookupPipelineStage = {
25
+ name: "ModelVectorLookupPipelineStage", // Helps with debugging
26
+ process: process,
27
+ };
28
+
29
+ const scratchCameraUv = new Cartesian2();
30
+ const scratchRectangleInverseSize = new Cartesian2();
31
+
32
+ /**
33
+ * Processes a model with baked vector lookup data. This modifies the
34
+ * following parts of the render resources:
35
+ *
36
+ * <ul>
37
+ * <li>adds the HAS_VECTOR_LOOKUP define to both shaders</li>
38
+ * <li>adds a vertex shader function computing the vertex's UV within the baked rectangle</li>
39
+ * <li>adds the shared vector lookup functions and a compositing function to the fragment shader</li>
40
+ * <li>adds the uniforms for the baked rectangle and the lookup textures</li>
41
+ * </ul>
42
+ *
43
+ * @param {ModelRenderResources} renderResources The render resources for this model.
44
+ * @param {Model} model The model.
45
+ * @param {FrameState} frameState The frameState.
46
+ *
47
+ * @private
48
+ */
49
+ function process(renderResources, model, frameState) {
50
+ const shaderBuilder = renderResources.shaderBuilder;
51
+ const vectorData = model._vectorData;
52
+ const hasPolylines = vectorData.hasPolylines;
53
+ const hasPolygons = vectorData.hasPolygons;
54
+
55
+ shaderBuilder.addDefine(
56
+ "HAS_VECTOR_LOOKUP",
57
+ undefined,
58
+ ShaderDestination.BOTH,
59
+ );
60
+
61
+ if (hasPolylines) {
62
+ shaderBuilder.addDefine(
63
+ "HAS_VECTOR_POLYLINES",
64
+ undefined,
65
+ ShaderDestination.FRAGMENT,
66
+ );
67
+
68
+ if (vectorData.hasMeterWidths) {
69
+ shaderBuilder.addDefine(
70
+ "VECTOR_WIDTH_IN_METERS",
71
+ undefined,
72
+ ShaderDestination.FRAGMENT,
73
+ );
74
+ if (vectorData.hasPixelWidths) {
75
+ shaderBuilder.addDefine(
76
+ "VECTOR_WIDTH_MIXED_UNITS",
77
+ undefined,
78
+ ShaderDestination.FRAGMENT,
79
+ );
80
+ }
81
+ shaderBuilder.addUniform(
82
+ "vec2",
83
+ "u_vectorMetersPerUv",
84
+ ShaderDestination.FRAGMENT,
85
+ );
86
+ }
87
+ }
88
+
89
+ if (hasPolygons) {
90
+ shaderBuilder.addDefine(
91
+ "HAS_VECTOR_POLYGONS",
92
+ undefined,
93
+ ShaderDestination.FRAGMENT,
94
+ );
95
+ }
96
+
97
+ shaderBuilder.addUniform(
98
+ "vec2",
99
+ "u_vectorCameraUv",
100
+ ShaderDestination.VERTEX,
101
+ );
102
+ shaderBuilder.addUniform(
103
+ "vec2",
104
+ "u_vectorRectangleInverseSize",
105
+ ShaderDestination.VERTEX,
106
+ );
107
+
108
+ shaderBuilder.addVarying("vec2", "v_vectorUv");
109
+ shaderBuilder.addVertexLines(ModelVectorLookupStageVS);
110
+ // VectorCommon declares the lookup texture uniforms and sampling functions
111
+ // shared with the terrain path.
112
+ shaderBuilder.addFragmentLines(VectorCommon);
113
+ shaderBuilder.addFragmentLines(ModelVectorLookupStageFS);
114
+
115
+ // A re-bake replaces _vectorData, and its rectangle, without rebuilding draw
116
+ // commands, so the callbacks read the rectangle per call.
117
+ const buildRectangle = vectorData.rectangle;
118
+
119
+ const defaultTexture = function () {
120
+ return frameState.context.defaultTexture;
121
+ };
122
+
123
+ /** @type {Object<string, Function>} */
124
+ const uniformMap = {
125
+ // The UV coordinates of the camera within the baked rectangle.
126
+ u_vectorCameraUv: function () {
127
+ const rectangle = model._vectorData?.rectangle ?? buildRectangle;
128
+ const carto = frameState.camera.positionCartographic;
129
+
130
+ const halfWidth = rectangle.width * 0.5;
131
+ const centerLongitude = rectangle.west + halfWidth;
132
+ const longitudeOffset =
133
+ CesiumMath.negativePiToPi(carto.longitude - centerLongitude) +
134
+ halfWidth;
135
+ return Cartesian2.fromElements(
136
+ longitudeOffset / rectangle.width,
137
+ (carto.latitude - rectangle.south) / rectangle.height,
138
+ scratchCameraUv,
139
+ );
140
+ },
141
+ u_vectorRectangleInverseSize: function () {
142
+ const rectangle = model._vectorData?.rectangle ?? buildRectangle;
143
+ return Cartesian2.fromElements(
144
+ 1.0 / rectangle.width,
145
+ 1.0 / rectangle.height,
146
+ scratchRectangleInverseSize,
147
+ );
148
+ },
149
+ u_vectorColorTexture: function () {
150
+ return model._vectorData?.colorTexture ?? defaultTexture();
151
+ },
152
+ u_vectorPickColorTexture: function () {
153
+ return model._vectorData?.pickColorTexture ?? defaultTexture();
154
+ },
155
+ };
156
+
157
+ if (hasPolylines) {
158
+ uniformMap.u_vectorSegmentTexture = function () {
159
+ return model._vectorData?.polylineSegmentTexture ?? defaultTexture();
160
+ };
161
+ uniformMap.u_vectorWidthTexture = function () {
162
+ return model._vectorData?.widthTexture ?? defaultTexture();
163
+ };
164
+ uniformMap.u_vectorSegmentPrimitiveIndicesTexture = function () {
165
+ return (
166
+ model._vectorData?.polylineSegmentPrimitiveIndicesTexture ??
167
+ defaultTexture()
168
+ );
169
+ };
170
+ uniformMap.u_vectorGridCellIndicesTexture = function () {
171
+ return (
172
+ model._vectorData?.polylineGridCellIndicesTexture ?? defaultTexture()
173
+ );
174
+ };
175
+
176
+ if (vectorData.hasMeterWidths) {
177
+ uniformMap.u_vectorMetersPerUv = function () {
178
+ return model._vectorData.metersPerUv;
179
+ };
180
+ }
181
+ }
182
+
183
+ if (hasPolygons) {
184
+ uniformMap.u_vectorPolygonEdgeTexture = function () {
185
+ return model._vectorData?.polygonEdgeTexture ?? defaultTexture();
186
+ };
187
+ uniformMap.u_vectorPolygonEdgePrimitiveIndicesTexture = function () {
188
+ return (
189
+ model._vectorData?.polygonEdgePrimitiveIndicesTexture ??
190
+ defaultTexture()
191
+ );
192
+ };
193
+ uniformMap.u_vectorPolygonGridCellIndicesTexture = function () {
194
+ return (
195
+ model._vectorData?.polygonGridCellIndicesTexture ?? defaultTexture()
196
+ );
197
+ };
198
+ }
199
+
200
+ renderResources.uniformMap = /** @type {Object<string, Function>} */ (
201
+ combine(uniformMap, renderResources.uniformMap)
202
+ );
203
+ }
204
+
205
+ export default ModelVectorLookupPipelineStage;
@@ -17,6 +17,32 @@ const PickingPipelineStage = {
17
17
  name: "PickingPipelineStage", // Helps with debugging
18
18
  };
19
19
 
20
+ /**
21
+ * Builds the GLSL expression for the float snap payload written during a
22
+ * snapping pass (see {@link Scene#snap}), from the expression that evaluates
23
+ * to the primitive's RGBA8-normalized pick color.
24
+ *
25
+ * Channel layout (RGBA32F snap framebuffer):
26
+ * <ul>
27
+ * <li>R: pick ID, repacked from the RGBA8 pick color to a uint32 via
28
+ * <code>rgba8UnormToUint32</code> (injected by DerivedCommand.createSnapDerivedCommand).
29
+ * Implicitly cast to float32, which represents far more pick IDs than occur in practice.</li>
30
+ * <li>G: isEdge flag (0.0/1.0). <code>isEdge</code> is a ModelFS.glsl global, set by
31
+ * edge-pass fragments under <code>u_isEdgePass</code>.</li>
32
+ * <li>B: linear eye-space depth (<code>-v_positionEC.z</code>, meters). Eye space is
33
+ * global across multifrustum and independent of log-depth encoding.</li>
34
+ * <li>A: unused</li>
35
+ * </ul>
36
+ *
37
+ * @param {string} pickId The GLSL expression for the RGBA8 pick color.
38
+ * @returns {string} The GLSL expression for the snap payload.
39
+ *
40
+ * @private
41
+ */
42
+ function snapIdFromPickId(pickId) {
43
+ return `vec4(rgba8UnormToUint32(${pickId}), isEdge ? 1.0 : 0.0, -v_positionEC.z, 0.0)`;
44
+ }
45
+
20
46
  /**
21
47
  * Process a primitive. This modifies the following parts of the render resources:
22
48
  * <ul>
@@ -65,6 +91,11 @@ PickingPipelineStage.process = function (
65
91
  };
66
92
 
67
93
  renderResources.pickId = "czm_pickColor";
94
+ renderResources.snapId = snapIdFromPickId(renderResources.pickId);
95
+ }
96
+
97
+ if (!defined(model.classificationType) && model.hasDrapedVectors()) {
98
+ renderResources.pickId = `vectorPickColorOver(${renderResources.pickId})`;
68
99
  }
69
100
  };
70
101
 
@@ -157,6 +188,7 @@ function processPickTexture(renderResources, primitive, instances) {
157
188
  // The feature ID is ignored if it is greater than the number of features.
158
189
  renderResources.pickId =
159
190
  "((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))";
191
+ renderResources.snapId = snapIdFromPickId(renderResources.pickId);
160
192
  }
161
193
 
162
194
  function processInstancedPickIds(renderResources, context) {
@@ -213,6 +245,7 @@ function processInstancedPickIds(renderResources, context) {
213
245
  shaderBuilder.addAttribute("vec4", "a_pickColor");
214
246
  shaderBuilder.addVarying("vec4", "v_pickColor");
215
247
  renderResources.pickId = "v_pickColor";
248
+ renderResources.snapId = snapIdFromPickId(renderResources.pickId);
216
249
  }
217
250
 
218
251
  export default PickingPipelineStage;
@@ -133,6 +133,19 @@ function PrimitiveRenderResources(nodeRenderResources, runtimePrimitive) {
133
133
  */
134
134
  this.hasSkipLevelOfDetail = nodeRenderResources.hasSkipLevelOfDetail;
135
135
 
136
+ /**
137
+ * Whether this primitive writes its feature IDs to the planar fill ID
138
+ * texture in a pre-pass (BENTLEY_materials_planar_fill). Set by the
139
+ * material pipeline stage for non-behind planar fill primitives so that
140
+ * behind fills can test same-object coplanarity. This value indicates
141
+ * what draw commands are needed.
142
+ *
143
+ * @type {boolean}
144
+ *
145
+ * @private
146
+ */
147
+ this.planarFillIdPass = false;
148
+
136
149
  /**
137
150
  * An object used to build a shader incrementally. This is cloned from the
138
151
  * node render resources because each primitive can compute a different shader.
@@ -292,6 +305,17 @@ function PrimitiveRenderResources(nodeRenderResources, runtimePrimitive) {
292
305
  * @private
293
306
  */
294
307
  this.pickId = undefined;
308
+
309
+ /**
310
+ * The shader expression for the float snap payload written during a snapping
311
+ * pass (see Scene#snap). If picking is enabled, this value is set by
312
+ * PickingPipelineStage.
313
+ *
314
+ * @type {string|undefined}
315
+ *
316
+ * @private
317
+ */
318
+ this.snapId = undefined;
295
319
  }
296
320
 
297
321
  export default PrimitiveRenderResources;
@@ -1578,6 +1578,67 @@ export class LineStyle {
1578
1578
  pattern = undefined;
1579
1579
  }
1580
1580
 
1581
+ /**
1582
+ * Planar fill properties from the BENTLEY_materials_planar_fill extension.
1583
+ * Controls the rendering behavior of planar polygon fills for CAD-style visualization.
1584
+ *
1585
+ * @alias ModelComponents.PlanarFill
1586
+ * @constructor
1587
+ *
1588
+ * @private
1589
+ */
1590
+ export class PlanarFill {
1591
+ static DEFAULT_WIREFRAME_FILL = 0;
1592
+
1593
+ /**
1594
+ * @param {object} [planarFillInfo={}] The contents of the BENTLEY_materials_planar_fill extension in the parsed glTF JSON.
1595
+ * @param {number} [planarFillInfo.wireframeFill=0] Whether and when the interior fill is displayed in wireframe view mode.
1596
+ * @param {boolean} [planarFillInfo.backgroundFill=false] Whether the fill should be drawn using the view's background color.
1597
+ * @param {boolean} [planarFillInfo.behind=false] Whether the fill should be drawn behind other coplanar geometry of the same logical object.
1598
+ */
1599
+ constructor(planarFillInfo = {}) {
1600
+ const {
1601
+ wireframeFill = PlanarFill.DEFAULT_WIREFRAME_FILL,
1602
+ backgroundFill = false,
1603
+ behind = false,
1604
+ } = planarFillInfo;
1605
+
1606
+ /**
1607
+ * Specifies whether and when the interior fill is displayed in wireframe view mode.
1608
+ * 0 = NONE (never drawn), 1 = ALWAYS (always drawn), 2 = TOGGLE (drawn when fill display is enabled).
1609
+ *
1610
+ * NOTE: This property is currently a NO-OP. CesiumJS does not yet have a proper
1611
+ * wireframe rendering mode (debugWireframe is not a true wireframe mode). The
1612
+ * value is loaded and stored for completeness, but it has no effect on rendering.
1613
+ * This will be implemented when CesiumJS adds a proper wireframe view mode.
1614
+ * See https://github.com/CesiumGS/cesium/issues/13620.
1615
+ *
1616
+ * @type {number}
1617
+ * @default 0
1618
+ */
1619
+ this.wireframeFill = wireframeFill;
1620
+
1621
+ /**
1622
+ * If true, the fill should be drawn using the view's background color,
1623
+ * creating an invisible masking polygon.
1624
+ *
1625
+ * @type {boolean}
1626
+ * @default false
1627
+ */
1628
+ this.backgroundFill = backgroundFill;
1629
+
1630
+ /**
1631
+ * If true, the fill should be drawn behind other coplanar geometry
1632
+ * belonging to the same logical object, useful for mitigating z-fighting
1633
+ * with overlaid geometry such as hatch patterns or text.
1634
+ *
1635
+ * @type {boolean}
1636
+ * @default false
1637
+ */
1638
+ this.behind = behind;
1639
+ }
1640
+ }
1641
+
1581
1642
  /**
1582
1643
  * The material appearance of a primitive.
1583
1644
  *
@@ -1709,6 +1770,15 @@ export class Material {
1709
1770
  */
1710
1771
  this.pointDiameter = undefined;
1711
1772
 
1773
+ /**
1774
+ * Planar fill properties from the BENTLEY_materials_planar_fill extension.
1775
+ * Controls the rendering behavior of planar polygon fills for CAD-style visualization.
1776
+ *
1777
+ * @type {ModelComponents.PlanarFill}
1778
+ * @private
1779
+ */
1780
+ this.planarFill = undefined;
1781
+
1712
1782
  /**
1713
1783
  * Material properties for the BENTLEY_materials_line_style extension.
1714
1784
  *
@@ -1799,6 +1869,7 @@ ModelComponents.SpecularGlossiness = SpecularGlossiness;
1799
1869
  ModelComponents.Specular = Specular;
1800
1870
  ModelComponents.Anisotropy = Anisotropy;
1801
1871
  ModelComponents.Clearcoat = Clearcoat;
1872
+ ModelComponents.PlanarFill = PlanarFill;
1802
1873
  ModelComponents.LineStyle = LineStyle;
1803
1874
  ModelComponents.Material = Material;
1804
1875
  ModelComponents.Vector = Vector;
@@ -266,22 +266,31 @@ function computePickingDrawingBufferRectangle(
266
266
  /**
267
267
  * Setup needed before picking.
268
268
  *
269
+ * Exported for use by Snapping, which performs the same offscreen pick render
270
+ * but targets the snap framebuffer and flags the pass as a snapping pass.
271
+ *
269
272
  * @param {Scene} scene
270
273
  * @param {Cartesian2} windowPosition Window coordinates to perform picking on.
271
274
  * @param {BoundingRectangle} drawingBufferRectangle The output drawing buffer recangle.
272
275
  * @param {number} [width=3] Width of the pick rectangle.
273
276
  * @param {number} [height=3] Height of the pick rectangle.
274
- * @ignore
277
+ * @param {object} [options] Object with the following properties:
278
+ * @param {PickFramebuffer|SnapFramebuffer} [options.framebuffer] The framebuffer to render into. Defaults to the view's pick framebuffer.
279
+ * @param {boolean} [options.snap=false] If <code>true</code>, mark the pass as a snapping pass (sets <code>frameState.passes.snap</code>).
280
+ *
281
+ * @private
275
282
  */
276
- function pickBegin(
283
+ export function pickBegin(
277
284
  scene,
278
285
  windowPosition,
279
286
  drawingBufferRectangle,
280
287
  width,
281
288
  height,
289
+ options,
282
290
  ) {
283
291
  const { context, frameState, defaultView } = scene;
284
292
  const { viewport, pickFramebuffer } = defaultView;
293
+ const framebuffer = options?.framebuffer ?? pickFramebuffer;
285
294
 
286
295
  scene.view = defaultView;
287
296
 
@@ -318,13 +327,14 @@ function pickBegin(
318
327
  );
319
328
  frameState.invertClassification = false;
320
329
  frameState.passes.pick = true;
330
+ frameState.passes.snap = options?.snap ?? false;
321
331
  frameState.tilesetPassState = pickTilesetPassState;
322
332
 
323
333
  context.uniformState.update(frameState);
324
334
 
325
335
  scene.updateEnvironment();
326
336
 
327
- passState = pickFramebuffer.begin(drawingBufferRectangle, viewport);
337
+ passState = framebuffer.begin(drawingBufferRectangle, viewport);
328
338
 
329
339
  scene.updateAndExecuteCommands(passState, scratchColorZero);
330
340
  scene.resolveFramebuffers(passState);
@@ -334,9 +344,10 @@ function pickBegin(
334
344
  * Teardown needed after picking.
335
345
  *
336
346
  * @param {Scene} scene
337
- * @ignore
347
+ *
348
+ * @private
338
349
  */
339
- function pickEnd(scene) {
350
+ export function pickEnd(scene) {
340
351
  const { context } = scene;
341
352
  context.endFrame();
342
353
  }
@@ -0,0 +1,172 @@
1
+ import defined from "../Core/defined.js";
2
+ import destroyObject from "../Core/destroyObject.js";
3
+ import PixelFormat from "../Core/PixelFormat.js";
4
+ import Color from "../Core/Color.js";
5
+ import PixelDatatype from "../Renderer/PixelDatatype.js";
6
+ import FramebufferManager from "../Renderer/FramebufferManager.js";
7
+ import ClearCommand from "../Renderer/ClearCommand.js";
8
+
9
+ /**
10
+ * Creates and manages a framebuffer for the planar fill feature-ID pre-pass.
11
+ *
12
+ * During this pass, non-behind planar fill geometry writes its per-fragment
13
+ * feature ID into a screen-sized texture. Later, primitives with
14
+ * <code>behind: true</code> (BENTLEY_materials_planar_fill) sample this
15
+ * texture to check whether the pixel they are about to overwrite belongs to
16
+ * the same logical object (same feature ID). Only then do they apply an
17
+ * additional depth offset, pushing the fill behind its own object's edges
18
+ * and non-behind fills — but NOT behind other objects.
19
+ *
20
+ * Layout:
21
+ * Color attachment 0 – R32F (single RED channel): encoded feature ID.
22
+ * Depth-stencil attachment – shared with the main scene for correct depth testing.
23
+ *
24
+ * @alias PlanarFillIdFramebuffer
25
+ * @constructor
26
+ * @private
27
+ */
28
+ function PlanarFillIdFramebuffer() {
29
+ this._framebufferManager = new FramebufferManager({
30
+ colorAttachmentsLength: 1,
31
+ createColorAttachments: true,
32
+ depthStencil: true,
33
+ supportsDepthTexture: true,
34
+ color: true,
35
+ });
36
+
37
+ this._framebuffer = undefined;
38
+ this._idTexture = undefined;
39
+ this._depthStencilTexture = undefined;
40
+
41
+ this._clearCommand = new ClearCommand({
42
+ color: new Color(0.0, 0.0, 0.0, 0.0),
43
+ depth: 1.0,
44
+ stencil: 0,
45
+ owner: this,
46
+ });
47
+ }
48
+
49
+ Object.defineProperties(PlanarFillIdFramebuffer.prototype, {
50
+ /**
51
+ * Gets the underlying framebuffer.
52
+ * @memberof PlanarFillIdFramebuffer.prototype
53
+ * @type {Framebuffer}
54
+ * @readonly
55
+ */
56
+ framebuffer: {
57
+ get: function () {
58
+ return this._framebuffer;
59
+ },
60
+ },
61
+
62
+ /**
63
+ * Gets the feature-ID texture (color attachment 0).
64
+ * @memberof PlanarFillIdFramebuffer.prototype
65
+ * @type {Texture}
66
+ * @readonly
67
+ */
68
+ idTexture: {
69
+ get: function () {
70
+ return this._idTexture;
71
+ },
72
+ },
73
+
74
+ /**
75
+ * Gets the depth-stencil texture.
76
+ * @memberof PlanarFillIdFramebuffer.prototype
77
+ * @type {Texture}
78
+ * @readonly
79
+ */
80
+ depthStencilTexture: {
81
+ get: function () {
82
+ return this._depthStencilTexture;
83
+ },
84
+ },
85
+ });
86
+
87
+ /**
88
+ * Updates (creates / resizes) the framebuffer to match the viewport.
89
+ *
90
+ * @param {Context} context
91
+ * @param {BoundingRectangle} viewport
92
+ * @param {boolean} hdr
93
+ * @returns {boolean} <code>true</code> if the framebuffer was recreated.
94
+ */
95
+ PlanarFillIdFramebuffer.prototype.update = function (context, viewport, hdr) {
96
+ const width = viewport.width;
97
+ const height = viewport.height;
98
+
99
+ // Feature IDs are integers, so a 32-bit float channel provides plenty of range
100
+ // for feature IDs. A single RED channel (R32F) is used since only one value is
101
+ // stored per pixel. Rendering to R32F requires EXT_color_buffer_float, which is
102
+ // available in WebGL2 on all browsers CesiumJS supports; the UNSIGNED_BYTE fallback
103
+ // below only exists for stubbed WebGL contexts possibly used in tests.
104
+ const pixelDatatype = context.colorBufferFloat
105
+ ? PixelDatatype.FLOAT
106
+ : PixelDatatype.UNSIGNED_BYTE;
107
+
108
+ const changed = this._framebufferManager.update(
109
+ context,
110
+ width,
111
+ height,
112
+ 1, // no MSAA
113
+ pixelDatatype,
114
+ PixelFormat.RED,
115
+ );
116
+
117
+ if (this._framebufferManager.framebuffer) {
118
+ this._framebuffer = this._framebufferManager.framebuffer;
119
+ this._idTexture = this._framebufferManager.getColorTexture(0);
120
+ this._depthStencilTexture =
121
+ this._framebufferManager.getDepthStencilTexture();
122
+ }
123
+
124
+ return changed;
125
+ };
126
+
127
+ /**
128
+ * Returns a ClearCommand that targets this framebuffer.
129
+ *
130
+ * @param {Color} [clearColor] Override the clear color (default: transparent black).
131
+ * @returns {ClearCommand}
132
+ */
133
+ PlanarFillIdFramebuffer.prototype.getClearCommand = function (clearColor) {
134
+ this._clearCommand.framebuffer = this._framebuffer;
135
+ if (defined(clearColor)) {
136
+ Color.clone(clearColor, this._clearCommand.color);
137
+ }
138
+ return this._clearCommand;
139
+ };
140
+
141
+ /**
142
+ * Releases GPU resources without destroying this object; a later call to
143
+ * {@link PlanarFillIdFramebuffer#update} recreates them.
144
+ */
145
+ PlanarFillIdFramebuffer.prototype.releaseResources = function () {
146
+ if (!defined(this._framebuffer)) {
147
+ return;
148
+ }
149
+ this._framebufferManager.destroy();
150
+ this._framebuffer = undefined;
151
+ this._idTexture = undefined;
152
+ this._depthStencilTexture = undefined;
153
+ };
154
+
155
+ /**
156
+ * @returns {boolean}
157
+ */
158
+ PlanarFillIdFramebuffer.prototype.isDestroyed = function () {
159
+ return false;
160
+ };
161
+
162
+ /**
163
+ * Destroys WebGL resources.
164
+ */
165
+ PlanarFillIdFramebuffer.prototype.destroy = function () {
166
+ this._framebufferManager =
167
+ this._framebufferManager && this._framebufferManager.destroy();
168
+ this._clearCommand = undefined;
169
+ return destroyObject(this);
170
+ };
171
+
172
+ export default PlanarFillIdFramebuffer;
@@ -105,7 +105,6 @@ PntsParser.parse = function (arrayBuffer, byteOffset) {
105
105
  );
106
106
  // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed
107
107
  batchTableBinary = new Uint8Array(batchTableBinary);
108
- byteOffset += batchTableBinaryByteLength;
109
108
  }
110
109
  }
111
110
 
@@ -846,7 +846,7 @@ function createVertexArrays(collection, context, projection) {
846
846
 
847
847
  //stores all of the individual indices arrays.
848
848
  const totalIndices = [[]];
849
- let indices = totalIndices[0];
849
+ let indices;
850
850
 
851
851
  const batchTable = collection._batchTable;
852
852
  const useHighlightColor = collection._useHighlightColor;