1c698b1f8fe81834f2be945a36153924786446ae0802f0bc1b72e1f3b5d2136b.json 44 KB

1
  1. {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { Vector2 } from \"../../Maths/math.vector.js\";\nimport { PostProcess } from \"../../PostProcesses/postProcess.js\";\nimport { Observable } from \"../../Misc/observable.js\";\n/** @internal */\nexport class FluidRenderingTextures {\n get blurNumIterations() {\n return this._blurNumIterations;\n }\n set blurNumIterations(numIterations) {\n if (this._blurNumIterations === numIterations) {\n return;\n }\n this._blurNumIterations = numIterations;\n if (this._blurPostProcesses !== null) {\n const blurX = this._blurPostProcesses[0];\n const blurY = this._blurPostProcesses[1];\n this._blurPostProcesses = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n this._blurPostProcesses[i] = i & 1 ? blurY : blurX;\n }\n }\n }\n get renderTarget() {\n return this._rt;\n }\n get renderTargetBlur() {\n return this._rtBlur;\n }\n get texture() {\n return this._texture;\n }\n get textureBlur() {\n return this._textureBlurred;\n }\n /**\n * Gets the shader language used in the texture\n */\n get shaderLanguage() {\n return this._shaderLanguage;\n }\n constructor(name, scene, width, height, blurTextureSizeX, blurTextureSizeY, textureType = 1, textureFormat = 6, blurTextureType = 1, blurTextureFormat = 6, useStandardBlur = false, camera = null, generateDepthBuffer = true, samples = 1, shaderLanguage) {\n this.enableBlur = true;\n this.blurSizeDivisor = 1;\n this.blurFilterSize = 7;\n this._blurNumIterations = 3;\n this.blurMaxFilterSize = 100;\n this.blurDepthScale = 10;\n this.particleSize = 0.02;\n this.onDisposeObservable = new Observable();\n /** Shader language used by the texture */\n this._shaderLanguage = 0 /* ShaderLanguage.GLSL */;\n this._name = name;\n this._scene = scene;\n this._camera = camera;\n this._engine = scene.getEngine();\n this._width = width;\n this._height = height;\n this._blurTextureSizeX = blurTextureSizeX;\n this._blurTextureSizeY = blurTextureSizeY;\n this._textureType = textureType;\n this._textureFormat = textureFormat;\n this._blurTextureType = blurTextureType;\n this._blurTextureFormat = blurTextureFormat;\n this._useStandardBlur = useStandardBlur;\n this._generateDepthBuffer = generateDepthBuffer;\n this._samples = samples;\n this._postProcessRunningIndex = 0;\n this.enableBlur = blurTextureSizeX !== 0 && blurTextureSizeY !== 0;\n this._rt = null;\n this._texture = null;\n this._rtBlur = null;\n this._textureBlurred = null;\n this._blurPostProcesses = null;\n this._shaderLanguage = shaderLanguage !== null && shaderLanguage !== void 0 ? shaderLanguage : this._engine.isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */;\n }\n initialize() {\n this.dispose();\n this._createRenderTarget();\n if (this.enableBlur && this._texture) {\n const [rtBlur, textureBlurred, blurPostProcesses] = this._createBlurPostProcesses(this._texture, this._blurTextureType, this._blurTextureFormat, this.blurSizeDivisor, this._name, this._useStandardBlur);\n this._rtBlur = rtBlur;\n this._textureBlurred = textureBlurred;\n this._blurPostProcesses = blurPostProcesses;\n }\n }\n applyBlurPostProcesses() {\n if (this.enableBlur && this._blurPostProcesses) {\n this._postProcessRunningIndex = 0;\n this._scene.postProcessManager.directRender(this._blurPostProcesses, this._rtBlur, true);\n this._engine.unBindFramebuffer(this._rtBlur);\n }\n }\n _createRenderTarget() {\n this._rt = this._engine.createRenderTargetTexture({\n width: this._width,\n height: this._height\n }, {\n generateMipMaps: false,\n type: this._textureType,\n format: this._textureFormat,\n samplingMode: 1,\n generateDepthBuffer: this._generateDepthBuffer,\n generateStencilBuffer: false,\n samples: this._samples,\n label: `FluidRenderingRTT-${this._name}`\n });\n const renderTexture = this._rt.texture;\n renderTexture.incrementReferences();\n this._texture = new Texture(null, this._scene);\n this._texture.name = \"rtt\" + this._name;\n this._texture._texture = renderTexture;\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._texture.anisotropicFilteringLevel = 1;\n }\n _createBlurPostProcesses(textureBlurSource, textureType, textureFormat, blurSizeDivisor, debugName, useStandardBlur = false) {\n var _this = this;\n const engine = this._scene.getEngine();\n const targetSize = new Vector2(Math.floor(this._blurTextureSizeX / blurSizeDivisor), Math.floor(this._blurTextureSizeY / blurSizeDivisor));\n const useBilinearFiltering = textureType === 1 && engine.getCaps().textureFloatLinearFiltering || textureType === 2 && engine.getCaps().textureHalfFloatLinearFiltering;\n const rtBlur = this._engine.createRenderTargetTexture({\n width: targetSize.x,\n height: targetSize.y\n }, {\n generateMipMaps: false,\n type: textureType,\n format: textureFormat,\n samplingMode: useBilinearFiltering ? 2 : 1,\n generateDepthBuffer: false,\n generateStencilBuffer: false,\n samples: this._samples,\n label: `FluidRenderingRTTBlur-${debugName}`\n });\n const renderTexture = rtBlur.texture;\n renderTexture.incrementReferences();\n const texture = new Texture(null, this._scene);\n texture.name = \"rttBlurred\" + debugName;\n texture._texture = renderTexture;\n texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n texture.anisotropicFilteringLevel = 1;\n if (useStandardBlur) {\n const kernelBlurXPostprocess = new PostProcess(\"BilateralBlurX\", \"fluidRenderingStandardBlur\", [\"filterSize\", \"blurDir\"], null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, /*#__PURE__*/_asyncToGenerator(function* () {\n if (_this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n yield import(\"../../ShadersWGSL/fluidRenderingStandardBlur.fragment.js\");\n } else {\n yield import(\"../../Shaders/fluidRenderingStandardBlur.fragment.js\");\n }\n }));\n kernelBlurXPostprocess.samples = this._samples;\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\n kernelBlurXPostprocess.onApplyObservable.add(effect => {\n if (this._postProcessRunningIndex === 0) {\n effect.setTexture(\"textureSampler\", textureBlurSource);\n } else {\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\n }\n effect.setInt(\"filterSize\", this.blurFilterSize);\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\n this._postProcessRunningIndex++;\n });\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurXPostprocess._textures.forEach(rt => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurXPostprocess);\n const kernelBlurYPostprocess = new PostProcess(\"BilateralBlurY\", \"fluidRenderingStandardBlur\", [\"filterSize\", \"blurDir\"], null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, /*#__PURE__*/_asyncToGenerator(function* () {\n if (_this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n yield import(\"../../ShadersWGSL/fluidRenderingStandardBlur.fragment.js\");\n } else {\n yield import(\"../../Shaders/fluidRenderingStandardBlur.fragment.js\");\n }\n }));\n kernelBlurYPostprocess.samples = this._samples;\n kernelBlurYPostprocess.onApplyObservable.add(effect => {\n effect.setInt(\"filterSize\", this.blurFilterSize);\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\n this._postProcessRunningIndex++;\n });\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurYPostprocess._textures.forEach(rt => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurYPostprocess);\n kernelBlurXPostprocess.autoClear = false;\n kernelBlurYPostprocess.autoClear = false;\n const blurList = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\n }\n return [rtBlur, texture, blurList];\n } else {\n const uniforms = [\"maxFilterSize\", \"blurDir\", \"projectedParticleConstant\", \"depthThreshold\"];\n const kernelBlurXPostprocess = new PostProcess(\"BilateralBlurX\", \"fluidRenderingBilateralBlur\", uniforms, null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, /*#__PURE__*/_asyncToGenerator(function* () {\n if (_this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n yield import(\"../../ShadersWGSL/fluidRenderingBilateralBlur.fragment.js\");\n } else {\n yield import(\"../../Shaders/fluidRenderingBilateralBlur.fragment.js\");\n }\n }));\n kernelBlurXPostprocess.samples = this._samples;\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\n kernelBlurXPostprocess.onApplyObservable.add(effect => {\n if (this._postProcessRunningIndex === 0) {\n effect.setTexture(\"textureSampler\", textureBlurSource);\n } else {\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\n }\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\n this._postProcessRunningIndex++;\n });\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurXPostprocess._textures.forEach(rt => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurXPostprocess);\n const kernelBlurYPostprocess = new PostProcess(\"BilateralBlurY\", \"fluidRenderingBilateralBlur\", uniforms, null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, /*#__PURE__*/_asyncToGenerator(function* () {\n if (_this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n yield import(\"../../ShadersWGSL/fluidRenderingBilateralBlur.fragment.js\");\n } else {\n yield import(\"../../Shaders/fluidRenderingBilateralBlur.fragment.js\");\n }\n }));\n kernelBlurYPostprocess.samples = this._samples;\n kernelBlurYPostprocess.onApplyObservable.add(effect => {\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\n this._postProcessRunningIndex++;\n });\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurYPostprocess._textures.forEach(rt => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurYPostprocess);\n kernelBlurXPostprocess.autoClear = false;\n kernelBlurYPostprocess.autoClear = false;\n const blurList = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\n }\n return [rtBlur, texture, blurList];\n }\n }\n _fixReusablePostProcess(pp) {\n if (!pp.isReusable()) {\n return;\n }\n pp.onActivateObservable.add(() => {\n // undo what calling activate() does which will make sure we will retrieve the right texture when getting the input for the post process\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\n });\n pp.onApplyObservable.add(() => {\n // now we can advance to the next texture\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\n });\n }\n _getProjectedParticleConstant() {\n var _this$_camera$fov, _this$_camera;\n return this.blurFilterSize * this.particleSize * 0.05 * (this._height / 2) / Math.tan(((_this$_camera$fov = (_this$_camera = this._camera) === null || _this$_camera === void 0 ? void 0 : _this$_camera.fov) !== null && _this$_camera$fov !== void 0 ? _this$_camera$fov : 45 * Math.PI / 180) / 2);\n }\n _getDepthThreshold() {\n return this.particleSize / 2 * this.blurDepthScale;\n }\n dispose() {\n var _this$_rt, _this$_texture, _this$_rtBlur, _this$_textureBlurred;\n if (this.onDisposeObservable.hasObservers()) {\n this.onDisposeObservable.notifyObservers(this);\n }\n this.onDisposeObservable.clear();\n (_this$_rt = this._rt) === null || _this$_rt === void 0 || _this$_rt.dispose();\n this._rt = null;\n (_this$_texture = this._texture) === null || _this$_texture === void 0 || _this$_texture.dispose();\n this._texture = null;\n (_this$_rtBlur = this._rtBlur) === null || _this$_rtBlur === void 0 || _this$_rtBlur.dispose();\n this._rtBlur = null;\n (_this$_textureBlurred = this._textureBlurred) === null || _this$_textureBlurred === void 0 || _this$_textureBlurred.dispose();\n this._textureBlurred = null;\n if (this._blurPostProcesses) {\n this._blurPostProcesses[0].dispose();\n this._blurPostProcesses[1].dispose();\n }\n this._blurPostProcesses = null;\n }\n}","map":{"version":3,"names":["Texture","Vector2","PostProcess","Observable","FluidRenderingTextures","blurNumIterations","_blurNumIterations","numIterations","_blurPostProcesses","blurX","blurY","i","renderTarget","_rt","renderTargetBlur","_rtBlur","texture","_texture","textureBlur","_textureBlurred","shaderLanguage","_shaderLanguage","constructor","name","scene","width","height","blurTextureSizeX","blurTextureSizeY","textureType","textureFormat","blurTextureType","blurTextureFormat","useStandardBlur","camera","generateDepthBuffer","samples","enableBlur","blurSizeDivisor","blurFilterSize","blurMaxFilterSize","blurDepthScale","particleSize","onDisposeObservable","_name","_scene","_camera","_engine","getEngine","_width","_height","_blurTextureSizeX","_blurTextureSizeY","_textureType","_textureFormat","_blurTextureType","_blurTextureFormat","_useStandardBlur","_generateDepthBuffer","_samples","_postProcessRunningIndex","isWebGPU","initialize","dispose","_createRenderTarget","rtBlur","textureBlurred","blurPostProcesses","_createBlurPostProcesses","applyBlurPostProcesses","postProcessManager","directRender","unBindFramebuffer","createRenderTargetTexture","generateMipMaps","type","format","samplingMode","generateStencilBuffer","label","renderTexture","incrementReferences","wrapU","CLAMP_ADDRESSMODE","wrapV","anisotropicFilteringLevel","textureBlurSource","debugName","_this","engine","targetSize","Math","floor","useBilinearFiltering","getCaps","textureFloatLinearFiltering","textureHalfFloatLinearFiltering","x","y","kernelBlurXPostprocess","undefined","_asyncToGenerator","externalTextureSamplerBinding","onApplyObservable","add","effect","setTexture","_bindTexture","inputTexture","setInt","setFloat2","onSizeChangedObservable","_textures","forEach","rt","_fixReusablePostProcess","kernelBlurYPostprocess","autoClear","blurList","uniforms","setFloat","_getProjectedParticleConstant","_getDepthThreshold","pp","isReusable","onActivateObservable","_currentRenderTextureInd","_this$_camera$fov","_this$_camera","tan","fov","PI","_this$_rt","_this$_texture","_this$_rtBlur","_this$_textureBlurred","hasObservers","notifyObservers","clear"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Rendering/fluidRenderer/fluidRenderingTextures.js"],"sourcesContent":["\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { Vector2 } from \"../../Maths/math.vector.js\";\nimport { PostProcess } from \"../../PostProcesses/postProcess.js\";\nimport { Observable } from \"../../Misc/observable.js\";\n/** @internal */\nexport class FluidRenderingTextures {\n get blurNumIterations() {\n return this._blurNumIterations;\n }\n set blurNumIterations(numIterations) {\n if (this._blurNumIterations === numIterations) {\n return;\n }\n this._blurNumIterations = numIterations;\n if (this._blurPostProcesses !== null) {\n const blurX = this._blurPostProcesses[0];\n const blurY = this._blurPostProcesses[1];\n this._blurPostProcesses = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n this._blurPostProcesses[i] = i & 1 ? blurY : blurX;\n }\n }\n }\n get renderTarget() {\n return this._rt;\n }\n get renderTargetBlur() {\n return this._rtBlur;\n }\n get texture() {\n return this._texture;\n }\n get textureBlur() {\n return this._textureBlurred;\n }\n /**\n * Gets the shader language used in the texture\n */\n get shaderLanguage() {\n return this._shaderLanguage;\n }\n constructor(name, scene, width, height, blurTextureSizeX, blurTextureSizeY, textureType = 1, textureFormat = 6, blurTextureType = 1, blurTextureFormat = 6, useStandardBlur = false, camera = null, generateDepthBuffer = true, samples = 1, shaderLanguage) {\n this.enableBlur = true;\n this.blurSizeDivisor = 1;\n this.blurFilterSize = 7;\n this._blurNumIterations = 3;\n this.blurMaxFilterSize = 100;\n this.blurDepthScale = 10;\n this.particleSize = 0.02;\n this.onDisposeObservable = new Observable();\n /** Shader language used by the texture */\n this._shaderLanguage = 0 /* ShaderLanguage.GLSL */;\n this._name = name;\n this._scene = scene;\n this._camera = camera;\n this._engine = scene.getEngine();\n this._width = width;\n this._height = height;\n this._blurTextureSizeX = blurTextureSizeX;\n this._blurTextureSizeY = blurTextureSizeY;\n this._textureType = textureType;\n this._textureFormat = textureFormat;\n this._blurTextureType = blurTextureType;\n this._blurTextureFormat = blurTextureFormat;\n this._useStandardBlur = useStandardBlur;\n this._generateDepthBuffer = generateDepthBuffer;\n this._samples = samples;\n this._postProcessRunningIndex = 0;\n this.enableBlur = blurTextureSizeX !== 0 && blurTextureSizeY !== 0;\n this._rt = null;\n this._texture = null;\n this._rtBlur = null;\n this._textureBlurred = null;\n this._blurPostProcesses = null;\n this._shaderLanguage = shaderLanguage ?? (this._engine.isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */);\n }\n initialize() {\n this.dispose();\n this._createRenderTarget();\n if (this.enableBlur && this._texture) {\n const [rtBlur, textureBlurred, blurPostProcesses] = this._createBlurPostProcesses(this._texture, this._blurTextureType, this._blurTextureFormat, this.blurSizeDivisor, this._name, this._useStandardBlur);\n this._rtBlur = rtBlur;\n this._textureBlurred = textureBlurred;\n this._blurPostProcesses = blurPostProcesses;\n }\n }\n applyBlurPostProcesses() {\n if (this.enableBlur && this._blurPostProcesses) {\n this._postProcessRunningIndex = 0;\n this._scene.postProcessManager.directRender(this._blurPostProcesses, this._rtBlur, true);\n this._engine.unBindFramebuffer(this._rtBlur);\n }\n }\n _createRenderTarget() {\n this._rt = this._engine.createRenderTargetTexture({ width: this._width, height: this._height }, {\n generateMipMaps: false,\n type: this._textureType,\n format: this._textureFormat,\n samplingMode: 1,\n generateDepthBuffer: this._generateDepthBuffer,\n generateStencilBuffer: false,\n samples: this._samples,\n label: `FluidRenderingRTT-${this._name}`,\n });\n const renderTexture = this._rt.texture;\n renderTexture.incrementReferences();\n this._texture = new Texture(null, this._scene);\n this._texture.name = \"rtt\" + this._name;\n this._texture._texture = renderTexture;\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n this._texture.anisotropicFilteringLevel = 1;\n }\n _createBlurPostProcesses(textureBlurSource, textureType, textureFormat, blurSizeDivisor, debugName, useStandardBlur = false) {\n const engine = this._scene.getEngine();\n const targetSize = new Vector2(Math.floor(this._blurTextureSizeX / blurSizeDivisor), Math.floor(this._blurTextureSizeY / blurSizeDivisor));\n const useBilinearFiltering = (textureType === 1 && engine.getCaps().textureFloatLinearFiltering) ||\n (textureType === 2 && engine.getCaps().textureHalfFloatLinearFiltering);\n const rtBlur = this._engine.createRenderTargetTexture({ width: targetSize.x, height: targetSize.y }, {\n generateMipMaps: false,\n type: textureType,\n format: textureFormat,\n samplingMode: useBilinearFiltering ? 2 : 1,\n generateDepthBuffer: false,\n generateStencilBuffer: false,\n samples: this._samples,\n label: `FluidRenderingRTTBlur-${debugName}`,\n });\n const renderTexture = rtBlur.texture;\n renderTexture.incrementReferences();\n const texture = new Texture(null, this._scene);\n texture.name = \"rttBlurred\" + debugName;\n texture._texture = renderTexture;\n texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n texture.anisotropicFilteringLevel = 1;\n if (useStandardBlur) {\n const kernelBlurXPostprocess = new PostProcess(\"BilateralBlurX\", \"fluidRenderingStandardBlur\", [\"filterSize\", \"blurDir\"], null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, async () => {\n if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await import(\"../../ShadersWGSL/fluidRenderingStandardBlur.fragment.js\");\n }\n else {\n await import(\"../../Shaders/fluidRenderingStandardBlur.fragment.js\");\n }\n });\n kernelBlurXPostprocess.samples = this._samples;\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\n if (this._postProcessRunningIndex === 0) {\n effect.setTexture(\"textureSampler\", textureBlurSource);\n }\n else {\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\n }\n effect.setInt(\"filterSize\", this.blurFilterSize);\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\n this._postProcessRunningIndex++;\n });\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurXPostprocess._textures.forEach((rt) => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurXPostprocess);\n const kernelBlurYPostprocess = new PostProcess(\"BilateralBlurY\", \"fluidRenderingStandardBlur\", [\"filterSize\", \"blurDir\"], null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, async () => {\n if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await import(\"../../ShadersWGSL/fluidRenderingStandardBlur.fragment.js\");\n }\n else {\n await import(\"../../Shaders/fluidRenderingStandardBlur.fragment.js\");\n }\n });\n kernelBlurYPostprocess.samples = this._samples;\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\n effect.setInt(\"filterSize\", this.blurFilterSize);\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\n this._postProcessRunningIndex++;\n });\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurYPostprocess._textures.forEach((rt) => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurYPostprocess);\n kernelBlurXPostprocess.autoClear = false;\n kernelBlurYPostprocess.autoClear = false;\n const blurList = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\n }\n return [rtBlur, texture, blurList];\n }\n else {\n const uniforms = [\"maxFilterSize\", \"blurDir\", \"projectedParticleConstant\", \"depthThreshold\"];\n const kernelBlurXPostprocess = new PostProcess(\"BilateralBlurX\", \"fluidRenderingBilateralBlur\", uniforms, null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, async () => {\n if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await import(\"../../ShadersWGSL/fluidRenderingBilateralBlur.fragment.js\");\n }\n else {\n await import(\"../../Shaders/fluidRenderingBilateralBlur.fragment.js\");\n }\n });\n kernelBlurXPostprocess.samples = this._samples;\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\n if (this._postProcessRunningIndex === 0) {\n effect.setTexture(\"textureSampler\", textureBlurSource);\n }\n else {\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\n }\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\n this._postProcessRunningIndex++;\n });\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurXPostprocess._textures.forEach((rt) => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurXPostprocess);\n const kernelBlurYPostprocess = new PostProcess(\"BilateralBlurY\", \"fluidRenderingBilateralBlur\", uniforms, null, 1, null, 1, engine, true, null, textureType, undefined, undefined, undefined, textureFormat, this._shaderLanguage, async () => {\n if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await import(\"../../ShadersWGSL/fluidRenderingBilateralBlur.fragment.js\");\n }\n else {\n await import(\"../../Shaders/fluidRenderingBilateralBlur.fragment.js\");\n }\n });\n kernelBlurYPostprocess.samples = this._samples;\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\n this._postProcessRunningIndex++;\n });\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\n kernelBlurYPostprocess._textures.forEach((rt) => {\n rt.texture.wrapU = Texture.CLAMP_ADDRESSMODE;\n rt.texture.wrapV = Texture.CLAMP_ADDRESSMODE;\n });\n });\n this._fixReusablePostProcess(kernelBlurYPostprocess);\n kernelBlurXPostprocess.autoClear = false;\n kernelBlurYPostprocess.autoClear = false;\n const blurList = [];\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\n }\n return [rtBlur, texture, blurList];\n }\n }\n _fixReusablePostProcess(pp) {\n if (!pp.isReusable()) {\n return;\n }\n pp.onActivateObservable.add(() => {\n // undo what calling activate() does which will make sure we will retrieve the right texture when getting the input for the post process\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\n });\n pp.onApplyObservable.add(() => {\n // now we can advance to the next texture\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\n });\n }\n _getProjectedParticleConstant() {\n return (this.blurFilterSize * this.particleSize * 0.05 * (this._height / 2)) / Math.tan((this._camera?.fov ?? (45 * Math.PI) / 180) / 2);\n }\n _getDepthThreshold() {\n return (this.particleSize / 2) * this.blurDepthScale;\n }\n dispose() {\n if (this.onDisposeObservable.hasObservers()) {\n this.onDisposeObservable.notifyObservers(this);\n }\n this.onDisposeObservable.clear();\n this._rt?.dispose();\n this._rt = null;\n this._texture?.dispose();\n this._texture = null;\n this._rtBlur?.dispose();\n this._rtBlur = null;\n this._textureBlurred?.dispose();\n this._textureBlurred = null;\n if (this._blurPostProcesses) {\n this._blurPostProcesses[0].dispose();\n this._blurPostProcesses[1].dispose();\n }\n this._blurPostProcesses = null;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}