c077e4218b2fd0fae5dd41ac4a022c0888ed65b42bd92da9d6684d72912e65f3.json 11 KB

1
  1. {"ast":null,"code":"import { PBRMaterial } from \"@babylonjs/core/Materials/PBR/pbrMaterial.js\";\nimport { GLTFLoader } from \"../glTFLoader.js\";\nconst NAME = \"KHR_materials_volume\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_volume/README.md)\n * @since 5.0.0\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_volume {\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 = 173;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n // We need to disable instance usage because the attenuation factor depends on the node scale of each individual mesh\n this._loader._disableInstancedMesh++;\n }\n }\n /** @internal */\n dispose() {\n if (this.enabled) {\n this._loader._disableInstancedMesh--;\n }\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._loadVolumePropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => {});\n });\n }\n _loadVolumePropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n // If transparency isn't enabled already, this extension shouldn't do anything.\n // i.e. it requires either the KHR_materials_transmission or KHR_materials_translucency extensions.\n if (!babylonMaterial.subSurface.isRefractionEnabled && !babylonMaterial.subSurface.isTranslucencyEnabled || !extension.thicknessFactor) {\n return Promise.resolve();\n }\n // IOR in this extension only affects interior.\n babylonMaterial.subSurface.volumeIndexOfRefraction = babylonMaterial.indexOfRefraction;\n const attenuationDistance = extension.attenuationDistance !== undefined ? extension.attenuationDistance : Number.MAX_VALUE;\n babylonMaterial.subSurface.tintColorAtDistance = attenuationDistance;\n if (extension.attenuationColor !== undefined && extension.attenuationColor.length == 3) {\n babylonMaterial.subSurface.tintColor.copyFromFloats(extension.attenuationColor[0], extension.attenuationColor[1], extension.attenuationColor[2]);\n }\n babylonMaterial.subSurface.minimumThickness = 0.0;\n babylonMaterial.subSurface.maximumThickness = extension.thicknessFactor;\n babylonMaterial.subSurface.useThicknessAsDepth = true;\n if (extension.thicknessTexture) {\n extension.thicknessTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/thicknessTexture`, extension.thicknessTexture).then(texture => {\n babylonMaterial.subSurface.thicknessTexture = texture;\n babylonMaterial.subSurface.useGltfStyleTextures = true;\n });\n } else {\n return Promise.resolve();\n }\n }\n}\nGLTFLoader.RegisterExtension(NAME, loader => new KHR_materials_volume(loader));","map":{"version":3,"names":["PBRMaterial","GLTFLoader","NAME","KHR_materials_volume","constructor","loader","name","order","_loader","enabled","isExtensionUsed","_disableInstancedMesh","dispose","loadMaterialPropertiesAsync","context","material","babylonMaterial","LoadExtensionAsync","extensionContext","extension","promises","Array","push","loadMaterialBasePropertiesAsync","_loadVolumePropertiesAsync","Promise","all","then","Error","subSurface","isRefractionEnabled","isTranslucencyEnabled","thicknessFactor","resolve","volumeIndexOfRefraction","indexOfRefraction","attenuationDistance","undefined","Number","MAX_VALUE","tintColorAtDistance","attenuationColor","length","tintColor","copyFromFloats","minimumThickness","maximumThickness","useThicknessAsDepth","thicknessTexture","nonColorData","loadTextureInfoAsync","texture","useGltfStyleTextures","RegisterExtension"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js"],"sourcesContent":["import { PBRMaterial } from \"@babylonjs/core/Materials/PBR/pbrMaterial.js\";\nimport { GLTFLoader } from \"../glTFLoader.js\";\nconst NAME = \"KHR_materials_volume\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_volume/README.md)\n * @since 5.0.0\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_volume {\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 = 173;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n // We need to disable instance usage because the attenuation factor depends on the node scale of each individual mesh\n this._loader._disableInstancedMesh++;\n }\n }\n /** @internal */\n dispose() {\n if (this.enabled) {\n this._loader._disableInstancedMesh--;\n }\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._loadVolumePropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => { });\n });\n }\n _loadVolumePropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n // If transparency isn't enabled already, this extension shouldn't do anything.\n // i.e. it requires either the KHR_materials_transmission or KHR_materials_translucency extensions.\n if ((!babylonMaterial.subSurface.isRefractionEnabled && !babylonMaterial.subSurface.isTranslucencyEnabled) || !extension.thicknessFactor) {\n return Promise.resolve();\n }\n // IOR in this extension only affects interior.\n babylonMaterial.subSurface.volumeIndexOfRefraction = babylonMaterial.indexOfRefraction;\n const attenuationDistance = extension.attenuationDistance !== undefined ? extension.attenuationDistance : Number.MAX_VALUE;\n babylonMaterial.subSurface.tintColorAtDistance = attenuationDistance;\n if (extension.attenuationColor !== undefined && extension.attenuationColor.length == 3) {\n babylonMaterial.subSurface.tintColor.copyFromFloats(extension.attenuationColor[0], extension.attenuationColor[1], extension.attenuationColor[2]);\n }\n babylonMaterial.subSurface.minimumThickness = 0.0;\n babylonMaterial.subSurface.maximumThickness = extension.thicknessFactor;\n babylonMaterial.subSurface.useThicknessAsDepth = true;\n if (extension.thicknessTexture) {\n extension.thicknessTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/thicknessTexture`, extension.thicknessTexture).then((texture) => {\n babylonMaterial.subSurface.thicknessTexture = texture;\n babylonMaterial.subSurface.useGltfStyleTextures = true;\n });\n }\n else {\n return Promise.resolve();\n }\n }\n}\nGLTFLoader.RegisterExtension(NAME, (loader) => new KHR_materials_volume(loader));\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}