@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
@@ -5,17 +5,17 @@ import RuntimeError from "../Core/RuntimeError.js";
5
5
  import ImageryLayerFeatureInfo from "./ImageryLayerFeatureInfo.js";
6
6
 
7
7
  /**
8
- * Describes the format in which to request GetFeatureInfo from a Web Map Service (WMS) server.
8
+ * Describes the format in which to request GetFeatureInfo from a Web Map Service (WMS) or Web Map Tile Service (WMTS) server.
9
9
  *
10
10
  * @alias GetFeatureInfoFormat
11
11
  * @constructor
12
12
  *
13
13
  * @param {string} type The type of response to expect from a GetFeatureInfo request. Valid
14
14
  * values are 'json', 'xml', 'html', or 'text'.
15
- * @param {string} [format] The info format to request from the WMS server. This is usually a
15
+ * @param {string} [format] The info format to request from the server. This is usually a
16
16
  * MIME type such as 'application/json' or text/xml'. If this parameter is not specified, the provider will request 'json'
17
17
  * using 'application/json', 'xml' using 'text/xml', 'html' using 'text/html', and 'text' using 'text/plain'.
18
- * @param {Function} [callback] A function to invoke with the GetFeatureInfo response from the WMS server
18
+ * @param {Function} [callback] A function to invoke with the GetFeatureInfo response from the server
19
19
  * in order to produce an array of picked {@link ImageryLayerFeatureInfo} instances. If this parameter is not specified,
20
20
  * a default function for the type of response is used.
21
21
  */
@@ -92,7 +92,6 @@ class GltfBufferViewLoader extends ResourceLoader {
92
92
  /**
93
93
  * The cache key of the resource.
94
94
  *
95
- * @memberof GltfBufferViewLoader.prototype
96
95
  *
97
96
  * @type {string}
98
97
  * @readonly
@@ -105,7 +104,6 @@ class GltfBufferViewLoader extends ResourceLoader {
105
104
  /**
106
105
  * The typed array containing buffer view data.
107
106
  *
108
- * @memberof GltfBufferViewLoader.prototype
109
107
  *
110
108
  * @type {Uint8Array}
111
109
  * @readonly
@@ -66,7 +66,6 @@ class GltfDracoLoader extends ResourceLoader {
66
66
  /**
67
67
  * The cache key of the resource.
68
68
  *
69
- * @memberof GltfDracoLoader.prototype
70
69
  *
71
70
  * @type {string}
72
71
  * @readonly
@@ -79,7 +78,6 @@ class GltfDracoLoader extends ResourceLoader {
79
78
  /**
80
79
  * The decoded data.
81
80
  *
82
- * @memberof GltfDracoLoader.prototype
83
81
  *
84
82
  * @type {object}
85
83
  * @readonly
@@ -65,7 +65,6 @@ class GltfImageLoader extends ResourceLoader {
65
65
  /**
66
66
  * The cache key of the resource.
67
67
  *
68
- * @memberof GltfImageLoader.prototype
69
68
  *
70
69
  * @type {string}
71
70
  * @readonly
@@ -78,7 +77,6 @@ class GltfImageLoader extends ResourceLoader {
78
77
  /**
79
78
  * The image.
80
79
  *
81
- * @memberof GltfImageLoader.prototype
82
80
  *
83
81
  * @type {Image|ImageBitmap|CompressedTextureBuffer}
84
82
  * @readonly
@@ -91,7 +89,6 @@ class GltfImageLoader extends ResourceLoader {
91
89
  /**
92
90
  * The mip levels. Only defined for KTX2 files containing mip levels.
93
91
  *
94
- * @memberof GltfImageLoader.prototype
95
92
  *
96
93
  * @type {Uint8Array[]}
97
94
  * @readonly
@@ -88,7 +88,6 @@ class GltfIndexBufferLoader extends ResourceLoader {
88
88
  /**
89
89
  * The cache key of the resource.
90
90
  *
91
- * @memberof GltfIndexBufferLoader.prototype
92
91
  *
93
92
  * @type {string}
94
93
  * @readonly
@@ -101,7 +100,6 @@ class GltfIndexBufferLoader extends ResourceLoader {
101
100
  /**
102
101
  * The index buffer. This is only defined when <code>loadBuffer</code> is true.
103
102
  *
104
- * @memberof GltfIndexBufferLoader.prototype
105
103
  *
106
104
  * @type {Buffer}
107
105
  * @readonly
@@ -114,7 +112,6 @@ class GltfIndexBufferLoader extends ResourceLoader {
114
112
  /**
115
113
  * The typed array containing indices. This is only defined when <code>loadTypedArray</code> is true.
116
114
  *
117
- * @memberof GltfIndexBufferLoader.prototype
118
115
  *
119
116
  * @type {Uint8Array|Uint16Array|Uint32Array}
120
117
  * @readonly
@@ -127,7 +124,6 @@ class GltfIndexBufferLoader extends ResourceLoader {
127
124
  /**
128
125
  * The index datatype after decode.
129
126
  *
130
- * @memberof GltfIndexBufferLoader.prototype
131
127
  *
132
128
  * @type {IndexDatatype}
133
129
  * @readonly
@@ -67,7 +67,6 @@ class GltfJsonLoader extends ResourceLoader {
67
67
  /**
68
68
  * The cache key of the resource.
69
69
  *
70
- * @memberof GltfJsonLoader.prototype
71
70
  *
72
71
  * @type {string}
73
72
  * @readonly
@@ -80,7 +79,6 @@ class GltfJsonLoader extends ResourceLoader {
80
79
  /**
81
80
  * The glTF JSON.
82
81
  *
83
- * @memberof GltfJsonLoader.prototype
84
82
  *
85
83
  * @type {object}
86
84
  * @readonly
@@ -61,7 +61,9 @@ const {
61
61
  Specular,
62
62
  Anisotropy,
63
63
  Clearcoat,
64
+ LineStyle,
64
65
  Material,
66
+ Vector,
65
67
  } = ModelComponents;
66
68
 
67
69
  /**
@@ -285,7 +287,6 @@ class GltfLoader extends ResourceLoader {
285
287
  /**
286
288
  * The cache key of the resource.
287
289
  *
288
- * @memberof GltfLoader.prototype
289
290
  *
290
291
  * @type {string}
291
292
  * @readonly
@@ -298,7 +299,6 @@ class GltfLoader extends ResourceLoader {
298
299
  /**
299
300
  * The loaded components.
300
301
  *
301
- * @memberof GltfLoader.prototype
302
302
  *
303
303
  * @type {ModelComponents.Components}
304
304
  * @readonly
@@ -311,7 +311,6 @@ class GltfLoader extends ResourceLoader {
311
311
  /**
312
312
  * The loaded glTF json.
313
313
  *
314
- * @memberof GltfLoader.prototype
315
314
  *
316
315
  * @type {object}
317
316
  * @readonly
@@ -327,7 +326,6 @@ class GltfLoader extends ResourceLoader {
327
326
  /**
328
327
  * Returns true if textures are loaded separately from the other glTF resources.
329
328
  *
330
- * @memberof GltfLoader.prototype
331
329
  *
332
330
  * @type {boolean}
333
331
  * @readonly
@@ -340,7 +338,6 @@ class GltfLoader extends ResourceLoader {
340
338
  /**
341
339
  * true if textures are loaded, useful when incrementallyLoadTextures is true
342
340
  *
343
- * @memberof GltfLoader.prototype
344
341
  *
345
342
  * @type {boolean}
346
343
  * @readonly
@@ -1756,6 +1753,34 @@ function loadClearcoat(loader, clearcoatInfo, frameState) {
1756
1753
  return clearcoat;
1757
1754
  }
1758
1755
 
1756
+ function loadLineStyle(lineStyleInfo) {
1757
+ if (!defined(lineStyleInfo)) {
1758
+ return undefined;
1759
+ }
1760
+
1761
+ const lineStyle = new LineStyle();
1762
+
1763
+ if (defined(lineStyleInfo.width)) {
1764
+ const width = lineStyleInfo.width;
1765
+ if (width > 0 && Math.floor(width) === width) {
1766
+ lineStyle.width = width;
1767
+ }
1768
+ }
1769
+
1770
+ if (defined(lineStyleInfo.pattern)) {
1771
+ const pattern = lineStyleInfo.pattern;
1772
+ if (pattern >= 0 && pattern <= 65535 && Math.floor(pattern) === pattern) {
1773
+ lineStyle.pattern = pattern;
1774
+ }
1775
+ }
1776
+
1777
+ if (!defined(lineStyle.width) && !defined(lineStyle.pattern)) {
1778
+ return undefined;
1779
+ }
1780
+
1781
+ return lineStyle;
1782
+ }
1783
+
1759
1784
  /**
1760
1785
  * Load textures and parse factors and flags for a glTF material
1761
1786
  *
@@ -1840,6 +1865,8 @@ function loadMaterial(loader, gltfMaterial, frameState) {
1840
1865
  }
1841
1866
  }
1842
1867
 
1868
+ material.lineStyle = loadLineStyle(extensions.BENTLEY_materials_line_style);
1869
+
1843
1870
  return material;
1844
1871
  }
1845
1872
 
@@ -2031,6 +2058,132 @@ function fetchSpzExtensionFrom(extensions) {
2031
2058
  return undefined;
2032
2059
  }
2033
2060
 
2061
+ function getEdgeVisibilityMaterialColor(loader, materialIndex) {
2062
+ if (!defined(materialIndex)) {
2063
+ return undefined;
2064
+ }
2065
+
2066
+ const materials = loader.gltfJson.materials;
2067
+ if (
2068
+ !defined(materials) ||
2069
+ materialIndex < 0 ||
2070
+ materialIndex >= materials.length
2071
+ ) {
2072
+ return undefined;
2073
+ }
2074
+
2075
+ const material = materials[materialIndex];
2076
+ if (!defined(material)) {
2077
+ return undefined;
2078
+ }
2079
+
2080
+ const metallicRoughness =
2081
+ material.pbrMetallicRoughness ?? Frozen.EMPTY_OBJECT;
2082
+ const color = fromArray(Cartesian4, metallicRoughness.baseColorFactor);
2083
+
2084
+ if (defined(color)) {
2085
+ return color;
2086
+ }
2087
+
2088
+ return new Cartesian4(1.0, 1.0, 1.0, 1.0);
2089
+ }
2090
+
2091
+ function getLineStringPrimitiveRestartValue(componentType) {
2092
+ switch (componentType) {
2093
+ case ComponentDatatype.UNSIGNED_BYTE:
2094
+ return 255;
2095
+ case ComponentDatatype.UNSIGNED_SHORT:
2096
+ return 65535;
2097
+ case ComponentDatatype.UNSIGNED_INT:
2098
+ return 4294967295;
2099
+ default:
2100
+ throw new RuntimeError(
2101
+ "EXT_mesh_primitive_edge_visibility line strings indices must use unsigned scalar component types.",
2102
+ );
2103
+ }
2104
+ }
2105
+
2106
+ function loadEdgeVisibilityLineStrings(
2107
+ loader,
2108
+ lineStringDefinitions,
2109
+ defaultMaterialIndex,
2110
+ ) {
2111
+ if (!defined(lineStringDefinitions) || lineStringDefinitions.length === 0) {
2112
+ return undefined;
2113
+ }
2114
+
2115
+ const result = new Array(lineStringDefinitions.length);
2116
+ for (let i = 0; i < lineStringDefinitions.length; i++) {
2117
+ const definition = lineStringDefinitions[i] ?? Frozen.EMPTY_OBJECT;
2118
+ const accessorId = definition.indices;
2119
+ const accessor = loader.gltfJson.accessors[accessorId];
2120
+
2121
+ if (!defined(accessor)) {
2122
+ throw new RuntimeError("Edge visibility line string accessor not found!");
2123
+ }
2124
+
2125
+ const indices = loadAccessor(loader, accessor);
2126
+ const restartIndex = getLineStringPrimitiveRestartValue(
2127
+ accessor.componentType,
2128
+ );
2129
+ const materialIndex = defined(definition.material)
2130
+ ? definition.material
2131
+ : defaultMaterialIndex;
2132
+
2133
+ result[i] = {
2134
+ indices: indices,
2135
+ restartIndex: restartIndex,
2136
+ componentType: accessor.componentType,
2137
+ materialColor: getEdgeVisibilityMaterialColor(loader, materialIndex),
2138
+ };
2139
+ }
2140
+
2141
+ return result;
2142
+ }
2143
+
2144
+ function loadEdgeVisibility(loader, edgeVisibilityExtension) {
2145
+ if (!defined(edgeVisibilityExtension)) {
2146
+ return undefined;
2147
+ }
2148
+
2149
+ const edgeVisibility = {};
2150
+
2151
+ const visibilityAccessorId = edgeVisibilityExtension.visibility;
2152
+ if (defined(visibilityAccessorId)) {
2153
+ const visibilityAccessor = loader.gltfJson.accessors[visibilityAccessorId];
2154
+ if (!defined(visibilityAccessor)) {
2155
+ throw new RuntimeError("Edge visibility accessor not found!");
2156
+ }
2157
+ edgeVisibility.visibility = loadAccessor(loader, visibilityAccessor);
2158
+ }
2159
+
2160
+ edgeVisibility.materialColor = getEdgeVisibilityMaterialColor(
2161
+ loader,
2162
+ edgeVisibilityExtension.material,
2163
+ );
2164
+
2165
+ if (defined(edgeVisibilityExtension.silhouetteNormals)) {
2166
+ const silhouetteNormalsAccessor =
2167
+ loader.gltfJson.accessors[edgeVisibilityExtension.silhouetteNormals];
2168
+ if (defined(silhouetteNormalsAccessor)) {
2169
+ edgeVisibility.silhouetteNormals = loadAccessor(
2170
+ loader,
2171
+ silhouetteNormalsAccessor,
2172
+ );
2173
+ }
2174
+ }
2175
+
2176
+ if (defined(edgeVisibilityExtension.lineStrings)) {
2177
+ edgeVisibility.lineStrings = loadEdgeVisibilityLineStrings(
2178
+ loader,
2179
+ edgeVisibilityExtension.lineStrings,
2180
+ edgeVisibilityExtension.material,
2181
+ );
2182
+ }
2183
+
2184
+ return edgeVisibility;
2185
+ }
2186
+
2034
2187
  /**
2035
2188
  * Load resources associated with a mesh primitive for a glTF node
2036
2189
  * @param {GltfLoader} loader
@@ -2055,6 +2208,10 @@ function loadPrimitive(loader, gltfPrimitive, hasInstances, frameState) {
2055
2208
  }
2056
2209
 
2057
2210
  const extensions = gltfPrimitive.extensions ?? Frozen.EMPTY_OBJECT;
2211
+ const meshVectorExtension = extensions.CESIUM_mesh_vector;
2212
+ if (defined(meshVectorExtension)) {
2213
+ primitive.vector = loadMeshVectorExtension(loader, meshVectorExtension);
2214
+ }
2058
2215
 
2059
2216
  let needsPostProcessing = false;
2060
2217
  const outlineExtension = extensions.CESIUM_primitive_outline;
@@ -2068,40 +2225,10 @@ function loadPrimitive(loader, gltfPrimitive, hasInstances, frameState) {
2068
2225
  );
2069
2226
  }
2070
2227
 
2071
- // Edge Visibility
2072
- const edgeVisibilityExtension = extensions.EXT_mesh_primitive_edge_visibility;
2073
- const hasEdgeVisibility = defined(edgeVisibilityExtension);
2074
- if (hasEdgeVisibility) {
2075
- const visibilityAccessor =
2076
- loader.gltfJson.accessors[edgeVisibilityExtension.visibility];
2077
- if (!defined(visibilityAccessor)) {
2078
- throw new RuntimeError("Edge visibility accessor not found!");
2079
- }
2080
- const visibilityValues = loadAccessor(loader, visibilityAccessor);
2081
- primitive.edgeVisibility = {
2082
- visibility: visibilityValues,
2083
- material: edgeVisibilityExtension.material,
2084
- };
2085
-
2086
- // Load silhouette normals
2087
- if (defined(edgeVisibilityExtension.silhouetteNormals)) {
2088
- const silhouetteNormalsAccessor =
2089
- loader.gltfJson.accessors[edgeVisibilityExtension.silhouetteNormals];
2090
- if (defined(silhouetteNormalsAccessor)) {
2091
- const silhouetteNormalsValues = loadAccessor(
2092
- loader,
2093
- silhouetteNormalsAccessor,
2094
- );
2095
- primitive.edgeVisibility.silhouetteNormals = silhouetteNormalsValues;
2096
- }
2097
- }
2098
-
2099
- // Load line strings
2100
- if (defined(edgeVisibilityExtension.lineStrings)) {
2101
- primitivePlan.edgeVisibility.lineStrings =
2102
- edgeVisibilityExtension.lineStrings;
2103
- }
2104
- }
2228
+ primitive.edgeVisibility = loadEdgeVisibility(
2229
+ loader,
2230
+ extensions.EXT_mesh_primitive_edge_visibility,
2231
+ );
2105
2232
 
2106
2233
  //support the latest glTF spec and the legacy extension
2107
2234
  const spzExtension = fetchSpzExtensionFrom(extensions);
@@ -2238,6 +2365,50 @@ function loadPrimitiveOutline(loader, outlineExtension) {
2238
2365
  return loadAccessor(loader, accessor, useQuaternion);
2239
2366
  }
2240
2367
 
2368
+ /**
2369
+ * Load CESIUM_mesh_vector.
2370
+ * @param {GltfLoader} loader
2371
+ * @param {*} meshVectorExtension
2372
+ * @returns {ModelComponents.Vector}
2373
+ * @ignore
2374
+ */
2375
+ function loadMeshVectorExtension(loader, meshVectorExtension) {
2376
+ if (!defined(meshVectorExtension)) {
2377
+ return undefined;
2378
+ }
2379
+
2380
+ const result = new Vector();
2381
+ result.vector = meshVectorExtension.vector;
2382
+ result.count = meshVectorExtension.count;
2383
+
2384
+ const accessors = loader.gltfJson.accessors;
2385
+ function loadVectorAccessor(accessorId, name) {
2386
+ if (!defined(accessorId)) {
2387
+ return undefined;
2388
+ }
2389
+ return loadAccessor(loader, accessors[accessorId]);
2390
+ }
2391
+
2392
+ result.polygonAttributeOffsets = loadVectorAccessor(
2393
+ meshVectorExtension.polygonAttributeOffsets,
2394
+ "polygonAttributeOffsets",
2395
+ );
2396
+ result.polygonHoleCounts = loadVectorAccessor(
2397
+ meshVectorExtension.polygonHoleCounts,
2398
+ "polygonHoleCounts",
2399
+ );
2400
+ result.polygonHoleOffsets = loadVectorAccessor(
2401
+ meshVectorExtension.polygonHoleOffsets,
2402
+ "polygonHoleOffsets",
2403
+ );
2404
+ result.polygonIndicesOffsets = loadVectorAccessor(
2405
+ meshVectorExtension.polygonIndicesOffsets,
2406
+ "polygonIndicesOffsets",
2407
+ );
2408
+
2409
+ return result;
2410
+ }
2411
+
2241
2412
  // For EXT_mesh_features
2242
2413
  function loadPrimitiveFeatures(
2243
2414
  loader,
@@ -2512,6 +2683,7 @@ function loadNode(loader, gltfNode, frameState) {
2512
2683
  const nodeExtensions = gltfNode.extensions ?? Frozen.EMPTY_OBJECT;
2513
2684
  const instancingExtension = nodeExtensions.EXT_mesh_gpu_instancing;
2514
2685
  const articulationsExtension = nodeExtensions.AGI_articulations;
2686
+ const meshVectorExtension = nodeExtensions.CESIUM_mesh_vector;
2515
2687
 
2516
2688
  if (defined(instancingExtension)) {
2517
2689
  if (loader._loadForClassification) {
@@ -2526,6 +2698,10 @@ function loadNode(loader, gltfNode, frameState) {
2526
2698
  node.articulationName = articulationsExtension.articulationName;
2527
2699
  }
2528
2700
 
2701
+ if (defined(meshVectorExtension)) {
2702
+ node.meshVector = meshVectorExtension;
2703
+ }
2704
+
2529
2705
  const meshId = gltfNode.mesh;
2530
2706
  if (defined(meshId)) {
2531
2707
  const mesh = loader.gltfJson.meshes[meshId];
@@ -178,6 +178,20 @@ GltfLoaderUtil.createModelTextureReader = function (options) {
178
178
  modelTextureReader.transform = transform;
179
179
  modelTextureReader.channels = channels;
180
180
 
181
+ // EXT_textureInfo_constant_lod extension
182
+ const constantLodExtension =
183
+ textureInfo.extensions?.EXT_textureInfo_constant_lod;
184
+ if (defined(constantLodExtension)) {
185
+ modelTextureReader.constantLod = {
186
+ repetitions: constantLodExtension.repetitions ?? 1.0,
187
+ offset: defined(constantLodExtension.offset)
188
+ ? Cartesian2.unpack(constantLodExtension.offset)
189
+ : Cartesian2.ZERO,
190
+ minClampDistance: constantLodExtension.minClampDistance ?? 1.0,
191
+ maxClampDistance: constantLodExtension.maxClampDistance ?? 4294967296.0,
192
+ };
193
+ }
194
+
181
195
  return modelTextureReader;
182
196
  };
183
197
 
@@ -1,10 +1,88 @@
1
1
  import Check from "../Core/Check.js";
2
2
  import Frozen from "../Core/Frozen.js";
3
3
  import defined from "../Core/defined.js";
4
+ import RuntimeError from "../Core/RuntimeError.js";
4
5
  import ResourceLoader from "./ResourceLoader.js";
5
6
  import ResourceLoaderState from "./ResourceLoaderState.js";
6
7
  import { loadSpz } from "@spz-loader/core";
7
8
 
9
+ // Cumulative number of SH coefficient floats per splat per channel for each
10
+ // degree. Degree 0 has no extra SH data (base color is stored separately in
11
+ // the "colors" attribute). Degrees 1-3 follow the standard SH basis count:
12
+ // l=1 adds 3 bands × 3 channels = 9; l=2 adds 5 × 3 = 15 (total 24);
13
+ // l=3 adds 7 × 3 = 21 (total 45).
14
+ const SH_FLOATS_PER_SPLAT_BY_DEGREE = [0, 9, 24, 45];
15
+
16
+ // Non-SH attribute floats per splat: position(3) + scale(3) + rotation(4)
17
+ // + opacity(1) + color(3) = 14.
18
+ const BASE_FLOATS_PER_SPLAT = 14;
19
+
20
+ // The spz-loader WASM module is compiled with a signed 32-bit address space,
21
+ // giving a hard ceiling of 2 GB. An additional factor of ~2× is required
22
+ // because spz-loader copies every decoded C++ vector into a JavaScript
23
+ // TypedArray. 1.6 GB is used as a conservative pre-flight threshold.
24
+ const WASM_MEMORY_LIMIT_BYTES = 1.6 * 1024 * 1024 * 1024;
25
+
26
+ /**
27
+ * Derives the point count and maximum spherical harmonics degree for an SPZ
28
+ * primitive from the glTF JSON, without touching the compressed binary data.
29
+ * <p>
30
+ * The SPZ payload is gzip-compressed and therefore cannot be inspected
31
+ * directly. Instead, <code>numPoints</code> is read from the POSITION
32
+ * accessor's <code>count</code> field and <code>shDegree</code> is inferred
33
+ * from the highest-numbered <code>SH_DEGREE_n</code> attribute present in
34
+ * the primitive. Returns <code>undefined</code> if the required information
35
+ * is unavailable.
36
+ * </p>
37
+ * @param {object} gltf The glTF JSON object.
38
+ * @param {object} primitive The glTF primitive object.
39
+ * @returns {{ numPoints: number, shDegree: number }|undefined}
40
+ * @private
41
+ */
42
+ function getSpzInfoFromGltf(gltf, primitive) {
43
+ const attributes = primitive?.attributes;
44
+ if (!defined(attributes)) {
45
+ return undefined;
46
+ }
47
+
48
+ const positionAccessorId = attributes["POSITION"];
49
+ if (!defined(positionAccessorId)) {
50
+ return undefined;
51
+ }
52
+ const accessor = gltf?.accessors?.[positionAccessorId];
53
+ if (!defined(accessor) || accessor.count <= 0) {
54
+ return undefined;
55
+ }
56
+
57
+ let shDegree = 0;
58
+ for (const semantic in attributes) {
59
+ if (Object.prototype.hasOwnProperty.call(attributes, semantic)) {
60
+ const match = /SH_DEGREE_(\d+)_COEF_/.exec(semantic);
61
+ if (match) {
62
+ shDegree = Math.max(shDegree, parseInt(match[1], 10));
63
+ }
64
+ }
65
+ }
66
+
67
+ return { numPoints: accessor.count, shDegree };
68
+ }
69
+
70
+ /**
71
+ * Estimates the peak memory consumption (in bytes) of decoding an SPZ file
72
+ * with the given parameters. The estimate accounts for both the WASM heap
73
+ * allocations and the JavaScript TypedArray copies produced by spz-loader.
74
+ * @param {number} numPoints Number of Gaussian splats.
75
+ * @param {number} shDegree Spherical harmonics degree (0–3).
76
+ * @returns {number} Estimated byte count.
77
+ * @private
78
+ */
79
+ function estimateSpzMemoryBytes(numPoints, shDegree) {
80
+ const floatsPerPoint =
81
+ BASE_FLOATS_PER_SPLAT + (SH_FLOATS_PER_SPLAT_BY_DEGREE[shDegree] ?? 0);
82
+ // ×2 accounts for WASM heap + JS TypedArray mirror.
83
+ return numPoints * floatsPerPoint * Float32Array.BYTES_PER_ELEMENT * 2;
84
+ }
85
+
8
86
  /**
9
87
  * Load a SPZ buffer from a glTF.
10
88
  * <p>
@@ -63,7 +141,6 @@ class GltfSpzLoader extends ResourceLoader {
63
141
 
64
142
  /**
65
143
  * The cache key of the resource.
66
- * @memberof GltfSpzLoader.prototype
67
144
  * @type {string}
68
145
  * @readonly
69
146
  * @private
@@ -74,7 +151,6 @@ class GltfSpzLoader extends ResourceLoader {
74
151
 
75
152
  /**
76
153
  * The decoded SPZ data.
77
- * @memberof GltfSpzLoader.prototype
78
154
  * @type {object}
79
155
  * @readonly
80
156
  * @private
@@ -128,6 +204,36 @@ class GltfSpzLoader extends ResourceLoader {
128
204
  return false;
129
205
  }
130
206
 
207
+ // Reject oversized SPZ payloads before invoking the WASM decoder.
208
+ // The spz-loader WASM module has a hard 2 GB memory ceiling; exceeding
209
+ // it causes an unrecoverable Aborted() call with no useful diagnostic.
210
+ // See: https://github.com/CesiumGS/cesium/issues/13283
211
+ //
212
+ // The SPZ binary is gzip-compressed, so its header cannot be read
213
+ // directly. Point count and SH degree are therefore derived from the
214
+ // glTF JSON, which is available at this stage.
215
+ const spzInfo = getSpzInfoFromGltf(this._gltf, this._primitive);
216
+ if (defined(spzInfo)) {
217
+ const estimatedBytes = estimateSpzMemoryBytes(
218
+ spzInfo.numPoints,
219
+ spzInfo.shDegree,
220
+ );
221
+ if (estimatedBytes > WASM_MEMORY_LIMIT_BYTES) {
222
+ const estimatedMB = Math.round(estimatedBytes / (1024 * 1024));
223
+ handleError(
224
+ this,
225
+ new RuntimeError(
226
+ `SPZ data too large to decode: ${spzInfo.numPoints.toLocaleString()} splats ` +
227
+ `with spherical harmonics degree ${spzInfo.shDegree} would require ` +
228
+ `approximately ${estimatedMB} MB, which exceeds the WASM memory limit. ` +
229
+ `Consider using a lower spherical harmonics degree or splitting the ` +
230
+ `dataset into smaller tiles.`,
231
+ ),
232
+ );
233
+ return false;
234
+ }
235
+ }
236
+
131
237
  const decodePromise = loadSpz(this._bufferViewTypedArray, {
132
238
  unpackOptions: { coordinateSystem: "UNSPECIFIED" },
133
239
  });
@@ -214,4 +320,5 @@ async function processDecode(loader, decodePromise) {
214
320
  }
215
321
  }
216
322
 
323
+ export { estimateSpzMemoryBytes, getSpzInfoFromGltf };
217
324
  export default GltfSpzLoader;
@@ -82,7 +82,6 @@ class GltfStructuralMetadataLoader extends ResourceLoader {
82
82
  /**
83
83
  * The cache key of the resource.
84
84
  *
85
- * @memberof GltfStructuralMetadataLoader.prototype
86
85
  *
87
86
  * @type {string}
88
87
  * @readonly
@@ -95,7 +94,6 @@ class GltfStructuralMetadataLoader extends ResourceLoader {
95
94
  /**
96
95
  * The parsed structural metadata
97
96
  *
98
- * @memberof GltfStructuralMetadataLoader.prototype
99
97
  *
100
98
  * @type {StructuralMetadata}
101
99
  * @readonly
@@ -83,7 +83,6 @@ class GltfTextureLoader extends ResourceLoader {
83
83
  /**
84
84
  * The cache key of the resource.
85
85
  *
86
- * @memberof GltfTextureLoader.prototype
87
86
  *
88
87
  * @type {string}
89
88
  * @readonly
@@ -96,7 +95,6 @@ class GltfTextureLoader extends ResourceLoader {
96
95
  /**
97
96
  * The texture.
98
97
  *
99
- * @memberof GltfTextureLoader.prototype
100
98
  *
101
99
  * @type {Texture}
102
100
  * @readonly