@galacean/engine-loader 2.0.0-alpha.5 → 2.0.0-alpha.7

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.
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, resourceLoader, ContentRestorer, DiffuseMode, BackgroundMode, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset, AmbientLight, TextureCube, TextureFilterMode, TextureCubeFace, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, TextureFormat, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, JSONAsset, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, TextAsset, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
1
+ import { Utils, AssetPromise, AnimationClip, AnimationEvent, Loader, AnimationStringCurve, Keyframe, AnimationBoolCurve, AnimationRefCurve, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, ModelMesh, BlendShape, Entity, Transform, Texture2D, ReferResource, DiffuseMode, BackgroundMode, resourceLoader, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateTransition, BufferAsset, AmbientLight, TextureCube, TextureFormat, TextureFilterMode, TextureCubeFace, ContentRestorer, Font, SystemInfo, Animator, Logger, IndexFormat, VertexElementFormat, GLCapabilityType, request, InterpolationType, SkinnedMeshRenderer, PBRMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Camera, MeshRenderer, Skin, TextureWrapMode as TextureWrapMode$1, TextureUtils, AnimatorStateMachine, JSONAsset, Shader, Material, PrimitiveMesh, SpriteAtlas, Sprite, TextAsset, AudioClip, AudioManager, ShaderFactory, ShaderLib, PhysicsMaterial, Scene, DirectLight, PointLight, SpotLight, UnlitMaterial } from '@galacean/engine-core';
2
2
  import { Quaternion, Vector4, Color, Vector3, Vector2, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
3
3
  import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
4
4
 
@@ -248,7 +248,9 @@ var decoderMap = {};
248
248
  };
249
249
  }
250
250
 
251
- var FileHeader = /*#__PURE__*/ function() {
251
+ /**
252
+ * Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]
253
+ */ var FileHeader = /*#__PURE__*/ function() {
252
254
  function FileHeader() {
253
255
  this.totalLength = 0;
254
256
  this.version = 0;
@@ -256,14 +258,23 @@ var FileHeader = /*#__PURE__*/ function() {
256
258
  this.name = "";
257
259
  this.headerLength = 0;
258
260
  }
261
+ FileHeader.checkMagic = function checkMagic(arrayBuffer) {
262
+ if (arrayBuffer.byteLength < 4) return false;
263
+ var view = new DataView(arrayBuffer);
264
+ return view.getUint32(0, true) === FileHeader.MAGIC;
265
+ };
259
266
  FileHeader.decode = function decode(arrayBuffer) {
260
267
  var dataView = new DataView(arrayBuffer);
261
- var totalLen = dataView.getUint32(0, true);
262
- var fileVersion = dataView.getUint8(4);
263
- var typeLen = dataView.getUint16(5, true);
264
- var typeUint8Array = new Uint8Array(arrayBuffer, 7, typeLen);
265
- var nameLen = dataView.getUint16(7 + typeLen, true);
266
- var nameUint8Array = new Uint8Array(arrayBuffer, 9 + typeLen, nameLen);
268
+ if (!FileHeader.checkMagic(arrayBuffer)) {
269
+ throw new Error("Invalid Galacean binary file: missing GLCN magic header.");
270
+ }
271
+ var offset = 4;
272
+ var totalLen = dataView.getUint32(offset, true);
273
+ var fileVersion = dataView.getUint8(offset + 4);
274
+ var typeLen = dataView.getUint16(offset + 5, true);
275
+ var typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);
276
+ var nameLen = dataView.getUint16(offset + 7 + typeLen, true);
277
+ var nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);
267
278
  var name = Utils.decodeText(nameUint8Array);
268
279
  var type = Utils.decodeText(typeUint8Array);
269
280
  var header = new FileHeader();
@@ -271,7 +282,7 @@ var FileHeader = /*#__PURE__*/ function() {
271
282
  header.name = name;
272
283
  header.type = type;
273
284
  header.version = fileVersion;
274
- header.headerLength = nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
285
+ header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;
275
286
  return header;
276
287
  };
277
288
  _create_class(FileHeader, [
@@ -284,6 +295,8 @@ var FileHeader = /*#__PURE__*/ function() {
284
295
  ]);
285
296
  return FileHeader;
286
297
  }();
298
+ FileHeader.MAGIC = 0x4e434c47 // "GLCN" in little-endian
299
+ ;
287
300
 
288
301
  var InterpolableValueType = /*#__PURE__*/ function(InterpolableValueType) {
289
302
  InterpolableValueType[InterpolableValueType["Float"] = 0] = "Float";
@@ -690,12 +703,12 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
690
703
  this.rootIds.length = 0;
691
704
  this.strippedIds.length = 0;
692
705
  };
693
- /** @internal */ _proto._addDependentAsset = function _addDependentAsset(refID, promise) {
706
+ /** @internal */ _proto._addDependentAsset = function _addDependentAsset(url, promise) {
694
707
  var _this = this;
695
708
  var tasks = this._tasks;
696
- if (tasks.has(refID)) return;
709
+ if (tasks.has(url)) return;
697
710
  ++this._total;
698
- tasks.add(refID);
711
+ tasks.add(url);
699
712
  promise.finally(function() {
700
713
  ++_this._loaded;
701
714
  _this._setTaskCompleteProgress(_this._loaded, _this._total);
@@ -803,7 +816,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
803
816
  // reference object
804
817
  // @ts-ignore
805
818
  return context.resourceManager.getResourceByRef(value).then(function(resource) {
806
- if (context.type === ParserType.Prefab) {
819
+ if (resource && context.type === ParserType.Prefab) {
807
820
  // @ts-ignore
808
821
  context.resource._addDependenceAsset(resource);
809
822
  }
@@ -846,18 +859,18 @@ var ReflectionParser = /*#__PURE__*/ function() {
846
859
  _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
847
860
  var _this = this;
848
861
  // @ts-ignore
849
- var assetRefId = entityConfig.assetRefId;
862
+ var assetUrl = entityConfig.assetUrl;
850
863
  var engine = this._context.engine;
851
- if (assetRefId) {
864
+ if (assetUrl) {
852
865
  return engine.resourceManager// @ts-ignore
853
866
  .getResourceByRef({
854
- refId: assetRefId,
867
+ url: assetUrl,
855
868
  key: entityConfig.key,
856
869
  isClone: entityConfig.isClone
857
870
  }).then(function(entity) {
858
871
  // @ts-ignore
859
- var resource = engine.resourceManager._objectPool[assetRefId];
860
- if (_this._context.type === ParserType.Prefab) {
872
+ var resource = engine.resourceManager._objectPool[assetUrl];
873
+ if (resource && _this._context.type === ParserType.Prefab) {
861
874
  // @ts-ignore
862
875
  _this._context.resource._addDependenceAsset(resource);
863
876
  }
@@ -880,7 +893,7 @@ var ReflectionParser = /*#__PURE__*/ function() {
880
893
  return value["classType"] !== undefined;
881
894
  };
882
895
  ReflectionParser._isAssetRef = function _isAssetRef(value) {
883
- return value["refId"] !== undefined;
896
+ return value["url"] !== undefined;
884
897
  };
885
898
  ReflectionParser._isEntityRef = function _isEntityRef(value) {
886
899
  return value["entityId"] !== undefined;
@@ -899,7 +912,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
899
912
  function Texture2DDecoder() {}
900
913
  Texture2DDecoder.decode = function decode(engine, bufferReader, restoredTexture) {
901
914
  return new AssetPromise(function(resolve, reject) {
902
- var objectId = bufferReader.nextStr();
915
+ var url = bufferReader.nextStr();
903
916
  var mipmap = !!bufferReader.nextUint8();
904
917
  var filterMode = bufferReader.nextUint8();
905
918
  var anisoLevel = bufferReader.nextUint8();
@@ -928,7 +941,7 @@ var Texture2DDecoder = /*#__PURE__*/ function() {
928
941
  }
929
942
  }
930
943
  // @ts-ignore
931
- engine.resourceManager._objectPool[objectId] = texture2D;
944
+ engine.resourceManager._objectPool[url] = texture2D;
932
945
  resolve(texture2D);
933
946
  } else {
934
947
  var blob = new window.Blob([
@@ -1232,7 +1245,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1232
1245
  _proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
1233
1246
  var _this = this;
1234
1247
  var entityPromise;
1235
- if (entityConfig.assetRefId) {
1248
+ if (entityConfig.assetUrl) {
1236
1249
  entityPromise = this._parsePrefab(entityConfig, engine);
1237
1250
  } else if (entityConfig.strippedId) {
1238
1251
  entityPromise = this._parseStrippedEntity(entityConfig);
@@ -1252,10 +1265,10 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1252
1265
  };
1253
1266
  _proto._parsePrefab = function _parsePrefab(entityConfig, engine) {
1254
1267
  var _this = this;
1255
- var assetRefId = entityConfig.assetRefId;
1268
+ var assetUrl = entityConfig.assetUrl;
1256
1269
  return engine.resourceManager// @ts-ignore
1257
1270
  .getResourceByRef({
1258
- refId: assetRefId
1271
+ url: assetUrl
1259
1272
  }).then(function(prefabResource) {
1260
1273
  var entity = _instanceof(prefabResource, PrefabResource) ? prefabResource.instantiate() : prefabResource.instantiateSceneRoot();
1261
1274
  var instanceContext = new ParserContext(engine, ParserType.Prefab, null);
@@ -1306,7 +1319,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1306
1319
  var componentConfigMap = context.componentConfigMap;
1307
1320
  for(var i = 0, n = components.length; i < n; i++){
1308
1321
  var componentConfig = components[i];
1309
- var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
1322
+ var key = !componentConfig.url ? componentConfig.class : componentConfig.url;
1310
1323
  var componentId = componentConfig.id;
1311
1324
  var component = entity.addComponent(Loader.getClass(key));
1312
1325
  componentMap.set(componentId, component);
@@ -1354,53 +1367,6 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1354
1367
  return HierarchyParser;
1355
1368
  }();
1356
1369
 
1357
- var EditorTextureLoader = /*#__PURE__*/ function(Loader) {
1358
- _inherits(EditorTextureLoader, Loader);
1359
- function EditorTextureLoader() {
1360
- return Loader.apply(this, arguments) || this;
1361
- }
1362
- var _proto = EditorTextureLoader.prototype;
1363
- _proto.load = function load(item, resourceManager) {
1364
- var requestConfig = _extends({}, item, {
1365
- type: "arraybuffer"
1366
- });
1367
- var url = item.url;
1368
- return new AssetPromise(function(resolve, reject) {
1369
- resourceManager// @ts-ignore
1370
- ._request(url, requestConfig).then(function(data) {
1371
- decode(data, resourceManager.engine).then(function(texture) {
1372
- resourceManager.addContentRestorer(new EditorTexture2DContentRestorer(texture, url, requestConfig));
1373
- resolve(texture);
1374
- });
1375
- }).catch(reject);
1376
- });
1377
- };
1378
- return EditorTextureLoader;
1379
- }(Loader);
1380
- EditorTextureLoader = __decorate([
1381
- resourceLoader("EditorTexture2D", [
1382
- "prefab"
1383
- ], true)
1384
- ], EditorTextureLoader);
1385
- var EditorTexture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
1386
- _inherits(EditorTexture2DContentRestorer, ContentRestorer);
1387
- function EditorTexture2DContentRestorer(resource, url, requestConfig) {
1388
- var _this;
1389
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
1390
- return _this;
1391
- }
1392
- var _proto = EditorTexture2DContentRestorer.prototype;
1393
- _proto.restoreContent = function restoreContent() {
1394
- var texture = this.resource;
1395
- var engine = texture.engine;
1396
- return engine.resourceManager// @ts-ignore
1397
- ._request(this.url, this.requestConfig).then(function(data) {
1398
- return decode(data, engine, texture);
1399
- });
1400
- };
1401
- return EditorTexture2DContentRestorer;
1402
- }(ContentRestorer);
1403
-
1404
1370
  var MaterialLoaderType = /*#__PURE__*/ function(MaterialLoaderType) {
1405
1371
  MaterialLoaderType["Vector2"] = "Vector2";
1406
1372
  MaterialLoaderType["Vector3"] = "Vector3";
@@ -1441,11 +1407,11 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1441
1407
  var customAmbientLight = ambient.customAmbientLight, ambientLight = ambient.ambientLight;
1442
1408
  if (useCustomAmbient && customAmbientLight) {
1443
1409
  // @ts-ignore
1444
- context._addDependentAsset(customAmbientLight.refId, resourceManager.getResourceByRef(customAmbientLight));
1410
+ context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));
1445
1411
  }
1446
1412
  if (ambientLight && (!useCustomAmbient || useSH)) {
1447
1413
  // @ts-ignore
1448
- context._addDependentAsset(ambientLight.refId, resourceManager.getResourceByRef(ambientLight));
1414
+ context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));
1449
1415
  }
1450
1416
  }
1451
1417
  var background = scene.background;
@@ -1453,14 +1419,14 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1453
1419
  if (backgroundMode === BackgroundMode.Texture) {
1454
1420
  var texture = background.texture;
1455
1421
  // @ts-ignore
1456
- texture && context._addDependentAsset(texture.refId, resourceManager.getResourceByRef(texture));
1422
+ texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));
1457
1423
  } else if (backgroundMode === BackgroundMode.Sky) {
1458
1424
  var skyMesh = background.skyMesh, skyMaterial = background.skyMaterial;
1459
1425
  if (skyMesh && skyMaterial) {
1460
1426
  // @ts-ignore
1461
- context._addDependentAsset(skyMesh.refId, resourceManager.getResourceByRef(skyMesh));
1427
+ context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));
1462
1428
  // @ts-ignore
1463
- context._addDependentAsset(skyMaterial.refId, resourceManager.getResourceByRef(skyMaterial));
1429
+ context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));
1464
1430
  }
1465
1431
  }
1466
1432
  };
@@ -1476,12 +1442,12 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1476
1442
  var entities = file.entities;
1477
1443
  for(var i = 0, n = entities.length; i < n; i++){
1478
1444
  var entity = entities[i];
1479
- if (!!entity.assetRefId) {
1445
+ if (!!entity.assetUrl) {
1480
1446
  var context = this.context;
1481
- var refId = entity.assetRefId, key = entity.key;
1447
+ var url = entity.assetUrl, key = entity.key;
1482
1448
  // @ts-ignore
1483
- context._addDependentAsset(refId, context.resourceManager.getResourceByRef({
1484
- refId: refId,
1449
+ context._addDependentAsset(url, context.resourceManager.getResourceByRef({
1450
+ url: url,
1485
1451
  key: key
1486
1452
  }));
1487
1453
  } else if (entity.strippedId) {
@@ -1506,7 +1472,7 @@ var SpecularMode = /*#__PURE__*/ function(SpecularMode) {
1506
1472
  if (ReflectionParser._isAssetRef(value)) {
1507
1473
  var context = this.context;
1508
1474
  // @ts-ignore
1509
- context._addDependentAsset(value.refId, context.resourceManager.getResourceByRef(value));
1475
+ context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));
1510
1476
  } else {
1511
1477
  for(var key in value){
1512
1478
  this._searchDependentAssets(value[key]);
@@ -1570,7 +1536,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
1570
1536
  };
1571
1537
  _proto._parseKeyframeValue = function _parseKeyframeValue(keyframe, resourceManager) {
1572
1538
  var value = keyframe.value;
1573
- if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.refId)) {
1539
+ if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && (value == null ? void 0 : value.url)) {
1574
1540
  return new Promise(function(resolve) {
1575
1541
  resourceManager// @ts-ignore
1576
1542
  .getResourceByRef(value).then(function(asset) {
@@ -1586,7 +1552,7 @@ var AnimationClipLoader = /*#__PURE__*/ function(Loader) {
1586
1552
  }(Loader);
1587
1553
  AnimationClipLoader = __decorate([
1588
1554
  resourceLoader(AssetType.AnimationClip, [
1589
- "ani"
1555
+ "anim"
1590
1556
  ])
1591
1557
  ], AnimationClipLoader);
1592
1558
 
@@ -1698,8 +1664,8 @@ var AnimatorControllerLoader = /*#__PURE__*/ function(Loader1) {
1698
1664
  }(Loader);
1699
1665
  AnimatorControllerLoader = __decorate([
1700
1666
  resourceLoader(AssetType.AnimatorController, [
1701
- "json"
1702
- ], false)
1667
+ "animCtrl"
1668
+ ])
1703
1669
  ], AnimatorControllerLoader);
1704
1670
 
1705
1671
  var base64Regex = /^data:(.+?);base64,/;
@@ -1727,8 +1693,7 @@ var BufferLoader = /*#__PURE__*/ function(Loader) {
1727
1693
  }(Loader);
1728
1694
  BufferLoader = __decorate([
1729
1695
  resourceLoader(AssetType.Buffer, [
1730
- "bin",
1731
- "r3bin"
1696
+ "bin"
1732
1697
  ])
1733
1698
  ], BufferLoader);
1734
1699
 
@@ -1755,7 +1720,6 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1755
1720
  sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));
1756
1721
  ambientLight.diffuseSphericalHarmonics = sh;
1757
1722
  ambientLight.specularTexture = texture;
1758
- ambientLight.specularTextureDecodeRGBM = true;
1759
1723
  resolve(ambientLight);
1760
1724
  }).catch(function(e) {
1761
1725
  reject(e);
@@ -1768,7 +1732,7 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1768
1732
  var _this;
1769
1733
  var shByteLength = 27 * 4;
1770
1734
  var size = (_this = new Uint16Array(buffer, shByteLength, 1)) == null ? void 0 : _this[0];
1771
- texture || (texture = new TextureCube(engine, size, undefined, undefined, false));
1735
+ texture || (texture = new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false));
1772
1736
  texture.filterMode = TextureFilterMode.Trilinear;
1773
1737
  var mipmapCount = texture.mipmapCount;
1774
1738
  var offset = shByteLength + 2;
@@ -1776,8 +1740,8 @@ var EnvLoader = /*#__PURE__*/ function(Loader) {
1776
1740
  var mipSize = size >> mipLevel;
1777
1741
  for(var face = 0; face < 6; face++){
1778
1742
  var dataSize = mipSize * mipSize * 4;
1779
- var data = new Uint8Array(buffer, offset, dataSize);
1780
- offset += dataSize;
1743
+ var data = new Uint16Array(buffer, offset, dataSize);
1744
+ offset += dataSize * 2;
1781
1745
  texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);
1782
1746
  }
1783
1747
  }
@@ -5306,341 +5270,6 @@ PrefabLoader = __decorate([
5306
5270
  ])
5307
5271
  ], PrefabLoader);
5308
5272
 
5309
- var PI = Math.PI;
5310
- // referenece: https://www.flipcode.com/archives/HDR_Image_Reader.shtml
5311
- var HDRLoader = /*#__PURE__*/ function(Loader) {
5312
- _inherits(HDRLoader, Loader);
5313
- function HDRLoader() {
5314
- return Loader.apply(this, arguments) || this;
5315
- }
5316
- var _proto = HDRLoader.prototype;
5317
- _proto.load = function load(item, resourceManager) {
5318
- return new AssetPromise(function(resolve, reject) {
5319
- var engine = resourceManager.engine;
5320
- var requestConfig = _extends({}, item, {
5321
- type: "arraybuffer"
5322
- });
5323
- var url = item.url;
5324
- resourceManager// @ts-ignore
5325
- ._request(url, requestConfig).then(function(buffer) {
5326
- var texture = HDRLoader._setTextureByBuffer(engine, buffer);
5327
- engine.resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
5328
- resolve(texture);
5329
- }).catch(reject);
5330
- });
5331
- };
5332
- /**
5333
- * @internal
5334
- */ HDRLoader._setTextureByBuffer = function _setTextureByBuffer(engine, buffer, texture) {
5335
- var bufferArray = new Uint8Array(buffer);
5336
- var _HDRLoader__parseHeader = HDRLoader._parseHeader(bufferArray), width = _HDRLoader__parseHeader.width, height = _HDRLoader__parseHeader.height, dataPosition = _HDRLoader__parseHeader.dataPosition;
5337
- var cubeSize = height >> 1;
5338
- texture || (texture = new TextureCube(engine, cubeSize, undefined, undefined, false));
5339
- var pixels = HDRLoader._readPixels(bufferArray.subarray(dataPosition), width, height);
5340
- var cubeMapData = HDRLoader._convertToCubemap(pixels, width, height, cubeSize);
5341
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
5342
- texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, cubeMapData[faceIndex], 0);
5343
- }
5344
- texture.generateMipmaps();
5345
- return texture;
5346
- };
5347
- HDRLoader._convertToCubemap = function _convertToCubemap(pixels, inputWidth, inputHeight, size) {
5348
- if (!pixels) {
5349
- throw "ConvertPanoramaToCubemap: input cannot be null";
5350
- }
5351
- if (pixels.length != inputWidth * inputHeight * 4) {
5352
- throw "ConvertPanoramaToCubemap: input size is wrong";
5353
- }
5354
- var textureRight = this._createCubemapData(size, this._faceRight, pixels, inputWidth, inputHeight);
5355
- var textureLeft = this._createCubemapData(size, this._faceLeft, pixels, inputWidth, inputHeight);
5356
- var textureUp = this._createCubemapData(size, this._faceUp, pixels, inputWidth, inputHeight);
5357
- var textureDown = this._createCubemapData(size, this._faceBottom, pixels, inputWidth, inputHeight);
5358
- var textureFront = this._createCubemapData(size, this._faceFront, pixels, inputWidth, inputHeight);
5359
- var textureBack = this._createCubemapData(size, this._faceBack, pixels, inputWidth, inputHeight);
5360
- return [
5361
- textureRight,
5362
- textureLeft,
5363
- textureUp,
5364
- textureDown,
5365
- textureFront,
5366
- textureBack
5367
- ];
5368
- };
5369
- HDRLoader._createCubemapData = function _createCubemapData(texSize, faceData, pixels, inputWidth, inputHeight) {
5370
- var textureArray = new Uint8ClampedArray(texSize * texSize * 4);
5371
- var rotDX1 = this._tempVector3.set(0, 0, 0).add(faceData[1]).subtract(faceData[0]).scale(1 / texSize);
5372
- var rotDX2 = this._temp2Vector3.set(0, 0, 0).add(faceData[3]).subtract(faceData[2]).scale(1 / texSize);
5373
- var dy = 1 / texSize;
5374
- var fy = 0;
5375
- for(var y = 0; y < texSize; y++){
5376
- var xv1 = this._temp3Vector3.set(0, 0, 0).add(faceData[0]);
5377
- var xv2 = this._temp4Vector3.set(0, 0, 0).add(faceData[2]);
5378
- for(var x = 0; x < texSize; x++){
5379
- var v = this._temp5Vector3.set(0, 0, 0).add(xv2).subtract(xv1).scale(fy).add(xv1);
5380
- v.normalize();
5381
- var color = this._calcProjectionSpherical(v, pixels, inputWidth, inputHeight);
5382
- this._RGBEToLinear(color);
5383
- this._linearToRGBM(color, 5);
5384
- // 4 channels per pixels
5385
- var index = y * texSize * 4 + x * 4;
5386
- textureArray[index] = color.r;
5387
- textureArray[index + 1] = color.g;
5388
- textureArray[index + 2] = color.b;
5389
- textureArray[index + 3] = color.a;
5390
- xv1.add(rotDX1);
5391
- xv2.add(rotDX2);
5392
- }
5393
- fy += dy;
5394
- }
5395
- return textureArray;
5396
- };
5397
- HDRLoader._calcProjectionSpherical = function _calcProjectionSpherical(vDir, pixels, inputWidth, inputHeight) {
5398
- var theta = Math.atan2(vDir.z, vDir.x);
5399
- var phi = Math.acos(vDir.y);
5400
- while(theta < -PI){
5401
- theta += 2 * PI;
5402
- }
5403
- while(theta > PI){
5404
- theta -= 2 * PI;
5405
- }
5406
- var dx = theta / PI;
5407
- var dy = phi / PI;
5408
- // recenter.
5409
- dx = dx * 0.5 + 0.5;
5410
- var px = Math.round(dx * inputWidth);
5411
- if (px < 0) {
5412
- px = 0;
5413
- } else if (px >= inputWidth) {
5414
- px = inputWidth - 1;
5415
- }
5416
- var py = Math.round(dy * inputHeight);
5417
- if (py < 0) {
5418
- py = 0;
5419
- } else if (py >= inputHeight) {
5420
- py = inputHeight - 1;
5421
- }
5422
- var inputY = inputHeight - py - 1;
5423
- var index = inputY * inputWidth * 4 + px * 4;
5424
- var r = pixels[index];
5425
- var g = pixels[index + 1];
5426
- var b = pixels[index + 2];
5427
- var a = pixels[index + 3];
5428
- return new Color(r, g, b, a);
5429
- };
5430
- HDRLoader._readStringLine = function _readStringLine(uint8array, startIndex) {
5431
- var line = "";
5432
- var character = "";
5433
- for(var i = startIndex; i < uint8array.length - startIndex; i++){
5434
- character = String.fromCharCode(uint8array[i]);
5435
- if (character == "\n") {
5436
- break;
5437
- }
5438
- line += character;
5439
- }
5440
- return line;
5441
- };
5442
- HDRLoader._parseHeader = function _parseHeader(uint8array) {
5443
- var height = 0;
5444
- var width = 0;
5445
- var line = this._readStringLine(uint8array, 0);
5446
- if (line[0] != "#" || line[1] != "?") {
5447
- throw "Bad HDR Format.";
5448
- }
5449
- var endOfHeader = false;
5450
- var findFormat = false;
5451
- var lineIndex = 0;
5452
- do {
5453
- lineIndex += line.length + 1;
5454
- line = this._readStringLine(uint8array, lineIndex);
5455
- if (line == "FORMAT=32-bit_rle_rgbe") {
5456
- findFormat = true;
5457
- } else if (line.length == 0) {
5458
- endOfHeader = true;
5459
- }
5460
- }while (!endOfHeader);
5461
- if (!findFormat) {
5462
- throw "HDR Bad header format, unsupported FORMAT";
5463
- }
5464
- lineIndex += line.length + 1;
5465
- line = this._readStringLine(uint8array, lineIndex);
5466
- var sizeRegexp = /^\-Y (.*) \+X (.*)$/g;
5467
- var match = sizeRegexp.exec(line);
5468
- // TODO. Support +Y and -X if needed.
5469
- if (!match || match.length < 3) {
5470
- throw "HDR Bad header format, no size";
5471
- }
5472
- width = parseInt(match[2]);
5473
- height = parseInt(match[1]);
5474
- if (width < 8 || width > 0x7fff) {
5475
- throw "HDR Bad header format, unsupported size";
5476
- }
5477
- lineIndex += line.length + 1;
5478
- return {
5479
- height: height,
5480
- width: width,
5481
- dataPosition: lineIndex
5482
- };
5483
- };
5484
- HDRLoader._readPixels = function _readPixels(buffer, width, height) {
5485
- var scanLineWidth = width;
5486
- var byteLength = buffer.byteLength;
5487
- var dataRGBA = new Uint8Array(4 * width * height);
5488
- var offset = 0, pos = 0;
5489
- var ptrEnd = 4 * scanLineWidth;
5490
- var scanLineBuffer = new Uint8Array(ptrEnd);
5491
- var numScanLines = height; // read in each successive scanLine
5492
- while(numScanLines > 0 && pos < byteLength){
5493
- var a = buffer[pos++];
5494
- var b = buffer[pos++];
5495
- var c = buffer[pos++];
5496
- var d = buffer[pos++];
5497
- if (a != 2 || b != 2 || c & 0x80 || width < 8 || width > 32767) {
5498
- // this file is not run length encoded
5499
- // read values sequentially
5500
- return buffer;
5501
- }
5502
- if ((c << 8 | d) != scanLineWidth) {
5503
- // eslint-disable-next-line no-throw-literal
5504
- throw "HDR Bad header format, wrong scan line width";
5505
- }
5506
- // read each of the four channels for the scanline into the buffer
5507
- // first red, then green, then blue, then exponent
5508
- var ptr = 0, count = void 0;
5509
- while(ptr < ptrEnd && pos < byteLength){
5510
- count = buffer[pos++];
5511
- var isEncodedRun = count > 128;
5512
- if (isEncodedRun) count -= 128;
5513
- if (0 === count || ptr + count > ptrEnd) {
5514
- throw "HDR Bad Format, bad scanline data (run)";
5515
- }
5516
- if (isEncodedRun) {
5517
- // a (encoded) run of the same value
5518
- var byteValue = buffer[pos++];
5519
- for(var i = 0; i < count; i++){
5520
- scanLineBuffer[ptr++] = byteValue;
5521
- } //ptr += count;
5522
- } else {
5523
- // a literal-run
5524
- scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
5525
- ptr += count;
5526
- pos += count;
5527
- }
5528
- } // now convert data from buffer into rgba
5529
- // first red, then green, then blue, then exponent (alpha)
5530
- var l = scanLineWidth; //scanLine_buffer.byteLength;
5531
- for(var i1 = 0; i1 < l; i1++){
5532
- var off = 0;
5533
- dataRGBA[offset] = scanLineBuffer[i1 + off];
5534
- off += scanLineWidth;
5535
- dataRGBA[offset + 1] = scanLineBuffer[i1 + off];
5536
- off += scanLineWidth;
5537
- dataRGBA[offset + 2] = scanLineBuffer[i1 + off];
5538
- off += scanLineWidth;
5539
- dataRGBA[offset + 3] = scanLineBuffer[i1 + off];
5540
- offset += 4;
5541
- }
5542
- numScanLines--;
5543
- }
5544
- return dataRGBA;
5545
- };
5546
- HDRLoader._RGBEToLinear = function _RGBEToLinear(color) {
5547
- var scaleFactor = Math.pow(2, color.a - 128) / 255;
5548
- color.r *= scaleFactor;
5549
- color.g *= scaleFactor;
5550
- color.b *= scaleFactor;
5551
- color.a = 1;
5552
- };
5553
- HDRLoader._linearToRGBM = function _linearToRGBM(color, maxRange) {
5554
- var maxRGB = Math.max(color.r, Math.max(color.g, color.b));
5555
- var M = Math.min(maxRGB / maxRange, 1);
5556
- M = Math.ceil(M * 255);
5557
- var scaleFactor = 65025 / (M * maxRange); // 255 * (255 / (M * maxRange) )
5558
- color.r *= scaleFactor;
5559
- color.g *= scaleFactor;
5560
- color.b *= scaleFactor;
5561
- color.a *= M;
5562
- };
5563
- return HDRLoader;
5564
- }(Loader);
5565
- HDRLoader._rightBottomBack = new Vector3(1.0, -1.0, -1.0);
5566
- HDRLoader._rightBottomFront = new Vector3(1.0, -1.0, 1.0);
5567
- HDRLoader._rightUpBack = new Vector3(1.0, 1.0, -1.0);
5568
- HDRLoader._rightUpFront = new Vector3(1.0, 1.0, 1.0);
5569
- HDRLoader._leftBottomBack = new Vector3(-1.0, -1.0, -1.0);
5570
- HDRLoader._leftBottomFront = new Vector3(-1.0, -1.0, 1.0);
5571
- HDRLoader._leftUpBack = new Vector3(-1.0, 1.0, -1.0);
5572
- HDRLoader._leftUpFront = new Vector3(-1.0, 1.0, 1.0);
5573
- HDRLoader._faceRight = [
5574
- HDRLoader._rightBottomBack,
5575
- HDRLoader._rightBottomFront,
5576
- HDRLoader._rightUpBack,
5577
- HDRLoader._rightUpFront
5578
- ];
5579
- HDRLoader._faceLeft = [
5580
- HDRLoader._leftBottomFront,
5581
- HDRLoader._leftBottomBack,
5582
- HDRLoader._leftUpFront,
5583
- HDRLoader._leftUpBack
5584
- ];
5585
- HDRLoader._faceUp = [
5586
- HDRLoader._leftBottomFront,
5587
- HDRLoader._rightBottomFront,
5588
- HDRLoader._leftBottomBack,
5589
- HDRLoader._rightBottomBack
5590
- ];
5591
- HDRLoader._faceBottom = [
5592
- HDRLoader._leftUpBack,
5593
- HDRLoader._rightUpBack,
5594
- HDRLoader._leftUpFront,
5595
- HDRLoader._rightUpFront
5596
- ];
5597
- HDRLoader._faceFront = [
5598
- HDRLoader._leftBottomBack,
5599
- HDRLoader._rightBottomBack,
5600
- HDRLoader._leftUpBack,
5601
- HDRLoader._rightUpBack
5602
- ];
5603
- HDRLoader._faceBack = [
5604
- HDRLoader._rightBottomFront,
5605
- HDRLoader._leftBottomFront,
5606
- HDRLoader._rightUpFront,
5607
- HDRLoader._leftUpFront
5608
- ];
5609
- HDRLoader._tempVector3 = new Vector3();
5610
- HDRLoader._temp2Vector3 = new Vector3();
5611
- HDRLoader._temp3Vector3 = new Vector3();
5612
- HDRLoader._temp4Vector3 = new Vector3();
5613
- HDRLoader._temp5Vector3 = new Vector3();
5614
- HDRLoader = __decorate([
5615
- resourceLoader(AssetType.HDR, [
5616
- "hdr"
5617
- ])
5618
- ], HDRLoader);
5619
- /**
5620
- * @internal
5621
- */ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
5622
- _inherits(HDRContentRestorer, ContentRestorer);
5623
- function HDRContentRestorer(resource, url, requestConfig) {
5624
- var _this;
5625
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
5626
- return _this;
5627
- }
5628
- var _proto = HDRContentRestorer.prototype;
5629
- _proto.restoreContent = function restoreContent() {
5630
- var _this = this;
5631
- return new AssetPromise(function(resolve, reject) {
5632
- var resource = _this.resource;
5633
- var engine = resource.engine;
5634
- engine.resourceManager// @ts-ignore
5635
- ._request(_this.url, _this.requestConfig).then(function(buffer) {
5636
- HDRLoader._setTextureByBuffer(engine, buffer, resource);
5637
- resolve(resource);
5638
- }).catch(reject);
5639
- });
5640
- };
5641
- return HDRContentRestorer;
5642
- }(ContentRestorer);
5643
-
5644
5273
  var JSONLoader = /*#__PURE__*/ function(Loader) {
5645
5274
  _inherits(JSONLoader, Loader);
5646
5275
  function JSONLoader() {
@@ -6043,7 +5672,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
6043
5672
  }(Loader);
6044
5673
  MaterialLoader = __decorate([
6045
5674
  resourceLoader(AssetType.Material, [
6046
- "json"
5675
+ "mat"
6047
5676
  ])
6048
5677
  ], MaterialLoader);
6049
5678
 
@@ -6166,7 +5795,7 @@ var ProjectLoader = /*#__PURE__*/ function(Loader) {
6166
5795
  }(Loader);
6167
5796
  ProjectLoader = __decorate([
6168
5797
  resourceLoader(AssetType.Project, [
6169
- "proj"
5798
+ "project"
6170
5799
  ], false)
6171
5800
  ], ProjectLoader);
6172
5801
 
@@ -6387,28 +6016,20 @@ TextLoader = __decorate([
6387
6016
  ])
6388
6017
  ], TextLoader);
6389
6018
 
6390
- /**
6391
- * @internal
6392
- */ var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6393
- _inherits(Texture2DContentRestorer, ContentRestorer);
6394
- function Texture2DContentRestorer(resource, url, requestConfig) {
6395
- var _this;
6396
- _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6397
- return _this;
6398
- }
6399
- var _proto = Texture2DContentRestorer.prototype;
6400
- _proto.restoreContent = function restoreContent() {
6401
- var _this = this;
6402
- return request(this.url, this.requestConfig).then(function(image) {
6403
- var resource = _this.resource;
6404
- resource.setImageSource(image);
6405
- resource.generateMipmaps();
6406
- return resource;
6407
- });
6408
- };
6409
- return Texture2DContentRestorer;
6410
- }(ContentRestorer);
6411
-
6019
+ function loadImageFromBuffer(buffer) {
6020
+ return new AssetPromise(function(resolve, reject) {
6021
+ var blob = new Blob([
6022
+ buffer
6023
+ ]);
6024
+ var img = new Image();
6025
+ img.onload = function() {
6026
+ URL.revokeObjectURL(img.src);
6027
+ resolve(img);
6028
+ };
6029
+ img.onerror = reject;
6030
+ img.src = URL.createObjectURL(blob);
6031
+ });
6032
+ }
6412
6033
  var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6413
6034
  _inherits(Texture2DLoader, Loader);
6414
6035
  function Texture2DLoader() {
@@ -6416,36 +6037,48 @@ var Texture2DLoader = /*#__PURE__*/ function(Loader) {
6416
6037
  }
6417
6038
  var _proto = Texture2DLoader.prototype;
6418
6039
  _proto.load = function load(item, resourceManager) {
6040
+ var _this = this;
6041
+ var url = item.url;
6042
+ var requestConfig = _extends({}, item, {
6043
+ type: "arraybuffer"
6044
+ });
6419
6045
  return new AssetPromise(function(resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) {
6420
- var url = item.url;
6421
- var requestConfig = _extends({}, item, {
6422
- type: "image"
6423
- });
6424
6046
  resourceManager// @ts-ignore
6425
- ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(image) {
6426
- var _item_params;
6427
- var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6428
- var width = image.width, height = image.height;
6429
- var engine = resourceManager.engine;
6430
- var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
6431
- var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
6432
- texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6433
- texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6434
- texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6435
- texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6436
- texture.setImageSource(image);
6437
- generateMipmap && texture.generateMipmaps();
6438
- if (url.indexOf("data:") !== 0) {
6439
- var index = url.lastIndexOf("/");
6440
- texture.name = url.substring(index + 1);
6047
+ ._request(url, requestConfig).onProgress(setTaskCompleteProgress, setTaskDetailProgress).then(function(buffer) {
6048
+ if (FileHeader.checkMagic(buffer)) {
6049
+ decode(buffer, resourceManager.engine).then(function(texture) {
6050
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6051
+ resolve(texture);
6052
+ }, reject);
6053
+ } else {
6054
+ loadImageFromBuffer(buffer).then(function(img) {
6055
+ var texture = _this._createTexture(img, item, resourceManager);
6056
+ resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6057
+ resolve(texture);
6058
+ }, reject);
6441
6059
  }
6442
- resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));
6443
- resolve(texture);
6444
- }).catch(function(e) {
6445
- reject(e);
6446
- });
6060
+ }).catch(reject);
6447
6061
  });
6448
6062
  };
6063
+ _proto._createTexture = function _createTexture(img, item, resourceManager) {
6064
+ var _item_params;
6065
+ var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6066
+ var width = img.width, height = img.height;
6067
+ var engine = resourceManager.engine;
6068
+ var generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(engine, width, height, format, mipmap, isSRGBColorSpace);
6069
+ var texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);
6070
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6071
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6072
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6073
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6074
+ texture.setImageSource(img);
6075
+ generateMipmap && texture.generateMipmaps();
6076
+ var url = item.url;
6077
+ if (url.indexOf("data:") !== 0) {
6078
+ texture.name = url.substring(url.lastIndexOf("/") + 1);
6079
+ }
6080
+ return texture;
6081
+ };
6449
6082
  return Texture2DLoader;
6450
6083
  }(Loader);
6451
6084
  Texture2DLoader = __decorate([
@@ -6453,40 +6086,319 @@ Texture2DLoader = __decorate([
6453
6086
  "png",
6454
6087
  "jpg",
6455
6088
  "webp",
6456
- "jpeg"
6089
+ "jpeg",
6090
+ "tex"
6457
6091
  ])
6458
6092
  ], Texture2DLoader);
6459
-
6460
- /**
6461
- * @internal
6462
- */ var TextureCubeContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6463
- _inherits(TextureCubeContentRestorer, ContentRestorer);
6464
- function TextureCubeContentRestorer(resource, urls, requestConfig) {
6093
+ var Texture2DContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6094
+ _inherits(Texture2DContentRestorer, ContentRestorer);
6095
+ function Texture2DContentRestorer(resource, url, requestConfig) {
6465
6096
  var _this;
6466
- _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6097
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6467
6098
  return _this;
6468
6099
  }
6469
- var _proto = TextureCubeContentRestorer.prototype;
6100
+ var _proto = Texture2DContentRestorer.prototype;
6470
6101
  _proto.restoreContent = function restoreContent() {
6471
- var _this = this;
6472
- return new AssetPromise(function(resolve, reject) {
6473
- Promise.all(_this.urls.map(function(url) {
6474
- return request(url, _this.requestConfig);
6475
- })).then(function(images) {
6476
- var resource = _this.resource;
6477
- for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6478
- resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6479
- }
6480
- resource.generateMipmaps();
6481
- resolve(resource);
6482
- }).catch(function(e) {
6483
- reject(e);
6484
- });
6102
+ var texture = this.resource;
6103
+ var engine = texture.engine;
6104
+ return engine.resourceManager// @ts-ignore
6105
+ ._request(this.url, this.requestConfig).then(function(buffer) {
6106
+ if (FileHeader.checkMagic(buffer)) {
6107
+ return decode(buffer, engine, texture);
6108
+ } else {
6109
+ return loadImageFromBuffer(buffer).then(function(img) {
6110
+ texture.setImageSource(img);
6111
+ texture.generateMipmaps();
6112
+ return texture;
6113
+ });
6114
+ }
6485
6115
  });
6486
6116
  };
6487
- return TextureCubeContentRestorer;
6117
+ return Texture2DContentRestorer;
6488
6118
  }(ContentRestorer);
6489
6119
 
6120
+ /**
6121
+ * @internal
6122
+ * HDR panorama to cubemap decoder.
6123
+ */ var HDRDecoder = /*#__PURE__*/ function() {
6124
+ function HDRDecoder() {}
6125
+ HDRDecoder.parseHeader = function parseHeader(uint8array) {
6126
+ var line = this._readStringLine(uint8array, 0);
6127
+ if (line[0] !== "#" || line[1] !== "?") {
6128
+ throw "HDRDecoder: invalid file header";
6129
+ }
6130
+ var endOfHeader = false;
6131
+ var findFormat = false;
6132
+ var lineIndex = 0;
6133
+ do {
6134
+ lineIndex += line.length + 1;
6135
+ line = this._readStringLine(uint8array, lineIndex);
6136
+ if (line === "FORMAT=32-bit_rle_rgbe") findFormat = true;
6137
+ else if (line.length === 0) endOfHeader = true;
6138
+ }while (!endOfHeader);
6139
+ if (!findFormat) {
6140
+ throw "HDRDecoder: unsupported format, expected 32-bit_rle_rgbe";
6141
+ }
6142
+ lineIndex += line.length + 1;
6143
+ line = this._readStringLine(uint8array, lineIndex);
6144
+ var match = /^\-Y (.*) \+X (.*)$/g.exec(line);
6145
+ if (!match || match.length < 3) {
6146
+ throw "HDRDecoder: missing image size, only -Y +X layout is supported";
6147
+ }
6148
+ var width = parseInt(match[2]);
6149
+ var height = parseInt(match[1]);
6150
+ if (width < 8 || width > 0x7fff) {
6151
+ throw "HDRDecoder: unsupported image width, must be between 8 and 32767";
6152
+ }
6153
+ return {
6154
+ height: height,
6155
+ width: width,
6156
+ dataPosition: lineIndex + line.length + 1
6157
+ };
6158
+ };
6159
+ HDRDecoder.decodeFaces = function decodeFaces(bufferArray, header, onFace) {
6160
+ var width = header.width, height = header.height, dataPosition = header.dataPosition;
6161
+ var cubeSize = height >> 1;
6162
+ var pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);
6163
+ var faces = HDRDecoder._faces;
6164
+ var faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);
6165
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6166
+ HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);
6167
+ onFace(faceIndex, faceBuffer);
6168
+ }
6169
+ };
6170
+ HDRDecoder._generateFloat2HalfTables = function _generateFloat2HalfTables() {
6171
+ var baseTable = new Uint32Array(512);
6172
+ var shiftTable = new Uint32Array(512);
6173
+ for(var i = 0; i < 256; ++i){
6174
+ var e = i - 127;
6175
+ if (e < -27) {
6176
+ baseTable[i] = 0x0000;
6177
+ baseTable[i | 0x100] = 0x8000;
6178
+ shiftTable[i] = 24;
6179
+ shiftTable[i | 0x100] = 24;
6180
+ } else if (e < -14) {
6181
+ baseTable[i] = 0x0400 >> -e - 14;
6182
+ baseTable[i | 0x100] = 0x0400 >> -e - 14 | 0x8000;
6183
+ shiftTable[i] = -e - 1;
6184
+ shiftTable[i | 0x100] = -e - 1;
6185
+ } else if (e <= 15) {
6186
+ baseTable[i] = e + 15 << 10;
6187
+ baseTable[i | 0x100] = e + 15 << 10 | 0x8000;
6188
+ shiftTable[i] = 13;
6189
+ shiftTable[i | 0x100] = 13;
6190
+ } else if (e < 128) {
6191
+ baseTable[i] = 0x7c00;
6192
+ baseTable[i | 0x100] = 0xfc00;
6193
+ shiftTable[i] = 24;
6194
+ shiftTable[i | 0x100] = 24;
6195
+ } else {
6196
+ baseTable[i] = 0x7c00;
6197
+ baseTable[i | 0x100] = 0xfc00;
6198
+ shiftTable[i] = 13;
6199
+ shiftTable[i | 0x100] = 13;
6200
+ }
6201
+ }
6202
+ return {
6203
+ baseTable: baseTable,
6204
+ shiftTable: shiftTable
6205
+ };
6206
+ };
6207
+ HDRDecoder._createCubemapData = function _createCubemapData(texSize, face, pixels, inputWidth, inputHeight, facePixels) {
6208
+ var invSize = 1 / texSize;
6209
+ var rotDX1X = (face[3] - face[0]) * invSize;
6210
+ var rotDX1Y = (face[4] - face[1]) * invSize;
6211
+ var rotDX1Z = (face[5] - face[2]) * invSize;
6212
+ var rotDX2X = (face[9] - face[6]) * invSize;
6213
+ var rotDX2Y = (face[10] - face[7]) * invSize;
6214
+ var rotDX2Z = (face[11] - face[8]) * invSize;
6215
+ var floatView = HDRDecoder._floatView;
6216
+ var uint32View = HDRDecoder._uint32View;
6217
+ var _HDRDecoder__float2HalfTables = HDRDecoder._float2HalfTables, baseTable = _HDRDecoder__float2HalfTables.baseTable, shiftTable = _HDRDecoder__float2HalfTables.shiftTable;
6218
+ var one = HDRDecoder._one;
6219
+ var fy = 0;
6220
+ for(var y = 0; y < texSize; y++){
6221
+ var xv1X = face[0], xv1Y = face[1], xv1Z = face[2];
6222
+ var xv2X = face[6], xv2Y = face[7], xv2Z = face[8];
6223
+ for(var x = 0; x < texSize; x++){
6224
+ var dirX = xv1X + (xv2X - xv1X) * fy;
6225
+ var dirY = xv1Y + (xv2Y - xv1Y) * fy;
6226
+ var dirZ = xv1Z + (xv2Z - xv1Z) * fy;
6227
+ var invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);
6228
+ dirX *= invLen;
6229
+ dirY *= invLen;
6230
+ dirZ *= invLen;
6231
+ var px = Math.round((Math.atan2(dirZ, dirX) / Math.PI * 0.5 + 0.5) * inputWidth);
6232
+ if (px < 0) px = 0;
6233
+ else if (px >= inputWidth) px = inputWidth - 1;
6234
+ var py = Math.round(Math.acos(dirY) / Math.PI * inputHeight);
6235
+ if (py < 0) py = 0;
6236
+ else if (py >= inputHeight) py = inputHeight - 1;
6237
+ var srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;
6238
+ var scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;
6239
+ var dstIndex = y * texSize * 4 + x * 4;
6240
+ for(var c = 0; c < 3; c++){
6241
+ floatView[0] = pixels[srcIndex + c] * scaleFactor;
6242
+ var f = uint32View[0];
6243
+ var e = f >> 23 & 0x1ff;
6244
+ facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);
6245
+ }
6246
+ facePixels[dstIndex + 3] = one;
6247
+ xv1X += rotDX1X;
6248
+ xv1Y += rotDX1Y;
6249
+ xv1Z += rotDX1Z;
6250
+ xv2X += rotDX2X;
6251
+ xv2Y += rotDX2Y;
6252
+ xv2Z += rotDX2Z;
6253
+ }
6254
+ fy += invSize;
6255
+ }
6256
+ };
6257
+ HDRDecoder._readStringLine = function _readStringLine(uint8array, startIndex) {
6258
+ var line = "";
6259
+ for(var i = startIndex, n = uint8array.length; i < n; i++){
6260
+ var character = String.fromCharCode(uint8array[i]);
6261
+ if (character === "\n") break;
6262
+ line += character;
6263
+ }
6264
+ return line;
6265
+ };
6266
+ HDRDecoder._readPixels = function _readPixels(buffer, width, height) {
6267
+ var byteLength = buffer.byteLength;
6268
+ var dataRGBA = new Uint8Array(4 * width * height);
6269
+ var offset = 0;
6270
+ var pos = 0;
6271
+ var ptrEnd = 4 * width;
6272
+ var scanLineBuffer = new Uint8Array(ptrEnd);
6273
+ var numScanLines = height;
6274
+ while(numScanLines > 0 && pos < byteLength){
6275
+ var a = buffer[pos++];
6276
+ var b = buffer[pos++];
6277
+ var c = buffer[pos++];
6278
+ var d = buffer[pos++];
6279
+ if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;
6280
+ if ((c << 8 | d) !== width) throw "HDRDecoder: wrong scanline width";
6281
+ var ptr = 0;
6282
+ while(ptr < ptrEnd && pos < byteLength){
6283
+ var count = buffer[pos++];
6284
+ var isEncodedRun = count > 128;
6285
+ if (isEncodedRun) count -= 128;
6286
+ if (count === 0 || ptr + count > ptrEnd) throw "HDRDecoder: bad scanline data";
6287
+ if (isEncodedRun) {
6288
+ var byteValue = buffer[pos++];
6289
+ for(var i = 0; i < count; i++)scanLineBuffer[ptr++] = byteValue;
6290
+ } else {
6291
+ scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);
6292
+ ptr += count;
6293
+ pos += count;
6294
+ }
6295
+ }
6296
+ for(var i1 = 0; i1 < width; i1++, offset += 4){
6297
+ dataRGBA[offset] = scanLineBuffer[i1];
6298
+ dataRGBA[offset + 1] = scanLineBuffer[i1 + width];
6299
+ dataRGBA[offset + 2] = scanLineBuffer[i1 + width * 2];
6300
+ dataRGBA[offset + 3] = scanLineBuffer[i1 + width * 3];
6301
+ }
6302
+ numScanLines--;
6303
+ }
6304
+ return dataRGBA;
6305
+ };
6306
+ return HDRDecoder;
6307
+ }();
6308
+ // Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)
6309
+ HDRDecoder._float2HalfTables = HDRDecoder._generateFloat2HalfTables();
6310
+ HDRDecoder._floatView = new Float32Array(1);
6311
+ HDRDecoder._uint32View = new Uint32Array(HDRDecoder._floatView.buffer);
6312
+ HDRDecoder._one = 0x3c00 // Half float for 1.0
6313
+ ;
6314
+ // prettier-ignore
6315
+ HDRDecoder._faces = [
6316
+ /* +X */ [
6317
+ 1,
6318
+ -1,
6319
+ -1,
6320
+ 1,
6321
+ -1,
6322
+ 1,
6323
+ 1,
6324
+ 1,
6325
+ -1,
6326
+ 1,
6327
+ 1,
6328
+ 1
6329
+ ],
6330
+ /* -X */ [
6331
+ -1,
6332
+ -1,
6333
+ 1,
6334
+ -1,
6335
+ -1,
6336
+ -1,
6337
+ -1,
6338
+ 1,
6339
+ 1,
6340
+ -1,
6341
+ 1,
6342
+ -1
6343
+ ],
6344
+ /* +Y */ [
6345
+ -1,
6346
+ -1,
6347
+ 1,
6348
+ 1,
6349
+ -1,
6350
+ 1,
6351
+ -1,
6352
+ -1,
6353
+ -1,
6354
+ 1,
6355
+ -1,
6356
+ -1
6357
+ ],
6358
+ /* -Y */ [
6359
+ -1,
6360
+ 1,
6361
+ -1,
6362
+ 1,
6363
+ 1,
6364
+ -1,
6365
+ -1,
6366
+ 1,
6367
+ 1,
6368
+ 1,
6369
+ 1,
6370
+ 1
6371
+ ],
6372
+ /* +Z */ [
6373
+ -1,
6374
+ -1,
6375
+ -1,
6376
+ 1,
6377
+ -1,
6378
+ -1,
6379
+ -1,
6380
+ 1,
6381
+ -1,
6382
+ 1,
6383
+ 1,
6384
+ -1
6385
+ ],
6386
+ /* -Z */ [
6387
+ 1,
6388
+ -1,
6389
+ 1,
6390
+ -1,
6391
+ -1,
6392
+ 1,
6393
+ 1,
6394
+ 1,
6395
+ 1,
6396
+ -1,
6397
+ 1,
6398
+ 1
6399
+ ]
6400
+ ];
6401
+
6490
6402
  var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6491
6403
  _inherits(TextureCubeLoader, Loader);
6492
6404
  function TextureCubeLoader() {
@@ -6494,6 +6406,44 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6494
6406
  }
6495
6407
  var _proto = TextureCubeLoader.prototype;
6496
6408
  _proto.load = function load(item, resourceManager) {
6409
+ if (item.urls) {
6410
+ return this._loadCubeFaces(item, resourceManager);
6411
+ } else {
6412
+ return this._loadHDR(item, resourceManager);
6413
+ }
6414
+ };
6415
+ _proto._loadHDR = function _loadHDR(item, resourceManager) {
6416
+ return new AssetPromise(function(resolve, reject) {
6417
+ var engine = resourceManager.engine;
6418
+ var url = item.url;
6419
+ var requestConfig = _extends({}, item, {
6420
+ type: "arraybuffer"
6421
+ });
6422
+ resourceManager// @ts-ignore
6423
+ ._request(url, requestConfig).then(function(buffer) {
6424
+ if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {
6425
+ reject(new Error("TextureCubeLoader: HDR texture requires half float support."));
6426
+ return;
6427
+ }
6428
+ var _item_params;
6429
+ var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode;
6430
+ var bufferArray = new Uint8Array(buffer);
6431
+ var header = HDRDecoder.parseHeader(bufferArray);
6432
+ var texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);
6433
+ HDRDecoder.decodeFaces(bufferArray, header, function(faceIndex, data) {
6434
+ texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6435
+ });
6436
+ texture.generateMipmaps();
6437
+ texture.anisoLevel = anisoLevel != null ? anisoLevel : texture.anisoLevel;
6438
+ texture.filterMode = filterMode != null ? filterMode : texture.filterMode;
6439
+ texture.wrapModeU = wrapModeU != null ? wrapModeU : texture.wrapModeU;
6440
+ texture.wrapModeV = wrapModeV != null ? wrapModeV : texture.wrapModeV;
6441
+ resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));
6442
+ resolve(texture);
6443
+ }).catch(reject);
6444
+ });
6445
+ };
6446
+ _proto._loadCubeFaces = function _loadCubeFaces(item, resourceManager) {
6497
6447
  return new AssetPromise(function(resolve, reject) {
6498
6448
  var urls = item.urls;
6499
6449
  var requestConfig = _extends({}, item, {
@@ -6507,7 +6457,7 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6507
6457
  var _ref = (_item_params = item.params) != null ? _item_params : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? TextureFormat.R8G8B8A8 : _ref_format, anisoLevel = _ref.anisoLevel, wrapModeU = _ref.wrapModeU, wrapModeV = _ref.wrapModeV, filterMode = _ref.filterMode, _ref_isSRGBColorSpace = _ref.isSRGBColorSpace, isSRGBColorSpace = _ref_isSRGBColorSpace === void 0 ? true : _ref_isSRGBColorSpace, _ref_mipmap = _ref.mipmap, mipmap = _ref_mipmap === void 0 ? true : _ref_mipmap;
6508
6458
  var _images_ = images[0], width = _images_.width, height = _images_.height;
6509
6459
  if (width !== height) {
6510
- console.error("The cube texture must have the same width and height");
6460
+ reject(new Error("The cube texture must have the same width and height"));
6511
6461
  return;
6512
6462
  }
6513
6463
  var engine = resourceManager.engine;
@@ -6520,21 +6470,70 @@ var TextureCubeLoader = /*#__PURE__*/ function(Loader) {
6520
6470
  for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6521
6471
  texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6522
6472
  }
6523
- generateMipmap && texture.generateMipmaps();
6524
- resourceManager.addContentRestorer(new TextureCubeContentRestorer(texture, urls, requestConfig));
6473
+ texture.generateMipmaps();
6474
+ resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));
6525
6475
  resolve(texture);
6526
- }).catch(function(e) {
6527
- reject(e);
6528
- });
6476
+ }).catch(reject);
6529
6477
  });
6530
6478
  };
6531
6479
  return TextureCubeLoader;
6532
6480
  }(Loader);
6533
6481
  TextureCubeLoader = __decorate([
6534
6482
  resourceLoader(AssetType.TextureCube, [
6535
- ""
6483
+ "texCube",
6484
+ "hdr"
6536
6485
  ])
6537
6486
  ], TextureCubeLoader);
6487
+ var HDRContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6488
+ _inherits(HDRContentRestorer, ContentRestorer);
6489
+ function HDRContentRestorer(resource, url, requestConfig) {
6490
+ var _this;
6491
+ _this = ContentRestorer.call(this, resource) || this, _this.url = url, _this.requestConfig = requestConfig;
6492
+ return _this;
6493
+ }
6494
+ var _proto = HDRContentRestorer.prototype;
6495
+ _proto.restoreContent = function restoreContent() {
6496
+ var _this = this;
6497
+ return new AssetPromise(function(resolve, reject) {
6498
+ var resource = _this.resource;
6499
+ resource.engine.resourceManager// @ts-ignore
6500
+ ._request(_this.url, _this.requestConfig).then(function(buffer) {
6501
+ var bufferArray = new Uint8Array(buffer);
6502
+ HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), function(faceIndex, data) {
6503
+ resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);
6504
+ });
6505
+ resource.generateMipmaps();
6506
+ resolve(resource);
6507
+ }).catch(reject);
6508
+ });
6509
+ };
6510
+ return HDRContentRestorer;
6511
+ }(ContentRestorer);
6512
+ var CubeFaceContentRestorer = /*#__PURE__*/ function(ContentRestorer) {
6513
+ _inherits(CubeFaceContentRestorer, ContentRestorer);
6514
+ function CubeFaceContentRestorer(resource, urls, requestConfig) {
6515
+ var _this;
6516
+ _this = ContentRestorer.call(this, resource) || this, _this.urls = urls, _this.requestConfig = requestConfig;
6517
+ return _this;
6518
+ }
6519
+ var _proto = CubeFaceContentRestorer.prototype;
6520
+ _proto.restoreContent = function restoreContent() {
6521
+ var _this = this;
6522
+ return new AssetPromise(function(resolve, reject) {
6523
+ Promise.all(_this.urls.map(function(url) {
6524
+ return request(url, _this.requestConfig);
6525
+ })).then(function(images) {
6526
+ var resource = _this.resource;
6527
+ for(var faceIndex = 0; faceIndex < 6; faceIndex++){
6528
+ resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);
6529
+ }
6530
+ resource.generateMipmaps();
6531
+ resolve(resource);
6532
+ }).catch(reject);
6533
+ });
6534
+ };
6535
+ return CubeFaceContentRestorer;
6536
+ }(ContentRestorer);
6538
6537
 
6539
6538
  var AudioLoader = /*#__PURE__*/ function(Loader) {
6540
6539
  _inherits(AudioLoader, Loader);
@@ -6684,7 +6683,7 @@ var PhysicsMaterialLoader = /*#__PURE__*/ function(Loader) {
6684
6683
  }(Loader);
6685
6684
  PhysicsMaterialLoader = __decorate([
6686
6685
  resourceLoader(AssetType.PhysicsMaterial, [
6687
- "mesh"
6686
+ "physMat"
6688
6687
  ])
6689
6688
  ], PhysicsMaterialLoader);
6690
6689
 
@@ -6719,7 +6718,6 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
6719
6718
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
6720
6719
  scene.ambientLight.diffuseMode = ambient.diffuseMode;
6721
6720
  scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
6722
- scene.ambientLight.specularTextureDecodeRGBM = true;
6723
6721
  if (useCustomAmbient && ambient.customAmbientLight) {
6724
6722
  promises.push(// @ts-ignore
6725
6723
  resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
@@ -7356,5 +7354,5 @@ EXT_texture_webp = __decorate([
7356
7354
  registerGLTFExtension("EXT_texture_webp", GLTFExtensionMode.CreateAndParse)
7357
7355
  ], EXT_texture_webp);
7358
7356
 
7359
- export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader, EditorTextureLoader, FileHeader, GLTFAnimationParser, GLTFAnimatorControllerParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
7357
+ export { AccessorType, AnimationClipDecoder, BufferInfo, BufferReader, FileHeader, GLTFAnimationParser, GLTFAnimatorControllerParser, GLTFBufferParser, GLTFBufferViewParser, GLTFEntityParser, GLTFExtensionMode, GLTFExtensionParser, GLTFLoader, GLTFMaterialParser, GLTFMeshParser, GLTFParser, GLTFParserContext, GLTFParserType, GLTFResource, GLTFSceneParser, GLTFSchemaParser, GLTFSkinParser, GLTFTextureParser, GLTFUtils, GLTFValidator, HierarchyParser, InterpolableValueType, KTX2Loader, KTX2TargetFormat, MaterialLoaderType, MeshDecoder, ParserContext, ParserType, PrefabResource, ReflectionParser, SceneParser, SpecularMode, Texture2DDecoder, decode, decoder, decoderMap, parseSingleKTX, registerGLTFExtension, registerGLTFParser };
7360
7358
  //# sourceMappingURL=module.js.map