@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
JavaScript
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