@cesium/engine 21.0.1 → 22.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 (244) hide show
  1. package/Build/Workers/{chunk-LPKJSIMD.js → chunk-2D3GLFZD.js} +12 -12
  2. package/Build/Workers/chunk-34YXP222.js +352 -0
  3. package/Build/Workers/{chunk-UKA7OISV.js → chunk-3GL53OCU.js} +17 -18
  4. package/Build/Workers/{chunk-WQZL6CA2.js → chunk-5B7VZQZY.js} +6 -6
  5. package/Build/Workers/{chunk-FE565QHX.js → chunk-5T5SY63I.js} +2 -2
  6. package/Build/Workers/{chunk-RR3NCT4R.js → chunk-5ZF53EY6.js} +4 -4
  7. package/Build/Workers/{chunk-PZUZCAX3.js → chunk-6HBKE43B.js} +7 -7
  8. package/Build/Workers/{chunk-5YXA47QD.js → chunk-726NINF5.js} +16 -16
  9. package/Build/Workers/{chunk-3RKX3UFI.js → chunk-75HAJIDT.js} +1 -1
  10. package/Build/Workers/{chunk-CBPNIEGH.js → chunk-7KAXDKRU.js} +10 -10
  11. package/Build/Workers/chunk-7XEJGXX2.js +2759 -0
  12. package/Build/Workers/{chunk-U2GR5FDL.js → chunk-A4DPJIWS.js} +18 -10
  13. package/Build/Workers/{chunk-G3CKZ34K.js → chunk-A6JAFSZT.js} +5 -5
  14. package/Build/Workers/{chunk-2SI7DEW5.js → chunk-AARZSH4V.js} +5 -5
  15. package/Build/Workers/{chunk-W6KMV4F5.js → chunk-AOM3FHBN.js} +6 -6
  16. package/Build/Workers/{chunk-VVALNLSH.js → chunk-BJSNGGBM.js} +4 -4
  17. package/Build/Workers/{chunk-3YNW5K6O.js → chunk-ECHAJNQJ.js} +12 -12
  18. package/Build/Workers/{chunk-KZ7GDSAJ.js → chunk-EJO3NKMS.js} +1 -1
  19. package/Build/Workers/{chunk-UFSYRVC5.js → chunk-EZ7NJXQN.js} +4 -4
  20. package/Build/Workers/{chunk-P2UKEFCK.js → chunk-FA3SCJDX.js} +2 -2
  21. package/Build/Workers/{chunk-MXOGBWMP.js → chunk-GYRDA3XK.js} +14 -14
  22. package/Build/Workers/{chunk-KVB73ECP.js → chunk-H7B7FU2U.js} +7 -7
  23. package/Build/Workers/{chunk-XJVRYJVZ.js → chunk-IGX772ZQ.js} +1 -1
  24. package/Build/Workers/{chunk-MQPDOWGH.js → chunk-JDJAPBZP.js} +1 -1
  25. package/Build/Workers/{chunk-DDXI6UYW.js → chunk-JZFU2LEM.js} +4 -4
  26. package/Build/Workers/{chunk-DAJKOQW6.js → chunk-KGLDJRSO.js} +9 -9
  27. package/Build/Workers/{chunk-CSDYSXBI.js → chunk-KUB64XW6.js} +11 -11
  28. package/Build/Workers/{chunk-X3ZV3XNO.js → chunk-L7U26FFD.js} +16 -16
  29. package/Build/Workers/{chunk-YZ3RCE45.js → chunk-LEFQBK6H.js} +11 -11
  30. package/Build/Workers/{chunk-KEPPNSBL.js → chunk-LWJXCI3F.js} +5 -5
  31. package/Build/Workers/{chunk-YNOVMSUX.js → chunk-M7HRE4QR.js} +8 -8
  32. package/Build/Workers/{chunk-ASVODZNK.js → chunk-MXHRZHDF.js} +6 -6
  33. package/Build/Workers/{chunk-PJAA7QSC.js → chunk-N52ZRKUE.js} +6 -6
  34. package/Build/Workers/{chunk-W6I3LNPF.js → chunk-NE5JTQJP.js} +7 -7
  35. package/Build/Workers/{chunk-XG54SG4O.js → chunk-NGKF5NTR.js} +5 -5
  36. package/Build/Workers/{chunk-42EJCSIV.js → chunk-NHZNMTIR.js} +5 -5
  37. package/Build/Workers/{chunk-LU7DLY2L.js → chunk-OE22564R.js} +3 -3
  38. package/Build/Workers/{chunk-A2SP2EJZ.js → chunk-OUBBMEWX.js} +6 -6
  39. package/Build/Workers/{chunk-J2XQVKVH.js → chunk-P2H75UV5.js} +67 -33
  40. package/Build/Workers/{chunk-J3KPR6DJ.js → chunk-QCMRUVVF.js} +12 -12
  41. package/Build/Workers/{chunk-RVRN4KDB.js → chunk-QSMIHPUM.js} +2 -2
  42. package/Build/Workers/{chunk-EBDZDBJN.js → chunk-RCCYW6E7.js} +12 -12
  43. package/Build/Workers/{chunk-LV3G32QE.js → chunk-RQRODXVN.js} +4 -4
  44. package/Build/Workers/{chunk-OBS5EMZ6.js → chunk-SZN34LQ5.js} +10 -10
  45. package/Build/Workers/{chunk-IKUOV6DO.js → chunk-U4XMLGSR.js} +7 -7
  46. package/Build/Workers/{chunk-NYYQZ3LH.js → chunk-U7CX3HHE.js} +8 -8
  47. package/Build/Workers/{chunk-QNOIRRJK.js → chunk-VCVA7BMD.js} +4 -4
  48. package/Build/Workers/{chunk-TGJQMEL4.js → chunk-VVZ667H6.js} +2 -2
  49. package/Build/Workers/{chunk-DBHL2UVG.js → chunk-W4PIP5PG.js} +2 -2
  50. package/Build/Workers/{chunk-2QPH5QDK.js → chunk-XPVZWY4A.js} +8 -8
  51. package/Build/Workers/{chunk-4CORGH7N.js → chunk-XQ347YWU.js} +13 -13
  52. package/Build/Workers/{chunk-T7HU6E7G.js → chunk-XZO6F23E.js} +1 -1
  53. package/Build/Workers/{chunk-DTKSVIH5.js → chunk-YLILBDWK.js} +2 -2
  54. package/Build/Workers/{chunk-JG3C3LPY.js → chunk-YLXWC7OW.js} +4 -4
  55. package/Build/Workers/combineGeometry.js +21 -21
  56. package/Build/Workers/createBoxGeometry.js +15 -15
  57. package/Build/Workers/createBoxOutlineGeometry.js +13 -13
  58. package/Build/Workers/createCircleGeometry.js +23 -23
  59. package/Build/Workers/createCircleOutlineGeometry.js +16 -16
  60. package/Build/Workers/createCoplanarPolygonGeometry.js +30 -30
  61. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +28 -28
  62. package/Build/Workers/createCorridorGeometry.js +26 -26
  63. package/Build/Workers/createCorridorOutlineGeometry.js +25 -25
  64. package/Build/Workers/createCylinderGeometry.js +17 -17
  65. package/Build/Workers/createCylinderOutlineGeometry.js +15 -15
  66. package/Build/Workers/createEllipseGeometry.js +23 -23
  67. package/Build/Workers/createEllipseOutlineGeometry.js +16 -16
  68. package/Build/Workers/createEllipsoidGeometry.js +16 -16
  69. package/Build/Workers/createEllipsoidOutlineGeometry.js +15 -15
  70. package/Build/Workers/createFrustumGeometry.js +15 -15
  71. package/Build/Workers/createFrustumOutlineGeometry.js +15 -15
  72. package/Build/Workers/createGeometry.js +24 -22
  73. package/Build/Workers/createGroundPolylineGeometry.js +19 -19
  74. package/Build/Workers/createPlaneGeometry.js +13 -13
  75. package/Build/Workers/createPlaneOutlineGeometry.js +12 -12
  76. package/Build/Workers/createPolygonGeometry.js +29 -29
  77. package/Build/Workers/createPolygonOutlineGeometry.js +27 -27
  78. package/Build/Workers/createPolylineGeometry.js +22 -22
  79. package/Build/Workers/createPolylineVolumeGeometry.js +28 -28
  80. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +24 -24
  81. package/Build/Workers/createRectangleGeometry.js +24 -24
  82. package/Build/Workers/createRectangleOutlineGeometry.js +17 -17
  83. package/Build/Workers/createSimplePolylineGeometry.js +20 -20
  84. package/Build/Workers/createSphereGeometry.js +16 -16
  85. package/Build/Workers/createSphereOutlineGeometry.js +15 -15
  86. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  87. package/Build/Workers/createVectorTileClampedPolylines.js +12 -12
  88. package/Build/Workers/createVectorTileGeometries.js +21 -21
  89. package/Build/Workers/createVectorTilePoints.js +11 -11
  90. package/Build/Workers/createVectorTilePolygons.js +19 -19
  91. package/Build/Workers/createVectorTilePolylines.js +12 -12
  92. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +88 -0
  93. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
  94. package/Build/Workers/createVerticesFromHeightmap.js +21 -21
  95. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -277
  96. package/Build/Workers/createWallGeometry.js +21 -21
  97. package/Build/Workers/createWallOutlineGeometry.js +20 -20
  98. package/Build/Workers/decodeDraco.js +10 -10
  99. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  100. package/Build/Workers/decodeI3S.js +9 -9
  101. package/Build/Workers/gaussianSplatSorter.js +4 -4
  102. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  103. package/Build/Workers/transcodeKTX2.js +6 -6
  104. package/Build/Workers/transferTypedArrayTest.js +1 -1
  105. package/Build/Workers/upsampleQuantizedTerrainMesh.js +19 -19
  106. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +92 -0
  107. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +2 -2
  108. package/Source/Core/Cesium3DTilesTerrainData.js +930 -0
  109. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +1866 -0
  110. package/Source/Core/Cesium3DTilesTerrainProvider.js +1052 -0
  111. package/Source/Core/CesiumTerrainProvider.js +2 -2
  112. package/Source/Core/Color.js +23 -6
  113. package/Source/Core/EllipsoidalOccluder.js +2 -2
  114. package/Source/Core/FeatureDetection.js +0 -2
  115. package/Source/Core/GoogleEarthEnterpriseMetadata.js +1 -1
  116. package/Source/Core/GoogleEarthEnterpriseTerrainData.js +1 -1
  117. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -1
  118. package/Source/Core/HeightmapTerrainData.js +10 -22
  119. package/Source/Core/HilbertOrder.js +0 -6
  120. package/Source/Core/ITwinPlatform.js +6 -6
  121. package/Source/Core/Ion.js +1 -1
  122. package/Source/Core/IonResource.js +35 -27
  123. package/Source/Core/PixelFormat.js +2 -2
  124. package/Source/Core/QuantizedMeshTerrainData.js +23 -57
  125. package/Source/Core/Resource.js +15 -11
  126. package/Source/Core/S2Cell.js +6 -18
  127. package/Source/Core/TaskProcessor.js +1 -1
  128. package/Source/Core/TerrainData.js +2 -1
  129. package/Source/Core/TerrainEncoding.js +215 -38
  130. package/Source/Core/TerrainMesh.js +8 -8
  131. package/Source/Core/TerrainProvider.js +151 -0
  132. package/Source/Core/VRTheWorldTerrainProvider.js +2 -2
  133. package/Source/Core/binarySearch.js +1 -1
  134. package/Source/Core/createWorldBathymetryAsync.js +2 -2
  135. package/Source/Core/createWorldTerrainAsync.js +3 -3
  136. package/Source/Core/loadImageFromTypedArray.js +9 -3
  137. package/Source/Core/mergeSort.js +1 -1
  138. package/Source/DataSources/PropertyArray.js +2 -2
  139. package/Source/Renderer/AutomaticUniforms.js +61 -0
  140. package/Source/Renderer/Context.js +13 -7
  141. package/Source/Renderer/Pass.js +10 -9
  142. package/Source/Renderer/UniformState.js +12 -0
  143. package/Source/Renderer/VertexArray.js +1 -1
  144. package/Source/Scene/ArcGisMapServerImageryProvider.js +1 -1
  145. package/Source/Scene/ArcGisMapService.js +1 -1
  146. package/Source/Scene/Azure2DImageryProvider.js +7 -5
  147. package/Source/Scene/BatchTable.js +2 -2
  148. package/Source/Scene/BillboardCollection.js +25 -21
  149. package/Source/Scene/BingMapsImageryProvider.js +1 -1
  150. package/Source/Scene/BoundingVolumeSemantics.js +54 -62
  151. package/Source/Scene/Cesium3DTile.js +3 -3
  152. package/Source/Scene/Cesium3DTilesVoxelProvider.js +1 -1
  153. package/Source/Scene/Cesium3DTileset.js +1 -1
  154. package/Source/Scene/EdgeFramebuffer.js +245 -0
  155. package/Source/Scene/FrameState.js +12 -0
  156. package/Source/Scene/GaussianSplat3DTileContent.js +12 -16
  157. package/Source/Scene/GaussianSplatPrimitive.js +12 -8
  158. package/Source/Scene/GaussianSplatSorter.js +2 -2
  159. package/Source/Scene/Globe.js +1 -1
  160. package/Source/Scene/GlobeSurfaceTile.js +10 -4
  161. package/Source/Scene/GltfBufferViewLoader.js +18 -0
  162. package/Source/Scene/GltfLoader.js +46 -8
  163. package/Source/Scene/Google2DImageryProvider.js +39 -27
  164. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +1 -1
  165. package/Source/Scene/I3SDataProvider.js +1 -1
  166. package/Source/Scene/I3SDecoder.js +3 -3
  167. package/Source/Scene/ITwinData.js +4 -4
  168. package/Source/Scene/ImageryLayer.js +1 -1
  169. package/Source/Scene/Implicit3DTileContent.js +18 -7
  170. package/Source/Scene/ImplicitSubtree.js +3 -3
  171. package/Source/Scene/ImplicitTileset.js +2 -2
  172. package/Source/Scene/IonImageryProvider.js +15 -84
  173. package/Source/Scene/IonImageryProviderFactory.js +194 -0
  174. package/Source/Scene/LabelCollection.js +54 -36
  175. package/Source/Scene/MetadataComponentType.js +5 -5
  176. package/Source/Scene/MetadataTableProperty.js +3 -9
  177. package/Source/Scene/Model/EdgeDetectionPipelineStage.js +42 -0
  178. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +800 -0
  179. package/Source/Scene/Model/MetadataPipelineStage.js +7 -7
  180. package/Source/Scene/Model/ModelDrawCommand.js +69 -0
  181. package/Source/Scene/Model/ModelImagery.js +4 -0
  182. package/Source/Scene/Model/ModelRuntimeNode.js +2 -2
  183. package/Source/Scene/Model/ModelRuntimePrimitive.js +13 -2
  184. package/Source/Scene/Model/ModelSceneGraph.js +15 -3
  185. package/Source/Scene/Model/ModelUtility.js +0 -1
  186. package/Source/Scene/Model/NodeRenderResources.js +1 -1
  187. package/Source/Scene/Model/PrimitiveRenderResources.js +1 -1
  188. package/Source/Scene/OIT.js +11 -1
  189. package/Source/Scene/PickFramebuffer.js +13 -17
  190. package/Source/Scene/Picking.js +104 -80
  191. package/Source/Scene/QuadtreePrimitive.js +34 -26
  192. package/Source/Scene/QuadtreeTile.js +66 -46
  193. package/Source/Scene/ResourceLoaderState.js +1 -1
  194. package/Source/Scene/Scene.js +124 -12
  195. package/Source/Scene/ScreenSpaceCameraController.js +1 -1
  196. package/Source/Scene/SensorVolumePortionToDisplay.js +6 -6
  197. package/Source/Scene/SingleTileImageryProvider.js +3 -3
  198. package/Source/Scene/Terrain.js +5 -5
  199. package/Source/Scene/TileMapServiceImageryProvider.js +2 -2
  200. package/Source/Scene/UrlTemplateImageryProvider.js +1 -1
  201. package/Source/Scene/View.js +3 -0
  202. package/Source/Scene/VoxelPrimitive.js +196 -189
  203. package/Source/Scene/VoxelShape.js +2 -0
  204. package/Source/Scene/createWorldImageryAsync.js +1 -1
  205. package/Source/Shaders/BillboardCollectionFS.glsl +102 -62
  206. package/Source/Shaders/BillboardCollectionFS.js +102 -63
  207. package/Source/Shaders/BillboardCollectionVS.glsl +44 -37
  208. package/Source/Shaders/BillboardCollectionVS.js +45 -38
  209. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  210. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  211. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  212. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  213. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  214. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  215. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.glsl +10 -0
  216. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdges.js +12 -0
  217. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  218. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  219. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  220. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  221. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  222. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  223. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  224. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  225. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  226. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  227. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
  228. package/Source/Shaders/GlobeVS.glsl +1 -1
  229. package/Source/Shaders/GlobeVS.js +1 -1
  230. package/Source/Shaders/Model/EdgeDetectionStageFS.glsl +58 -0
  231. package/Source/Shaders/Model/EdgeDetectionStageFS.js +60 -0
  232. package/Source/Shaders/Model/EdgeVisibilityStageFS.glsl +83 -0
  233. package/Source/Shaders/Model/EdgeVisibilityStageFS.js +85 -0
  234. package/Source/Shaders/Model/ModelFS.glsl +5 -0
  235. package/Source/Shaders/Model/ModelFS.js +5 -0
  236. package/Source/Shaders/Model/PrimitiveOutlineStageFS.glsl +0 -1
  237. package/Source/Shaders/Model/PrimitiveOutlineStageFS.js +0 -1
  238. package/Source/Shaders/ShadowVolumeAppearanceFS.glsl +7 -15
  239. package/Source/Shaders/ShadowVolumeAppearanceFS.js +7 -15
  240. package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +46 -0
  241. package/Source/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +55 -0
  242. package/index.d.ts +281 -27
  243. package/index.js +200 -190
  244. package/package.json +2 -1
@@ -15,6 +15,8 @@ import CesiumMath from "./Math.js";
15
15
  * @see CesiumTerrainProvider
16
16
  * @see VRTheWorldTerrainProvider
17
17
  * @see GoogleEarthEnterpriseTerrainProvider
18
+ * @see ArcGISTiledElevationTerrainProvider
19
+ * @see Cesium3DTilesTerrainProvider
18
20
  */
19
21
  function TerrainProvider() {
20
22
  DeveloperError.throwInstantiationError();
@@ -236,7 +238,80 @@ TerrainProvider.getRegularGridAndSkirtIndicesAndEdgeIndices = function (
236
238
  };
237
239
 
238
240
  /**
241
+ * Calculates the number of skirt vertices given the edge indices.
239
242
  * @private
243
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} westIndicesSouthToNorth Edge indices along the west side of the tile.
244
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} southIndicesEastToWest Edge indices along the south side of the tile.
245
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} eastIndicesNorthToSouth Edge indices along the east side of the tile.
246
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} northIndicesWestToEast Edge indices along the north side of the tile.
247
+ * @returns {number} The number of skirt vertices.
248
+ */
249
+ TerrainProvider.getSkirtVertexCount = function (
250
+ westIndicesSouthToNorth,
251
+ southIndicesEastToWest,
252
+ eastIndicesNorthToSouth,
253
+ northIndicesWestToEast,
254
+ ) {
255
+ return (
256
+ westIndicesSouthToNorth.length +
257
+ southIndicesEastToWest.length +
258
+ eastIndicesNorthToSouth.length +
259
+ northIndicesWestToEast.length
260
+ );
261
+ };
262
+
263
+ /**
264
+ * Compute the number of skirt indices given the number of skirt vertices.
265
+ * Consider a 3x3 grid of vertices. There will be 8 skirt vertices around the edge:
266
+ * - 16 edge triangles
267
+ * - 48 indices
268
+ *
269
+ * |\|\|
270
+ * |/| |/|
271
+ * |/| |/|
272
+ * |\|\|
273
+ *
274
+ * @private
275
+ * @param {number} skirtVertexCount
276
+ * @returns {number}
277
+ */
278
+ TerrainProvider.getSkirtIndexCount = function (skirtVertexCount) {
279
+ return (skirtVertexCount - 4) * 2 * 3;
280
+ };
281
+
282
+ /**
283
+ * Compute the number of skirt indices given the number of skirt vertices with filled corners.
284
+ * Consider a 3x3 grid of vertices. There will be 8 skirt vertices around the edge:
285
+ * - 16 edge triangles
286
+ * - 4 cap triangles
287
+ * - 60 indices
288
+ *
289
+ * /|\|\|\
290
+ * |/| |/|
291
+ * |/| |/|
292
+ * \|\|\|/
293
+ *
294
+ * @private
295
+ * @param {number} skirtVertexCount
296
+ * @returns {number}
297
+ */
298
+ TerrainProvider.getSkirtIndexCountWithFilledCorners = function (
299
+ skirtVertexCount,
300
+ ) {
301
+ return ((skirtVertexCount - 4) * 2 + 4) * 3;
302
+ };
303
+
304
+ /**
305
+ * Adds skirt indices.
306
+ * This does not add filled corners. Use {@link TerrainProvider.addSkirtIndicesWithFilledCorners} to add skirt indices with filled corners.
307
+ * @private
308
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} westIndicesSouthToNorth The indices of the vertices on the Western edge of the tile, ordered from South to North.
309
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} southIndicesEastToWest The indices of the vertices on the Southern edge of the tile, ordered from East to West.
310
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} eastIndicesNorthToSouth The indices of the vertices on the Eastern edge of the tile, ordered from North to South.
311
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} northIndicesWestToEast The indices of the vertices on the Northern edge of the tile, ordered from West to East.
312
+ * @param {number} vertexCount The number of vertices in the tile before adding skirt vertices.
313
+ * @param {Uint16Array|Uint32Array} indices The array of indices to which skirt indices are added.
314
+ * @param {number} offset The offset into the indices array at which to start adding skirt indices.
240
315
  */
241
316
  TerrainProvider.addSkirtIndices = function (
242
317
  westIndicesSouthToNorth,
@@ -272,6 +347,82 @@ TerrainProvider.addSkirtIndices = function (
272
347
  addSkirtIndices(northIndicesWestToEast, vertexIndex, indices, offset);
273
348
  };
274
349
 
350
+ /**
351
+ * Adds skirt indices with filled corners.
352
+ * @private
353
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} westIndicesSouthToNorth The indices of the vertices on the Western edge of the tile, ordered from South to North.
354
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} southIndicesEastToWest The indices of the vertices on the Southern edge of the tile, ordered from East to West.
355
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} eastIndicesNorthToSouth The indices of the vertices on the Eastern edge of the tile, ordered from North to South.
356
+ * @param {number[]|Uint8Array|Uint16Array|Uint32Array} northIndicesWestToEast The indices of the vertices on the Northern edge of the tile, ordered from West to East.
357
+ * @param {number} vertexCount The number of vertices in the tile before adding skirt vertices.
358
+ * @param {Uint16Array|Uint32Array} indices The array of indices to which skirt indices are added.
359
+ * @param {number} offset The offset into the indices array at which to start adding skirt indices.
360
+ */
361
+ TerrainProvider.addSkirtIndicesWithFilledCorners = function (
362
+ westIndicesSouthToNorth,
363
+ southIndicesEastToWest,
364
+ eastIndicesNorthToSouth,
365
+ northIndicesWestToEast,
366
+ vertexCount,
367
+ indices,
368
+ offset,
369
+ ) {
370
+ // Add skirt indices without filled corners
371
+ TerrainProvider.addSkirtIndices(
372
+ westIndicesSouthToNorth,
373
+ southIndicesEastToWest,
374
+ eastIndicesNorthToSouth,
375
+ northIndicesWestToEast,
376
+ vertexCount,
377
+ indices,
378
+ offset,
379
+ );
380
+
381
+ const skirtVertexCount = TerrainProvider.getSkirtVertexCount(
382
+ westIndicesSouthToNorth,
383
+ southIndicesEastToWest,
384
+ eastIndicesNorthToSouth,
385
+ northIndicesWestToEast,
386
+ );
387
+ const skirtIndexCountWithoutCaps =
388
+ TerrainProvider.getSkirtIndexCount(skirtVertexCount);
389
+
390
+ const cornerStartIdx = offset + skirtIndexCountWithoutCaps;
391
+
392
+ const cornerSWIndex = westIndicesSouthToNorth[0];
393
+ const cornerNWIndex = northIndicesWestToEast[0];
394
+ const cornerNEIndex = eastIndicesNorthToSouth[0];
395
+ const cornerSEIndex = southIndicesEastToWest[0];
396
+
397
+ // Indices based on edge order in addSkirtIndices
398
+ const westSouthIndex = vertexCount;
399
+ const westNorthIndex = westSouthIndex + westIndicesSouthToNorth.length - 1;
400
+ const southEastIndex = westNorthIndex + 1;
401
+ const southWestIndex = southEastIndex + southIndicesEastToWest.length - 1;
402
+ const eastNorthIndex = southWestIndex + 1;
403
+ const eastSouthIndex = eastNorthIndex + eastIndicesNorthToSouth.length - 1;
404
+ const northWestIndex = eastSouthIndex + 1;
405
+ const northEastIndex = northWestIndex + northIndicesWestToEast.length - 1;
406
+
407
+ // Connect the corner vertices with the skirt vertices extending from the corner
408
+
409
+ indices[cornerStartIdx + 0] = cornerSWIndex;
410
+ indices[cornerStartIdx + 1] = westSouthIndex;
411
+ indices[cornerStartIdx + 2] = southWestIndex;
412
+
413
+ indices[cornerStartIdx + 3] = cornerSEIndex;
414
+ indices[cornerStartIdx + 4] = southEastIndex;
415
+ indices[cornerStartIdx + 5] = eastSouthIndex;
416
+
417
+ indices[cornerStartIdx + 6] = cornerNEIndex;
418
+ indices[cornerStartIdx + 7] = eastNorthIndex;
419
+ indices[cornerStartIdx + 8] = northEastIndex;
420
+
421
+ indices[cornerStartIdx + 9] = cornerNWIndex;
422
+ indices[cornerStartIdx + 10] = northWestIndex;
423
+ indices[cornerStartIdx + 11] = westNorthIndex;
424
+ };
425
+
275
426
  function getEdgeIndices(width, height) {
276
427
  const westIndicesSouthToNorth = new Array(height);
277
428
  const southIndicesEastToWest = new Array(width);
@@ -20,7 +20,7 @@ function DataRectangle(rectangle, maxLevel) {
20
20
  }
21
21
 
22
22
  /**
23
- * @typedef {Object} VRTheWorldTerrainProvider.ConstructorOptions
23
+ * @typedef {object} VRTheWorldTerrainProvider.ConstructorOptions
24
24
  *
25
25
  * Initialization options for the VRTheWorldTerrainProvider constructor
26
26
  *
@@ -265,7 +265,7 @@ Object.defineProperties(VRTheWorldTerrainProvider.prototype, {
265
265
  * Creates a {@link TerrainProvider} that produces terrain geometry by tessellating height maps
266
266
  * retrieved from a {@link http://vr-theworld.com/|VT MÄK VR-TheWorld server}.
267
267
  *
268
- * @param {Resource|String} url The URL of the VR-TheWorld TileMap.
268
+ * @param {Resource|string} url The URL of the VR-TheWorld TileMap.
269
269
  * @param {VRTheWorldTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
270
270
  * @returns {Promise<VRTheWorldTerrainProvider>}
271
271
  *
@@ -4,7 +4,7 @@ import Check from "./Check.js";
4
4
  * Finds an item in a sorted array.
5
5
  *
6
6
  * @function
7
- * @param {Array} array The sorted array to search.
7
+ * @param {Array|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} array The sorted array to search.
8
8
  * @param {*} itemToFind The item to find in the array.
9
9
  * @param {binarySearchComparator} comparator The function to use to compare the item to
10
10
  * elements in the array.
@@ -6,8 +6,8 @@ import Frozen from "./Frozen.js";
6
6
  *
7
7
  * @function
8
8
  *
9
- * @param {Object} [options] Object with the following properties:
10
- * @param {Boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server if available.
9
+ * @param {object} [options] Object with the following properties:
10
+ * @param {boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server if available.
11
11
  * @returns {Promise<CesiumTerrainProvider>} A promise that resolves to the created CesiumTerrainProvider
12
12
  *
13
13
  * @see Ion
@@ -7,9 +7,9 @@ import Ellipsoid from "./Ellipsoid.js";
7
7
  *
8
8
  * @function
9
9
  *
10
- * @param {Object} [options] Object with the following properties:
11
- * @param {Boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server if available.
12
- * @param {Boolean} [options.requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server if available.
10
+ * @param {object} [options] Object with the following properties:
11
+ * @param {boolean} [options.requestVertexNormals=false] Flag that indicates if the client should request additional lighting information from the server if available.
12
+ * @param {boolean} [options.requestWaterMask=false] Flag that indicates if the client should request per tile water masks from the server if available.
13
13
  * @returns {Promise<CesiumTerrainProvider>} A promise that resolves to the created CesiumTerrainProvider
14
14
  *
15
15
  * @see Ion
@@ -3,12 +3,18 @@ import defined from "./defined.js";
3
3
  import Resource from "./Resource.js";
4
4
 
5
5
  /**
6
+ * Loads an image from a typed array.
7
+ * @param {Object} options An object containing the following properties:
8
+ * @param {Uint8Array} options.uint8Array The typed array containing the image data.
9
+ * @param {string} options.format The MIME format of the image (e.g., "image/png").
10
+ * @param {Request} [options.request] The request object to use to fetch the image.
11
+ * @param {boolean} [options.flipY=false] Whether to flip the image vertically.
12
+ * @param {boolean} [options.skipColorSpaceConversion=false] Whether to skip color space conversion.
13
+ * @returns {Promise<HTMLImageElement|HTMLCanvasElement|ImageBitmap>|undefined} A promise that resolves to the loaded image. Returns undefined if <code>request.throttle</code> is true and the request does not have high enough priority.
6
14
  * @private
7
15
  */
8
16
  function loadImageFromTypedArray(options) {
9
- const uint8Array = options.uint8Array;
10
- const format = options.format;
11
- const request = options.request;
17
+ const { uint8Array, format, request } = options;
12
18
  const flipY = options.flipY ?? false;
13
19
  const skipColorSpaceConversion = options.skipColorSpaceConversion ?? false;
14
20
  //>>includeStart('debug', pragmas.debug);
@@ -56,7 +56,7 @@ function sort(array, compare, userDefinedObject, start, end) {
56
56
  * A stable merge sort.
57
57
  *
58
58
  * @function mergeSort
59
- * @param {Array} array The array to sort.
59
+ * @param {Array|Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} array The array to sort.
60
60
  * @param {mergeSortComparator} comparator The function to use to compare elements in the array.
61
61
  * @param {*} [userDefinedObject] Any item to pass as the third parameter to <code>comparator</code>.
62
62
  *
@@ -66,8 +66,8 @@ const timeScratch = new JulianDate();
66
66
  * Gets the value of the property.
67
67
  *
68
68
  * @param {JulianDate} [time=JulianDate.now()] The time for which to retrieve the value. If omitted, the current system time is used.
69
- * @param {Object[]} [result] The object to store the value into, if omitted, a new instance is created and returned.
70
- * @returns {Object[]} The modified result parameter, which is an array of values produced by evaluating each of the contained properties at the given time or a new instance if the result parameter was not supplied.
69
+ * @param {object[]} [result] The object to store the value into, if omitted, a new instance is created and returned.
70
+ * @returns {object[]} The modified result parameter, which is an array of values produced by evaluating each of the contained properties at the given time or a new instance if the result parameter was not supplied.
71
71
  */
72
72
  PropertyArray.prototype.getValue = function (time, result) {
73
73
  if (!defined(time)) {
@@ -161,6 +161,67 @@ const AutomaticUniforms = {
161
161
  },
162
162
  }),
163
163
 
164
+ /**
165
+ * An automatic GLSL uniform representing a texture containing edge IDs
166
+ * from the 3D Tiles edge rendering pass. Used for edge detection and
167
+ * avoiding z-fighting between edges and surfaces.
168
+ *
169
+ * @example
170
+ * // GLSL declaration
171
+ * uniform sampler2D czm_edgeIdTexture;
172
+ *
173
+ * // Get the edge ID at the current fragment
174
+ * vec2 coords = gl_FragCoord.xy / czm_viewport.zw;
175
+ * vec4 edgeId = texture(czm_edgeIdTexture, coords);
176
+ */
177
+ czm_edgeIdTexture: new AutomaticUniform({
178
+ size: 1,
179
+ datatype: WebGLConstants.SAMPLER_2D,
180
+ getValue: function (uniformState) {
181
+ return uniformState.edgeIdTexture;
182
+ },
183
+ }),
184
+
185
+ /**
186
+ * An automatic GLSL uniform containing the edge color texture.
187
+ * This texture contains the edge content rendered during the CESIUM_3D_TILE_EDGES pass.
188
+ *
189
+ * @example
190
+ * // GLSL declaration
191
+ * uniform sampler2D czm_edgeColorTexture;
192
+ *
193
+ * // Sample the edge color at the current fragment
194
+ * vec2 coords = gl_FragCoord.xy / czm_viewport.zw;
195
+ * vec4 edgeColor = texture(czm_edgeColorTexture, coords);
196
+ */
197
+ czm_edgeColorTexture: new AutomaticUniform({
198
+ size: 1,
199
+ datatype: WebGLConstants.SAMPLER_2D,
200
+ getValue: function (uniformState) {
201
+ return uniformState.edgeColorTexture;
202
+ },
203
+ }),
204
+
205
+ /**
206
+ * An automatic GLSL uniform containing the packed depth texture produced by the
207
+ * edge visibility pass. The depth is packed via czm_packDepth and should be
208
+ * unpacked with czm_unpackDepth.
209
+ *
210
+ * @example
211
+ * // GLSL declaration
212
+ * uniform sampler2D czm_edgeDepthTexture;
213
+ *
214
+ * vec2 coords = gl_FragCoord.xy / czm_viewport.zw;
215
+ * float d = czm_unpackDepth(texture(czm_edgeDepthTexture, coords));
216
+ */
217
+ czm_edgeDepthTexture: new AutomaticUniform({
218
+ size: 1,
219
+ datatype: WebGLConstants.SAMPLER_2D,
220
+ getValue: function (uniformState) {
221
+ return uniformState.edgeDepthTexture;
222
+ },
223
+ }),
224
+
164
225
  /**
165
226
  * An automatic GLSL uniform representing a 4x4 model transformation matrix that
166
227
  * transforms model coordinates to world coordinates.
@@ -356,7 +356,7 @@ function Context(canvas, options) {
356
356
  this._vertexAttribDivisors.push(0);
357
357
  }
358
358
 
359
- this._pickObjects = {};
359
+ this._pickObjects = new Map();
360
360
  this._nextPickColor = new Uint32Array(1);
361
361
 
362
362
  /**
@@ -1562,7 +1562,7 @@ Context.prototype.createViewportQuadCommand = function (
1562
1562
  /**
1563
1563
  * Gets the object associated with a pick color.
1564
1564
  *
1565
- * @param {Color} pickColor The pick color.
1565
+ * @param {number} pickColor The unsigned 32-bit RGBA pick color
1566
1566
  * @returns {object} The object associated with the pick color, or undefined if no object is associated with that color.
1567
1567
  *
1568
1568
  * @example
@@ -1575,9 +1575,15 @@ Context.prototype.getObjectByPickColor = function (pickColor) {
1575
1575
  Check.defined("pickColor", pickColor);
1576
1576
  //>>includeEnd('debug');
1577
1577
 
1578
- return this._pickObjects[pickColor.toRgba()];
1578
+ return this._pickObjects.get(pickColor);
1579
1579
  };
1580
1580
 
1581
+ /**
1582
+ *
1583
+ * @param {Map<number, object>} pickObjects
1584
+ * @param {number} key
1585
+ * @param {Color} color
1586
+ */
1581
1587
  function PickId(pickObjects, key, color) {
1582
1588
  this._pickObjects = pickObjects;
1583
1589
  this.key = key;
@@ -1587,16 +1593,16 @@ function PickId(pickObjects, key, color) {
1587
1593
  Object.defineProperties(PickId.prototype, {
1588
1594
  object: {
1589
1595
  get: function () {
1590
- return this._pickObjects[this.key];
1596
+ return this._pickObjects.get(this.key);
1591
1597
  },
1592
1598
  set: function (value) {
1593
- this._pickObjects[this.key] = value;
1599
+ this._pickObjects.set(this.key, value);
1594
1600
  },
1595
1601
  },
1596
1602
  });
1597
1603
 
1598
1604
  PickId.prototype.destroy = function () {
1599
- delete this._pickObjects[this.key];
1605
+ this._pickObjects.delete(this.key);
1600
1606
  return undefined;
1601
1607
  };
1602
1608
 
@@ -1633,7 +1639,7 @@ Context.prototype.createPickId = function (object) {
1633
1639
  throw new RuntimeError("Out of unique Pick IDs.");
1634
1640
  }
1635
1641
 
1636
- this._pickObjects[key] = object;
1642
+ this._pickObjects.set(key, object);
1637
1643
  return new PickId(this._pickObjects, key, Color.fromRgba(key));
1638
1644
  };
1639
1645
 
@@ -15,14 +15,15 @@ const Pass = {
15
15
  COMPUTE: 1,
16
16
  GLOBE: 2,
17
17
  TERRAIN_CLASSIFICATION: 3,
18
- CESIUM_3D_TILE: 4,
19
- CESIUM_3D_TILE_CLASSIFICATION: 5,
20
- CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW: 6,
21
- OPAQUE: 7,
22
- TRANSLUCENT: 8,
23
- VOXELS: 9,
24
- GAUSSIAN_SPLATS: 10,
25
- OVERLAY: 11,
26
- NUMBER_OF_PASSES: 12,
18
+ CESIUM_3D_TILE_EDGES: 4,
19
+ CESIUM_3D_TILE: 5,
20
+ CESIUM_3D_TILE_CLASSIFICATION: 6,
21
+ CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW: 7,
22
+ OPAQUE: 8,
23
+ TRANSLUCENT: 9,
24
+ VOXELS: 10,
25
+ GAUSSIAN_SPLATS: 11,
26
+ OVERLAY: 12,
27
+ NUMBER_OF_PASSES: 13,
27
28
  };
28
29
  export default Object.freeze(Pass);
@@ -25,6 +25,18 @@ function UniformState() {
25
25
  * @type {Texture}
26
26
  */
27
27
  this.globeDepthTexture = undefined;
28
+ /**
29
+ * @type {Texture}
30
+ */
31
+ this.edgeIdTexture = undefined;
32
+ /**
33
+ * @type {Texture}
34
+ */
35
+ this.edgeColorTexture = undefined;
36
+ /**
37
+ * @type {Texture}
38
+ */
39
+ this.edgeDepthTexture = undefined; // packed depth color attachment from edge pass
28
40
  /**
29
41
  * @type {number}
30
42
  */
@@ -178,7 +178,7 @@ function bind(gl, attributes, indexBuffer) {
178
178
  *
179
179
  * @param {object} options Object with the following properties:
180
180
  * @param {Context} options.context The context in which the VertexArray gets created.
181
- * @param {Object[]} options.attributes An array of attributes.
181
+ * @param {object[]} options.attributes An array of attributes.
182
182
  * @param {IndexBuffer} [options.indexBuffer] An optional index buffer.
183
183
  *
184
184
  * @returns {VertexArray} The vertex array, ready for use with drawing.
@@ -681,7 +681,7 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
681
681
  * Creates an {@link ImageryProvider} which provides tiled imagery hosted by an ArcGIS MapServer. By default, the server's pre-cached tiles are
682
682
  * used, if available.
683
683
  *
684
- * @param {Resource|String} url The URL of the ArcGIS MapServer service.
684
+ * @param {Resource|string} url The URL of the ArcGIS MapServer service.
685
685
  * @param {ArcGisMapServerImageryProvider.ConstructorOptions} [options] Object describing initialization options.
686
686
  * @returns {Promise<ArcGisMapServerImageryProvider>} A promise that resolves to the created ArcGisMapServerImageryProvider.
687
687
  *
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmQqEeLjCLZBBnNm_y_K-Cs-tuPcsgUmlxDWvPdTmGIEhrihfZMTG77j2nmCeqeYCPAenHGG1YfJqJaeRLuy5YjARJcFLP2I_judomiDS-8A_LVZxWUObwIQNE5wcsQKxJl7RHiKm-81XRDuUJZXGqy9B4PwPxWkS-N9PZ7NmTT-sP6BOGn5ouiAN8dkxwNx3tA.AT1_BU0Co4D8";
7
+ "AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmTlKbWoQXtdb-m2VclxMHo8eEPu_iyh95DPKVzeyNrKkb2zc_ICfJxY7tPEl4aVdWCyU_P18q9k6D26yO7pAVtbr3I-gxRJb412PB_FydyuNKYsVRiVLqJGaYOCYhJeY3Tv8USWG4TQVu6i2mMZ8CBE68HAd3DByIRkBcjQRnker5_UyWjO86QZxpbnykaqDtY.AT1_zMTIWhVd";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *
@@ -14,7 +14,7 @@ const trailingSlashRegex = /\/$/;
14
14
  *
15
15
  * @property {object} options Object with the following properties:
16
16
  * @property {string} [options.url="https://atlas.microsoft.com/"] The Azure server url.
17
- * @property {string} [options.tilesetId="microsoft.imagery"] The Azure tileset ID. Valid options are {@link microsoft.imagery}, {@link microsoft.base.road}, and {@link microsoft.base.labels.road}
17
+ * @property {string} options.tilesetId="microsoft.imagery" The Azure tileset ID. Valid options are {@link microsoft.imagery}, {@link microsoft.base.road}, and {@link microsoft.base.labels.road}
18
18
  * @property {string} options.subscriptionKey The public subscription key for the imagery.
19
19
  * @property {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid. If not specified, the default ellipsoid is used.
20
20
  * @property {number} [options.minimumLevel=0] The minimum level-of-detail supported by the imagery provider. Take care when specifying
@@ -41,13 +41,13 @@ const trailingSlashRegex = /\/$/;
41
41
  */
42
42
  function Azure2DImageryProvider(options) {
43
43
  options = options ?? {};
44
- options.maximumLevel = options.maximumLevel ?? 22;
45
- options.minimumLevel = options.minimumLevel ?? 0;
44
+ const maximumLevel = options.maximumLevel ?? 22;
45
+ const minimumLevel = options.minimumLevel ?? 0;
46
+ const tilesetId = options.tilesetId ?? "microsoft.imagery";
46
47
 
47
48
  const subscriptionKey =
48
49
  options.subscriptionKey ?? options["subscription-key"];
49
50
  //>>includeStart('debug', pragmas.debug);
50
- Check.defined("options.tilesetId", options.tilesetId);
51
51
  Check.defined("options.subscriptionKey", subscriptionKey);
52
52
  //>>includeEnd('debug');
53
53
 
@@ -66,7 +66,7 @@ function Azure2DImageryProvider(options) {
66
66
 
67
67
  resource.setQueryParameters({
68
68
  "api-version": "2024-04-01",
69
- tilesetId: options.tilesetId,
69
+ tilesetId: tilesetId,
70
70
  zoom: `{z}`,
71
71
  x: `{x}`,
72
72
  y: `{y}`,
@@ -83,6 +83,8 @@ function Azure2DImageryProvider(options) {
83
83
 
84
84
  const provider = new UrlTemplateImageryProvider({
85
85
  ...options,
86
+ maximumLevel,
87
+ minimumLevel,
86
88
  url: resource,
87
89
  credit: credit,
88
90
  });
@@ -20,7 +20,7 @@ import Texture from "../Renderer/Texture.js";
20
20
  * @private
21
21
  *
22
22
  * @param {Context} context The context in which the batch table is created.
23
- * @param {Object[]} attributes An array of objects describing a per instance attribute. Each object contains a datatype, components per attributes, whether it is normalized and a function name
23
+ * @param {object[]} attributes An array of objects describing a per instance attribute. Each object contains a datatype, components per attributes, whether it is normalized and a function name
24
24
  * to retrieve the value in the vertex shader.
25
25
  * @param {number} numberOfInstances The number of instances in a batch table.
26
26
  *
@@ -131,7 +131,7 @@ Object.defineProperties(BatchTable.prototype, {
131
131
  /**
132
132
  * The attribute descriptions.
133
133
  * @memberOf BatchTable.prototype
134
- * @type {Object[]}
134
+ * @type {object[]}
135
135
  * @readonly
136
136
  */
137
137
  attributes: {