@cesium/engine 14.0.0 → 16.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 (578) hide show
  1. package/Build/Workers/{chunk-WVNLSTOF.js → chunk-2TQ64T4I.js} +2 -2
  2. package/Build/Workers/{chunk-ED6GLQTK.js → chunk-34EWMUFG.js} +1 -1
  3. package/Build/Workers/{chunk-HEZHXDYB.js → chunk-4LHK6E47.js} +1 -1
  4. package/Build/Workers/{chunk-7EO56M5R.js → chunk-5TN3LG2T.js} +2 -2
  5. package/Build/Workers/{chunk-7ZB2RVIQ.js → chunk-6B7KGA5P.js} +16 -19
  6. package/Build/Workers/{chunk-3QLSKXKF.js → chunk-B75OO2DU.js} +7 -10
  7. package/Build/Workers/{chunk-Q4ZVWJXX.js → chunk-COOLDICB.js} +9 -11
  8. package/Build/Workers/{chunk-3PIZQT3I.js → chunk-CQNYYX3N.js} +4 -4
  9. package/Build/Workers/{chunk-JPDKYBLF.js → chunk-CUJH7PS5.js} +27 -29
  10. package/Build/Workers/{chunk-CI2HEJFC.js → chunk-EAWYQ44R.js} +39 -41
  11. package/Build/Workers/{chunk-SDIDRZDG.js → chunk-EJJDBH5W.js} +7 -7
  12. package/Build/Workers/{chunk-5KWRW7YL.js → chunk-EO44CO62.js} +2 -2
  13. package/Build/Workers/{chunk-N2XAJBC6.js → chunk-EOIUWEAK.js} +26 -28
  14. package/Build/Workers/{chunk-YJX7X577.js → chunk-ERKJ7IWJ.js} +21 -23
  15. package/Build/Workers/{chunk-J7IH4EYI.js → chunk-ESED7XBA.js} +13 -16
  16. package/Build/Workers/{chunk-F4CUH4MR.js → chunk-FW2OX42E.js} +18 -21
  17. package/Build/Workers/{chunk-FX4R4MTH.js → chunk-GH6I7PBY.js} +6 -9
  18. package/Build/Workers/{chunk-FYGLNDKG.js → chunk-GQVSADCI.js} +19 -22
  19. package/Build/Workers/{chunk-TY4DKOWR.js → chunk-ICU72UPR.js} +4 -4
  20. package/Build/Workers/{chunk-DT5NFR5C.js → chunk-ILVAXLMC.js} +7 -7
  21. package/Build/Workers/{chunk-ZGFIT57T.js → chunk-KKV6XBF5.js} +27 -23
  22. package/Build/Workers/{chunk-HKHQ3EDR.js → chunk-KV6TEHXY.js} +4 -4
  23. package/Build/Workers/{chunk-B4GSRXE3.js → chunk-LCSH4ZOB.js} +7 -10
  24. package/Build/Workers/{chunk-LNSWJ43X.js → chunk-M5J3S3HY.js} +17 -26
  25. package/Build/Workers/{chunk-LJBJM6VI.js → chunk-NB6D74SQ.js} +6 -6
  26. package/Build/Workers/{chunk-4CHMVQTQ.js → chunk-NREPBWCX.js} +14 -14
  27. package/Build/Workers/{chunk-PWF4EY5P.js → chunk-OD4Q7HE5.js} +4 -4
  28. package/Build/Workers/{chunk-77XPS7ZA.js → chunk-OMFZ4IN6.js} +15 -24
  29. package/Build/Workers/{chunk-HUFQVUMY.js → chunk-OMZGZVHI.js} +12 -17
  30. package/Build/Workers/{chunk-LOZ4NKY3.js → chunk-ORIMMEHO.js} +18 -20
  31. package/Build/Workers/{chunk-5S5OOA6U.js → chunk-OWLBD6BL.js} +1 -1
  32. package/Build/Workers/{chunk-VCNOFQYH.js → chunk-PB6SE3SZ.js} +9 -12
  33. package/Build/Workers/{chunk-3JBEPBPL.js → chunk-PT6U7UNY.js} +25 -30
  34. package/Build/Workers/{chunk-G3BVMPWG.js → chunk-RWAFHSX3.js} +2 -2
  35. package/Build/Workers/{chunk-KHWLAQVA.js → chunk-S2NKKWYE.js} +1 -1
  36. package/Build/Workers/{chunk-FFBJDW4A.js → chunk-S3IQBSIB.js} +6 -6
  37. package/Build/Workers/{chunk-3LYROPON.js → chunk-SCUQTTCN.js} +16 -19
  38. package/Build/Workers/{chunk-ZMNLEL6W.js → chunk-TBSA4MNF.js} +5 -8
  39. package/Build/Workers/{chunk-EWDGNOJE.js → chunk-TEUGW455.js} +9 -12
  40. package/Build/Workers/{chunk-XK4OP6VA.js → chunk-TL5YKZJF.js} +33 -41
  41. package/Build/Workers/{chunk-KM6MITPF.js → chunk-V4Y7C25O.js} +46 -42
  42. package/Build/Workers/{chunk-OMXHEJTK.js → chunk-VNDECE6N.js} +2 -2
  43. package/Build/Workers/{chunk-LS3KVHYY.js → chunk-VVTAI2TN.js} +6 -9
  44. package/Build/Workers/{chunk-WEHZP4SE.js → chunk-VXAAIRJ7.js} +129 -146
  45. package/Build/Workers/{chunk-MVM4JV5U.js → chunk-WGIOUM2S.js} +9 -12
  46. package/Build/Workers/{chunk-JHBPC4LK.js → chunk-XF6EBVKV.js} +7 -7
  47. package/Build/Workers/{chunk-D7ZBZPHV.js → chunk-XMKE4XB2.js} +5 -5
  48. package/Build/Workers/{chunk-7UHKH6M3.js → chunk-YA4XALD5.js} +34 -36
  49. package/Build/Workers/{chunk-KSYBJA4M.js → chunk-YFXXUW6U.js} +6 -12
  50. package/Build/Workers/{chunk-Z3QWTHI7.js → chunk-YL26OJCG.js} +21 -23
  51. package/Build/Workers/{chunk-K4AH3TDT.js → chunk-ZLJDDRGB.js} +14 -17
  52. package/Build/Workers/combineGeometry.js +21 -22
  53. package/Build/Workers/createBoxGeometry.js +15 -16
  54. package/Build/Workers/createBoxOutlineGeometry.js +20 -25
  55. package/Build/Workers/createCircleGeometry.js +26 -28
  56. package/Build/Workers/createCircleOutlineGeometry.js +19 -21
  57. package/Build/Workers/createCoplanarPolygonGeometry.js +38 -42
  58. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +34 -36
  59. package/Build/Workers/createCorridorGeometry.js +42 -49
  60. package/Build/Workers/createCorridorOutlineGeometry.js +36 -43
  61. package/Build/Workers/createCylinderGeometry.js +17 -18
  62. package/Build/Workers/createCylinderOutlineGeometry.js +23 -25
  63. package/Build/Workers/createEllipseGeometry.js +23 -24
  64. package/Build/Workers/createEllipseOutlineGeometry.js +16 -17
  65. package/Build/Workers/createEllipsoidGeometry.js +16 -17
  66. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -16
  67. package/Build/Workers/createFrustumGeometry.js +15 -16
  68. package/Build/Workers/createFrustumOutlineGeometry.js +18 -21
  69. package/Build/Workers/createGeometry.js +22 -25
  70. package/Build/Workers/createGroundPolylineGeometry.js +34 -42
  71. package/Build/Workers/createPlaneGeometry.js +19 -21
  72. package/Build/Workers/createPlaneOutlineGeometry.js +12 -13
  73. package/Build/Workers/createPolygonGeometry.js +45 -50
  74. package/Build/Workers/createPolygonOutlineGeometry.js +39 -44
  75. package/Build/Workers/createPolylineGeometry.js +33 -40
  76. package/Build/Workers/createPolylineVolumeGeometry.js +37 -44
  77. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -39
  78. package/Build/Workers/createRectangleGeometry.js +41 -51
  79. package/Build/Workers/createRectangleOutlineGeometry.js +28 -33
  80. package/Build/Workers/createSimplePolylineGeometry.js +29 -34
  81. package/Build/Workers/createSphereGeometry.js +17 -20
  82. package/Build/Workers/createSphereOutlineGeometry.js +16 -19
  83. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  84. package/Build/Workers/createVectorTileClampedPolylines.js +12 -13
  85. package/Build/Workers/createVectorTileGeometries.js +21 -22
  86. package/Build/Workers/createVectorTilePoints.js +11 -12
  87. package/Build/Workers/createVectorTilePolygons.js +19 -20
  88. package/Build/Workers/createVectorTilePolylines.js +12 -13
  89. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -23
  90. package/Build/Workers/createVerticesFromHeightmap.js +31 -58
  91. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -18
  92. package/Build/Workers/createWallGeometry.js +30 -35
  93. package/Build/Workers/createWallOutlineGeometry.js +28 -33
  94. package/Build/Workers/decodeDraco.js +10 -11
  95. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  96. package/Build/Workers/decodeI3S.js +10 -16
  97. package/Build/Workers/transcodeKTX2.js +50 -46
  98. package/Build/Workers/transferTypedArrayTest.js +1 -1
  99. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -20
  100. package/Source/Core/ApproximateTerrainHeights.js +2 -3
  101. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +6 -6
  102. package/Source/Core/AxisAlignedBoundingBox.js +2 -3
  103. package/Source/Core/BingMapsGeocoderService.js +2 -2
  104. package/Source/Core/BoundingRectangle.js +7 -8
  105. package/Source/Core/BoundingSphere.js +10 -11
  106. package/Source/Core/BoxGeometry.js +7 -7
  107. package/Source/Core/BoxOutlineGeometry.js +7 -9
  108. package/Source/Core/Cartesian2.js +4 -5
  109. package/Source/Core/Cartesian3.js +7 -8
  110. package/Source/Core/Cartesian4.js +6 -7
  111. package/Source/Core/Cartographic.js +5 -6
  112. package/Source/Core/CatmullRomSpline.js +2 -2
  113. package/Source/Core/CesiumTerrainProvider.js +11 -14
  114. package/Source/Core/CircleGeometry.js +2 -2
  115. package/Source/Core/CircleOutlineGeometry.js +2 -2
  116. package/Source/Core/Clock.js +7 -10
  117. package/Source/Core/Color.js +28 -28
  118. package/Source/Core/ColorGeometryInstanceAttribute.js +4 -5
  119. package/Source/Core/ComponentDatatype.js +4 -6
  120. package/Source/Core/CoplanarPolygonGeometry.js +8 -10
  121. package/Source/Core/CoplanarPolygonOutlineGeometry.js +5 -5
  122. package/Source/Core/CorridorGeometry.js +15 -20
  123. package/Source/Core/CorridorOutlineGeometry.js +10 -15
  124. package/Source/Core/Credit.js +1 -2
  125. package/Source/Core/CullingVolume.js +1 -2
  126. package/Source/Core/CustomHeightmapTerrainProvider.js +3 -3
  127. package/Source/Core/CylinderGeometry.js +7 -7
  128. package/Source/Core/CylinderOutlineGeometry.js +7 -7
  129. package/Source/Core/DistanceDisplayCondition.js +4 -5
  130. package/Source/Core/DistanceDisplayConditionGeometryInstanceAttribute.js +2 -3
  131. package/Source/Core/EarthOrientationParameters.js +4 -4
  132. package/Source/Core/EllipseGeometry.js +17 -23
  133. package/Source/Core/EllipseOutlineGeometry.js +12 -15
  134. package/Source/Core/Ellipsoid.js +7 -8
  135. package/Source/Core/EllipsoidGeodesic.js +1 -2
  136. package/Source/Core/EllipsoidGeometry.js +15 -15
  137. package/Source/Core/EllipsoidOutlineGeometry.js +15 -15
  138. package/Source/Core/EllipsoidRhumbLine.js +3 -4
  139. package/Source/Core/EllipsoidTangentPlane.js +1 -2
  140. package/Source/Core/EllipsoidTerrainProvider.js +4 -4
  141. package/Source/Core/EllipsoidalOccluder.js +2 -3
  142. package/Source/Core/FeatureDetection.js +1 -2
  143. package/Source/Core/Frozen.js +24 -0
  144. package/Source/Core/FrustumGeometry.js +7 -8
  145. package/Source/Core/FrustumOutlineGeometry.js +3 -4
  146. package/Source/Core/GeographicProjection.js +1 -2
  147. package/Source/Core/GeographicTilingScheme.js +6 -12
  148. package/Source/Core/Geometry.js +4 -7
  149. package/Source/Core/GeometryAttribute.js +3 -3
  150. package/Source/Core/GeometryAttributes.js +2 -2
  151. package/Source/Core/GeometryInstance.js +4 -6
  152. package/Source/Core/GeometryInstanceAttribute.js +3 -3
  153. package/Source/Core/GeometryPipeline.js +3 -4
  154. package/Source/Core/GoogleEarthEnterpriseMetadata.js +13 -24
  155. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +9 -12
  156. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +3 -3
  157. package/Source/Core/GoogleGeocoderService.js +2 -2
  158. package/Source/Core/GregorianDate.js +8 -9
  159. package/Source/Core/GroundPolylineGeometry.js +8 -8
  160. package/Source/Core/HeadingPitchRange.js +3 -4
  161. package/Source/Core/HeadingPitchRoll.js +3 -4
  162. package/Source/Core/Heap.js +3 -4
  163. package/Source/Core/HeightmapTerrainData.js +22 -38
  164. package/Source/Core/HeightmapTessellator.js +21 -37
  165. package/Source/Core/HermitePolynomialApproximation.js +1 -2
  166. package/Source/Core/HermiteSpline.js +5 -5
  167. package/Source/Core/ITwinPlatform.js +66 -12
  168. package/Source/Core/Iau2006XysData.js +8 -10
  169. package/Source/Core/IntersectionTests.js +1 -2
  170. package/Source/Core/Interval.js +2 -4
  171. package/Source/Core/Ion.js +1 -1
  172. package/Source/Core/IonGeocoderService.js +6 -10
  173. package/Source/Core/IonResource.js +6 -6
  174. package/Source/Core/JulianDate.js +11 -12
  175. package/Source/Core/LinearSpline.js +2 -2
  176. package/Source/Core/ManagedArray.js +2 -3
  177. package/Source/Core/Math.js +36 -27
  178. package/Source/Core/Matrix2.js +7 -8
  179. package/Source/Core/Matrix3.js +12 -13
  180. package/Source/Core/Matrix4.js +28 -28
  181. package/Source/Core/MorphWeightSpline.js +2 -2
  182. package/Source/Core/NearFarScalar.js +6 -7
  183. package/Source/Core/Occluder.js +1 -2
  184. package/Source/Core/OffsetGeometryInstanceAttribute.js +3 -4
  185. package/Source/Core/OpenCageGeocoderService.js +1 -2
  186. package/Source/Core/OrientedBoundingBox.js +7 -8
  187. package/Source/Core/OrthographicFrustum.js +6 -6
  188. package/Source/Core/OrthographicOffCenterFrustum.js +4 -4
  189. package/Source/Core/PerspectiveFrustum.js +8 -8
  190. package/Source/Core/PerspectiveOffCenterFrustum.js +4 -4
  191. package/Source/Core/PlaneGeometry.js +5 -5
  192. package/Source/Core/PolygonGeometry.js +16 -19
  193. package/Source/Core/PolygonGeometryLibrary.js +27 -6
  194. package/Source/Core/PolygonOutlineGeometry.js +11 -14
  195. package/Source/Core/PolygonPipeline.js +5 -6
  196. package/Source/Core/PolylineGeometry.js +10 -15
  197. package/Source/Core/PolylinePipeline.js +7 -14
  198. package/Source/Core/PolylineVolumeGeometry.js +8 -13
  199. package/Source/Core/PolylineVolumeOutlineGeometry.js +7 -12
  200. package/Source/Core/QuantizedMeshTerrainData.js +12 -16
  201. package/Source/Core/Quaternion.js +7 -8
  202. package/Source/Core/QuaternionSpline.js +2 -2
  203. package/Source/Core/Ray.js +2 -3
  204. package/Source/Core/Rectangle.js +18 -19
  205. package/Source/Core/RectangleGeometry.js +17 -25
  206. package/Source/Core/RectangleGeometryLibrary.js +1 -1
  207. package/Source/Core/RectangleOutlineGeometry.js +10 -13
  208. package/Source/Core/Request.js +6 -6
  209. package/Source/Core/RequestScheduler.js +4 -6
  210. package/Source/Core/Resource.js +13 -16
  211. package/Source/Core/S2Cell.js +2 -3
  212. package/Source/Core/ScreenSpaceEventHandler.js +1 -2
  213. package/Source/Core/ShowGeometryInstanceAttribute.js +1 -2
  214. package/Source/Core/Simon1994PlanetaryPositions.js +9 -9
  215. package/Source/Core/SimplePolylineGeometry.js +8 -11
  216. package/Source/Core/SphereGeometry.js +1 -2
  217. package/Source/Core/SphereOutlineGeometry.js +1 -2
  218. package/Source/Core/Spherical.js +4 -5
  219. package/Source/Core/Spline.js +1 -2
  220. package/Source/Core/SteppedSpline.js +2 -2
  221. package/Source/Core/TaskProcessor.js +2 -9
  222. package/Source/Core/TerrainData.js +1 -1
  223. package/Source/Core/TerrainEncoding.js +4 -11
  224. package/Source/Core/TerrainMesh.js +1 -3
  225. package/Source/Core/TerrainProvider.js +1 -1
  226. package/Source/Core/TexturePacker.js +166 -0
  227. package/Source/Core/TileProviderError.js +1 -2
  228. package/Source/Core/TimeInterval.js +7 -7
  229. package/Source/Core/TimeIntervalCollection.js +7 -7
  230. package/Source/Core/Tipsify.js +5 -5
  231. package/Source/Core/Transforms.js +10 -15
  232. package/Source/Core/TranslationRotationScale.js +3 -6
  233. package/Source/Core/VRTheWorldTerrainProvider.js +5 -5
  234. package/Source/Core/VertexFormat.js +10 -10
  235. package/Source/Core/VerticalExaggeration.js +1 -1
  236. package/Source/Core/VideoSynchronizer.js +6 -6
  237. package/Source/Core/WallGeometry.js +8 -11
  238. package/Source/Core/WallOutlineGeometry.js +7 -10
  239. package/Source/Core/WebMercatorProjection.js +1 -2
  240. package/Source/Core/WebMercatorTilingScheme.js +5 -11
  241. package/Source/Core/arrayRemoveDuplicates.js +1 -2
  242. package/Source/Core/clone.js +1 -3
  243. package/Source/Core/combine.js +1 -2
  244. package/Source/Core/createWorldBathymetryAsync.js +3 -3
  245. package/Source/Core/createWorldTerrainAsync.js +4 -4
  246. package/Source/Core/defaultValue.js +20 -1
  247. package/Source/Core/destroyObject.js +1 -5
  248. package/Source/Core/getAbsoluteUri.js +1 -2
  249. package/Source/Core/getMagic.js +1 -2
  250. package/Source/Core/getStringFromTypedArray.js +2 -3
  251. package/Source/Core/loadImageFromTypedArray.js +2 -6
  252. package/Source/Core/oneTimeWarning.js +1 -2
  253. package/Source/Core/writeTextToCanvas.js +10 -13
  254. package/Source/DataSources/BillboardGraphics.js +27 -53
  255. package/Source/DataSources/BillboardVisualizer.js +3 -3
  256. package/Source/DataSources/BoxGraphics.js +13 -18
  257. package/Source/DataSources/CallbackPositionProperty.js +1 -2
  258. package/Source/DataSources/Cesium3DTilesetGraphics.js +6 -8
  259. package/Source/DataSources/CheckerboardMaterialProperty.js +2 -2
  260. package/Source/DataSources/CompositePositionProperty.js +1 -2
  261. package/Source/DataSources/ConstantPositionProperty.js +1 -2
  262. package/Source/DataSources/CorridorGraphics.js +23 -35
  263. package/Source/DataSources/CylinderGraphics.js +18 -25
  264. package/Source/DataSources/CzmlDataSource.js +34 -60
  265. package/Source/DataSources/DataSourceClock.js +12 -13
  266. package/Source/DataSources/DataSourceCollection.js +2 -3
  267. package/Source/DataSources/DataSourceDisplay.js +2 -5
  268. package/Source/DataSources/EllipseGraphics.js +26 -40
  269. package/Source/DataSources/EllipsoidGeometryUpdater.js +1 -2
  270. package/Source/DataSources/EllipsoidGraphics.js +21 -32
  271. package/Source/DataSources/Entity.js +7 -9
  272. package/Source/DataSources/EntityCluster.js +53 -28
  273. package/Source/DataSources/EntityView.js +1 -2
  274. package/Source/DataSources/GeoJsonDataSource.js +12 -12
  275. package/Source/DataSources/GeometryUpdater.js +12 -17
  276. package/Source/DataSources/GeometryVisualizer.js +2 -3
  277. package/Source/DataSources/GpxDataSource.js +4 -7
  278. package/Source/DataSources/GridMaterialProperty.js +2 -2
  279. package/Source/DataSources/GroundGeometryUpdater.js +1 -2
  280. package/Source/DataSources/ImageMaterialProperty.js +2 -2
  281. package/Source/DataSources/KmlDataSource.js +84 -158
  282. package/Source/DataSources/LabelGraphics.js +27 -56
  283. package/Source/DataSources/LabelVisualizer.js +1 -2
  284. package/Source/DataSources/ModelGraphics.js +29 -63
  285. package/Source/DataSources/ModelVisualizer.js +1 -2
  286. package/Source/DataSources/NodeTransformationProperty.js +2 -2
  287. package/Source/DataSources/PathGraphics.js +10 -12
  288. package/Source/DataSources/PlaneGraphics.js +13 -15
  289. package/Source/DataSources/PointGraphics.js +17 -32
  290. package/Source/DataSources/PolygonGraphics.js +28 -45
  291. package/Source/DataSources/PolylineDashMaterialProperty.js +2 -2
  292. package/Source/DataSources/PolylineGeometryUpdater.js +9 -14
  293. package/Source/DataSources/PolylineGlowMaterialProperty.js +2 -2
  294. package/Source/DataSources/PolylineGraphics.js +16 -23
  295. package/Source/DataSources/PolylineOutlineMaterialProperty.js +2 -2
  296. package/Source/DataSources/PolylineVisualizer.js +2 -3
  297. package/Source/DataSources/PolylineVolumeGraphics.js +15 -17
  298. package/Source/DataSources/PositionPropertyArray.js +1 -2
  299. package/Source/DataSources/Property.js +1 -2
  300. package/Source/DataSources/PropertyBag.js +1 -2
  301. package/Source/DataSources/RectangleGraphics.js +23 -35
  302. package/Source/DataSources/Rotation.js +4 -5
  303. package/Source/DataSources/SampledPositionProperty.js +2 -3
  304. package/Source/DataSources/SampledProperty.js +6 -11
  305. package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -2
  306. package/Source/DataSources/StripeMaterialProperty.js +2 -2
  307. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +1 -2
  308. package/Source/DataSources/VelocityOrientationProperty.js +1 -2
  309. package/Source/DataSources/VelocityVectorProperty.js +1 -2
  310. package/Source/DataSources/WallGraphics.js +15 -23
  311. package/Source/DataSources/createPropertyDescriptor.js +2 -3
  312. package/Source/DataSources/exportKml.js +11 -14
  313. package/Source/Renderer/Buffer.js +5 -5
  314. package/Source/Renderer/ClearCommand.js +2 -2
  315. package/Source/Renderer/ComputeCommand.js +3 -3
  316. package/Source/Renderer/Context.js +22 -37
  317. package/Source/Renderer/CubeMap.js +6 -6
  318. package/Source/Renderer/CubeMapFace.js +11 -12
  319. package/Source/Renderer/DrawCommand.js +14 -25
  320. package/Source/Renderer/Framebuffer.js +3 -3
  321. package/Source/Renderer/FramebufferManager.js +25 -39
  322. package/Source/Renderer/MultisampleFramebuffer.js +2 -2
  323. package/Source/Renderer/RenderState.js +63 -92
  324. package/Source/Renderer/Renderbuffer.js +4 -4
  325. package/Source/Renderer/Sampler.js +2 -2
  326. package/Source/Renderer/ShaderBuilder.js +2 -3
  327. package/Source/Renderer/ShaderProgram.js +3 -3
  328. package/Source/Renderer/ShaderSource.js +3 -3
  329. package/Source/Renderer/Texture.js +16 -15
  330. package/Source/Renderer/TextureAtlas.js +802 -0
  331. package/Source/Renderer/UniformState.js +6 -11
  332. package/Source/Renderer/VertexArray.js +14 -23
  333. package/Source/Renderer/VertexArrayFacade.js +7 -11
  334. package/Source/Scene/Appearance.js +4 -4
  335. package/Source/Scene/ArcGisMapServerImageryProvider.js +23 -37
  336. package/Source/Scene/ArcGisMapService.js +1 -1
  337. package/Source/Scene/B3dmParser.js +2 -3
  338. package/Source/Scene/BatchTableHierarchy.js +6 -13
  339. package/Source/Scene/Billboard.js +105 -182
  340. package/Source/Scene/BillboardCollection.js +140 -224
  341. package/Source/Scene/BillboardLoadState.js +44 -0
  342. package/Source/Scene/BillboardTexture.js +348 -0
  343. package/Source/Scene/BingMapsImageryProvider.js +6 -6
  344. package/Source/Scene/BoxEmitter.js +1 -2
  345. package/Source/Scene/BufferLoader.js +2 -2
  346. package/Source/Scene/Camera.js +45 -64
  347. package/Source/Scene/CameraFlightPath.js +6 -6
  348. package/Source/Scene/Cesium3DContentGroup.js +2 -2
  349. package/Source/Scene/Cesium3DTile.js +3 -4
  350. package/Source/Scene/Cesium3DTileBatchTable.js +6 -49
  351. package/Source/Scene/Cesium3DTileFeatureTable.js +2 -3
  352. package/Source/Scene/Cesium3DTilePointFeature.js +10 -18
  353. package/Source/Scene/Cesium3DTileStyle.js +4 -7
  354. package/Source/Scene/Cesium3DTilesVoxelProvider.js +419 -137
  355. package/Source/Scene/Cesium3DTileset.js +77 -143
  356. package/Source/Scene/Cesium3DTilesetMetadata.js +3 -3
  357. package/Source/Scene/Cesium3DTilesetStatistics.js +0 -1
  358. package/Source/Scene/CircleEmitter.js +2 -3
  359. package/Source/Scene/ClassificationPrimitive.js +15 -26
  360. package/Source/Scene/ClippingPlaneCollection.js +7 -12
  361. package/Source/Scene/ClippingPolygon.js +1 -2
  362. package/Source/Scene/ClippingPolygonCollection.js +4 -4
  363. package/Source/Scene/CloudCollection.js +9 -11
  364. package/Source/Scene/Composite3DTileContent.js +1 -2
  365. package/Source/Scene/ConeEmitter.js +1 -2
  366. package/Source/Scene/ContentMetadata.js +2 -2
  367. package/Source/Scene/CreditDisplay.js +5 -9
  368. package/Source/Scene/CumulusCloud.js +9 -15
  369. package/Source/Scene/DebugAppearance.js +7 -7
  370. package/Source/Scene/DebugCameraPrimitive.js +5 -5
  371. package/Source/Scene/DebugModelMatrixPrimitive.js +6 -8
  372. package/Source/Scene/DepthPlane.js +1 -2
  373. package/Source/Scene/DirectionalLight.js +2 -3
  374. package/Source/Scene/DiscardMissingTileImagePolicy.js +2 -2
  375. package/Source/Scene/DynamicEnvironmentMapManager.js +15 -24
  376. package/Source/Scene/EllipsoidPrimitive.js +11 -19
  377. package/Source/Scene/EllipsoidSurfaceAppearance.js +11 -15
  378. package/Source/Scene/Expression.js +1 -0
  379. package/Source/Scene/FrameRateMonitor.js +12 -21
  380. package/Source/Scene/FrustumCommands.js +2 -3
  381. package/Source/Scene/Geometry3DTileContent.js +9 -16
  382. package/Source/Scene/Globe.js +3 -4
  383. package/Source/Scene/GlobeSurfaceTileProvider.js +9 -18
  384. package/Source/Scene/GlobeTranslucencyState.js +12 -25
  385. package/Source/Scene/GltfBufferViewLoader.js +4 -4
  386. package/Source/Scene/GltfDracoLoader.js +2 -2
  387. package/Source/Scene/GltfImageLoader.js +2 -2
  388. package/Source/Scene/GltfIndexBufferLoader.js +5 -5
  389. package/Source/Scene/GltfJsonLoader.js +2 -2
  390. package/Source/Scene/GltfLoader.js +22 -37
  391. package/Source/Scene/GltfLoaderUtil.js +11 -11
  392. package/Source/Scene/GltfPipeline/addDefaults.js +37 -64
  393. package/Source/Scene/GltfPipeline/addToArray.js +1 -3
  394. package/Source/Scene/GltfPipeline/moveTechniqueRenderStates.js +2 -5
  395. package/Source/Scene/GltfPipeline/parseGlb.js +1 -5
  396. package/Source/Scene/GltfPipeline/removeUnusedElements.js +1 -2
  397. package/Source/Scene/GltfPipeline/updateVersion.js +28 -49
  398. package/Source/Scene/GltfStructuralMetadataLoader.js +5 -6
  399. package/Source/Scene/GltfTextureLoader.js +3 -3
  400. package/Source/Scene/GltfVertexBufferLoader.js +5 -5
  401. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +2 -2
  402. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +3 -4
  403. package/Source/Scene/GridImageryProvider.js +10 -13
  404. package/Source/Scene/GroundPolylinePrimitive.js +11 -22
  405. package/Source/Scene/GroundPrimitive.js +13 -24
  406. package/Source/Scene/GroupMetadata.js +2 -2
  407. package/Source/Scene/I3SDataProvider.js +10 -15
  408. package/Source/Scene/I3SNode.js +1 -6
  409. package/Source/Scene/I3SSublayer.js +1 -2
  410. package/Source/Scene/I3SSymbology.js +2 -3
  411. package/Source/Scene/I3dmParser.js +1 -2
  412. package/Source/Scene/ITwinData.js +11 -6
  413. package/Source/Scene/ImageBasedLighting.js +2 -2
  414. package/Source/Scene/ImageryLayer.js +42 -71
  415. package/Source/Scene/ImageryLayerCollection.js +2 -3
  416. package/Source/Scene/Implicit3DTileContent.js +3 -4
  417. package/Source/Scene/ImplicitAvailabilityBitstream.js +2 -5
  418. package/Source/Scene/ImplicitMetadataView.js +2 -2
  419. package/Source/Scene/ImplicitSubtree.js +10 -15
  420. package/Source/Scene/ImplicitSubtreeCache.js +3 -3
  421. package/Source/Scene/ImplicitSubtreeMetadata.js +2 -2
  422. package/Source/Scene/InstanceAttributeSemantic.js +1 -1
  423. package/Source/Scene/IonImageryProvider.js +3 -3
  424. package/Source/Scene/KeyframeNode.js +16 -2
  425. package/Source/Scene/Label.js +19 -36
  426. package/Source/Scene/LabelCollection.js +218 -196
  427. package/Source/Scene/MapboxImageryProvider.js +4 -4
  428. package/Source/Scene/MapboxStyleImageryProvider.js +5 -5
  429. package/Source/Scene/Material.js +14 -20
  430. package/Source/Scene/MaterialAppearance.js +12 -18
  431. package/Source/Scene/Megatexture.js +145 -82
  432. package/Source/Scene/MetadataClass.js +4 -4
  433. package/Source/Scene/MetadataClassProperty.js +11 -14
  434. package/Source/Scene/MetadataEnum.js +4 -7
  435. package/Source/Scene/MetadataEnumValue.js +2 -2
  436. package/Source/Scene/MetadataSchema.js +4 -4
  437. package/Source/Scene/MetadataSchemaLoader.js +2 -2
  438. package/Source/Scene/MetadataTable.js +2 -2
  439. package/Source/Scene/MetadataTableProperty.js +17 -31
  440. package/Source/Scene/Model/AlphaPipelineStage.js +1 -2
  441. package/Source/Scene/Model/B3dmLoader.js +15 -26
  442. package/Source/Scene/Model/BatchTexturePipelineStage.js +1 -2
  443. package/Source/Scene/Model/ClassificationModelDrawCommand.js +2 -2
  444. package/Source/Scene/Model/CustomShader.js +10 -14
  445. package/Source/Scene/Model/Extensions/Gpm/GltfMeshPrimitiveGpmLoader.js +3 -3
  446. package/Source/Scene/Model/FeatureIdPipelineStage.js +1 -5
  447. package/Source/Scene/Model/GeoJsonLoader.js +5 -8
  448. package/Source/Scene/Model/I3dmLoader.js +13 -21
  449. package/Source/Scene/Model/MaterialPipelineStage.js +1 -2
  450. package/Source/Scene/Model/Model.js +41 -63
  451. package/Source/Scene/Model/ModelAnimation.js +5 -6
  452. package/Source/Scene/Model/ModelAnimationChannel.js +2 -2
  453. package/Source/Scene/Model/ModelAnimationCollection.js +4 -4
  454. package/Source/Scene/Model/ModelArticulation.js +2 -2
  455. package/Source/Scene/Model/ModelArticulationStage.js +2 -2
  456. package/Source/Scene/Model/ModelDrawCommand.js +3 -3
  457. package/Source/Scene/Model/ModelFeatureTable.js +3 -9
  458. package/Source/Scene/Model/ModelLightingOptions.js +3 -3
  459. package/Source/Scene/Model/ModelNode.js +1 -1
  460. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  461. package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -2
  462. package/Source/Scene/Model/ModelSceneGraph.js +2 -2
  463. package/Source/Scene/Model/ModelSkin.js +2 -2
  464. package/Source/Scene/Model/ModelUtility.js +5 -1
  465. package/Source/Scene/Model/PickingPipelineStage.js +1 -2
  466. package/Source/Scene/Model/PntsLoader.js +6 -6
  467. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -5
  468. package/Source/Scene/Model/PrimitiveOutlineGenerator.js +2 -2
  469. package/Source/Scene/Model/SelectedFeatureIdPipelineStage.js +2 -3
  470. package/Source/Scene/Model/TextureUniform.js +5 -8
  471. package/Source/Scene/Model/VaryingType.js +2 -2
  472. package/Source/Scene/Model/pickModel.js +4 -5
  473. package/Source/Scene/Moon.js +5 -5
  474. package/Source/Scene/OpenStreetMapImageryProvider.js +7 -7
  475. package/Source/Scene/OrderedGroundPrimitiveCollection.js +1 -2
  476. package/Source/Scene/Particle.js +11 -17
  477. package/Source/Scene/ParticleBurst.js +5 -5
  478. package/Source/Scene/ParticleSystem.js +24 -54
  479. package/Source/Scene/PerInstanceColorAppearance.js +8 -8
  480. package/Source/Scene/PerformanceDisplay.js +3 -3
  481. package/Source/Scene/PickFramebuffer.js +4 -5
  482. package/Source/Scene/Picking.js +3 -4
  483. package/Source/Scene/PntsParser.js +1 -2
  484. package/Source/Scene/PointCloud.js +6 -12
  485. package/Source/Scene/PointCloudShading.js +9 -18
  486. package/Source/Scene/PointPrimitive.js +11 -21
  487. package/Source/Scene/PointPrimitiveCollection.js +6 -14
  488. package/Source/Scene/Polyline.js +5 -5
  489. package/Source/Scene/PolylineCollection.js +5 -10
  490. package/Source/Scene/PolylineColorAppearance.js +7 -11
  491. package/Source/Scene/PolylineMaterialAppearance.js +7 -11
  492. package/Source/Scene/PostProcessStage.js +2 -2
  493. package/Source/Scene/PostProcessStageComposite.js +3 -6
  494. package/Source/Scene/Primitive.js +21 -42
  495. package/Source/Scene/PrimitiveCollection.js +4 -4
  496. package/Source/Scene/PrimitivePipeline.js +1 -2
  497. package/Source/Scene/PropertyAttribute.js +2 -2
  498. package/Source/Scene/PropertyAttributeProperty.js +4 -4
  499. package/Source/Scene/PropertyTable.js +2 -2
  500. package/Source/Scene/PropertyTexture.js +2 -2
  501. package/Source/Scene/PropertyTextureProperty.js +4 -4
  502. package/Source/Scene/QuadtreePrimitive.js +84 -66
  503. package/Source/Scene/QuadtreeTile.js +170 -0
  504. package/Source/Scene/ResourceCache.js +11 -11
  505. package/Source/Scene/ResourceCacheKey.js +11 -11
  506. package/Source/Scene/Scene.js +66 -40
  507. package/Source/Scene/ScreenSpaceCameraController.js +10 -20
  508. package/Source/Scene/ShadowMap.js +15 -15
  509. package/Source/Scene/ShadowVolumeAppearance.js +1 -2
  510. package/Source/Scene/SingleTileImageryProvider.js +4 -4
  511. package/Source/Scene/SkyAtmosphere.js +1 -2
  512. package/Source/Scene/SkyBox.js +1 -2
  513. package/Source/Scene/SpatialNode.js +4 -11
  514. package/Source/Scene/SphereEmitter.js +2 -3
  515. package/Source/Scene/StructuralMetadata.js +2 -2
  516. package/Source/Scene/SunLight.js +4 -4
  517. package/Source/Scene/SupportedImageFormats.js +4 -4
  518. package/Source/Scene/TileBoundingRegion.js +4 -5
  519. package/Source/Scene/TileBoundingS2Cell.js +3 -4
  520. package/Source/Scene/TileCoordinatesImageryProvider.js +5 -5
  521. package/Source/Scene/TileMapServiceImageryProvider.js +18 -27
  522. package/Source/Scene/TileMetadata.js +2 -2
  523. package/Source/Scene/TilesetMetadata.js +2 -2
  524. package/Source/Scene/TimeDynamicImagery.js +2 -2
  525. package/Source/Scene/TimeDynamicPointCloud.js +8 -10
  526. package/Source/Scene/TweenCollection.js +13 -16
  527. package/Source/Scene/UrlTemplateImageryProvider.js +11 -15
  528. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -2
  529. package/Source/Scene/Vector3DTileContent.js +16 -20
  530. package/Source/Scene/Vector3DTileGeometry.js +1 -2
  531. package/Source/Scene/Vector3DTilePoints.js +2 -5
  532. package/Source/Scene/Vector3DTilePolygons.js +2 -3
  533. package/Source/Scene/Vector3DTilePolylines.js +1 -2
  534. package/Source/Scene/Vector3DTilePrimitive.js +9 -13
  535. package/Source/Scene/VoxelBoxShape.js +14 -8
  536. package/Source/Scene/VoxelCell.js +6 -5
  537. package/Source/Scene/VoxelContent.js +171 -107
  538. package/Source/Scene/VoxelCylinderShape.js +69 -69
  539. package/Source/Scene/VoxelEllipsoidShape.js +17 -8
  540. package/Source/Scene/VoxelMetadataOrder.js +24 -0
  541. package/Source/Scene/VoxelPrimitive.js +134 -79
  542. package/Source/Scene/VoxelProvider.js +22 -29
  543. package/Source/Scene/VoxelRenderResources.js +26 -7
  544. package/Source/Scene/VoxelShape.js +10 -3
  545. package/Source/Scene/VoxelTraversal.js +260 -180
  546. package/Source/Scene/WebMapServiceImageryProvider.js +17 -24
  547. package/Source/Scene/WebMapTileServiceImageryProvider.js +7 -10
  548. package/Source/Scene/createElevationBandMaterial.js +4 -4
  549. package/Source/Scene/createGooglePhotorealistic3DTileset.js +8 -16
  550. package/Source/Scene/createOsmBuildingsAsync.js +3 -6
  551. package/Source/Scene/createTangentSpaceDebugPrimitive.js +4 -6
  552. package/Source/Scene/createWorldImageryAsync.js +3 -3
  553. package/Source/Scene/findContentMetadata.js +2 -5
  554. package/Source/Scene/findTileMetadata.js +2 -5
  555. package/Source/Scene/parseBatchTable.js +1 -5
  556. package/Source/Scene/parseFeatureMetadataLegacy.js +2 -2
  557. package/Source/Scene/parseStructuralMetadata.js +2 -2
  558. package/Source/Scene/processVoxelProperties.js +3 -0
  559. package/Source/Shaders/GlobeFS.glsl +10 -1
  560. package/Source/Shaders/GlobeFS.js +10 -1
  561. package/Source/Shaders/Voxels/Megatexture.glsl +4 -16
  562. package/Source/Shaders/Voxels/Megatexture.js +4 -16
  563. package/Source/Shaders/Voxels/Octree.glsl +44 -7
  564. package/Source/Shaders/Voxels/Octree.js +44 -7
  565. package/Source/Shaders/Voxels/VoxelFS.glsl +9 -15
  566. package/Source/Shaders/Voxels/VoxelFS.js +9 -15
  567. package/Source/Shaders/Voxels/convertUvToCylinder.glsl +15 -15
  568. package/Source/Shaders/Voxels/convertUvToCylinder.js +15 -15
  569. package/Source/Widget/CesiumWidget.js +17 -25
  570. package/Source/Workers/createGeometry.js +1 -2
  571. package/Source/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -2
  572. package/Source/Workers/decodeI3S.js +1 -5
  573. package/Source/Workers/transcodeKTX2.js +1 -2
  574. package/index.d.ts +231 -92
  575. package/index.js +315 -310
  576. package/package.json +3 -3
  577. package/Build/Workers/chunk-TVL3F7IU.js +0 -39
  578. package/Source/Scene/TextureAtlas.js +0 -558
@@ -1,7 +1,7 @@
1
1
  import Cartesian3 from "../Core/Cartesian3.js";
2
2
  import Color from "../Core/Color.js";
3
3
  import ComponentDatatype from "../Core/ComponentDatatype.js";
4
- import defaultValue from "../Core/defaultValue.js";
4
+ import Frozen from "../Core/Frozen.js";
5
5
  import defined from "../Core/defined.js";
6
6
  import destroyObject from "../Core/destroyObject.js";
7
7
  import IndexDatatype from "../Core/IndexDatatype.js";
@@ -51,7 +51,7 @@ import Vector3DTileBatch from "./Vector3DTileBatch.js";
51
51
  * @private
52
52
  */
53
53
  function Vector3DTilePrimitive(options) {
54
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
54
+ options = options ?? Frozen.EMPTY_OBJECT;
55
55
 
56
56
  this._batchTable = options.batchTable;
57
57
  this._batchIds = options.batchIds;
@@ -70,7 +70,7 @@ function Vector3DTilePrimitive(options) {
70
70
  this._boundingVolume = options.boundingVolume;
71
71
  this._boundingVolumes = options.boundingVolumes;
72
72
 
73
- this._center = defaultValue(options.center, Cartesian3.ZERO);
73
+ this._center = options.center ?? Cartesian3.ZERO;
74
74
 
75
75
  this._va = undefined;
76
76
  this._sp = undefined;
@@ -127,10 +127,8 @@ function Vector3DTilePrimitive(options) {
127
127
  * @type {ClassificationType}
128
128
  * @default ClassificationType.BOTH
129
129
  */
130
- this.classificationType = defaultValue(
131
- options.classificationType,
132
- ClassificationType.BOTH,
133
- );
130
+ this.classificationType =
131
+ options.classificationType ?? ClassificationType.BOTH;
134
132
 
135
133
  // Hidden options
136
134
  this._vertexShaderSource = options._vertexShaderSource;
@@ -257,10 +255,8 @@ function createShaders(primitive, context) {
257
255
  }
258
256
 
259
257
  const batchTable = primitive._batchTable;
260
- const attributeLocations = defaultValue(
261
- primitive._attributeLocations,
262
- defaultAttributeLocations,
263
- );
258
+ const attributeLocations =
259
+ primitive._attributeLocations ?? defaultAttributeLocations;
264
260
 
265
261
  let pickId = primitive._pickId;
266
262
  const vertexShaderSource = primitive._vertexShaderSource;
@@ -769,7 +765,7 @@ function createColorCommands(primitive, context) {
769
765
 
770
766
  const vertexArray = primitive._va;
771
767
  const sp = primitive._sp;
772
- const modelMatrix = defaultValue(primitive._modelMatrix, Matrix4.IDENTITY);
768
+ const modelMatrix = primitive._modelMatrix ?? Matrix4.IDENTITY;
773
769
  const uniformMap = primitive._uniformMap;
774
770
  const bv = primitive._boundingVolume;
775
771
 
@@ -876,7 +872,7 @@ function createPickCommands(primitive) {
876
872
  const vertexArray = primitive._va;
877
873
  const spStencil = primitive._spStencil;
878
874
  const spPick = primitive._spPick;
879
- const modelMatrix = defaultValue(primitive._modelMatrix, Matrix4.IDENTITY);
875
+ const modelMatrix = primitive._modelMatrix ?? Matrix4.IDENTITY;
880
876
  const uniformMap = primitive._uniformMap;
881
877
 
882
878
  for (let j = 0; j < length; ++j) {
@@ -5,7 +5,6 @@ import Check from "../Core/Check.js";
5
5
  import Matrix3 from "../Core/Matrix3.js";
6
6
  import Matrix4 from "../Core/Matrix4.js";
7
7
  import OrientedBoundingBox from "../Core/OrientedBoundingBox.js";
8
- import defaultValue from "../Core/defaultValue.js";
9
8
 
10
9
  /**
11
10
  * A box {@link VoxelShape}.
@@ -24,6 +23,7 @@ function VoxelBoxShape() {
24
23
  /**
25
24
  * An oriented bounding box containing the bounded shape.
26
25
  * The update function must be called before accessing this value.
26
+ * @private
27
27
  * @type {OrientedBoundingBox}
28
28
  * @readonly
29
29
  */
@@ -32,6 +32,7 @@ function VoxelBoxShape() {
32
32
  /**
33
33
  * A bounding sphere containing the bounded shape.
34
34
  * The update function must be called before accessing this value.
35
+ * @private
35
36
  * @type {BoundingSphere}
36
37
  * @readonly
37
38
  */
@@ -40,6 +41,7 @@ function VoxelBoxShape() {
40
41
  /**
41
42
  * A transformation matrix containing the bounded shape.
42
43
  * The update function must be called before accessing this value.
44
+ * @private
43
45
  * @type {Matrix4}
44
46
  * @readonly
45
47
  */
@@ -48,6 +50,7 @@ function VoxelBoxShape() {
48
50
  /**
49
51
  * A transformation matrix containing the shape, ignoring the bounds.
50
52
  * The update function must be called before accessing this value.
53
+ * @private
51
54
  * @type {Matrix4}
52
55
  * @readonly
53
56
  */
@@ -72,6 +75,7 @@ function VoxelBoxShape() {
72
75
  );
73
76
 
74
77
  /**
78
+ * @private
75
79
  * @type {Object<string, any>}
76
80
  * @readonly
77
81
  */
@@ -83,6 +87,7 @@ function VoxelBoxShape() {
83
87
  };
84
88
 
85
89
  /**
90
+ * @private
86
91
  * @type {Object<string, any>}
87
92
  * @readonly
88
93
  */
@@ -93,6 +98,7 @@ function VoxelBoxShape() {
93
98
 
94
99
  /**
95
100
  * The maximum number of intersections against the shape for any ray direction.
101
+ * @private
96
102
  * @type {number}
97
103
  * @readonly
98
104
  */
@@ -115,7 +121,7 @@ const transformLocalToUv = Matrix4.fromRotationTranslation(
115
121
 
116
122
  /**
117
123
  * Update the shape's state.
118
- *
124
+ * @private
119
125
  * @param {Matrix4} modelMatrix The model matrix.
120
126
  * @param {Cartesian3} minBounds The minimum bounds.
121
127
  * @param {Cartesian3} maxBounds The maximum bounds.
@@ -130,8 +136,8 @@ VoxelBoxShape.prototype.update = function (
130
136
  clipMinBounds,
131
137
  clipMaxBounds,
132
138
  ) {
133
- clipMinBounds = defaultValue(clipMinBounds, VoxelBoxShape.DefaultMinBounds);
134
- clipMaxBounds = defaultValue(clipMaxBounds, VoxelBoxShape.DefaultMaxBounds);
139
+ clipMinBounds = clipMinBounds ?? VoxelBoxShape.DefaultMinBounds;
140
+ clipMaxBounds = clipMaxBounds ?? VoxelBoxShape.DefaultMaxBounds;
135
141
  //>>includeStart('debug', pragmas.debug);
136
142
  Check.typeOf.object("modelMatrix", modelMatrix);
137
143
  Check.typeOf.object("minBounds", minBounds);
@@ -302,7 +308,7 @@ const scratchTileMaxBounds = new Cartesian3();
302
308
  /**
303
309
  * Computes an oriented bounding box for a specified tile.
304
310
  * The update function must be called before calling this function.
305
- *
311
+ * @private
306
312
  * @param {number} tileLevel The tile's level.
307
313
  * @param {number} tileX The tile's x coordinate.
308
314
  * @param {number} tileY The tile's y coordinate.
@@ -356,7 +362,7 @@ const sampleSizeScratch = new Cartesian3();
356
362
  /**
357
363
  * Computes an oriented bounding box for a specified sample within a specified tile.
358
364
  * The update function must be called before calling this function.
359
- *
365
+ * @private
360
366
  * @param {SpatialNode} spatialNode The spatial node containing the sample
361
367
  * @param {Cartesian3} tileDimensions The size of the tile in number of samples, before padding
362
368
  * @param {Cartesian3} tileUv The sample coordinate within the tile
@@ -429,7 +435,7 @@ VoxelBoxShape.prototype.computeOrientedBoundingBoxForSample = function (
429
435
 
430
436
  /**
431
437
  * Defines the minimum bounds of the shape. Corresponds to minimum X, Y, Z.
432
- *
438
+ * @private
433
439
  * @type {Cartesian3}
434
440
  * @constant
435
441
  * @readonly
@@ -440,7 +446,7 @@ VoxelBoxShape.DefaultMinBounds = Object.freeze(
440
446
 
441
447
  /**
442
448
  * Defines the maximum bounds of the shape. Corresponds to maximum X, Y, Z.
443
- *
449
+ * @private
444
450
  * @type {Cartesian3}
445
451
  * @constant
446
452
  * @readonly
@@ -71,8 +71,8 @@ VoxelCell.fromKeyframeNode = function (
71
71
  //>>includeEnd('debug');
72
72
 
73
73
  const voxelCell = new VoxelCell(primitive, tileIndex, sampleIndex);
74
- const { spatialNode, metadata } = keyframeNode;
75
- voxelCell._metadata = getMetadataForSample(primitive, metadata, sampleIndex);
74
+ const { spatialNode, content } = keyframeNode;
75
+ voxelCell._metadata = getMetadataForSample(primitive, content, sampleIndex);
76
76
  voxelCell._orientedBoundingBox = getOrientedBoundingBox(
77
77
  primitive,
78
78
  spatialNode,
@@ -85,15 +85,16 @@ VoxelCell.fromKeyframeNode = function (
85
85
  /**
86
86
  * @private
87
87
  * @param {VoxelPrimitive} primitive
88
- * @param {object} metadata
88
+ * @param {VoxelContent} content
89
89
  * @param {number} sampleIndex
90
90
  * @returns {object}
91
91
  */
92
- function getMetadataForSample(primitive, metadata, sampleIndex) {
93
- if (!defined(metadata)) {
92
+ function getMetadataForSample(primitive, content, sampleIndex) {
93
+ if (!defined(content) || !defined(content.metadata)) {
94
94
  return undefined;
95
95
  }
96
96
  const { names, types } = primitive.provider;
97
+ const { metadata } = content;
97
98
  const metadataMap = {};
98
99
  for (let i = 0; i < names.length; i++) {
99
100
  const name = names[i];
@@ -1,167 +1,231 @@
1
+ import { destroyObject } from "@cesium/engine";
1
2
  import Check from "../Core/Check.js";
3
+ import ComponentDatatype from "../Core/ComponentDatatype.js";
2
4
  import DeveloperError from "../Core/DeveloperError.js";
3
5
  import defined from "../Core/defined.js";
4
- import getJsonFromTypedArray from "../Core/getJsonFromTypedArray.js";
5
- import MetadataTable from "./MetadataTable.js";
6
+ import GltfLoader from "./GltfLoader.js";
7
+ import MetadataComponentType from "./MetadataComponentType.js";
8
+ import MetadataType from "./MetadataType.js";
6
9
 
7
10
  /**
11
+ * <div class="notice">
12
+ * To construct a VoxelContent, call {@link VoxelContent.fromMetadataArray} or {@link VoxelContent.fromGltf}. Do not call the constructor directly.
13
+ * </div>
8
14
  * An object representing voxel content for a {@link Cesium3DTilesVoxelProvider}.
9
15
  *
10
16
  * @alias VoxelContent
11
- * @constructor
17
+ * @internalConstructor
12
18
  *
13
- * @param {Resource} resource The resource for this voxel content. This is used for fetching external buffers as needed.
19
+ * @privateParam {object} options An object with the following properties:
20
+ * @privateParam {ResourceLoader} [options.loader] The loader used to load the voxel content.
21
+ * @privateParam {Int8Array[]|Uint8Array[]|Int16Array[]|Uint16Array[]|Int32Array[]|Uint32Array[]|Float32Array[]|Float64Array[]} [options.metadata] The metadata for this voxel content.
22
+ *
23
+ * @exception {DeveloperError} One of loader and metadata must be defined.
24
+ * @exception {DeveloperError} metadata must be an array of TypedArrays.
14
25
  *
15
- * @private
16
26
  * @experimental This feature is not final and is subject to change without Cesium's standard deprecation policy.
17
27
  */
18
- function VoxelContent(resource) {
28
+ function VoxelContent(options) {
19
29
  //>>includeStart('debug', pragmas.debug);
20
- Check.typeOf.object("resource", resource);
30
+ Check.typeOf.object("options", options);
31
+ if (!defined(options.loader)) {
32
+ if (!defined(options.metadata)) {
33
+ throw new DeveloperError("One of loader and metadata must be defined.");
34
+ }
35
+ if (!Array.isArray(options.metadata)) {
36
+ throw new DeveloperError("metadata must be an array of TypedArrays.");
37
+ }
38
+ }
21
39
  //>>includeEnd('debug');
22
40
 
23
- this._resource = resource;
24
- this._metadataTable = undefined;
41
+ const { loader, metadata } = options;
42
+
43
+ this._loader = loader;
44
+ this._metadata = metadata;
45
+ this._resourcesLoaded = false;
46
+ this._ready = false;
25
47
  }
26
48
 
27
49
  Object.defineProperties(VoxelContent.prototype, {
28
50
  /**
29
- * The {@link MetadataTable} storing voxel property values.
51
+ * Returns true when the content is ready to render; otherwise false
52
+ *
53
+ * @memberof VoxelContent.prototype
30
54
  *
31
- * @type {MetadataTable}
55
+ * @type {boolean}
32
56
  * @readonly
33
57
  * @private
34
58
  */
35
- metadataTable: {
59
+ ready: {
60
+ get: function () {
61
+ return this._ready;
62
+ },
63
+ },
64
+
65
+ /**
66
+ * The metadata for this voxel content.
67
+ * The metadata is an array of typed arrays, one for each field.
68
+ * The data for one field is a flattened 3D array ordered by X, then Y, then Z.
69
+ * @type {Int8Array[]|Uint8Array[]|Int16Array[]|Uint16Array[]|Int32Array[]|Uint32Array[]|Float32Array[]|Float64Array[]}
70
+ * @readonly
71
+ */
72
+ metadata: {
36
73
  get: function () {
37
- return this._metadataTable;
74
+ return this._metadata;
38
75
  },
39
76
  },
40
77
  });
41
78
 
42
79
  /**
43
- * Creates an object representing voxel content for a {@link Cesium3DTilesVoxelProvider}.
80
+ * Constructs a VoxelContent from an array of metadata.
81
+ *
82
+ * @param {Int8Array[]|Uint8Array[]|Int16Array[]|Uint16Array[]|Int32Array[]|Uint32Array[]|Float32Array[]|Float64Array[]} metadata The metadata to use for this voxel content.
83
+ * @returns {VoxelContent} A VoxelContent containing the specified metadata.
84
+ */
85
+ VoxelContent.fromMetadataArray = function (metadata) {
86
+ //>>includeStart('debug', pragmas.debug);
87
+ Check.typeOf.object("metadata", metadata);
88
+ if (!Array.isArray(metadata)) {
89
+ throw new DeveloperError("metadata must be an array of TypedArrays.");
90
+ }
91
+ //>>includeEnd('debug');
92
+
93
+ return new VoxelContent({ metadata });
94
+ };
95
+
96
+ /**
97
+ * Constructs a VoxelContent from a glTF resource.
44
98
  *
45
- * @param {Resource} resource The resource for this voxel content. This is used for fetching external buffers as needed.
46
- * @param {object} [json] Voxel JSON contents. Mutually exclusive with binary.
47
- * @param {Uint8Array} [binary] Voxel binary contents. Mutually exclusive with json.
48
- * @param {MetadataSchema} metadataSchema The metadata schema used by property tables in the voxel content
49
- * @returns {Promise<VoxelContent>}
99
+ * @param {Resource} resource A Resource pointing to a glTF containing voxel content.
100
+ * @returns {Promise<VoxelContent>} A promise that resolves to the voxel content.
50
101
  *
51
- * @exception {DeveloperError} One of json and binary must be defined.
102
+ * @private
52
103
  */
53
- VoxelContent.fromJson = async function (
54
- resource,
55
- json,
56
- binary,
57
- metadataSchema,
58
- ) {
104
+ VoxelContent.fromGltf = async function (resource) {
59
105
  //>>includeStart('debug', pragmas.debug);
60
106
  Check.typeOf.object("resource", resource);
61
- if (defined(json) === defined(binary)) {
62
- throw new DeveloperError("One of json and binary must be defined.");
63
- }
64
107
  //>>includeEnd('debug');
65
108
 
66
- let chunks;
67
- if (defined(json)) {
68
- chunks = {
69
- json: json,
70
- binary: undefined,
71
- };
72
- } else {
73
- chunks = parseVoxelChunks(binary);
109
+ // Construct the glTF loader
110
+ const loader = new GltfLoader({
111
+ gltfResource: resource,
112
+ releaseGltfJson: false,
113
+ loadAttributesAsTypedArray: true,
114
+ });
115
+
116
+ try {
117
+ // This loads the gltf JSON and ensures the gltf is valid
118
+ // Further resource loading is handled synchronously in loader.process()
119
+ // via voxelContent.update() as the frameState is needed
120
+ await loader.load();
121
+ } catch (error) {
122
+ loader.destroy();
123
+ throw error;
74
124
  }
75
125
 
76
- const buffersU8 = await requestBuffers(resource, chunks.json, chunks.binary);
77
- const bufferViewsU8 = {};
78
- const bufferViewsLength = chunks.json.bufferViews.length;
79
- for (let i = 0; i < bufferViewsLength; ++i) {
80
- const bufferViewJson = chunks.json.bufferViews[i];
81
- const start = bufferViewJson.byteOffset;
82
- const end = start + bufferViewJson.byteLength;
83
- const buffer = buffersU8[bufferViewJson.buffer];
84
- const bufferView = buffer.subarray(start, end);
85
- bufferViewsU8[i] = bufferView;
126
+ return new VoxelContent({ loader });
127
+ };
128
+
129
+ /**
130
+ * Updates the content until all resources are ready for rendering.
131
+ * @param {FrameState} frameState The frame state
132
+ * @private
133
+ */
134
+ VoxelContent.prototype.update = function (primitive, frameState) {
135
+ const loader = this._loader;
136
+
137
+ if (this._ready) {
138
+ // Nothing to do
139
+ return;
86
140
  }
87
141
 
88
- const propertyTableIndex = chunks.json.voxelTable;
89
- const propertyTableJson = chunks.json.propertyTables[propertyTableIndex];
142
+ // Ensures frames continue to render in requestRender mode while resources are processing
143
+ frameState.afterRender.push(() => true);
90
144
 
91
- const content = new VoxelContent(resource);
145
+ if (!defined(loader)) {
146
+ this._ready = true;
147
+ return;
148
+ }
92
149
 
93
- content._metadataTable = new MetadataTable({
94
- count: propertyTableJson.count,
95
- properties: propertyTableJson.properties,
96
- class: metadataSchema.classes[propertyTableJson.class],
97
- bufferViews: bufferViewsU8,
98
- });
150
+ if (this._resourcesLoaded) {
151
+ const { structuralMetadata, scene } = loader.components;
152
+ const { attributes } = scene.nodes[0].primitives[0];
153
+ this._metadata = processAttributes(
154
+ attributes,
155
+ structuralMetadata,
156
+ primitive,
157
+ );
158
+ this._ready = true;
159
+ return;
160
+ }
99
161
 
100
- return content;
162
+ this._resourcesLoaded = loader.process(frameState);
101
163
  };
102
164
 
103
- function requestBuffers(resource, json, binary) {
104
- const buffersLength = json.buffers.length;
105
- const bufferPromises = new Array(buffersLength);
106
- for (let i = 0; i < buffersLength; i++) {
107
- const buffer = json.buffers[i];
108
- if (defined(buffer.uri)) {
109
- const baseResource = resource;
110
- const bufferResource = baseResource.getDerivedResource({
111
- url: buffer.uri,
112
- });
113
- bufferPromises[i] = bufferResource
114
- .fetchArrayBuffer()
115
- .then(function (arrayBuffer) {
116
- return new Uint8Array(arrayBuffer);
117
- });
118
- } else {
119
- bufferPromises[i] = Promise.resolve(binary);
165
+ /**
166
+ * Processes the attributes from the glTF loader, reordering them into the order expected by the primitive.
167
+ *
168
+ * @param {ModelComponents.Attribute[]} attributes The attributes to process
169
+ * @param {StructuralMetadata} structuralMetadata Information from the glTF EXT_structural_metadata extension
170
+ * @param {VoxelPrimitive} primitive The primitive for which this voxel content will be used.
171
+ * @returns {Int8Array[]|Uint8Array[]|Int16Array[]|Uint16Array[]|Int32Array[]|Uint32Array[]|Float32Array[]|Float64Array[]} An array of typed arrays containing the attribute values
172
+ * @private
173
+ */
174
+ function processAttributes(attributes, structuralMetadata, primitive) {
175
+ const { className, names, types, componentTypes } = primitive.provider;
176
+ const propertyAttribute = structuralMetadata.propertyAttributes.find(
177
+ (p) => p.class.id === className,
178
+ );
179
+ const { properties } = propertyAttribute;
180
+ const data = new Array(names.length);
181
+
182
+ for (let i = 0; i < attributes.length; i++) {
183
+ // Find the appropriate glTF attribute based on its name.
184
+ const name = properties[names[i]].attribute;
185
+ const attribute = attributes.find((a) => a.name === name);
186
+ if (!defined(attribute)) {
187
+ continue;
120
188
  }
189
+
190
+ const componentDatatype = MetadataComponentType.toComponentDatatype(
191
+ componentTypes[i],
192
+ );
193
+ const componentCount = MetadataType.getComponentCount(types[i]);
194
+ const totalCount = attribute.count * componentCount;
195
+ data[i] = ComponentDatatype.createArrayBufferView(
196
+ componentDatatype,
197
+ attribute.typedArray.buffer,
198
+ attribute.typedArray.byteOffset + attribute.byteOffset,
199
+ totalCount,
200
+ );
121
201
  }
122
202
 
123
- return Promise.all(bufferPromises);
203
+ return data;
124
204
  }
125
205
 
126
206
  /**
127
- * A helper object for storing the two parts of the binary voxel content
207
+ * Returns true if this object was destroyed; otherwise, false.
208
+ * <br /><br />
209
+ * If this object was destroyed, it should not be used; calling any function other than
210
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
211
+ *
212
+ * @returns {boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
213
+ *
214
+ * @see VoxelContent#destroy
128
215
  *
129
- * @typedef {object} VoxelChunks
130
- * @property {object} json The json chunk of the binary voxel content
131
- * @property {Uint8Array} binary The binary chunk of the binary voxel content. This represents the internal buffer.
132
216
  * @private
133
217
  */
218
+ VoxelContent.prototype.isDestroyed = function () {
219
+ return false;
220
+ };
134
221
 
135
222
  /**
136
- * Given binary voxel content, split into JSON and binary chunks
137
- *
138
- * @param {Uint8Array} binaryView The binary voxel content
139
- * @returns {VoxelChunks} An object containing the JSON and binary chunks
223
+ * Frees the resources used by this object.
140
224
  * @private
141
225
  */
142
- function parseVoxelChunks(binaryView) {
143
- // Parse the header
144
- const littleEndian = true;
145
- const reader = new DataView(binaryView.buffer, binaryView.byteOffset);
146
- // Skip to the chunk lengths
147
- let byteOffset = 8;
148
-
149
- // Read the bottom 32 bits of the 64-bit byte length. This is ok for now because:
150
- // 1) not all browsers have native 64-bit operations
151
- // 2) the data is well under 4GB
152
- const jsonByteLength = reader.getUint32(byteOffset, littleEndian);
153
- byteOffset += 8;
154
- const binaryByteLength = reader.getUint32(byteOffset, littleEndian);
155
- byteOffset += 8;
156
-
157
- const json = getJsonFromTypedArray(binaryView, byteOffset, jsonByteLength);
158
- byteOffset += jsonByteLength;
159
- const binary = binaryView.subarray(byteOffset, byteOffset + binaryByteLength);
160
-
161
- return {
162
- json: json,
163
- binary: binary,
164
- };
165
- }
226
+ VoxelContent.prototype.destroy = function () {
227
+ this._loader = this._loader && this._loader.destroy();
228
+ return destroyObject(this);
229
+ };
166
230
 
167
231
  export default VoxelContent;