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/ShaderPass.js | |
| parent | ea4d09fb5ccba12ed774fcf7c913edfa1e6a851a (diff) | |
auto: 2026-07-09_06:00 changes
Diffstat (limited to 'downloads/ShaderPass.js')
| -rw-r--r-- | downloads/ShaderPass.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/downloads/ShaderPass.js b/downloads/ShaderPass.js new file mode 100644 index 0000000..9c508b3 --- /dev/null +++ b/downloads/ShaderPass.js @@ -0,0 +1,63 @@ +( function () { + + class ShaderPass extends THREE.Pass { + + constructor( shader, textureID ) { + + super(); + this.textureID = textureID !== undefined ? textureID : 'tDiffuse'; + + if ( shader instanceof THREE.ShaderMaterial ) { + + this.uniforms = shader.uniforms; + this.material = shader; + + } else if ( shader ) { + + this.uniforms = THREE.UniformsUtils.clone( shader.uniforms ); + this.material = new THREE.ShaderMaterial( { + defines: Object.assign( {}, shader.defines ), + uniforms: this.uniforms, + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + } ); + + } + + this.fsQuad = new THREE.FullScreenQuad( this.material ); + + } + + render( renderer, writeBuffer, readBuffer + /*, deltaTime, maskActive */ + ) { + + if ( this.uniforms[ this.textureID ] ) { + + this.uniforms[ this.textureID ].value = readBuffer.texture; + + } + + this.fsQuad.material = this.material; + + if ( this.renderToScreen ) { + + renderer.setRenderTarget( null ); + this.fsQuad.render( renderer ); + + } else { + + renderer.setRenderTarget( writeBuffer ); // 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 ); + this.fsQuad.render( renderer ); + + } + + } + + } + + THREE.ShaderPass = ShaderPass; + +} )(); |