@cesium/engine 24.0.0 → 25.0.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 (312) hide show
  1. package/Build/Workers/{chunk-NKT5K3K3.js → chunk-35H3UBIO.js} +13 -12
  2. package/Build/Workers/{chunk-5A2SW66E.js → chunk-3LSD7OOA.js} +16 -16
  3. package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-3RFFPH4M.js} +1 -1
  4. package/Build/Workers/{chunk-EDXL4W76.js → chunk-3TKLDHV3.js} +2 -2
  5. package/Build/Workers/{chunk-GQUNK2XC.js → chunk-3VDDRF2E.js} +14 -14
  6. package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-3XY3MVPG.js} +4 -4
  7. package/Build/Workers/{chunk-A47HVBC5.js → chunk-4GF4MVPY.js} +7 -7
  8. package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-4MTRQFJP.js} +3 -2
  9. package/Build/Workers/{chunk-N65BAKSH.js → chunk-4QQXGTCE.js} +8 -8
  10. package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-4XXHJI6Y.js} +17 -17
  11. package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-5T6QQAJW.js} +3 -2
  12. package/Build/Workers/{chunk-UIGVOKKI.js → chunk-6SDGQI27.js} +3 -2
  13. package/Build/Workers/{chunk-ILMFADZA.js → chunk-77RL3MBD.js} +6 -5
  14. package/Build/Workers/{chunk-2N4KDHS3.js → chunk-7LSFAEWF.js} +12 -11
  15. package/Build/Workers/{chunk-44EMEGKW.js → chunk-A7A433MD.js} +5 -5
  16. package/Build/Workers/{chunk-J6AW5YHS.js → chunk-A7ZBMVFS.js} +14 -14
  17. package/Build/Workers/{chunk-XJRBB253.js → chunk-ACFFCHHZ.js} +11 -11
  18. package/Build/Workers/{chunk-MKM27KGV.js → chunk-AEAVLYPS.js} +2 -2
  19. package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-AWFZHD2B.js} +4 -4
  20. package/Build/Workers/{chunk-UQU4RXLT.js → chunk-BTX2NL3P.js} +50 -45
  21. package/Build/Workers/{chunk-4TIG36AW.js → chunk-BVAIWR7O.js} +12 -12
  22. package/Build/Workers/chunk-CKQP3DSS.js +973 -0
  23. package/Build/Workers/{chunk-VLDEUTOP.js → chunk-CZ23Y3RM.js} +2 -2
  24. package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DFEI5MAV.js} +7 -7
  25. package/Build/Workers/{chunk-AJLTU6PF.js → chunk-DH26SNAB.js} +4 -1
  26. package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-DYT5NR6P.js} +3 -3
  27. package/Build/Workers/{chunk-63SIWPLS.js → chunk-EZARA5FJ.js} +13 -13
  28. package/Build/Workers/{chunk-AMIHNSST.js → chunk-FIBS5S7R.js} +2 -2
  29. package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-FVLVVOBQ.js} +10 -10
  30. package/Build/Workers/{chunk-XY6HMDGI.js → chunk-GL7DNVUS.js} +5 -5
  31. package/Build/Workers/{chunk-6WLHJFD3.js → chunk-GPIGURCG.js} +59 -32
  32. package/Build/Workers/{chunk-B6SCUUFP.js → chunk-H2A4USJR.js} +10 -10
  33. package/Build/Workers/chunk-HSVQATK2.js +147 -0
  34. package/Build/Workers/{chunk-72VYSVEW.js → chunk-HVMG6AG4.js} +11 -10
  35. package/Build/Workers/{chunk-LXMCPFFS.js → chunk-I3A6DXYZ.js} +4 -4
  36. package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-ITD2IN7N.js} +2 -2
  37. package/Build/Workers/{chunk-RQNJD3O4.js → chunk-J3OFS2RD.js} +12 -12
  38. package/Build/Workers/{chunk-C6P4IG5P.js → chunk-J647NNZW.js} +6 -6
  39. package/Build/Workers/{chunk-7X322WP2.js → chunk-J7KQEKPK.js} +13 -13
  40. package/Build/Workers/{chunk-7O5XJTVE.js → chunk-K6NFIRFB.js} +5 -5
  41. package/Build/Workers/{chunk-AF3MU2RL.js → chunk-LH5SF3XV.js} +7 -6
  42. package/Build/Workers/{chunk-GOQBUCXH.js → chunk-ND3NTTOF.js} +708 -430
  43. package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
  44. package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
  45. package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
  46. package/Build/Workers/{chunk-YAOZMOFL.js → chunk-ST2UWDUU.js} +5 -5
  47. package/Build/Workers/{chunk-PVV64VFW.js → chunk-TA777BGS.js} +3 -2
  48. package/Build/Workers/{chunk-ISY4EZCA.js → chunk-TAI4HLII.js} +4 -4
  49. package/Build/Workers/{chunk-JCI63T3K.js → chunk-URUCCIPS.js} +6 -6
  50. package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-VQKLRBIK.js} +7 -7
  51. package/Build/Workers/{chunk-6MPGQEHA.js → chunk-WC57YYBN.js} +2 -2
  52. package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-WN6P5UDH.js} +12 -12
  53. package/Build/Workers/{chunk-LIB2H534.js → chunk-WNN5D4W3.js} +12 -11
  54. package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-WTQGE7Q6.js} +17 -17
  55. package/Build/Workers/{chunk-YJZGW74L.js → chunk-WUBKZFF6.js} +2213 -1349
  56. package/Build/Workers/{chunk-7TYLCBGK.js → chunk-ZAPOS52G.js} +12 -10
  57. package/Build/Workers/{chunk-6RMS4S72.js → chunk-ZCCIIBZT.js} +6 -6
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +175 -118
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +24 -23
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  107. package/Build/Workers/transcodeKTX2.js +12 -9
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/ArcType.js +6 -1
  112. package/Source/Core/ArticulationStageType.js +5 -1
  113. package/Source/Core/AssociativeArray.js +100 -94
  114. package/Source/Core/BoundingSphere.js +1296 -1300
  115. package/Source/Core/Cartesian3.js +1 -2
  116. package/Source/Core/Cartographic.js +257 -249
  117. package/Source/Core/ClockRange.js +6 -1
  118. package/Source/Core/ClockStep.js +6 -1
  119. package/Source/Core/Color.js +844 -835
  120. package/Source/Core/ComponentDatatype.js +4 -1
  121. package/Source/Core/CornerType.js +6 -1
  122. package/Source/Core/Credit.js +121 -124
  123. package/Source/Core/Ellipsoid.js +637 -660
  124. package/Source/Core/ExtrapolationType.js +6 -1
  125. package/Source/Core/GeocodeType.js +6 -1
  126. package/Source/Core/GeographicProjection.js +74 -74
  127. package/Source/Core/GeographicTilingScheme.js +179 -198
  128. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  129. package/Source/Core/GeometryType.js +7 -1
  130. package/Source/Core/HeightmapEncoding.js +6 -1
  131. package/Source/Core/Iau2006XysData.js +24 -13
  132. package/Source/Core/IndexDatatype.js +3 -1
  133. package/Source/Core/InterpolationType.js +5 -1
  134. package/Source/Core/Intersect.js +6 -1
  135. package/Source/Core/Ion.js +1 -1
  136. package/Source/Core/IonGeocodeProviderType.js +5 -1
  137. package/Source/Core/JulianDate.js +850 -848
  138. package/Source/Core/KeyboardEventModifier.js +6 -1
  139. package/Source/Core/MapProjection.js +39 -44
  140. package/Source/Core/Matrix2.js +906 -893
  141. package/Source/Core/Matrix3.js +1643 -1575
  142. package/Source/Core/Matrix4.js +2903 -2872
  143. package/Source/Core/PixelFormat.js +3 -1
  144. package/Source/Core/PrimitiveType.js +11 -1
  145. package/Source/Core/Ray.js +62 -60
  146. package/Source/Core/Rectangle.js +913 -904
  147. package/Source/Core/ReferenceFrame.js +6 -1
  148. package/Source/Core/RequestScheduler.js +8 -3
  149. package/Source/Core/RequestState.js +6 -1
  150. package/Source/Core/RequestType.js +6 -1
  151. package/Source/Core/ScreenSpaceEventType.js +6 -1
  152. package/Source/Core/TerrainQuantization.js +6 -1
  153. package/Source/Core/TilingScheme.js +100 -98
  154. package/Source/Core/TimeConstants.js +6 -1
  155. package/Source/Core/TimeStandard.js +6 -1
  156. package/Source/Core/TrackingReferenceFrame.js +6 -1
  157. package/Source/Core/Visibility.js +6 -1
  158. package/Source/Core/VulkanConstants.js +6 -1
  159. package/Source/Core/WebGLConstants.js +6 -1
  160. package/Source/Core/WebMercatorProjection.js +108 -109
  161. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  162. package/Source/Core/WindingOrder.js +3 -1
  163. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
  164. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
  165. package/Source/DataSources/StripeOrientation.js +6 -1
  166. package/Source/Renderer/BufferUsage.js +20 -9
  167. package/Source/Renderer/Context.js +2 -29
  168. package/Source/Renderer/DrawCommand.js +435 -403
  169. package/Source/Renderer/MipmapHint.js +5 -1
  170. package/Source/Renderer/Pass.js +7 -1
  171. package/Source/Renderer/PickId.js +44 -0
  172. package/Source/Renderer/PixelDatatype.js +3 -1
  173. package/Source/Renderer/RenderbufferFormat.js +5 -1
  174. package/Source/Renderer/ShaderDestination.js +4 -1
  175. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  176. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  177. package/Source/Renderer/TextureWrap.js +5 -1
  178. package/Source/Scene/AlphaMode.js +5 -1
  179. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  180. package/Source/Scene/ArcGisMapService.js +1 -1
  181. package/Source/Scene/AttributeType.js +3 -1
  182. package/Source/Scene/Axis.js +3 -1
  183. package/Source/Scene/BingMapsStyle.js +6 -1
  184. package/Source/Scene/BlendEquation.js +6 -1
  185. package/Source/Scene/BlendFunction.js +6 -1
  186. package/Source/Scene/BlendOption.js +6 -1
  187. package/Source/Scene/BlendingState.js +6 -1
  188. package/Source/Scene/BufferLoader.js +0 -2
  189. package/Source/Scene/BufferPointCollection.js +4 -1
  190. package/Source/Scene/BufferPolygonCollection.js +3 -1
  191. package/Source/Scene/BufferPolylineCollection.js +3 -1
  192. package/Source/Scene/BufferPrimitiveCollection.js +140 -24
  193. package/Source/Scene/CameraEventType.js +6 -1
  194. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  195. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  196. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  197. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  198. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  199. package/Source/Scene/Cesium3DTilePass.js +5 -1
  200. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  201. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  202. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  203. package/Source/Scene/Cesium3DTileset.js +1 -1
  204. package/Source/Scene/ClassificationType.js +3 -1
  205. package/Source/Scene/CloudType.js +3 -1
  206. package/Source/Scene/ColorBlendMode.js +4 -1
  207. package/Source/Scene/CullFace.js +6 -1
  208. package/Source/Scene/DepthFunction.js +6 -1
  209. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  210. package/Source/Scene/EquirectangularPanorama.js +1 -0
  211. package/Source/Scene/ExpressionNodeType.js +6 -1
  212. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  213. package/Source/Scene/GltfDracoLoader.js +0 -2
  214. package/Source/Scene/GltfImageLoader.js +0 -3
  215. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  216. package/Source/Scene/GltfJsonLoader.js +0 -2
  217. package/Source/Scene/GltfLoader.js +0 -5
  218. package/Source/Scene/GltfLoaderUtil.js +14 -0
  219. package/Source/Scene/GltfSpzLoader.js +0 -2
  220. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  221. package/Source/Scene/GltfTextureLoader.js +0 -2
  222. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  223. package/Source/Scene/HeightReference.js +5 -1
  224. package/Source/Scene/HorizontalOrigin.js +6 -1
  225. package/Source/Scene/ImageryProvider.js +1 -1
  226. package/Source/Scene/ImageryState.js +6 -1
  227. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  228. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  229. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  230. package/Source/Scene/JobType.js +6 -1
  231. package/Source/Scene/LabelStyle.js +6 -1
  232. package/Source/Scene/MapMode2D.js +6 -1
  233. package/Source/Scene/MetadataComponentType.js +3 -1
  234. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  235. package/Source/Scene/MetadataSemantic.js +6 -2
  236. package/Source/Scene/MetadataType.js +3 -1
  237. package/Source/Scene/Model/B3dmLoader.js +0 -3
  238. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  239. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  240. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +44 -71
  241. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  242. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  243. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  244. package/Source/Scene/Model/I3dmLoader.js +0 -3
  245. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  246. package/Source/Scene/Model/LightingModel.js +5 -1
  247. package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
  248. package/Source/Scene/Model/ModelReader.js +474 -3
  249. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  250. package/Source/Scene/Model/ModelType.js +3 -1
  251. package/Source/Scene/Model/PntsLoader.js +4 -3
  252. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  253. package/Source/Scene/Model/UniformType.js +5 -1
  254. package/Source/Scene/Model/VaryingType.js +5 -1
  255. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +73 -28
  256. package/Source/Scene/Model/pickModel.js +94 -299
  257. package/Source/Scene/ModelAnimationLoop.js +6 -1
  258. package/Source/Scene/ModelAnimationState.js +6 -1
  259. package/Source/Scene/ModelComponents.js +8 -1
  260. package/Source/Scene/PrimitiveState.js +7 -1
  261. package/Source/Scene/QuadtreeOccluders.js +20 -15
  262. package/Source/Scene/QuadtreeTile.js +547 -541
  263. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  264. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  265. package/Source/Scene/ResourceLoader.js +0 -1
  266. package/Source/Scene/ResourceLoaderState.js +7 -1
  267. package/Source/Scene/SceneMode.js +4 -1
  268. package/Source/Scene/ShadowMode.js +3 -1
  269. package/Source/Scene/SkyBox.js +1 -1
  270. package/Source/Scene/SplitDirection.js +6 -1
  271. package/Source/Scene/StencilFunction.js +6 -1
  272. package/Source/Scene/StencilOperation.js +6 -1
  273. package/Source/Scene/TerrainState.js +7 -1
  274. package/Source/Scene/TileState.js +7 -1
  275. package/Source/Scene/Tonemapper.js +5 -1
  276. package/Source/Scene/VectorGltf3DTileContent.js +72 -51
  277. package/Source/Scene/VertexAttributeSemantic.js +3 -1
  278. package/Source/Scene/VerticalOrigin.js +6 -1
  279. package/Source/Scene/VoxelBoxShape.js +12 -6
  280. package/Source/Scene/VoxelContent.js +2 -0
  281. package/Source/Scene/VoxelCylinderShape.js +39 -38
  282. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  283. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  284. package/Source/Scene/VoxelProvider.js +1 -0
  285. package/Source/Scene/VoxelShapeType.js +3 -1
  286. package/Source/Scene/renderBufferPointCollection.js +17 -66
  287. package/Source/Scene/renderBufferPolygonCollection.js +21 -68
  288. package/Source/Scene/renderBufferPolylineCollection.js +22 -73
  289. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  290. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  291. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  292. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  293. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  294. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  295. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  296. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  297. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  298. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  299. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  300. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  301. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  302. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  303. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  304. package/Source/Widget/CesiumWidget.js +11 -4
  305. package/index.d.ts +343 -309
  306. package/index.js +443 -438
  307. package/package.json +2 -2
  308. package/Build/Workers/chunk-DVB56LG7.js +0 -114
  309. package/Build/Workers/chunk-HKUES6UG.js +0 -2357
  310. package/Build/Workers/chunk-HRHRYFHS.js +0 -940
  311. package/Build/Workers/chunk-KLPGTXS3.js +0 -642
  312. package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
@@ -67,6 +67,14 @@ function VoxelEllipsoidShape() {
67
67
  */
68
68
  this._rotation = new Matrix3();
69
69
 
70
+ /**
71
+ * UV space transformation translations (JS-only, not shader uniforms)
72
+ * Components: [longitude, latitude, height] translation
73
+ * @type {Cartesian3}
74
+ * @private
75
+ */
76
+ this._localToShapeUvTranslate = new Cartesian3();
77
+
70
78
  this._shaderUniforms = {
71
79
  cameraPositionCartographic: new Cartesian3(),
72
80
  ellipsoidEcToEastNorthUp: new Matrix3(),
@@ -78,10 +86,8 @@ function VoxelEllipsoidShape() {
78
86
  ellipsoidRenderLongitudeMinMax: new Cartesian2(),
79
87
  ellipsoidShapeUvLongitudeRangeOrigin: 0.0,
80
88
  ellipsoidShapeUvLongitudeMinMaxMid: new Cartesian3(),
81
- ellipsoidLocalToShapeUvLongitude: new Cartesian2(),
82
- ellipsoidLocalToShapeUvLatitude: new Cartesian2(),
89
+ ellipsoidLocalToShapeUvScale: new Cartesian3(),
83
90
  ellipsoidRenderLatitudeSinMinMax: new Cartesian2(),
84
- ellipsoidInverseHeightDifference: 0.0,
85
91
  clipMinMaxHeight: new Cartesian2(),
86
92
  };
87
93
 
@@ -90,10 +96,7 @@ function VoxelEllipsoidShape() {
90
96
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO: undefined,
91
97
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF: undefined,
92
98
  ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF: undefined,
93
- ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY: undefined,
94
- ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY: undefined,
95
99
  ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE: undefined,
96
- ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED: undefined,
97
100
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF: undefined,
98
101
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF: undefined,
99
102
  ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF: undefined,
@@ -245,7 +248,6 @@ VoxelEllipsoidShape.prototype.update = function (
245
248
  //>>includeEnd('debug');
246
249
 
247
250
  const epsilonZeroScale = CesiumMath.EPSILON10;
248
- const epsilonLongitudeDiscontinuity = CesiumMath.EPSILON3; // 0.001 radians = 0.05729578 degrees
249
251
  const epsilonLongitude = CesiumMath.EPSILON10;
250
252
  const epsilonLatitude = CesiumMath.EPSILON10;
251
253
  const epsilonLatitudeFlat = CesiumMath.EPSILON3; // 0.001 radians = 0.05729578 degrees
@@ -519,10 +521,7 @@ VoxelEllipsoidShape.prototype.update = function (
519
521
 
520
522
  // The percent of space that is between the inner and outer ellipsoid.
521
523
  const thickness = shapeMaxBounds.z - shapeMinBounds.z;
522
- shaderUniforms.ellipsoidInverseHeightDifference = 1.0 / thickness;
523
- if (shapeMinBounds.z === shapeMaxBounds.z) {
524
- shaderUniforms.ellipsoidInverseHeightDifference = 0.0;
525
- }
524
+ const heightScale = thickness === 0.0 ? 0.0 : 1.0 / thickness;
526
525
 
527
526
  // Intersects a wedge for the min and max longitude.
528
527
  if (renderHasLongitude) {
@@ -550,6 +549,10 @@ VoxelEllipsoidShape.prototype.update = function (
550
549
  );
551
550
  }
552
551
 
552
+ // Defaults are for the case where shapeLongitudeRange is zero, to avoid division by zero.
553
+ let longitudeScale = 0.0;
554
+ let longitudeOffset = 1.0;
555
+
553
556
  if (shapeHasLongitude) {
554
557
  shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE"] = true;
555
558
 
@@ -565,73 +568,15 @@ VoxelEllipsoidShape.prototype.update = function (
565
568
  shaderUniforms.ellipsoidShapeUvLongitudeRangeOrigin =
566
569
  uvLongitudeRangeOrigin;
567
570
 
568
- const shapeIsLongitudeReversed = shapeMaxBounds.x < shapeMinBounds.x;
569
- if (shapeIsLongitudeReversed) {
570
- shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED"] =
571
- true;
572
- }
573
-
574
- if (shapeLongitudeRange <= epsilonLongitude) {
575
- shaderUniforms.ellipsoidLocalToShapeUvLongitude = Cartesian2.fromElements(
576
- 0.0,
577
- 1.0,
578
- shaderUniforms.ellipsoidLocalToShapeUvLongitude,
579
- );
580
- } else {
581
- const scale = defaultLongitudeRange / shapeLongitudeRange;
571
+ if (shapeLongitudeRange > epsilonLongitude) {
572
+ longitudeScale = defaultLongitudeRange / shapeLongitudeRange;
582
573
  const shiftedMinLongitude = uvShapeMinLongitude - uvLongitudeRangeOrigin;
583
- const offset =
584
- -scale * (shiftedMinLongitude - Math.floor(shiftedMinLongitude));
585
- shaderUniforms.ellipsoidLocalToShapeUvLongitude = Cartesian2.fromElements(
586
- scale,
587
- offset,
588
- shaderUniforms.ellipsoidLocalToShapeUvLongitude,
589
- );
574
+ longitudeOffset =
575
+ -longitudeScale *
576
+ (shiftedMinLongitude - Math.floor(shiftedMinLongitude));
590
577
  }
591
578
  }
592
579
 
593
- if (renderHasLongitude) {
594
- const renderIsMinLongitudeDiscontinuity = CesiumMath.equalsEpsilon(
595
- renderMinBounds.x,
596
- DefaultMinBounds.x,
597
- undefined,
598
- epsilonLongitudeDiscontinuity,
599
- );
600
- const renderIsMaxLongitudeDiscontinuity = CesiumMath.equalsEpsilon(
601
- renderMaxBounds.x,
602
- DefaultMaxBounds.x,
603
- undefined,
604
- epsilonLongitudeDiscontinuity,
605
- );
606
-
607
- if (renderIsMinLongitudeDiscontinuity) {
608
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY"] =
609
- true;
610
- }
611
- if (renderIsMaxLongitudeDiscontinuity) {
612
- shaderDefines["ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY"] =
613
- true;
614
- }
615
- const uvShapeMinLongitude =
616
- (shapeMinBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
617
- const uvShapeMaxLongitude =
618
- (shapeMaxBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
619
-
620
- const uvRenderMaxLongitude =
621
- (renderMaxBounds.x - DefaultMinBounds.x) / defaultLongitudeRange;
622
- const uvRenderLongitudeRangeZero =
623
- 1.0 - renderLongitudeRange / defaultLongitudeRange;
624
- const uvRenderLongitudeRangeZeroMid =
625
- (uvRenderMaxLongitude + 0.5 * uvRenderLongitudeRangeZero) % 1.0;
626
-
627
- shaderUniforms.ellipsoidShapeUvLongitudeMinMaxMid = Cartesian3.fromElements(
628
- uvShapeMinLongitude,
629
- uvShapeMaxLongitude,
630
- uvRenderLongitudeRangeZeroMid,
631
- shaderUniforms.ellipsoidShapeUvLongitudeMinMaxMid,
632
- );
633
- }
634
-
635
580
  if (renderHasLatitude) {
636
581
  // Intersects a cone for min latitude
637
582
  if (renderHasLatitudeMin) {
@@ -682,28 +627,36 @@ VoxelEllipsoidShape.prototype.update = function (
682
627
  );
683
628
  }
684
629
 
630
+ // Defaults are for the case where shapeLatitudeRange is zero, to avoid division by zero.
631
+ let latitudeScale = 0.0;
632
+ let latitudeOffset = 1.0;
633
+
685
634
  if (shapeHasLatitude) {
686
635
  shaderDefines["ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE"] = true;
687
636
 
688
- if (shapeLatitudeRange < epsilonLatitude) {
689
- shaderUniforms.ellipsoidLocalToShapeUvLatitude = Cartesian2.fromElements(
690
- 0.0,
691
- 1.0,
692
- shaderUniforms.ellipsoidLocalToShapeUvLatitude,
693
- );
694
- } else {
637
+ if (shapeLatitudeRange > epsilonLatitude) {
695
638
  const defaultLatitudeRange = DefaultMaxBounds.y - DefaultMinBounds.y;
696
- const scale = defaultLatitudeRange / shapeLatitudeRange;
697
- const offset =
639
+ latitudeScale = defaultLatitudeRange / shapeLatitudeRange;
640
+ latitudeOffset =
698
641
  (DefaultMinBounds.y - shapeMinBounds.y) / shapeLatitudeRange;
699
- shaderUniforms.ellipsoidLocalToShapeUvLatitude = Cartesian2.fromElements(
700
- scale,
701
- offset,
702
- shaderUniforms.ellipsoidLocalToShapeUvLatitude,
703
- );
704
642
  }
705
643
  }
706
644
 
645
+ // Store scales in shader uniforms (GPU) and translates in private property (JS-only)
646
+ shaderUniforms.ellipsoidLocalToShapeUvScale = Cartesian3.fromElements(
647
+ longitudeScale,
648
+ latitudeScale,
649
+ heightScale,
650
+ shaderUniforms.ellipsoidLocalToShapeUvScale,
651
+ );
652
+
653
+ this._localToShapeUvTranslate = Cartesian3.fromElements(
654
+ longitudeOffset,
655
+ latitudeOffset,
656
+ 0.0, // Height translate not used (always 1.0 + height * scale)
657
+ this._localToShapeUvTranslate,
658
+ );
659
+
707
660
  this._shaderMaximumIntersectionsLength = intersectionCount;
708
661
 
709
662
  return true;
@@ -943,11 +896,10 @@ VoxelEllipsoidShape.prototype.convertLocalToShapeUvSpace = function (
943
896
  ellipsoidRadii,
944
897
  evoluteScale,
945
898
  ellipsoidInverseRadiiSquared,
946
- ellipsoidInverseHeightDifference,
947
899
  ellipsoidShapeUvLongitudeRangeOrigin,
948
- ellipsoidLocalToShapeUvLongitude,
949
- ellipsoidLocalToShapeUvLatitude,
900
+ ellipsoidLocalToShapeUvScale,
950
901
  } = this._shaderUniforms;
902
+ const localToShapeUvTranslate = this._localToShapeUvTranslate;
951
903
 
952
904
  const distanceFromZAxis = Math.hypot(positionLocal.x, positionLocal.y);
953
905
  const posEllipse = Cartesian2.fromElements(
@@ -999,19 +951,17 @@ VoxelEllipsoidShape.prototype.convertLocalToShapeUvSpace = function (
999
951
  longitude = longitude - Math.floor(longitude);
1000
952
  // Scale and shift so [0, 1] covers the occupied space.
1001
953
  longitude =
1002
- longitude * ellipsoidLocalToShapeUvLongitude.x +
1003
- ellipsoidLocalToShapeUvLongitude.y;
954
+ longitude * ellipsoidLocalToShapeUvScale.x + localToShapeUvTranslate.x;
1004
955
  }
1005
956
 
1006
957
  latitude = (latitude + Math.PI / 2.0) / Math.PI;
1007
958
  if (defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)) {
1008
959
  // Scale and shift so [0, 1] covers the occupied space.
1009
960
  latitude =
1010
- latitude * ellipsoidLocalToShapeUvLatitude.x +
1011
- ellipsoidLocalToShapeUvLatitude.y;
961
+ latitude * ellipsoidLocalToShapeUvScale.y + localToShapeUvTranslate.y;
1012
962
  }
1013
963
 
1014
- height = 1.0 + height * ellipsoidInverseHeightDifference;
964
+ height = 1.0 + height * ellipsoidLocalToShapeUvScale.z;
1015
965
 
1016
966
  return Cartesian3.fromElements(longitude, latitude, height, result);
1017
967
  };
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * Metadata ordering for voxel content.
3
5
  * In all cases, x data is contiguous in strides along the y axis,
@@ -21,4 +23,7 @@ const VoxelMetadataOrder = {
21
23
  */
22
24
  Y_UP: 1,
23
25
  };
24
- export default Object.freeze(VoxelMetadataOrder);
26
+
27
+ Object.freeze(VoxelMetadataOrder);
28
+
29
+ export default VoxelMetadataOrder;
@@ -183,6 +183,7 @@ Object.defineProperties(VoxelProvider.prototype, {
183
183
  /**
184
184
  * The number of levels of detail containing available tiles in the tileset.
185
185
  *
186
+ * @memberof VoxelProvider.prototype
186
187
  * @type {number|undefined}
187
188
  * @readonly
188
189
  */
@@ -102,4 +102,6 @@ VoxelShapeType.getShapeConstructor = function (shapeType) {
102
102
  }
103
103
  };
104
104
 
105
- export default Object.freeze(VoxelShapeType);
105
+ Object.freeze(VoxelShapeType);
106
+
107
+ export default VoxelShapeType;
@@ -19,13 +19,11 @@ import BufferPointMaterialVS from "../Shaders/BufferPointMaterialVS.js";
19
19
  import BufferPointMaterialFS from "../Shaders/BufferPointMaterialFS.js";
20
20
  import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
21
21
  import AttributeCompression from "../Core/AttributeCompression.js";
22
- import Matrix4 from "../Core/Matrix4.js";
23
- import BoundingSphere from "../Core/BoundingSphere.js";
24
22
  import BufferPointMaterial from "./BufferPointMaterial.js";
25
23
 
26
24
  /** @import FrameState from "./FrameState.js"; */
27
25
  /** @import BufferPointCollection from "./BufferPointCollection.js"; */
28
- /** @import {Destroyable, TypedArray} from "../Core/globalTypes.js"; */
26
+ /** @import {TypedArray} from "../Core/globalTypes.js"; */
29
27
 
30
28
  /**
31
29
  * TODO(PR#13211): Need 'keyof' syntax to avoid duplicating attribute names.
@@ -52,7 +50,6 @@ const BufferPointAttributeLocations = {
52
50
  * @property {RenderState} [renderState]
53
51
  * @property {ShaderProgram} [shaderProgram]
54
52
  * @property {DrawCommand} [command]
55
- * @property {Destroyable[]} [pickIds] Unordered list of collection PickIds.
56
53
  * @property {Function} destroy
57
54
  * @ignore
58
55
  */
@@ -87,12 +84,8 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
87
84
  };
88
85
  }
89
86
 
90
- if (!defined(renderContext.pickIds)) {
91
- renderContext.pickIds = [];
92
- }
93
-
94
87
  if (collection._dirtyCount > 0) {
95
- const { attributeArrays, pickIds } = renderContext;
88
+ const { attributeArrays } = renderContext;
96
89
 
97
90
  const positionHighArray = attributeArrays.positionHigh;
98
91
  const positionLowArray = attributeArrays.positionLow;
@@ -110,19 +103,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
110
103
  continue;
111
104
  }
112
105
 
113
- if (collection._allowPicking && point._pickId === 0) {
114
- const pickId = context.createPickId({
115
- collection,
116
- index: i,
117
- get primitive() {
118
- // Cannot reuse primitives; scene.drillPick() appends to a list.
119
- return collection.get(this.index, new BufferPoint());
120
- },
121
- });
122
- point._pickId = pickId.key;
123
- pickIds.push(pickId);
124
- }
125
-
126
106
  point.getPosition(cartesian);
127
107
  EncodedCartesian3.fromCartesian(cartesian, encodedCartesian);
128
108
  point.getMaterial(material);
@@ -168,7 +148,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
168
148
  vertexBuffer: Buffer.createVertexBuffer({
169
149
  typedArray: attributeArrays.positionHigh,
170
150
  context,
171
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
172
151
  usage: BufferUsage.STATIC_DRAW,
173
152
  }),
174
153
  },
@@ -179,7 +158,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
179
158
  vertexBuffer: Buffer.createVertexBuffer({
180
159
  typedArray: attributeArrays.positionLow,
181
160
  context,
182
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
183
161
  usage: BufferUsage.STATIC_DRAW,
184
162
  }),
185
163
  },
@@ -190,7 +168,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
190
168
  vertexBuffer: Buffer.createVertexBuffer({
191
169
  typedArray: attributeArrays.pickColor,
192
170
  context,
193
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
194
171
  usage: BufferUsage.STATIC_DRAW,
195
172
  }),
196
173
  },
@@ -201,7 +178,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
201
178
  vertexBuffer: Buffer.createVertexBuffer({
202
179
  typedArray: attributeArrays.showSizeAndColor,
203
180
  context,
204
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
205
181
  usage: BufferUsage.STATIC_DRAW,
206
182
  }),
207
183
  },
@@ -212,7 +188,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
212
188
  vertexBuffer: Buffer.createVertexBuffer({
213
189
  typedArray: attributeArrays.outlineWidthAndOutlineColor,
214
190
  context,
215
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
216
191
  usage: BufferUsage.STATIC_DRAW,
217
192
  }),
218
193
  },
@@ -252,26 +227,33 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
252
227
  });
253
228
  }
254
229
 
255
- if (
256
- !defined(renderContext.command) ||
257
- isCommandDirty(collection, renderContext.command)
258
- ) {
230
+ if (!defined(renderContext.command)) {
259
231
  renderContext.command = new DrawCommand({
260
232
  vertexArray: renderContext.vertexArray,
261
233
  renderState: renderContext.renderState,
262
234
  shaderProgram: renderContext.shaderProgram,
263
235
  primitiveType: PrimitiveType.POINTS,
264
236
  pass: Pass.OPAQUE,
265
- pickId: "v_pickColor",
237
+ pickId: collection._allowPicking ? "v_pickColor" : undefined,
266
238
  owner: collection,
267
239
  count: collection.primitiveCount,
268
- modelMatrix: collection.modelMatrix,
269
- boundingVolume: collection.boundingVolumeWC,
240
+ modelMatrix: collection.modelMatrix, // shared reference
241
+ boundingVolume: collection.boundingVolumeWC, // shared reference
270
242
  debugShowBoundingVolume: collection.debugShowBoundingVolume,
271
243
  });
272
244
  }
273
245
 
274
- frameState.commandList.push(renderContext.command);
246
+ const command = renderContext.command;
247
+
248
+ if (command.count !== collection.primitiveCount) {
249
+ command.count = collection.primitiveCount;
250
+ }
251
+
252
+ if (command.debugShowBoundingVolume !== collection.debugShowBoundingVolume) {
253
+ command.debugShowBoundingVolume = collection.debugShowBoundingVolume;
254
+ }
255
+
256
+ frameState.commandList.push(command);
275
257
 
276
258
  collection._dirtyCount = 0;
277
259
  collection._dirtyOffset = 0;
@@ -279,31 +261,6 @@ function renderBufferPointCollection(collection, frameState, renderContext) {
279
261
  return renderContext;
280
262
  }
281
263
 
282
- /**
283
- * Returns true if DrawCommand is out of date for the given collection.
284
- * @param {BufferPointCollection} collection
285
- * @param {DrawCommand} command
286
- * @ignore
287
- */
288
- function isCommandDirty(collection, command) {
289
- const isModelMatrixEqual = Matrix4.equals(
290
- collection.modelMatrix,
291
- command._modelMatrix,
292
- );
293
-
294
- const isBoundingVolumeEqual = BoundingSphere.equals(
295
- collection.boundingVolumeWC,
296
- command._boundingVolume,
297
- );
298
-
299
- return (
300
- collection.primitiveCount !== command._count ||
301
- collection.debugShowBoundingVolume !== command.debugShowBoundingVolume ||
302
- !isModelMatrixEqual ||
303
- !isBoundingVolumeEqual
304
- );
305
- }
306
-
307
264
  /**
308
265
  * Destroys render context resources. Deleting properties from the context
309
266
  * object isn't necessary, as collection.destroy() will discard the object.
@@ -323,12 +280,6 @@ function destroyRenderContext() {
323
280
  if (defined(context.renderState)) {
324
281
  RenderState.removeFromCache(context.renderState);
325
282
  }
326
-
327
- if (defined(context.pickIds)) {
328
- for (const pickId of context.pickIds) {
329
- pickId.destroy();
330
- }
331
- }
332
283
  }
333
284
 
334
285
  export default renderBufferPointCollection;
@@ -20,11 +20,9 @@ import BufferPolygonMaterialFS from "../Shaders/BufferPolygonMaterialFS.js";
20
20
  import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
21
21
  import AttributeCompression from "../Core/AttributeCompression.js";
22
22
  import IndexDatatype from "../Core/IndexDatatype.js";
23
- import BoundingSphere from "../Core/BoundingSphere.js";
24
- import Matrix4 from "../Core/Matrix4.js";
25
23
  import BufferPolygonMaterial from "./BufferPolygonMaterial.js";
26
24
 
27
- /** @import {Destroyable, TypedArray} from "../Core/globalTypes.js"; */
25
+ /** @import {TypedArray} from "../Core/globalTypes.js"; */
28
26
  /** @import FrameState from "./FrameState.js"; */
29
27
  /** @import BufferPolygonCollection from "./BufferPolygonCollection.js"; */
30
28
 
@@ -53,7 +51,6 @@ const BufferPolygonAttributeLocations = {
53
51
  * @property {RenderState} [renderState]
54
52
  * @property {ShaderProgram} [shaderProgram]
55
53
  * @property {DrawCommand} [command]
56
- * @property {Destroyable[]} [pickIds]
57
54
  * @property {Function} destroy
58
55
  * @ignore
59
56
  */
@@ -96,12 +93,8 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
96
93
  };
97
94
  }
98
95
 
99
- if (!defined(renderContext.pickIds)) {
100
- renderContext.pickIds = [];
101
- }
102
-
103
96
  if (collection._dirtyCount > 0) {
104
- const { attributeArrays, pickIds } = renderContext;
97
+ const { attributeArrays } = renderContext;
105
98
  const { _dirtyOffset, _dirtyCount } = collection;
106
99
 
107
100
  const indexArray = renderContext.indexArray;
@@ -117,19 +110,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
117
110
  continue;
118
111
  }
119
112
 
120
- if (collection._allowPicking && polygon._pickId === 0) {
121
- const pickId = context.createPickId({
122
- collection,
123
- index: i,
124
- get primitive() {
125
- // Cannot reuse primitives; scene.drillPick() appends to a list.
126
- return collection.get(i, new BufferPolygon());
127
- },
128
- });
129
- polygon._pickId = pickId.key;
130
- pickIds.push(pickId);
131
- }
132
-
133
113
  let tOffset = polygon.triangleOffset;
134
114
  let vOffset = polygon.vertexOffset;
135
115
 
@@ -188,9 +168,8 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
188
168
  indexBuffer: Buffer.createIndexBuffer({
189
169
  context,
190
170
  typedArray: renderContext.indexArray,
191
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
192
171
  usage: BufferUsage.STATIC_DRAW,
193
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
172
+ // @ts-expect-error https://github.com/CesiumGS/cesium/issues/13420
194
173
  indexDatatype: IndexDatatype.fromTypedArray(renderContext.indexArray),
195
174
  }),
196
175
 
@@ -202,7 +181,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
202
181
  vertexBuffer: Buffer.createVertexBuffer({
203
182
  typedArray: attributeArrays.positionHigh,
204
183
  context,
205
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
206
184
  usage: BufferUsage.STATIC_DRAW,
207
185
  }),
208
186
  },
@@ -213,7 +191,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
213
191
  vertexBuffer: Buffer.createVertexBuffer({
214
192
  typedArray: attributeArrays.positionLow,
215
193
  context,
216
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
217
194
  usage: BufferUsage.STATIC_DRAW,
218
195
  }),
219
196
  },
@@ -224,7 +201,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
224
201
  vertexBuffer: Buffer.createVertexBuffer({
225
202
  typedArray: attributeArrays.pickColor,
226
203
  context,
227
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
228
204
  usage: BufferUsage.STATIC_DRAW,
229
205
  }),
230
206
  },
@@ -235,7 +211,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
235
211
  vertexBuffer: Buffer.createVertexBuffer({
236
212
  typedArray: attributeArrays.showAndColor,
237
213
  context,
238
- // @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
239
214
  usage: BufferUsage.STATIC_DRAW,
240
215
  }),
241
216
  },
@@ -284,26 +259,35 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
284
259
  });
285
260
  }
286
261
 
287
- if (
288
- !defined(renderContext.command) ||
289
- isCommandDirty(collection, renderContext.command)
290
- ) {
262
+ const drawCount = collection.triangleCount * 3;
263
+
264
+ if (!defined(renderContext.command)) {
291
265
  renderContext.command = new DrawCommand({
292
266
  vertexArray: renderContext.vertexArray,
293
267
  renderState: renderContext.renderState,
294
268
  shaderProgram: renderContext.shaderProgram,
295
269
  primitiveType: PrimitiveType.TRIANGLES,
296
270
  pass: Pass.OPAQUE,
297
- pickId: "v_pickColor",
271
+ pickId: collection._allowPicking ? "v_pickColor" : undefined,
298
272
  owner: collection,
299
- count: collection.triangleCount * 3,
300
- modelMatrix: collection.modelMatrix,
301
- boundingVolume: collection.boundingVolumeWC,
273
+ count: drawCount,
274
+ modelMatrix: collection.modelMatrix, // shared reference
275
+ boundingVolume: collection.boundingVolumeWC, // shared reference
302
276
  debugShowBoundingVolume: collection.debugShowBoundingVolume,
303
277
  });
304
278
  }
305
279
 
306
- frameState.commandList.push(renderContext.command);
280
+ const command = renderContext.command;
281
+
282
+ if (command.count !== drawCount) {
283
+ command.count = drawCount;
284
+ }
285
+
286
+ if (command.debugShowBoundingVolume !== collection.debugShowBoundingVolume) {
287
+ command.debugShowBoundingVolume = collection.debugShowBoundingVolume;
288
+ }
289
+
290
+ frameState.commandList.push(command);
307
291
 
308
292
  collection._dirtyCount = 0;
309
293
  collection._dirtyOffset = 0;
@@ -311,31 +295,6 @@ function renderBufferPolygonCollection(collection, frameState, renderContext) {
311
295
  return renderContext;
312
296
  }
313
297
 
314
- /**
315
- * Returns true if DrawCommand is out of date for the given collection.
316
- * @param {BufferPolygonCollection} collection
317
- * @param {DrawCommand} command
318
- * @ignore
319
- */
320
- function isCommandDirty(collection, command) {
321
- const isModelMatrixEqual = Matrix4.equals(
322
- collection.modelMatrix,
323
- command._modelMatrix,
324
- );
325
-
326
- const isBoundingVolumeEqual = BoundingSphere.equals(
327
- collection.boundingVolumeWC,
328
- command._boundingVolume,
329
- );
330
-
331
- return (
332
- collection.triangleCount * 3 !== command._count ||
333
- collection.debugShowBoundingVolume !== command.debugShowBoundingVolume ||
334
- !isModelMatrixEqual ||
335
- !isBoundingVolumeEqual
336
- );
337
- }
338
-
339
298
  /**
340
299
  * Computes dirty ranges for attribute and index buffers in a collection.
341
300
  * @param {BufferPolygonCollection} collection
@@ -375,12 +334,6 @@ function destroyRenderContext() {
375
334
  if (defined(context.renderState)) {
376
335
  RenderState.removeFromCache(context.renderState);
377
336
  }
378
-
379
- if (defined(context.pickIds)) {
380
- for (const pickId of context.pickIds) {
381
- pickId.destroy();
382
- }
383
- }
384
337
  }
385
338
 
386
339
  export default renderBufferPolygonCollection;