@cesium/engine 22.2.0 → 23.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 (282) hide show
  1. package/Build/Workers/{chunk-YFEZPDAY.js → chunk-2GL2EUEE.js} +11 -11
  2. package/Build/Workers/{chunk-A3NUMZBG.js → chunk-2WI4HGJU.js} +6 -6
  3. package/Build/Workers/{chunk-3JB2X2PR.js → chunk-36LBFITA.js} +665 -366
  4. package/Build/Workers/{chunk-VSZ5DB2W.js → chunk-3B65YFXC.js} +1 -1
  5. package/Build/Workers/{chunk-PSHZAHFE.js → chunk-4LGFX2P5.js} +11 -11
  6. package/Build/Workers/{chunk-AMWXJ5A7.js → chunk-4UNQX2MP.js} +2 -2
  7. package/Build/Workers/{chunk-LDSQMLRC.js → chunk-52K3GJKG.js} +3 -3
  8. package/Build/Workers/{chunk-MSTAVM2N.js → chunk-56OHFSLH.js} +10 -10
  9. package/Build/Workers/{chunk-IWOSJVFQ.js → chunk-5A7YSAXT.js} +14 -14
  10. package/Build/Workers/{chunk-PMDPP22G.js → chunk-5JP5FG7U.js} +7 -7
  11. package/Build/Workers/{chunk-DIJ7IG5D.js → chunk-5R7SBUTW.js} +10 -10
  12. package/Build/Workers/chunk-5VKZVPO5.js +1829 -0
  13. package/Build/Workers/{chunk-L2FSBEW2.js → chunk-6FVFM2KB.js} +5 -5
  14. package/Build/Workers/{chunk-G6WQA27G.js → chunk-6SLGTBB2.js} +5 -5
  15. package/Build/Workers/{chunk-3HUEBDFC.js → chunk-7KRN6JPQ.js} +14 -14
  16. package/Build/Workers/{chunk-GMHDOQPH.js → chunk-AA33B6PU.js} +4 -4
  17. package/Build/Workers/{chunk-7CDQUIP5.js → chunk-AP6XWET5.js} +8 -8
  18. package/Build/Workers/{chunk-IVN5HSOI.js → chunk-APDKMX7W.js} +6 -6
  19. package/Build/Workers/{chunk-72LZ3FN6.js → chunk-ARCFIOKA.js} +12 -12
  20. package/Build/Workers/{chunk-UBJYWGMV.js → chunk-BNBD2YZK.js} +16 -16
  21. package/Build/Workers/{chunk-VGH2CSC7.js → chunk-DT5SJBKA.js} +29 -15
  22. package/Build/Workers/{chunk-ED4UXMYY.js → chunk-ESD4IEOU.js} +5 -5
  23. package/Build/Workers/{chunk-JFN2DQHY.js → chunk-FSDVXW7M.js} +5 -5
  24. package/Build/Workers/{chunk-JERDRSEI.js → chunk-G3YT7M7A.js} +1 -1
  25. package/Build/Workers/{chunk-NY3CWLIZ.js → chunk-GN5NEUDT.js} +8 -8
  26. package/Build/Workers/{chunk-O3GWUTWM.js → chunk-HYLEKKO5.js} +1 -1
  27. package/Build/Workers/{chunk-64PJ4MTB.js → chunk-HYTFXWMY.js} +7 -7
  28. package/Build/Workers/{chunk-FPRM6PCE.js → chunk-IFA7VHHP.js} +560 -306
  29. package/Build/Workers/{chunk-FM5XPC2E.js → chunk-IYVDOB5V.js} +4 -4
  30. package/Build/Workers/{chunk-P7ISUYLW.js → chunk-JUGY5AZN.js} +4 -4
  31. package/Build/Workers/{chunk-JONWM4IO.js → chunk-KPYU6YZG.js} +1 -1
  32. package/Build/Workers/{chunk-JUOSYFXT.js → chunk-L7RDJ4V7.js} +1 -1
  33. package/Build/Workers/{chunk-MWGB6DLR.js → chunk-LDQWNMEC.js} +1 -1
  34. package/Build/Workers/{chunk-C6FTHSJA.js → chunk-MQJG522T.js} +6 -6
  35. package/Build/Workers/{chunk-WH4HDRGN.js → chunk-MT5M7RLZ.js} +2 -2
  36. package/Build/Workers/{chunk-4ZQN7M7E.js → chunk-N4AWE7TZ.js} +10 -10
  37. package/Build/Workers/{chunk-SDUH3N6G.js → chunk-NAYRNPEP.js} +4 -4
  38. package/Build/Workers/{chunk-7OPRTZBT.js → chunk-NNHU33JK.js} +7 -7
  39. package/Build/Workers/{chunk-CQCEPC6N.js → chunk-NQCAZU7S.js} +13 -13
  40. package/Build/Workers/{chunk-35J4D6PX.js → chunk-NUYLNQKV.js} +2 -2
  41. package/Build/Workers/{chunk-I45CATZK.js → chunk-OC6X22PG.js} +9 -9
  42. package/Build/Workers/{chunk-7MGTX4WP.js → chunk-OHBM4YG4.js} +12 -12
  43. package/Build/Workers/{chunk-DCR62BCO.js → chunk-OMXN7YF4.js} +12 -12
  44. package/Build/Workers/{chunk-XPNY2VY3.js → chunk-OQ3EAJNW.js} +2 -2
  45. package/Build/Workers/{chunk-4I7BCCNU.js → chunk-OQBPOKPZ.js} +6 -6
  46. package/Build/Workers/{chunk-2JNPWPLE.js → chunk-PQVNT5CJ.js} +6 -6
  47. package/Build/Workers/{chunk-K64RQCRK.js → chunk-QA24Q62E.js} +17 -17
  48. package/Build/Workers/{chunk-K6BXEBAF.js → chunk-QQX7S5QT.js} +17 -17
  49. package/Build/Workers/{chunk-2YVTOY5Z.js → chunk-QTOHIXGF.js} +10 -10
  50. package/Build/Workers/{chunk-4MCPC4TE.js → chunk-R7M4XNPP.js} +8 -8
  51. package/Build/Workers/{chunk-C35SJ4QP.js → chunk-SGKTBHFQ.js} +13 -13
  52. package/Build/Workers/{chunk-BKYJBTHW.js → chunk-SQTRWKO2.js} +5 -5
  53. package/Build/Workers/{chunk-I4D5IP46.js → chunk-T43FXHNC.js} +7 -7
  54. package/Build/Workers/{chunk-QO6Z5UJE.js → chunk-UEEGWJJP.js} +2 -2
  55. package/Build/Workers/{chunk-ZUWF63QU.js → chunk-WKXDCVBO.js} +4 -4
  56. package/Build/Workers/{chunk-N5MNKWED.js → chunk-Y5AJSEEN.js} +2 -2
  57. package/Build/Workers/{chunk-V26Y7ZQL.js → chunk-ZIW5FCIW.js} +37 -27
  58. package/Build/Workers/combineGeometry.js +24 -24
  59. package/Build/Workers/createBoxGeometry.js +18 -18
  60. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  61. package/Build/Workers/createCircleGeometry.js +26 -26
  62. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  63. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  64. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  65. package/Build/Workers/createCorridorGeometry.js +29 -29
  66. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  67. package/Build/Workers/createCylinderGeometry.js +20 -20
  68. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  69. package/Build/Workers/createEllipseGeometry.js +26 -26
  70. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  71. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  73. package/Build/Workers/createFrustumGeometry.js +18 -18
  74. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  75. package/Build/Workers/createGeometry.js +24 -24
  76. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  77. package/Build/Workers/createPlaneGeometry.js +16 -16
  78. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  79. package/Build/Workers/createPolygonGeometry.js +32 -32
  80. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  81. package/Build/Workers/createPolylineGeometry.js +25 -25
  82. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  83. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  84. package/Build/Workers/createRectangleGeometry.js +27 -27
  85. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  86. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  87. package/Build/Workers/createSphereGeometry.js +19 -19
  88. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  89. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  90. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  91. package/Build/Workers/createVectorTileGeometries.js +24 -24
  92. package/Build/Workers/createVectorTilePoints.js +13 -13
  93. package/Build/Workers/createVectorTilePolygons.js +22 -22
  94. package/Build/Workers/createVectorTilePolylines.js +14 -14
  95. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  96. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  97. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  98. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  99. package/Build/Workers/createWallGeometry.js +24 -24
  100. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  101. package/Build/Workers/decodeDraco.js +10 -10
  102. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  103. package/Build/Workers/decodeI3S.js +10 -10
  104. package/Build/Workers/gaussianSplatSorter.js +4 -4
  105. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  106. package/Build/Workers/incrementallyBuildTerrainPicker.js +20 -12
  107. package/Build/Workers/transcodeKTX2.js +6 -6
  108. package/Build/Workers/transferTypedArrayTest.js +1 -1
  109. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  110. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  111. package/Source/Core/AttributeCompression.js +53 -6
  112. package/Source/Core/BoxGeometry.js +1 -1
  113. package/Source/Core/Cartesian2.js +689 -684
  114. package/Source/Core/Cartesian3.js +1044 -1043
  115. package/Source/Core/Cartesian4.js +816 -813
  116. package/Source/Core/CornerType.js +1 -1
  117. package/Source/Core/CorridorGeometry.js +1 -1
  118. package/Source/Core/FeatureDetection.js +1 -32
  119. package/Source/Core/Geometry.js +1 -1
  120. package/Source/Core/GoogleMaps.js +23 -2
  121. package/Source/Core/IntersectionTests.js +2 -2
  122. package/Source/Core/Ion.js +1 -1
  123. package/Source/Core/OpenCageGeocoderService.js +2 -3
  124. package/Source/Core/PinBuilder.js +1 -1
  125. package/Source/Core/PolygonGeometry.js +1 -1
  126. package/Source/Core/PolylineGeometry.js +1 -1
  127. package/Source/Core/PolylineVolumeGeometry.js +1 -1
  128. package/Source/Core/RectangleGeometry.js +1 -1
  129. package/Source/Core/ScreenSpaceEventHandler.js +4 -8
  130. package/Source/Core/TerrainMesh.js +11 -8
  131. package/Source/Core/TerrainPicker.js +24 -7
  132. package/Source/Core/VideoSynchronizer.js +1 -1
  133. package/Source/Core/WallGeometry.js +1 -1
  134. package/Source/Core/globalTypes.js +16 -0
  135. package/Source/Core/writeTextToCanvas.js +40 -86
  136. package/Source/DataSources/BillboardGraphics.js +1 -1
  137. package/Source/DataSources/BoxGraphics.js +1 -1
  138. package/Source/DataSources/CallbackPositionProperty.js +1 -1
  139. package/Source/DataSources/CorridorGraphics.js +1 -1
  140. package/Source/DataSources/CzmlDataSource.js +1 -1
  141. package/Source/DataSources/EllipseGraphics.js +1 -1
  142. package/Source/DataSources/EllipsoidGraphics.js +1 -1
  143. package/Source/DataSources/Entity.js +1 -1
  144. package/Source/DataSources/EntityCluster.js +2 -2
  145. package/Source/DataSources/GeoJsonDataSource.js +2 -2
  146. package/Source/DataSources/GpxDataSource.js +1 -1
  147. package/Source/DataSources/KmlDataSource.js +1 -1
  148. package/Source/DataSources/KmlTour.js +1 -1
  149. package/Source/DataSources/LabelGraphics.js +1 -1
  150. package/Source/DataSources/ModelGraphics.js +1 -1
  151. package/Source/DataSources/PlaneGraphics.js +1 -1
  152. package/Source/DataSources/PolygonGraphics.js +1 -1
  153. package/Source/DataSources/PolylineGraphics.js +1 -1
  154. package/Source/DataSources/PolylineVolumeGraphics.js +1 -1
  155. package/Source/DataSources/RectangleGraphics.js +1 -1
  156. package/Source/DataSources/WallGraphics.js +1 -1
  157. package/Source/DataSources/exportKml.js +1 -1
  158. package/Source/Renderer/Context.js +11 -10
  159. package/Source/Renderer/ContextLimits.js +66 -33
  160. package/Source/Renderer/ShaderDestination.js +54 -13
  161. package/Source/Renderer/ShaderSource.js +19 -18
  162. package/Source/Renderer/Texture.js +1 -1
  163. package/Source/Renderer/Texture3D.js +166 -7
  164. package/Source/Renderer/TextureAtlas.js +2 -2
  165. package/Source/Scene/Appearance.js +1 -1
  166. package/Source/Scene/ArcGisMapService.js +1 -1
  167. package/Source/Scene/Billboard.js +8 -5
  168. package/Source/Scene/BillboardCollection.js +65 -26
  169. package/Source/Scene/BillboardTexture.js +4 -1
  170. package/Source/Scene/BufferLoader.js +65 -74
  171. package/Source/Scene/Camera.js +13 -2
  172. package/Source/Scene/ClippingPlaneCollection.js +2 -2
  173. package/Source/Scene/CloudCollection.js +2 -2
  174. package/Source/Scene/CubeMapPanorama.js +351 -0
  175. package/Source/Scene/CumulusCloud.js +1 -1
  176. package/Source/Scene/DerivedCommand.js +8 -31
  177. package/Source/Scene/DracoLoader.js +79 -78
  178. package/Source/Scene/DynamicEnvironmentMapManager.js +41 -26
  179. package/Source/Scene/EquirectangularPanorama.js +264 -0
  180. package/Source/Scene/Fog.js +1 -1
  181. package/Source/Scene/FrameState.js +7 -0
  182. package/Source/Scene/GaussianSplatPrimitive.js +907 -168
  183. package/Source/Scene/Globe.js +3 -10
  184. package/Source/Scene/GlobeSurfaceShaderSet.js +36 -32
  185. package/Source/Scene/GltfBufferViewLoader.js +109 -118
  186. package/Source/Scene/GltfDracoLoader.js +167 -176
  187. package/Source/Scene/GltfImageLoader.js +91 -101
  188. package/Source/Scene/GltfIndexBufferLoader.js +228 -241
  189. package/Source/Scene/GltfJsonLoader.js +90 -99
  190. package/Source/Scene/GltfLoader.js +323 -324
  191. package/Source/Scene/GltfSpzLoader.js +127 -134
  192. package/Source/Scene/GltfStructuralMetadataLoader.js +181 -186
  193. package/Source/Scene/GltfTextureLoader.js +217 -231
  194. package/Source/Scene/GltfVertexBufferLoader.js +267 -276
  195. package/Source/Scene/GoogleStreetViewCubeMapPanoramaProvider.js +341 -0
  196. package/Source/Scene/ImageBasedLighting.js +2 -2
  197. package/Source/Scene/ImageryLayerCollection.js +2 -2
  198. package/Source/Scene/ImageryProvider.js +2 -2
  199. package/Source/Scene/Label.js +7 -5
  200. package/Source/Scene/LabelCollection.js +60 -2
  201. package/Source/Scene/Material.js +1 -1
  202. package/Source/Scene/MaterialAppearance.js +1 -1
  203. package/Source/Scene/Megatexture.js +174 -242
  204. package/Source/Scene/MetadataClassProperty.js +212 -7
  205. package/Source/Scene/MetadataComponentType.js +162 -127
  206. package/Source/Scene/MetadataSchemaLoader.js +60 -67
  207. package/Source/Scene/MetadataTable.js +14 -0
  208. package/Source/Scene/MetadataTableProperty.js +14 -0
  209. package/Source/Scene/Model/B3dmLoader.js +216 -224
  210. package/Source/Scene/Model/CustomShader.js +6 -1
  211. package/Source/Scene/Model/CustomShaderPipelineStage.js +122 -7
  212. package/Source/Scene/Model/GeoJsonLoader.js +53 -61
  213. package/Source/Scene/Model/GeometryPipelineStage.js +17 -3
  214. package/Source/Scene/Model/I3dmLoader.js +232 -240
  215. package/Source/Scene/Model/MaterialPipelineStage.js +17 -0
  216. package/Source/Scene/Model/MetadataPipelineStage.js +438 -22
  217. package/Source/Scene/Model/Model.js +1 -1
  218. package/Source/Scene/Model/PntsLoader.js +78 -89
  219. package/Source/Scene/ModelComponents.js +10 -0
  220. package/Source/Scene/Panorama.js +53 -0
  221. package/Source/Scene/PanoramaProvider.js +43 -0
  222. package/Source/Scene/ParticleSystem.js +2 -2
  223. package/Source/Scene/PointPrimitive.js +1 -1
  224. package/Source/Scene/PointPrimitiveCollection.js +14 -22
  225. package/Source/Scene/Polyline.js +0 -1
  226. package/Source/Scene/PolylineCollection.js +1 -4
  227. package/Source/Scene/PolylineColorAppearance.js +1 -6
  228. package/Source/Scene/PolylineMaterialAppearance.js +1 -6
  229. package/Source/Scene/PostProcessStageCollection.js +1 -1
  230. package/Source/Scene/PropertyTable.js +43 -0
  231. package/Source/Scene/PropertyTexture.js +1 -1
  232. package/Source/Scene/PropertyTextureProperty.js +0 -97
  233. package/Source/Scene/QuadtreePrimitive.js +6 -3
  234. package/Source/Scene/ResourceLoader.js +84 -92
  235. package/Source/Scene/Scene.js +12 -0
  236. package/Source/Scene/ShadowMap.js +1 -2
  237. package/Source/Scene/SkyBox.js +29 -164
  238. package/Source/Scene/StructuralMetadata.js +18 -3
  239. package/Source/Scene/Vector3DTileClampedPolylines.js +1 -5
  240. package/Source/Scene/Vector3DTilePolylines.js +1 -5
  241. package/Source/Scene/VoxelPrimitive.js +16 -33
  242. package/Source/Scene/VoxelRenderResources.js +1 -8
  243. package/Source/Scene/VoxelTraversal.js +16 -61
  244. package/Source/Scene/WebMapTileServiceImageryProvider.js +1 -1
  245. package/Source/Scene/createElevationBandMaterial.js +1 -1
  246. package/Source/Scene/parseStructuralMetadata.js +244 -0
  247. package/Source/Scene/processVoxelProperties.js +1 -1
  248. package/Source/Shaders/BillboardCollectionFS.glsl +66 -40
  249. package/Source/Shaders/BillboardCollectionFS.js +67 -40
  250. package/Source/Shaders/BillboardCollectionVS.glsl +22 -31
  251. package/Source/Shaders/BillboardCollectionVS.js +22 -31
  252. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  253. package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +8 -1
  254. package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +8 -1
  255. package/Source/Shaders/Builtin/Functions/decodeRGB8.glsl +22 -0
  256. package/Source/Shaders/Builtin/Functions/decodeRGB8.js +24 -0
  257. package/Source/Shaders/Builtin/Functions/unpackTexture.glsl +35 -0
  258. package/Source/Shaders/Builtin/Functions/unpackTexture.js +37 -0
  259. package/Source/Shaders/CubeMapPanoramaVS.glsl +11 -0
  260. package/Source/Shaders/CubeMapPanoramaVS.js +13 -0
  261. package/Source/Shaders/Model/MetadataStageFS.glsl +2 -1
  262. package/Source/Shaders/Model/MetadataStageFS.js +2 -1
  263. package/Source/Shaders/Model/MetadataStageVS.glsl +2 -1
  264. package/Source/Shaders/Model/MetadataStageVS.js +2 -1
  265. package/Source/Shaders/Model/ModelFS.glsl +9 -1
  266. package/Source/Shaders/Model/ModelFS.js +9 -1
  267. package/Source/Shaders/Model/ModelVS.glsl +4 -2
  268. package/Source/Shaders/Model/ModelVS.js +4 -2
  269. package/Source/Shaders/PointPrimitiveCollectionVS.glsl +8 -39
  270. package/Source/Shaders/PointPrimitiveCollectionVS.js +8 -39
  271. package/Source/Shaders/Voxels/IntersectionUtils.glsl +1 -1
  272. package/Source/Shaders/Voxels/IntersectionUtils.js +1 -1
  273. package/Source/Shaders/Voxels/Megatexture.glsl +15 -83
  274. package/Source/Shaders/Voxels/Megatexture.js +15 -83
  275. package/Source/Shaders/Voxels/Octree.glsl +6 -9
  276. package/Source/Shaders/Voxels/Octree.js +6 -9
  277. package/Source/Widget/CesiumWidget.js +1 -1
  278. package/Source/Workers/incrementallyBuildTerrainPicker.js +16 -2
  279. package/index.d.ts +582 -193
  280. package/index.js +91 -83
  281. package/package.json +2 -1
  282. package/Build/Workers/chunk-ZGWX2R5I.js +0 -1443
@@ -33,93 +33,88 @@ const FeatureIdAttribute = ModelComponents.FeatureIdAttribute;
33
33
  * Implements the {@link ResourceLoader} interface.
34
34
  * </p>
35
35
  *
36
- * @alias B3dmLoader
37
- * @constructor
38
- * @augments ResourceLoader
39
36
  * @private
40
- *
41
- * @param {object} options Object with the following properties:
42
- * @param {Resource} options.b3dmResource The {@link Resource} containing the b3dm.
43
- * @param {ArrayBuffer} options.arrayBuffer The array buffer of the b3dm contents.
44
- * @param {number} [options.byteOffset] The byte offset to the beginning of the b3dm contents in the array buffer.
45
- * @param {Resource} [options.baseResource] The {@link Resource} that paths in the glTF JSON are relative to.
46
- * @param {boolean} [options.releaseGltfJson=false] When true, the glTF JSON is released once the glTF is loaded. This is especially useful for cases like 3D Tiles, where each .gltf model is unique and caching the glTF JSON is not effective.
47
- * @param {boolean} [options.asynchronous=true] Determines if WebGL resource creation will be spread out over several frames or block until all WebGL resources are created.
48
- * @param {boolean} [options.incrementallyLoadTextures=true] Determine if textures may continue to stream in after the glTF is loaded.
49
- * @param {Axis} [options.upAxis=Axis.Y] The up-axis of the glTF model.
50
- * @param {Axis} [options.forwardAxis=Axis.X] The forward-axis of the glTF model.
51
- * @param {boolean} [options.loadAttributesAsTypedArray=false] If <code>true</code>, load all attributes as typed arrays instead of GPU buffers. If the attributes are interleaved in the glTF they will be de-interleaved in the typed array.
52
- * @param {boolean} [options.loadAttributesFor2D=false] If <code>true</code>, load the positions buffer and any instanced attribute buffers as typed arrays for accurately projecting models to 2D.
53
- * @param {boolean} [options.enablePick=false] If <code>true</code>, load the positions buffer, any instanced attribute buffers, and index buffer as typed arrays for CPU-enabled picking in WebGL1.
54
- * @param {boolean} [options.loadIndicesForWireframe=false] If <code>true</code>, load the index buffer as a typed array. This is useful for creating wireframe indices in WebGL1.
55
- * @param {boolean} [options.loadPrimitiveOutline=true] If <code>true</code>, load outlines from the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. This can be set false to avoid post-processing geometry at load time.
56
- * @param {boolean} [options.loadForClassification=false] If <code>true</code> and if the model has feature IDs, load the feature IDs and indices as typed arrays. This is useful for batching features for classification.
57
- * */
58
- function B3dmLoader(options) {
59
- options = options ?? Frozen.EMPTY_OBJECT;
60
-
61
- const b3dmResource = options.b3dmResource;
62
- let baseResource = options.baseResource;
63
- const arrayBuffer = options.arrayBuffer;
64
- const byteOffset = options.byteOffset ?? 0;
65
- const releaseGltfJson = options.releaseGltfJson ?? false;
66
- const asynchronous = options.asynchronous ?? true;
67
- const incrementallyLoadTextures = options.incrementallyLoadTextures ?? true;
68
- const upAxis = options.upAxis ?? Axis.Y;
69
- const forwardAxis = options.forwardAxis ?? Axis.X;
70
- const loadAttributesAsTypedArray =
71
- options.loadAttributesAsTypedArray ?? false;
72
- const loadAttributesFor2D = options.loadAttributesFor2D ?? false;
73
- const enablePick = options.enablePick ?? false;
74
- const loadIndicesForWireframe = options.loadIndicesForWireframe ?? false;
75
- const loadPrimitiveOutline = options.loadPrimitiveOutline ?? true;
76
- const loadForClassification = options.loadForClassification ?? false;
77
-
78
- //>>includeStart('debug', pragmas.debug);
79
- Check.typeOf.object("options.b3dmResource", b3dmResource);
80
- Check.typeOf.object("options.arrayBuffer", arrayBuffer);
81
- //>>includeEnd('debug');
82
-
83
- baseResource = defined(baseResource) ? baseResource : b3dmResource.clone();
84
-
85
- this._b3dmResource = b3dmResource;
86
- this._baseResource = baseResource;
87
- this._arrayBuffer = arrayBuffer;
88
- this._byteOffset = byteOffset;
89
- this._releaseGltfJson = releaseGltfJson;
90
- this._asynchronous = asynchronous;
91
- this._incrementallyLoadTextures = incrementallyLoadTextures;
92
- this._upAxis = upAxis;
93
- this._forwardAxis = forwardAxis;
94
- this._loadAttributesAsTypedArray = loadAttributesAsTypedArray;
95
- this._loadAttributesFor2D = loadAttributesFor2D;
96
- this._enablePick = enablePick;
97
- this._loadIndicesForWireframe = loadIndicesForWireframe;
98
- this._loadPrimitiveOutline = loadPrimitiveOutline;
99
- this._loadForClassification = loadForClassification;
100
-
101
- this._state = B3dmLoaderState.UNLOADED;
102
-
103
- this._promise = undefined;
104
-
105
- this._gltfLoader = undefined;
106
-
107
- // Loaded results.
108
- this._batchLength = 0;
109
- this._propertyTable = undefined;
110
-
111
- // The batch table object contains a json and a binary component access using keys of the same name.
112
- this._batchTable = undefined;
113
- this._components = undefined;
114
- this._transform = Matrix4.IDENTITY;
115
- }
116
-
117
- if (defined(Object.create)) {
118
- B3dmLoader.prototype = Object.create(ResourceLoader.prototype);
119
- B3dmLoader.prototype.constructor = B3dmLoader;
120
- }
37
+ */
38
+ class B3dmLoader extends ResourceLoader {
39
+ /**
40
+ * @param {object} options Object with the following properties:
41
+ * @param {Resource} options.b3dmResource The {@link Resource} containing the b3dm.
42
+ * @param {ArrayBuffer} options.arrayBuffer The array buffer of the b3dm contents.
43
+ * @param {number} [options.byteOffset] The byte offset to the beginning of the b3dm contents in the array buffer.
44
+ * @param {Resource} [options.baseResource] The {@link Resource} that paths in the glTF JSON are relative to.
45
+ * @param {boolean} [options.releaseGltfJson=false] When true, the glTF JSON is released once the glTF is loaded. This is especially useful for cases like 3D Tiles, where each .gltf model is unique and caching the glTF JSON is not effective.
46
+ * @param {boolean} [options.asynchronous=true] Determines if WebGL resource creation will be spread out over several frames or block until all WebGL resources are created.
47
+ * @param {boolean} [options.incrementallyLoadTextures=true] Determine if textures may continue to stream in after the glTF is loaded.
48
+ * @param {Axis} [options.upAxis=Axis.Y] The up-axis of the glTF model.
49
+ * @param {Axis} [options.forwardAxis=Axis.X] The forward-axis of the glTF model.
50
+ * @param {boolean} [options.loadAttributesAsTypedArray=false] If <code>true</code>, load all attributes as typed arrays instead of GPU buffers. If the attributes are interleaved in the glTF they will be de-interleaved in the typed array.
51
+ * @param {boolean} [options.loadAttributesFor2D=false] If <code>true</code>, load the positions buffer and any instanced attribute buffers as typed arrays for accurately projecting models to 2D.
52
+ * @param {boolean} [options.enablePick=false] If <code>true</code>, load the positions buffer, any instanced attribute buffers, and index buffer as typed arrays for CPU-enabled picking in WebGL1.
53
+ * @param {boolean} [options.loadIndicesForWireframe=false] If <code>true</code>, load the index buffer as a typed array. This is useful for creating wireframe indices in WebGL1.
54
+ * @param {boolean} [options.loadPrimitiveOutline=true] If <code>true</code>, load outlines from the {@link https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/CESIUM_primitive_outline|CESIUM_primitive_outline} extension. This can be set false to avoid post-processing geometry at load time.
55
+ * @param {boolean} [options.loadForClassification=false] If <code>true</code> and if the model has feature IDs, load the feature IDs and indices as typed arrays. This is useful for batching features for classification.
56
+ */
57
+ constructor(options) {
58
+ super();
59
+
60
+ options = options ?? Frozen.EMPTY_OBJECT;
61
+
62
+ const b3dmResource = options.b3dmResource;
63
+ let baseResource = options.baseResource;
64
+ const arrayBuffer = options.arrayBuffer;
65
+ const byteOffset = options.byteOffset ?? 0;
66
+ const releaseGltfJson = options.releaseGltfJson ?? false;
67
+ const asynchronous = options.asynchronous ?? true;
68
+ const incrementallyLoadTextures = options.incrementallyLoadTextures ?? true;
69
+ const upAxis = options.upAxis ?? Axis.Y;
70
+ const forwardAxis = options.forwardAxis ?? Axis.X;
71
+ const loadAttributesAsTypedArray =
72
+ options.loadAttributesAsTypedArray ?? false;
73
+ const loadAttributesFor2D = options.loadAttributesFor2D ?? false;
74
+ const enablePick = options.enablePick ?? false;
75
+ const loadIndicesForWireframe = options.loadIndicesForWireframe ?? false;
76
+ const loadPrimitiveOutline = options.loadPrimitiveOutline ?? true;
77
+ const loadForClassification = options.loadForClassification ?? false;
78
+
79
+ //>>includeStart('debug', pragmas.debug);
80
+ Check.typeOf.object("options.b3dmResource", b3dmResource);
81
+ Check.typeOf.object("options.arrayBuffer", arrayBuffer);
82
+ //>>includeEnd('debug');
83
+
84
+ baseResource = defined(baseResource) ? baseResource : b3dmResource.clone();
85
+
86
+ this._b3dmResource = b3dmResource;
87
+ this._baseResource = baseResource;
88
+ this._arrayBuffer = arrayBuffer;
89
+ this._byteOffset = byteOffset;
90
+ this._releaseGltfJson = releaseGltfJson;
91
+ this._asynchronous = asynchronous;
92
+ this._incrementallyLoadTextures = incrementallyLoadTextures;
93
+ this._upAxis = upAxis;
94
+ this._forwardAxis = forwardAxis;
95
+ this._loadAttributesAsTypedArray = loadAttributesAsTypedArray;
96
+ this._loadAttributesFor2D = loadAttributesFor2D;
97
+ this._enablePick = enablePick;
98
+ this._loadIndicesForWireframe = loadIndicesForWireframe;
99
+ this._loadPrimitiveOutline = loadPrimitiveOutline;
100
+ this._loadForClassification = loadForClassification;
101
+
102
+ this._state = B3dmLoaderState.UNLOADED;
103
+
104
+ this._promise = undefined;
105
+
106
+ this._gltfLoader = undefined;
107
+
108
+ // Loaded results.
109
+ this._batchLength = 0;
110
+ this._propertyTable = undefined;
111
+
112
+ // The batch table object contains a json and a binary component access using keys of the same name.
113
+ this._batchTable = undefined;
114
+ this._components = undefined;
115
+ this._transform = Matrix4.IDENTITY;
116
+ }
121
117
 
122
- Object.defineProperties(B3dmLoader.prototype, {
123
118
  /**
124
119
  * true if textures are loaded, useful when incrementallyLoadTextures is true
125
120
  *
@@ -129,11 +124,10 @@ Object.defineProperties(B3dmLoader.prototype, {
129
124
  * @readonly
130
125
  * @private
131
126
  */
132
- texturesLoaded: {
133
- get: function () {
134
- return this._gltfLoader?.texturesLoaded;
135
- },
136
- },
127
+ get texturesLoaded() {
128
+ return this._gltfLoader?.texturesLoaded;
129
+ }
130
+
137
131
  /**
138
132
  * The cache key of the resource
139
133
  *
@@ -143,11 +137,9 @@ Object.defineProperties(B3dmLoader.prototype, {
143
137
  * @readonly
144
138
  * @private
145
139
  */
146
- cacheKey: {
147
- get: function () {
148
- return undefined;
149
- },
150
- },
140
+ get cacheKey() {
141
+ return undefined;
142
+ }
151
143
 
152
144
  /**
153
145
  * The loaded components.
@@ -158,141 +150,150 @@ Object.defineProperties(B3dmLoader.prototype, {
158
150
  * @readonly
159
151
  * @private
160
152
  */
161
- components: {
162
- get: function () {
163
- return this._components;
164
- },
165
- },
166
- });
153
+ get components() {
154
+ return this._components;
155
+ }
156
+
157
+ /**
158
+ * Loads the resource.
159
+ * @returns {Promise<B3dmLoader>} A promise which resolves to the loader when the resource loading is completed.
160
+ * @private
161
+ */
162
+ load() {
163
+ if (defined(this._promise)) {
164
+ return this._promise;
165
+ }
166
+
167
+ const b3dm = B3dmParser.parse(this._arrayBuffer, this._byteOffset);
168
+
169
+ let batchLength = b3dm.batchLength;
170
+ const featureTableJson = b3dm.featureTableJson;
171
+ const featureTableBinary = b3dm.featureTableBinary;
172
+ const batchTableJson = b3dm.batchTableJson;
173
+ const batchTableBinary = b3dm.batchTableBinary;
174
+
175
+ const featureTable = new Cesium3DTileFeatureTable(
176
+ featureTableJson,
177
+ featureTableBinary,
178
+ );
179
+ batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
180
+ // Set batch length.
181
+ this._batchLength = batchLength;
182
+ // Set the RTC Center transform, if present.
183
+ const rtcCenter = featureTable.getGlobalProperty(
184
+ "RTC_CENTER",
185
+ ComponentDatatype.FLOAT,
186
+ 3,
187
+ );
188
+ if (defined(rtcCenter)) {
189
+ this._transform = Matrix4.fromTranslation(
190
+ Cartesian3.fromArray(rtcCenter),
191
+ );
192
+ }
193
+
194
+ this._batchTable = {
195
+ json: batchTableJson,
196
+ binary: batchTableBinary,
197
+ };
198
+
199
+ const gltfLoader = new GltfLoader({
200
+ typedArray: b3dm.gltf,
201
+ upAxis: this._upAxis,
202
+ forwardAxis: this._forwardAxis,
203
+ gltfResource: this._b3dmResource,
204
+ baseResource: this._baseResource,
205
+ releaseGltfJson: this._releaseGltfJson,
206
+ incrementallyLoadTextures: this._incrementallyLoadTextures,
207
+ loadAttributesAsTypedArray: this._loadAttributesAsTypedArray,
208
+ loadAttributesFor2D: this._loadAttributesFor2D,
209
+ enablePick: this._enablePick,
210
+ loadIndicesForWireframe: this._loadIndicesForWireframe,
211
+ loadPrimitiveOutline: this._loadPrimitiveOutline,
212
+ loadForClassification: this._loadForClassification,
213
+ renameBatchIdSemantic: true,
214
+ });
215
+
216
+ this._gltfLoader = gltfLoader;
217
+ this._state = B3dmLoaderState.LOADING;
218
+
219
+ const that = this;
220
+ this._promise = gltfLoader
221
+ .load()
222
+ .then(function () {
223
+ if (that.isDestroyed()) {
224
+ return;
225
+ }
226
+
227
+ that._state = B3dmLoaderState.PROCESSING;
228
+ return that;
229
+ })
230
+ .catch(function (error) {
231
+ if (that.isDestroyed()) {
232
+ return;
233
+ }
234
+
235
+ return handleError(that, error);
236
+ });
167
237
 
168
- /**
169
- * Loads the resource.
170
- * @returns {Promise<B3dmLoader>} A promise which resolves to the loader when the resource loading is completed.
171
- * @private
172
- */
173
- B3dmLoader.prototype.load = function () {
174
- if (defined(this._promise)) {
175
238
  return this._promise;
176
239
  }
177
240
 
178
- const b3dm = B3dmParser.parse(this._arrayBuffer, this._byteOffset);
179
-
180
- let batchLength = b3dm.batchLength;
181
- const featureTableJson = b3dm.featureTableJson;
182
- const featureTableBinary = b3dm.featureTableBinary;
183
- const batchTableJson = b3dm.batchTableJson;
184
- const batchTableBinary = b3dm.batchTableBinary;
185
-
186
- const featureTable = new Cesium3DTileFeatureTable(
187
- featureTableJson,
188
- featureTableBinary,
189
- );
190
- batchLength = featureTable.getGlobalProperty("BATCH_LENGTH");
191
- // Set batch length.
192
- this._batchLength = batchLength;
193
- // Set the RTC Center transform, if present.
194
- const rtcCenter = featureTable.getGlobalProperty(
195
- "RTC_CENTER",
196
- ComponentDatatype.FLOAT,
197
- 3,
198
- );
199
- if (defined(rtcCenter)) {
200
- this._transform = Matrix4.fromTranslation(Cartesian3.fromArray(rtcCenter));
201
- }
241
+ process(frameState) {
242
+ //>>includeStart('debug', pragmas.debug);
243
+ Check.typeOf.object("frameState", frameState);
244
+ //>>includeEnd('debug');
202
245
 
203
- this._batchTable = {
204
- json: batchTableJson,
205
- binary: batchTableBinary,
206
- };
207
-
208
- const gltfLoader = new GltfLoader({
209
- typedArray: b3dm.gltf,
210
- upAxis: this._upAxis,
211
- forwardAxis: this._forwardAxis,
212
- gltfResource: this._b3dmResource,
213
- baseResource: this._baseResource,
214
- releaseGltfJson: this._releaseGltfJson,
215
- incrementallyLoadTextures: this._incrementallyLoadTextures,
216
- loadAttributesAsTypedArray: this._loadAttributesAsTypedArray,
217
- loadAttributesFor2D: this._loadAttributesFor2D,
218
- enablePick: this._enablePick,
219
- loadIndicesForWireframe: this._loadIndicesForWireframe,
220
- loadPrimitiveOutline: this._loadPrimitiveOutline,
221
- loadForClassification: this._loadForClassification,
222
- renameBatchIdSemantic: true,
223
- });
224
-
225
- this._gltfLoader = gltfLoader;
226
- this._state = B3dmLoaderState.LOADING;
227
-
228
- const that = this;
229
- this._promise = gltfLoader
230
- .load()
231
- .then(function () {
232
- if (that.isDestroyed()) {
233
- return;
234
- }
235
-
236
- that._state = B3dmLoaderState.PROCESSING;
237
- return that;
238
- })
239
- .catch(function (error) {
240
- if (that.isDestroyed()) {
241
- return;
242
- }
243
-
244
- return handleError(that, error);
245
- });
246
+ if (this._state === B3dmLoaderState.READY) {
247
+ return true;
248
+ }
246
249
 
247
- return this._promise;
248
- };
250
+ if (this._state !== B3dmLoaderState.PROCESSING) {
251
+ return false;
252
+ }
249
253
 
250
- function handleError(b3dmLoader, error) {
251
- b3dmLoader.unload();
252
- b3dmLoader._state = B3dmLoaderState.FAILED;
253
- const errorMessage = "Failed to load b3dm";
254
- error = b3dmLoader.getError(errorMessage, error);
255
- return Promise.reject(error);
256
- }
254
+ const ready = this._gltfLoader.process(frameState);
255
+ if (!ready) {
256
+ return false;
257
+ }
258
+
259
+ const components = this._gltfLoader.components;
260
+
261
+ // Combine the RTC_CENTER transform from the b3dm and the CESIUM_RTC
262
+ // transform from the glTF. In practice usually only one or the
263
+ // other is supplied. If they don't exist the transforms will
264
+ // be identity matrices.
265
+ components.transform = Matrix4.multiplyTransformation(
266
+ this._transform,
267
+ components.transform,
268
+ components.transform,
269
+ );
270
+ createStructuralMetadata(this, components);
271
+ this._components = components;
257
272
 
258
- B3dmLoader.prototype.process = function (frameState) {
259
- //>>includeStart('debug', pragmas.debug);
260
- Check.typeOf.object("frameState", frameState);
261
- //>>includeEnd('debug');
273
+ // Now that we have the parsed components, we can release the array buffer
274
+ this._arrayBuffer = undefined;
262
275
 
263
- if (this._state === B3dmLoaderState.READY) {
276
+ this._state = B3dmLoaderState.READY;
264
277
  return true;
265
278
  }
266
279
 
267
- if (this._state !== B3dmLoaderState.PROCESSING) {
268
- return false;
269
- }
280
+ unload() {
281
+ if (defined(this._gltfLoader) && !this._gltfLoader.isDestroyed()) {
282
+ this._gltfLoader.unload();
283
+ }
270
284
 
271
- const ready = this._gltfLoader.process(frameState);
272
- if (!ready) {
273
- return false;
285
+ this._components = undefined;
286
+ this._arrayBuffer = undefined;
274
287
  }
288
+ }
275
289
 
276
- const components = this._gltfLoader.components;
277
-
278
- // Combine the RTC_CENTER transform from the b3dm and the CESIUM_RTC
279
- // transform from the glTF. In practice usually only one or the
280
- // other is supplied. If they don't exist the transforms will
281
- // be identity matrices.
282
- components.transform = Matrix4.multiplyTransformation(
283
- this._transform,
284
- components.transform,
285
- components.transform,
286
- );
287
- createStructuralMetadata(this, components);
288
- this._components = components;
289
-
290
- // Now that we have the parsed components, we can release the array buffer
291
- this._arrayBuffer = undefined;
292
-
293
- this._state = B3dmLoaderState.READY;
294
- return true;
295
- };
290
+ function handleError(b3dmLoader, error) {
291
+ b3dmLoader.unload();
292
+ b3dmLoader._state = B3dmLoaderState.FAILED;
293
+ const errorMessage = "Failed to load b3dm";
294
+ error = b3dmLoader.getError(errorMessage, error);
295
+ return Promise.reject(error);
296
+ }
296
297
 
297
298
  function createStructuralMetadata(loader, components) {
298
299
  const batchTable = loader._batchTable;
@@ -356,13 +357,4 @@ function processNode(node) {
356
357
  }
357
358
  }
358
359
 
359
- B3dmLoader.prototype.unload = function () {
360
- if (defined(this._gltfLoader) && !this._gltfLoader.isDestroyed()) {
361
- this._gltfLoader.unload();
362
- }
363
-
364
- this._components = undefined;
365
- this._arrayBuffer = undefined;
366
- };
367
-
368
360
  export default B3dmLoader;
@@ -299,7 +299,12 @@ function getVariables(shaderText, regex, outputSet) {
299
299
  function findUsedVariables(customShader) {
300
300
  const attributeRegex = /[vf]sInput\.attributes\.(\w+)/g;
301
301
  const featureIdRegex = /[vf]sInput\.featureIds\.(\w+)/g;
302
- const metadataRegex = /[vf]sInput\.metadata.(\w+)/g;
302
+ // Metadata is a little more complex. Match the first identifier after:
303
+ // - vsInput.metadata.<property>
304
+ // - vsInput.metadataClass.<property>
305
+ // - vsInput.metadataStatistics.<property>
306
+ const metadataRegex =
307
+ /[vf]sInput\.(?:metadata|metadataClass|metadataStatistics)\.(\w+)/g;
303
308
  let attributeSet;
304
309
 
305
310
  const vertexShaderText = customShader.vertexShaderText;