@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
@@ -18,74 +18,68 @@ import resizeImageToNextPowerOfTwo from "../Core/resizeImageToNextPowerOfTwo.js"
18
18
  * Implements the {@link ResourceLoader} interface.
19
19
  * </p>
20
20
  *
21
- * @alias GltfTextureLoader
22
- * @constructor
23
- * @augments ResourceLoader
24
- *
25
- * @param {object} options Object with the following properties:
26
- * @param {ResourceCache} options.resourceCache The {@link ResourceCache} (to avoid circular dependencies).
27
- * @param {object} options.gltf The glTF JSON.
28
- * @param {object} options.textureInfo The texture info object.
29
- * @param {Resource} options.gltfResource The {@link Resource} containing the glTF.
30
- * @param {Resource} options.baseResource The {@link Resource} that paths in the glTF JSON are relative to.
31
- * @param {SupportedImageFormats} options.supportedImageFormats The supported image formats.
32
- * @param {string} [options.cacheKey] The cache key of the resource.
33
- * @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.
34
- *
35
21
  * @private
36
22
  */
37
- function GltfTextureLoader(options) {
38
- options = options ?? Frozen.EMPTY_OBJECT;
39
- const resourceCache = options.resourceCache;
40
- const gltf = options.gltf;
41
- const textureInfo = options.textureInfo;
42
- const gltfResource = options.gltfResource;
43
- const baseResource = options.baseResource;
44
- const supportedImageFormats = options.supportedImageFormats;
45
- const cacheKey = options.cacheKey;
46
- const asynchronous = options.asynchronous ?? true;
47
-
48
- //>>includeStart('debug', pragmas.debug);
49
- Check.typeOf.func("options.resourceCache", resourceCache);
50
- Check.typeOf.object("options.gltf", gltf);
51
- Check.typeOf.object("options.textureInfo", textureInfo);
52
- Check.typeOf.object("options.gltfResource", gltfResource);
53
- Check.typeOf.object("options.baseResource", baseResource);
54
- Check.typeOf.object("options.supportedImageFormats", supportedImageFormats);
55
- //>>includeEnd('debug');
56
-
57
- const textureId = textureInfo.index;
58
-
59
- // imageId is guaranteed to be defined otherwise the GltfTextureLoader
60
- // wouldn't have been created
61
- const imageId = GltfLoaderUtil.getImageIdFromTexture({
62
- gltf: gltf,
63
- textureId: textureId,
64
- supportedImageFormats: supportedImageFormats,
65
- });
66
-
67
- this._resourceCache = resourceCache;
68
- this._gltf = gltf;
69
- this._textureInfo = textureInfo;
70
- this._imageId = imageId;
71
- this._gltfResource = gltfResource;
72
- this._baseResource = baseResource;
73
- this._cacheKey = cacheKey;
74
- this._asynchronous = asynchronous;
75
- this._imageLoader = undefined;
76
- this._image = undefined;
77
- this._mipLevels = undefined;
78
- this._texture = undefined;
79
- this._state = ResourceLoaderState.UNLOADED;
80
- this._promise = undefined;
81
- }
23
+ class GltfTextureLoader extends ResourceLoader {
24
+ /**
25
+ * @param {object} options Object with the following properties:
26
+ * @param {ResourceCache} options.resourceCache The {@link ResourceCache} (to avoid circular dependencies).
27
+ * @param {object} options.gltf The glTF JSON.
28
+ * @param {object} options.textureInfo The texture info object.
29
+ * @param {Resource} options.gltfResource The {@link Resource} containing the glTF.
30
+ * @param {Resource} options.baseResource The {@link Resource} that paths in the glTF JSON are relative to.
31
+ * @param {SupportedImageFormats} options.supportedImageFormats The supported image formats.
32
+ * @param {string} [options.cacheKey] The cache key of the resource.
33
+ * @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.
34
+ */
35
+ constructor(options) {
36
+ super();
37
+
38
+ options = options ?? Frozen.EMPTY_OBJECT;
39
+ const resourceCache = options.resourceCache;
40
+ const gltf = options.gltf;
41
+ const textureInfo = options.textureInfo;
42
+ const gltfResource = options.gltfResource;
43
+ const baseResource = options.baseResource;
44
+ const supportedImageFormats = options.supportedImageFormats;
45
+ const cacheKey = options.cacheKey;
46
+ const asynchronous = options.asynchronous ?? true;
47
+
48
+ //>>includeStart('debug', pragmas.debug);
49
+ Check.typeOf.func("options.resourceCache", resourceCache);
50
+ Check.typeOf.object("options.gltf", gltf);
51
+ Check.typeOf.object("options.textureInfo", textureInfo);
52
+ Check.typeOf.object("options.gltfResource", gltfResource);
53
+ Check.typeOf.object("options.baseResource", baseResource);
54
+ Check.typeOf.object("options.supportedImageFormats", supportedImageFormats);
55
+ //>>includeEnd('debug');
56
+
57
+ const textureId = textureInfo.index;
58
+
59
+ // imageId is guaranteed to be defined otherwise the GltfTextureLoader
60
+ // wouldn't have been created
61
+ const imageId = GltfLoaderUtil.getImageIdFromTexture({
62
+ gltf: gltf,
63
+ textureId: textureId,
64
+ supportedImageFormats: supportedImageFormats,
65
+ });
82
66
 
83
- if (defined(Object.create)) {
84
- GltfTextureLoader.prototype = Object.create(ResourceLoader.prototype);
85
- GltfTextureLoader.prototype.constructor = GltfTextureLoader;
86
- }
67
+ this._resourceCache = resourceCache;
68
+ this._gltf = gltf;
69
+ this._textureInfo = textureInfo;
70
+ this._imageId = imageId;
71
+ this._gltfResource = gltfResource;
72
+ this._baseResource = baseResource;
73
+ this._cacheKey = cacheKey;
74
+ this._asynchronous = asynchronous;
75
+ this._imageLoader = undefined;
76
+ this._image = undefined;
77
+ this._mipLevels = undefined;
78
+ this._texture = undefined;
79
+ this._state = ResourceLoaderState.UNLOADED;
80
+ this._promise = undefined;
81
+ }
87
82
 
88
- Object.defineProperties(GltfTextureLoader.prototype, {
89
83
  /**
90
84
  * The cache key of the resource.
91
85
  *
@@ -95,11 +89,10 @@ Object.defineProperties(GltfTextureLoader.prototype, {
95
89
  * @readonly
96
90
  * @private
97
91
  */
98
- cacheKey: {
99
- get: function () {
100
- return this._cacheKey;
101
- },
102
- },
92
+ get cacheKey() {
93
+ return this._cacheKey;
94
+ }
95
+
103
96
  /**
104
97
  * The texture.
105
98
  *
@@ -109,99 +102,148 @@ Object.defineProperties(GltfTextureLoader.prototype, {
109
102
  * @readonly
110
103
  * @private
111
104
  */
112
- texture: {
113
- get: function () {
114
- return this._texture;
115
- },
116
- },
117
- });
105
+ get texture() {
106
+ return this._texture;
107
+ }
118
108
 
119
- const scratchTextureJob = new CreateTextureJob();
109
+ /**
110
+ * Loads the resource.
111
+ * @returns {Promise<GltfDracoLoader>} A promise which resolves to the loader when the resource loading is completed.
112
+ * @private
113
+ */
114
+ async load() {
115
+ if (defined(this._promise)) {
116
+ return this._promise;
117
+ }
120
118
 
121
- async function loadResources(loader) {
122
- const resourceCache = loader._resourceCache;
123
- try {
124
- const imageLoader = resourceCache.getImageLoader({
125
- gltf: loader._gltf,
126
- imageId: loader._imageId,
127
- gltfResource: loader._gltfResource,
128
- baseResource: loader._baseResource,
129
- });
130
- loader._imageLoader = imageLoader;
131
- await imageLoader.load();
119
+ this._state = ResourceLoaderState.LOADING;
120
+ this._promise = loadResources(this);
121
+ return this._promise;
122
+ }
132
123
 
133
- if (loader.isDestroyed()) {
134
- return;
124
+ /**
125
+ * Processes the resource until it becomes ready.
126
+ *
127
+ * @param {FrameState} frameState The frame state.
128
+ * @returns {boolean} true once all resourced are ready.
129
+ * @private
130
+ */
131
+ process(frameState) {
132
+ //>>includeStart('debug', pragmas.debug);
133
+ Check.typeOf.object("frameState", frameState);
134
+ //>>includeEnd('debug');
135
+
136
+ if (this._state === ResourceLoaderState.READY) {
137
+ return true;
135
138
  }
136
139
 
137
- // Now wait for process() to run to finish loading
138
- loader._image = imageLoader.image;
139
- loader._mipLevels = imageLoader.mipLevels;
140
- loader._state = ResourceLoaderState.LOADED;
140
+ if (
141
+ this._state !== ResourceLoaderState.LOADED &&
142
+ this._state !== ResourceLoaderState.PROCESSING
143
+ ) {
144
+ return false;
145
+ }
141
146
 
142
- return loader;
143
- } catch (error) {
144
- if (loader.isDestroyed()) {
145
- return;
147
+ if (defined(this._texture)) {
148
+ // Already created texture
149
+ return false;
146
150
  }
147
151
 
148
- loader.unload();
149
- loader._state = ResourceLoaderState.FAILED;
150
- const errorMessage = "Failed to load texture";
151
- throw loader.getError(errorMessage, error);
152
+ if (!defined(this._image)) {
153
+ // Not ready to create texture
154
+ return false;
155
+ }
156
+
157
+ this._state = ResourceLoaderState.PROCESSING;
158
+
159
+ let texture;
160
+ if (this._asynchronous) {
161
+ const textureJob = scratchTextureJob;
162
+ textureJob.set(
163
+ this._gltf,
164
+ this._textureInfo,
165
+ this._cacheKey,
166
+ this._image,
167
+ this._mipLevels,
168
+ frameState.context,
169
+ );
170
+ const jobScheduler = frameState.jobScheduler;
171
+ if (!jobScheduler.execute(textureJob, JobType.TEXTURE)) {
172
+ // Job scheduler is full. Try again next frame.
173
+ return false;
174
+ }
175
+ texture = textureJob.texture;
176
+ } else {
177
+ texture = createTexture(
178
+ this._gltf,
179
+ this._textureInfo,
180
+ this._cacheKey,
181
+ this._image,
182
+ this._mipLevels,
183
+ frameState.context,
184
+ );
185
+ }
186
+
187
+ // Unload everything except the texture
188
+ this.unload();
189
+
190
+ this._texture = texture;
191
+ this._state = ResourceLoaderState.READY;
192
+ this._resourceCache.statistics.addTextureLoader(this);
193
+ return true;
194
+ }
195
+
196
+ /**
197
+ * Unloads the resource.
198
+ * @private
199
+ */
200
+ unload() {
201
+ if (defined(this._texture)) {
202
+ this._texture.destroy();
203
+ }
204
+
205
+ if (defined(this._imageLoader) && !this._imageLoader.isDestroyed()) {
206
+ this._resourceCache.unload(this._imageLoader);
207
+ }
208
+
209
+ this._imageLoader = undefined;
210
+ this._image = undefined;
211
+ this._mipLevels = undefined;
212
+ this._texture = undefined;
213
+ this._gltf = undefined;
152
214
  }
153
215
  }
154
216
 
155
- /**
156
- * Loads the resource.
157
- * @returns {Promise<GltfDracoLoader>} A promise which resolves to the loader when the resource loading is completed.
158
- * @private
159
- */
160
- GltfTextureLoader.prototype.load = async function () {
161
- if (defined(this._promise)) {
162
- return this._promise;
217
+ class CreateTextureJob {
218
+ constructor() {
219
+ this.gltf = undefined;
220
+ this.textureInfo = undefined;
221
+ this.textureId = undefined;
222
+ this.image = undefined;
223
+ this.context = undefined;
224
+ this.texture = undefined;
163
225
  }
164
226
 
165
- this._state = ResourceLoaderState.LOADING;
166
- this._promise = loadResources(this);
167
- return this._promise;
168
- };
169
-
170
- function CreateTextureJob() {
171
- this.gltf = undefined;
172
- this.textureInfo = undefined;
173
- this.textureId = undefined;
174
- this.image = undefined;
175
- this.context = undefined;
176
- this.texture = undefined;
177
- }
227
+ set(gltf, textureInfo, textureId, image, mipLevels, context) {
228
+ this.gltf = gltf;
229
+ this.textureInfo = textureInfo;
230
+ this.textureId = textureId;
231
+ this.image = image;
232
+ this.mipLevels = mipLevels;
233
+ this.context = context;
234
+ }
178
235
 
179
- CreateTextureJob.prototype.set = function (
180
- gltf,
181
- textureInfo,
182
- textureId,
183
- image,
184
- mipLevels,
185
- context,
186
- ) {
187
- this.gltf = gltf;
188
- this.textureInfo = textureInfo;
189
- this.textureId = textureId;
190
- this.image = image;
191
- this.mipLevels = mipLevels;
192
- this.context = context;
193
- };
194
-
195
- CreateTextureJob.prototype.execute = function () {
196
- this.texture = createTexture(
197
- this.gltf,
198
- this.textureInfo,
199
- this.textureId,
200
- this.image,
201
- this.mipLevels,
202
- this.context,
203
- );
204
- };
236
+ execute() {
237
+ this.texture = createTexture(
238
+ this.gltf,
239
+ this.textureInfo,
240
+ this.textureId,
241
+ this.image,
242
+ this.mipLevels,
243
+ this.context,
244
+ );
245
+ }
246
+ }
205
247
 
206
248
  function createTexture(
207
249
  gltf,
@@ -304,96 +346,40 @@ function createTexture(
304
346
  return texture;
305
347
  }
306
348
 
307
- /**
308
- * Processes the resource until it becomes ready.
309
- *
310
- * @param {FrameState} frameState The frame state.
311
- * @returns {boolean} true once all resourced are ready.
312
- * @private
313
- */
314
- GltfTextureLoader.prototype.process = function (frameState) {
315
- //>>includeStart('debug', pragmas.debug);
316
- Check.typeOf.object("frameState", frameState);
317
- //>>includeEnd('debug');
318
-
319
- if (this._state === ResourceLoaderState.READY) {
320
- return true;
321
- }
322
-
323
- if (
324
- this._state !== ResourceLoaderState.LOADED &&
325
- this._state !== ResourceLoaderState.PROCESSING
326
- ) {
327
- return false;
328
- }
329
-
330
- if (defined(this._texture)) {
331
- // Already created texture
332
- return false;
333
- }
334
-
335
- if (!defined(this._image)) {
336
- // Not ready to create texture
337
- return false;
338
- }
349
+ const scratchTextureJob = new CreateTextureJob();
339
350
 
340
- this._state = ResourceLoaderState.PROCESSING;
351
+ async function loadResources(loader) {
352
+ const resourceCache = loader._resourceCache;
353
+ try {
354
+ const imageLoader = resourceCache.getImageLoader({
355
+ gltf: loader._gltf,
356
+ imageId: loader._imageId,
357
+ gltfResource: loader._gltfResource,
358
+ baseResource: loader._baseResource,
359
+ });
360
+ loader._imageLoader = imageLoader;
361
+ await imageLoader.load();
341
362
 
342
- let texture;
343
- if (this._asynchronous) {
344
- const textureJob = scratchTextureJob;
345
- textureJob.set(
346
- this._gltf,
347
- this._textureInfo,
348
- this._cacheKey,
349
- this._image,
350
- this._mipLevels,
351
- frameState.context,
352
- );
353
- const jobScheduler = frameState.jobScheduler;
354
- if (!jobScheduler.execute(textureJob, JobType.TEXTURE)) {
355
- // Job scheduler is full. Try again next frame.
363
+ if (loader.isDestroyed()) {
356
364
  return;
357
365
  }
358
- texture = textureJob.texture;
359
- } else {
360
- texture = createTexture(
361
- this._gltf,
362
- this._textureInfo,
363
- this._cacheKey,
364
- this._image,
365
- this._mipLevels,
366
- frameState.context,
367
- );
368
- }
369
-
370
- // Unload everything except the texture
371
- this.unload();
372
366
 
373
- this._texture = texture;
374
- this._state = ResourceLoaderState.READY;
375
- this._resourceCache.statistics.addTextureLoader(this);
376
- return true;
377
- };
367
+ // Now wait for process() to run to finish loading
368
+ loader._image = imageLoader.image;
369
+ loader._mipLevels = imageLoader.mipLevels;
370
+ loader._state = ResourceLoaderState.LOADED;
378
371
 
379
- /**
380
- * Unloads the resource.
381
- * @private
382
- */
383
- GltfTextureLoader.prototype.unload = function () {
384
- if (defined(this._texture)) {
385
- this._texture.destroy();
386
- }
372
+ return loader;
373
+ } catch (error) {
374
+ if (loader.isDestroyed()) {
375
+ return;
376
+ }
387
377
 
388
- if (defined(this._imageLoader) && !this._imageLoader.isDestroyed()) {
389
- this._resourceCache.unload(this._imageLoader);
378
+ loader.unload();
379
+ loader._state = ResourceLoaderState.FAILED;
380
+ const errorMessage = "Failed to load texture";
381
+ throw loader.getError(errorMessage, error);
390
382
  }
391
-
392
- this._imageLoader = undefined;
393
- this._image = undefined;
394
- this._mipLevels = undefined;
395
- this._texture = undefined;
396
- this._gltf = undefined;
397
- };
383
+ }
398
384
 
399
385
  export default GltfTextureLoader;