@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
@@ -9,8 +9,13 @@ import AttributeCompression from "../../Core/AttributeCompression.js";
9
9
  import IndexDatatype from "../../Core/IndexDatatype.js";
10
10
  import PrimitiveType from "../../Core/PrimitiveType.js";
11
11
  import Matrix4 from "../../Core/Matrix4.js";
12
+ import Quaternion from "../../Core/Quaternion.js";
13
+ import Transforms from "../../Core/Transforms.js";
12
14
 
13
15
  import AttributeType from "../AttributeType.js";
16
+ import InstanceAttributeSemantic from "../InstanceAttributeSemantic.js";
17
+ import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
18
+ import ModelUtility from "./ModelUtility.js";
14
19
 
15
20
  /**
16
21
  * A class for reading the data from a <code>ModelComponents.Attribute</code>.
@@ -53,7 +58,7 @@ class ModelReader {
53
58
  *
54
59
  * The result will be THE actual attribute data.
55
60
  *
56
- * @param {ModelComponents.Attribute} attribute The attribute
61
+ * @param {Attribute} attribute The attribute
57
62
  * @returns {TypedArray} The attribute data
58
63
  */
59
64
  static readAttributeAsTypedArray(attribute) {
@@ -144,7 +149,20 @@ class ModelReader {
144
149
  const byteStride = attribute.byteStride;
145
150
  const bytesPerComponent = ComponentDatatype.getSizeInBytes(componentType);
146
151
  const defaultByteStride = componentsPerElement * bytesPerComponent;
147
- if (!defined(byteStride) || byteStride === defaultByteStride) {
152
+
153
+ const isDefaultStride =
154
+ !defined(byteStride) || byteStride === defaultByteStride;
155
+ const hasTypedArray = defined(attribute.typedArray);
156
+
157
+ // If in-memory — return as-is
158
+ // Important: typedArray is already tightly-packed on creation (See: ModelComponents.typedArray and GltfLoader.getPackedTypedArray)
159
+ // byteOffset and byteStride should thus be ignored
160
+ if (hasTypedArray) {
161
+ return attribute.typedArray;
162
+ }
163
+
164
+ // Non-interleaved — copy from typedArray or read from GPU
165
+ if (isDefaultStride) {
148
166
  const typedArray = ComponentDatatype.createTypedArray(
149
167
  componentType,
150
168
  totalComponentCount,
@@ -161,6 +179,8 @@ class ModelReader {
161
179
  // have ONE "TypedArray[] getThemFrom(buffer)" call that
162
180
  // returns all of the (interleaved) attributes at once,
163
181
  // but this requires abstractions that we don't have.
182
+
183
+ // Read back from GPU if not available in memory
164
184
  const fullTypedArray = new Uint8Array(buffer.sizeInBytes);
165
185
  buffer.getBufferData(fullTypedArray);
166
186
 
@@ -320,8 +340,8 @@ class ModelReader {
320
340
  const c = new Cartesian3();
321
341
  for (let i = 0; i < elementCount; i++) {
322
342
  Cartesian3.unpack(quantizedTypedArray, i * 3, c);
323
- AttributeCompression.octDecodeInRange(c, normalizationRange, c);
324
- Cartesian3.pack(dequantizedTypedArray, c, i * 3);
343
+ AttributeCompression.octDecodeInRange(c.x, c.y, normalizationRange, c);
344
+ Cartesian3.pack(c, dequantizedTypedArray, i * 3);
325
345
  }
326
346
  return dequantizedTypedArray;
327
347
  }
@@ -645,6 +665,33 @@ class ModelReader {
645
665
  return result;
646
666
  }
647
667
 
668
+ /**
669
+ * Reads feature IDs from an implicit range feature ID set into a typed array.
670
+ *
671
+ * Generates values using <code>offset + Math.floor(i / repeat)</code> for
672
+ * each vertex. If <code>repeat</code> is undefined, all values are set to
673
+ * <code>offset</code>.
674
+ *
675
+ * @param {FeatureIdImplicitRange} featureIdSet The implicit range feature ID set.
676
+ * @param {object} attributeOwner An object with an <code>attributes</code> array
677
+ * (a primitive or an instances object)
678
+ * @returns {Float32Array} The generated feature ID values.
679
+ */
680
+ static readImplicitRangeAsTypedArray(featureIdSet, attributeOwner) {
681
+ const count = attributeOwner.attributes[0]?.count ?? 0;
682
+ const offset = featureIdSet.offset;
683
+ const repeat = featureIdSet.repeat;
684
+ const typedArray = new Float32Array(count);
685
+ if (defined(repeat)) {
686
+ for (let i = 0; i < count; i++) {
687
+ typedArray[i] = offset + Math.floor(i / repeat);
688
+ }
689
+ } else {
690
+ typedArray.fill(offset);
691
+ }
692
+ return typedArray;
693
+ }
694
+
648
695
  /**
649
696
  * Read the indices values from the given primitive indices, and
650
697
  * return them as a typed array.
@@ -805,6 +852,430 @@ class ModelReader {
805
852
  `UNSIGNED_INT (${IndexDatatype.UNSIGNED_INT}, but is ${indexDatatype}`,
806
853
  );
807
854
  }
855
+
856
+ /**
857
+ * Per-instance data combining a transform matrix with an optional feature ID.
858
+ *
859
+ * @typedef {object} ModelReader.Instance
860
+ * @property {Matrix4} transform The instance transform matrix.
861
+ * @property {number} [featureId] The per-instance feature ID, or undefined.
862
+ *
863
+ * @private
864
+ */
865
+
866
+ /**
867
+ * A callback invoked by {@link ModelReader.forEachPrimitive} for each
868
+ * runtime primitive in the model.
869
+ *
870
+ * @callback ModelReader.ForEachPrimitiveCallback
871
+ * @param {object} runtimePrimitive The runtime primitive wrapper.
872
+ * @param {object} primitive The underlying model primitive (runtimePrimitive.primitive).
873
+ * @param {ModelReader.Instance[]} instances Per-instance data (transforms and optional feature IDs).
874
+ * @param {Matrix4} computedModelMatrix The computed model matrix for the node.
875
+ *
876
+ * @private
877
+ */
878
+
879
+ /**
880
+ * Iterates over every primitive in a model's scene graph, computing
881
+ * node transforms and instance transforms once per node and invoking
882
+ * a callback for each runtime primitive.
883
+ * <p>
884
+ * When a map projection is provided, the computed model matrix is
885
+ * projected to 2D via {@link Transforms.basisTo2D}.
886
+ * </p>
887
+ *
888
+ * @param {Model} model The model whose scene graph to traverse.
889
+ * @param {object} [options] Object with the following properties:
890
+ * @param {MapProjection} [options.mapProjection] The map projection for 2D mode. When defined, the computed model matrix is projected to 2D.
891
+ * @param {string} [options.instanceFeatureIdLabel] The label used to select which instance feature ID set to read. When defined, per-instance feature IDs are fetched. When undefined, feature IDs are not fetched.
892
+ * @param {ModelReader.ForEachPrimitiveCallback} callback The function invoked for each primitive.
893
+ */
894
+ static forEachPrimitive(model, options, callback) {
895
+ const mapProjection = options?.mapProjection;
896
+ const instanceFeatureIdLabel = options?.instanceFeatureIdLabel;
897
+ const sceneGraph = model.sceneGraph;
898
+ if (!defined(sceneGraph)) {
899
+ return;
900
+ }
901
+
902
+ const scratchNodeTransforms = {
903
+ nodeComputedTransform: new Matrix4(),
904
+ modelMatrix: new Matrix4(),
905
+ computedModelMatrix: new Matrix4(),
906
+ };
907
+
908
+ const nodes = sceneGraph._runtimeNodes;
909
+ const nodesLength = nodes.length;
910
+
911
+ for (let n = 0; n < nodesLength; n++) {
912
+ const runtimeNode = nodes[n];
913
+
914
+ const nodeTransforms = ModelReader.computeNodeTransforms(
915
+ runtimeNode,
916
+ sceneGraph,
917
+ model,
918
+ scratchNodeTransforms,
919
+ );
920
+
921
+ let computedModelMatrix = nodeTransforms.computedModelMatrix;
922
+
923
+ if (defined(mapProjection)) {
924
+ computedModelMatrix = Transforms.basisTo2D(
925
+ mapProjection,
926
+ computedModelMatrix,
927
+ computedModelMatrix,
928
+ );
929
+ }
930
+
931
+ const instanceTransforms = ModelReader.computeInstanceTransforms(
932
+ runtimeNode,
933
+ computedModelMatrix,
934
+ nodeTransforms.nodeComputedTransform,
935
+ nodeTransforms.modelMatrix,
936
+ );
937
+
938
+ const instanceFeatureIds = defined(instanceFeatureIdLabel)
939
+ ? ModelReader.computeInstanceFeatureIds(
940
+ runtimeNode,
941
+ instanceFeatureIdLabel,
942
+ )
943
+ : undefined;
944
+
945
+ const instances = [];
946
+ for (let i = 0; i < instanceTransforms.length; i++) {
947
+ instances.push({
948
+ transform: instanceTransforms[i],
949
+ featureId: defined(instanceFeatureIds)
950
+ ? instanceFeatureIds[i]
951
+ : undefined,
952
+ });
953
+ }
954
+
955
+ const primitivesLength = runtimeNode.runtimePrimitives.length;
956
+ for (let p = 0; p < primitivesLength; p++) {
957
+ const runtimePrimitive = runtimeNode.runtimePrimitives[p];
958
+ callback(
959
+ runtimePrimitive,
960
+ runtimePrimitive.primitive,
961
+ instances,
962
+ computedModelMatrix,
963
+ );
964
+ }
965
+ }
966
+ }
967
+
968
+ /**
969
+ * Computes the model matrix for a runtime node, accounting for instancing
970
+ * and world-space transforms.
971
+ *
972
+ * @param {object} runtimeNode The runtime node.
973
+ * @param {ModelSceneGraph} sceneGraph The model scene graph.
974
+ * @param {Model} model The model.
975
+ * @param {object} result An object with scratch matrices: { nodeComputedTransform: Matrix4, modelMatrix: Matrix4, computedModelMatrix: Matrix4 }.
976
+ * @returns {object} The result parameter, populated with the computed transforms.
977
+ *
978
+ */
979
+ static computeNodeTransforms(runtimeNode, sceneGraph, model, result) {
980
+ const node = runtimeNode.node;
981
+
982
+ let nodeComputedTransform = Matrix4.clone(
983
+ runtimeNode.computedTransform,
984
+ result.nodeComputedTransform,
985
+ );
986
+ let modelMatrix = Matrix4.clone(
987
+ sceneGraph.computedModelMatrix,
988
+ result.modelMatrix,
989
+ );
990
+
991
+ const instances = node.instances;
992
+ if (defined(instances)) {
993
+ if (instances.transformInWorldSpace) {
994
+ // Replicate the multiplication order in LegacyInstancingStageVS.
995
+ modelMatrix = Matrix4.multiplyTransformation(
996
+ model.modelMatrix,
997
+ sceneGraph.components.transform,
998
+ modelMatrix,
999
+ );
1000
+ nodeComputedTransform = Matrix4.multiplyTransformation(
1001
+ sceneGraph.axisCorrectionMatrix,
1002
+ runtimeNode.computedTransform,
1003
+ nodeComputedTransform,
1004
+ );
1005
+ }
1006
+ }
1007
+
1008
+ const computedModelMatrix = Matrix4.multiplyTransformation(
1009
+ modelMatrix,
1010
+ nodeComputedTransform,
1011
+ result.computedModelMatrix,
1012
+ );
1013
+
1014
+ result.computedModelMatrix = computedModelMatrix;
1015
+ result.nodeComputedTransform = nodeComputedTransform;
1016
+ result.modelMatrix = modelMatrix;
1017
+ return result;
1018
+ }
1019
+
1020
+ /**
1021
+ * Builds an array of instance transforms for a node.
1022
+ * If the node is not instanced, returns an array containing only the
1023
+ * computedModelMatrix.
1024
+ *
1025
+ * @param {object} runtimeNode The runtime node.
1026
+ * @param {Matrix4} computedModelMatrix The computed model matrix.
1027
+ * @param {Matrix4} nodeComputedTransform The node computed transform.
1028
+ * @param {Matrix4} modelMatrix The model matrix.
1029
+ * @returns {Matrix4[]}
1030
+ */
1031
+ static computeInstanceTransforms(
1032
+ runtimeNode,
1033
+ computedModelMatrix,
1034
+ nodeComputedTransform,
1035
+ modelMatrix,
1036
+ ) {
1037
+ const transforms = [];
1038
+ const node = runtimeNode.node;
1039
+ const instances = node.instances;
1040
+
1041
+ if (defined(instances)) {
1042
+ const transformsCount = instances.attributes[0].count;
1043
+ const instanceComponentDatatype =
1044
+ instances.attributes[0].componentDatatype;
1045
+
1046
+ const transformElements = 12;
1047
+ let transformsTypedArray = runtimeNode.transformsTypedArray;
1048
+
1049
+ if (!defined(transformsTypedArray)) {
1050
+ const instanceTransformsBuffer = runtimeNode.instancingTransformsBuffer;
1051
+ if (defined(instanceTransformsBuffer)) {
1052
+ transformsTypedArray = ComponentDatatype.createTypedArray(
1053
+ instanceComponentDatatype,
1054
+ transformsCount * transformElements,
1055
+ );
1056
+ instanceTransformsBuffer.getBufferData(transformsTypedArray);
1057
+ }
1058
+ }
1059
+
1060
+ if (defined(transformsTypedArray)) {
1061
+ ModelReader.computeInstanceTransformsFromTypedArray(
1062
+ transformsTypedArray,
1063
+ transformsCount,
1064
+ transforms,
1065
+ );
1066
+ } else {
1067
+ ModelReader.computeInstanceTransformsFromAttributes(
1068
+ instances,
1069
+ transformsCount,
1070
+ transforms,
1071
+ );
1072
+ }
1073
+
1074
+ for (let i = 0; i < transforms.length; i++) {
1075
+ const transform = transforms[i];
1076
+ if (instances.transformInWorldSpace) {
1077
+ Matrix4.multiplyTransformation(
1078
+ transform,
1079
+ nodeComputedTransform,
1080
+ transform,
1081
+ );
1082
+ Matrix4.multiplyTransformation(modelMatrix, transform, transform);
1083
+ } else {
1084
+ Matrix4.multiplyTransformation(
1085
+ computedModelMatrix,
1086
+ transform,
1087
+ transform,
1088
+ );
1089
+ }
1090
+ }
1091
+ }
1092
+
1093
+ if (transforms.length === 0) {
1094
+ transforms.push(computedModelMatrix);
1095
+ }
1096
+
1097
+ return transforms;
1098
+ }
1099
+
1100
+ /**
1101
+ * Builds an array of per-instance feature IDs for a node.
1102
+ * If the node is not instanced or has no matching feature ID set,
1103
+ * returns <code>undefined</code>.
1104
+ *
1105
+ * @param {object} runtimeNode The runtime node.
1106
+ * @param {string} instanceFeatureIdLabel The label used to select the feature ID set.
1107
+ * @returns {number[]|undefined} The per-instance feature IDs, or undefined.
1108
+ */
1109
+ static computeInstanceFeatureIds(runtimeNode, instanceFeatureIdLabel) {
1110
+ const node = runtimeNode.node;
1111
+ const instances = node.instances;
1112
+
1113
+ if (!defined(instances)) {
1114
+ return undefined;
1115
+ }
1116
+
1117
+ const featureIdSet = ModelUtility.getFeatureIdsByLabel(
1118
+ instances.featureIds,
1119
+ instanceFeatureIdLabel,
1120
+ );
1121
+
1122
+ if (!defined(featureIdSet)) {
1123
+ return undefined;
1124
+ }
1125
+
1126
+ let typedArray;
1127
+
1128
+ // Case: FeatureIdAttribute
1129
+ if ("setIndex" in featureIdSet) {
1130
+ const attribute = ModelUtility.getAttributeBySemantic(
1131
+ instances,
1132
+ VertexAttributeSemantic.FEATURE_ID,
1133
+ featureIdSet.setIndex,
1134
+ );
1135
+ if (defined(attribute)) {
1136
+ typedArray = ModelReader.readAttributeAsTypedArray(attribute);
1137
+ }
1138
+ }
1139
+
1140
+ // Case: FeatureIdImplicitRange
1141
+ if ("offset" in featureIdSet) {
1142
+ typedArray = ModelReader.readImplicitRangeAsTypedArray(
1143
+ featureIdSet,
1144
+ instances,
1145
+ );
1146
+ }
1147
+
1148
+ if (!defined(typedArray)) {
1149
+ return undefined;
1150
+ }
1151
+
1152
+ const featureIds = new Array(typedArray.length);
1153
+ for (let i = 0; i < typedArray.length; i++) {
1154
+ featureIds[i] = typedArray[i];
1155
+ }
1156
+ return featureIds;
1157
+ }
1158
+
1159
+ /**
1160
+ * Builds instance transforms from a packed typed array where each instance
1161
+ * is stored as 12 floats (3 rows of 4 columns, row-major).
1162
+ *
1163
+ * @param {TypedArray} transformsTypedArray The packed transforms array.
1164
+ * @param {number} count The number of instances.
1165
+ * @param {Matrix4[]} transforms The output array to push transforms into.
1166
+ */
1167
+ static computeInstanceTransformsFromTypedArray(
1168
+ transformsTypedArray,
1169
+ count,
1170
+ transforms,
1171
+ ) {
1172
+ const transformElements = 12;
1173
+ for (let i = 0; i < count; i++) {
1174
+ const index = i * transformElements;
1175
+
1176
+ const transform = new Matrix4(
1177
+ transformsTypedArray[index],
1178
+ transformsTypedArray[index + 1],
1179
+ transformsTypedArray[index + 2],
1180
+ transformsTypedArray[index + 3],
1181
+ transformsTypedArray[index + 4],
1182
+ transformsTypedArray[index + 5],
1183
+ transformsTypedArray[index + 6],
1184
+ transformsTypedArray[index + 7],
1185
+ transformsTypedArray[index + 8],
1186
+ transformsTypedArray[index + 9],
1187
+ transformsTypedArray[index + 10],
1188
+ transformsTypedArray[index + 11],
1189
+ 0,
1190
+ 0,
1191
+ 0,
1192
+ 1,
1193
+ );
1194
+
1195
+ transforms.push(transform);
1196
+ }
1197
+ }
1198
+
1199
+ /**
1200
+ * Builds instance transforms from individual TRANSLATION, ROTATION, and SCALE
1201
+ * attributes when no packed transformsTypedArray is available.
1202
+ *
1203
+ * @param {object} instances The instances object.
1204
+ * @param {number} count The number of instances.
1205
+ * @param {Matrix4[]} transforms The output array to push transforms into.
1206
+ */
1207
+ static computeInstanceTransformsFromAttributes(instances, count, transforms) {
1208
+ const translationAttribute = ModelUtility.getAttributeBySemantic(
1209
+ instances,
1210
+ InstanceAttributeSemantic.TRANSLATION,
1211
+ );
1212
+ const rotationAttribute = ModelUtility.getAttributeBySemantic(
1213
+ instances,
1214
+ InstanceAttributeSemantic.ROTATION,
1215
+ );
1216
+ const scaleAttribute = ModelUtility.getAttributeBySemantic(
1217
+ instances,
1218
+ InstanceAttributeSemantic.SCALE,
1219
+ );
1220
+
1221
+ const hasTranslation = defined(translationAttribute);
1222
+ const hasRotation = defined(rotationAttribute);
1223
+ const hasScale = defined(scaleAttribute);
1224
+
1225
+ if (!hasTranslation && !hasRotation && !hasScale) {
1226
+ return;
1227
+ }
1228
+
1229
+ let translationTypedArray, rotationTypedArray, scaleTypedArray;
1230
+ if (hasTranslation) {
1231
+ translationTypedArray =
1232
+ ModelReader.readAttributeAsRawCompactTypedArray(translationAttribute);
1233
+ }
1234
+ if (hasRotation) {
1235
+ rotationTypedArray =
1236
+ ModelReader.readAttributeAsRawCompactTypedArray(rotationAttribute);
1237
+ }
1238
+ if (hasScale) {
1239
+ scaleTypedArray =
1240
+ ModelReader.readAttributeAsRawCompactTypedArray(scaleAttribute);
1241
+ }
1242
+
1243
+ for (let i = 0; i < count; i++) {
1244
+ const translation = hasTranslation
1245
+ ? new Cartesian3(
1246
+ translationTypedArray[i * 3],
1247
+ translationTypedArray[i * 3 + 1],
1248
+ translationTypedArray[i * 3 + 2],
1249
+ )
1250
+ : Cartesian3.ZERO;
1251
+
1252
+ const rotation = hasRotation
1253
+ ? new Quaternion(
1254
+ rotationTypedArray[i * 4],
1255
+ rotationTypedArray[i * 4 + 1],
1256
+ rotationTypedArray[i * 4 + 2],
1257
+ rotationTypedArray[i * 4 + 3],
1258
+ )
1259
+ : Quaternion.IDENTITY;
1260
+
1261
+ const scale = hasScale
1262
+ ? new Cartesian3(
1263
+ scaleTypedArray[i * 3],
1264
+ scaleTypedArray[i * 3 + 1],
1265
+ scaleTypedArray[i * 3 + 2],
1266
+ )
1267
+ : Cartesian3.ONE;
1268
+
1269
+ const transform = Matrix4.fromTranslationQuaternionRotationScale(
1270
+ translation,
1271
+ rotation,
1272
+ scale,
1273
+ new Matrix4(),
1274
+ );
1275
+
1276
+ transforms.push(transform);
1277
+ }
1278
+ }
808
1279
  }
809
1280
 
810
1281
  export default ModelReader;
@@ -214,7 +214,8 @@ ModelRuntimePrimitive.prototype.configurePipeline = function (frameState) {
214
214
  // Check whether the model is part of a `Model3DTileContent` that
215
215
  // belongs to a tileset that has imagery layers. If this is the
216
216
  // case, then the `ImageryPipelineStage` will be required.
217
- const hasImageryLayers = defined(model.imageryLayers);
217
+ const hasImageryLayers =
218
+ defined(model.imageryLayers) && model.imageryLayers.length > 0;
218
219
 
219
220
  const hasCustomShader = defined(customShader);
220
221
  const hasCustomFragmentShader =
@@ -91,4 +91,6 @@ ModelType.is3DTiles = function (modelType) {
91
91
  }
92
92
  };
93
93
 
94
- export default Object.freeze(ModelType);
94
+ Object.freeze(ModelType);
95
+
96
+ export default ModelType;
@@ -10,6 +10,8 @@ import CullFace from "../CullFace.js";
10
10
  import PrimitiveType from "../../Core/PrimitiveType.js";
11
11
  import Matrix3 from "../../Core/Matrix3.js";
12
12
 
13
+ /** @import {Attribute} from "../ModelComponents.js"; */
14
+
13
15
  /**
14
16
  * Utility functions for {@link Model}.
15
17
  *
@@ -69,7 +71,7 @@ ModelUtility.getNodeTransform = function (node) {
69
71
  * @param {ModelComponents.Primitive|ModelComponents.Instances} object The primitive components or instances object
70
72
  * @param {VertexAttributeSemantic|InstanceAttributeSemantic} semantic The semantic to search for
71
73
  * @param {number} [setIndex] The set index of the semantic. May be undefined for some semantics (POSITION, NORMAL, TRANSLATION, ROTATION, for example)
72
- * @return {ModelComponents.Attribute} The selected attribute, or undefined if not found.
74
+ * @return {Attribute} The selected attribute, or undefined if not found.
73
75
  *
74
76
  * @private
75
77
  */
@@ -79,7 +79,6 @@ class PntsLoader extends ResourceLoader {
79
79
  /**
80
80
  * The cache key of the resource
81
81
  *
82
- * @memberof PntsLoader.prototype
83
82
  *
84
83
  * @type {string}
85
84
  * @readonly
@@ -92,7 +91,6 @@ class PntsLoader extends ResourceLoader {
92
91
  /**
93
92
  * The loaded components.
94
93
  *
95
- * @memberof PntsLoader.prototype
96
94
  *
97
95
  * @type {ModelComponents.Components}
98
96
  * @readonly
@@ -106,7 +104,6 @@ class PntsLoader extends ResourceLoader {
106
104
  * A world-space transform to apply to the primitives.
107
105
  * See {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/PointCloud#global-semantics}
108
106
  *
109
- * @memberof PntsLoader.prototype
110
107
  *
111
108
  * @type {Matrix4}
112
109
  * @readonly
@@ -528,19 +525,23 @@ function makeAttributes(loader, parsedContent, context) {
528
525
 
529
526
  if (defined(parsedContent.normals)) {
530
527
  attribute = makeAttribute(loader, parsedContent.normals, context);
528
+ attribute.count = parsedContent.pointsLength;
531
529
  attributes.push(attribute);
532
530
  }
533
531
 
534
532
  if (defined(parsedContent.colors)) {
535
533
  attribute = makeAttribute(loader, parsedContent.colors, context);
534
+ attribute.count = parsedContent.pointsLength;
536
535
  attributes.push(attribute);
537
536
  } else {
538
537
  attribute = makeAttribute(loader, defaultColorAttribute, context);
538
+ attribute.count = parsedContent.pointsLength;
539
539
  attributes.push(attribute);
540
540
  }
541
541
 
542
542
  if (defined(parsedContent.batchIds)) {
543
543
  attribute = makeAttribute(loader, parsedContent.batchIds, context);
544
+ attribute.count = parsedContent.pointsLength;
544
545
  attributes.push(attribute);
545
546
  }
546
547
 
@@ -26,4 +26,6 @@ StyleCommandsNeeded.getStyleCommandsNeeded = function (
26
26
  return StyleCommandsNeeded.OPAQUE_AND_TRANSLUCENT;
27
27
  };
28
28
 
29
- export default Object.freeze(StyleCommandsNeeded);
29
+ Object.freeze(StyleCommandsNeeded);
30
+
31
+ export default StyleCommandsNeeded;
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * An enum of the basic GLSL uniform types. These can be used with
3
5
  * {@link CustomShader} to declare user-defined uniforms.
@@ -121,4 +123,6 @@ const UniformType = {
121
123
  SAMPLER_CUBE: "samplerCube",
122
124
  };
123
125
 
124
- export default Object.freeze(UniformType);
126
+ Object.freeze(UniformType);
127
+
128
+ export default UniformType;
@@ -1,3 +1,5 @@
1
+ // @ts-check
2
+
1
3
  /**
2
4
  * An enum for the GLSL varying types. These can be used for declaring varyings
3
5
  * in {@link CustomShader}
@@ -58,4 +60,6 @@ const VaryingType = {
58
60
  MAT4: "mat4",
59
61
  };
60
62
 
61
- export default Object.freeze(VaryingType);
63
+ Object.freeze(VaryingType);
64
+
65
+ export default VaryingType;