提交 48b686dc 编写于 作者: O Olli Etuaho

Don't initialize scene for postprocessing passes

The quad can be passed to renderer.render() directly without being a part of a scene.
上级 4acc91d0
......@@ -144,7 +144,7 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
this.fillQuad.quad.material = this.materialLuminance;
this.materialLuminance.uniforms.tDiffuse.value = readBuffer.texture;
renderer.setRenderTarget( this.currentLuminanceRT );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
//Use the new luminance values, the previous luminance and the frame delta to
//adapt the luminance over time.
......@@ -153,13 +153,13 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
this.materialAdaptiveLum.uniforms.lastLum.value = this.previousLuminanceRT.texture;
this.materialAdaptiveLum.uniforms.currentLum.value = this.currentLuminanceRT.texture;
renderer.setRenderTarget( this.luminanceRT );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
//Copy the new adapted luminance value so that it can be used by the next frame.
this.fillQuad.quad.material = this.materialCopy;
this.copyUniforms.tDiffuse.value = this.luminanceRT.texture;
renderer.setRenderTarget( this.previousLuminanceRT );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......@@ -169,7 +169,7 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
......@@ -177,7 +177,7 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -58,15 +58,15 @@ THREE.AfterimagePass.prototype = Object.assign( Object.create( THREE.Pass.protot
this.uniforms[ "tNew" ].value = readBuffer.texture;
renderer.setRenderTarget( this.textureComp );
renderer.render( this.compFillQuad.scene, this.compFillQuad.camera );
renderer.render( this.compFillQuad.quad, this.compFillQuad.camera );
renderer.setRenderTarget( this.textureOld );
renderer.render( this.screenFillQuad.scene, this.screenFillQuad.camera );
renderer.render( this.screenFillQuad.quad, this.screenFillQuad.camera );
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.screenFillQuad.scene, this.screenFillQuad.camera );
renderer.render( this.screenFillQuad.quad, this.screenFillQuad.camera );
} else {
......@@ -74,7 +74,7 @@ THREE.AfterimagePass.prototype = Object.assign( Object.create( THREE.Pass.protot
if ( this.clear ) renderer.clear();
renderer.render( this.screenFillQuad.scene, this.screenFillQuad.camera );
renderer.render( this.screenFillQuad.quad, this.screenFillQuad.camera );
}
......
......@@ -88,7 +88,7 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
renderer.setRenderTarget( this.renderTargetX );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// Render quad with blured scene into texture (convolution pass 2)
......@@ -98,7 +98,7 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
renderer.setRenderTarget( this.renderTargetY );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// Render original scene with superimposed blur to texture
......@@ -110,7 +110,7 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
renderer.setRenderTarget( readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -103,13 +103,13 @@ THREE.BokehPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -41,13 +41,13 @@ THREE.DotScreenPass.prototype = Object.assign( Object.create( THREE.Pass.prototy
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -198,11 +198,9 @@ THREE.Pass.createFillQuadScene = function( material ) {
var fillQuad = {};
fillQuad.camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
fillQuad.scene = new THREE.Scene();
fillQuad.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), material );
fillQuad.quad.frustumCulled = false; // Avoid getting clipped
fillQuad.scene.add( fillQuad.quad );
return fillQuad;
......
......@@ -42,13 +42,13 @@ THREE.FilmPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -72,13 +72,13 @@ THREE.GlitchPass.prototype = Object.assign( Object.create( THREE.Pass.prototype
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -51,13 +51,13 @@ THREE.HalftonePass.prototype = Object.assign( Object.create( THREE.Pass.prototyp
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -329,7 +329,7 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
}
this.fillQuad.quad.material = passMaterial;
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// restore original state
renderer.autoClear = originalAutoClear;
......
......@@ -127,7 +127,7 @@ THREE.SMAAPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
renderer.setRenderTarget( this.edgesRT );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// pass 2
......@@ -135,7 +135,7 @@ THREE.SMAAPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
renderer.setRenderTarget( this.weightsRT );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// pass 3
......@@ -146,13 +146,13 @@ THREE.SMAAPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -129,7 +129,7 @@ THREE.SSAARenderPass.prototype = Object.assign( Object.create( THREE.Pass.protot
}
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -270,7 +270,7 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
}
this.fillQuad.quad.material = passMaterial;
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// restore original state
renderer.autoClear = originalAutoClear;
......
......@@ -52,7 +52,7 @@ THREE.SavePass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
renderer.setRenderTarget( this.renderTarget );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -49,14 +49,14 @@ THREE.ShaderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} 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 );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -99,7 +99,7 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
renderer.setRenderTarget( this.sampleRenderTarget );
if ( this.accumulateIndex === 0 ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
this.accumulateIndex ++;
......@@ -119,7 +119,7 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
this.copyUniforms[ "tDiffuse" ].value = this.sampleRenderTarget.texture;
renderer.setRenderTarget( writeBuffer );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......@@ -129,7 +129,7 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
this.copyUniforms[ "tDiffuse" ].value = this.holdRenderTarget.texture;
renderer.setRenderTarget( writeBuffer );
if ( accumulationWeight === 0 ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
......@@ -49,7 +49,7 @@ THREE.TexturePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
renderer.autoClear = oldAutoClear;
}
......
......@@ -200,7 +200,7 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......@@ -212,7 +212,7 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
renderer.setRenderTarget( this.renderTargetBright );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// 2. Blur All the mips progressively
......@@ -226,13 +226,13 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.separableBlurMaterials[ i ].uniforms[ "direction" ].value = THREE.UnrealBloomPass.BlurDirectionX;
renderer.setRenderTarget( this.renderTargetsHorizontal[ i ] );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
this.separableBlurMaterials[ i ].uniforms[ "colorTexture" ].value = this.renderTargetsHorizontal[ i ].texture;
this.separableBlurMaterials[ i ].uniforms[ "direction" ].value = THREE.UnrealBloomPass.BlurDirectionY;
renderer.setRenderTarget( this.renderTargetsVertical[ i ] );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
inputRenderTarget = this.renderTargetsVertical[ i ];
......@@ -247,7 +247,7 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
renderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );
renderer.clear();
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
// Blend it additively over the input texture
......@@ -260,12 +260,12 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
} else {
renderer.setRenderTarget( readBuffer );
renderer.render( this.fillQuad.scene, this.fillQuad.camera );
renderer.render( this.fillQuad.quad, this.fillQuad.camera );
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册