Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three-stdlib /postprocessing /BloomPass.js
| var __defProp = Object.defineProperty; | |
| var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | |
| var __publicField = (obj, key, value) => { | |
| __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); | |
| return value; | |
| }; | |
| import { Pass, FullScreenQuad } from "./Pass.js"; | |
| import { Vector2, WebGLRenderTarget, UniformsUtils, ShaderMaterial, AdditiveBlending } from "three"; | |
| import { ConvolutionShader } from "../shaders/ConvolutionShader.js"; | |
| class BloomPass extends Pass { | |
| constructor(strength = 1, kernelSize = 25, sigma = 4, resolution = 256) { | |
| super(); | |
| __publicField(this, "renderTargetX"); | |
| __publicField(this, "renderTargetY"); | |
| __publicField(this, "materialCombine"); | |
| __publicField(this, "materialConvolution"); | |
| __publicField(this, "fsQuad"); | |
| __publicField(this, "combineUniforms"); | |
| __publicField(this, "convolutionUniforms"); | |
| __publicField(this, "blurX", new Vector2(1953125e-9, 0)); | |
| __publicField(this, "blurY", new Vector2(0, 1953125e-9)); | |
| this.renderTargetX = new WebGLRenderTarget(resolution, resolution); | |
| this.renderTargetX.texture.name = "BloomPass.x"; | |
| this.renderTargetY = new WebGLRenderTarget(resolution, resolution); | |
| this.renderTargetY.texture.name = "BloomPass.y"; | |
| this.combineUniforms = UniformsUtils.clone(CombineShader.uniforms); | |
| this.combineUniforms["strength"].value = strength; | |
| this.materialCombine = new ShaderMaterial({ | |
| uniforms: this.combineUniforms, | |
| vertexShader: CombineShader.vertexShader, | |
| fragmentShader: CombineShader.fragmentShader, | |
| blending: AdditiveBlending, | |
| transparent: true | |
| }); | |
| if (ConvolutionShader === void 0) | |
| console.error("BloomPass relies on ConvolutionShader"); | |
| const convolutionShader = ConvolutionShader; | |
| this.convolutionUniforms = UniformsUtils.clone(convolutionShader.uniforms); | |
| this.convolutionUniforms["uImageIncrement"].value = this.blurX; | |
| this.convolutionUniforms["cKernel"].value = ConvolutionShader.buildKernel(sigma); | |
| this.materialConvolution = new ShaderMaterial({ | |
| uniforms: this.convolutionUniforms, | |
| vertexShader: convolutionShader.vertexShader, | |
| fragmentShader: convolutionShader.fragmentShader, | |
| defines: { | |
| KERNEL_SIZE_FLOAT: kernelSize.toFixed(1), | |
| KERNEL_SIZE_INT: kernelSize.toFixed(0) | |
| } | |
| }); | |
| this.needsSwap = false; | |
| this.fsQuad = new FullScreenQuad(this.materialConvolution); | |
| } | |
| render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) { | |
| if (maskActive) | |
| renderer.state.buffers.stencil.setTest(false); | |
| this.fsQuad.material = this.materialConvolution; | |
| this.convolutionUniforms["tDiffuse"].value = readBuffer.texture; | |
| this.convolutionUniforms["uImageIncrement"].value = this.blurX; | |
| renderer.setRenderTarget(this.renderTargetX); | |
| renderer.clear(); | |
| this.fsQuad.render(renderer); | |
| this.convolutionUniforms["tDiffuse"].value = this.renderTargetX.texture; | |
| this.convolutionUniforms["uImageIncrement"].value = this.blurY; | |
| renderer.setRenderTarget(this.renderTargetY); | |
| renderer.clear(); | |
| this.fsQuad.render(renderer); | |
| this.fsQuad.material = this.materialCombine; | |
| this.combineUniforms["tDiffuse"].value = this.renderTargetY.texture; | |
| if (maskActive) | |
| renderer.state.buffers.stencil.setTest(true); | |
| renderer.setRenderTarget(readBuffer); | |
| if (this.clear) | |
| renderer.clear(); | |
| this.fsQuad.render(renderer); | |
| } | |
| } | |
| const CombineShader = { | |
| uniforms: { | |
| tDiffuse: { | |
| value: null | |
| }, | |
| strength: { | |
| value: 1 | |
| } | |
| }, | |
| vertexShader: ( | |
| /* glsl */ | |
| ` | |
| varying vec2 vUv; | |
| void main() { | |
| vUv = uv; | |
| gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); | |
| }` | |
| ), | |
| fragmentShader: ( | |
| /* glsl */ | |
| ` | |
| uniform float strength; | |
| uniform sampler2D tDiffuse; | |
| varying vec2 vUv; | |
| void main() { | |
| vec4 texel = texture2D( tDiffuse, vUv ); | |
| gl_FragColor = strength * texel; | |
| }` | |
| ) | |
| }; | |
| export { | |
| BloomPass | |
| }; | |
| //# sourceMappingURL=BloomPass.js.map | |
Xet Storage Details
- Size:
- 4.14 kB
- Xet hash:
- fb053e975cd4e6f591f33d54f0e7543f38c8ff4f938f29e89582a6a0b162fd7d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.