@cesium/engine 23.0.1 → 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 (398) hide show
  1. package/Build/Workers/{chunk-ZEMJQKHD.js → chunk-35H3UBIO.js} +13 -12
  2. package/Build/Workers/{chunk-PQTSXJBJ.js → chunk-3LSD7OOA.js} +16 -16
  3. package/Build/Workers/{chunk-PUO7BYDY.js → chunk-3RFFPH4M.js} +1 -1
  4. package/Build/Workers/{chunk-PBECJOWF.js → chunk-3TKLDHV3.js} +2 -2
  5. package/Build/Workers/{chunk-TMCTZ5E3.js → chunk-3VDDRF2E.js} +14 -14
  6. package/Build/Workers/{chunk-FKU77FNM.js → chunk-3XY3MVPG.js} +4 -4
  7. package/Build/Workers/{chunk-2OBWHTIC.js → chunk-4GF4MVPY.js} +7 -7
  8. package/Build/Workers/{chunk-JUKGMJX7.js → chunk-4MTRQFJP.js} +3 -2
  9. package/Build/Workers/{chunk-66OWUDO7.js → chunk-4QQXGTCE.js} +8 -8
  10. package/Build/Workers/{chunk-ALTCIHRH.js → chunk-4XXHJI6Y.js} +17 -17
  11. package/Build/Workers/{chunk-K7UTK4OM.js → chunk-5T6QQAJW.js} +3 -2
  12. package/Build/Workers/{chunk-IJ3SUMK3.js → chunk-6SDGQI27.js} +3 -2
  13. package/Build/Workers/{chunk-FXSRA5UG.js → chunk-77RL3MBD.js} +6 -5
  14. package/Build/Workers/{chunk-G6MJ3ZW3.js → chunk-7LSFAEWF.js} +12 -11
  15. package/Build/Workers/{chunk-C6HHBKT5.js → chunk-A7A433MD.js} +5 -5
  16. package/Build/Workers/{chunk-PGZ3B6CB.js → chunk-A7ZBMVFS.js} +14 -14
  17. package/Build/Workers/{chunk-OZYB3AOR.js → chunk-ACFFCHHZ.js} +11 -11
  18. package/Build/Workers/{chunk-DNMASBMH.js → chunk-AEAVLYPS.js} +2 -2
  19. package/Build/Workers/{chunk-VPWYHFQA.js → chunk-AWFZHD2B.js} +4 -4
  20. package/Build/Workers/{chunk-TFPG3ZKW.js → chunk-BTX2NL3P.js} +59 -46
  21. package/Build/Workers/{chunk-TNXOPEIG.js → chunk-BVAIWR7O.js} +12 -12
  22. package/Build/Workers/chunk-CKQP3DSS.js +973 -0
  23. package/Build/Workers/{chunk-N6HRZLS6.js → chunk-CZ23Y3RM.js} +2 -2
  24. package/Build/Workers/{chunk-EIC3VAOZ.js → chunk-DFEI5MAV.js} +7 -7
  25. package/Build/Workers/{chunk-BTP3634E.js → chunk-DH26SNAB.js} +4 -1
  26. package/Build/Workers/{chunk-TXYQNXNW.js → chunk-DYT5NR6P.js} +3 -3
  27. package/Build/Workers/{chunk-O67UP5YO.js → chunk-EZARA5FJ.js} +13 -13
  28. package/Build/Workers/{chunk-YSJRB2UZ.js → chunk-FIBS5S7R.js} +2 -2
  29. package/Build/Workers/{chunk-2M7DKGLW.js → chunk-FVLVVOBQ.js} +10 -10
  30. package/Build/Workers/{chunk-B2VA6IEL.js → chunk-GL7DNVUS.js} +5 -5
  31. package/Build/Workers/{chunk-77DJBHMI.js → chunk-GPIGURCG.js} +59 -32
  32. package/Build/Workers/{chunk-QPXGGVHC.js → chunk-H2A4USJR.js} +10 -10
  33. package/Build/Workers/chunk-HSVQATK2.js +147 -0
  34. package/Build/Workers/{chunk-HXEPZWJN.js → chunk-HVMG6AG4.js} +11 -10
  35. package/Build/Workers/{chunk-H3TVRJLY.js → chunk-I3A6DXYZ.js} +4 -4
  36. package/Build/Workers/{chunk-UEWYSOFD.js → chunk-ITD2IN7N.js} +2 -2
  37. package/Build/Workers/{chunk-CYOPNGPX.js → chunk-J3OFS2RD.js} +12 -12
  38. package/Build/Workers/{chunk-RZX6LOG6.js → chunk-J647NNZW.js} +6 -6
  39. package/Build/Workers/{chunk-GLCPE2BJ.js → chunk-J7KQEKPK.js} +13 -13
  40. package/Build/Workers/{chunk-XPMXRJDD.js → chunk-K6NFIRFB.js} +5 -5
  41. package/Build/Workers/{chunk-CID5SY7L.js → chunk-LH5SF3XV.js} +7 -6
  42. package/Build/Workers/{chunk-UOQB7XQI.js → chunk-ND3NTTOF.js} +713 -435
  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-CJ7ZDY77.js → chunk-ST2UWDUU.js} +5 -5
  47. package/Build/Workers/{chunk-YDR5LX5Z.js → chunk-TA777BGS.js} +3 -2
  48. package/Build/Workers/{chunk-U4SWB6TI.js → chunk-TAI4HLII.js} +4 -4
  49. package/Build/Workers/{chunk-VX774SWE.js → chunk-URUCCIPS.js} +6 -6
  50. package/Build/Workers/{chunk-MNSNOONX.js → chunk-VQKLRBIK.js} +7 -7
  51. package/Build/Workers/{chunk-CVAAIRNP.js → chunk-WC57YYBN.js} +2 -2
  52. package/Build/Workers/{chunk-QNABVTTP.js → chunk-WN6P5UDH.js} +12 -12
  53. package/Build/Workers/{chunk-CNLXMOPM.js → chunk-WNN5D4W3.js} +12 -11
  54. package/Build/Workers/{chunk-4JJQRZYL.js → chunk-WTQGE7Q6.js} +17 -17
  55. package/Build/Workers/{chunk-FCJQO4NC.js → chunk-WUBKZFF6.js} +2213 -1349
  56. package/Build/Workers/{chunk-3UQ2YMPP.js → chunk-ZAPOS52G.js} +12 -10
  57. package/Build/Workers/{chunk-LHFC4R7Z.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 +25 -25
  100. package/Build/Workers/createWallOutlineGeometry.js +24 -24
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +12 -12
  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/Cartesian2.js +7 -5
  116. package/Source/Core/Cartesian3.js +9 -8
  117. package/Source/Core/Cartesian4.js +8 -6
  118. package/Source/Core/Cartographic.js +257 -249
  119. package/Source/Core/ClockRange.js +6 -1
  120. package/Source/Core/ClockStep.js +6 -1
  121. package/Source/Core/Color.js +846 -835
  122. package/Source/Core/ComponentDatatype.js +4 -1
  123. package/Source/Core/CornerType.js +6 -1
  124. package/Source/Core/Credit.js +121 -124
  125. package/Source/Core/DeveloperError.js +2 -1
  126. package/Source/Core/Ellipsoid.js +637 -660
  127. package/Source/Core/ExtrapolationType.js +6 -1
  128. package/Source/Core/GeocodeType.js +6 -1
  129. package/Source/Core/GeographicProjection.js +74 -74
  130. package/Source/Core/GeographicTilingScheme.js +179 -198
  131. package/Source/Core/GeometryOffsetAttribute.js +7 -1
  132. package/Source/Core/GeometryType.js +7 -1
  133. package/Source/Core/HeightmapEncoding.js +6 -1
  134. package/Source/Core/ITwinPlatform.js +1 -0
  135. package/Source/Core/Iau2006XysData.js +24 -13
  136. package/Source/Core/IndexDatatype.js +3 -1
  137. package/Source/Core/InterpolationType.js +5 -1
  138. package/Source/Core/Intersect.js +6 -1
  139. package/Source/Core/Ion.js +1 -1
  140. package/Source/Core/IonGeocodeProviderType.js +5 -1
  141. package/Source/Core/JulianDate.js +850 -848
  142. package/Source/Core/KeyboardEventModifier.js +6 -1
  143. package/Source/Core/MapProjection.js +39 -44
  144. package/Source/Core/Matrix2.js +906 -893
  145. package/Source/Core/Matrix3.js +1643 -1575
  146. package/Source/Core/Matrix4.js +2903 -2872
  147. package/Source/Core/PixelFormat.js +3 -1
  148. package/Source/Core/PrimitiveType.js +11 -1
  149. package/Source/Core/Ray.js +62 -60
  150. package/Source/Core/Rectangle.js +913 -904
  151. package/Source/Core/ReferenceFrame.js +6 -1
  152. package/Source/Core/RequestScheduler.js +8 -3
  153. package/Source/Core/RequestState.js +6 -1
  154. package/Source/Core/RequestType.js +6 -1
  155. package/Source/Core/S2Cell.js +2 -2
  156. package/Source/Core/ScreenSpaceEventType.js +6 -1
  157. package/Source/Core/TerrainMesh.js +10 -1
  158. package/Source/Core/TerrainPicker.js +1 -0
  159. package/Source/Core/TerrainQuantization.js +6 -1
  160. package/Source/Core/TilingScheme.js +100 -98
  161. package/Source/Core/TimeConstants.js +6 -1
  162. package/Source/Core/TimeStandard.js +6 -1
  163. package/Source/Core/TrackingReferenceFrame.js +6 -1
  164. package/Source/Core/Visibility.js +6 -1
  165. package/Source/Core/VulkanConstants.js +6 -1
  166. package/Source/Core/WallGeometry.js +1 -1
  167. package/Source/Core/WallOutlineGeometry.js +1 -1
  168. package/Source/Core/WebGLConstants.js +6 -1
  169. package/Source/Core/WebMercatorProjection.js +108 -109
  170. package/Source/Core/WebMercatorTilingScheme.js +246 -242
  171. package/Source/Core/WindingOrder.js +3 -1
  172. package/Source/Core/assert.js +27 -0
  173. package/Source/Core/globalTypes.js +4 -0
  174. package/Source/DataSources/CzmlDataSource.js +9 -0
  175. package/Source/DataSources/PathGraphics.js +13 -0
  176. package/Source/DataSources/PathVisualizer.js +330 -18
  177. package/Source/DataSources/StaticGeometryColorBatch.js +7 -2
  178. package/Source/DataSources/StaticGeometryPerMaterialBatch.js +7 -2
  179. package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +4 -1
  180. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +4 -1
  181. package/Source/DataSources/StripeOrientation.js +6 -1
  182. package/Source/Renderer/BufferUsage.js +20 -9
  183. package/Source/Renderer/Context.js +2 -29
  184. package/Source/Renderer/DrawCommand.js +435 -403
  185. package/Source/Renderer/MipmapHint.js +5 -1
  186. package/Source/Renderer/Pass.js +7 -1
  187. package/Source/Renderer/PickId.js +44 -0
  188. package/Source/Renderer/PixelDatatype.js +3 -1
  189. package/Source/Renderer/RenderState.js +2 -2
  190. package/Source/Renderer/RenderbufferFormat.js +5 -1
  191. package/Source/Renderer/ShaderDestination.js +4 -1
  192. package/Source/Renderer/TextureMagnificationFilter.js +3 -1
  193. package/Source/Renderer/TextureMinificationFilter.js +3 -1
  194. package/Source/Renderer/TextureWrap.js +5 -1
  195. package/Source/Renderer/VertexArray.js +80 -0
  196. package/Source/Scene/AlphaMode.js +5 -1
  197. package/Source/Scene/ArcGisBaseMapType.js +6 -1
  198. package/Source/Scene/ArcGisMapService.js +1 -1
  199. package/Source/Scene/AttributeType.js +3 -1
  200. package/Source/Scene/Axis.js +3 -1
  201. package/Source/Scene/BillboardCollection.js +65 -364
  202. package/Source/Scene/BingMapsStyle.js +6 -1
  203. package/Source/Scene/BlendEquation.js +6 -1
  204. package/Source/Scene/BlendFunction.js +6 -1
  205. package/Source/Scene/BlendOption.js +6 -1
  206. package/Source/Scene/BlendingState.js +6 -1
  207. package/Source/Scene/BufferLoader.js +0 -2
  208. package/Source/Scene/BufferPoint.js +148 -0
  209. package/Source/Scene/BufferPointCollection.js +138 -0
  210. package/Source/Scene/BufferPointMaterial.js +95 -0
  211. package/Source/Scene/BufferPolygon.js +516 -0
  212. package/Source/Scene/BufferPolygonCollection.js +370 -0
  213. package/Source/Scene/BufferPolygonMaterial.js +41 -0
  214. package/Source/Scene/BufferPolyline.js +185 -0
  215. package/Source/Scene/BufferPolylineCollection.js +138 -0
  216. package/Source/Scene/BufferPolylineMaterial.js +93 -0
  217. package/Source/Scene/BufferPrimitive.js +347 -0
  218. package/Source/Scene/BufferPrimitiveCollection.js +818 -0
  219. package/Source/Scene/BufferPrimitiveMaterial.js +140 -0
  220. package/Source/Scene/CameraEventType.js +6 -1
  221. package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
  222. package/Source/Scene/Cesium3DTileContent.js +5 -1
  223. package/Source/Scene/Cesium3DTileContentFactory.js +9 -0
  224. package/Source/Scene/Cesium3DTileContentState.js +6 -1
  225. package/Source/Scene/Cesium3DTileContentType.js +3 -1
  226. package/Source/Scene/Cesium3DTileFeature.js +289 -306
  227. package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
  228. package/Source/Scene/Cesium3DTilePass.js +5 -1
  229. package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
  230. package/Source/Scene/Cesium3DTileRefine.js +6 -1
  231. package/Source/Scene/Cesium3DTileStyle.js +22 -0
  232. package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
  233. package/Source/Scene/Cesium3DTileset.js +2 -1
  234. package/Source/Scene/ClassificationType.js +3 -1
  235. package/Source/Scene/ClippingPolygonCollection.js +270 -101
  236. package/Source/Scene/CloudType.js +3 -1
  237. package/Source/Scene/ColorBlendMode.js +4 -1
  238. package/Source/Scene/CubeMapPanorama.js +4 -4
  239. package/Source/Scene/CullFace.js +6 -1
  240. package/Source/Scene/DepthFunction.js +6 -1
  241. package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
  242. package/Source/Scene/EquirectangularPanorama.js +1 -0
  243. package/Source/Scene/ExpressionNodeType.js +6 -1
  244. package/Source/Scene/GaussianSplat3DTileContent.js +40 -46
  245. package/Source/Scene/GaussianSplatPrimitive.js +413 -70
  246. package/Source/Scene/GetFeatureInfoFormat.js +3 -3
  247. package/Source/Scene/GltfBufferViewLoader.js +0 -2
  248. package/Source/Scene/GltfDracoLoader.js +0 -2
  249. package/Source/Scene/GltfImageLoader.js +0 -3
  250. package/Source/Scene/GltfIndexBufferLoader.js +0 -4
  251. package/Source/Scene/GltfJsonLoader.js +0 -2
  252. package/Source/Scene/GltfLoader.js +215 -39
  253. package/Source/Scene/GltfLoaderUtil.js +14 -0
  254. package/Source/Scene/GltfSpzLoader.js +109 -2
  255. package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
  256. package/Source/Scene/GltfTextureLoader.js +0 -2
  257. package/Source/Scene/GltfVertexBufferLoader.js +0 -4
  258. package/Source/Scene/HeightReference.js +5 -1
  259. package/Source/Scene/HorizontalOrigin.js +6 -1
  260. package/Source/Scene/ITwinData.js +1 -0
  261. package/Source/Scene/ImageryProvider.js +1 -1
  262. package/Source/Scene/ImageryState.js +6 -1
  263. package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
  264. package/Source/Scene/InstanceAttributeSemantic.js +3 -1
  265. package/Source/Scene/IonWorldImageryStyle.js +6 -1
  266. package/Source/Scene/JobType.js +6 -1
  267. package/Source/Scene/Label.js +32 -0
  268. package/Source/Scene/LabelCollection.js +14 -13
  269. package/Source/Scene/LabelStyle.js +6 -1
  270. package/Source/Scene/MapMode2D.js +6 -1
  271. package/Source/Scene/Material.js +2 -0
  272. package/Source/Scene/Megatexture.js +1 -0
  273. package/Source/Scene/MetadataClassProperty.js +24 -10
  274. package/Source/Scene/MetadataComponentType.js +118 -24
  275. package/Source/Scene/MetadataSchemaLoader.js +0 -2
  276. package/Source/Scene/MetadataSemantic.js +6 -2
  277. package/Source/Scene/MetadataType.js +3 -1
  278. package/Source/Scene/Model/B3dmLoader.js +0 -3
  279. package/Source/Scene/Model/CustomShaderMode.js +3 -1
  280. package/Source/Scene/Model/CustomShaderPipelineStage.js +3 -1
  281. package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
  282. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +735 -264
  283. package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
  284. package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
  285. package/Source/Scene/Model/GeoJsonLoader.js +0 -2
  286. package/Source/Scene/Model/I3dmLoader.js +0 -3
  287. package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
  288. package/Source/Scene/Model/LightingModel.js +5 -1
  289. package/Source/Scene/Model/MaterialPipelineStage.js +331 -3
  290. package/Source/Scene/Model/MetadataPipelineStage.js +3 -3
  291. package/Source/Scene/Model/ModelDrawCommand.js +6 -0
  292. package/Source/Scene/Model/ModelReader.js +475 -4
  293. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
  294. package/Source/Scene/Model/ModelType.js +3 -1
  295. package/Source/Scene/Model/ModelUtility.js +3 -1
  296. package/Source/Scene/Model/PntsLoader.js +4 -3
  297. package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
  298. package/Source/Scene/Model/UniformType.js +5 -1
  299. package/Source/Scene/Model/VaryingType.js +5 -1
  300. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +375 -0
  301. package/Source/Scene/Model/pickModel.js +94 -299
  302. package/Source/Scene/ModelAnimationLoop.js +6 -1
  303. package/Source/Scene/ModelAnimationState.js +6 -1
  304. package/Source/Scene/ModelComponents.js +1639 -1542
  305. package/Source/Scene/PickedMetadataInfo.js +1 -0
  306. package/Source/Scene/PrimitiveState.js +7 -1
  307. package/Source/Scene/QuadtreeOccluders.js +20 -15
  308. package/Source/Scene/QuadtreeTile.js +547 -541
  309. package/Source/Scene/QuadtreeTileLoadState.js +6 -1
  310. package/Source/Scene/QuadtreeTileProvider.js +159 -175
  311. package/Source/Scene/ResourceLoader.js +0 -1
  312. package/Source/Scene/ResourceLoaderState.js +7 -1
  313. package/Source/Scene/SceneMode.js +4 -1
  314. package/Source/Scene/ScreenSpaceCameraController.js +13 -0
  315. package/Source/Scene/ShadowMode.js +3 -1
  316. package/Source/Scene/SkyBox.js +17 -8
  317. package/Source/Scene/SplitDirection.js +6 -1
  318. package/Source/Scene/StencilFunction.js +6 -1
  319. package/Source/Scene/StencilOperation.js +6 -1
  320. package/Source/Scene/TerrainState.js +7 -1
  321. package/Source/Scene/TileBoundingRegion.js +1 -1
  322. package/Source/Scene/TileBoundingS2Cell.js +1 -1
  323. package/Source/Scene/TileBoundingSphere.js +1 -1
  324. package/Source/Scene/TileState.js +7 -1
  325. package/Source/Scene/Tonemapper.js +5 -1
  326. package/Source/Scene/TweenCollection.js +7 -0
  327. package/Source/Scene/VectorGltf3DTileContent.js +403 -0
  328. package/Source/Scene/VertexAttributeSemantic.js +17 -1
  329. package/Source/Scene/VerticalOrigin.js +6 -1
  330. package/Source/Scene/VoxelBoxShape.js +12 -6
  331. package/Source/Scene/VoxelContent.js +2 -0
  332. package/Source/Scene/VoxelCylinderShape.js +39 -38
  333. package/Source/Scene/VoxelEllipsoidShape.js +46 -96
  334. package/Source/Scene/VoxelMetadataOrder.js +6 -1
  335. package/Source/Scene/VoxelProvider.js +1 -0
  336. package/Source/Scene/VoxelShapeType.js +3 -1
  337. package/Source/Scene/WebMapServiceImageryProvider.js +2 -2
  338. package/Source/Scene/WebMapTileServiceImageryProvider.js +366 -131
  339. package/Source/Scene/parseStructuralMetadata.js +97 -37
  340. package/Source/Scene/renderBufferPointCollection.js +285 -0
  341. package/Source/Scene/renderBufferPolygonCollection.js +339 -0
  342. package/Source/Scene/renderBufferPolylineCollection.js +478 -0
  343. package/Source/Shaders/BillboardCollectionFS.glsl +2 -77
  344. package/Source/Shaders/BillboardCollectionFS.js +2 -77
  345. package/Source/Shaders/BillboardCollectionVS.glsl +2 -60
  346. package/Source/Shaders/BillboardCollectionVS.js +2 -60
  347. package/Source/Shaders/BufferPointMaterialFS.glsl +27 -0
  348. package/Source/Shaders/BufferPointMaterialFS.js +29 -0
  349. package/Source/Shaders/BufferPointMaterialVS.glsl +48 -0
  350. package/Source/Shaders/BufferPointMaterialVS.js +50 -0
  351. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  352. package/Source/Shaders/BufferPolygonMaterialFS.js +15 -0
  353. package/Source/Shaders/BufferPolygonMaterialVS.glsl +30 -0
  354. package/Source/Shaders/BufferPolygonMaterialVS.js +32 -0
  355. package/Source/Shaders/BufferPolylineMaterialFS.glsl +13 -0
  356. package/Source/Shaders/BufferPolylineMaterialFS.js +15 -0
  357. package/Source/Shaders/BufferPolylineMaterialVS.glsl +49 -0
  358. package/Source/Shaders/BufferPolylineMaterialVS.js +51 -0
  359. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  360. package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
  361. package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
  362. package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
  363. package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
  364. package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
  365. package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
  366. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +34 -48
  367. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +34 -49
  368. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +98 -0
  369. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +100 -0
  370. package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
  371. package/Source/Shaders/Model/MaterialStageFS.js +46 -20
  372. package/Source/Shaders/Model/ModelFS.glsl +15 -0
  373. package/Source/Shaders/Model/ModelFS.js +15 -0
  374. package/Source/Shaders/Model/ModelVS.glsl +8 -0
  375. package/Source/Shaders/Model/ModelVS.js +8 -0
  376. package/Source/Shaders/PolygonSignedDistanceFS.glsl +64 -33
  377. package/Source/Shaders/PolygonSignedDistanceFS.js +64 -33
  378. package/Source/Shaders/PrimitiveGaussianSplatVS.glsl +9 -2
  379. package/Source/Shaders/PrimitiveGaussianSplatVS.js +9 -2
  380. package/Source/Shaders/Voxels/VoxelFS.glsl +1 -1
  381. package/Source/Shaders/Voxels/VoxelFS.js +1 -1
  382. package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
  383. package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
  384. package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
  385. package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
  386. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
  387. package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
  388. package/Source/Widget/CesiumWidget.js +11 -4
  389. package/Source/Workers/decodeDraco.js +3 -0
  390. package/Source/Workers/decodeI3S.js +5 -2
  391. package/index.d.ts +1332 -402
  392. package/index.js +111 -81
  393. package/package.json +3 -3
  394. package/Build/Workers/chunk-54O3AGOA.js +0 -642
  395. package/Build/Workers/chunk-6U5QMZU3.js +0 -940
  396. package/Build/Workers/chunk-HNDE73JK.js +0 -1829
  397. package/Build/Workers/chunk-PAFMAR7A.js +0 -2357
  398. package/Build/Workers/chunk-S53HSRT6.js +0 -114
@@ -149,9 +149,9 @@ function createTextureForPropertyTable(
149
149
 
150
150
  const numFeatures = propertyTable.count;
151
151
 
152
- let gpuCompatiblePropertyBufferViews;
152
+ let gpuCompatiblePropertyInfo;
153
153
  try {
154
- gpuCompatiblePropertyBufferViews = collectGpuCompatiblePropertyBufferViews(
154
+ gpuCompatiblePropertyInfo = collectGpuCompatiblePropertyInfo(
155
155
  properties,
156
156
  bufferViews,
157
157
  classDefinition,
@@ -164,7 +164,7 @@ function createTextureForPropertyTable(
164
164
  return undefined;
165
165
  }
166
166
 
167
- const numGpuCompatibleProperties = gpuCompatiblePropertyBufferViews.length;
167
+ const numGpuCompatibleProperties = gpuCompatiblePropertyInfo.length;
168
168
 
169
169
  if (numGpuCompatibleProperties === 0) {
170
170
  return undefined;
@@ -183,7 +183,7 @@ function createTextureForPropertyTable(
183
183
  }
184
184
 
185
185
  const packedBufferView = packPropertyTablePropertiesIntoRGBA8(
186
- gpuCompatiblePropertyBufferViews,
186
+ gpuCompatiblePropertyInfo,
187
187
  numFeatures,
188
188
  );
189
189
 
@@ -209,13 +209,13 @@ function createTextureForPropertyTable(
209
209
  });
210
210
  }
211
211
 
212
- function collectGpuCompatiblePropertyBufferViews(
212
+ function collectGpuCompatiblePropertyInfo(
213
213
  properties,
214
214
  bufferViews,
215
215
  classDefinition,
216
216
  numFeatures,
217
217
  ) {
218
- const bufferViewsForThisTable = [];
218
+ const propertyInfos = [];
219
219
  const classProperties = classDefinition.properties;
220
220
 
221
221
  // It's possible for a primitive in a tileset to only use a subset of the class properties defined in the schema.
@@ -234,7 +234,7 @@ function collectGpuCompatiblePropertyBufferViews(
234
234
  : createNoDataBufferView(classProperty, numFeatures);
235
235
 
236
236
  const bufferViewLength = bufferView.length;
237
- const bytesPerElement = classProperty.bytesPerElement();
237
+ const bytesPerElement = classProperty.cpuBytesPerElement();
238
238
  const numBufferElements = bufferViewLength / bytesPerElement;
239
239
  if (numBufferElements !== numFeatures) {
240
240
  throw new RuntimeError(
@@ -242,13 +242,13 @@ function collectGpuCompatiblePropertyBufferViews(
242
242
  );
243
243
  }
244
244
 
245
- bufferViewsForThisTable.push({
245
+ propertyInfos.push({
246
246
  view: bufferView,
247
- bytesPerElement: bytesPerElement,
247
+ classProperty: classProperty,
248
248
  });
249
249
  }
250
250
 
251
- return bufferViewsForThisTable;
251
+ return propertyInfos;
252
252
  }
253
253
 
254
254
  /**
@@ -287,18 +287,25 @@ function createNoDataBufferView(classProperty, numFeatures) {
287
287
  noData = [noData];
288
288
  }
289
289
 
290
- const bytesPerElement = classProperty.bytesPerElement();
290
+ const bytesPerElement = classProperty.cpuBytesPerElement();
291
+ const bytesPerComponent = MetadataComponentType.getSizeInBytes(
292
+ classProperty.valueType,
293
+ );
291
294
  const buffer = new ArrayBuffer(bytesPerElement * numFeatures);
292
295
  const view = new DataView(buffer);
293
- const setter = MetadataComponentType.getDataViewSetter(
296
+ const accessors = MetadataComponentType.getDataViewAccessors(
294
297
  view,
295
- classProperty.componentType,
298
+ classProperty.valueType,
296
299
  );
297
300
 
298
301
  for (let i = 0; i < numFeatures; i++) {
299
302
  for (let j = 0; j < metadataArrayLength; j++) {
300
303
  for (let k = 0; k < metadataComponentCount; k++) {
301
- setter(bytesPerElement * i + j + k, noData[j][k]);
304
+ const componentIdx = j * metadataComponentCount + k;
305
+ accessors.set(
306
+ bytesPerElement * i + componentIdx * bytesPerComponent,
307
+ noData[j][k],
308
+ );
302
309
  }
303
310
  }
304
311
  }
@@ -308,39 +315,92 @@ function createNoDataBufferView(classProperty, numFeatures) {
308
315
 
309
316
  // Make one big buffer view to load into the texture
310
317
  // Since each texel is always 4 bytes (RGBA8 format), elements less than 4 bytes need to be padded (respecting little-endian order).
311
- function packPropertyTablePropertiesIntoRGBA8(
312
- bufferViewsForThisTable,
313
- numFeatures,
314
- ) {
315
- const numGpuCompatibleProperties = bufferViewsForThisTable.length;
318
+ // Exception: single-component 64-bit types can be downcast to 32-bit for GPU compatibility (with potential loss of precision / range).
319
+ function packPropertyTablePropertiesIntoRGBA8(propertyInfos, numFeatures) {
320
+ const numGpuCompatibleProperties = propertyInfos.length;
316
321
  const packedBufferView = new Uint8Array(
317
322
  numGpuCompatibleProperties * numFeatures * NUM_CHANNELS,
318
323
  );
324
+ const packedDataView = new DataView(
325
+ packedBufferView.buffer,
326
+ packedBufferView.byteOffset,
327
+ packedBufferView.byteLength,
328
+ );
319
329
 
320
- for (let i = 0, offset = 0; i < bufferViewsForThisTable.length; i++) {
321
- const bufferView = bufferViewsForThisTable[i].view;
322
- const bytesPerElement = bufferViewsForThisTable[i].bytesPerElement;
323
- const numElements = bufferView.length / bytesPerElement;
330
+ for (
331
+ let propertyIndex = 0;
332
+ propertyIndex < numGpuCompatibleProperties;
333
+ propertyIndex++
334
+ ) {
335
+ const propertyInfo = propertyInfos[propertyIndex];
336
+ const classProperty = propertyInfo.classProperty;
337
+ const rowOffset = propertyIndex * numFeatures * NUM_CHANNELS;
338
+ const sourceType = classProperty.valueType;
339
+ const packedType = MetadataComponentType.gpuComponentType(sourceType);
340
+
341
+ // E.g. When the source component type is INT64, we first downcast each element to INT32 before packing into the GPU buffer.
342
+ if (sourceType !== packedType) {
343
+ downcastAndPackProperty(propertyInfo, packedDataView, rowOffset);
344
+ continue;
345
+ }
324
346
 
325
- for (let j = 0; j < numElements; j++) {
326
- const sourceOffset = j * bytesPerElement;
327
- const destOffset = offset + j * NUM_CHANNELS;
347
+ packProperty(propertyInfo, packedBufferView, rowOffset);
348
+ }
328
349
 
329
- packedBufferView.set(
330
- bufferView.subarray(sourceOffset, sourceOffset + bytesPerElement),
331
- destOffset,
332
- );
350
+ return packedBufferView;
351
+ }
333
352
 
334
- // Pad remaining channels with 0
335
- for (let k = bytesPerElement; k < NUM_CHANNELS; k++) {
336
- packedBufferView[destOffset + k] = 0;
337
- }
338
- }
353
+ function packProperty(propertyInfo, packedBufferView, rowOffset) {
354
+ const bufferView = propertyInfo.view;
355
+ const bytesPerElement = propertyInfo.classProperty.cpuBytesPerElement();
356
+ const numElements = bufferView.length / bytesPerElement;
357
+
358
+ for (let elementIndex = 0; elementIndex < numElements; elementIndex++) {
359
+ const sourceOffset = elementIndex * bytesPerElement;
360
+ const destinationOffset = rowOffset + elementIndex * NUM_CHANNELS;
339
361
 
340
- offset += numElements * NUM_CHANNELS;
362
+ packedBufferView.set(
363
+ bufferView.subarray(sourceOffset, sourceOffset + bytesPerElement),
364
+ destinationOffset,
365
+ );
341
366
  }
367
+ }
342
368
 
343
- return packedBufferView;
369
+ // This is the slow path - rather than doing a straight copy, we need to interpret and downcast each element before packing it into the GPU buffer.
370
+ // Note: this function does not handle properties with multiple components per element (or arrays). While not complete, this is OK because
371
+ // multi-component properties with 64-bit types - even when downcast to 32 bits - cannot fit into a single RGBA8 texel.
372
+ function downcastAndPackProperty(propertyInfo, packedDataView, rowOffset) {
373
+ const classProperty = propertyInfo.classProperty;
374
+ const bufferView = propertyInfo.view;
375
+ const sourceType = classProperty.valueType;
376
+ const packedType = MetadataComponentType.gpuComponentType(sourceType);
377
+
378
+ const bytesPerElement = classProperty.cpuBytesPerElement();
379
+ const numElements = bufferView.length / bytesPerElement;
380
+
381
+ const sourceDataView = new DataView(
382
+ bufferView.buffer,
383
+ bufferView.byteOffset,
384
+ bufferView.byteLength,
385
+ );
386
+ const sourceAccessors = MetadataComponentType.getDataViewAccessors(
387
+ sourceDataView,
388
+ sourceType,
389
+ );
390
+ const packedAccessors = MetadataComponentType.getDataViewAccessors(
391
+ packedDataView,
392
+ packedType,
393
+ );
394
+
395
+ const downcastFunction = MetadataComponentType.downcastFunction(sourceType);
396
+
397
+ for (let elementIndex = 0; elementIndex < numElements; elementIndex++) {
398
+ const sourceElementOffset = elementIndex * bytesPerElement;
399
+ const destinationElementOffset = rowOffset + elementIndex * NUM_CHANNELS;
400
+
401
+ const value = sourceAccessors.get(sourceElementOffset);
402
+ packedAccessors.set(destinationElementOffset, downcastFunction(value));
403
+ }
344
404
  }
345
405
 
346
406
  export default parseStructuralMetadata;
@@ -0,0 +1,285 @@
1
+ // @ts-check
2
+
3
+ import defined from "../Core/defined.js";
4
+ import Cartesian3 from "../Core/Cartesian3.js";
5
+ import Color from "../Core/Color.js";
6
+ import BufferPoint from "./BufferPoint.js";
7
+ import Buffer from "../Renderer/Buffer.js";
8
+ import BufferUsage from "../Renderer/BufferUsage.js";
9
+ import VertexArray from "../Renderer/VertexArray.js";
10
+ import ComponentDatatype from "../Core/ComponentDatatype.js";
11
+ import RenderState from "../Renderer/RenderState.js";
12
+ import BlendingState from "./BlendingState.js";
13
+ import ShaderSource from "../Renderer/ShaderSource.js";
14
+ import ShaderProgram from "../Renderer/ShaderProgram.js";
15
+ import DrawCommand from "../Renderer/DrawCommand.js";
16
+ import Pass from "../Renderer/Pass.js";
17
+ import PrimitiveType from "../Core/PrimitiveType.js";
18
+ import BufferPointMaterialVS from "../Shaders/BufferPointMaterialVS.js";
19
+ import BufferPointMaterialFS from "../Shaders/BufferPointMaterialFS.js";
20
+ import EncodedCartesian3 from "../Core/EncodedCartesian3.js";
21
+ import AttributeCompression from "../Core/AttributeCompression.js";
22
+ import BufferPointMaterial from "./BufferPointMaterial.js";
23
+
24
+ /** @import FrameState from "./FrameState.js"; */
25
+ /** @import BufferPointCollection from "./BufferPointCollection.js"; */
26
+ /** @import {TypedArray} from "../Core/globalTypes.js"; */
27
+
28
+ /**
29
+ * TODO(PR#13211): Need 'keyof' syntax to avoid duplicating attribute names.
30
+ * @typedef {'positionHigh' | 'positionLow' | 'pickColor' | 'showSizeAndColor' | 'outlineWidthAndOutlineColor'} BufferPointAttribute
31
+ * @ignore
32
+ */
33
+
34
+ /**
35
+ * @type {Record<BufferPointAttribute, number>}
36
+ * @ignore
37
+ */
38
+ const BufferPointAttributeLocations = {
39
+ positionHigh: 0,
40
+ positionLow: 1,
41
+ pickColor: 2,
42
+ showSizeAndColor: 3,
43
+ outlineWidthAndOutlineColor: 4,
44
+ };
45
+
46
+ /**
47
+ * @typedef {object} BufferPointRenderContext
48
+ * @property {VertexArray} [vertexArray]
49
+ * @property {Record<BufferPointAttribute, TypedArray>} [attributeArrays]
50
+ * @property {RenderState} [renderState]
51
+ * @property {ShaderProgram} [shaderProgram]
52
+ * @property {DrawCommand} [command]
53
+ * @property {Function} destroy
54
+ * @ignore
55
+ */
56
+
57
+ // Scratch variables.
58
+ const point = new BufferPoint();
59
+ const material = new BufferPointMaterial();
60
+ const pickColor = new Color();
61
+ const cartesian = new Cartesian3();
62
+ const encodedCartesian = new EncodedCartesian3();
63
+
64
+ /**
65
+ * @param {BufferPointCollection} collection
66
+ * @param {FrameState} frameState
67
+ * @param {BufferPointRenderContext} [renderContext]
68
+ * @returns {BufferPointRenderContext}
69
+ * @ignore
70
+ */
71
+ function renderBufferPointCollection(collection, frameState, renderContext) {
72
+ const context = frameState.context;
73
+ renderContext = renderContext || { destroy: destroyRenderContext };
74
+
75
+ if (!defined(renderContext.attributeArrays)) {
76
+ const featureCountMax = collection.primitiveCountMax;
77
+
78
+ renderContext.attributeArrays = {
79
+ positionHigh: new Float32Array(featureCountMax * 3),
80
+ positionLow: new Float32Array(featureCountMax * 3),
81
+ pickColor: new Uint8Array(featureCountMax * 4),
82
+ showSizeAndColor: new Float32Array(featureCountMax * 3),
83
+ outlineWidthAndOutlineColor: new Float32Array(featureCountMax * 2),
84
+ };
85
+ }
86
+
87
+ if (collection._dirtyCount > 0) {
88
+ const { attributeArrays } = renderContext;
89
+
90
+ const positionHighArray = attributeArrays.positionHigh;
91
+ const positionLowArray = attributeArrays.positionLow;
92
+ const pickColorArray = attributeArrays.pickColor;
93
+ const showSizeAndColorArray = attributeArrays.showSizeAndColor;
94
+ const outlineWidthAndOutlineColorArray =
95
+ attributeArrays.outlineWidthAndOutlineColor;
96
+
97
+ const { _dirtyOffset, _dirtyCount } = collection;
98
+
99
+ for (let i = _dirtyOffset, il = _dirtyOffset + _dirtyCount; i < il; i++) {
100
+ collection.get(i, point);
101
+
102
+ if (!point._dirty) {
103
+ continue;
104
+ }
105
+
106
+ point.getPosition(cartesian);
107
+ EncodedCartesian3.fromCartesian(cartesian, encodedCartesian);
108
+ point.getMaterial(material);
109
+ Color.fromRgba(point._pickId, pickColor);
110
+
111
+ positionHighArray[i * 3] = encodedCartesian.high.x;
112
+ positionHighArray[i * 3 + 1] = encodedCartesian.high.y;
113
+ positionHighArray[i * 3 + 2] = encodedCartesian.high.z;
114
+
115
+ positionLowArray[i * 3] = encodedCartesian.low.x;
116
+ positionLowArray[i * 3 + 1] = encodedCartesian.low.y;
117
+ positionLowArray[i * 3 + 2] = encodedCartesian.low.z;
118
+
119
+ pickColorArray[i * 4] = Color.floatToByte(pickColor.red);
120
+ pickColorArray[i * 4 + 1] = Color.floatToByte(pickColor.green);
121
+ pickColorArray[i * 4 + 2] = Color.floatToByte(pickColor.blue);
122
+ pickColorArray[i * 4 + 3] = Color.floatToByte(pickColor.alpha);
123
+
124
+ showSizeAndColorArray[i * 3] = point.show ? 1 : 0;
125
+ showSizeAndColorArray[i * 3 + 1] = material.size;
126
+ showSizeAndColorArray[i * 3 + 2] = AttributeCompression.encodeRGB8(
127
+ material.color,
128
+ );
129
+
130
+ outlineWidthAndOutlineColorArray[i * 2] = material.outlineWidth;
131
+ outlineWidthAndOutlineColorArray[i * 2 + 1] =
132
+ AttributeCompression.encodeRGB8(material.outlineColor);
133
+
134
+ point._dirty = false;
135
+ }
136
+ }
137
+
138
+ if (!defined(renderContext.vertexArray)) {
139
+ const { attributeArrays } = renderContext;
140
+
141
+ renderContext.vertexArray = new VertexArray({
142
+ context,
143
+ attributes: [
144
+ {
145
+ index: BufferPointAttributeLocations.positionHigh,
146
+ componentDatatype: ComponentDatatype.FLOAT,
147
+ componentsPerAttribute: 3,
148
+ vertexBuffer: Buffer.createVertexBuffer({
149
+ typedArray: attributeArrays.positionHigh,
150
+ context,
151
+ usage: BufferUsage.STATIC_DRAW,
152
+ }),
153
+ },
154
+ {
155
+ index: BufferPointAttributeLocations.positionLow,
156
+ componentDatatype: ComponentDatatype.FLOAT,
157
+ componentsPerAttribute: 3,
158
+ vertexBuffer: Buffer.createVertexBuffer({
159
+ typedArray: attributeArrays.positionLow,
160
+ context,
161
+ usage: BufferUsage.STATIC_DRAW,
162
+ }),
163
+ },
164
+ {
165
+ index: BufferPointAttributeLocations.pickColor,
166
+ componentDatatype: ComponentDatatype.UNSIGNED_BYTE,
167
+ componentsPerAttribute: 4,
168
+ vertexBuffer: Buffer.createVertexBuffer({
169
+ typedArray: attributeArrays.pickColor,
170
+ context,
171
+ usage: BufferUsage.STATIC_DRAW,
172
+ }),
173
+ },
174
+ {
175
+ index: BufferPointAttributeLocations.showSizeAndColor,
176
+ componentDatatype: ComponentDatatype.FLOAT,
177
+ componentsPerAttribute: 3,
178
+ vertexBuffer: Buffer.createVertexBuffer({
179
+ typedArray: attributeArrays.showSizeAndColor,
180
+ context,
181
+ usage: BufferUsage.STATIC_DRAW,
182
+ }),
183
+ },
184
+ {
185
+ index: BufferPointAttributeLocations.outlineWidthAndOutlineColor,
186
+ componentDatatype: ComponentDatatype.FLOAT,
187
+ componentsPerAttribute: 2,
188
+ vertexBuffer: Buffer.createVertexBuffer({
189
+ typedArray: attributeArrays.outlineWidthAndOutlineColor,
190
+ context,
191
+ usage: BufferUsage.STATIC_DRAW,
192
+ }),
193
+ },
194
+ ],
195
+ });
196
+ } else if (collection._dirtyCount > 0) {
197
+ for (const key in BufferPointAttributeLocations) {
198
+ if (Object.hasOwn(BufferPointAttributeLocations, key)) {
199
+ const attribute = /** @type {BufferPointAttribute} */ (key);
200
+ renderContext.vertexArray.copyAttributeFromRange(
201
+ BufferPointAttributeLocations[attribute],
202
+ renderContext.attributeArrays[attribute],
203
+ collection._dirtyOffset,
204
+ collection._dirtyCount,
205
+ );
206
+ }
207
+ }
208
+ }
209
+
210
+ if (!defined(renderContext.renderState)) {
211
+ renderContext.renderState = RenderState.fromCache({
212
+ blending: BlendingState.ALPHA_BLEND,
213
+ depthTest: { enabled: true },
214
+ });
215
+ }
216
+
217
+ if (!defined(renderContext.shaderProgram)) {
218
+ renderContext.shaderProgram = ShaderProgram.fromCache({
219
+ context,
220
+ vertexShaderSource: new ShaderSource({
221
+ sources: [BufferPointMaterialVS],
222
+ }),
223
+ fragmentShaderSource: new ShaderSource({
224
+ sources: [BufferPointMaterialFS],
225
+ }),
226
+ attributeLocations: BufferPointAttributeLocations,
227
+ });
228
+ }
229
+
230
+ if (!defined(renderContext.command)) {
231
+ renderContext.command = new DrawCommand({
232
+ vertexArray: renderContext.vertexArray,
233
+ renderState: renderContext.renderState,
234
+ shaderProgram: renderContext.shaderProgram,
235
+ primitiveType: PrimitiveType.POINTS,
236
+ pass: Pass.OPAQUE,
237
+ pickId: collection._allowPicking ? "v_pickColor" : undefined,
238
+ owner: collection,
239
+ count: collection.primitiveCount,
240
+ modelMatrix: collection.modelMatrix, // shared reference
241
+ boundingVolume: collection.boundingVolumeWC, // shared reference
242
+ debugShowBoundingVolume: collection.debugShowBoundingVolume,
243
+ });
244
+ }
245
+
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);
257
+
258
+ collection._dirtyCount = 0;
259
+ collection._dirtyOffset = 0;
260
+
261
+ return renderContext;
262
+ }
263
+
264
+ /**
265
+ * Destroys render context resources. Deleting properties from the context
266
+ * object isn't necessary, as collection.destroy() will discard the object.
267
+ * @ignore
268
+ */
269
+ function destroyRenderContext() {
270
+ const context = /** @type {BufferPointRenderContext} */ (this);
271
+
272
+ if (defined(context.vertexArray)) {
273
+ context.vertexArray.destroy();
274
+ }
275
+
276
+ if (defined(context.shaderProgram)) {
277
+ context.shaderProgram.destroy();
278
+ }
279
+
280
+ if (defined(context.renderState)) {
281
+ RenderState.removeFromCache(context.renderState);
282
+ }
283
+ }
284
+
285
+ export default renderBufferPointCollection;