MSFT_sRGBFactors.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
  2. import { GLTFLoader } from "../glTFLoader.js";
  3. const NAME = "MSFT_sRGBFactors";
  4. /** @internal */
  5. // eslint-disable-next-line @typescript-eslint/naming-convention
  6. export class MSFT_sRGBFactors {
  7. /** @internal */
  8. constructor(loader) {
  9. /** @internal */
  10. this.name = NAME;
  11. this._loader = loader;
  12. this.enabled = this._loader.isExtensionUsed(NAME);
  13. }
  14. /** @internal */
  15. dispose() {
  16. this._loader = null;
  17. }
  18. /** @internal */
  19. loadMaterialPropertiesAsync(context, material, babylonMaterial) {
  20. return GLTFLoader.LoadExtraAsync(context, material, this.name, (extraContext, extra) => {
  21. if (extra) {
  22. if (!(babylonMaterial instanceof PBRMaterial)) {
  23. throw new Error(`${extraContext}: Material type not supported`);
  24. }
  25. const promise = this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial);
  26. const useExactSrgbConversions = babylonMaterial.getScene().getEngine().useExactSrgbConversions;
  27. if (!babylonMaterial.albedoTexture) {
  28. babylonMaterial.albedoColor.toLinearSpaceToRef(babylonMaterial.albedoColor, useExactSrgbConversions);
  29. }
  30. if (!babylonMaterial.reflectivityTexture) {
  31. babylonMaterial.reflectivityColor.toLinearSpaceToRef(babylonMaterial.reflectivityColor, useExactSrgbConversions);
  32. }
  33. return promise;
  34. }
  35. return null;
  36. });
  37. }
  38. }
  39. GLTFLoader.RegisterExtension(NAME, (loader) => new MSFT_sRGBFactors(loader));
  40. //# sourceMappingURL=MSFT_sRGBFactors.js.map