提交 85f911fb 编写于 作者: M Marc-Sefan Cassola

removed renderTarget and forceClear from WebGLRenderer.render() in example code

上级 90df746c
......@@ -277,7 +277,9 @@ function GPUComputationRenderer( sizeX, sizeY, renderer ) {
addResolutionDefine( material );
return material;
}
this.createShaderMaterial = createShaderMaterial;
this.createRenderTarget = function( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {
......@@ -316,7 +318,6 @@ function GPUComputationRenderer( sizeX, sizeY, renderer ) {
};
this.renderTexture = function( input, output ) {
// Takes a texture, and render out in rendertarget
......@@ -333,10 +334,15 @@ function GPUComputationRenderer( sizeX, sizeY, renderer ) {
this.doRenderTarget = function( material, output ) {
var currentRenderTarget = renderer.getRenderTarget();
mesh.material = material;
renderer.render( scene, camera, output );
renderer.setRenderTarget( output );
renderer.render( scene, camera );
mesh.material = passThruShader;
renderer.setRenderTarget( currentRenderTarget );
};
// Shaders
......
......@@ -256,7 +256,10 @@ THREE.Ocean.prototype.renderInitialSpectrum = function () {
this.scene.overrideMaterial = this.materialInitialSpectrum;
this.materialInitialSpectrum.uniforms.u_wind.value.set( this.windX, this.windY );
this.materialInitialSpectrum.uniforms.u_size.value = this.size;
this.renderer.render( this.scene, this.oceanCamera, this.initialSpectrumFramebuffer, true );
this.renderer.setRenderTarget( this.initialSpectrumFramebuffer );
this.renderer.clear();
this.renderer.render( this.scene, this.oceanCamera );
};
......@@ -269,14 +272,15 @@ THREE.Ocean.prototype.renderWavePhase = function () {
this.materialPhase.uniforms.u_phases.value = this.pingPhaseTexture;
this.initial = false;
}else {
} else {
this.materialPhase.uniforms.u_phases.value = this.pingPhase ? this.pingPhaseFramebuffer.texture : this.pongPhaseFramebuffer.texture;
}
this.materialPhase.uniforms.u_deltaTime.value = this.deltaTime;
this.materialPhase.uniforms.u_size.value = this.size;
this.renderer.render( this.scene, this.oceanCamera, this.pingPhase ? this.pongPhaseFramebuffer : this.pingPhaseFramebuffer );
this.renderer.setRenderTarget( this.pingPhase ? this.pongPhaseFramebuffer : this.pingPhaseFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
this.pingPhase = ! this.pingPhase;
};
......@@ -288,7 +292,9 @@ THREE.Ocean.prototype.renderSpectrum = function () {
this.materialSpectrum.uniforms.u_phases.value = this.pingPhase ? this.pingPhaseFramebuffer.texture : this.pongPhaseFramebuffer.texture;
this.materialSpectrum.uniforms.u_choppiness.value = this.choppiness;
this.materialSpectrum.uniforms.u_size.value = this.size;
this.renderer.render( this.scene, this.oceanCamera, this.spectrumFramebuffer );
this.renderer.setRenderTarget( this.spectrumFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
};
......@@ -305,19 +311,25 @@ THREE.Ocean.prototype.renderSpectrumFFT = function() {
this.materialOceanHorizontal.uniforms.u_input.value = this.spectrumFramebuffer.texture;
this.materialOceanHorizontal.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.pingTransformFramebuffer );
this.renderer.setRenderTarget( this.pingTransformFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
} else if ( i % 2 === 1 ) {
this.materialOceanHorizontal.uniforms.u_input.value = this.pingTransformFramebuffer.texture;
this.materialOceanHorizontal.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.pongTransformFramebuffer );
this.renderer.setRenderTarget( this.pongTransformFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
} else {
this.materialOceanHorizontal.uniforms.u_input.value = this.pongTransformFramebuffer.texture;
this.materialOceanHorizontal.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.pingTransformFramebuffer );
this.renderer.setRenderTarget( this.pingTransformFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
}
......@@ -329,19 +341,25 @@ THREE.Ocean.prototype.renderSpectrumFFT = function() {
this.materialOceanVertical.uniforms.u_input.value = ( iterations % 2 === 0 ) ? this.pingTransformFramebuffer.texture : this.pongTransformFramebuffer.texture;
this.materialOceanVertical.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.displacementMapFramebuffer );
this.renderer.setRenderTarget( this.displacementMapFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
} else if ( i % 2 === 1 ) {
this.materialOceanVertical.uniforms.u_input.value = this.pingTransformFramebuffer.texture;
this.materialOceanVertical.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.pongTransformFramebuffer );
this.renderer.setRenderTarget( this.pongTransformFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
} else {
this.materialOceanVertical.uniforms.u_input.value = this.pongTransformFramebuffer.texture;
this.materialOceanVertical.uniforms.u_subtransformSize.value = Math.pow( 2, ( i % ( iterations ) ) + 1 );
this.renderer.render( this.scene, this.oceanCamera, this.pingTransformFramebuffer );
this.renderer.setRenderTarget( this.pingTransformFramebuffer );
this.renderer.render( this.scene, this.oceanCamera );
}
......@@ -354,6 +372,9 @@ THREE.Ocean.prototype.renderNormalMap = function () {
this.scene.overrideMaterial = this.materialNormal;
if ( this.changed ) this.materialNormal.uniforms.u_size.value = this.size;
this.materialNormal.uniforms.u_displacementMap.value = this.displacementMapFramebuffer.texture;
this.renderer.render( this.scene, this.oceanCamera, this.normalMapFramebuffer, true );
this.renderer.setRenderTarget( this.normalMapFramebuffer );
this.renderer.clear();
this.renderer.render( this.scene, this.oceanCamera );
};
......@@ -177,22 +177,31 @@ THREE.CinematicCamera.prototype.renderCinematic = function ( scene, renderer ) {
if ( this.postprocessing.enabled ) {
var currentRenderTarget = renderer.getRenderTarget();
renderer.clear();
// Render scene into texture
scene.overrideMaterial = null;
renderer.render( scene, camera, this.postprocessing.rtTextureColor, true );
renderer.setRenderTarget( this.postprocessing.rtTextureColor );
renderer.clear();
renderer.render( scene, camera );
// Render depth into texture
scene.overrideMaterial = this.materialDepth;
renderer.render( scene, camera, this.postprocessing.rtTextureDepth, true );
renderer.setRenderTarget( this.postprocessing.rtTextureDepth );
renderer.clear();
renderer.render( scene, camera, this.postprocessing.rtTextureDepth );
// Render bokeh composite
renderer.setRenderTarget( null );
renderer.render( this.postprocessing.scene, this.postprocessing.camera );
renderer.setRenderTarget( currentRenderTarget );
}
};
......@@ -101,11 +101,19 @@ function Scene( type, numObjects, cameraZ, fov, rotationSpeed, clearColor ) {
renderer.setClearColor( this.clearColor );
if ( rtt )
renderer.render( this.scene, this.camera, this.fbo, true );
else
if ( rtt ) {
renderer.setRenderTarget( this.fbo );
renderer.clear();
renderer.render( this.scene, this.camera );
} else {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
}
};
}
function Transition ( sceneA, sceneB ) {
function Transition( sceneA, sceneB ) {
this.scene = new THREE.Scene();
......@@ -157,7 +157,9 @@ function Transition ( sceneA, sceneB ) {
this.sceneA.render( delta, true );
this.sceneB.render( delta, true );
renderer.render( this.scene, this.cameraOrtho, null, true );
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( this.scene, this.cameraOrtho );
}
......
......@@ -130,16 +130,25 @@ THREE.AnaglyphEffect = function ( renderer, width, height ) {
this.render = function ( scene, camera ) {
var currentRenderTarget = renderer.getRenderTarget();
scene.updateMatrixWorld();
if ( camera.parent === null ) camera.updateMatrixWorld();
_stereo.update( camera );
renderer.render( scene, _stereo.cameraL, _renderTargetL, true );
renderer.render( scene, _stereo.cameraR, _renderTargetR, true );
renderer.setRenderTarget( _renderTargetL );
renderer.clear();
renderer.render( scene, _stereo.cameraL );
renderer.setRenderTarget( _renderTargetR );
renderer.clear();
renderer.render( scene, _stereo.cameraR );
renderer.render( _scene, _camera );
renderer.setRenderTarget( currentRenderTarget );
};
this.dispose = function () {
......
......@@ -402,11 +402,31 @@ THREE.OutlineEffect = function ( renderer, parameters ) {
}
this.render = function ( scene, camera, renderTarget, forceClear ) {
this.render = function ( scene, camera ) {
var renderTarget;
var forceClear;
if ( arguments[ 2 ] !== undefined ) {
console.warn( 'THREE.OutlineEffect.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );
renderTarget = arguments[ 2 ];
}
if ( arguments[ 3 ] !== undefined ) {
console.warn( 'THREE.OutlineEffect.render(): the forceClear argument has been removed. Use .clear() instead.' );
forceClear = arguments[ 3 ];
}
renderer.setRenderTarget( renderTarget );
if ( forceClear ) renderer.clear();
if ( this.enabled === false ) {
renderer.render( scene, camera, renderTarget, forceClear );
renderer.render( scene, camera );
return;
}
......@@ -415,7 +435,7 @@ THREE.OutlineEffect = function ( renderer, parameters ) {
renderer.autoClear = this.autoClear;
// 1. render normally
renderer.render( scene, camera, renderTarget, forceClear );
renderer.render( scene, camera );
// 2. render outline
var currentSceneAutoUpdate = scene.autoUpdate;
......@@ -429,7 +449,7 @@ THREE.OutlineEffect = function ( renderer, parameters ) {
scene.traverse( setOutlineMaterial );
renderer.render( scene, camera, renderTarget );
renderer.render( scene, camera );
scene.traverse( restoreOriginalMaterial );
......
......@@ -87,8 +87,15 @@ THREE.ParallaxBarrierEffect = function ( renderer ) {
_stereo.update( camera );
renderer.render( scene, _stereo.cameraL, _renderTargetL, true );
renderer.setRenderTarget( _renderTargetL );
renderer.clear();
renderer.render( scene, _stereo.cameraL );
renderer.setRenderTarget( _renderTargetR );
renderer.clear();
renderer.render( scene, _stereo.cameraR, _renderTargetR, true );
renderer.setRenderTarget( null );
renderer.render( _scene, _camera );
};
......
......@@ -152,6 +152,8 @@ THREE.EquirectangularToCubeGenerator = ( function () {
update: function ( renderer ) {
var currentRenderTarget = renderer.getRenderTarget();
boxMesh.material.uniforms.equirectangularMap.value = this.sourceTexture;
for ( var i = 0; i < 6; i ++ ) {
......@@ -164,10 +166,14 @@ THREE.EquirectangularToCubeGenerator = ( function () {
camera.up.set( v.u[ 0 ], v.u[ 1 ], v.u[ 2 ] );
camera.lookAt( v.t[ 0 ], v.t[ 1 ], v.t[ 2 ] );
renderer.render( scene, camera, this.renderTarget, true );
renderer.setRenderTarget( this.renderTarget );
renderer.clear();
renderer.render( scene, camera );
}
renderer.setRenderTarget( currentRenderTarget );
return this.renderTarget.texture;
},
......
......@@ -72,7 +72,9 @@ RTTNode.prototype.updateFramesaveTo = function ( frame ) {
this.saveToCurrent = this.saveTo;
frame.renderer.render( this.saveToScene, this.camera, this.saveTo.renderTarget, this.saveTo.clear );
frame.renderer.setRenderTarget( this.saveTo.renderTarget );
if ( this.saveTo.clear ) frame.renderer.clear();
frame.renderer.render( this.saveToScene, this.camera );
};
......@@ -96,7 +98,9 @@ RTTNode.prototype.updateFrame = function ( frame ) {
}
frame.renderer.render( this.scene, this.camera, this.renderTarget, this.clear );
frame.renderer.setRenderTarget( this.renderTarget );
if ( this.clear ) frame.renderer.clear();
frame.renderer.render( this.scene, this.camera );
}
......
......@@ -64,10 +64,12 @@ NodePostProcessing.prototype = {
frame.setRenderer( this.renderer )
.setRenderTexture( this.renderTarget.texture );
this.renderer.render( scene, camera, this.renderTarget );
this.renderer.setRenderTarget( this.renderTarget );
this.renderer.render( scene, camera );
frame.updateNode( this.material );
this.renderer.setRenderTarget( null );
this.renderer.render( this.scene, this.camera );
},
......
......@@ -342,7 +342,8 @@ THREE.Fire = function ( geometry, options ) {
this.sourceMaterial.uniforms[ "densityMap" ].value = this.field0.texture;
renderer.render( this.fieldScene, this.orthoCamera, this.field1 );
renderer.setRenderTarget( this.field1 );
renderer.render( this.fieldScene, this.orthoCamera );
this.sourceMesh.visible = false;
......@@ -356,7 +357,8 @@ THREE.Fire = function ( geometry, options ) {
this.diffuseMaterial.uniforms[ "densityMap" ].value = this.field0.texture;
renderer.render( this.fieldScene, this.orthoCamera, this.field1 );
renderer.setRenderTarget( this.field1 );
renderer.render( this.fieldScene, this.orthoCamera );
this.diffuseMesh.visible = false;
......@@ -370,7 +372,8 @@ THREE.Fire = function ( geometry, options ) {
this.driftMaterial.uniforms[ "densityMap" ].value = this.field0.texture;
renderer.render( this.fieldScene, this.orthoCamera, this.field1 );
renderer.setRenderTarget( this.field1 );
renderer.render( this.fieldScene, this.orthoCamera );
this.driftMesh.visible = false;
......@@ -386,7 +389,8 @@ THREE.Fire = function ( geometry, options ) {
this.projMaterial1.uniforms[ "densityMap" ].value = this.field0.texture;
renderer.render( this.fieldScene, this.orthoCamera, this.fieldProj );
renderer.setRenderTarget( this.fieldProj );
renderer.render( this.fieldScene, this.orthoCamera );
this.projMesh1.visible = false;
......@@ -398,7 +402,8 @@ THREE.Fire = function ( geometry, options ) {
for ( var i = 0; i < 20; i ++ ) {
renderer.render( this.fieldScene, this.orthoCamera, this.field1 );
renderer.setRenderTarget( this.field1 );
renderer.render( this.fieldScene, this.orthoCamera );
var temp = this.field1;
this.field1 = this.fieldProj;
......@@ -417,7 +422,8 @@ THREE.Fire = function ( geometry, options ) {
this.projMesh3.visible = true;
renderer.render( this.fieldScene, this.orthoCamera, this.field1 );
renderer.setRenderTarget( this.field1 );
renderer.render( this.fieldScene, this.orthoCamera );
this.projMesh3.visible = false;
......
......@@ -161,7 +161,9 @@ THREE.Reflector = function ( geometry, options ) {
renderer.vr.enabled = false; // Avoid camera modification and recursion
renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
renderer.render( scene, virtualCamera, renderTarget, true );
renderer.setRenderTarget( renderTarget );
renderer.clear();
renderer.render( scene, virtualCamera );
renderer.vr.enabled = currentVrEnabled;
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
......
......@@ -199,7 +199,9 @@ THREE.Refractor = function ( geometry, options ) {
renderer.vr.enabled = false; // avoid camera modification
renderer.shadowMap.autoUpdate = false; // avoid re-computing shadows
renderer.render( scene, virtualCamera, renderTarget, true );
renderer.setRenderTarget( renderTarget );
renderer.clear();
renderer.render( scene, virtualCamera );
renderer.vr.enabled = currentVrEnabled;
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
......
......@@ -291,7 +291,9 @@ THREE.Water = function ( geometry, options ) {
renderer.vr.enabled = false; // Avoid camera modification and recursion
renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
renderer.render( scene, mirrorCamera, renderTarget, true );
renderer.setRenderTarget( renderTarget );
renderer.clear();
renderer.render( scene, mirrorCamera );
scope.visible = true;
......
......@@ -137,7 +137,8 @@ THREE.PMREMCubeUVPacker = ( function () {
renderer.gammaOutput = false;
renderer.toneMapping = THREE.LinearToneMapping;
renderer.toneMappingExposure = 1.0;
renderer.render( scene, camera, this.CubeUVRenderTarget, false );
renderer.setRenderTarget( this.CubeUVRenderTarget );
renderer.render( scene, camera );
renderer.setRenderTarget( currentRenderTarget );
renderer.toneMapping = toneMapping;
......
......@@ -137,7 +137,9 @@ THREE.PMREMGenerator = ( function () {
renderTarget.activeCubeFace = faceIndex;
shader.uniforms[ 'faceIndex' ].value = faceIndex;
renderer.render( scene, camera, renderTarget, true );
renderer.setRenderTarget( renderTarget );
renderer.clear();
renderer.render( scene, camera );
},
......
......@@ -148,7 +148,8 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
//Render the luminance of the current scene into a render target with mipmapping enabled
this.quad.material = this.materialLuminance;
this.materialLuminance.uniforms.tDiffuse.value = readBuffer.texture;
renderer.render( this.scene, this.camera, this.currentLuminanceRT );
renderer.setRenderTarget( this.currentLuminanceRT );
renderer.render( this.scene, this.camera );
//Use the new luminance values, the previous luminance and the frame delta to
//adapt the luminance over time.
......@@ -156,11 +157,13 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
this.materialAdaptiveLum.uniforms.delta.value = delta;
this.materialAdaptiveLum.uniforms.lastLum.value = this.previousLuminanceRT.texture;
this.materialAdaptiveLum.uniforms.currentLum.value = this.currentLuminanceRT.texture;
renderer.render( this.scene, this.camera, this.luminanceRT );
renderer.setRenderTarget( this.luminanceRT );
renderer.render( this.scene, this.camera );
//Copy the new adapted luminance value so that it can be used by the next frame.
this.quad.material = this.materialCopy;
this.copyUniforms.tDiffuse.value = this.luminanceRT.texture;
renderer.setRenderTarget( this.previousLuminanceRT );
renderer.render( this.scene, this.camera, this.previousLuminanceRT );
}
......@@ -170,11 +173,16 @@ THREE.AdaptiveToneMappingPass.prototype = Object.assign( Object.create( THREE.Pa
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -70,17 +70,25 @@ THREE.AfterimagePass.prototype = Object.assign( Object.create( THREE.Pass.protot
this.quadComp.material = this.shaderMaterial;
renderer.render( this.sceneComp, this.camera, this.textureComp );
renderer.render( this.scene, this.camera, this.textureOld );
renderer.setRenderTarget( this.textureComp );
renderer.render( this.sceneComp, this.camera );
renderer.setRenderTarget( this.textureOld );
renderer.render( this.scene, this.camera );
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
}
......
......@@ -91,7 +91,9 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
this.convolutionUniforms[ "tDiffuse" ].value = readBuffer.texture;
this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurX;
renderer.render( this.scene, this.camera, this.renderTargetX, true );
renderer.setRenderTarget( this.renderTargetX );
renderer.clear();
renderer.render( this.scene, this.camera );
// Render quad with blured scene into texture (convolution pass 2)
......@@ -99,7 +101,9 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
this.convolutionUniforms[ "tDiffuse" ].value = this.renderTargetX.texture;
this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurY;
renderer.render( this.scene, this.camera, this.renderTargetY, true );
renderer.setRenderTarget( this.renderTargetY );
renderer.clear();
renderer.render( this.scene, this.camera );
// Render original scene with superimposed blur to texture
......@@ -109,7 +113,9 @@ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
if ( maskActive ) renderer.context.enable( renderer.context.STENCIL_TEST );
renderer.render( this.scene, this.camera, readBuffer, this.clear );
renderer.setRenderTarget( readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -97,7 +97,9 @@ THREE.BokehPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
renderer.setClearColor( 0xffffff );
renderer.setClearAlpha( 1.0 );
renderer.render( this.scene, this.camera, this.renderTargetDepth, true );
renderer.setRenderTarget( this.renderTargetDepth );
renderer.clear();
renderer.render( this.scene, this.camera );
// Render bokeh composite
......@@ -107,11 +109,14 @@ THREE.BokehPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene2, this.camera2 );
} else {
renderer.render( this.scene2, this.camera2, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
renderer.clear();
renderer.render( this.scene2, this.camera2 );
}
......@@ -119,7 +124,7 @@ THREE.BokehPass.prototype = Object.assign( Object.create( THREE.Pass.prototype )
renderer.setClearColor( this.oldClearColor );
renderer.setClearAlpha( this.oldClearAlpha );
renderer.autoClear = this.oldAutoClear;
}
} );
......@@ -48,7 +48,9 @@ THREE.CubeTexturePass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.cubeMesh.material.uniforms[ "opacity" ].value = this.opacity;
this.cubeMesh.material.transparent = ( this.opacity < 1.0 );
renderer.render( this.cubeScene, this.cubeCamera, this.renderToScreen ? null : readBuffer, this.clear );
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.cubeScene, this.cubeCamera );
renderer.autoClear = oldAutoClear;
......
......@@ -47,11 +47,14 @@ THREE.DotScreenPass.prototype = Object.assign( Object.create( THREE.Pass.prototy
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -75,6 +75,8 @@ Object.assign( THREE.EffectComposer.prototype, {
render: function ( delta ) {
var currentRenderTarget = this.renderer.getRenderTarget();
var maskActive = false;
var pass, i, il = this.passes.length;
......@@ -121,6 +123,8 @@ Object.assign( THREE.EffectComposer.prototype, {
}
this.renderer.setRenderTarget( currentRenderTarget );
},
reset: function ( renderTarget ) {
......
......@@ -48,11 +48,14 @@ THREE.FilmPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -77,11 +77,14 @@ THREE.GlitchPass.prototype = Object.assign( Object.create( THREE.Pass.prototype
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -55,11 +55,14 @@ THREE.HalftonePass = function ( width, height, params ) {
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -58,8 +58,13 @@ THREE.MaskPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
// draw into the stencil buffer
renderer.render( this.scene, this.camera, readBuffer, this.clear );
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
// unlock color and depth buffer for subsequent rendering
......
......@@ -277,7 +277,9 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
// 1. Draw Non Selected objects in the depth buffer
this.renderScene.overrideMaterial = this.depthMaterial;
renderer.render( this.renderScene, this.renderCamera, this.renderTargetDepthBuffer, true );
renderer.setRenderTarget( this.renderTargetDepthBuffer );
renderer.clear();
renderer.render( this.renderScene, this.renderCamera );
// Make selected objects visible
this.changeVisibilityOfSelectedObjects( true );
......@@ -291,7 +293,9 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
this.prepareMaskMaterial.uniforms[ "cameraNearFar" ].value = new THREE.Vector2( this.renderCamera.near, this.renderCamera.far );
this.prepareMaskMaterial.uniforms[ "depthTexture" ].value = this.renderTargetDepthBuffer.texture;
this.prepareMaskMaterial.uniforms[ "textureMatrix" ].value = this.textureMatrix;
renderer.render( this.renderScene, this.renderCamera, this.renderTargetMaskBuffer, true );
renderer.setRenderTarget( this.renderTargetMaskBuffer );
renderer.clear();
renderer.render( this.renderScene, this.renderCamera );
this.renderScene.overrideMaterial = null;
this.changeVisibilityOfNonSelectedObjects( true );
......@@ -300,7 +304,9 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
// 2. Downsample to Half resolution
this.quad.material = this.materialCopy;
this.copyUniforms[ "tDiffuse" ].value = this.renderTargetMaskBuffer.texture;
renderer.render( this.scene, this.camera, this.renderTargetMaskDownSampleBuffer, true );
renderer.setRenderTarget( this.renderTargetMaskDownSampleBuffer );
renderer.clear();
renderer.render( this.scene, this.camera );
this.tempPulseColor1.copy( this.visibleEdgeColor );
this.tempPulseColor2.copy( this.hiddenEdgeColor );
......@@ -319,26 +325,36 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
this.edgeDetectionMaterial.uniforms[ "texSize" ].value = new THREE.Vector2( this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height );
this.edgeDetectionMaterial.uniforms[ "visibleEdgeColor" ].value = this.tempPulseColor1;
this.edgeDetectionMaterial.uniforms[ "hiddenEdgeColor" ].value = this.tempPulseColor2;
renderer.render( this.scene, this.camera, this.renderTargetEdgeBuffer1, true );
renderer.setRenderTarget( this.renderTargetEdgeBuffer1 );
renderer.clear();
renderer.render( this.scene, this.camera );
// 4. Apply Blur on Half res
this.quad.material = this.separableBlurMaterial1;
this.separableBlurMaterial1.uniforms[ "colorTexture" ].value = this.renderTargetEdgeBuffer1.texture;
this.separableBlurMaterial1.uniforms[ "direction" ].value = THREE.OutlinePass.BlurDirectionX;
this.separableBlurMaterial1.uniforms[ "kernelRadius" ].value = this.edgeThickness;
renderer.render( this.scene, this.camera, this.renderTargetBlurBuffer1, true );
renderer.setRenderTarget( this.renderTargetBlurBuffer1 );
renderer.clear();
renderer.render( this.scene, this.camera );
this.separableBlurMaterial1.uniforms[ "colorTexture" ].value = this.renderTargetBlurBuffer1.texture;
this.separableBlurMaterial1.uniforms[ "direction" ].value = THREE.OutlinePass.BlurDirectionY;
renderer.render( this.scene, this.camera, this.renderTargetEdgeBuffer1, true );
renderer.setRenderTarget( this.renderTargetEdgeBuffer1 );
renderer.clear();
renderer.render( this.scene, this.camera );
// Apply Blur on quarter res
this.quad.material = this.separableBlurMaterial2;
this.separableBlurMaterial2.uniforms[ "colorTexture" ].value = this.renderTargetEdgeBuffer1.texture;
this.separableBlurMaterial2.uniforms[ "direction" ].value = THREE.OutlinePass.BlurDirectionX;
renderer.render( this.scene, this.camera, this.renderTargetBlurBuffer2, true );
renderer.setRenderTarget( this.renderTargetBlurBuffer2 );
renderer.clear();
renderer.render( this.scene, this.camera );
this.separableBlurMaterial2.uniforms[ "colorTexture" ].value = this.renderTargetBlurBuffer2.texture;
this.separableBlurMaterial2.uniforms[ "direction" ].value = THREE.OutlinePass.BlurDirectionY;
renderer.render( this.scene, this.camera, this.renderTargetEdgeBuffer2, true );
renderer.setRenderTarget( this.renderTargetEdgeBuffer2 );
renderer.clear();
renderer.render( this.scene, this.camera );
// Blend it additively over the input texture
this.quad.material = this.overlayMaterial;
......@@ -353,7 +369,8 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
if ( maskActive ) renderer.context.enable( renderer.context.STENCIL_TEST );
renderer.render( this.scene, this.camera, readBuffer, false );
renderer.setRenderTarget( readBuffer );
renderer.render( this.scene, this.camera );
renderer.setClearColor( this.oldClearColor, this.oldClearAlpha );
renderer.autoClear = oldAutoClear;
......@@ -364,6 +381,7 @@ THREE.OutlinePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
this.quad.material = this.materialCopy;
this.copyUniforms[ "tDiffuse" ].value = readBuffer.texture;
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
}
......
......@@ -48,7 +48,9 @@ THREE.RenderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype
}
renderer.render( this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear );
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
if ( this.clearColor ) {
......
......@@ -234,7 +234,9 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
// Rendering scene to depth texture
renderer.setClearColor( 0x000000 );
renderer.render( this.scene, this.camera, this.beautyRenderTarget, true );
renderer.setRenderTarget( this.beautyRenderTarget );
renderer.clear();
renderer.render( this.scene, this.camera );
// Re-render scene if depth texture extension is not supported
if ( ! this.supportsDepthTextureExtension ) {
......@@ -317,18 +319,20 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
var originalClearAlpha = renderer.getClearAlpha();
var originalAutoClear = renderer.autoClear;
renderer.setRenderTarget( renderTarget);
// setup pass state
renderer.autoClear = false;
var clearNeeded = ( clearColor !== undefined ) && ( clearColor !== null );
if ( clearNeeded ) {
if ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {
renderer.setClearColor( clearColor );
renderer.setClearAlpha( clearAlpha || 0.0 );
renderer.clear();
}
this.quad.material = passMaterial;
renderer.render( this.quadScene, this.quadCamera, renderTarget, clearNeeded );
renderer.render( this.quadScene, this.quadCamera );
// restore original state
renderer.autoClear = originalAutoClear;
......@@ -343,20 +347,21 @@ THREE.SAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
var originalClearAlpha = renderer.getClearAlpha();
var originalAutoClear = renderer.autoClear;
renderer.setRenderTarget( renderTarget );
renderer.autoClear = false;
clearColor = overrideMaterial.clearColor || clearColor;
clearAlpha = overrideMaterial.clearAlpha || clearAlpha;
var clearNeeded = ( clearColor !== undefined ) && ( clearColor !== null );
if ( clearNeeded ) {
if ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {
renderer.setClearColor( clearColor );
renderer.setClearAlpha( clearAlpha || 0.0 );
renderer.clear();
}
this.scene.overrideMaterial = overrideMaterial;
renderer.render( this.scene, this.camera, renderTarget, clearNeeded );
renderer.render( this.scene, this.camera );
this.scene.overrideMaterial = null;
// restore original state
......
......@@ -128,13 +128,17 @@ THREE.SMAAPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
this.quad.material = this.materialEdges;
renderer.render( this.scene, this.camera, this.edgesRT, this.clear );
renderer.setRenderTarget( this.edgesRT );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
// pass 2
this.quad.material = this.materialWeights;
renderer.render( this.scene, this.camera, this.weightsRT, this.clear );
renderer.setRenderTarget( this.weightsRT );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
// pass 3
......@@ -144,11 +148,14 @@ THREE.SMAAPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -120,15 +120,20 @@ THREE.SSAARenderPass.prototype = Object.assign( Object.create( THREE.Pass.protot
this.copyUniforms[ "opacity" ].value = sampleWeight;
renderer.setClearColor( this.clearColor, this.clearAlpha );
renderer.render( this.scene, this.camera, this.sampleRenderTarget, true );
renderer.setRenderTarget( this.sampleRenderTarget );
renderer.clear();
renderer.render( this.scene, this.camera );
renderer.setRenderTarget( this.renderToScreen ? null : writeBuffer );
if ( i === 0 ) {
renderer.setClearColor( 0x000000, 0.0 );
renderer.clear();
}
renderer.render( this.scene2, this.camera2, this.renderToScreen ? null : writeBuffer, ( i === 0 ) );
renderer.render( this.scene2, this.camera2 );
}
......
......@@ -177,7 +177,9 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
// render beauty and depth
renderer.render( this.scene, this.camera, this.beautyRenderTarget, true );
renderer.setRenderTarget( this.beautyRenderTarget );
renderer.clear();
renderer.render( this.scene, this.camera );
// render normals
......@@ -262,18 +264,20 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
var originalClearAlpha = renderer.getClearAlpha();
var originalAutoClear = renderer.autoClear;
renderer.setRenderTarget( renderTarget );
// setup pass state
renderer.autoClear = false;
var clearNeeded = ( clearColor !== undefined ) && ( clearColor !== null );
if ( clearNeeded ) {
if ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {
renderer.setClearColor( clearColor );
renderer.setClearAlpha( clearAlpha || 0.0 );
renderer.clear();
}
this.quad.material = passMaterial;
renderer.render( this.quadScene, this.quadCamera, renderTarget, clearNeeded );
renderer.render( this.quadScene, this.quadCamera );
// restore original state
renderer.autoClear = originalAutoClear;
......@@ -288,22 +292,22 @@ THREE.SSAOPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
var originalClearAlpha = renderer.getClearAlpha();
var originalAutoClear = renderer.autoClear;
renderer.setRenderTarget( renderTarget );
renderer.autoClear = false;
clearColor = overrideMaterial.clearColor || clearColor;
clearAlpha = overrideMaterial.clearAlpha || clearAlpha;
var clearNeeded = ( clearColor !== undefined ) && ( clearColor !== null );
if ( clearNeeded ) {
if ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {
renderer.setClearColor( clearColor );
renderer.setClearAlpha( clearAlpha || 0.0 );
renderer.clear();
}
this.scene.overrideMaterial = overrideMaterial;
renderer.render( this.scene, this.camera, renderTarget, clearNeeded );
renderer.render( this.scene, this.camera );
this.scene.overrideMaterial = null;
// restore original state
......
......@@ -57,7 +57,9 @@ THREE.SavePass.prototype = Object.assign( Object.create( THREE.Pass.prototype ),
this.quad.material = this.material;
renderer.render( this.scene, this.camera, this.renderTarget, this.clear );
renderer.setRenderTarget( this.renderTarget );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -54,11 +54,14 @@ THREE.ShaderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype
if ( this.renderToScreen ) {
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
renderer.setRenderTarget( writeBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
}
......
......@@ -93,8 +93,13 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
}
renderer.render( this.scene, this.camera, writeBuffer, true );
renderer.render( this.scene2, this.camera2, this.sampleRenderTarget, ( this.accumulateIndex === 0 ) );
renderer.setRenderTarget( writeBuffer );
renderer.clear();
renderer.render( this.scene, this.camera );
renderer.setRenderTarget( this.sampleRenderTarget );
if ( this.accumulateIndex === 0 ) renderer.clear();
renderer.render( this.scene2, this.camera2 );
this.accumulateIndex ++;
......@@ -112,7 +117,9 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
this.copyUniforms[ "opacity" ].value = 1.0;
this.copyUniforms[ "tDiffuse" ].value = this.sampleRenderTarget.texture;
renderer.render( this.scene2, this.camera2, writeBuffer, true );
renderer.setRenderTarget( writeBuffer );
renderer.clear();
renderer.render( this.scene2, this.camera2 );
}
......@@ -120,7 +127,9 @@ THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.SSAARenderPa
this.copyUniforms[ "opacity" ].value = 1.0 - accumulationWeight;
this.copyUniforms[ "tDiffuse" ].value = this.holdRenderTarget.texture;
renderer.render( this.scene2, this.camera2, writeBuffer, ( accumulationWeight === 0 ) );
renderer.setRenderTarget( writeBuffer );
if ( accumulationWeight === 0 ) renderer.clear();
renderer.render( this.scene2, this.camera2 );
}
......
......@@ -52,7 +52,9 @@ THREE.TexturePass.prototype = Object.assign( Object.create( THREE.Pass.prototype
this.uniforms[ "tDiffuse" ].value = this.map;
this.material.transparent = ( this.opacity < 1.0 );
renderer.render( this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear );
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
if ( this.clear ) renderer.clear();
renderer.render( this.scene, this.camera );
renderer.autoClear = oldAutoClear;
}
......
......@@ -203,7 +203,9 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.quad.material = this.basic;
this.basic.map = readBuffer.texture;
renderer.render( this.scene, this.camera, undefined, true );
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( this.scene, this.camera );
}
......@@ -213,7 +215,9 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.highPassUniforms[ "luminosityThreshold" ].value = this.threshold;
this.quad.material = this.materialHighPassFilter;
renderer.render( this.scene, this.camera, this.renderTargetBright, true );
renderer.setRenderTarget( this.renderTargetBright );
renderer.clear();
renderer.render( this.scene, this.camera );
// 2. Blur All the mips progressively
......@@ -225,11 +229,15 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.separableBlurMaterials[ i ].uniforms[ "colorTexture" ].value = inputRenderTarget.texture;
this.separableBlurMaterials[ i ].uniforms[ "direction" ].value = THREE.UnrealBloomPass.BlurDirectionX;
renderer.render( this.scene, this.camera, this.renderTargetsHorizontal[ i ], true );
renderer.setRenderTarget( this.renderTargetsHorizontal[ i ] );
renderer.clear();
renderer.render( this.scene, this.camera );
this.separableBlurMaterials[ i ].uniforms[ "colorTexture" ].value = this.renderTargetsHorizontal[ i ].texture;
this.separableBlurMaterials[ i ].uniforms[ "direction" ].value = THREE.UnrealBloomPass.BlurDirectionY;
renderer.render( this.scene, this.camera, this.renderTargetsVertical[ i ], true );
renderer.setRenderTarget( this.renderTargetsVertical[ i ] );
renderer.clear();
renderer.render( this.scene, this.camera );
inputRenderTarget = this.renderTargetsVertical[ i ];
......@@ -242,7 +250,9 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
this.compositeMaterial.uniforms[ "bloomRadius" ].value = this.radius;
this.compositeMaterial.uniforms[ "bloomTintColors" ].value = this.bloomTintColors;
renderer.render( this.scene, this.camera, this.renderTargetsHorizontal[ 0 ], true );
renderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );
renderer.clear();
renderer.render( this.scene, this.camera );
// Blend it additively over the input texture
......@@ -254,11 +264,13 @@ THREE.UnrealBloomPass.prototype = Object.assign( Object.create( THREE.Pass.proto
if ( this.renderToScreen ) {
renderer.render( this.scene, this.camera, undefined, false );
renderer.setRenderTarget( null );
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, readBuffer, false );
renderer.setRenderTarget( readBuffer );
renderer.render( this.scene, this.camera );
}
......
......@@ -229,9 +229,11 @@
requestAnimationFrame( animate );
// render scene into target
renderer.render( scene, camera, target );
renderer.setRenderTarget( target );
renderer.render( scene, camera );
// render post FX
renderer.setRenderTarget( null );
renderer.render( postScene, postCamera );
stats.update();
......
......@@ -206,7 +206,8 @@
// render the scene
renderer.render( pickingScene, camera, pickingTexture );
renderer.setRenderTarget( pickingTexture );
renderer.render( pickingScene, camera );
// clear the view offset so rendering returns to normal
......@@ -252,6 +253,7 @@
pick();
renderer.setRenderTarget( null );
renderer.render( scene, camera );
}
......
......@@ -1045,15 +1045,17 @@
highlightBox.visible = false;
renderer.setRenderTarget( pickingRenderTarget );
if ( singlePickingMaterial ) {
scene.overrideMaterial = singlePickingMaterial;
renderer.render( scene, camera, pickingRenderTarget );
renderer.render( scene, camera );
scene.overrideMaterial = null;
} else {
renderer.render( pickingScene, camera, pickingRenderTarget );
renderer.render( pickingScene, camera );
}
......@@ -1105,6 +1107,7 @@
function render() {
pick();
renderer.setRenderTarget( null );
renderer.render( scene, camera );
}
......
......@@ -2748,12 +2748,15 @@
scene.overrideMaterial = rtMaterial;
renderer.render( scene, camera, rtTexture, true );
renderer.setRenderTarget( rtTexture );
renderer.clear();
renderer.render( scene, camera );
scene.overrideMaterial = null;
}
renderer.setRenderTarget( null );
renderer.render( scene, camera );
requestAnimationFrame( animate );
......
......@@ -507,16 +507,21 @@
// render scene into texture
renderer.render( scene, camera, postprocessing.rtTextureColor, true );
renderer.setRenderTarget( postprocessing.rtTextureColor );
renderer.clear();
renderer.render( scene, camera );
// render depth into texture
scene.overrideMaterial = materialDepth;
renderer.render( scene, camera, postprocessing.rtTextureDepth, true );
renderer.setRenderTarget( postprocessing.rtTextureDepth );
renderer.clear();
renderer.render( scene, camera );
scene.overrideMaterial = null;
// render bokeh composite
renderer.setRenderTarget( null );
renderer.render( postprocessing.scene, postprocessing.camera );
......@@ -524,6 +529,7 @@
scene.overrideMaterial = null;
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( scene, camera );
......
......@@ -302,7 +302,8 @@
postprocessing.godrayGenUniforms[ "fStepSize" ].value = stepSize;
postprocessing.godrayGenUniforms[ "tInput" ].value = inputTex;
renderer.render( postprocessing.scene, postprocessing.camera, renderTarget );
renderer.setRenderTarget( renderTarget );
renderer.render( postprocessing.scene, postprocessing.camera );
postprocessing.scene.overrideMaterial = null;
}
......@@ -360,7 +361,8 @@
postprocessing.godraysFakeSunUniforms[ "fAspect" ].value = window.innerWidth / window.innerHeight;
postprocessing.scene.overrideMaterial = postprocessing.materialGodraysFakeSun;
renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTextureColors );
renderer.render( postprocessing.rtTextureColors );
renderer.render( postprocessing.scene, postprocessing.camera );
renderer.setScissorTest( false );
......@@ -369,19 +371,23 @@
// Colors
scene.overrideMaterial = null;
renderer.render( scene, camera, postprocessing.rtTextureColors );
renderer.setRenderTarget( postprocessing.rtTextureColors );
renderer.render( scene, camera );
// Depth
scene.overrideMaterial = materialDepth;
renderer.render( scene, camera, postprocessing.rtTextureDepth, true );
renderer.setRenderTarget( postprocessing.rtTextureDepth );
renderer.clear();
renderer.render( scene, camera );
//
postprocessing.godrayMaskUniforms[ "tInput" ].value = postprocessing.rtTextureDepth.texture;
postprocessing.scene.overrideMaterial = postprocessing.materialGodraysDepthMask;
renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTextureDepthMask );
renderer.setRenderTarget( postprocessing.rtTextureDepthMask );
renderer.render( postprocessing.scene, postprocessing.camera );
// -- Render god-rays --
......@@ -414,11 +420,13 @@
postprocessing.scene.overrideMaterial = postprocessing.materialGodraysCombine;
renderer.setRenderTarget( null );
renderer.render( postprocessing.scene, postprocessing.camera );
postprocessing.scene.overrideMaterial = null;
} else {
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( scene, camera );
......
......@@ -240,10 +240,13 @@
// Render first scene into texture
renderer.render( sceneRTT, cameraRTT, rtTexture, true );
renderer.setRenderTarget( rtTexture );
renderer.clear();
renderer.render( sceneRTT, cameraRTT );
// Render full screen quad with generated texture
renderer.setRenderTarget( null );
renderer.render( sceneScreen, cameraRTT );
var read = new Float32Array( 4 );
......
......@@ -252,14 +252,17 @@
material.uniforms[ "time" ].value += delta;
renderer.clear();
// Render first scene into texture
renderer.render( sceneRTT, cameraRTT, rtTexture, true );
renderer.setRenderTarget( rtTexture );
renderer.clear();
renderer.render( sceneRTT, cameraRTT );
// Render full screen quad with generated texture
renderer.setRenderTarget( null );
renderer.clear();
renderer.render( sceneScreen, cameraRTT );
// Render second scene to screen
......
......@@ -113,7 +113,8 @@
camera.position.copy( position );
camera.lookAt( position.add( normal ) );
renderer.render( clone, camera, rt );
renderer.setRenderTarget( rt );
renderer.render( clone, camera );
renderer.readRenderTargetPixels( rt, 0, 0, SIZE, SIZE, buffer );
......@@ -243,6 +244,7 @@
requestAnimationFrame( animate );
renderer.setRenderTarget( null );
renderer.render( scene, camera );
}
......
......@@ -491,13 +491,18 @@
uniformsTerrain[ 'uOffset' ].value.x = 4 * uniformsNoise[ 'offset' ].value.x;
quadTarget.material = mlib[ 'heightmap' ];
renderer.render( sceneRenderTarget, cameraOrtho, heightMap, true );
renderer.setRenderTarget( heightMap );
renderer.clear();
renderer.render( sceneRenderTarget, cameraOrtho );
quadTarget.material = mlib[ 'normal' ];
renderer.render( sceneRenderTarget, cameraOrtho, normalMap, true );
renderer.setRenderTarget( normalMap );
renderer.clear();
renderer.render( sceneRenderTarget, cameraOrtho );
}
renderer.setRenderTarget( null );
renderer.render( scene, camera );
}
......
......@@ -386,7 +386,8 @@
update( time / 1000 );
stats.begin();
renderer.render( scene, camera, renderTarget );
renderer.setRenderTarget( renderTarget );
renderer.render( scene, camera );
stats.end();
} );
......
......@@ -66,24 +66,26 @@ function CubeCamera( near, far, cubeResolution, options ) {
renderTarget.texture.generateMipmaps = false;
renderTarget.activeCubeFace = 0;
renderer.render( scene, cameraPX, renderTarget );
renderer.setRenderTarget( renderTarget );
renderer.render( scene, cameraPX );
renderTarget.activeCubeFace = 1;
renderer.render( scene, cameraNX, renderTarget );
renderer.render( scene, cameraNX );
renderTarget.activeCubeFace = 2;
renderer.render( scene, cameraPY, renderTarget );
renderer.render( scene, cameraPY );
renderTarget.activeCubeFace = 3;
renderer.render( scene, cameraNY, renderTarget );
renderer.render( scene, cameraNY );
renderTarget.activeCubeFace = 4;
renderer.render( scene, cameraPZ, renderTarget );
renderer.render( scene, cameraPZ );
renderTarget.texture.generateMipmaps = generateMipmaps;
renderTarget.activeCubeFace = 5;
renderer.render( scene, cameraNZ, renderTarget );
renderer.render( scene, cameraNZ );
renderer.setRenderTarget( currentRenderTarget );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册