three-stdlib 2.32.2 → 2.33.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/postprocessing/EffectComposer.cjs +5 -0
- package/postprocessing/EffectComposer.cjs.map +1 -1
- package/postprocessing/EffectComposer.d.ts +1 -0
- package/postprocessing/EffectComposer.js +5 -0
- package/postprocessing/EffectComposer.js.map +1 -1
- package/postprocessing/Pass.cjs +2 -0
- package/postprocessing/Pass.cjs.map +1 -1
- package/postprocessing/Pass.d.ts +1 -0
- package/postprocessing/Pass.js +2 -0
- package/postprocessing/Pass.js.map +1 -1
- package/postprocessing/ShaderPass.cjs +4 -0
- package/postprocessing/ShaderPass.cjs.map +1 -1
- package/postprocessing/ShaderPass.d.ts +1 -0
- package/postprocessing/ShaderPass.js +4 -0
- package/postprocessing/ShaderPass.js.map +1 -1
package/package.json
CHANGED
@@ -153,6 +153,11 @@ class EffectComposer {
|
|
153
153
|
this._pixelRatio = pixelRatio;
|
154
154
|
this.setSize(this._width, this._height);
|
155
155
|
}
|
156
|
+
dispose() {
|
157
|
+
this.renderTarget1.dispose();
|
158
|
+
this.renderTarget2.dispose();
|
159
|
+
this.copyPass.dispose();
|
160
|
+
}
|
156
161
|
}
|
157
162
|
exports.EffectComposer = EffectComposer;
|
158
163
|
//# sourceMappingURL=EffectComposer.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EffectComposer.cjs","sources":["../../src/postprocessing/EffectComposer.ts"],"sourcesContent":["import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n}\n\nexport { EffectComposer }\n"],"names":["LinearFilter","RGBAFormat","Vector2","WebGLRenderTarget","CopyShader","ShaderPass","NoBlending","Clock","MaskPass","ClearMaskPass"],"mappings":";;;;;;;;;;;;AAMA,MAAM,eAA4E;AAAA,EAchF,YAAY,UAAyB,cAA8B;AAb5D;AACC;AACA;AACA;AACD;AACA;AACA;AACA;AACA;AACA,kCAAiB,CAAA;AACjB;AACA;AAGL,SAAK,WAAW;AAEhB,QAAI,iBAAiB,QAAW;AAC9B,YAAM,aAAa;AAAA,QACjB,WAAWA,MAAA;AAAA,QACX,WAAWA,MAAA;AAAA,QACX,QAAQC,MAAA;AAAA,MAAA;AAGV,YAAM,OAAO,SAAS,QAAQ,IAAIC,MAAAA,QAAS,CAAA;AACtC,WAAA,cAAc,SAAS;AAC5B,WAAK,SAAS,KAAK;AACnB,WAAK,UAAU,KAAK;AAEpB,qBAAe,IAAIC,MAAA;AAAA,QACjB,KAAK,SAAS,KAAK;AAAA,QACnB,KAAK,UAAU,KAAK;AAAA,QACpB;AAAA,MAAA;AAEF,mBAAa,QAAQ,OAAO;AAAA,IAAA,OACvB;AACL,WAAK,cAAc;AACnB,WAAK,SAAS,aAAa;AAC3B,WAAK,UAAU,aAAa;AAAA,IAC9B;AAEA,SAAK,gBAAgB;AAChB,SAAA,gBAAgB,aAAa;AAC7B,SAAA,cAAc,QAAQ,OAAO;AAElC,SAAK,cAAc,KAAK;AACxB,SAAK,aAAa,KAAK;AAEvB,SAAK,iBAAiB;AAItB,QAAIC,WAAAA,eAAe,QAAW;AAC5B,cAAQ,MAAM,2CAA2C;AAAA,IAC3D;AAEA,QAAIC,WAAAA,eAAe,QAAW;AAC5B,cAAQ,MAAM,2CAA2C;AAAA,IAC3D;AAEK,SAAA,WAAW,IAAIA,WAAA,WAAWD,WAAU,UAAA;AAEpC,SAAA,SAAS,SAAS,WAAWE,MAAAA;AAE7B,SAAA,QAAQ,IAAIC,MAAAA;EACnB;AAAA,EAEO,cAAoB;AACzB,UAAM,MAAM,KAAK;AACjB,SAAK,aAAa,KAAK;AACvB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEO,QAAQ,MAAkB;AAC1B,SAAA,OAAO,KAAK,IAAI;AAChB,SAAA,QAAQ,KAAK,SAAS,KAAK,aAAa,KAAK,UAAU,KAAK,WAAW;AAAA,EAC9E;AAAA,EAEO,WAAW,MAAY,OAAqB;AACjD,SAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AAC5B,SAAA,QAAQ,KAAK,SAAS,KAAK,aAAa,KAAK,UAAU,KAAK,WAAW;AAAA,EAC9E;AAAA,EAEO,WAAW,MAAkB;AAClC,UAAM,QAAQ,KAAK,OAAO,QAAQ,IAAI;AAEtC,QAAI,UAAU,IAAI;AACX,WAAA,OAAO,OAAO,OAAO,CAAC;AAAA,IAC7B;AAAA,EACF;AAAA,EAEO,kBAAkB,WAA4B;AACnD,aAAS,IAAI,YAAY,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AACvD,UAAI,KAAK,OAAO,CAAC,EAAE,SAAS;AACnB,eAAA;AAAA,MACT;AAAA,IACF;AAEO,WAAA;AAAA,EACT;AAAA,EAEO,OAAO,WAA0B;AAGtC,QAAI,cAAc,QAAW;AACf,kBAAA,KAAK,MAAM;IACzB;AAEM,UAAA,sBAAsB,KAAK,SAAS,gBAAgB;AAE1D,QAAI,aAAa;AAEX,UAAA,KAAK,KAAK,OAAO;AAEvB,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACrB,YAAA,OAAO,KAAK,OAAO,CAAC;AAE1B,UAAI,KAAK,YAAY;AAAO;AAE5B,WAAK,iBAAiB,KAAK,kBAAkB,KAAK,kBAAkB,CAAC;AAChE,WAAA,OAAO,KAAK,UAAU,KAAK,aAAa,KAAK,YAAY,WAAW,UAAU;AAEnF,UAAI,KAAK,WAAW;AAClB,YAAI,YAAY;AACR,gBAAA,UAAU,KAAK,SAAS,WAAW;AACzC,gBAAM,UAAU,KAAK,SAAS,MAAM,QAAQ;AAG5C,kBAAQ,QAAQ,QAAQ,UAAU,GAAG,UAAU;AAE1C,eAAA,SAAS,OAAO,KAAK,UAAU,KAAK,aAAa,KAAK,YAAY,SAAS;AAGhF,kBAAQ,QAAQ,QAAQ,OAAO,GAAG,UAAU;AAAA,QAC9C;AAEA,aAAK,YAAY;AAAA,MACnB;AAEA,UAAIC,SAAAA,aAAa,QAAW;AAC1B,YAAI,gBAAgBA,SAAAA,UAAU;AACf,uBAAA;AAAA,QAAA,WACJ,gBAAgBC,wBAAe;AAC3B,uBAAA;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEK,SAAA,SAAS,gBAAgB,mBAAmB;AAAA,EACnD;AAAA,EAEO,MAAM,cAAuC;AAClD,QAAI,iBAAiB,QAAW;AAC9B,YAAM,OAAO,KAAK,SAAS,QAAQ,IAAIP,eAAS;AAC3C,WAAA,cAAc,KAAK,SAAS,cAAc;AAC/C,WAAK,SAAS,KAAK;AACnB,WAAK,UAAU,KAAK;AAEL,qBAAA,KAAK,cAAc;AACrB,mBAAA,QAAQ,KAAK,SAAS,KAAK,aAAa,KAAK,UAAU,KAAK,WAAW;AAAA,IACtF;AAEA,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,gBAAgB;AAChB,SAAA,gBAAgB,aAAa;AAElC,SAAK,cAAc,KAAK;AACxB,SAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EAEO,QAAQ,OAAe,QAAsB;AAClD,SAAK,SAAS;AACd,SAAK,UAAU;AAET,UAAA,iBAAiB,KAAK,SAAS,KAAK;AACpC,UAAA,kBAAkB,KAAK,UAAU,KAAK;AAEvC,SAAA,cAAc,QAAQ,gBAAgB,eAAe;AACrD,SAAA,cAAc,QAAQ,gBAAgB,eAAe;AAE1D,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,WAAK,OAAO,CAAC,EAAE,QAAQ,gBAAgB,eAAe;AAAA,IACxD;AAAA,EACF;AAAA,EAEO,cAAc,YAA0B;AAC7C,SAAK,cAAc;AAEnB,SAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO;AAAA,EACxC;AACF;;"}
|
1
|
+
{"version":3,"file":"EffectComposer.cjs","sources":["../../src/postprocessing/EffectComposer.ts"],"sourcesContent":["import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n\n public dispose() {\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n\n this.copyPass.dispose()\n }\n}\n\nexport { EffectComposer }\n"],"names":["LinearFilter","RGBAFormat","Vector2","WebGLRenderTarget","CopyShader","ShaderPass","NoBlending","Clock","MaskPass","ClearMaskPass"],"mappings":"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"}
|
@@ -23,5 +23,6 @@ declare class EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRend
|
|
23
23
|
reset(renderTarget: WebGLRenderTarget): void;
|
24
24
|
setSize(width: number, height: number): void;
|
25
25
|
setPixelRatio(pixelRatio: number): void;
|
26
|
+
dispose(): void;
|
26
27
|
}
|
27
28
|
export { EffectComposer };
|
@@ -151,6 +151,11 @@ class EffectComposer {
|
|
151
151
|
this._pixelRatio = pixelRatio;
|
152
152
|
this.setSize(this._width, this._height);
|
153
153
|
}
|
154
|
+
dispose() {
|
155
|
+
this.renderTarget1.dispose();
|
156
|
+
this.renderTarget2.dispose();
|
157
|
+
this.copyPass.dispose();
|
158
|
+
}
|
154
159
|
}
|
155
160
|
export {
|
156
161
|
EffectComposer
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EffectComposer.js","sources":["../../src/postprocessing/EffectComposer.ts"],"sourcesContent":["import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n}\n\nexport { EffectComposer }\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"EffectComposer.js","sources":["../../src/postprocessing/EffectComposer.ts"],"sourcesContent":["import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n\n public dispose() {\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n\n this.copyPass.dispose()\n }\n}\n\nexport { EffectComposer }\n"],"names":[],"mappings":"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"}
|
package/postprocessing/Pass.cjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Pass.cjs","sources":["../../src/postprocessing/Pass.ts"],"sourcesContent":["import { OrthographicCamera, PlaneGeometry, Mesh, Material, Renderer, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: Renderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n"],"names":["OrthographicCamera","PlaneGeometry","Mesh"],"mappings":";;;;;;;;;AAEA,MAAM,KAAK;AAAA,EAAX;AAES;AAAA,mCAAU;AAGV;AAAA,qCAAY;AAGZ;AAAA,iCAAQ;AAGR;AAAA,0CAAiB;AAAA;AAAA,EAEjB,QAAQ,OAAe,QAAsB;AAAA,EAAC;AAAA,EAE9C,OACL,UACA,aACA,YACA,WACA,YACM;AACN,YAAQ,MAAM,4DAA4D;AAAA,EAC5E;
|
1
|
+
{"version":3,"file":"Pass.cjs","sources":["../../src/postprocessing/Pass.ts"],"sourcesContent":["import { OrthographicCamera, PlaneGeometry, Mesh, Material, Renderer, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n\n public dispose() {}\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: Renderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n"],"names":["OrthographicCamera","PlaneGeometry","Mesh"],"mappings":";;;;;;;;;AAEA,MAAM,KAAK;AAAA,EAAX;AAES;AAAA,mCAAU;AAGV;AAAA,qCAAY;AAGZ;AAAA,iCAAQ;AAGR;AAAA,0CAAiB;AAAA;AAAA,EAEjB,QAAQ,OAAe,QAAsB;AAAA,EAAC;AAAA,EAE9C,OACL,UACA,aACA,YACA,WACA,YACM;AACN,YAAQ,MAAM,4DAA4D;AAAA,EAC5E;AAAA,EAEO,UAAU;AAAA,EAAC;AACpB;AAGA,MAAM,eAAsD;AAAA,EAK1D,YAAY,UAAqB;AAJ1B,kCAAS,IAAIA,yBAAmB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAClD,oCAAW,IAAIC,MAAAA,cAAc,GAAG,CAAC;AAChC;AAGN,SAAK,OAAO,IAAIC,MAAAA,KAAK,KAAK,UAAU,QAAQ;AAAA,EAC9C;AAAA,EAEA,IAAW,WAAsB;AAC/B,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAW,SAAS,OAAkB;AACpC,SAAK,KAAK,WAAW;AAAA,EACvB;AAAA,EAEO,UAAgB;AAChB,SAAA,KAAK,SAAS;EACrB;AAAA,EAEO,OAAO,UAA0B;AACtC,aAAS,OAAO,KAAK,MAAM,KAAK,MAAM;AAAA,EACxC;AACF;;;"}
|
package/postprocessing/Pass.d.ts
CHANGED
@@ -6,6 +6,7 @@ declare class Pass {
|
|
6
6
|
renderToScreen: boolean;
|
7
7
|
setSize(width: number, height: number): void;
|
8
8
|
render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime: number, maskActive?: unknown): void;
|
9
|
+
dispose(): void;
|
9
10
|
}
|
10
11
|
declare class FullScreenQuad<TMaterial extends Material = Material> {
|
11
12
|
camera: OrthographicCamera;
|
package/postprocessing/Pass.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Pass.js","sources":["../../src/postprocessing/Pass.ts"],"sourcesContent":["import { OrthographicCamera, PlaneGeometry, Mesh, Material, Renderer, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: Renderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n"],"names":[],"mappings":";;;;;;;AAEA,MAAM,KAAK;AAAA,EAAX;AAES;AAAA,mCAAU;AAGV;AAAA,qCAAY;AAGZ;AAAA,iCAAQ;AAGR;AAAA,0CAAiB;AAAA;AAAA,EAEjB,QAAQ,OAAe,QAAsB;AAAA,EAAC;AAAA,EAE9C,OACL,UACA,aACA,YACA,WACA,YACM;AACN,YAAQ,MAAM,4DAA4D;AAAA,EAC5E;
|
1
|
+
{"version":3,"file":"Pass.js","sources":["../../src/postprocessing/Pass.ts"],"sourcesContent":["import { OrthographicCamera, PlaneGeometry, Mesh, Material, Renderer, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n\n public dispose() {}\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: Renderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n"],"names":[],"mappings":";;;;;;;AAEA,MAAM,KAAK;AAAA,EAAX;AAES;AAAA,mCAAU;AAGV;AAAA,qCAAY;AAGZ;AAAA,iCAAQ;AAGR;AAAA,0CAAiB;AAAA;AAAA,EAEjB,QAAQ,OAAe,QAAsB;AAAA,EAAC;AAAA,EAE9C,OACL,UACA,aACA,YACA,WACA,YACM;AACN,YAAQ,MAAM,4DAA4D;AAAA,EAC5E;AAAA,EAEO,UAAU;AAAA,EAAC;AACpB;AAGA,MAAM,eAAsD;AAAA,EAK1D,YAAY,UAAqB;AAJ1B,kCAAS,IAAI,mBAAmB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAClD,oCAAW,IAAI,cAAc,GAAG,CAAC;AAChC;AAGN,SAAK,OAAO,IAAI,KAAK,KAAK,UAAU,QAAQ;AAAA,EAC9C;AAAA,EAEA,IAAW,WAAsB;AAC/B,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAW,SAAS,OAAkB;AACpC,SAAK,KAAK,WAAW;AAAA,EACvB;AAAA,EAEO,UAAgB;AAChB,SAAA,KAAK,SAAS;EACrB;AAAA,EAEO,OAAO,UAA0B;AACtC,aAAS,OAAO,KAAK,MAAM,KAAK,MAAM;AAAA,EACxC;AACF;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ShaderPass.cjs","sources":["../../src/postprocessing/ShaderPass.ts"],"sourcesContent":["import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n}\n\nexport { ShaderPass }\n"],"names":["Pass","ShaderMaterial","UniformsUtils","FullScreenQuad"],"mappings":";;;;;;;;;;AAIA,MAAM,mBAAmBA,KAAAA,KAAK;AAAA,EAM5B,YAAY,QAAiE,YAAY,YAAY;AAC7F;AAND;AACA;AACA;AACA;AAKL,SAAK,YAAY;AAEjB,QAAI,kBAAkBC,MAAAA,gBAAgB;AACpC,WAAK,WAAW,OAAO;AAEvB,WAAK,WAAW;AAAA,IAAA,OACX;AACL,WAAK,WAAWC,MAAA,cAAc,MAAM,OAAO,QAAQ;AAE9C,WAAA,WAAW,IAAID,qBAAe;AAAA,QACjC,SAAS,OAAO,OAAO,CAAA,GAAI,OAAO,OAAO;AAAA,QACzC,UAAU,KAAK;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,MAAA,CACxB;AAAA,IACH;AAEA,SAAK,SAAS,IAAIE,KAAe,eAAA,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEO,OACL,UACA,aACA,YACM;AACN,QAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,WAAK,SAAS,KAAK,SAAS,EAAE,QAAQ,WAAW;AAAA,IACnD;AAEK,SAAA,OAAO,WAAW,KAAK;AAE5B,QAAI,KAAK,gBAAgB;AACvB,eAAS,gBAAgB,IAAI;AACxB,WAAA,OAAO,OAAO,QAAQ;AAAA,IAAA,OACtB;AACL,eAAS,gBAAgB,WAAW;AAEpC,UAAI,KAAK;AAAO,iBAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB;AACrG,WAAA,OAAO,OAAO,QAAQ;AAAA,IAC7B;AAAA,EACF;AACF;;"}
|
1
|
+
{"version":3,"file":"ShaderPass.cjs","sources":["../../src/postprocessing/ShaderPass.ts"],"sourcesContent":["import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n\n public dispose() {\n this.fsQuad.dispose()\n this.material.dispose()\n }\n}\n\nexport { ShaderPass }\n"],"names":["Pass","ShaderMaterial","UniformsUtils","FullScreenQuad"],"mappings":";;;;;;;;;;AAIA,MAAM,mBAAmBA,KAAAA,KAAK;AAAA,EAM5B,YAAY,QAAiE,YAAY,YAAY;AAC7F;AAND;AACA;AACA;AACA;AAKL,SAAK,YAAY;AAEjB,QAAI,kBAAkBC,MAAAA,gBAAgB;AACpC,WAAK,WAAW,OAAO;AAEvB,WAAK,WAAW;AAAA,IAAA,OACX;AACL,WAAK,WAAWC,MAAA,cAAc,MAAM,OAAO,QAAQ;AAE9C,WAAA,WAAW,IAAID,qBAAe;AAAA,QACjC,SAAS,OAAO,OAAO,CAAA,GAAI,OAAO,OAAO;AAAA,QACzC,UAAU,KAAK;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,MAAA,CACxB;AAAA,IACH;AAEA,SAAK,SAAS,IAAIE,KAAe,eAAA,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEO,OACL,UACA,aACA,YACM;AACN,QAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,WAAK,SAAS,KAAK,SAAS,EAAE,QAAQ,WAAW;AAAA,IACnD;AAEK,SAAA,OAAO,WAAW,KAAK;AAE5B,QAAI,KAAK,gBAAgB;AACvB,eAAS,gBAAgB,IAAI;AACxB,WAAA,OAAO,OAAO,QAAQ;AAAA,IAAA,OACtB;AACL,eAAS,gBAAgB,WAAW;AAEpC,UAAI,KAAK;AAAO,iBAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB;AACrG,WAAA,OAAO,OAAO,QAAQ;AAAA,IAC7B;AAAA,EACF;AAAA,EAEO,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,SAAS;EAChB;AACF;;"}
|
@@ -8,5 +8,6 @@ declare class ShaderPass extends Pass {
|
|
8
8
|
fsQuad: FullScreenQuad;
|
9
9
|
constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID?: string);
|
10
10
|
render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget): void;
|
11
|
+
dispose(): void;
|
11
12
|
}
|
12
13
|
export { ShaderPass };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ShaderPass.js","sources":["../../src/postprocessing/ShaderPass.ts"],"sourcesContent":["import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n}\n\nexport { ShaderPass }\n"],"names":[],"mappings":";;;;;;;;AAIA,MAAM,mBAAmB,KAAK;AAAA,EAM5B,YAAY,QAAiE,YAAY,YAAY;AAC7F;AAND;AACA;AACA;AACA;AAKL,SAAK,YAAY;AAEjB,QAAI,kBAAkB,gBAAgB;AACpC,WAAK,WAAW,OAAO;AAEvB,WAAK,WAAW;AAAA,IAAA,OACX;AACL,WAAK,WAAW,cAAc,MAAM,OAAO,QAAQ;AAE9C,WAAA,WAAW,IAAI,eAAe;AAAA,QACjC,SAAS,OAAO,OAAO,CAAA,GAAI,OAAO,OAAO;AAAA,QACzC,UAAU,KAAK;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,MAAA,CACxB;AAAA,IACH;AAEA,SAAK,SAAS,IAAI,eAAe,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEO,OACL,UACA,aACA,YACM;AACN,QAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,WAAK,SAAS,KAAK,SAAS,EAAE,QAAQ,WAAW;AAAA,IACnD;AAEK,SAAA,OAAO,WAAW,KAAK;AAE5B,QAAI,KAAK,gBAAgB;AACvB,eAAS,gBAAgB,IAAI;AACxB,WAAA,OAAO,OAAO,QAAQ;AAAA,IAAA,OACtB;AACL,eAAS,gBAAgB,WAAW;AAEpC,UAAI,KAAK;AAAO,iBAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB;AACrG,WAAA,OAAO,OAAO,QAAQ;AAAA,IAC7B;AAAA,EACF;AACF;"}
|
1
|
+
{"version":3,"file":"ShaderPass.js","sources":["../../src/postprocessing/ShaderPass.ts"],"sourcesContent":["import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n\n public dispose() {\n this.fsQuad.dispose()\n this.material.dispose()\n }\n}\n\nexport { ShaderPass }\n"],"names":[],"mappings":";;;;;;;;AAIA,MAAM,mBAAmB,KAAK;AAAA,EAM5B,YAAY,QAAiE,YAAY,YAAY;AAC7F;AAND;AACA;AACA;AACA;AAKL,SAAK,YAAY;AAEjB,QAAI,kBAAkB,gBAAgB;AACpC,WAAK,WAAW,OAAO;AAEvB,WAAK,WAAW;AAAA,IAAA,OACX;AACL,WAAK,WAAW,cAAc,MAAM,OAAO,QAAQ;AAE9C,WAAA,WAAW,IAAI,eAAe;AAAA,QACjC,SAAS,OAAO,OAAO,CAAA,GAAI,OAAO,OAAO;AAAA,QACzC,UAAU,KAAK;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,MAAA,CACxB;AAAA,IACH;AAEA,SAAK,SAAS,IAAI,eAAe,KAAK,QAAQ;AAAA,EAChD;AAAA,EAEO,OACL,UACA,aACA,YACM;AACN,QAAI,KAAK,SAAS,KAAK,SAAS,GAAG;AACjC,WAAK,SAAS,KAAK,SAAS,EAAE,QAAQ,WAAW;AAAA,IACnD;AAEK,SAAA,OAAO,WAAW,KAAK;AAE5B,QAAI,KAAK,gBAAgB;AACvB,eAAS,gBAAgB,IAAI;AACxB,WAAA,OAAO,OAAO,QAAQ;AAAA,IAAA,OACtB;AACL,eAAS,gBAAgB,WAAW;AAEpC,UAAI,KAAK;AAAO,iBAAS,MAAM,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB;AACrG,WAAA,OAAO,OAAO,QAAQ;AAAA,IAC7B;AAAA,EACF;AAAA,EAEO,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,SAAS;EAChB;AACF;"}
|