@galacean/engine-loader 1.0.0-beta.1 → 1.0.0-beta.11

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 (27) hide show
  1. package/dist/main.js +156 -96
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +156 -96
  4. package/dist/module.js +158 -98
  5. package/dist/module.js.map +1 -1
  6. package/package.json +5 -5
  7. package/types/GLTFContentRestorer.d.ts +1 -1
  8. package/types/gltf/GLTFResource.d.ts +2 -3
  9. package/types/gltf/GLTFUtil.d.ts +4 -4
  10. package/types/gltf/GLTFUtils.d.ts +1 -1
  11. package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
  12. package/types/gltf/extensions/KHR_materials_ior.d.ts +1 -0
  13. package/types/gltf/extensions/index.d.ts +1 -0
  14. package/types/gltf/parser/GLTFMeshParser.d.ts +1 -1
  15. package/types/gltf/parser/GLTFParser.d.ts +1 -1
  16. package/types/gltf/parser/GLTFParserContext.d.ts +1 -1
  17. package/types/resource-deserialize/index.d.ts +3 -3
  18. package/types/resource-deserialize/resources/mesh/MeshDecoder.d.ts +1 -1
  19. package/types/resource-deserialize/resources/parser/PrefabParser.d.ts +5 -0
  20. package/types/resource-deserialize/resources/parser/ReflectionParser.d.ts +14 -0
  21. package/types/resource-deserialize/resources/prefab/PrefabDesign.d.ts +4 -4
  22. package/types/resource-deserialize/resources/scene/SceneParser.d.ts +1 -1
  23. package/types/resource-deserialize/resources/scene/SceneParserContext.d.ts +1 -1
  24. package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +61 -0
  25. package/types/resource-deserialize/resources/schema/MaterialSchema.d.ts +91 -0
  26. package/types/resource-deserialize/resources/schema/SceneSchema.d.ts +41 -0
  27. package/types/resource-deserialize/resources/schema/index.d.ts +3 -0
@@ -1628,6 +1628,10 @@ var GLTFEntityParser = /*#__PURE__*/ function(GLTFParser) {
1628
1628
  }
1629
1629
  glTFResource.sceneRoots = sceneRoots;
1630
1630
  glTFResource.defaultSceneRoot = sceneRoots[sceneID];
1631
+ // @ts-ignore
1632
+ glTFResource.defaultSceneRoot._hookResource = glTFResource;
1633
+ // @ts-ignore
1634
+ glTFResource._addReferCount(1);
1631
1635
  };
1632
1636
  return GLTFEntityParser;
1633
1637
  }(GLTFParser);
@@ -1824,21 +1828,31 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1824
1828
  var vertexCount;
1825
1829
  var bufferBindIndex = 0;
1826
1830
  var positions;
1827
- keepMeshData && (positions = new Array(vertexCount));
1831
+ var boneIndices;
1832
+ var boneWeights;
1833
+ if (keepMeshData) {
1834
+ positions = new Array(vertexCount);
1835
+ boneIndices = new Array(vertexCount);
1836
+ boneWeights = new Array(vertexCount);
1837
+ }
1828
1838
  for(var attribute in attributes){
1829
1839
  var accessor = accessors[attributes[attribute]];
1830
1840
  var accessorBuffer = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor);
1831
1841
  var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
1832
- var attributeCount = accessor.count;
1842
+ var accessorCount = accessor.count;
1833
1843
  var vertices = accessorBuffer.data;
1834
1844
  var vertexElement = void 0;
1835
1845
  var meshId = mesh.instanceId;
1836
1846
  var vertexBindingInfos = accessorBuffer.vertexBindingInfos;
1837
- var elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, accessor.normalized);
1847
+ var elementNormalized = accessor.normalized;
1848
+ var elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);
1849
+ var scaleFactor = void 0;
1850
+ elementNormalized && (scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType));
1851
+ var elementOffset = void 0;
1838
1852
  if (accessorBuffer.interleaved) {
1839
1853
  var byteOffset = accessor.byteOffset || 0;
1840
1854
  var stride = accessorBuffer.stride;
1841
- var elementOffset = byteOffset % stride;
1855
+ elementOffset = byteOffset % stride;
1842
1856
  if (vertexBindingInfos[meshId] === undefined) {
1843
1857
  vertexElement = new miniprogram.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
1844
1858
  var vertexBuffer = accessorBuffer.vertexBuffer;
@@ -1854,7 +1868,8 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1854
1868
  vertexElement = new miniprogram.VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);
1855
1869
  }
1856
1870
  } else {
1857
- vertexElement = new miniprogram.VertexElement(attribute, 0, elementFormat, bufferBindIndex);
1871
+ elementOffset = 0;
1872
+ vertexElement = new miniprogram.VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);
1858
1873
  var vertexBuffer1 = new miniprogram.Buffer(engine, miniprogram.BufferBindFlag.VertexBuffer, vertices.byteLength, miniprogram.BufferUsage.Static);
1859
1874
  vertexBuffer1.setData(vertices);
1860
1875
  meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer1, accessorBuffer.restoreInfo));
@@ -1863,35 +1878,61 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1863
1878
  }
1864
1879
  vertexElements.push(vertexElement);
1865
1880
  if (attribute === "POSITION") {
1866
- vertexCount = attributeCount;
1881
+ vertexCount = accessorCount;
1867
1882
  var _mesh_bounds = mesh.bounds, min = _mesh_bounds.min, max = _mesh_bounds.max;
1868
1883
  if (accessor.min && accessor.max) {
1869
1884
  min.copyFromArray(accessor.min);
1870
1885
  max.copyFromArray(accessor.max);
1871
1886
  if (keepMeshData) {
1872
- var stride1 = vertices.length / attributeCount;
1873
- for(var j = 0; j < attributeCount; j++){
1874
- var offset = j * stride1;
1875
- positions[j] = new miniprogram$1.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
1887
+ var baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;
1888
+ var stride1 = vertices.length / accessorCount;
1889
+ for(var j = 0; j < accessorCount; j++){
1890
+ var offset = baseOffset + j * stride1;
1891
+ var position = new miniprogram$1.Vector3(vertices[offset], vertices[offset + 1], vertices[offset + 2]);
1892
+ elementNormalized && position.scale(scaleFactor);
1893
+ positions[j] = position;
1876
1894
  }
1877
1895
  }
1878
1896
  } else {
1879
- var position = GLTFMeshParser._tempVector3;
1897
+ var position1 = GLTFMeshParser._tempVector3;
1880
1898
  min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
1881
1899
  max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
1882
- var stride2 = vertices.length / attributeCount;
1883
- for(var j1 = 0; j1 < attributeCount; j1++){
1884
- var offset1 = j1 * stride2;
1885
- position.copyFromArray(vertices, offset1);
1886
- miniprogram$1.Vector3.min(min, position, min);
1887
- miniprogram$1.Vector3.max(max, position, max);
1900
+ var baseOffset1 = elementOffset / vertices.BYTES_PER_ELEMENT;
1901
+ var stride2 = vertices.length / accessorCount;
1902
+ for(var j1 = 0; j1 < accessorCount; j1++){
1903
+ var offset1 = baseOffset1 + j1 * stride2;
1904
+ position1.copyFromArray(vertices, offset1);
1905
+ miniprogram$1.Vector3.min(min, position1, min);
1906
+ miniprogram$1.Vector3.max(max, position1, max);
1907
+ if (keepMeshData) {
1908
+ var clonePosition = position1.clone();
1909
+ elementNormalized && clonePosition.scale(scaleFactor);
1910
+ positions[j1] = clonePosition;
1911
+ }
1888
1912
  }
1889
1913
  }
1890
- if (accessor.normalized) {
1891
- var scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType);
1914
+ if (elementNormalized) {
1892
1915
  min.scale(scaleFactor);
1893
1916
  max.scale(scaleFactor);
1894
1917
  }
1918
+ } else if (attribute === "JOINTS_0" && keepMeshData) {
1919
+ var baseOffset2 = elementOffset / vertices.BYTES_PER_ELEMENT;
1920
+ var stride3 = vertices.length / accessorCount;
1921
+ for(var j2 = 0; j2 < accessorCount; j2++){
1922
+ var offset2 = baseOffset2 + j2 * stride3;
1923
+ var boneIndex = new miniprogram$1.Vector4(vertices[offset2], vertices[offset2 + 1], vertices[offset2 + 2], vertices[offset2 + 3]);
1924
+ elementNormalized && boneIndex.scale(scaleFactor);
1925
+ boneIndices[j2] = boneIndex;
1926
+ }
1927
+ } else if (attribute === "WEIGHTS_0" && keepMeshData) {
1928
+ var baseOffset3 = elementOffset / vertices.BYTES_PER_ELEMENT;
1929
+ var stride4 = vertices.length / accessorCount;
1930
+ for(var j3 = 0; j3 < accessorCount; j3++){
1931
+ var offset3 = baseOffset3 + j3 * stride4;
1932
+ var boneWeight = new miniprogram$1.Vector4(vertices[offset3], vertices[offset3 + 1], vertices[offset3 + 2], vertices[offset3 + 3]);
1933
+ elementNormalized && boneWeight.scale(scaleFactor);
1934
+ boneWeights[j3] = boneWeight;
1935
+ }
1895
1936
  }
1896
1937
  }
1897
1938
  mesh.setVertexElements(vertexElements);
@@ -1910,6 +1951,10 @@ var GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1) {
1910
1951
  mesh.uploadData(!keepMeshData);
1911
1952
  //@ts-ignore
1912
1953
  mesh._positions = positions;
1954
+ //@ts-ignore
1955
+ mesh._boneIndices = boneIndices;
1956
+ //@ts-ignore
1957
+ mesh._boneWeights = boneWeights;
1913
1958
  return Promise.resolve(mesh);
1914
1959
  };
1915
1960
  /**
@@ -2000,14 +2045,7 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
2000
2045
  camera.enabled = false;
2001
2046
  };
2002
2047
  _proto._createRenderer = function _createRenderer(context, glTFNode, entity) {
2003
- var glTFResource = context.glTFResource, glTF = context.glTF;
2004
- var glTFMeshes = glTF.meshes;
2005
- var engine = glTFResource.engine, meshes = glTFResource.meshes, materials = glTFResource.materials, skins = glTFResource.skins;
2006
- var meshID = glTFNode.mesh, skinID = glTFNode.skin;
2007
- var glTFMesh = glTFMeshes[meshID];
2008
- var glTFMeshPrimitives = glTFMesh.primitives;
2009
- var blendShapeWeights = glTFNode.weights || glTFMesh.weights;
2010
- for(var i = 0; i < glTFMeshPrimitives.length; i++){
2048
+ var _loop = function(i) {
2011
2049
  var gltfPrimitive = glTFMeshPrimitives[i];
2012
2050
  var mesh = meshes[meshID][i];
2013
2051
  var renderer = void 0;
@@ -2029,8 +2067,22 @@ var GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
2029
2067
  var materialIndex = gltfPrimitive.material;
2030
2068
  var material = (materials == null ? void 0 : materials[materialIndex]) || GLTFSceneParser._getDefaultMaterial(engine);
2031
2069
  renderer.setMaterial(material);
2070
+ // Enable vertex color if mesh has COLOR_0 vertex element
2071
+ mesh.vertexElements.forEach(function(element) {
2072
+ if (element.semantic === "COLOR_0") {
2073
+ renderer.enableVertexColor = true;
2074
+ }
2075
+ });
2032
2076
  GLTFParser.executeExtensionsAdditiveAndParse(gltfPrimitive.extensions, context, renderer, gltfPrimitive);
2033
- }
2077
+ };
2078
+ var glTFResource = context.glTFResource, glTF = context.glTF;
2079
+ var glTFMeshes = glTF.meshes;
2080
+ var engine = glTFResource.engine, meshes = glTFResource.meshes, materials = glTFResource.materials, skins = glTFResource.skins;
2081
+ var meshID = glTFNode.mesh, skinID = glTFNode.skin;
2082
+ var glTFMesh = glTFMeshes[meshID];
2083
+ var glTFMeshPrimitives = glTFMesh.primitives;
2084
+ var blendShapeWeights = glTFNode.weights || glTFMesh.weights;
2085
+ for(var i = 0; i < glTFMeshPrimitives.length; i++)_loop(i);
2034
2086
  };
2035
2087
  _proto._createAnimator = function _createAnimator(context) {
2036
2088
  if (!context.hasSkinned && !context.glTFResource.animations) {
@@ -2319,31 +2371,16 @@ var GLTFValidator = /*#__PURE__*/ function(GLTFParser1) {
2319
2371
 
2320
2372
  /**
2321
2373
  * Product after glTF parser, usually, `defaultSceneRoot` is only needed to use.
2322
- */ var GLTFResource = /*#__PURE__*/ function(EngineObject) {
2323
- _inherits(GLTFResource, EngineObject);
2374
+ */ var GLTFResource = /*#__PURE__*/ function(ReferResource) {
2375
+ _inherits(GLTFResource, ReferResource);
2324
2376
  function GLTFResource(engine, url) {
2325
2377
  var _this;
2326
- _this = EngineObject.call(this, engine) || this;
2378
+ _this = ReferResource.call(this, engine) || this;
2327
2379
  _this.url = url;
2328
2380
  return _this;
2329
2381
  }
2330
- var _proto = GLTFResource.prototype;
2331
- _proto._onDestroy = function _onDestroy() {
2332
- EngineObject.prototype._onDestroy.call(this);
2333
- this.defaultSceneRoot.destroy();
2334
- this.textures = null;
2335
- this.materials = null;
2336
- this.meshes = null;
2337
- this.skins = null;
2338
- this.animations = null;
2339
- this.entities = null;
2340
- this.cameras = null;
2341
- this.lights = null;
2342
- this.sceneRoots = null;
2343
- this.extensionsData = null;
2344
- };
2345
2382
  return GLTFResource;
2346
- }(miniprogram.EngineObject);
2383
+ }(miniprogram.ReferResource);
2347
2384
 
2348
2385
  var GLTFLoader = /*#__PURE__*/ function(Loader) {
2349
2386
  _inherits(GLTFLoader, Loader);
@@ -2976,6 +3013,15 @@ KTXLoader = __decorate([
2976
3013
  ])
2977
3014
  ], KTXLoader);
2978
3015
 
3016
+ function parseProperty(object, key, value) {
3017
+ if (typeof value === "object") {
3018
+ for(var subKey in value){
3019
+ parseProperty(object[key], subKey, value[subKey]);
3020
+ }
3021
+ } else {
3022
+ object[key] = value;
3023
+ }
3024
+ }
2979
3025
  var MaterialLoader = /*#__PURE__*/ function(Loader) {
2980
3026
  _inherits(MaterialLoader, Loader);
2981
3027
  function MaterialLoader() {
@@ -2987,7 +3033,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
2987
3033
  return new miniprogram.AssetPromise(function(resolve, reject) {
2988
3034
  _this.request(item.url, _extends({}, item, {
2989
3035
  type: "json"
2990
- })).then(function(json) {
3036
+ })).then(function(materialSchema) {
2991
3037
  var _loop = function(key) {
2992
3038
  var _shaderData_key = shaderData[key], type = _shaderData_key.type, value = _shaderData_key.value;
2993
3039
  switch(type){
@@ -3015,27 +3061,8 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
3015
3061
  }
3016
3062
  };
3017
3063
  var engine = resourceManager.engine;
3018
- var name = json.name, shader = json.shader, shaderData = json.shaderData, macros = json.macros, renderState = json.renderState;
3019
- var material;
3020
- switch(shader){
3021
- case "pbr":
3022
- material = new miniprogram.PBRMaterial(engine);
3023
- break;
3024
- case "pbr-specular":
3025
- material = new miniprogram.PBRSpecularMaterial(engine);
3026
- break;
3027
- case "unlit":
3028
- material = new miniprogram.UnlitMaterial(engine);
3029
- break;
3030
- case "blinn-phong":
3031
- material = new miniprogram.BlinnPhongMaterial(engine);
3032
- break;
3033
- case "bake-pbr":
3034
- // @todo refactor custom shader later
3035
- // @ts-ignore
3036
- material = new miniprogram.PBRBaseMaterial(engine, miniprogram.Shader.find("bake-pbr"));
3037
- break;
3038
- }
3064
+ var name = materialSchema.name, shader = materialSchema.shader, shaderData = materialSchema.shaderData, macros = materialSchema.macros, renderState = materialSchema.renderState;
3065
+ var material = new miniprogram.Material(engine, miniprogram.Shader.find(shader));
3039
3066
  material.name = name;
3040
3067
  var texturePromises = new Array();
3041
3068
  var materialShaderData = material.shaderData;
@@ -3048,9 +3075,7 @@ var MaterialLoader = /*#__PURE__*/ function(Loader) {
3048
3075
  materialShaderData.enableMacro(name1, value);
3049
3076
  }
3050
3077
  }
3051
- for(var key1 in renderState){
3052
- material[key1] = renderState[key1];
3053
- }
3078
+ parseProperty(material, "renderState", renderState);
3054
3079
  return Promise.all(texturePromises).then(function() {
3055
3080
  resolve(material);
3056
3081
  });
@@ -3805,6 +3830,12 @@ exports.AnimationClipDecoder = __decorate([
3805
3830
  decoder("AnimationClip")
3806
3831
  ], exports.AnimationClipDecoder);
3807
3832
 
3833
+ exports.SpecularMode = void 0;
3834
+ (function(SpecularMode) {
3835
+ SpecularMode["Sky"] = "Sky";
3836
+ SpecularMode["Custom"] = "Custom";
3837
+ })(exports.SpecularMode || (exports.SpecularMode = {}));
3838
+
3808
3839
  var SceneParserContext = /*#__PURE__*/ function() {
3809
3840
  function SceneParserContext(originalData, scene) {
3810
3841
  this.originalData = originalData;
@@ -4087,7 +4118,7 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader) {
4087
4118
  var atlasItem = atlasItems[i];
4088
4119
  if (atlasItem.img) {
4089
4120
  chainPromises.push(resourceManager.load({
4090
- url: atlasItem.img,
4121
+ url: miniprogram.Utils.resolveAbsoluteUrl(item.url, atlasItem.img),
4091
4122
  type: miniprogram.AssetType.Texture2D,
4092
4123
  params: {
4093
4124
  format: format,
@@ -4363,47 +4394,63 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
4363
4394
  // @ts-ignore
4364
4395
  engine.resourceManager.initVirtualResources(data.files);
4365
4396
  return SceneParser.parse(engine, data).then(function(scene) {
4397
+ var promises = [];
4366
4398
  // parse ambient light
4367
4399
  var ambient = data.scene.ambient;
4368
- var ambientLightPromise = Promise.resolve();
4369
- if (ambient.ambientLight) {
4370
- ambientLightPromise = resourceManager// @ts-ignore
4371
- .getResourceByRef(data.scene.ambient.ambientLight).then(function(light) {
4372
- scene.ambientLight = light;
4400
+ var useCustomAmbient = ambient.specularMode === "Custom";
4401
+ if (useCustomAmbient && ambient.customAmbientLight) {
4402
+ // @ts-ignore
4403
+ // prettier-ignore
4404
+ var customAmbientPromise = resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
4405
+ scene.ambientLight = ambientLight;
4373
4406
  scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
4374
4407
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
4408
+ scene.ambientLight.diffuseMode = ambient.diffuseMode;
4409
+ scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
4375
4410
  });
4376
- } else {
4377
- scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
4378
- scene.ambientLight.specularIntensity = ambient.specularIntensity;
4379
- scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
4411
+ promises.push(customAmbientPromise);
4412
+ } else if (!useCustomAmbient && ambient.ambientLight) {
4413
+ // @ts-ignore
4414
+ // prettier-ignore
4415
+ var ambientLightPromise = resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
4416
+ scene.ambientLight = ambientLight;
4417
+ scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
4418
+ scene.ambientLight.specularIntensity = ambient.specularIntensity;
4419
+ scene.ambientLight.diffuseMode = ambient.diffuseMode;
4420
+ scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
4421
+ });
4422
+ promises.push(ambientLightPromise);
4380
4423
  }
4381
4424
  var background = data.scene.background;
4382
4425
  scene.background.mode = background.mode;
4383
- var backgroundPromise = Promise.resolve();
4384
4426
  switch(scene.background.mode){
4385
4427
  case miniprogram.BackgroundMode.SolidColor:
4386
4428
  scene.background.solidColor.copyFrom(background.color);
4387
4429
  break;
4388
4430
  case miniprogram.BackgroundMode.Sky:
4389
- if (background.sky) {
4431
+ if (background.skyMesh && background.skyMaterial) {
4390
4432
  // @ts-ignore
4391
- backgroundPromise = resourceManager.getResourceByRef(background.sky).then(function(light) {
4392
- var sky = scene.background.sky;
4393
- var skyMaterial = new miniprogram.SkyBoxMaterial(engine);
4394
- skyMaterial.texture = light.specularTexture;
4395
- skyMaterial.textureDecodeRGBM = true;
4396
- sky.material = skyMaterial;
4397
- sky.mesh = miniprogram.PrimitiveMesh.createCuboid(engine, 1, 1, 1);
4433
+ var skyMeshPromise = resourceManager.getResourceByRef(background.skyMesh).then(function(mesh) {
4434
+ scene.background.sky.mesh = mesh;
4398
4435
  });
4436
+ // @ts-ignore
4437
+ // prettier-ignore
4438
+ var skyMaterialPromise = resourceManager.getResourceByRef(background.skyMaterial).then(function(material) {
4439
+ scene.background.sky.material = material;
4440
+ });
4441
+ promises.push(skyMeshPromise, skyMaterialPromise);
4442
+ } else {
4443
+ miniprogram.Logger.warn("Sky background mode requires skyMesh and skyMaterial");
4399
4444
  }
4400
4445
  break;
4401
4446
  case miniprogram.BackgroundMode.Texture:
4402
4447
  if (background.texture) {
4403
4448
  // @ts-ignore
4404
- backgroundPromise = resourceManager.getResourceByRef(background.texture).then(function(texture) {
4449
+ // prettier-ignore
4450
+ var backgroundPromise = resourceManager.getResourceByRef(background.texture).then(function(texture) {
4405
4451
  scene.background.texture = texture;
4406
4452
  });
4453
+ promises.push(backgroundPromise);
4407
4454
  }
4408
4455
  break;
4409
4456
  }
@@ -4415,10 +4462,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader) {
4415
4462
  if (shadow.shadowDistance != undefined) scene.shadowDistance = shadow.shadowDistance;
4416
4463
  if (shadow.shadowCascades != undefined) scene.shadowCascades = shadow.shadowCascades;
4417
4464
  }
4418
- return Promise.all([
4419
- ambientLightPromise,
4420
- backgroundPromise
4421
- ]).then(function() {
4465
+ return Promise.all(promises).then(function() {
4422
4466
  resolve(scene);
4423
4467
  });
4424
4468
  });
@@ -4678,6 +4722,22 @@ KHR_materials_clearcoat = __decorate([
4678
4722
  registerGLTFExtension("KHR_materials_clearcoat", exports.GLTFExtensionMode.AdditiveParse)
4679
4723
  ], KHR_materials_clearcoat);
4680
4724
 
4725
+ var KHR_materials_ior = /*#__PURE__*/ function(GLTFExtensionParser) {
4726
+ _inherits(KHR_materials_ior, GLTFExtensionParser);
4727
+ function KHR_materials_ior() {
4728
+ return GLTFExtensionParser.apply(this, arguments);
4729
+ }
4730
+ var _proto = KHR_materials_ior.prototype;
4731
+ _proto.additiveParse = function additiveParse(context, material, schema) {
4732
+ var _schema_ior = schema.ior, ior = _schema_ior === void 0 ? 1.5 : _schema_ior;
4733
+ material.ior = ior;
4734
+ };
4735
+ return KHR_materials_ior;
4736
+ }(GLTFExtensionParser);
4737
+ KHR_materials_ior = __decorate([
4738
+ registerGLTFExtension("KHR_materials_ior", exports.GLTFExtensionMode.AdditiveParse)
4739
+ ], KHR_materials_ior);
4740
+
4681
4741
  var KHR_materials_pbrSpecularGlossiness = /*#__PURE__*/ function(GLTFExtensionParser) {
4682
4742
  _inherits(KHR_materials_pbrSpecularGlossiness, GLTFExtensionParser);
4683
4743
  function KHR_materials_pbrSpecularGlossiness() {