diff options
| author | Agando <roduccomm@gmail.com> | 2026-07-09 06:00:32 +0200 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-07-09 06:00:32 +0200 |
| commit | cf7461ffeb4f53f3f50c9c692a2e4fdcecf17e82 (patch) | |
| tree | e7780cd41271381cf108c9c81d71a3cb65cfd555 /downloads/RenderPass.js | |
| parent | ea4d09fb5ccba12ed774fcf7c913edfa1e6a851a (diff) | |
auto: 2026-07-09_06:00 changes
Diffstat (limited to 'downloads/RenderPass.js')
| -rw-r--r-- | downloads/RenderPass.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/downloads/RenderPass.js b/downloads/RenderPass.js new file mode 100644 index 0000000..b212e77 --- /dev/null +++ b/downloads/RenderPass.js @@ -0,0 +1,74 @@ +( function () { + + class RenderPass extends THREE.Pass { + + constructor( scene, camera, overrideMaterial, clearColor, clearAlpha ) { + + super(); + this.scene = scene; + this.camera = camera; + this.overrideMaterial = overrideMaterial; + this.clearColor = clearColor; + this.clearAlpha = clearAlpha !== undefined ? clearAlpha : 0; + this.clear = true; + this.clearDepth = false; + this.needsSwap = false; + this._oldClearColor = new THREE.Color(); + + } + + render( renderer, writeBuffer, readBuffer + /*, deltaTime, maskActive */ + ) { + + const oldAutoClear = renderer.autoClear; + renderer.autoClear = false; + let oldClearAlpha, oldOverrideMaterial; + + if ( this.overrideMaterial !== undefined ) { + + oldOverrideMaterial = this.scene.overrideMaterial; + this.scene.overrideMaterial = this.overrideMaterial; + + } + + if ( this.clearColor ) { + + renderer.getClearColor( this._oldClearColor ); + oldClearAlpha = renderer.getClearAlpha(); + renderer.setClearColor( this.clearColor, this.clearAlpha ); + + } + + if ( this.clearDepth ) { + + renderer.clearDepth(); + + } + + renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600 + + if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + renderer.render( this.scene, this.camera ); + + if ( this.clearColor ) { + + renderer.setClearColor( this._oldClearColor, oldClearAlpha ); + + } + + if ( this.overrideMaterial !== undefined ) { + + this.scene.overrideMaterial = oldOverrideMaterial; + + } + + renderer.autoClear = oldAutoClear; + + } + + } + + THREE.RenderPass = RenderPass; + +} )(); |