UNPKG

@babylonjs/loaders

Version:

The Babylon.js file loaders library is an extension you can use to load different 3D file types into a Babylon scene.

68 lines 3.78 kB
import { Color3 } from "@babylonjs/core/Maths/math"; import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial"; import { GLTFLoader } from "../glTFLoader"; var NAME = "KHR_materials_pbrSpecularGlossiness"; /** * [Specification](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness) */ var KHR_materials_pbrSpecularGlossiness = /** @class */ (function () { /** @hidden */ function KHR_materials_pbrSpecularGlossiness(loader) { /** The name of this extension. */ this.name = NAME; /** Defines whether this extension is enabled. */ this.enabled = true; this._loader = loader; } /** @hidden */ KHR_materials_pbrSpecularGlossiness.prototype.dispose = function () { delete this._loader; }; /** @hidden */ KHR_materials_pbrSpecularGlossiness.prototype.loadMaterialPropertiesAsync = function (context, material, babylonMaterial) { var _this = this; return GLTFLoader.LoadExtensionAsync(context, material, this.name, function (extensionContext, extension) { var promises = new Array(); promises.push(_this._loader.loadMaterialBasePropertiesAsync(context, material, babylonMaterial)); promises.push(_this._loadSpecularGlossinessPropertiesAsync(extensionContext, material, extension, babylonMaterial)); _this._loader.loadMaterialAlphaProperties(context, material, babylonMaterial); return Promise.all(promises).then(function () { }); }); }; KHR_materials_pbrSpecularGlossiness.prototype._loadSpecularGlossinessPropertiesAsync = function (context, material, properties, babylonMaterial) { if (!(babylonMaterial instanceof PBRMaterial)) { throw new Error(context + ": Material type not supported"); } var promises = new Array(); babylonMaterial.metallic = null; babylonMaterial.roughness = null; if (properties.diffuseFactor) { babylonMaterial.albedoColor = Color3.FromArray(properties.diffuseFactor); babylonMaterial.alpha = properties.diffuseFactor[3]; } else { babylonMaterial.albedoColor = Color3.White(); } babylonMaterial.reflectivityColor = properties.specularFactor ? Color3.FromArray(properties.specularFactor) : Color3.White(); babylonMaterial.microSurface = properties.glossinessFactor == undefined ? 1 : properties.glossinessFactor; if (properties.diffuseTexture) { promises.push(this._loader.loadTextureInfoAsync(context + "/diffuseTexture", properties.diffuseTexture, function (texture) { texture.name = babylonMaterial.name + " (Diffuse)"; babylonMaterial.albedoTexture = texture; })); } if (properties.specularGlossinessTexture) { promises.push(this._loader.loadTextureInfoAsync(context + "/specularGlossinessTexture", properties.specularGlossinessTexture, function (texture) { texture.name = babylonMaterial.name + " (Specular Glossiness)"; babylonMaterial.reflectivityTexture = texture; })); babylonMaterial.reflectivityTexture.hasAlpha = true; babylonMaterial.useMicroSurfaceFromReflectivityMapAlpha = true; } return Promise.all(promises).then(function () { }); }; return KHR_materials_pbrSpecularGlossiness; }()); export { KHR_materials_pbrSpecularGlossiness }; GLTFLoader.RegisterExtension(NAME, function (loader) { return new KHR_materials_pbrSpecularGlossiness(loader); }); //# sourceMappingURL=KHR_materials_pbrSpecularGlossiness.js.map