1 |
- {"ast":null,"code":"import { Matrix, Vector3 } from \"../../Maths/math.vector.js\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { GetCubeMapTextureData } from \"../../Misc/HighDynamicRange/hdr.js\";\nimport { CubeMapToSphericalPolynomialTools } from \"../../Misc/HighDynamicRange/cubemapToSphericalPolynomial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { Tools } from \"../../Misc/tools.js\";\nimport { ToGammaSpace } from \"../../Maths/math.constants.js\";\nimport { HDRFiltering } from \"../../Materials/Textures/Filtering/hdrFiltering.js\";\nimport { ToHalfFloat } from \"../../Misc/textureTools.js\";\nimport \"../../Materials/Textures/baseTexture.polynomial.js\";\n/**\n * This represents a texture coming from an HDR input.\n *\n * The only supported format is currently panorama picture stored in RGBE format.\n * Example of such files can be found on Poly Haven: https://polyhaven.com/hdris\n */\nexport class HDRCubeTexture extends BaseTexture {\n /**\n * Sets whether or not the texture is blocking during loading.\n */\n set isBlocking(value) {\n this._isBlocking = value;\n }\n /**\n * Gets whether or not the texture is blocking during loading.\n */\n get isBlocking() {\n return this._isBlocking;\n }\n /**\n * Sets texture matrix rotation angle around Y axis in radians.\n */\n set rotationY(value) {\n this._rotationY = value;\n this.setReflectionTextureMatrix(Matrix.RotationY(this._rotationY));\n }\n /**\n * Gets texture matrix rotation angle around Y axis radians.\n */\n get rotationY() {\n return this._rotationY;\n }\n /**\n * Gets or sets the size of the bounding box associated with the cube texture\n * When defined, the cubemap will switch to local mode\n * @see https://community.arm.com/graphics/b/blog/posts/reflections-based-on-local-cubemaps-in-unity\n * @example https://www.babylonjs-playground.com/#RNASML\n */\n set boundingBoxSize(value) {\n if (this._boundingBoxSize && this._boundingBoxSize.equals(value)) {\n return;\n }\n this._boundingBoxSize = value;\n const scene = this.getScene();\n if (scene) {\n scene.markAllMaterialsAsDirty(1);\n }\n }\n get boundingBoxSize() {\n return this._boundingBoxSize;\n }\n /**\n * Instantiates an HDRTexture from the following parameters.\n *\n * @param url The location of the HDR raw data (Panorama stored in RGBE format)\n * @param sceneOrEngine The scene or engine the texture will be used in\n * @param size The cubemap desired size (the more it increases the longer the generation will be)\n * @param noMipmap Forces to not generate the mipmap if true\n * @param generateHarmonics Specifies whether you want to extract the polynomial harmonics during the generation process\n * @param gammaSpace Specifies if the texture will be use in gamma or linear space (the PBR material requires those texture in linear space, but the standard material would require them in Gamma space)\n * @param prefilterOnLoad Prefilters HDR texture to allow use of this texture as a PBR reflection texture.\n * @param onLoad on success callback function\n * @param onError on error callback function\n * @param supersample Defines if texture must be supersampled (default: false)\n */\n constructor(url, sceneOrEngine, size, noMipmap = false, generateHarmonics = true, gammaSpace = false, prefilterOnLoad = false, onLoad = null, onError = null, supersample = false) {\n super(sceneOrEngine);\n this._generateHarmonics = true;\n this._onError = null;\n this._isBlocking = true;\n this._rotationY = 0;\n /**\n * Gets or sets the center of the bounding box associated with the cube texture\n * It must define where the camera used to render the texture was set\n */\n this.boundingBoxPosition = Vector3.Zero();\n /**\n * Observable triggered once the texture has been loaded.\n */\n this.onLoadObservable = new Observable();\n if (!url) {\n return;\n }\n this._coordinatesMode = Texture.CUBIC_MODE;\n this.name = url;\n this.url = url;\n this.hasAlpha = false;\n this.isCube = true;\n this._textureMatrix = Matrix.Identity();\n this._prefilterOnLoad = prefilterOnLoad;\n this._onLoad = () => {\n this.onLoadObservable.notifyObservers(this);\n if (onLoad) {\n onLoad();\n }\n };\n this._onError = onError;\n this.gammaSpace = gammaSpace;\n this._noMipmap = noMipmap;\n this._size = size;\n this._supersample = supersample;\n this._generateHarmonics = generateHarmonics;\n this._texture = this._getFromCache(url, this._noMipmap, undefined, undefined, undefined, this.isCube);\n if (!this._texture) {\n var _this$getScene;\n if (!((_this$getScene = this.getScene()) !== null && _this$getScene !== void 0 && _this$getScene.useDelayedTextureLoading)) {\n this._loadTexture();\n } else {\n this.delayLoadState = 4;\n }\n } else {\n if (this._texture.isReady) {\n Tools.SetImmediate(() => this._onLoad());\n } else {\n this._texture.onLoadedObservable.add(this._onLoad);\n }\n }\n }\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"HDRCubeTexture\"\n */\n getClassName() {\n return \"HDRCubeTexture\";\n }\n /**\n * Occurs when the file is raw .hdr file.\n */\n _loadTexture() {\n const engine = this._getEngine();\n const caps = engine.getCaps();\n let textureType = 0;\n if (caps.textureFloat && caps.textureFloatLinearFiltering) {\n textureType = 1;\n } else if (caps.textureHalfFloat && caps.textureHalfFloatLinearFiltering) {\n textureType = 2;\n }\n const callback = buffer => {\n this.lodGenerationOffset = 0.0;\n this.lodGenerationScale = 0.8;\n // Extract the raw linear data.\n const data = GetCubeMapTextureData(buffer, this._size, this._supersample);\n // Generate harmonics if needed.\n if (this._generateHarmonics) {\n const sphericalPolynomial = CubeMapToSphericalPolynomialTools.ConvertCubeMapToSphericalPolynomial(data);\n this.sphericalPolynomial = sphericalPolynomial;\n }\n const results = [];\n let byteArray = null;\n let shortArray = null;\n // Push each faces.\n for (let j = 0; j < 6; j++) {\n // Create fallback array\n if (textureType === 2) {\n shortArray = new Uint16Array(this._size * this._size * 3);\n } else if (textureType === 0) {\n // 3 channels of 1 bytes per pixel in bytes.\n byteArray = new Uint8Array(this._size * this._size * 3);\n }\n const dataFace = data[HDRCubeTexture._FacesMapping[j]];\n // If special cases.\n if (this.gammaSpace || shortArray || byteArray) {\n for (let i = 0; i < this._size * this._size; i++) {\n // Put in gamma space if requested.\n if (this.gammaSpace) {\n dataFace[i * 3 + 0] = Math.pow(dataFace[i * 3 + 0], ToGammaSpace);\n dataFace[i * 3 + 1] = Math.pow(dataFace[i * 3 + 1], ToGammaSpace);\n dataFace[i * 3 + 2] = Math.pow(dataFace[i * 3 + 2], ToGammaSpace);\n }\n // Convert to half float texture for fallback.\n if (shortArray) {\n shortArray[i * 3 + 0] = ToHalfFloat(dataFace[i * 3 + 0]);\n shortArray[i * 3 + 1] = ToHalfFloat(dataFace[i * 3 + 1]);\n shortArray[i * 3 + 2] = ToHalfFloat(dataFace[i * 3 + 2]);\n }\n // Convert to int texture for fallback.\n if (byteArray) {\n let r = Math.max(dataFace[i * 3 + 0] * 255, 0);\n let g = Math.max(dataFace[i * 3 + 1] * 255, 0);\n let b = Math.max(dataFace[i * 3 + 2] * 255, 0);\n // May use luminance instead if the result is not accurate.\n const max = Math.max(Math.max(r, g), b);\n if (max > 255) {\n const scale = 255 / max;\n r *= scale;\n g *= scale;\n b *= scale;\n }\n byteArray[i * 3 + 0] = r;\n byteArray[i * 3 + 1] = g;\n byteArray[i * 3 + 2] = b;\n }\n }\n }\n if (shortArray) {\n results.push(shortArray);\n } else if (byteArray) {\n results.push(byteArray);\n } else {\n results.push(dataFace);\n }\n }\n return results;\n };\n if (engine._features.allowTexturePrefiltering && this._prefilterOnLoad) {\n const previousOnLoad = this._onLoad;\n const hdrFiltering = new HDRFiltering(engine);\n this._onLoad = () => {\n hdrFiltering.prefilter(this, previousOnLoad);\n };\n }\n this._texture = engine.createRawCubeTextureFromUrl(this.url, this.getScene(), this._size, 4, textureType, this._noMipmap, callback, null, this._onLoad, this._onError);\n }\n clone() {\n const newTexture = new HDRCubeTexture(this.url, this.getScene() || this._getEngine(), this._size, this._noMipmap, this._generateHarmonics, this.gammaSpace);\n // Base texture\n newTexture.level = this.level;\n newTexture.wrapU = this.wrapU;\n newTexture.wrapV = this.wrapV;\n newTexture.coordinatesIndex = this.coordinatesIndex;\n newTexture.coordinatesMode = this.coordinatesMode;\n return newTexture;\n }\n // Methods\n delayLoad() {\n if (this.delayLoadState !== 4) {\n return;\n }\n this.delayLoadState = 1;\n this._texture = this._getFromCache(this.url, this._noMipmap);\n if (!this._texture) {\n this._loadTexture();\n }\n }\n /**\n * Get the texture reflection matrix used to rotate/transform the reflection.\n * @returns the reflection matrix\n */\n getReflectionTextureMatrix() {\n return this._textureMatrix;\n }\n /**\n * Set the texture reflection matrix used to rotate/transform the reflection.\n * @param value Define the reflection matrix to set\n */\n setReflectionTextureMatrix(value) {\n this._textureMatrix = value;\n if (value.updateFlag === this._textureMatrix.updateFlag) {\n return;\n }\n if (value.isIdentity() !== this._textureMatrix.isIdentity()) {\n var _this$getScene2;\n (_this$getScene2 = this.getScene()) === null || _this$getScene2 === void 0 || _this$getScene2.markAllMaterialsAsDirty(1, mat => mat.getActiveTextures().indexOf(this) !== -1);\n }\n }\n /**\n * Dispose the texture and release its associated resources.\n */\n dispose() {\n this.onLoadObservable.clear();\n super.dispose();\n }\n /**\n * Parses a JSON representation of an HDR Texture in order to create the texture\n * @param parsedTexture Define the JSON representation\n * @param scene Define the scene the texture should be created in\n * @param rootUrl Define the root url in case we need to load relative dependencies\n * @returns the newly created texture after parsing\n */\n static Parse(parsedTexture, scene, rootUrl) {\n let texture = null;\n if (parsedTexture.name && !parsedTexture.isRenderTarget) {\n texture = new HDRCubeTexture(rootUrl + parsedTexture.name, scene, parsedTexture.size, parsedTexture.noMipmap, parsedTexture.generateHarmonics, parsedTexture.useInGammaSpace);\n texture.name = parsedTexture.name;\n texture.hasAlpha = parsedTexture.hasAlpha;\n texture.level = parsedTexture.level;\n texture.coordinatesMode = parsedTexture.coordinatesMode;\n texture.isBlocking = parsedTexture.isBlocking;\n }\n if (texture) {\n if (parsedTexture.boundingBoxPosition) {\n texture.boundingBoxPosition = Vector3.FromArray(parsedTexture.boundingBoxPosition);\n }\n if (parsedTexture.boundingBoxSize) {\n texture.boundingBoxSize = Vector3.FromArray(parsedTexture.boundingBoxSize);\n }\n if (parsedTexture.rotationY) {\n texture.rotationY = parsedTexture.rotationY;\n }\n }\n return texture;\n }\n serialize() {\n if (!this.name) {\n return null;\n }\n const serializationObject = {};\n serializationObject.name = this.name;\n serializationObject.hasAlpha = this.hasAlpha;\n serializationObject.isCube = true;\n serializationObject.level = this.level;\n serializationObject.size = this._size;\n serializationObject.coordinatesMode = this.coordinatesMode;\n serializationObject.useInGammaSpace = this.gammaSpace;\n serializationObject.generateHarmonics = this._generateHarmonics;\n serializationObject.customType = \"BABYLON.HDRCubeTexture\";\n serializationObject.noMipmap = this._noMipmap;\n serializationObject.isBlocking = this._isBlocking;\n serializationObject.rotationY = this._rotationY;\n return serializationObject;\n }\n}\nHDRCubeTexture._FacesMapping = [\"right\", \"left\", \"up\", \"down\", \"front\", \"back\"];\nRegisterClass(\"BABYLON.HDRCubeTexture\", HDRCubeTexture);","map":{"version":3,"names":["Matrix","Vector3","BaseTexture","Texture","GetCubeMapTextureData","CubeMapToSphericalPolynomialTools","RegisterClass","Observable","Tools","ToGammaSpace","HDRFiltering","ToHalfFloat","HDRCubeTexture","isBlocking","value","_isBlocking","rotationY","_rotationY","setReflectionTextureMatrix","RotationY","boundingBoxSize","_boundingBoxSize","equals","scene","getScene","markAllMaterialsAsDirty","constructor","url","sceneOrEngine","size","noMipmap","generateHarmonics","gammaSpace","prefilterOnLoad","onLoad","onError","supersample","_generateHarmonics","_onError","boundingBoxPosition","Zero","onLoadObservable","_coordinatesMode","CUBIC_MODE","name","hasAlpha","isCube","_textureMatrix","Identity","_prefilterOnLoad","_onLoad","notifyObservers","_noMipmap","_size","_supersample","_texture","_getFromCache","undefined","_this$getScene","useDelayedTextureLoading","_loadTexture","delayLoadState","isReady","SetImmediate","onLoadedObservable","add","getClassName","engine","_getEngine","caps","getCaps","textureType","textureFloat","textureFloatLinearFiltering","textureHalfFloat","textureHalfFloatLinearFiltering","callback","buffer","lodGenerationOffset","lodGenerationScale","data","sphericalPolynomial","ConvertCubeMapToSphericalPolynomial","results","byteArray","shortArray","j","Uint16Array","Uint8Array","dataFace","_FacesMapping","i","Math","pow","r","max","g","b","scale","push","_features","allowTexturePrefiltering","previousOnLoad","hdrFiltering","prefilter","createRawCubeTextureFromUrl","clone","newTexture","level","wrapU","wrapV","coordinatesIndex","coordinatesMode","delayLoad","getReflectionTextureMatrix","updateFlag","isIdentity","_this$getScene2","mat","getActiveTextures","indexOf","dispose","clear","Parse","parsedTexture","rootUrl","texture","isRenderTarget","useInGammaSpace","FromArray","serialize","serializationObject","customType"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Textures/hdrCubeTexture.js"],"sourcesContent":["import { Matrix, Vector3 } from \"../../Maths/math.vector.js\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\n\nimport { GetCubeMapTextureData } from \"../../Misc/HighDynamicRange/hdr.js\";\nimport { CubeMapToSphericalPolynomialTools } from \"../../Misc/HighDynamicRange/cubemapToSphericalPolynomial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { Observable } from \"../../Misc/observable.js\";\nimport { Tools } from \"../../Misc/tools.js\";\nimport { ToGammaSpace } from \"../../Maths/math.constants.js\";\nimport { HDRFiltering } from \"../../Materials/Textures/Filtering/hdrFiltering.js\";\nimport { ToHalfFloat } from \"../../Misc/textureTools.js\";\nimport \"../../Materials/Textures/baseTexture.polynomial.js\";\n/**\n * This represents a texture coming from an HDR input.\n *\n * The only supported format is currently panorama picture stored in RGBE format.\n * Example of such files can be found on Poly Haven: https://polyhaven.com/hdris\n */\nexport class HDRCubeTexture extends BaseTexture {\n /**\n * Sets whether or not the texture is blocking during loading.\n */\n set isBlocking(value) {\n this._isBlocking = value;\n }\n /**\n * Gets whether or not the texture is blocking during loading.\n */\n get isBlocking() {\n return this._isBlocking;\n }\n /**\n * Sets texture matrix rotation angle around Y axis in radians.\n */\n set rotationY(value) {\n this._rotationY = value;\n this.setReflectionTextureMatrix(Matrix.RotationY(this._rotationY));\n }\n /**\n * Gets texture matrix rotation angle around Y axis radians.\n */\n get rotationY() {\n return this._rotationY;\n }\n /**\n * Gets or sets the size of the bounding box associated with the cube texture\n * When defined, the cubemap will switch to local mode\n * @see https://community.arm.com/graphics/b/blog/posts/reflections-based-on-local-cubemaps-in-unity\n * @example https://www.babylonjs-playground.com/#RNASML\n */\n set boundingBoxSize(value) {\n if (this._boundingBoxSize && this._boundingBoxSize.equals(value)) {\n return;\n }\n this._boundingBoxSize = value;\n const scene = this.getScene();\n if (scene) {\n scene.markAllMaterialsAsDirty(1);\n }\n }\n get boundingBoxSize() {\n return this._boundingBoxSize;\n }\n /**\n * Instantiates an HDRTexture from the following parameters.\n *\n * @param url The location of the HDR raw data (Panorama stored in RGBE format)\n * @param sceneOrEngine The scene or engine the texture will be used in\n * @param size The cubemap desired size (the more it increases the longer the generation will be)\n * @param noMipmap Forces to not generate the mipmap if true\n * @param generateHarmonics Specifies whether you want to extract the polynomial harmonics during the generation process\n * @param gammaSpace Specifies if the texture will be use in gamma or linear space (the PBR material requires those texture in linear space, but the standard material would require them in Gamma space)\n * @param prefilterOnLoad Prefilters HDR texture to allow use of this texture as a PBR reflection texture.\n * @param onLoad on success callback function\n * @param onError on error callback function\n * @param supersample Defines if texture must be supersampled (default: false)\n */\n constructor(url, sceneOrEngine, size, noMipmap = false, generateHarmonics = true, gammaSpace = false, prefilterOnLoad = false, onLoad = null, onError = null, supersample = false) {\n super(sceneOrEngine);\n this._generateHarmonics = true;\n this._onError = null;\n this._isBlocking = true;\n this._rotationY = 0;\n /**\n * Gets or sets the center of the bounding box associated with the cube texture\n * It must define where the camera used to render the texture was set\n */\n this.boundingBoxPosition = Vector3.Zero();\n /**\n * Observable triggered once the texture has been loaded.\n */\n this.onLoadObservable = new Observable();\n if (!url) {\n return;\n }\n this._coordinatesMode = Texture.CUBIC_MODE;\n this.name = url;\n this.url = url;\n this.hasAlpha = false;\n this.isCube = true;\n this._textureMatrix = Matrix.Identity();\n this._prefilterOnLoad = prefilterOnLoad;\n this._onLoad = () => {\n this.onLoadObservable.notifyObservers(this);\n if (onLoad) {\n onLoad();\n }\n };\n this._onError = onError;\n this.gammaSpace = gammaSpace;\n this._noMipmap = noMipmap;\n this._size = size;\n this._supersample = supersample;\n this._generateHarmonics = generateHarmonics;\n this._texture = this._getFromCache(url, this._noMipmap, undefined, undefined, undefined, this.isCube);\n if (!this._texture) {\n if (!this.getScene()?.useDelayedTextureLoading) {\n this._loadTexture();\n }\n else {\n this.delayLoadState = 4;\n }\n }\n else {\n if (this._texture.isReady) {\n Tools.SetImmediate(() => this._onLoad());\n }\n else {\n this._texture.onLoadedObservable.add(this._onLoad);\n }\n }\n }\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"HDRCubeTexture\"\n */\n getClassName() {\n return \"HDRCubeTexture\";\n }\n /**\n * Occurs when the file is raw .hdr file.\n */\n _loadTexture() {\n const engine = this._getEngine();\n const caps = engine.getCaps();\n let textureType = 0;\n if (caps.textureFloat && caps.textureFloatLinearFiltering) {\n textureType = 1;\n }\n else if (caps.textureHalfFloat && caps.textureHalfFloatLinearFiltering) {\n textureType = 2;\n }\n const callback = (buffer) => {\n this.lodGenerationOffset = 0.0;\n this.lodGenerationScale = 0.8;\n // Extract the raw linear data.\n const data = GetCubeMapTextureData(buffer, this._size, this._supersample);\n // Generate harmonics if needed.\n if (this._generateHarmonics) {\n const sphericalPolynomial = CubeMapToSphericalPolynomialTools.ConvertCubeMapToSphericalPolynomial(data);\n this.sphericalPolynomial = sphericalPolynomial;\n }\n const results = [];\n let byteArray = null;\n let shortArray = null;\n // Push each faces.\n for (let j = 0; j < 6; j++) {\n // Create fallback array\n if (textureType === 2) {\n shortArray = new Uint16Array(this._size * this._size * 3);\n }\n else if (textureType === 0) {\n // 3 channels of 1 bytes per pixel in bytes.\n byteArray = new Uint8Array(this._size * this._size * 3);\n }\n const dataFace = data[HDRCubeTexture._FacesMapping[j]];\n // If special cases.\n if (this.gammaSpace || shortArray || byteArray) {\n for (let i = 0; i < this._size * this._size; i++) {\n // Put in gamma space if requested.\n if (this.gammaSpace) {\n dataFace[i * 3 + 0] = Math.pow(dataFace[i * 3 + 0], ToGammaSpace);\n dataFace[i * 3 + 1] = Math.pow(dataFace[i * 3 + 1], ToGammaSpace);\n dataFace[i * 3 + 2] = Math.pow(dataFace[i * 3 + 2], ToGammaSpace);\n }\n // Convert to half float texture for fallback.\n if (shortArray) {\n shortArray[i * 3 + 0] = ToHalfFloat(dataFace[i * 3 + 0]);\n shortArray[i * 3 + 1] = ToHalfFloat(dataFace[i * 3 + 1]);\n shortArray[i * 3 + 2] = ToHalfFloat(dataFace[i * 3 + 2]);\n }\n // Convert to int texture for fallback.\n if (byteArray) {\n let r = Math.max(dataFace[i * 3 + 0] * 255, 0);\n let g = Math.max(dataFace[i * 3 + 1] * 255, 0);\n let b = Math.max(dataFace[i * 3 + 2] * 255, 0);\n // May use luminance instead if the result is not accurate.\n const max = Math.max(Math.max(r, g), b);\n if (max > 255) {\n const scale = 255 / max;\n r *= scale;\n g *= scale;\n b *= scale;\n }\n byteArray[i * 3 + 0] = r;\n byteArray[i * 3 + 1] = g;\n byteArray[i * 3 + 2] = b;\n }\n }\n }\n if (shortArray) {\n results.push(shortArray);\n }\n else if (byteArray) {\n results.push(byteArray);\n }\n else {\n results.push(dataFace);\n }\n }\n return results;\n };\n if (engine._features.allowTexturePrefiltering && this._prefilterOnLoad) {\n const previousOnLoad = this._onLoad;\n const hdrFiltering = new HDRFiltering(engine);\n this._onLoad = () => {\n hdrFiltering.prefilter(this, previousOnLoad);\n };\n }\n this._texture = engine.createRawCubeTextureFromUrl(this.url, this.getScene(), this._size, 4, textureType, this._noMipmap, callback, null, this._onLoad, this._onError);\n }\n clone() {\n const newTexture = new HDRCubeTexture(this.url, this.getScene() || this._getEngine(), this._size, this._noMipmap, this._generateHarmonics, this.gammaSpace);\n // Base texture\n newTexture.level = this.level;\n newTexture.wrapU = this.wrapU;\n newTexture.wrapV = this.wrapV;\n newTexture.coordinatesIndex = this.coordinatesIndex;\n newTexture.coordinatesMode = this.coordinatesMode;\n return newTexture;\n }\n // Methods\n delayLoad() {\n if (this.delayLoadState !== 4) {\n return;\n }\n this.delayLoadState = 1;\n this._texture = this._getFromCache(this.url, this._noMipmap);\n if (!this._texture) {\n this._loadTexture();\n }\n }\n /**\n * Get the texture reflection matrix used to rotate/transform the reflection.\n * @returns the reflection matrix\n */\n getReflectionTextureMatrix() {\n return this._textureMatrix;\n }\n /**\n * Set the texture reflection matrix used to rotate/transform the reflection.\n * @param value Define the reflection matrix to set\n */\n setReflectionTextureMatrix(value) {\n this._textureMatrix = value;\n if (value.updateFlag === this._textureMatrix.updateFlag) {\n return;\n }\n if (value.isIdentity() !== this._textureMatrix.isIdentity()) {\n this.getScene()?.markAllMaterialsAsDirty(1, (mat) => mat.getActiveTextures().indexOf(this) !== -1);\n }\n }\n /**\n * Dispose the texture and release its associated resources.\n */\n dispose() {\n this.onLoadObservable.clear();\n super.dispose();\n }\n /**\n * Parses a JSON representation of an HDR Texture in order to create the texture\n * @param parsedTexture Define the JSON representation\n * @param scene Define the scene the texture should be created in\n * @param rootUrl Define the root url in case we need to load relative dependencies\n * @returns the newly created texture after parsing\n */\n static Parse(parsedTexture, scene, rootUrl) {\n let texture = null;\n if (parsedTexture.name && !parsedTexture.isRenderTarget) {\n texture = new HDRCubeTexture(rootUrl + parsedTexture.name, scene, parsedTexture.size, parsedTexture.noMipmap, parsedTexture.generateHarmonics, parsedTexture.useInGammaSpace);\n texture.name = parsedTexture.name;\n texture.hasAlpha = parsedTexture.hasAlpha;\n texture.level = parsedTexture.level;\n texture.coordinatesMode = parsedTexture.coordinatesMode;\n texture.isBlocking = parsedTexture.isBlocking;\n }\n if (texture) {\n if (parsedTexture.boundingBoxPosition) {\n texture.boundingBoxPosition = Vector3.FromArray(parsedTexture.boundingBoxPosition);\n }\n if (parsedTexture.boundingBoxSize) {\n texture.boundingBoxSize = Vector3.FromArray(parsedTexture.boundingBoxSize);\n }\n if (parsedTexture.rotationY) {\n texture.rotationY = parsedTexture.rotationY;\n }\n }\n return texture;\n }\n serialize() {\n if (!this.name) {\n return null;\n }\n const serializationObject = {};\n serializationObject.name = this.name;\n serializationObject.hasAlpha = this.hasAlpha;\n serializationObject.isCube = true;\n serializationObject.level = this.level;\n serializationObject.size = this._size;\n serializationObject.coordinatesMode = this.coordinatesMode;\n serializationObject.useInGammaSpace = this.gammaSpace;\n serializationObject.generateHarmonics = this._generateHarmonics;\n serializationObject.customType = \"BABYLON.HDRCubeTexture\";\n serializationObject.noMipmap = this._noMipmap;\n serializationObject.isBlocking = this._isBlocking;\n serializationObject.rotationY = this._rotationY;\n return serializationObject;\n }\n}\nHDRCubeTexture._FacesMapping = [\"right\", \"left\", \"up\", \"down\", \"front\", \"back\"];\nRegisterClass(\"BABYLON.HDRCubeTexture\", HDRCubeTexture);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|