未验证 提交 f3642887 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #16033 from Oletus/postprocessing-render-to-screen

Set Pass.renderToScreen automatically in EffectComposer
......@@ -28,6 +28,8 @@ THREE.EffectComposer = function ( renderer, renderTarget ) {
this.writeBuffer = this.renderTarget1;
this.readBuffer = this.renderTarget2;
this.renderToScreen = true;
this.passes = [];
// dependencies
......@@ -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
......@@ -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 ) {
......@@ -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;
};
......
......@@ -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 );
......
......@@ -135,7 +135,6 @@
var renderPass = new THREE.RenderPass( scene, camera );
var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
//
......
......@@ -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;
......@@ -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();
......
......@@ -146,7 +146,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -262,7 +262,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -211,7 +211,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -154,7 +154,6 @@
composer.addPass( vignettePass );
var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );
// events
......
......@@ -184,7 +184,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -150,7 +150,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -177,7 +177,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -198,7 +198,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -349,7 +349,6 @@
composer.addPass( vignettePass );
composer.addPass( copyPass );
copyPass.renderToScreen = true;
// events
......
......@@ -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;
......
......@@ -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 );
......
......@@ -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 );
......@@ -196,8 +194,6 @@
effectBloom2.clear = true;
effectBloom3.clear = true;
effectCopy.renderToScreen = true;
//
var pars = {
......@@ -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 );
......@@ -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;
//
......
......@@ -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 );
......
......@@ -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 );
......
......@@ -82,7 +82,6 @@
var effect = new THREE.ShaderPass( THREE.RGBShiftShader );
effect.uniforms[ 'amount' ].value = 0.0015;
effect.renderToScreen = true;
composer.addPass( effect );
//
......
......@@ -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 = {
......
......@@ -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 );
......
......@@ -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 );
......
......@@ -258,8 +258,6 @@
height: height
} );
bokehPass.renderToScreen = true;
var composer = new THREE.EffectComposer( renderer );
composer.addPass( renderPass );
......
......@@ -136,7 +136,6 @@
//
fxaaPass = new THREE.ShaderPass( THREE.FXAAShader );
fxaaPass.renderToScreen = true;
var pixelRatio = renderer.getPixelRatio();
......@@ -150,7 +149,6 @@
//
var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer2 = new THREE.EffectComposer( renderer );
composer2.addPass( renderPass );
......
......@@ -103,7 +103,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );
glitchPass = new THREE.GlitchPass();
glitchPass.renderToScreen = true;
composer.addPass( glitchPass );
......
......@@ -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,
......
......@@ -516,7 +516,6 @@
composer.addPass( new THREE.RenderPass( scene, camera ) );
nodepass = new NodePass();
nodepass.renderToScreen = true;
composer.addPass( nodepass );
......
......@@ -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 );
......
......@@ -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 );
......
......@@ -149,7 +149,6 @@
disable: false
};
halftonePass = new THREE.HalftonePass( window.innerWidth, window.innerHeight, params );
halftonePass.renderToScreen = true;
composer.addPass( renderPass );
composer.addPass( halftonePass );
......
......@@ -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
......
......@@ -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 );
......
......@@ -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 );
......
......@@ -128,7 +128,6 @@
composer.addPass( ssaaRenderPass );
copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );
window.addEventListener( 'resize', onWindowResize, false );
......
......@@ -182,7 +182,6 @@
ssaaRenderPassO = new THREE.SSAARenderPass( scene, cameraO );
composer.addPass( ssaaRenderPassO );
copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );
window.addEventListener( 'resize', onWindowResize, false );
......@@ -251,7 +250,6 @@
ssaaRenderPassP.enabled = ( params.camera === 'perspective' );
ssaaRenderPassO.enabled = ( params.camera === 'orthographic' );
ssaaRenderPassP.renderToScreen = ssaaRenderPassO.renderToScreen = params.renderToScreen;
copyPass.enabled = ! params.renderToScreen;
composer.render();
......
......@@ -127,7 +127,6 @@
ssaoPass = new THREE.SSAOPass( scene, camera, width, height );
ssaoPass.kernelRadius = 16;
ssaoPass.renderToScreen = true;
effectComposer = new THREE.EffectComposer( renderer );
effectComposer.addPass( ssaoPass );
......
......@@ -157,7 +157,6 @@
composer.addPass( renderPass );
copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );
window.addEventListener( 'resize', onWindowResize, false );
......
......@@ -104,7 +104,6 @@
var renderScene = new THREE.RenderPass( scene, camera );
var bloomPass = new THREE.UnrealBloomPass( new THREE.Vector2( window.innerWidth, window.innerHeight ), 1.5, 0.4, 0.85 );
bloomPass.renderToScreen = true;
bloomPass.threshold = params.bloomThreshold;
bloomPass.strength = params.bloomStrength;
bloomPass.radius = params.bloomRadius;
......
......@@ -183,8 +183,6 @@
var effectBloom = new THREE.BloomPass( 1.25 );
var effectFilm = new THREE.FilmPass( 0.35, 0.95, 2048, false );
effectFilm.renderToScreen = true;
composer = new THREE.EffectComposer( renderer );
composer.addPass( renderModel );
......
......@@ -368,7 +368,6 @@
hdrToneMappingPass = new THREE.AdaptiveToneMappingPass( false, 256 );
bloomPass = new THREE.BloomPass();
var gammaCorrectionPass = new THREE.ShaderPass( THREE.GammaCorrectionShader );
gammaCorrectionPass.renderToScreen = true;
dynamicHdrEffectComposer.addPass( skyboxPass );
dynamicHdrEffectComposer.addPass( scenePass );
......@@ -390,7 +389,6 @@
ldrEffectComposer.addPass( gammaCorrectionPass );
// var gammaPass = new THREE.ShaderPass( GammaShader );
// gammaPass.renderToScreen = true;
// ldrEffectComposer.addPass( gammaPass );
var gui = new dat.GUI();
......
......@@ -215,7 +215,6 @@
composer.addPass( renderScene );
var copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
composer.addPass( copyPass );
stats = new Stats();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册