| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | ( function () {	class Pass {		constructor() {			// if set to true, the pass is processed by the composer			this.enabled = true; // if set to true, the pass indicates to swap read and write buffer after rendering			this.needsSwap = true; // 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. This is set automatically by EffectComposer.			this.renderToScreen = false;		}		setSize() {}		render() {			console.error( 'THREE.Pass: .render() must be implemented in derived pass.' );		}	} // Helper for passes that need to fill the viewport with a single quad.	const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); // https://github.com/mrdoob/three.js/pull/21358	const _geometry = new THREE.BufferGeometry();	_geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );	_geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );	class FullScreenQuad {		constructor( material ) {			this._mesh = new THREE.Mesh( _geometry, material );		}		dispose() {			this._mesh.geometry.dispose();		}		render( renderer ) {			renderer.render( this._mesh, _camera );		}		get material() {			return this._mesh.material;		}		set material( value ) {			this._mesh.material = value;		}	}	THREE.FullScreenQuad = FullScreenQuad;	THREE.Pass = Pass;} )();
 |