d2fb51e14b5161022dbf841a96aa38491888f9ede5d6b70803ad0263daf834eb.json 58 KB

1
  1. {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { serialize, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { ColorCurves } from \"../Materials/colorCurves.js\";\nimport { Mix } from \"../Misc/tools.functions.js\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization.js\";\nimport { PrepareSamplersForImageProcessing, PrepareUniformsForImageProcessing } from \"./imageProcessingConfiguration.functions.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\n/**\n * This groups together the common properties used for image processing either in direct forward pass\n * or through post processing effect depending on the use of the image processing pipeline in your scene\n * or not.\n */\nexport class ImageProcessingConfiguration {\n constructor() {\n /**\n * Color curves setup used in the effect if colorCurvesEnabled is set to true\n */\n this.colorCurves = new ColorCurves();\n this._colorCurvesEnabled = false;\n this._colorGradingEnabled = false;\n this._colorGradingWithGreenDepth = true;\n this._colorGradingBGR = true;\n /** @internal */\n this._exposure = 1.0;\n this._toneMappingEnabled = false;\n this._toneMappingType = ImageProcessingConfiguration.TONEMAPPING_STANDARD;\n this._contrast = 1.0;\n /**\n * Vignette stretch size.\n */\n this.vignetteStretch = 0;\n /**\n * Vignette center X Offset.\n */\n this.vignetteCenterX = 0;\n /**\n * Vignette center Y Offset.\n */\n this.vignetteCenterY = 0;\n /**\n * Vignette weight or intensity of the vignette effect.\n */\n this.vignetteWeight = 1.5;\n /**\n * Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\n * if vignetteEnabled is set to true.\n */\n this.vignetteColor = new Color4(0, 0, 0, 0);\n /**\n * Camera field of view used by the Vignette effect.\n */\n this.vignetteCameraFov = 0.5;\n this._vignetteBlendMode = ImageProcessingConfiguration.VIGNETTEMODE_MULTIPLY;\n this._vignetteEnabled = false;\n this._ditheringEnabled = false;\n this._ditheringIntensity = 1.0 / 255.0;\n /** @internal */\n this._skipFinalColorClamp = false;\n /** @internal */\n this._applyByPostProcess = false;\n this._isEnabled = true;\n /**\n * An event triggered when the configuration changes and requires Shader to Update some parameters.\n */\n this.onUpdateParameters = new Observable();\n }\n /**\n * Gets whether the color curves effect is enabled.\n */\n get colorCurvesEnabled() {\n return this._colorCurvesEnabled;\n }\n /**\n * Sets whether the color curves effect is enabled.\n */\n set colorCurvesEnabled(value) {\n if (this._colorCurvesEnabled === value) {\n return;\n }\n this._colorCurvesEnabled = value;\n this._updateParameters();\n }\n /**\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\n */\n get colorGradingTexture() {\n return this._colorGradingTexture;\n }\n /**\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\n */\n set colorGradingTexture(value) {\n if (this._colorGradingTexture === value) {\n return;\n }\n this._colorGradingTexture = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n get colorGradingEnabled() {\n return this._colorGradingEnabled;\n }\n /**\n * Sets whether the color grading effect is enabled.\n */\n set colorGradingEnabled(value) {\n if (this._colorGradingEnabled === value) {\n return;\n }\n this._colorGradingEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading effect is using a green depth for the 3d Texture.\n */\n get colorGradingWithGreenDepth() {\n return this._colorGradingWithGreenDepth;\n }\n /**\n * Sets whether the color grading effect is using a green depth for the 3d Texture.\n */\n set colorGradingWithGreenDepth(value) {\n if (this._colorGradingWithGreenDepth === value) {\n return;\n }\n this._colorGradingWithGreenDepth = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading texture contains BGR values.\n */\n get colorGradingBGR() {\n return this._colorGradingBGR;\n }\n /**\n * Sets whether the color grading texture contains BGR values.\n */\n set colorGradingBGR(value) {\n if (this._colorGradingBGR === value) {\n return;\n }\n this._colorGradingBGR = value;\n this._updateParameters();\n }\n /**\n * Gets the Exposure used in the effect.\n */\n get exposure() {\n return this._exposure;\n }\n /**\n * Sets the Exposure used in the effect.\n */\n set exposure(value) {\n if (this._exposure === value) {\n return;\n }\n this._exposure = value;\n this._updateParameters();\n }\n /**\n * Gets whether the tone mapping effect is enabled.\n */\n get toneMappingEnabled() {\n return this._toneMappingEnabled;\n }\n /**\n * Sets whether the tone mapping effect is enabled.\n */\n set toneMappingEnabled(value) {\n if (this._toneMappingEnabled === value) {\n return;\n }\n this._toneMappingEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets the type of tone mapping effect.\n */\n get toneMappingType() {\n return this._toneMappingType;\n }\n /**\n * Sets the type of tone mapping effect used in BabylonJS.\n */\n set toneMappingType(value) {\n if (this._toneMappingType === value) {\n return;\n }\n this._toneMappingType = value;\n this._updateParameters();\n }\n /**\n * Gets the contrast used in the effect.\n */\n get contrast() {\n return this._contrast;\n }\n /**\n * Sets the contrast used in the effect.\n */\n set contrast(value) {\n if (this._contrast === value) {\n return;\n }\n this._contrast = value;\n this._updateParameters();\n }\n /**\n * Back Compat: Vignette center Y Offset.\n * @deprecated use vignetteCenterY instead\n */\n get vignetteCentreY() {\n return this.vignetteCenterY;\n }\n set vignetteCentreY(value) {\n this.vignetteCenterY = value;\n }\n /**\n * Back Compat: Vignette center X Offset.\n * @deprecated use vignetteCenterX instead\n */\n get vignetteCentreX() {\n return this.vignetteCenterX;\n }\n set vignetteCentreX(value) {\n this.vignetteCenterX = value;\n }\n /**\n * Gets the vignette blend mode allowing different kind of effect.\n */\n get vignetteBlendMode() {\n return this._vignetteBlendMode;\n }\n /**\n * Sets the vignette blend mode allowing different kind of effect.\n */\n set vignetteBlendMode(value) {\n if (this._vignetteBlendMode === value) {\n return;\n }\n this._vignetteBlendMode = value;\n this._updateParameters();\n }\n /**\n * Gets whether the vignette effect is enabled.\n */\n get vignetteEnabled() {\n return this._vignetteEnabled;\n }\n /**\n * Sets whether the vignette effect is enabled.\n */\n set vignetteEnabled(value) {\n if (this._vignetteEnabled === value) {\n return;\n }\n this._vignetteEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets whether the dithering effect is enabled.\n * The dithering effect can be used to reduce banding.\n */\n get ditheringEnabled() {\n return this._ditheringEnabled;\n }\n /**\n * Sets whether the dithering effect is enabled.\n * The dithering effect can be used to reduce banding.\n */\n set ditheringEnabled(value) {\n if (this._ditheringEnabled === value) {\n return;\n }\n this._ditheringEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\n */\n get ditheringIntensity() {\n return this._ditheringIntensity;\n }\n /**\n * Sets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\n */\n set ditheringIntensity(value) {\n if (this._ditheringIntensity === value) {\n return;\n }\n this._ditheringIntensity = value;\n this._updateParameters();\n }\n /**\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\n * Applies to PBR materials.\n */\n get skipFinalColorClamp() {\n return this._skipFinalColorClamp;\n }\n /**\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\n * Applies to PBR materials.\n */\n set skipFinalColorClamp(value) {\n if (this._skipFinalColorClamp === value) {\n return;\n }\n this._skipFinalColorClamp = value;\n this._updateParameters();\n }\n /**\n * Gets whether the image processing is applied through a post process or not.\n */\n get applyByPostProcess() {\n return this._applyByPostProcess;\n }\n /**\n * Sets whether the image processing is applied through a post process or not.\n */\n set applyByPostProcess(value) {\n if (this._applyByPostProcess === value) {\n return;\n }\n this._applyByPostProcess = value;\n this._updateParameters();\n }\n /**\n * Gets whether the image processing is enabled or not.\n */\n get isEnabled() {\n return this._isEnabled;\n }\n /**\n * Sets whether the image processing is enabled or not.\n */\n set isEnabled(value) {\n if (this._isEnabled === value) {\n return;\n }\n this._isEnabled = value;\n this._updateParameters();\n }\n /**\n * Method called each time the image processing information changes requires to recompile the effect.\n */\n _updateParameters() {\n this.onUpdateParameters.notifyObservers(this);\n }\n /**\n * Gets the current class name.\n * @returns \"ImageProcessingConfiguration\"\n */\n getClassName() {\n return \"ImageProcessingConfiguration\";\n }\n /**\n * Prepare the list of defines associated to the shader.\n * @param defines the list of defines to complete\n * @param forPostProcess Define if we are currently in post process mode or not\n */\n prepareDefines(defines, forPostProcess = false) {\n if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {\n defines.VIGNETTE = false;\n defines.TONEMAPPING = 0;\n defines.CONTRAST = false;\n defines.EXPOSURE = false;\n defines.COLORCURVES = false;\n defines.COLORGRADING = false;\n defines.COLORGRADING3D = false;\n defines.DITHER = false;\n defines.IMAGEPROCESSING = false;\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;\n return;\n }\n defines.VIGNETTE = this.vignetteEnabled;\n defines.VIGNETTEBLENDMODEMULTIPLY = this.vignetteBlendMode === ImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY;\n defines.VIGNETTEBLENDMODEOPAQUE = !defines.VIGNETTEBLENDMODEMULTIPLY;\n if (!this._toneMappingEnabled) {\n defines.TONEMAPPING = 0;\n } else {\n switch (this._toneMappingType) {\n case ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL:\n defines.TONEMAPPING = 3;\n break;\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\n defines.TONEMAPPING = 2;\n break;\n default:\n defines.TONEMAPPING = 1;\n break;\n }\n }\n defines.CONTRAST = this.contrast !== 1.0;\n defines.EXPOSURE = this.exposure !== 1.0;\n defines.COLORCURVES = this.colorCurvesEnabled && !!this.colorCurves;\n defines.COLORGRADING = this.colorGradingEnabled && !!this.colorGradingTexture;\n if (defines.COLORGRADING) {\n defines.COLORGRADING3D = this.colorGradingTexture.is3D;\n } else {\n defines.COLORGRADING3D = false;\n }\n defines.SAMPLER3DGREENDEPTH = this.colorGradingWithGreenDepth;\n defines.SAMPLER3DBGRMAP = this.colorGradingBGR;\n defines.DITHER = this._ditheringEnabled;\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\n defines.IMAGEPROCESSING = defines.VIGNETTE || !!defines.TONEMAPPING || defines.CONTRAST || defines.EXPOSURE || defines.COLORCURVES || defines.COLORGRADING || defines.DITHER;\n }\n /**\n * Returns true if all the image processing information are ready.\n * @returns True if ready, otherwise, false\n */\n isReady() {\n // Color Grading texture can not be none blocking.\n return !this.colorGradingEnabled || !this.colorGradingTexture || this.colorGradingTexture.isReady();\n }\n /**\n * Binds the image processing to the shader.\n * @param effect The effect to bind to\n * @param overrideAspectRatio Override the aspect ratio of the effect\n */\n bind(effect, overrideAspectRatio) {\n // Color Curves\n if (this._colorCurvesEnabled && this.colorCurves) {\n ColorCurves.Bind(this.colorCurves, effect);\n }\n // Vignette and dither handled together due to common uniform.\n if (this._vignetteEnabled || this._ditheringEnabled) {\n const inverseWidth = 1 / effect.getEngine().getRenderWidth();\n const inverseHeight = 1 / effect.getEngine().getRenderHeight();\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\n if (this._ditheringEnabled) {\n effect.setFloat(\"ditherIntensity\", 0.5 * this._ditheringIntensity);\n }\n if (this._vignetteEnabled) {\n const aspectRatio = overrideAspectRatio != null ? overrideAspectRatio : inverseHeight / inverseWidth;\n let vignetteScaleY = Math.tan(this.vignetteCameraFov * 0.5);\n let vignetteScaleX = vignetteScaleY * aspectRatio;\n const vignetteScaleGeometricMean = Math.sqrt(vignetteScaleX * vignetteScaleY);\n vignetteScaleX = Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\n vignetteScaleY = Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCenterX, -vignetteScaleY * this.vignetteCenterY);\n const vignettePower = -2.0 * this.vignetteWeight;\n effect.setFloat4(\"vignetteSettings2\", this.vignetteColor.r, this.vignetteColor.g, this.vignetteColor.b, vignettePower);\n }\n }\n // Exposure\n effect.setFloat(\"exposureLinear\", this.exposure);\n // Contrast\n effect.setFloat(\"contrast\", this.contrast);\n // Color transform settings\n if (this.colorGradingTexture) {\n effect.setTexture(\"txColorTransform\", this.colorGradingTexture);\n const textureSize = this.colorGradingTexture.getSize().height;\n effect.setFloat4(\"colorTransformSettings\", (textureSize - 1) / textureSize,\n // textureScale\n 0.5 / textureSize,\n // textureOffset\n textureSize,\n // textureSize\n this.colorGradingTexture.level // weight\n );\n }\n }\n /**\n * Clones the current image processing instance.\n * @returns The cloned image processing\n */\n clone() {\n return SerializationHelper.Clone(() => new ImageProcessingConfiguration(), this);\n }\n /**\n * Serializes the current image processing instance to a json representation.\n * @returns a JSON representation\n */\n serialize() {\n return SerializationHelper.Serialize(this);\n }\n /**\n * Parses the image processing from a json representation.\n * @param source the JSON source to parse\n * @returns The parsed image processing\n */\n static Parse(source) {\n const parsed = SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\n // Backward compatibility\n if (source.vignetteCentreX !== undefined) {\n parsed.vignetteCenterX = source.vignetteCentreX;\n }\n if (source.vignetteCentreY !== undefined) {\n parsed.vignetteCenterY = source.vignetteCentreY;\n }\n return parsed;\n }\n /**\n * Used to apply the vignette as a mix with the pixel color.\n */\n static get VIGNETTEMODE_MULTIPLY() {\n return this._VIGNETTEMODE_MULTIPLY;\n }\n /**\n * Used to apply the vignette as a replacement of the pixel color.\n */\n static get VIGNETTEMODE_OPAQUE() {\n return this._VIGNETTEMODE_OPAQUE;\n }\n}\n/**\n * Default tone mapping applied in BabylonJS.\n */\nImageProcessingConfiguration.TONEMAPPING_STANDARD = 0;\n/**\n * ACES Tone mapping (used by default in unreal and unity). This can help getting closer\n * to other engines rendering to increase portability.\n */\nImageProcessingConfiguration.TONEMAPPING_ACES = 1;\n/**\n * Neutral Tone mapping developped by the Khronos group in order to constrain\n * values between 0 and 1 without shifting Hue.\n */\nImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL = 2;\n/**\n * Prepare the list of uniforms associated with the Image Processing effects.\n * @param uniforms The list of uniforms used in the effect\n * @param defines the list of defines currently in use\n */\nImageProcessingConfiguration.PrepareUniforms = PrepareUniformsForImageProcessing;\n/**\n * Prepare the list of samplers associated with the Image Processing effects.\n * @param samplersList The list of uniforms used in the effect\n * @param defines the list of defines currently in use\n */\nImageProcessingConfiguration.PrepareSamplers = PrepareSamplersForImageProcessing;\n// Static constants associated to the image processing.\nImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY = 0;\nImageProcessingConfiguration._VIGNETTEMODE_OPAQUE = 1;\n__decorate([serializeAsColorCurves()], ImageProcessingConfiguration.prototype, \"colorCurves\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_colorCurvesEnabled\", void 0);\n__decorate([serializeAsTexture(\"colorGradingTexture\")], ImageProcessingConfiguration.prototype, \"_colorGradingTexture\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_colorGradingEnabled\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_colorGradingWithGreenDepth\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_colorGradingBGR\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_exposure\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_toneMappingEnabled\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_toneMappingType\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_contrast\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"vignetteStretch\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"vignetteCenterX\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"vignetteCenterY\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"vignetteWeight\", void 0);\n__decorate([serializeAsColor4()], ImageProcessingConfiguration.prototype, \"vignetteColor\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"vignetteCameraFov\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_vignetteBlendMode\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_vignetteEnabled\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_ditheringEnabled\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_ditheringIntensity\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_skipFinalColorClamp\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_applyByPostProcess\", void 0);\n__decorate([serialize()], ImageProcessingConfiguration.prototype, \"_isEnabled\", void 0);\n// References the dependencies.\nSerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfiguration.Parse;\n// Register Class Name\nRegisterClass(\"BABYLON.ImageProcessingConfiguration\", ImageProcessingConfiguration);","map":{"version":3,"names":["__decorate","serialize","serializeAsTexture","serializeAsColorCurves","serializeAsColor4","Observable","Color4","ColorCurves","Mix","SerializationHelper","PrepareSamplersForImageProcessing","PrepareUniformsForImageProcessing","RegisterClass","ImageProcessingConfiguration","constructor","colorCurves","_colorCurvesEnabled","_colorGradingEnabled","_colorGradingWithGreenDepth","_colorGradingBGR","_exposure","_toneMappingEnabled","_toneMappingType","TONEMAPPING_STANDARD","_contrast","vignetteStretch","vignetteCenterX","vignetteCenterY","vignetteWeight","vignetteColor","vignetteCameraFov","_vignetteBlendMode","VIGNETTEMODE_MULTIPLY","_vignetteEnabled","_ditheringEnabled","_ditheringIntensity","_skipFinalColorClamp","_applyByPostProcess","_isEnabled","onUpdateParameters","colorCurvesEnabled","value","_updateParameters","colorGradingTexture","_colorGradingTexture","colorGradingEnabled","colorGradingWithGreenDepth","colorGradingBGR","exposure","toneMappingEnabled","toneMappingType","contrast","vignetteCentreY","vignetteCentreX","vignetteBlendMode","vignetteEnabled","ditheringEnabled","ditheringIntensity","skipFinalColorClamp","applyByPostProcess","isEnabled","notifyObservers","getClassName","prepareDefines","defines","forPostProcess","VIGNETTE","TONEMAPPING","CONTRAST","EXPOSURE","COLORCURVES","COLORGRADING","COLORGRADING3D","DITHER","IMAGEPROCESSING","SKIPFINALCOLORCLAMP","IMAGEPROCESSINGPOSTPROCESS","VIGNETTEBLENDMODEMULTIPLY","_VIGNETTEMODE_MULTIPLY","VIGNETTEBLENDMODEOPAQUE","TONEMAPPING_KHR_PBR_NEUTRAL","TONEMAPPING_ACES","is3D","SAMPLER3DGREENDEPTH","SAMPLER3DBGRMAP","isReady","bind","effect","overrideAspectRatio","Bind","inverseWidth","getEngine","getRenderWidth","inverseHeight","getRenderHeight","setFloat2","setFloat","aspectRatio","vignetteScaleY","Math","tan","vignetteScaleX","vignetteScaleGeometricMean","sqrt","setFloat4","vignettePower","r","g","b","setTexture","textureSize","getSize","height","level","clone","Clone","Serialize","Parse","source","parsed","undefined","VIGNETTEMODE_OPAQUE","_VIGNETTEMODE_OPAQUE","PrepareUniforms","PrepareSamplers","prototype","_ImageProcessingConfigurationParser"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/imageProcessingConfiguration.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { serialize, serializeAsTexture, serializeAsColorCurves, serializeAsColor4 } from \"../Misc/decorators.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { ColorCurves } from \"../Materials/colorCurves.js\";\nimport { Mix } from \"../Misc/tools.functions.js\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization.js\";\nimport { PrepareSamplersForImageProcessing, PrepareUniformsForImageProcessing } from \"./imageProcessingConfiguration.functions.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\n/**\n * This groups together the common properties used for image processing either in direct forward pass\n * or through post processing effect depending on the use of the image processing pipeline in your scene\n * or not.\n */\nexport class ImageProcessingConfiguration {\n constructor() {\n /**\n * Color curves setup used in the effect if colorCurvesEnabled is set to true\n */\n this.colorCurves = new ColorCurves();\n this._colorCurvesEnabled = false;\n this._colorGradingEnabled = false;\n this._colorGradingWithGreenDepth = true;\n this._colorGradingBGR = true;\n /** @internal */\n this._exposure = 1.0;\n this._toneMappingEnabled = false;\n this._toneMappingType = ImageProcessingConfiguration.TONEMAPPING_STANDARD;\n this._contrast = 1.0;\n /**\n * Vignette stretch size.\n */\n this.vignetteStretch = 0;\n /**\n * Vignette center X Offset.\n */\n this.vignetteCenterX = 0;\n /**\n * Vignette center Y Offset.\n */\n this.vignetteCenterY = 0;\n /**\n * Vignette weight or intensity of the vignette effect.\n */\n this.vignetteWeight = 1.5;\n /**\n * Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\n * if vignetteEnabled is set to true.\n */\n this.vignetteColor = new Color4(0, 0, 0, 0);\n /**\n * Camera field of view used by the Vignette effect.\n */\n this.vignetteCameraFov = 0.5;\n this._vignetteBlendMode = ImageProcessingConfiguration.VIGNETTEMODE_MULTIPLY;\n this._vignetteEnabled = false;\n this._ditheringEnabled = false;\n this._ditheringIntensity = 1.0 / 255.0;\n /** @internal */\n this._skipFinalColorClamp = false;\n /** @internal */\n this._applyByPostProcess = false;\n this._isEnabled = true;\n /**\n * An event triggered when the configuration changes and requires Shader to Update some parameters.\n */\n this.onUpdateParameters = new Observable();\n }\n /**\n * Gets whether the color curves effect is enabled.\n */\n get colorCurvesEnabled() {\n return this._colorCurvesEnabled;\n }\n /**\n * Sets whether the color curves effect is enabled.\n */\n set colorCurvesEnabled(value) {\n if (this._colorCurvesEnabled === value) {\n return;\n }\n this._colorCurvesEnabled = value;\n this._updateParameters();\n }\n /**\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\n */\n get colorGradingTexture() {\n return this._colorGradingTexture;\n }\n /**\n * Color grading LUT texture used in the effect if colorGradingEnabled is set to true\n */\n set colorGradingTexture(value) {\n if (this._colorGradingTexture === value) {\n return;\n }\n this._colorGradingTexture = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n get colorGradingEnabled() {\n return this._colorGradingEnabled;\n }\n /**\n * Sets whether the color grading effect is enabled.\n */\n set colorGradingEnabled(value) {\n if (this._colorGradingEnabled === value) {\n return;\n }\n this._colorGradingEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading effect is using a green depth for the 3d Texture.\n */\n get colorGradingWithGreenDepth() {\n return this._colorGradingWithGreenDepth;\n }\n /**\n * Sets whether the color grading effect is using a green depth for the 3d Texture.\n */\n set colorGradingWithGreenDepth(value) {\n if (this._colorGradingWithGreenDepth === value) {\n return;\n }\n this._colorGradingWithGreenDepth = value;\n this._updateParameters();\n }\n /**\n * Gets whether the color grading texture contains BGR values.\n */\n get colorGradingBGR() {\n return this._colorGradingBGR;\n }\n /**\n * Sets whether the color grading texture contains BGR values.\n */\n set colorGradingBGR(value) {\n if (this._colorGradingBGR === value) {\n return;\n }\n this._colorGradingBGR = value;\n this._updateParameters();\n }\n /**\n * Gets the Exposure used in the effect.\n */\n get exposure() {\n return this._exposure;\n }\n /**\n * Sets the Exposure used in the effect.\n */\n set exposure(value) {\n if (this._exposure === value) {\n return;\n }\n this._exposure = value;\n this._updateParameters();\n }\n /**\n * Gets whether the tone mapping effect is enabled.\n */\n get toneMappingEnabled() {\n return this._toneMappingEnabled;\n }\n /**\n * Sets whether the tone mapping effect is enabled.\n */\n set toneMappingEnabled(value) {\n if (this._toneMappingEnabled === value) {\n return;\n }\n this._toneMappingEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets the type of tone mapping effect.\n */\n get toneMappingType() {\n return this._toneMappingType;\n }\n /**\n * Sets the type of tone mapping effect used in BabylonJS.\n */\n set toneMappingType(value) {\n if (this._toneMappingType === value) {\n return;\n }\n this._toneMappingType = value;\n this._updateParameters();\n }\n /**\n * Gets the contrast used in the effect.\n */\n get contrast() {\n return this._contrast;\n }\n /**\n * Sets the contrast used in the effect.\n */\n set contrast(value) {\n if (this._contrast === value) {\n return;\n }\n this._contrast = value;\n this._updateParameters();\n }\n /**\n * Back Compat: Vignette center Y Offset.\n * @deprecated use vignetteCenterY instead\n */\n get vignetteCentreY() {\n return this.vignetteCenterY;\n }\n set vignetteCentreY(value) {\n this.vignetteCenterY = value;\n }\n /**\n * Back Compat: Vignette center X Offset.\n * @deprecated use vignetteCenterX instead\n */\n get vignetteCentreX() {\n return this.vignetteCenterX;\n }\n set vignetteCentreX(value) {\n this.vignetteCenterX = value;\n }\n /**\n * Gets the vignette blend mode allowing different kind of effect.\n */\n get vignetteBlendMode() {\n return this._vignetteBlendMode;\n }\n /**\n * Sets the vignette blend mode allowing different kind of effect.\n */\n set vignetteBlendMode(value) {\n if (this._vignetteBlendMode === value) {\n return;\n }\n this._vignetteBlendMode = value;\n this._updateParameters();\n }\n /**\n * Gets whether the vignette effect is enabled.\n */\n get vignetteEnabled() {\n return this._vignetteEnabled;\n }\n /**\n * Sets whether the vignette effect is enabled.\n */\n set vignetteEnabled(value) {\n if (this._vignetteEnabled === value) {\n return;\n }\n this._vignetteEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets whether the dithering effect is enabled.\n * The dithering effect can be used to reduce banding.\n */\n get ditheringEnabled() {\n return this._ditheringEnabled;\n }\n /**\n * Sets whether the dithering effect is enabled.\n * The dithering effect can be used to reduce banding.\n */\n set ditheringEnabled(value) {\n if (this._ditheringEnabled === value) {\n return;\n }\n this._ditheringEnabled = value;\n this._updateParameters();\n }\n /**\n * Gets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\n */\n get ditheringIntensity() {\n return this._ditheringIntensity;\n }\n /**\n * Sets the dithering intensity. 0 is no dithering. Default is 1.0 / 255.0.\n */\n set ditheringIntensity(value) {\n if (this._ditheringIntensity === value) {\n return;\n }\n this._ditheringIntensity = value;\n this._updateParameters();\n }\n /**\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\n * Applies to PBR materials.\n */\n get skipFinalColorClamp() {\n return this._skipFinalColorClamp;\n }\n /**\n * If apply by post process is set to true, setting this to true will skip the final color clamp step in the fragment shader\n * Applies to PBR materials.\n */\n set skipFinalColorClamp(value) {\n if (this._skipFinalColorClamp === value) {\n return;\n }\n this._skipFinalColorClamp = value;\n this._updateParameters();\n }\n /**\n * Gets whether the image processing is applied through a post process or not.\n */\n get applyByPostProcess() {\n return this._applyByPostProcess;\n }\n /**\n * Sets whether the image processing is applied through a post process or not.\n */\n set applyByPostProcess(value) {\n if (this._applyByPostProcess === value) {\n return;\n }\n this._applyByPostProcess = value;\n this._updateParameters();\n }\n /**\n * Gets whether the image processing is enabled or not.\n */\n get isEnabled() {\n return this._isEnabled;\n }\n /**\n * Sets whether the image processing is enabled or not.\n */\n set isEnabled(value) {\n if (this._isEnabled === value) {\n return;\n }\n this._isEnabled = value;\n this._updateParameters();\n }\n /**\n * Method called each time the image processing information changes requires to recompile the effect.\n */\n _updateParameters() {\n this.onUpdateParameters.notifyObservers(this);\n }\n /**\n * Gets the current class name.\n * @returns \"ImageProcessingConfiguration\"\n */\n getClassName() {\n return \"ImageProcessingConfiguration\";\n }\n /**\n * Prepare the list of defines associated to the shader.\n * @param defines the list of defines to complete\n * @param forPostProcess Define if we are currently in post process mode or not\n */\n prepareDefines(defines, forPostProcess = false) {\n if (forPostProcess !== this.applyByPostProcess || !this._isEnabled) {\n defines.VIGNETTE = false;\n defines.TONEMAPPING = 0;\n defines.CONTRAST = false;\n defines.EXPOSURE = false;\n defines.COLORCURVES = false;\n defines.COLORGRADING = false;\n defines.COLORGRADING3D = false;\n defines.DITHER = false;\n defines.IMAGEPROCESSING = false;\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess && this._isEnabled;\n return;\n }\n defines.VIGNETTE = this.vignetteEnabled;\n defines.VIGNETTEBLENDMODEMULTIPLY = this.vignetteBlendMode === ImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY;\n defines.VIGNETTEBLENDMODEOPAQUE = !defines.VIGNETTEBLENDMODEMULTIPLY;\n if (!this._toneMappingEnabled) {\n defines.TONEMAPPING = 0;\n }\n else {\n switch (this._toneMappingType) {\n case ImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL:\n defines.TONEMAPPING = 3;\n break;\n case ImageProcessingConfiguration.TONEMAPPING_ACES:\n defines.TONEMAPPING = 2;\n break;\n default:\n defines.TONEMAPPING = 1;\n break;\n }\n }\n defines.CONTRAST = this.contrast !== 1.0;\n defines.EXPOSURE = this.exposure !== 1.0;\n defines.COLORCURVES = this.colorCurvesEnabled && !!this.colorCurves;\n defines.COLORGRADING = this.colorGradingEnabled && !!this.colorGradingTexture;\n if (defines.COLORGRADING) {\n defines.COLORGRADING3D = this.colorGradingTexture.is3D;\n }\n else {\n defines.COLORGRADING3D = false;\n }\n defines.SAMPLER3DGREENDEPTH = this.colorGradingWithGreenDepth;\n defines.SAMPLER3DBGRMAP = this.colorGradingBGR;\n defines.DITHER = this._ditheringEnabled;\n defines.IMAGEPROCESSINGPOSTPROCESS = this.applyByPostProcess;\n defines.SKIPFINALCOLORCLAMP = this.skipFinalColorClamp;\n defines.IMAGEPROCESSING =\n defines.VIGNETTE || !!defines.TONEMAPPING || defines.CONTRAST || defines.EXPOSURE || defines.COLORCURVES || defines.COLORGRADING || defines.DITHER;\n }\n /**\n * Returns true if all the image processing information are ready.\n * @returns True if ready, otherwise, false\n */\n isReady() {\n // Color Grading texture can not be none blocking.\n return !this.colorGradingEnabled || !this.colorGradingTexture || this.colorGradingTexture.isReady();\n }\n /**\n * Binds the image processing to the shader.\n * @param effect The effect to bind to\n * @param overrideAspectRatio Override the aspect ratio of the effect\n */\n bind(effect, overrideAspectRatio) {\n // Color Curves\n if (this._colorCurvesEnabled && this.colorCurves) {\n ColorCurves.Bind(this.colorCurves, effect);\n }\n // Vignette and dither handled together due to common uniform.\n if (this._vignetteEnabled || this._ditheringEnabled) {\n const inverseWidth = 1 / effect.getEngine().getRenderWidth();\n const inverseHeight = 1 / effect.getEngine().getRenderHeight();\n effect.setFloat2(\"vInverseScreenSize\", inverseWidth, inverseHeight);\n if (this._ditheringEnabled) {\n effect.setFloat(\"ditherIntensity\", 0.5 * this._ditheringIntensity);\n }\n if (this._vignetteEnabled) {\n const aspectRatio = overrideAspectRatio != null ? overrideAspectRatio : inverseHeight / inverseWidth;\n let vignetteScaleY = Math.tan(this.vignetteCameraFov * 0.5);\n let vignetteScaleX = vignetteScaleY * aspectRatio;\n const vignetteScaleGeometricMean = Math.sqrt(vignetteScaleX * vignetteScaleY);\n vignetteScaleX = Mix(vignetteScaleX, vignetteScaleGeometricMean, this.vignetteStretch);\n vignetteScaleY = Mix(vignetteScaleY, vignetteScaleGeometricMean, this.vignetteStretch);\n effect.setFloat4(\"vignetteSettings1\", vignetteScaleX, vignetteScaleY, -vignetteScaleX * this.vignetteCenterX, -vignetteScaleY * this.vignetteCenterY);\n const vignettePower = -2.0 * this.vignetteWeight;\n effect.setFloat4(\"vignetteSettings2\", this.vignetteColor.r, this.vignetteColor.g, this.vignetteColor.b, vignettePower);\n }\n }\n // Exposure\n effect.setFloat(\"exposureLinear\", this.exposure);\n // Contrast\n effect.setFloat(\"contrast\", this.contrast);\n // Color transform settings\n if (this.colorGradingTexture) {\n effect.setTexture(\"txColorTransform\", this.colorGradingTexture);\n const textureSize = this.colorGradingTexture.getSize().height;\n effect.setFloat4(\"colorTransformSettings\", (textureSize - 1) / textureSize, // textureScale\n 0.5 / textureSize, // textureOffset\n textureSize, // textureSize\n this.colorGradingTexture.level // weight\n );\n }\n }\n /**\n * Clones the current image processing instance.\n * @returns The cloned image processing\n */\n clone() {\n return SerializationHelper.Clone(() => new ImageProcessingConfiguration(), this);\n }\n /**\n * Serializes the current image processing instance to a json representation.\n * @returns a JSON representation\n */\n serialize() {\n return SerializationHelper.Serialize(this);\n }\n /**\n * Parses the image processing from a json representation.\n * @param source the JSON source to parse\n * @returns The parsed image processing\n */\n static Parse(source) {\n const parsed = SerializationHelper.Parse(() => new ImageProcessingConfiguration(), source, null, null);\n // Backward compatibility\n if (source.vignetteCentreX !== undefined) {\n parsed.vignetteCenterX = source.vignetteCentreX;\n }\n if (source.vignetteCentreY !== undefined) {\n parsed.vignetteCenterY = source.vignetteCentreY;\n }\n return parsed;\n }\n /**\n * Used to apply the vignette as a mix with the pixel color.\n */\n static get VIGNETTEMODE_MULTIPLY() {\n return this._VIGNETTEMODE_MULTIPLY;\n }\n /**\n * Used to apply the vignette as a replacement of the pixel color.\n */\n static get VIGNETTEMODE_OPAQUE() {\n return this._VIGNETTEMODE_OPAQUE;\n }\n}\n/**\n * Default tone mapping applied in BabylonJS.\n */\nImageProcessingConfiguration.TONEMAPPING_STANDARD = 0;\n/**\n * ACES Tone mapping (used by default in unreal and unity). This can help getting closer\n * to other engines rendering to increase portability.\n */\nImageProcessingConfiguration.TONEMAPPING_ACES = 1;\n/**\n * Neutral Tone mapping developped by the Khronos group in order to constrain\n * values between 0 and 1 without shifting Hue.\n */\nImageProcessingConfiguration.TONEMAPPING_KHR_PBR_NEUTRAL = 2;\n/**\n * Prepare the list of uniforms associated with the Image Processing effects.\n * @param uniforms The list of uniforms used in the effect\n * @param defines the list of defines currently in use\n */\nImageProcessingConfiguration.PrepareUniforms = PrepareUniformsForImageProcessing;\n/**\n * Prepare the list of samplers associated with the Image Processing effects.\n * @param samplersList The list of uniforms used in the effect\n * @param defines the list of defines currently in use\n */\nImageProcessingConfiguration.PrepareSamplers = PrepareSamplersForImageProcessing;\n// Static constants associated to the image processing.\nImageProcessingConfiguration._VIGNETTEMODE_MULTIPLY = 0;\nImageProcessingConfiguration._VIGNETTEMODE_OPAQUE = 1;\n__decorate([\n serializeAsColorCurves()\n], ImageProcessingConfiguration.prototype, \"colorCurves\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_colorCurvesEnabled\", void 0);\n__decorate([\n serializeAsTexture(\"colorGradingTexture\")\n], ImageProcessingConfiguration.prototype, \"_colorGradingTexture\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_colorGradingEnabled\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_colorGradingWithGreenDepth\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_colorGradingBGR\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_exposure\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_toneMappingEnabled\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_toneMappingType\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_contrast\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"vignetteStretch\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"vignetteCenterX\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"vignetteCenterY\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"vignetteWeight\", void 0);\n__decorate([\n serializeAsColor4()\n], ImageProcessingConfiguration.prototype, \"vignetteColor\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"vignetteCameraFov\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_vignetteBlendMode\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_vignetteEnabled\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_ditheringEnabled\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_ditheringIntensity\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_skipFinalColorClamp\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_applyByPostProcess\", void 0);\n__decorate([\n serialize()\n], ImageProcessingConfiguration.prototype, \"_isEnabled\", void 0);\n// References the dependencies.\nSerializationHelper._ImageProcessingConfigurationParser = ImageProcessingConfiguration.Parse;\n// Register Class Name\nRegisterClass(\"BABYLON.ImageProcessingConfiguration\", ImageProcessingConfiguration);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}