57f99df8384a061673b2bc3ecbe056782d0ae73ed10a4d16210732a2cf81d5a1.json 9.7 KB

1
  1. {"ast":null,"code":"import { PBRMaterial } from \"@babylonjs/core/Materials/PBR/pbrMaterial.js\";\nimport { GLTFLoader } from \"../glTFLoader.js\";\nconst NAME = \"KHR_materials_translucency\";\n/**\n * [Proposed Specification](https://github.com/KhronosGroup/glTF/pull/1825)\n * !!! Experimental Extension Subject to Changes !!!\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_translucency {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 174;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n loader.parent.transparencyAsCoverage = true;\n }\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader.loadMaterialBasePropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loadTranslucentPropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => {});\n });\n }\n _loadTranslucentPropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const pbrMaterial = babylonMaterial;\n // Enables \"translucency\" texture which represents diffusely-transmitted light.\n pbrMaterial.subSurface.isTranslucencyEnabled = true;\n // Since this extension models thin-surface transmission only, we must make the\n // internal IOR == 1.0 and set the thickness to 0.\n pbrMaterial.subSurface.volumeIndexOfRefraction = 1.0;\n pbrMaterial.subSurface.minimumThickness = 0.0;\n pbrMaterial.subSurface.maximumThickness = 0.0;\n // Albedo colour will tint transmission.\n pbrMaterial.subSurface.useAlbedoToTintTranslucency = true;\n if (extension.translucencyFactor !== undefined) {\n pbrMaterial.subSurface.translucencyIntensity = extension.translucencyFactor;\n } else {\n pbrMaterial.subSurface.translucencyIntensity = 0.0;\n pbrMaterial.subSurface.isTranslucencyEnabled = false;\n return Promise.resolve();\n }\n if (extension.translucencyTexture) {\n extension.translucencyTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/translucencyTexture`, extension.translucencyTexture).then(texture => {\n pbrMaterial.subSurface.translucencyIntensityTexture = texture;\n });\n } else {\n return Promise.resolve();\n }\n }\n}\nGLTFLoader.RegisterExtension(NAME, loader => new KHR_materials_translucency(loader));","map":{"version":3,"names":["PBRMaterial","GLTFLoader","NAME","KHR_materials_translucency","constructor","loader","name","order","_loader","enabled","isExtensionUsed","parent","transparencyAsCoverage","dispose","loadMaterialPropertiesAsync","context","material","babylonMaterial","LoadExtensionAsync","extensionContext","extension","promises","Array","push","loadMaterialBasePropertiesAsync","_loadTranslucentPropertiesAsync","Promise","all","then","Error","pbrMaterial","subSurface","isTranslucencyEnabled","volumeIndexOfRefraction","minimumThickness","maximumThickness","useAlbedoToTintTranslucency","translucencyFactor","undefined","translucencyIntensity","resolve","translucencyTexture","nonColorData","loadTextureInfoAsync","texture","translucencyIntensityTexture","RegisterExtension"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_translucency.js"],"sourcesContent":["import { PBRMaterial } from \"@babylonjs/core/Materials/PBR/pbrMaterial.js\";\nimport { GLTFLoader } from \"../glTFLoader.js\";\nconst NAME = \"KHR_materials_translucency\";\n/**\n * [Proposed Specification](https://github.com/KhronosGroup/glTF/pull/1825)\n * !!! Experimental Extension Subject to Changes !!!\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_translucency {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 174;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n loader.parent.transparencyAsCoverage = true;\n }\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader.loadMaterialBasePropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loadTranslucentPropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => { });\n });\n }\n _loadTranslucentPropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const pbrMaterial = babylonMaterial;\n // Enables \"translucency\" texture which represents diffusely-transmitted light.\n pbrMaterial.subSurface.isTranslucencyEnabled = true;\n // Since this extension models thin-surface transmission only, we must make the\n // internal IOR == 1.0 and set the thickness to 0.\n pbrMaterial.subSurface.volumeIndexOfRefraction = 1.0;\n pbrMaterial.subSurface.minimumThickness = 0.0;\n pbrMaterial.subSurface.maximumThickness = 0.0;\n // Albedo colour will tint transmission.\n pbrMaterial.subSurface.useAlbedoToTintTranslucency = true;\n if (extension.translucencyFactor !== undefined) {\n pbrMaterial.subSurface.translucencyIntensity = extension.translucencyFactor;\n }\n else {\n pbrMaterial.subSurface.translucencyIntensity = 0.0;\n pbrMaterial.subSurface.isTranslucencyEnabled = false;\n return Promise.resolve();\n }\n if (extension.translucencyTexture) {\n extension.translucencyTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/translucencyTexture`, extension.translucencyTexture).then((texture) => {\n pbrMaterial.subSurface.translucencyIntensityTexture = texture;\n });\n }\n else {\n return Promise.resolve();\n }\n }\n}\nGLTFLoader.RegisterExtension(NAME, (loader) => new KHR_materials_translucency(loader));\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}