@forbespro/lead-agent
Version:
Lead Chat Agent React Component
67 lines (66 loc) • 2.92 kB
JavaScript
import { UniformsUtils as r, ShaderMaterial as a, NoBlending as p, WebGLRenderTarget as o, HalfFloatType as d, NearestFilter as h } from "three";
import { Pass as l, FullScreenQuad as n } from "./index52.js";
import { CopyShader as s } from "./index49.js";
import { AfterimageShader as i } from "./index53.js";
class S extends l {
/**
* Constructs a new after image pass.
*
* @param {number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
*/
constructor(e = 0.96) {
super(), this.uniforms = r.clone(i.uniforms), this.uniforms.damp.value = e, this.compFsMaterial = new a({
uniforms: this.uniforms,
vertexShader: i.vertexShader,
fragmentShader: i.fragmentShader
}), this.copyFsMaterial = new a({
uniforms: r.clone(s.uniforms),
vertexShader: s.vertexShader,
fragmentShader: s.fragmentShader,
blending: p,
depthTest: !1,
depthWrite: !1
}), this._textureComp = new o(window.innerWidth, window.innerHeight, {
magFilter: h,
type: d
}), this._textureOld = new o(window.innerWidth, window.innerHeight, {
magFilter: h,
type: d
}), this._compFsQuad = new n(this.compFsMaterial), this._copyFsQuad = new n(this.copyFsMaterial);
}
/**
* Performs the after image pass.
*
* @param {WebGLRenderer} renderer - The renderer.
* @param {WebGLRenderTarget} writeBuffer - The write buffer. This buffer is intended as the rendering
* destination for the pass.
* @param {WebGLRenderTarget} readBuffer - The read buffer. The pass can access the result from the
* previous pass from this buffer.
* @param {number} deltaTime - The delta time in seconds.
* @param {boolean} maskActive - Whether masking is active or not.
*/
render(e, t, u) {
this.uniforms.tOld.value = this._textureOld.texture, this.uniforms.tNew.value = u.texture, e.setRenderTarget(this._textureComp), this._compFsQuad.render(e), this._copyFsQuad.material.uniforms.tDiffuse.value = this._textureComp.texture, this.renderToScreen ? (e.setRenderTarget(null), this._copyFsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this._copyFsQuad.render(e));
const m = this._textureOld;
this._textureOld = this._textureComp, this._textureComp = m;
}
/**
* Sets the size of the pass.
*
* @param {number} width - The width to set.
* @param {number} height - The width to set.
*/
setSize(e, t) {
this._textureComp.setSize(e, t), this._textureOld.setSize(e, t);
}
/**
* Frees the GPU-related resources allocated by this instance. Call this
* method whenever the pass is no longer used in your app.
*/
dispose() {
this._textureComp.dispose(), this._textureOld.dispose(), this.compFsMaterial.dispose(), this.copyFsMaterial.dispose(), this._compFsQuad.dispose(), this._copyFsQuad.dispose();
}
}
export {
S as AfterimagePass
};