diff --git a/examples/js/postprocessing/AfterimagePass.js b/examples/js/postprocessing/AfterimagePass.js index 15d976d6437000b10739370ac8b62dfe18fcf8b9..45af7f042ed8e17d17c7d96167851c5ae030aef5 100644 --- a/examples/js/postprocessing/AfterimagePass.js +++ b/examples/js/postprocessing/AfterimagePass.js @@ -41,10 +41,8 @@ THREE.AfterimagePass = function ( damp ) { this.compFsQuad = new THREE.Pass.FullScreenQuad( this.shaderMaterial ); - var material = new THREE.MeshBasicMaterial( { - map: this.textureComp.texture - } ); - this.screenFsQuad = new THREE.Pass.FullScreenQuad( material ); + var material = new THREE.MeshBasicMaterial(); + this.copyFsQuad = new THREE.Pass.FullScreenQuad( material ); }; @@ -60,13 +58,12 @@ THREE.AfterimagePass.prototype = Object.assign( Object.create( THREE.Pass.protot renderer.setRenderTarget( this.textureComp ); this.compFsQuad.render( renderer ); - renderer.setRenderTarget( this.textureOld ); - this.screenFsQuad.render( renderer ); + this.copyFsQuad.material.map = this.textureComp.texture; if ( this.renderToScreen ) { renderer.setRenderTarget( null ); - this.screenFsQuad.render( renderer ); + this.copyFsQuad.render( renderer ); } else { @@ -74,10 +71,16 @@ THREE.AfterimagePass.prototype = Object.assign( Object.create( THREE.Pass.protot if ( this.clear ) renderer.clear(); - this.screenFsQuad.render( renderer ); + this.copyFsQuad.render( renderer ); } + // Swap buffers. + var temp = this.textureOld; + this.textureOld = this.textureComp; + this.textureComp = temp; + // Now textureOld contains the latest image, ready for the next frame. + }, setSize: function ( width, height ) {