ShaderPass.js 1007 字节
Newer Older
A
alteredq 已提交
1 2 3 4
/**
 * @author alteredq / http://alteredqualia.com/
 */

M
Mr.doob 已提交
5
THREE.ShaderPass = function ( shader, textureID ) {
A
alteredq 已提交
6

7
	this.textureID = ( textureID !== undefined ) ? textureID : "tDiffuse";
A
alteredq 已提交
8 9 10

	this.uniforms = THREE.UniformsUtils.clone( shader.uniforms );

11
	this.material = new THREE.ShaderMaterial( {
A
alteredq 已提交
12 13 14 15 16 17 18 19

		uniforms: this.uniforms,
		vertexShader: shader.vertexShader,
		fragmentShader: shader.fragmentShader

	} );

	this.renderToScreen = false;
20 21

	this.enabled = true;
22
	this.needsSwap = true;
23
	this.clear = false;
A
alteredq 已提交
24 25 26

};

27
THREE.ShaderPass.prototype = {
A
alteredq 已提交
28

29
	render: function ( renderer, writeBuffer, readBuffer, delta ) {
A
alteredq 已提交
30

31 32
		if ( this.uniforms[ this.textureID ] ) {

33
			this.uniforms[ this.textureID ].value = readBuffer;
34 35

		}
A
alteredq 已提交
36

37
		THREE.EffectComposer.quad.material = this.material;
A
alteredq 已提交
38 39 40 41 42 43 44

		if ( this.renderToScreen ) {

			renderer.render( THREE.EffectComposer.scene, THREE.EffectComposer.camera );

		} else {

45
			renderer.render( THREE.EffectComposer.scene, THREE.EffectComposer.camera, writeBuffer, this.clear );
A
alteredq 已提交
46 47 48 49 50 51

		}

	}

};