1 |
- {"ast":null,"code":"import { __decorate } from \"../../../tslib.es6.js\";\nimport { serialize } from \"../../../Misc/decorators.js\";\nimport { SerializationHelper } from \"../../../Misc/decorators.serialization.js\";\nimport { Observable } from \"../../../Misc/observable.js\";\nimport { Logger } from \"../../../Misc/logger.js\";\nimport { Texture } from \"../../../Materials/Textures/texture.js\";\nimport { GlowLayer } from \"../../../Layers/glowLayer.js\";\nimport { SharpenPostProcess } from \"../../../PostProcesses/sharpenPostProcess.js\";\nimport { ImageProcessingPostProcess } from \"../../../PostProcesses/imageProcessingPostProcess.js\";\nimport { ChromaticAberrationPostProcess } from \"../../../PostProcesses/chromaticAberrationPostProcess.js\";\nimport { GrainPostProcess } from \"../../../PostProcesses/grainPostProcess.js\";\nimport { FxaaPostProcess } from \"../../../PostProcesses/fxaaPostProcess.js\";\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline.js\";\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect.js\";\nimport { DepthOfFieldEffect } from \"../../../PostProcesses/depthOfFieldEffect.js\";\nimport { BloomEffect } from \"../../../PostProcesses/bloomEffect.js\";\nimport { RegisterClass } from \"../../../Misc/typeStore.js\";\nimport { EngineStore } from \"../../../Engines/engineStore.js\";\nimport { Tools } from \"../../../Misc/tools.js\";\nimport \"../../../PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js\";\n/**\n * The default rendering pipeline can be added to a scene to apply common post processing effects such as anti-aliasing or depth of field.\n * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/defaultRenderingPipeline\n */\nexport class DefaultRenderingPipeline extends PostProcessRenderPipeline {\n /**\n * Enable or disable automatic building of the pipeline when effects are enabled and disabled.\n * If false, you will have to manually call prepare() to update the pipeline.\n */\n get automaticBuild() {\n return this._buildAllowed;\n }\n set automaticBuild(value) {\n this._buildAllowed = value;\n }\n /**\n * Gets active scene\n */\n get scene() {\n return this._scene;\n }\n /**\n * Enable or disable the sharpen process from the pipeline\n */\n set sharpenEnabled(enabled) {\n if (this._sharpenEnabled === enabled) {\n return;\n }\n this._sharpenEnabled = enabled;\n this._buildPipeline();\n }\n get sharpenEnabled() {\n return this._sharpenEnabled;\n }\n /**\n * Specifies the size of the bloom blur kernel, relative to the final output size\n */\n get bloomKernel() {\n return this._bloomKernel;\n }\n set bloomKernel(value) {\n this._bloomKernel = value;\n this.bloom.kernel = value / this._hardwareScaleLevel;\n }\n /**\n * The strength of the bloom.\n */\n set bloomWeight(value) {\n if (this._bloomWeight === value) {\n return;\n }\n this.bloom.weight = value;\n this._bloomWeight = value;\n }\n get bloomWeight() {\n return this._bloomWeight;\n }\n /**\n * The luminance threshold to find bright areas of the image to bloom.\n */\n set bloomThreshold(value) {\n if (this._bloomThreshold === value) {\n return;\n }\n this.bloom.threshold = value;\n this._bloomThreshold = value;\n }\n get bloomThreshold() {\n return this._bloomThreshold;\n }\n /**\n * The scale of the bloom, lower value will provide better performance.\n */\n set bloomScale(value) {\n if (this._bloomScale === value) {\n return;\n }\n this._bloomScale = value;\n // recreate bloom and dispose old as this setting is not dynamic\n this._rebuildBloom();\n this._buildPipeline();\n }\n get bloomScale() {\n return this._bloomScale;\n }\n /**\n * Enable or disable the bloom from the pipeline\n */\n set bloomEnabled(enabled) {\n if (this._bloomEnabled === enabled) {\n return;\n }\n this._bloomEnabled = enabled;\n this._buildPipeline();\n }\n get bloomEnabled() {\n return this._bloomEnabled;\n }\n _rebuildBloom() {\n // recreate bloom and dispose old as this setting is not dynamic\n const oldBloom = this.bloom;\n this.bloom = new BloomEffect(this._scene, this.bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, false);\n this.bloom.threshold = oldBloom.threshold;\n for (let i = 0; i < this._cameras.length; i++) {\n oldBloom.disposeEffects(this._cameras[i]);\n }\n }\n /**\n * If the depth of field is enabled.\n */\n get depthOfFieldEnabled() {\n return this._depthOfFieldEnabled;\n }\n set depthOfFieldEnabled(enabled) {\n if (this._depthOfFieldEnabled === enabled) {\n return;\n }\n this._depthOfFieldEnabled = enabled;\n this._buildPipeline();\n }\n /**\n * Blur level of the depth of field effect. (Higher blur will effect performance)\n */\n get depthOfFieldBlurLevel() {\n return this._depthOfFieldBlurLevel;\n }\n set depthOfFieldBlurLevel(value) {\n if (this._depthOfFieldBlurLevel === value) {\n return;\n }\n this._depthOfFieldBlurLevel = value;\n // recreate dof and dispose old as this setting is not dynamic\n const oldDof = this.depthOfField;\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, false);\n this.depthOfField.focalLength = oldDof.focalLength;\n this.depthOfField.focusDistance = oldDof.focusDistance;\n this.depthOfField.fStop = oldDof.fStop;\n this.depthOfField.lensSize = oldDof.lensSize;\n for (let i = 0; i < this._cameras.length; i++) {\n oldDof.disposeEffects(this._cameras[i]);\n }\n this._buildPipeline();\n }\n /**\n * If the anti aliasing is enabled.\n */\n set fxaaEnabled(enabled) {\n if (this._fxaaEnabled === enabled) {\n return;\n }\n this._fxaaEnabled = enabled;\n this._buildPipeline();\n }\n get fxaaEnabled() {\n return this._fxaaEnabled;\n }\n /**\n * MSAA sample count, setting this to 4 will provide 4x anti aliasing. (default: 1)\n */\n set samples(sampleCount) {\n if (this._samples === sampleCount) {\n return;\n }\n this._samples = sampleCount;\n this._buildPipeline();\n }\n get samples() {\n return this._samples;\n }\n /**\n * If image processing is enabled.\n */\n set imageProcessingEnabled(enabled) {\n if (this._imageProcessingEnabled === enabled) {\n return;\n }\n this._scene.imageProcessingConfiguration.isEnabled = enabled;\n }\n get imageProcessingEnabled() {\n return this._imageProcessingEnabled;\n }\n /**\n * If glow layer is enabled. (Adds a glow effect to emmissive materials)\n */\n set glowLayerEnabled(enabled) {\n if (enabled && !this._glowLayer) {\n this._glowLayer = new GlowLayer(\"\", this._scene);\n } else if (!enabled && this._glowLayer) {\n this._glowLayer.dispose();\n this._glowLayer = null;\n }\n }\n get glowLayerEnabled() {\n return this._glowLayer != null;\n }\n /**\n * Gets the glow layer (or null if not defined)\n */\n get glowLayer() {\n return this._glowLayer;\n }\n /**\n * Enable or disable the chromaticAberration process from the pipeline\n */\n set chromaticAberrationEnabled(enabled) {\n if (this._chromaticAberrationEnabled === enabled) {\n return;\n }\n this._chromaticAberrationEnabled = enabled;\n this._buildPipeline();\n }\n get chromaticAberrationEnabled() {\n return this._chromaticAberrationEnabled;\n }\n /**\n * Enable or disable the grain process from the pipeline\n */\n set grainEnabled(enabled) {\n if (this._grainEnabled === enabled) {\n return;\n }\n this._grainEnabled = enabled;\n this._buildPipeline();\n }\n get grainEnabled() {\n return this._grainEnabled;\n }\n /**\n * Instantiates a DefaultRenderingPipeline.\n * @param name The rendering pipeline name (default: \"\")\n * @param hdr If high dynamic range textures should be used (default: true)\n * @param scene The scene linked to this pipeline (default: the last created scene)\n * @param cameras The array of cameras that the rendering pipeline will be attached to (default: scene.cameras)\n * @param automaticBuild If false, you will have to manually call prepare() to update the pipeline (default: true)\n */\n constructor(name = \"\", hdr = true, scene = EngineStore.LastCreatedScene, cameras, automaticBuild = true) {\n super(scene.getEngine(), name);\n this._camerasToBeAttached = [];\n /**\n * ID of the sharpen post process,\n */\n this.SharpenPostProcessId = \"SharpenPostProcessEffect\";\n /**\n * @ignore\n * ID of the image processing post process;\n */\n this.ImageProcessingPostProcessId = \"ImageProcessingPostProcessEffect\";\n /**\n * @ignore\n * ID of the Fast Approximate Anti-Aliasing post process;\n */\n this.FxaaPostProcessId = \"FxaaPostProcessEffect\";\n /**\n * ID of the chromatic aberration post process,\n */\n this.ChromaticAberrationPostProcessId = \"ChromaticAberrationPostProcessEffect\";\n /**\n * ID of the grain post process\n */\n this.GrainPostProcessId = \"GrainPostProcessEffect\";\n /**\n * Glow post process which adds a glow to emissive areas of the image\n */\n this._glowLayer = null;\n /**\n * Animations which can be used to tweak settings over a period of time\n */\n this.animations = [];\n this._imageProcessingConfigurationObserver = null;\n // Values\n this._sharpenEnabled = false;\n this._bloomEnabled = false;\n this._depthOfFieldEnabled = false;\n this._depthOfFieldBlurLevel = 0 /* DepthOfFieldEffectBlurLevel.Low */;\n this._fxaaEnabled = false;\n this._imageProcessingEnabled = true;\n this._bloomScale = 0.5;\n this._chromaticAberrationEnabled = false;\n this._grainEnabled = false;\n this._buildAllowed = true;\n /**\n * This is triggered each time the pipeline has been built.\n */\n this.onBuildObservable = new Observable();\n this._resizeObserver = null;\n this._hardwareScaleLevel = 1.0;\n this._bloomKernel = 64;\n /**\n * Specifies the weight of the bloom in the final rendering\n */\n this._bloomWeight = 0.15;\n /**\n * Specifies the luma threshold for the area that will be blurred by the bloom\n */\n this._bloomThreshold = 0.9;\n this._samples = 1;\n this._hasCleared = false;\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._depthOfFieldSceneObserver = null;\n this._activeCameraChangedObserver = null;\n this._activeCamerasChangedObserver = null;\n this._cameras = cameras || scene.cameras;\n this._cameras = this._cameras.slice();\n this._camerasToBeAttached = this._cameras.slice();\n this._buildAllowed = automaticBuild;\n // Initialize\n this._scene = scene;\n const caps = this._scene.getEngine().getCaps();\n this._hdr = hdr && (caps.textureHalfFloatRender || caps.textureFloatRender);\n // Misc\n if (this._hdr) {\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = 2;\n } else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = 1;\n }\n } else {\n this._defaultPipelineTextureType = 0;\n }\n // Attach\n scene.postProcessRenderPipelineManager.addPipeline(this);\n const engine = this._scene.getEngine();\n // Create post processes before hand so they can be modified before enabled.\n // Block compilation flag is set to true to avoid compilation prior to use, these will be updated on first use in build pipeline.\n this.sharpen = new SharpenPostProcess(\"sharpen\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._sharpenEffect = new PostProcessRenderEffect(engine, this.SharpenPostProcessId, () => {\n return this.sharpen;\n }, true);\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, true);\n // To keep the bloom sizes consistent across different display densities, factor in the hardware scaling level.\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this._resizeObserver = engine.onResizeObservable.add(() => {\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this.bloomKernel = this._bloomKernel;\n });\n this.bloom = new BloomEffect(this._scene, this._bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, true);\n this.chromaticAberration = new ChromaticAberrationPostProcess(\"ChromaticAberration\", engine.getRenderWidth(), engine.getRenderHeight(), 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._chromaticAberrationEffect = new PostProcessRenderEffect(engine, this.ChromaticAberrationPostProcessId, () => {\n return this.chromaticAberration;\n }, true);\n this.grain = new GrainPostProcess(\"Grain\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._grainEffect = new PostProcessRenderEffect(engine, this.GrainPostProcessId, () => {\n return this.grain;\n }, true);\n let avoidReentrancyAtConstructionTime = true;\n this._imageProcessingConfigurationObserver = this._scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this.bloom._downscale._exposure = this._scene.imageProcessingConfiguration.exposure;\n if (this.imageProcessingEnabled !== this._scene.imageProcessingConfiguration.isEnabled) {\n this._imageProcessingEnabled = this._scene.imageProcessingConfiguration.isEnabled;\n // Avoid re-entrant problems by deferring the call to _buildPipeline because the call to _buildPipeline\n // at the end of the constructor could end up triggering imageProcessingConfiguration.onUpdateParameters!\n // Note that the pipeline could have been disposed before the deferred call was executed, but in that case\n // _buildAllowed will have been set to false, preventing _buildPipeline from being executed.\n if (avoidReentrancyAtConstructionTime) {\n Tools.SetImmediate(() => {\n this._buildPipeline();\n });\n } else {\n this._buildPipeline();\n }\n }\n });\n this._buildPipeline();\n avoidReentrancyAtConstructionTime = false;\n }\n /**\n * Get the class name\n * @returns \"DefaultRenderingPipeline\"\n */\n getClassName() {\n return \"DefaultRenderingPipeline\";\n }\n /**\n * Force the compilation of the entire pipeline.\n */\n prepare() {\n const previousState = this._buildAllowed;\n this._buildAllowed = true;\n this._buildPipeline();\n this._buildAllowed = previousState;\n }\n _setAutoClearAndTextureSharing(postProcess, skipTextureSharing = false) {\n if (this._hasCleared) {\n postProcess.autoClear = false;\n } else {\n postProcess.autoClear = true;\n this._scene.autoClear = false;\n this._hasCleared = true;\n }\n if (!skipTextureSharing) {\n if (this._prevPrevPostProcess) {\n postProcess.shareOutputWith(this._prevPrevPostProcess);\n } else {\n postProcess.useOwnOutput();\n }\n if (this._prevPostProcess) {\n this._prevPrevPostProcess = this._prevPostProcess;\n }\n this._prevPostProcess = postProcess;\n }\n }\n _buildPipeline() {\n if (!this._buildAllowed) {\n return;\n }\n this._scene.autoClear = true;\n const engine = this._scene.getEngine();\n this._disposePostProcesses();\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n // get back cameras to be used to reattach pipeline\n this._cameras = this._camerasToBeAttached.slice();\n }\n this._reset();\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._hasCleared = false;\n if (this.depthOfFieldEnabled) {\n // Multi camera suport\n if (this._cameras.length > 1) {\n for (const camera of this._cameras) {\n const depthRenderer = this._scene.enableDepthRenderer(camera);\n depthRenderer.useOnlyInActiveCamera = true;\n }\n this._depthOfFieldSceneObserver = this._scene.onAfterRenderTargetsRenderObservable.add(scene => {\n if (this._cameras.indexOf(scene.activeCamera) > -1) {\n this.depthOfField.depthTexture = scene.enableDepthRenderer(scene.activeCamera).getDepthMap();\n }\n });\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n const depthRenderer = this._scene.enableDepthRenderer(this._cameras[0]);\n this.depthOfField.depthTexture = depthRenderer.getDepthMap();\n }\n if (!this.depthOfField._isReady()) {\n this.depthOfField._updateEffects();\n }\n this.addEffect(this.depthOfField);\n this._setAutoClearAndTextureSharing(this.depthOfField._effects[0], true);\n } else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n }\n if (this.bloomEnabled) {\n if (!this.bloom._isReady()) {\n this.bloom._updateEffects();\n }\n this.addEffect(this.bloom);\n this._setAutoClearAndTextureSharing(this.bloom._effects[0], true);\n }\n if (this._imageProcessingEnabled) {\n this.imageProcessing = new ImageProcessingPostProcess(\"imageProcessing\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, this.scene.imageProcessingConfiguration);\n if (this._hdr) {\n this.addEffect(new PostProcessRenderEffect(engine, this.ImageProcessingPostProcessId, () => {\n return this.imageProcessing;\n }, true));\n this._setAutoClearAndTextureSharing(this.imageProcessing);\n } else {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n if (!this._cameras || this._cameras.length === 0) {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n if (!this.imageProcessing.getEffect()) {\n this.imageProcessing._updateParameters();\n }\n }\n if (this.sharpenEnabled) {\n if (!this.sharpen.isReady()) {\n this.sharpen.updateEffect();\n }\n this.addEffect(this._sharpenEffect);\n this._setAutoClearAndTextureSharing(this.sharpen);\n }\n if (this.grainEnabled) {\n if (!this.grain.isReady()) {\n this.grain.updateEffect();\n }\n this.addEffect(this._grainEffect);\n this._setAutoClearAndTextureSharing(this.grain);\n }\n if (this.chromaticAberrationEnabled) {\n if (!this.chromaticAberration.isReady()) {\n this.chromaticAberration.updateEffect();\n }\n this.addEffect(this._chromaticAberrationEffect);\n this._setAutoClearAndTextureSharing(this.chromaticAberration);\n }\n if (this.fxaaEnabled) {\n this.fxaa = new FxaaPostProcess(\"fxaa\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType);\n this.addEffect(new PostProcessRenderEffect(engine, this.FxaaPostProcessId, () => {\n return this.fxaa;\n }, true));\n this._setAutoClearAndTextureSharing(this.fxaa, true);\n }\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(this._name, this._cameras);\n }\n // In multicamera mode, the scene needs to autoclear in between cameras.\n if (this._scene.activeCameras && this._scene.activeCameras.length > 1 || this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1) {\n this._scene.autoClear = true;\n }\n // The active camera on the scene can be changed anytime\n if (!this._activeCameraChangedObserver) {\n this._activeCameraChangedObserver = this._scene.onActiveCameraChanged.add(() => {\n if (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1) {\n this._scene.autoClear = true;\n }\n });\n }\n if (!this._activeCamerasChangedObserver) {\n this._activeCamerasChangedObserver = this._scene.onActiveCamerasChanged.add(() => {\n if (this._scene.activeCameras && this._scene.activeCameras.length > 1) {\n this._scene.autoClear = true;\n }\n });\n }\n this._adaptPostProcessesToViewPort();\n if (!this._enableMSAAOnFirstPostProcess(this.samples) && this.samples > 1) {\n Logger.Warn(\"MSAA failed to enable, MSAA is only supported in browsers that support webGL >= 2.0\");\n }\n this.onBuildObservable.notifyObservers(this);\n }\n _disposePostProcesses(disposeNonRecreated = false) {\n for (let i = 0; i < this._cameras.length; i++) {\n const camera = this._cameras[i];\n if (this.imageProcessing) {\n this.imageProcessing.dispose(camera);\n }\n if (this.fxaa) {\n this.fxaa.dispose(camera);\n }\n // These are created in the constructor and should not be disposed on every pipeline change\n if (disposeNonRecreated) {\n if (this.sharpen) {\n this.sharpen.dispose(camera);\n }\n if (this.depthOfField) {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n this.depthOfField.disposeEffects(camera);\n }\n if (this.bloom) {\n this.bloom.disposeEffects(camera);\n }\n if (this.chromaticAberration) {\n this.chromaticAberration.dispose(camera);\n }\n if (this.grain) {\n this.grain.dispose(camera);\n }\n if (this._glowLayer) {\n this._glowLayer.dispose();\n }\n }\n }\n this.imageProcessing = null;\n this.fxaa = null;\n if (disposeNonRecreated) {\n this.sharpen = null;\n this._sharpenEffect = null;\n this.depthOfField = null;\n this.bloom = null;\n this.chromaticAberration = null;\n this._chromaticAberrationEffect = null;\n this.grain = null;\n this._grainEffect = null;\n this._glowLayer = null;\n }\n }\n /**\n * Adds a camera to the pipeline\n * @param camera the camera to be added\n */\n addCamera(camera) {\n this._camerasToBeAttached.push(camera);\n this._buildPipeline();\n }\n /**\n * Removes a camera from the pipeline\n * @param camera the camera to remove\n */\n removeCamera(camera) {\n const index = this._camerasToBeAttached.indexOf(camera);\n this._camerasToBeAttached.splice(index, 1);\n this._buildPipeline();\n }\n /**\n * Dispose of the pipeline and stop all post processes\n */\n dispose() {\n this._buildAllowed = false;\n this.onBuildObservable.clear();\n this._disposePostProcesses(true);\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n this._scene._postProcessRenderPipelineManager.removePipeline(this.name);\n this._scene.autoClear = true;\n if (this._resizeObserver) {\n this._scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n this._resizeObserver = null;\n }\n this._scene.onActiveCameraChanged.remove(this._activeCameraChangedObserver);\n this._scene.onActiveCamerasChanged.remove(this._activeCamerasChangedObserver);\n this._scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigurationObserver);\n super.dispose();\n }\n /**\n * Serialize the rendering pipeline (Used when exporting)\n * @returns the serialized object\n */\n serialize() {\n const serializationObject = SerializationHelper.Serialize(this);\n serializationObject.customType = \"DefaultRenderingPipeline\";\n return serializationObject;\n }\n /**\n * Parse the serialized pipeline\n * @param source Source pipeline.\n * @param scene The scene to load the pipeline to.\n * @param rootUrl The URL of the serialized pipeline.\n * @returns An instantiated pipeline from the serialized object.\n */\n static Parse(source, scene, rootUrl) {\n return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._name._hdr, scene), source, scene, rootUrl);\n }\n}\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"sharpenEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"bloomKernel\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"_bloomWeight\", void 0);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"_bloomThreshold\", void 0);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"_hdr\", void 0);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"bloomWeight\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"bloomThreshold\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"bloomScale\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"bloomEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"depthOfFieldEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"depthOfFieldBlurLevel\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"fxaaEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"samples\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"imageProcessingEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"glowLayerEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"chromaticAberrationEnabled\", null);\n__decorate([serialize()], DefaultRenderingPipeline.prototype, \"grainEnabled\", null);\nRegisterClass(\"BABYLON.DefaultRenderingPipeline\", DefaultRenderingPipeline);","map":{"version":3,"names":["__decorate","serialize","SerializationHelper","Observable","Logger","Texture","GlowLayer","SharpenPostProcess","ImageProcessingPostProcess","ChromaticAberrationPostProcess","GrainPostProcess","FxaaPostProcess","PostProcessRenderPipeline","PostProcessRenderEffect","DepthOfFieldEffect","BloomEffect","RegisterClass","EngineStore","Tools","DefaultRenderingPipeline","automaticBuild","_buildAllowed","value","scene","_scene","sharpenEnabled","enabled","_sharpenEnabled","_buildPipeline","bloomKernel","_bloomKernel","bloom","kernel","_hardwareScaleLevel","bloomWeight","_bloomWeight","weight","bloomThreshold","_bloomThreshold","threshold","bloomScale","_bloomScale","_rebuildBloom","bloomEnabled","_bloomEnabled","oldBloom","_defaultPipelineTextureType","i","_cameras","length","disposeEffects","depthOfFieldEnabled","_depthOfFieldEnabled","depthOfFieldBlurLevel","_depthOfFieldBlurLevel","oldDof","depthOfField","focalLength","focusDistance","fStop","lensSize","fxaaEnabled","_fxaaEnabled","samples","sampleCount","_samples","imageProcessingEnabled","_imageProcessingEnabled","imageProcessingConfiguration","isEnabled","glowLayerEnabled","_glowLayer","dispose","glowLayer","chromaticAberrationEnabled","_chromaticAberrationEnabled","grainEnabled","_grainEnabled","constructor","name","hdr","LastCreatedScene","cameras","getEngine","_camerasToBeAttached","SharpenPostProcessId","ImageProcessingPostProcessId","FxaaPostProcessId","ChromaticAberrationPostProcessId","GrainPostProcessId","animations","_imageProcessingConfigurationObserver","onBuildObservable","_resizeObserver","_hasCleared","_prevPostProcess","_prevPrevPostProcess","_depthOfFieldSceneObserver","_activeCameraChangedObserver","_activeCamerasChangedObserver","slice","caps","getCaps","_hdr","textureHalfFloatRender","textureFloatRender","postProcessRenderPipelineManager","addPipeline","engine","sharpen","BILINEAR_SAMPLINGMODE","_sharpenEffect","getHardwareScalingLevel","onResizeObservable","add","chromaticAberration","getRenderWidth","getRenderHeight","_chromaticAberrationEffect","grain","_grainEffect","avoidReentrancyAtConstructionTime","onUpdateParameters","_downscale","_exposure","exposure","SetImmediate","getClassName","prepare","previousState","_setAutoClearAndTextureSharing","postProcess","skipTextureSharing","autoClear","shareOutputWith","useOwnOutput","_disposePostProcesses","detachCamerasFromRenderPipeline","_name","_reset","camera","depthRenderer","enableDepthRenderer","useOnlyInActiveCamera","onAfterRenderTargetsRenderObservable","indexOf","activeCamera","depthTexture","getDepthMap","remove","_isReady","_updateEffects","addEffect","_effects","imageProcessing","applyByPostProcess","getEffect","_updateParameters","isReady","updateEffect","fxaa","attachCamerasToRenderPipeline","activeCameras","onActiveCameraChanged","onActiveCamerasChanged","_adaptPostProcessesToViewPort","_enableMSAAOnFirstPostProcess","Warn","notifyObservers","disposeNonRecreated","addCamera","push","removeCamera","index","splice","clear","_postProcessRenderPipelineManager","removePipeline","serializationObject","Serialize","customType","Parse","source","rootUrl","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js"],"sourcesContent":["import { __decorate } from \"../../../tslib.es6.js\";\nimport { serialize } from \"../../../Misc/decorators.js\";\nimport { SerializationHelper } from \"../../../Misc/decorators.serialization.js\";\nimport { Observable } from \"../../../Misc/observable.js\";\nimport { Logger } from \"../../../Misc/logger.js\";\nimport { Texture } from \"../../../Materials/Textures/texture.js\";\n\nimport { GlowLayer } from \"../../../Layers/glowLayer.js\";\nimport { SharpenPostProcess } from \"../../../PostProcesses/sharpenPostProcess.js\";\nimport { ImageProcessingPostProcess } from \"../../../PostProcesses/imageProcessingPostProcess.js\";\nimport { ChromaticAberrationPostProcess } from \"../../../PostProcesses/chromaticAberrationPostProcess.js\";\nimport { GrainPostProcess } from \"../../../PostProcesses/grainPostProcess.js\";\nimport { FxaaPostProcess } from \"../../../PostProcesses/fxaaPostProcess.js\";\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline.js\";\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect.js\";\nimport { DepthOfFieldEffect } from \"../../../PostProcesses/depthOfFieldEffect.js\";\nimport { BloomEffect } from \"../../../PostProcesses/bloomEffect.js\";\nimport { RegisterClass } from \"../../../Misc/typeStore.js\";\nimport { EngineStore } from \"../../../Engines/engineStore.js\";\nimport { Tools } from \"../../../Misc/tools.js\";\nimport \"../../../PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js\";\n/**\n * The default rendering pipeline can be added to a scene to apply common post processing effects such as anti-aliasing or depth of field.\n * See https://doc.babylonjs.com/features/featuresDeepDive/postProcesses/defaultRenderingPipeline\n */\nexport class DefaultRenderingPipeline extends PostProcessRenderPipeline {\n /**\n * Enable or disable automatic building of the pipeline when effects are enabled and disabled.\n * If false, you will have to manually call prepare() to update the pipeline.\n */\n get automaticBuild() {\n return this._buildAllowed;\n }\n set automaticBuild(value) {\n this._buildAllowed = value;\n }\n /**\n * Gets active scene\n */\n get scene() {\n return this._scene;\n }\n /**\n * Enable or disable the sharpen process from the pipeline\n */\n set sharpenEnabled(enabled) {\n if (this._sharpenEnabled === enabled) {\n return;\n }\n this._sharpenEnabled = enabled;\n this._buildPipeline();\n }\n get sharpenEnabled() {\n return this._sharpenEnabled;\n }\n /**\n * Specifies the size of the bloom blur kernel, relative to the final output size\n */\n get bloomKernel() {\n return this._bloomKernel;\n }\n set bloomKernel(value) {\n this._bloomKernel = value;\n this.bloom.kernel = value / this._hardwareScaleLevel;\n }\n /**\n * The strength of the bloom.\n */\n set bloomWeight(value) {\n if (this._bloomWeight === value) {\n return;\n }\n this.bloom.weight = value;\n this._bloomWeight = value;\n }\n get bloomWeight() {\n return this._bloomWeight;\n }\n /**\n * The luminance threshold to find bright areas of the image to bloom.\n */\n set bloomThreshold(value) {\n if (this._bloomThreshold === value) {\n return;\n }\n this.bloom.threshold = value;\n this._bloomThreshold = value;\n }\n get bloomThreshold() {\n return this._bloomThreshold;\n }\n /**\n * The scale of the bloom, lower value will provide better performance.\n */\n set bloomScale(value) {\n if (this._bloomScale === value) {\n return;\n }\n this._bloomScale = value;\n // recreate bloom and dispose old as this setting is not dynamic\n this._rebuildBloom();\n this._buildPipeline();\n }\n get bloomScale() {\n return this._bloomScale;\n }\n /**\n * Enable or disable the bloom from the pipeline\n */\n set bloomEnabled(enabled) {\n if (this._bloomEnabled === enabled) {\n return;\n }\n this._bloomEnabled = enabled;\n this._buildPipeline();\n }\n get bloomEnabled() {\n return this._bloomEnabled;\n }\n _rebuildBloom() {\n // recreate bloom and dispose old as this setting is not dynamic\n const oldBloom = this.bloom;\n this.bloom = new BloomEffect(this._scene, this.bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, false);\n this.bloom.threshold = oldBloom.threshold;\n for (let i = 0; i < this._cameras.length; i++) {\n oldBloom.disposeEffects(this._cameras[i]);\n }\n }\n /**\n * If the depth of field is enabled.\n */\n get depthOfFieldEnabled() {\n return this._depthOfFieldEnabled;\n }\n set depthOfFieldEnabled(enabled) {\n if (this._depthOfFieldEnabled === enabled) {\n return;\n }\n this._depthOfFieldEnabled = enabled;\n this._buildPipeline();\n }\n /**\n * Blur level of the depth of field effect. (Higher blur will effect performance)\n */\n get depthOfFieldBlurLevel() {\n return this._depthOfFieldBlurLevel;\n }\n set depthOfFieldBlurLevel(value) {\n if (this._depthOfFieldBlurLevel === value) {\n return;\n }\n this._depthOfFieldBlurLevel = value;\n // recreate dof and dispose old as this setting is not dynamic\n const oldDof = this.depthOfField;\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, false);\n this.depthOfField.focalLength = oldDof.focalLength;\n this.depthOfField.focusDistance = oldDof.focusDistance;\n this.depthOfField.fStop = oldDof.fStop;\n this.depthOfField.lensSize = oldDof.lensSize;\n for (let i = 0; i < this._cameras.length; i++) {\n oldDof.disposeEffects(this._cameras[i]);\n }\n this._buildPipeline();\n }\n /**\n * If the anti aliasing is enabled.\n */\n set fxaaEnabled(enabled) {\n if (this._fxaaEnabled === enabled) {\n return;\n }\n this._fxaaEnabled = enabled;\n this._buildPipeline();\n }\n get fxaaEnabled() {\n return this._fxaaEnabled;\n }\n /**\n * MSAA sample count, setting this to 4 will provide 4x anti aliasing. (default: 1)\n */\n set samples(sampleCount) {\n if (this._samples === sampleCount) {\n return;\n }\n this._samples = sampleCount;\n this._buildPipeline();\n }\n get samples() {\n return this._samples;\n }\n /**\n * If image processing is enabled.\n */\n set imageProcessingEnabled(enabled) {\n if (this._imageProcessingEnabled === enabled) {\n return;\n }\n this._scene.imageProcessingConfiguration.isEnabled = enabled;\n }\n get imageProcessingEnabled() {\n return this._imageProcessingEnabled;\n }\n /**\n * If glow layer is enabled. (Adds a glow effect to emmissive materials)\n */\n set glowLayerEnabled(enabled) {\n if (enabled && !this._glowLayer) {\n this._glowLayer = new GlowLayer(\"\", this._scene);\n }\n else if (!enabled && this._glowLayer) {\n this._glowLayer.dispose();\n this._glowLayer = null;\n }\n }\n get glowLayerEnabled() {\n return this._glowLayer != null;\n }\n /**\n * Gets the glow layer (or null if not defined)\n */\n get glowLayer() {\n return this._glowLayer;\n }\n /**\n * Enable or disable the chromaticAberration process from the pipeline\n */\n set chromaticAberrationEnabled(enabled) {\n if (this._chromaticAberrationEnabled === enabled) {\n return;\n }\n this._chromaticAberrationEnabled = enabled;\n this._buildPipeline();\n }\n get chromaticAberrationEnabled() {\n return this._chromaticAberrationEnabled;\n }\n /**\n * Enable or disable the grain process from the pipeline\n */\n set grainEnabled(enabled) {\n if (this._grainEnabled === enabled) {\n return;\n }\n this._grainEnabled = enabled;\n this._buildPipeline();\n }\n get grainEnabled() {\n return this._grainEnabled;\n }\n /**\n * Instantiates a DefaultRenderingPipeline.\n * @param name The rendering pipeline name (default: \"\")\n * @param hdr If high dynamic range textures should be used (default: true)\n * @param scene The scene linked to this pipeline (default: the last created scene)\n * @param cameras The array of cameras that the rendering pipeline will be attached to (default: scene.cameras)\n * @param automaticBuild If false, you will have to manually call prepare() to update the pipeline (default: true)\n */\n constructor(name = \"\", hdr = true, scene = EngineStore.LastCreatedScene, cameras, automaticBuild = true) {\n super(scene.getEngine(), name);\n this._camerasToBeAttached = [];\n /**\n * ID of the sharpen post process,\n */\n this.SharpenPostProcessId = \"SharpenPostProcessEffect\";\n /**\n * @ignore\n * ID of the image processing post process;\n */\n this.ImageProcessingPostProcessId = \"ImageProcessingPostProcessEffect\";\n /**\n * @ignore\n * ID of the Fast Approximate Anti-Aliasing post process;\n */\n this.FxaaPostProcessId = \"FxaaPostProcessEffect\";\n /**\n * ID of the chromatic aberration post process,\n */\n this.ChromaticAberrationPostProcessId = \"ChromaticAberrationPostProcessEffect\";\n /**\n * ID of the grain post process\n */\n this.GrainPostProcessId = \"GrainPostProcessEffect\";\n /**\n * Glow post process which adds a glow to emissive areas of the image\n */\n this._glowLayer = null;\n /**\n * Animations which can be used to tweak settings over a period of time\n */\n this.animations = [];\n this._imageProcessingConfigurationObserver = null;\n // Values\n this._sharpenEnabled = false;\n this._bloomEnabled = false;\n this._depthOfFieldEnabled = false;\n this._depthOfFieldBlurLevel = 0 /* DepthOfFieldEffectBlurLevel.Low */;\n this._fxaaEnabled = false;\n this._imageProcessingEnabled = true;\n this._bloomScale = 0.5;\n this._chromaticAberrationEnabled = false;\n this._grainEnabled = false;\n this._buildAllowed = true;\n /**\n * This is triggered each time the pipeline has been built.\n */\n this.onBuildObservable = new Observable();\n this._resizeObserver = null;\n this._hardwareScaleLevel = 1.0;\n this._bloomKernel = 64;\n /**\n * Specifies the weight of the bloom in the final rendering\n */\n this._bloomWeight = 0.15;\n /**\n * Specifies the luma threshold for the area that will be blurred by the bloom\n */\n this._bloomThreshold = 0.9;\n this._samples = 1;\n this._hasCleared = false;\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._depthOfFieldSceneObserver = null;\n this._activeCameraChangedObserver = null;\n this._activeCamerasChangedObserver = null;\n this._cameras = cameras || scene.cameras;\n this._cameras = this._cameras.slice();\n this._camerasToBeAttached = this._cameras.slice();\n this._buildAllowed = automaticBuild;\n // Initialize\n this._scene = scene;\n const caps = this._scene.getEngine().getCaps();\n this._hdr = hdr && (caps.textureHalfFloatRender || caps.textureFloatRender);\n // Misc\n if (this._hdr) {\n if (caps.textureHalfFloatRender) {\n this._defaultPipelineTextureType = 2;\n }\n else if (caps.textureFloatRender) {\n this._defaultPipelineTextureType = 1;\n }\n }\n else {\n this._defaultPipelineTextureType = 0;\n }\n // Attach\n scene.postProcessRenderPipelineManager.addPipeline(this);\n const engine = this._scene.getEngine();\n // Create post processes before hand so they can be modified before enabled.\n // Block compilation flag is set to true to avoid compilation prior to use, these will be updated on first use in build pipeline.\n this.sharpen = new SharpenPostProcess(\"sharpen\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._sharpenEffect = new PostProcessRenderEffect(engine, this.SharpenPostProcessId, () => {\n return this.sharpen;\n }, true);\n this.depthOfField = new DepthOfFieldEffect(this._scene, null, this._depthOfFieldBlurLevel, this._defaultPipelineTextureType, true);\n // To keep the bloom sizes consistent across different display densities, factor in the hardware scaling level.\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this._resizeObserver = engine.onResizeObservable.add(() => {\n this._hardwareScaleLevel = engine.getHardwareScalingLevel();\n this.bloomKernel = this._bloomKernel;\n });\n this.bloom = new BloomEffect(this._scene, this._bloomScale, this._bloomWeight, this.bloomKernel / this._hardwareScaleLevel, this._defaultPipelineTextureType, true);\n this.chromaticAberration = new ChromaticAberrationPostProcess(\"ChromaticAberration\", engine.getRenderWidth(), engine.getRenderHeight(), 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._chromaticAberrationEffect = new PostProcessRenderEffect(engine, this.ChromaticAberrationPostProcessId, () => {\n return this.chromaticAberration;\n }, true);\n this.grain = new GrainPostProcess(\"Grain\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, true);\n this._grainEffect = new PostProcessRenderEffect(engine, this.GrainPostProcessId, () => {\n return this.grain;\n }, true);\n let avoidReentrancyAtConstructionTime = true;\n this._imageProcessingConfigurationObserver = this._scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this.bloom._downscale._exposure = this._scene.imageProcessingConfiguration.exposure;\n if (this.imageProcessingEnabled !== this._scene.imageProcessingConfiguration.isEnabled) {\n this._imageProcessingEnabled = this._scene.imageProcessingConfiguration.isEnabled;\n // Avoid re-entrant problems by deferring the call to _buildPipeline because the call to _buildPipeline\n // at the end of the constructor could end up triggering imageProcessingConfiguration.onUpdateParameters!\n // Note that the pipeline could have been disposed before the deferred call was executed, but in that case\n // _buildAllowed will have been set to false, preventing _buildPipeline from being executed.\n if (avoidReentrancyAtConstructionTime) {\n Tools.SetImmediate(() => {\n this._buildPipeline();\n });\n }\n else {\n this._buildPipeline();\n }\n }\n });\n this._buildPipeline();\n avoidReentrancyAtConstructionTime = false;\n }\n /**\n * Get the class name\n * @returns \"DefaultRenderingPipeline\"\n */\n getClassName() {\n return \"DefaultRenderingPipeline\";\n }\n /**\n * Force the compilation of the entire pipeline.\n */\n prepare() {\n const previousState = this._buildAllowed;\n this._buildAllowed = true;\n this._buildPipeline();\n this._buildAllowed = previousState;\n }\n _setAutoClearAndTextureSharing(postProcess, skipTextureSharing = false) {\n if (this._hasCleared) {\n postProcess.autoClear = false;\n }\n else {\n postProcess.autoClear = true;\n this._scene.autoClear = false;\n this._hasCleared = true;\n }\n if (!skipTextureSharing) {\n if (this._prevPrevPostProcess) {\n postProcess.shareOutputWith(this._prevPrevPostProcess);\n }\n else {\n postProcess.useOwnOutput();\n }\n if (this._prevPostProcess) {\n this._prevPrevPostProcess = this._prevPostProcess;\n }\n this._prevPostProcess = postProcess;\n }\n }\n _buildPipeline() {\n if (!this._buildAllowed) {\n return;\n }\n this._scene.autoClear = true;\n const engine = this._scene.getEngine();\n this._disposePostProcesses();\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n // get back cameras to be used to reattach pipeline\n this._cameras = this._camerasToBeAttached.slice();\n }\n this._reset();\n this._prevPostProcess = null;\n this._prevPrevPostProcess = null;\n this._hasCleared = false;\n if (this.depthOfFieldEnabled) {\n // Multi camera suport\n if (this._cameras.length > 1) {\n for (const camera of this._cameras) {\n const depthRenderer = this._scene.enableDepthRenderer(camera);\n depthRenderer.useOnlyInActiveCamera = true;\n }\n this._depthOfFieldSceneObserver = this._scene.onAfterRenderTargetsRenderObservable.add((scene) => {\n if (this._cameras.indexOf(scene.activeCamera) > -1) {\n this.depthOfField.depthTexture = scene.enableDepthRenderer(scene.activeCamera).getDepthMap();\n }\n });\n }\n else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n const depthRenderer = this._scene.enableDepthRenderer(this._cameras[0]);\n this.depthOfField.depthTexture = depthRenderer.getDepthMap();\n }\n if (!this.depthOfField._isReady()) {\n this.depthOfField._updateEffects();\n }\n this.addEffect(this.depthOfField);\n this._setAutoClearAndTextureSharing(this.depthOfField._effects[0], true);\n }\n else {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n }\n if (this.bloomEnabled) {\n if (!this.bloom._isReady()) {\n this.bloom._updateEffects();\n }\n this.addEffect(this.bloom);\n this._setAutoClearAndTextureSharing(this.bloom._effects[0], true);\n }\n if (this._imageProcessingEnabled) {\n this.imageProcessing = new ImageProcessingPostProcess(\"imageProcessing\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType, this.scene.imageProcessingConfiguration);\n if (this._hdr) {\n this.addEffect(new PostProcessRenderEffect(engine, this.ImageProcessingPostProcessId, () => {\n return this.imageProcessing;\n }, true));\n this._setAutoClearAndTextureSharing(this.imageProcessing);\n }\n else {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n if (!this._cameras || this._cameras.length === 0) {\n this._scene.imageProcessingConfiguration.applyByPostProcess = false;\n }\n if (!this.imageProcessing.getEffect()) {\n this.imageProcessing._updateParameters();\n }\n }\n if (this.sharpenEnabled) {\n if (!this.sharpen.isReady()) {\n this.sharpen.updateEffect();\n }\n this.addEffect(this._sharpenEffect);\n this._setAutoClearAndTextureSharing(this.sharpen);\n }\n if (this.grainEnabled) {\n if (!this.grain.isReady()) {\n this.grain.updateEffect();\n }\n this.addEffect(this._grainEffect);\n this._setAutoClearAndTextureSharing(this.grain);\n }\n if (this.chromaticAberrationEnabled) {\n if (!this.chromaticAberration.isReady()) {\n this.chromaticAberration.updateEffect();\n }\n this.addEffect(this._chromaticAberrationEffect);\n this._setAutoClearAndTextureSharing(this.chromaticAberration);\n }\n if (this.fxaaEnabled) {\n this.fxaa = new FxaaPostProcess(\"fxaa\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, this._defaultPipelineTextureType);\n this.addEffect(new PostProcessRenderEffect(engine, this.FxaaPostProcessId, () => {\n return this.fxaa;\n }, true));\n this._setAutoClearAndTextureSharing(this.fxaa, true);\n }\n if (this._cameras !== null) {\n this._scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(this._name, this._cameras);\n }\n // In multicamera mode, the scene needs to autoclear in between cameras.\n if ((this._scene.activeCameras && this._scene.activeCameras.length > 1) || (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1)) {\n this._scene.autoClear = true;\n }\n // The active camera on the scene can be changed anytime\n if (!this._activeCameraChangedObserver) {\n this._activeCameraChangedObserver = this._scene.onActiveCameraChanged.add(() => {\n if (this._scene.activeCamera && this._cameras.indexOf(this._scene.activeCamera) === -1) {\n this._scene.autoClear = true;\n }\n });\n }\n if (!this._activeCamerasChangedObserver) {\n this._activeCamerasChangedObserver = this._scene.onActiveCamerasChanged.add(() => {\n if (this._scene.activeCameras && this._scene.activeCameras.length > 1) {\n this._scene.autoClear = true;\n }\n });\n }\n this._adaptPostProcessesToViewPort();\n if (!this._enableMSAAOnFirstPostProcess(this.samples) && this.samples > 1) {\n Logger.Warn(\"MSAA failed to enable, MSAA is only supported in browsers that support webGL >= 2.0\");\n }\n this.onBuildObservable.notifyObservers(this);\n }\n _disposePostProcesses(disposeNonRecreated = false) {\n for (let i = 0; i < this._cameras.length; i++) {\n const camera = this._cameras[i];\n if (this.imageProcessing) {\n this.imageProcessing.dispose(camera);\n }\n if (this.fxaa) {\n this.fxaa.dispose(camera);\n }\n // These are created in the constructor and should not be disposed on every pipeline change\n if (disposeNonRecreated) {\n if (this.sharpen) {\n this.sharpen.dispose(camera);\n }\n if (this.depthOfField) {\n this._scene.onAfterRenderTargetsRenderObservable.remove(this._depthOfFieldSceneObserver);\n this.depthOfField.disposeEffects(camera);\n }\n if (this.bloom) {\n this.bloom.disposeEffects(camera);\n }\n if (this.chromaticAberration) {\n this.chromaticAberration.dispose(camera);\n }\n if (this.grain) {\n this.grain.dispose(camera);\n }\n if (this._glowLayer) {\n this._glowLayer.dispose();\n }\n }\n }\n this.imageProcessing = null;\n this.fxaa = null;\n if (disposeNonRecreated) {\n this.sharpen = null;\n this._sharpenEffect = null;\n this.depthOfField = null;\n this.bloom = null;\n this.chromaticAberration = null;\n this._chromaticAberrationEffect = null;\n this.grain = null;\n this._grainEffect = null;\n this._glowLayer = null;\n }\n }\n /**\n * Adds a camera to the pipeline\n * @param camera the camera to be added\n */\n addCamera(camera) {\n this._camerasToBeAttached.push(camera);\n this._buildPipeline();\n }\n /**\n * Removes a camera from the pipeline\n * @param camera the camera to remove\n */\n removeCamera(camera) {\n const index = this._camerasToBeAttached.indexOf(camera);\n this._camerasToBeAttached.splice(index, 1);\n this._buildPipeline();\n }\n /**\n * Dispose of the pipeline and stop all post processes\n */\n dispose() {\n this._buildAllowed = false;\n this.onBuildObservable.clear();\n this._disposePostProcesses(true);\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);\n this._scene._postProcessRenderPipelineManager.removePipeline(this.name);\n this._scene.autoClear = true;\n if (this._resizeObserver) {\n this._scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n this._resizeObserver = null;\n }\n this._scene.onActiveCameraChanged.remove(this._activeCameraChangedObserver);\n this._scene.onActiveCamerasChanged.remove(this._activeCamerasChangedObserver);\n this._scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigurationObserver);\n super.dispose();\n }\n /**\n * Serialize the rendering pipeline (Used when exporting)\n * @returns the serialized object\n */\n serialize() {\n const serializationObject = SerializationHelper.Serialize(this);\n serializationObject.customType = \"DefaultRenderingPipeline\";\n return serializationObject;\n }\n /**\n * Parse the serialized pipeline\n * @param source Source pipeline.\n * @param scene The scene to load the pipeline to.\n * @param rootUrl The URL of the serialized pipeline.\n * @returns An instantiated pipeline from the serialized object.\n */\n static Parse(source, scene, rootUrl) {\n return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._name._hdr, scene), source, scene, rootUrl);\n }\n}\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"sharpenEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"bloomKernel\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"_bloomWeight\", void 0);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"_bloomThreshold\", void 0);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"_hdr\", void 0);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"bloomWeight\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"bloomThreshold\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"bloomScale\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"bloomEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"depthOfFieldEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"depthOfFieldBlurLevel\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"fxaaEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"samples\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"imageProcessingEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"glowLayerEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"chromaticAberrationEnabled\", null);\n__decorate([\n serialize()\n], DefaultRenderingPipeline.prototype, \"grainEnabled\", null);\nRegisterClass(\"BABYLON.DefaultRenderingPipeline\", DefaultRenderingPipeline);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|