1 |
- {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { Vector3 } from \"../../../Maths/math.js\";\nimport { ILog2 } from \"../../../Maths/math.scalar.functions.js\";\nimport { EffectWrapper, EffectRenderer } from \"../../../Materials/effectRenderer.js\";\nimport { Logger } from \"../../../Misc/logger.js\";\n/**\n * Filters HDR maps to get correct renderings of PBR reflections\n */\nexport class HDRFiltering {\n /**\n * Instantiates HDR filter for reflection maps\n *\n * @param engine Thin engine\n * @param options Options\n */\n constructor(engine, options = {}) {\n this._lodGenerationOffset = 0;\n this._lodGenerationScale = 0.8;\n /**\n * Quality switch for prefiltering. Should be set to `4096` unless\n * you care about baking speed.\n */\n this.quality = 4096;\n /**\n * Scales pixel intensity for the input HDR map.\n */\n this.hdrScale = 1;\n // pass\n this._engine = engine;\n this.hdrScale = options.hdrScale || this.hdrScale;\n this.quality = options.quality || this.quality;\n }\n _createRenderTarget(size) {\n let textureType = 0;\n if (this._engine.getCaps().textureHalfFloatRender) {\n textureType = 2;\n } else if (this._engine.getCaps().textureFloatRender) {\n textureType = 1;\n }\n const rtWrapper = this._engine.createRenderTargetCubeTexture(size, {\n format: 5,\n type: textureType,\n createMipMaps: true,\n generateMipMaps: false,\n generateDepthBuffer: false,\n generateStencilBuffer: false,\n samplingMode: 1\n });\n this._engine.updateTextureWrappingMode(rtWrapper.texture, 0, 0, 0);\n this._engine.updateTextureSamplingMode(3, rtWrapper.texture, true);\n return rtWrapper;\n }\n _prefilterInternal(texture) {\n const width = texture.getSize().width;\n const mipmapsCount = ILog2(width) + 1;\n const effect = this._effectWrapper.effect;\n const outputTexture = this._createRenderTarget(width);\n this._effectRenderer.saveStates();\n this._effectRenderer.setViewport();\n const intTexture = texture.getInternalTexture();\n if (intTexture) {\n // Just in case generate fresh clean mips.\n this._engine.updateTextureSamplingMode(3, intTexture, true);\n }\n this._effectRenderer.applyEffectWrapper(this._effectWrapper);\n const directions = [[new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)],\n // PositiveX\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)],\n // NegativeX\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)],\n // PositiveY\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)],\n // NegativeY\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)],\n // PositiveZ\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)] // NegativeZ\n ];\n effect.setFloat(\"hdrScale\", this.hdrScale);\n effect.setFloat2(\"vFilteringInfo\", texture.getSize().width, mipmapsCount);\n effect.setTexture(\"inputTexture\", texture);\n for (let face = 0; face < 6; face++) {\n effect.setVector3(\"up\", directions[face][0]);\n effect.setVector3(\"right\", directions[face][1]);\n effect.setVector3(\"front\", directions[face][2]);\n for (let lod = 0; lod < mipmapsCount; lod++) {\n this._engine.bindFramebuffer(outputTexture, face, undefined, undefined, true, lod);\n this._effectRenderer.applyEffectWrapper(this._effectWrapper);\n let alpha = Math.pow(2, (lod - this._lodGenerationOffset) / this._lodGenerationScale) / width;\n if (lod === 0) {\n alpha = 0;\n }\n effect.setFloat(\"alphaG\", alpha);\n this._effectRenderer.draw();\n }\n }\n // Cleanup\n this._effectRenderer.restoreStates();\n this._engine.restoreDefaultFramebuffer();\n this._engine._releaseTexture(texture._texture);\n // Internal Swap\n const type = outputTexture.texture.type;\n const format = outputTexture.texture.format;\n outputTexture._swapAndDie(texture._texture);\n texture._texture.type = type;\n texture._texture.format = format;\n // New settings\n texture.gammaSpace = false;\n texture.lodGenerationOffset = this._lodGenerationOffset;\n texture.lodGenerationScale = this._lodGenerationScale;\n texture._prefiltered = true;\n return texture;\n }\n _createEffect(texture, onCompiled) {\n const defines = [];\n if (texture.gammaSpace) {\n defines.push(\"#define GAMMA_INPUT\");\n }\n defines.push(\"#define NUM_SAMPLES \" + this.quality + \"u\"); // unsigned int\n const isWebGPU = this._engine.isWebGPU;\n const effectWrapper = new EffectWrapper({\n engine: this._engine,\n name: \"hdrFiltering\",\n vertexShader: \"hdrFiltering\",\n fragmentShader: \"hdrFiltering\",\n samplerNames: [\"inputTexture\"],\n uniformNames: [\"vSampleDirections\", \"vWeights\", \"up\", \"right\", \"front\", \"vFilteringInfo\", \"hdrScale\", \"alphaG\"],\n useShaderStore: true,\n defines,\n onCompiled: onCompiled,\n shaderLanguage: isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,\n extraInitializationsAsync: function () {\n var _ref = _asyncToGenerator(function* () {\n if (isWebGPU) {\n yield Promise.all([import(\"../../../ShadersWGSL/hdrFiltering.vertex.js\"), import(\"../../../ShadersWGSL/hdrFiltering.fragment.js\")]);\n } else {\n yield Promise.all([import(\"../../../Shaders/hdrFiltering.vertex.js\"), import(\"../../../Shaders/hdrFiltering.fragment.js\")]);\n }\n });\n return function extraInitializationsAsync() {\n return _ref.apply(this, arguments);\n };\n }()\n });\n return effectWrapper;\n }\n /**\n * Get a value indicating if the filter is ready to be used\n * @param texture Texture to filter\n * @returns true if the filter is ready\n */\n isReady(texture) {\n return texture.isReady() && this._effectWrapper.effect.isReady();\n }\n /**\n * Prefilters a cube texture to have mipmap levels representing roughness values.\n * Prefiltering will be invoked at the end of next rendering pass.\n * This has to be done once the map is loaded, and has not been prefiltered by a third party software.\n * See http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf for more information\n * @param texture Texture to filter\n * @param onFinished Callback when filtering is done\n * @returns Promise called when prefiltering is done\n */\n prefilter(texture, onFinished = null) {\n if (!this._engine._features.allowTexturePrefiltering) {\n Logger.Warn(\"HDR prefiltering is not available in WebGL 1., you can use real time filtering instead.\");\n return Promise.reject(\"HDR prefiltering is not available in WebGL 1., you can use real time filtering instead.\");\n }\n return new Promise(resolve => {\n this._effectRenderer = new EffectRenderer(this._engine);\n this._effectWrapper = this._createEffect(texture);\n this._effectWrapper.effect.executeWhenCompiled(() => {\n this._prefilterInternal(texture);\n this._effectRenderer.dispose();\n this._effectWrapper.dispose();\n resolve();\n if (onFinished) {\n onFinished();\n }\n });\n });\n }\n}","map":{"version":3,"names":["Vector3","ILog2","EffectWrapper","EffectRenderer","Logger","HDRFiltering","constructor","engine","options","_lodGenerationOffset","_lodGenerationScale","quality","hdrScale","_engine","_createRenderTarget","size","textureType","getCaps","textureHalfFloatRender","textureFloatRender","rtWrapper","createRenderTargetCubeTexture","format","type","createMipMaps","generateMipMaps","generateDepthBuffer","generateStencilBuffer","samplingMode","updateTextureWrappingMode","texture","updateTextureSamplingMode","_prefilterInternal","width","getSize","mipmapsCount","effect","_effectWrapper","outputTexture","_effectRenderer","saveStates","setViewport","intTexture","getInternalTexture","applyEffectWrapper","directions","setFloat","setFloat2","setTexture","face","setVector3","lod","bindFramebuffer","undefined","alpha","Math","pow","draw","restoreStates","restoreDefaultFramebuffer","_releaseTexture","_texture","_swapAndDie","gammaSpace","lodGenerationOffset","lodGenerationScale","_prefiltered","_createEffect","onCompiled","defines","push","isWebGPU","effectWrapper","name","vertexShader","fragmentShader","samplerNames","uniformNames","useShaderStore","shaderLanguage","extraInitializationsAsync","_ref","_asyncToGenerator","Promise","all","apply","arguments","isReady","prefilter","onFinished","_features","allowTexturePrefiltering","Warn","reject","resolve","executeWhenCompiled","dispose"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Textures/Filtering/hdrFiltering.js"],"sourcesContent":["import { Vector3 } from \"../../../Maths/math.js\";\nimport { ILog2 } from \"../../../Maths/math.scalar.functions.js\";\n\nimport { EffectWrapper, EffectRenderer } from \"../../../Materials/effectRenderer.js\";\nimport { Logger } from \"../../../Misc/logger.js\";\n/**\n * Filters HDR maps to get correct renderings of PBR reflections\n */\nexport class HDRFiltering {\n /**\n * Instantiates HDR filter for reflection maps\n *\n * @param engine Thin engine\n * @param options Options\n */\n constructor(engine, options = {}) {\n this._lodGenerationOffset = 0;\n this._lodGenerationScale = 0.8;\n /**\n * Quality switch for prefiltering. Should be set to `4096` unless\n * you care about baking speed.\n */\n this.quality = 4096;\n /**\n * Scales pixel intensity for the input HDR map.\n */\n this.hdrScale = 1;\n // pass\n this._engine = engine;\n this.hdrScale = options.hdrScale || this.hdrScale;\n this.quality = options.quality || this.quality;\n }\n _createRenderTarget(size) {\n let textureType = 0;\n if (this._engine.getCaps().textureHalfFloatRender) {\n textureType = 2;\n }\n else if (this._engine.getCaps().textureFloatRender) {\n textureType = 1;\n }\n const rtWrapper = this._engine.createRenderTargetCubeTexture(size, {\n format: 5,\n type: textureType,\n createMipMaps: true,\n generateMipMaps: false,\n generateDepthBuffer: false,\n generateStencilBuffer: false,\n samplingMode: 1,\n });\n this._engine.updateTextureWrappingMode(rtWrapper.texture, 0, 0, 0);\n this._engine.updateTextureSamplingMode(3, rtWrapper.texture, true);\n return rtWrapper;\n }\n _prefilterInternal(texture) {\n const width = texture.getSize().width;\n const mipmapsCount = ILog2(width) + 1;\n const effect = this._effectWrapper.effect;\n const outputTexture = this._createRenderTarget(width);\n this._effectRenderer.saveStates();\n this._effectRenderer.setViewport();\n const intTexture = texture.getInternalTexture();\n if (intTexture) {\n // Just in case generate fresh clean mips.\n this._engine.updateTextureSamplingMode(3, intTexture, true);\n }\n this._effectRenderer.applyEffectWrapper(this._effectWrapper);\n const directions = [\n [new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)], // PositiveX\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)], // NegativeX\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)], // PositiveY\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)], // NegativeY\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)], // PositiveZ\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)], // NegativeZ\n ];\n effect.setFloat(\"hdrScale\", this.hdrScale);\n effect.setFloat2(\"vFilteringInfo\", texture.getSize().width, mipmapsCount);\n effect.setTexture(\"inputTexture\", texture);\n for (let face = 0; face < 6; face++) {\n effect.setVector3(\"up\", directions[face][0]);\n effect.setVector3(\"right\", directions[face][1]);\n effect.setVector3(\"front\", directions[face][2]);\n for (let lod = 0; lod < mipmapsCount; lod++) {\n this._engine.bindFramebuffer(outputTexture, face, undefined, undefined, true, lod);\n this._effectRenderer.applyEffectWrapper(this._effectWrapper);\n let alpha = Math.pow(2, (lod - this._lodGenerationOffset) / this._lodGenerationScale) / width;\n if (lod === 0) {\n alpha = 0;\n }\n effect.setFloat(\"alphaG\", alpha);\n this._effectRenderer.draw();\n }\n }\n // Cleanup\n this._effectRenderer.restoreStates();\n this._engine.restoreDefaultFramebuffer();\n this._engine._releaseTexture(texture._texture);\n // Internal Swap\n const type = outputTexture.texture.type;\n const format = outputTexture.texture.format;\n outputTexture._swapAndDie(texture._texture);\n texture._texture.type = type;\n texture._texture.format = format;\n // New settings\n texture.gammaSpace = false;\n texture.lodGenerationOffset = this._lodGenerationOffset;\n texture.lodGenerationScale = this._lodGenerationScale;\n texture._prefiltered = true;\n return texture;\n }\n _createEffect(texture, onCompiled) {\n const defines = [];\n if (texture.gammaSpace) {\n defines.push(\"#define GAMMA_INPUT\");\n }\n defines.push(\"#define NUM_SAMPLES \" + this.quality + \"u\"); // unsigned int\n const isWebGPU = this._engine.isWebGPU;\n const effectWrapper = new EffectWrapper({\n engine: this._engine,\n name: \"hdrFiltering\",\n vertexShader: \"hdrFiltering\",\n fragmentShader: \"hdrFiltering\",\n samplerNames: [\"inputTexture\"],\n uniformNames: [\"vSampleDirections\", \"vWeights\", \"up\", \"right\", \"front\", \"vFilteringInfo\", \"hdrScale\", \"alphaG\"],\n useShaderStore: true,\n defines,\n onCompiled: onCompiled,\n shaderLanguage: isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,\n extraInitializationsAsync: async () => {\n if (isWebGPU) {\n await Promise.all([import(\"../../../ShadersWGSL/hdrFiltering.vertex.js\"), import(\"../../../ShadersWGSL/hdrFiltering.fragment.js\")]);\n }\n else {\n await Promise.all([import(\"../../../Shaders/hdrFiltering.vertex.js\"), import(\"../../../Shaders/hdrFiltering.fragment.js\")]);\n }\n },\n });\n return effectWrapper;\n }\n /**\n * Get a value indicating if the filter is ready to be used\n * @param texture Texture to filter\n * @returns true if the filter is ready\n */\n isReady(texture) {\n return texture.isReady() && this._effectWrapper.effect.isReady();\n }\n /**\n * Prefilters a cube texture to have mipmap levels representing roughness values.\n * Prefiltering will be invoked at the end of next rendering pass.\n * This has to be done once the map is loaded, and has not been prefiltered by a third party software.\n * See http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf for more information\n * @param texture Texture to filter\n * @param onFinished Callback when filtering is done\n * @returns Promise called when prefiltering is done\n */\n prefilter(texture, onFinished = null) {\n if (!this._engine._features.allowTexturePrefiltering) {\n Logger.Warn(\"HDR prefiltering is not available in WebGL 1., you can use real time filtering instead.\");\n return Promise.reject(\"HDR prefiltering is not available in WebGL 1., you can use real time filtering instead.\");\n }\n return new Promise((resolve) => {\n this._effectRenderer = new EffectRenderer(this._engine);\n this._effectWrapper = this._createEffect(texture);\n this._effectWrapper.effect.executeWhenCompiled(() => {\n this._prefilterInternal(texture);\n this._effectRenderer.dispose();\n this._effectWrapper.dispose();\n resolve();\n if (onFinished) {\n onFinished();\n }\n });\n });\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|