summit/frontend/node_modules/three-stdlib/postprocessing/SSAOPass.cjs.map

1 line
20 KiB
Plaintext
Raw Normal View History

2025-12-08 16:31:30 +00:00
{"version":3,"file":"SSAOPass.cjs","sources":["../../src/postprocessing/SSAOPass.js"],"sourcesContent":["import {\n AddEquation,\n Color,\n CustomBlending,\n DataTexture,\n DepthTexture,\n DstAlphaFactor,\n DstColorFactor,\n FloatType,\n MathUtils,\n MeshNormalMaterial,\n NearestFilter,\n NoBlending,\n RedFormat,\n DepthStencilFormat,\n UnsignedInt248Type,\n RepeatWrapping,\n ShaderMaterial,\n UniformsUtils,\n Vector3,\n WebGLRenderTarget,\n ZeroFactor,\n} from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { SimplexNoise } from '../math/SimplexNoise'\nimport { SSAOShader, SSAOBlurShader, SSAODepthShader } from '../shaders/SSAOShader'\n\nimport { CopyShader } from '../shaders/CopyShader'\n\nconst SSAOPass = /* @__PURE__ */ (() => {\n class SSAOPass extends Pass {\n static OUTPUT = {\n Default: 0,\n SSAO: 1,\n Blur: 2,\n Beauty: 3,\n Depth: 4,\n Normal: 5,\n }\n\n constructor(scene, camera, width, height) {\n super()\n\n this.width = width !== undefined ? width : 512\n this.height = height !== undefined ? height : 512\n\n this.clear = true\n\n this.camera = camera\n this.scene = scene\n\n this.kernelRadius = 8\n this.kernelSize = 32\n this.kernel = []\n this.noiseTexture = null\n this.output = 0\n\n this.minDistance = 0.005\n this.maxDistance = 0.1\n\n this._visibilityCache = new Map()\n\n //\n\n this.generateSampleKernel()\n this.generateRandomKernelRotations()\n\n // beauty render target\n\n const depthTexture = new DepthTexture()\n depthTexture.format = DepthStencilFormat\n depthTexture.type = UnsignedInt248Type\n\n this.beautyRenderTarget = new WebGLRenderTarget(this.width, this.height)\n\n // normal render target with depth buffer\n\n this.normalRenderTarget = new WebGLRenderTarget(this.width, this.height, {\n minFilter: NearestFilter,\n magFilter: NearestFilter,\n depthTexture: depthTexture,\n })\n\n // ssao render target\n\n this.ssaoRenderTarget = new WebGLRenderTarget(this.width, this.height)\n\n this.blurRenderTarget = this.ssaoRenderTarget.clone()\n\n // ssao material\n\n if (SSAOShader === undefined) {\n console.error('THREE.SSAOPass: The pass relies on SSAOShader.')\n }\n\n this.ssaoMaterial = new ShaderMaterial({\n defines: Object.assign({}, SSAOShader.defines),\n uniforms: UniformsUtils.clone(SSAOShader.uniforms),\n vertexShader: SSAOShader.vertexShader,\n fragmentShader: SSAOShader.fragmentShader,\n blending: NoBlending,\n })\n\n this.ssaoMaterial.uniforms['tDiffuse'].value = this.beautyRenderTarget.texture\n this.ssaoMaterial.uniforms['tNormal'].value = this.normalRenderTarget.texture\n this.ssaoMaterial.uniforms['tDepth'].value = this.normalRenderTarget.depthTexture\n this.ssaoMaterial.uniforms['tNoise'].value = this.noiseTexture\n this.ssaoMaterial.uniforms['kernel'].value = this.kernel\n this.ssaoMaterial.uniforms['cameraNear'].value = this.camera.near\n this.ssaoMaterial.uniforms['cameraFar'].value = this.camera.far\n this.ssaoMaterial.uniforms['resolution'].value.set(this.width, this.height)\n this.ssaoMaterial.uniforms['cameraProjectionMatrix'].value.copy(this.camera.projectionMatrix)\n this.ssaoMaterial.uniforms['cameraInverseProjectionMatrix'].value.copy(this.camera.projectionMatrixInverse)\n\n // normal material\n\n this.normalMaterial = new MeshNormalMaterial()\n this.normalMaterial.blending = NoBlending\n\n // blur material\n\n this.blurMaterial = new ShaderMaterial({\n defines: Object.assign({}, SSAOBlurShader.defines),\n uniforms: UniformsUtils.clone(SSAOBlurShader.uniforms),\n vertexShader: SSAOBlurShader.vertexShader,\n fragmentShader: SSAOBlurShader.fragmentShader,\n })\n this.blurMaterial.uniforms['tDiffuse'].value = this.ssaoRenderTarget.texture\n this.blurMaterial.unifor