Skip to content

Commit

Permalink
Merge pull request mrdoob#16033 from Oletus/postprocessing-render-to-…
Browse files Browse the repository at this point in the history
…screen

Set Pass.renderToScreen automatically in EffectComposer
  • Loading branch information
mrdoob authored Mar 22, 2019
2 parents 4fb74e3 + 911e4b2 commit f364288
Show file tree
Hide file tree
Showing 41 changed files with 25 additions and 72 deletions.
21 changes: 20 additions & 1 deletion examples/js/postprocessing/EffectComposer.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ THREE.EffectComposer = function ( renderer, renderTarget ) {
this.writeBuffer = this.renderTarget1;
this.readBuffer = this.renderTarget2;

this.renderToScreen = true;

this.passes = [];

// dependencies
Expand Down Expand Up @@ -75,6 +77,22 @@ Object.assign( THREE.EffectComposer.prototype, {

},

isLastEnabledPass: function ( passIndex ) {

for ( var i = passIndex + 1; i < this.passes.length; i ++ ) {

if ( this.passes[i].enabled ) {

return false;

}

}

return true;

},

render: function ( deltaTime ) {

// deltaTime value is in seconds
Expand All @@ -99,6 +117,7 @@ Object.assign( THREE.EffectComposer.prototype, {

if ( pass.enabled === false ) continue;

pass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );
pass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );

if ( pass.needsSwap ) {
Expand Down Expand Up @@ -187,7 +206,7 @@ THREE.Pass = function () {
// if set to true, the pass clears its buffer before rendering
this.clear = false;

// if set to true, the result of the pass is rendered to screen
// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
this.renderToScreen = false;

};
Expand Down
2 changes: 0 additions & 2 deletions examples/misc_controls_fly.html
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,6 @@
var renderModel = new THREE.RenderPass( scene, camera );
var effectFilm = new THREE.FilmPass( 0.35, 0.75, 2048, false );

effectFilm.renderToScreen = true;

composer = new THREE.EffectComposer( renderer );

composer.addPass( renderModel );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl2_multisampled_renderbuffers.html
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@

var renderPass = new THREE.RenderPass( scene, camera );
var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;

//

Expand Down
14 changes: 1 addition & 13 deletions examples/webgl_lightningstrike.html
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,6 @@
outlinePass.edgeThickness = 2.8;
outlinePass.visibleEdgeColor = visibleColor;
outlinePass.hiddenEdgeColor.set( 0 );
outlinePass.renderToScreen = true;
composer.addPass( outlinePass );

scene.userData.outlineEnabled = true;
Expand Down Expand Up @@ -580,18 +579,7 @@

controls.update();

if ( scene.userData.outlineEnabled ) {

outlinePass.enabled = true;
rayPass.renderToScreen = false;

}
else {

outlinePass.enabled = false;
rayPass.renderToScreen = true;

}
outlinePass.enabled = scene.userData.outlineEnabled;

composer.render();

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d.html
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_bvh.html
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_bvh_retarget.html
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_hierarchy.html
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@
composer.addPass( vignettePass );

var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );

// events
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_keyframe.html
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_morph.html
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_physics.html
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_skinning.html
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_loader_sea3d_sound.html
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,6 @@
composer.addPass( vignettePass );

composer.addPass( copyPass );
copyPass.renderToScreen = true;

// events

Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_materials_bumpmap_skin.html
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,6 @@
var effectBeckmann = new THREE.ShaderPass( THREE.ShaderSkin[ "beckmann" ] );
var effectCopy = new THREE.ShaderPass( THREE.CopyShader );

effectCopy.renderToScreen = true;

var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBFormat, stencilBuffer: false };
var rtwidth = 512, rtheight = 512;

Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_materials_normalmap.html
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,6 @@
effectColor.uniforms[ 'powRGB' ].value.set( 1.4, 1.45, 1.45 );
effectColor.uniforms[ 'mulRGB' ].value.set( 1.1, 1.1, 1.1 );

effectColor.renderToScreen = true;

composer = new THREE.EffectComposer( renderer );

composer.addPass( renderModel );
Expand Down
8 changes: 4 additions & 4 deletions examples/webgl_materials_skin.html
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,6 @@

var renderModelUV = new THREE.RenderPass( scene, camera, materialUV, new THREE.Color( 0x575757 ) );

var effectCopy = new THREE.ShaderPass( THREE.CopyShader );

var effectBloom1 = new THREE.BloomPass( 1, 15, 2, 512 );
var effectBloom2 = new THREE.BloomPass( 1, 25, 3, 512 );
var effectBloom3 = new THREE.BloomPass( 1, 25, 4, 512 );
Expand All @@ -196,8 +194,6 @@
effectBloom2.clear = true;
effectBloom3.clear = true;

effectCopy.renderToScreen = true;

//

var pars = {
Expand All @@ -215,6 +211,7 @@

composer = new THREE.EffectComposer( renderer, new THREE.WebGLRenderTarget( rtwidth, rtheight, pars ) );
composer.addPass( renderModelUV );
composer.renderToScreen = false;

var renderScene = new THREE.TexturePass( composer.renderTarget2.texture );

Expand All @@ -224,16 +221,19 @@

composerUV1.addPass( renderScene );
composerUV1.addPass( effectBloom1 );
composerUV1.renderToScreen = false;

composerUV2 = new THREE.EffectComposer( renderer, new THREE.WebGLRenderTarget( rtwidth, rtheight, pars ) );

composerUV2.addPass( renderScene );
composerUV2.addPass( effectBloom2 );
composerUV2.renderToScreen = false;

composerUV3 = new THREE.EffectComposer( renderer, new THREE.WebGLRenderTarget( rtwidth, rtheight, pars ) );

composerUV3.addPass( renderScene );
composerUV3.addPass( effectBloom3 );
composerUV3.renderToScreen = false;

//

Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_materials_video.html
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,6 @@
var effectBloom = new THREE.BloomPass( 1.3 );
var effectCopy = new THREE.ShaderPass( THREE.CopyShader );

effectCopy.renderToScreen = true;

composer = new THREE.EffectComposer( renderer );

composer.addPass( renderModel );
Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_points_dynamic.html
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,6 @@
effectFocus.uniforms[ "screenWidth" ].value = window.innerWidth;
effectFocus.uniforms[ "screenHeight" ].value = window.innerHeight;

effectFocus.renderToScreen = true;

composer = new THREE.EffectComposer( renderer );

composer.addPass( renderModel );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing.html
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@

var effect = new THREE.ShaderPass( THREE.RGBShiftShader );
effect.uniforms[ 'amount' ].value = 0.0015;
effect.renderToScreen = true;
composer.addPass( effect );

//
Expand Down
7 changes: 0 additions & 7 deletions examples/webgl_postprocessing_advanced.html
Original file line number Diff line number Diff line change
Expand Up @@ -206,13 +206,6 @@

renderMaskInverse.inverse = true;

//effectFilm.renderToScreen = true;
//effectFilmBW.renderToScreen = true;
//effectDotScreen.renderToScreen = true;
//effectBleach.renderToScreen = true;
effectVignette.renderToScreen = true;
//effectCopy.renderToScreen = true;

//

var rtParameters = {
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_afterimage.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );

afterimagePass = new THREE.AfterimagePass();
afterimagePass.renderToScreen = true;
composer.addPass( afterimagePass );

window.addEventListener( 'resize', onWindowResize, false );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_backgrounds.html
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@
composer.addPass( renderPass );

var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );

var controls = new THREE.OrbitControls( cameraP, renderer.domElement );
Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_postprocessing_dof.html
Original file line number Diff line number Diff line change
Expand Up @@ -258,8 +258,6 @@
height: height
} );

bokehPass.renderToScreen = true;

var composer = new THREE.EffectComposer( renderer );

composer.addPass( renderPass );
Expand Down
2 changes: 0 additions & 2 deletions examples/webgl_postprocessing_fxaa.html
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@
//

fxaaPass = new THREE.ShaderPass( THREE.FXAAShader );
fxaaPass.renderToScreen = true;

var pixelRatio = renderer.getPixelRatio();

Expand All @@ -150,7 +149,6 @@
//

var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;

composer2 = new THREE.EffectComposer( renderer );
composer2.addPass( renderPass );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_glitch.html
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );

glitchPass = new THREE.GlitchPass();
glitchPass.renderToScreen = true;
composer.addPass( glitchPass );


Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_masking.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@
var texturePass2 = new THREE.TexturePass( texture2 );

var outputPass = new THREE.ShaderPass( THREE.CopyShader );
outputPass.renderToScreen = true;

var parameters = {
minFilter: THREE.LinearFilter,
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_nodes_pass.html
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );

nodepass = new NodePass();
nodepass.renderToScreen = true;

composer.addPass( nodepass );

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_outline.html
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,6 @@

effectFXAA = new THREE.ShaderPass( THREE.FXAAShader );
effectFXAA.uniforms[ 'resolution' ].value.set( 1 / window.innerWidth, 1 / window.innerHeight );
effectFXAA.renderToScreen = true;
composer.addPass( effectFXAA );

window.addEventListener( 'resize', onWindowResize, false );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_pixel.html
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@
pixelPass = new THREE.ShaderPass( THREE.PixelShader );
pixelPass.uniforms[ "resolution" ].value = new THREE.Vector2( window.innerWidth, window.innerHeight );
pixelPass.uniforms[ "resolution" ].value.multiplyScalar( window.devicePixelRatio );
pixelPass.renderToScreen = true;
composer.addPass( pixelPass );

window.addEventListener( 'resize', resize );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_rgb_halftone.html
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@
disable: false
};
halftonePass = new THREE.HalftonePass( window.innerWidth, window.innerHeight, params );
halftonePass.renderToScreen = true;
composer.addPass( renderPass );
composer.addPass( halftonePass );

Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_sao.html
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@
renderPass = new THREE.RenderPass( scene, camera );
composer.addPass( renderPass );
saoPass = new THREE.SAOPass( scene, camera, false, true );
saoPass.renderToScreen = true;
composer.addPass( saoPass );

// Init gui
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_smaa.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );

pass = new THREE.SMAAPass( window.innerWidth * renderer.getPixelRatio(), window.innerHeight * renderer.getPixelRatio() );
pass.renderToScreen = true;
composer.addPass( pass );

window.addEventListener( 'resize', onWindowResize, false );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_sobel.html
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@
// Sobel operator

effectSobel = new THREE.ShaderPass( THREE.SobelOperatorShader );
effectSobel.renderToScreen = true;
effectSobel.uniforms[ "resolution" ].value.x = window.innerWidth;
effectSobel.uniforms[ "resolution" ].value.y = window.innerHeight;
composer.addPass( effectSobel );
Expand Down
1 change: 0 additions & 1 deletion examples/webgl_postprocessing_ssaa.html
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@
composer.addPass( ssaaRenderPass );

copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );

window.addEventListener( 'resize', onWindowResize, false );
Expand Down
Loading

0 comments on commit f364288

Please sign in to comment.