diff --git a/src/renderers/common/Renderer.js b/src/renderers/common/Renderer.js index 898ef9d0961146..9028734327b2c6 100644 --- a/src/renderers/common/Renderer.js +++ b/src/renderers/common/Renderer.js @@ -463,6 +463,14 @@ class Renderer { */ this._frameBufferTargets = new Map(); + /** + * Intermediate color texture last used for the output pass. + * + * @private + * @type {?Texture} + */ + this._lastOutputFramebufferTexture = null; + const alphaClear = this.alpha === true ? 0 : 1; /** diff --git a/src/renderers/common/nodes/NodeManager.js b/src/renderers/common/nodes/NodeManager.js index 0881e2621075cc..1009d4e7f59042 100644 --- a/src/renderers/common/nodes/NodeManager.js +++ b/src/renderers/common/nodes/NodeManager.js @@ -863,6 +863,8 @@ class NodeManager extends DataMap { */ hasOutputChange( outputTarget ) { + if ( this.renderer._lastOutputFramebufferTexture !== outputTarget ) return true; + const cacheKey = _outputNodeMap.get( outputTarget ); return cacheKey !== this.getOutputCacheKey(); @@ -886,6 +888,7 @@ class NodeManager extends DataMap { texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace ); _outputNodeMap.set( outputTarget, cacheKey ); + renderer._lastOutputFramebufferTexture = outputTarget; return output;