UNPKG

1.27 kBJavaScriptView Raw
1( function () {
2
3 class TexturePass extends THREE.Pass {
4
5 constructor( map, opacity ) {
6
7 super();
8 if ( THREE.CopyShader === undefined ) console.error( 'THREE.TexturePass relies on THREE.CopyShader' );
9 const shader = THREE.CopyShader;
10 this.map = map;
11 this.opacity = opacity !== undefined ? opacity : 1.0;
12 this.uniforms = THREE.UniformsUtils.clone( shader.uniforms );
13 this.material = new THREE.ShaderMaterial( {
14 uniforms: this.uniforms,
15 vertexShader: shader.vertexShader,
16 fragmentShader: shader.fragmentShader,
17 depthTest: false,
18 depthWrite: false
19 } );
20 this.needsSwap = false;
21 this.fsQuad = new THREE.FullScreenQuad( null );
22
23 }
24
25 render( renderer, writeBuffer, readBuffer
26 /*, deltaTime, maskActive */
27 ) {
28
29 const oldAutoClear = renderer.autoClear;
30 renderer.autoClear = false;
31 this.fsQuad.material = this.material;
32 this.uniforms[ 'opacity' ].value = this.opacity;
33 this.uniforms[ 'tDiffuse' ].value = this.map;
34 this.material.transparent = this.opacity < 1.0;
35 renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
36 if ( this.clear ) renderer.clear();
37 this.fsQuad.render( renderer );
38 renderer.autoClear = oldAutoClear;
39
40 }
41
42 }
43
44 THREE.TexturePass = TexturePass;
45
46} )();