TAA working
Chaining effects works now
by ruben3d
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r79/three.js"></script>
<script src="https://s3-eu-west-1.amazonaws.com/rayfoundry-tmp/magnificient-watch.min.js"></script>
<body>
<div class="world" id="world"></div>
</body>
JavaScript
THREE.TAARenderPass = function( scene, camera ) {
THREE.Pass.call( this );
this.scene = scene;
this.camera = camera;
if ( THREE.CopyShader === undefined ) console.error( "THREE.TAARenderPass relies on THREE.CopyShader" );
var copyShader = THREE.CopyShader;
this.copyUniforms = THREE.UniformsUtils.clone( copyShader.uniforms );
this.copyMaterial = new THREE.ShaderMaterial( {
uniforms: this.copyUniforms,
vertexShader: copyShader.vertexShader,
fragmentShader: copyShader.fragmentShader,
premultipliedAlpha: true,
transparent: true,
blending: THREE.AdditiveBlending,
depthTest: false,
depthWrite: false
} );
this.camera2 = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
this.scene2 = new THREE.Scene();
this.quad2 = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), this.copyMaterial );
this.scene2.add( this.quad2 );
this.sampleLevel = 0;
this.maxSampleLevel = 5;
this.accumulate = false;
this.accumulateIndex = 0;
this.onRenderedCallback = null;
};
THREE.TAARenderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
constructor: THREE.TAARenderPass,
render: function( renderer, writeBuffer, readBuffer, delta ) {
var jitterOffsets = THREE.TAARenderPass.JitterVectors[ this.maxSampleLevel ];
var totalSamples = jitterOffsets.length;
var numSamplesPerFrame = Math.pow( 2, this.sampleLevel );
// if no accumulation, clamp totalSamples
if ( ! this.accumulate ) {
jitterOffsets = THREE.TAARenderPass.JitterVectors[ this.sampleLevel ];
totalSamples = jitterOffsets.length;
this.accumulateIndex = 0;
}
if ( ! this.sampleRenderTarget ) {
this.sampleRenderTarget = new THREE.WebGLRenderTarget( readBuffer.width, readBuffer.height );
}
if ( ! this.holdRenderTarget ) {
this.holdRenderTarget = new THREE.WebGLRenderTarget( readBuffer.width, readBuffer.height );
}
var autoClear = renderer.autoClear;
renderer.autoClear = false;
var jitterFactor = 1 / 16 /...