first commit
This commit is contained in:
		
							
								
								
									
										79
									
								
								public/sdk/three/jsm/postprocessing/HalftonePass.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								public/sdk/three/jsm/postprocessing/HalftonePass.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | ||||
| import { | ||||
| 	ShaderMaterial, | ||||
| 	UniformsUtils | ||||
| } from 'three'; | ||||
| import { Pass, FullScreenQuad } from './Pass.js'; | ||||
| import { HalftoneShader } from '../shaders/HalftoneShader.js'; | ||||
|  | ||||
| /** | ||||
|  * RGB Halftone pass for three.js effects composer. Requires HalftoneShader. | ||||
|  */ | ||||
|  | ||||
| class HalftonePass extends Pass { | ||||
|  | ||||
| 	constructor( width, height, params ) { | ||||
|  | ||||
| 		super(); | ||||
|  | ||||
| 	 	this.uniforms = UniformsUtils.clone( HalftoneShader.uniforms ); | ||||
| 	 	this.material = new ShaderMaterial( { | ||||
| 	 		uniforms: this.uniforms, | ||||
| 	 		fragmentShader: HalftoneShader.fragmentShader, | ||||
| 	 		vertexShader: HalftoneShader.vertexShader | ||||
| 	 	} ); | ||||
|  | ||||
| 		// set params | ||||
| 		this.uniforms.width.value = width; | ||||
| 		this.uniforms.height.value = height; | ||||
|  | ||||
| 		for ( const key in params ) { | ||||
|  | ||||
| 			if ( params.hasOwnProperty( key ) && this.uniforms.hasOwnProperty( key ) ) { | ||||
|  | ||||
| 				this.uniforms[ key ].value = params[ key ]; | ||||
|  | ||||
| 			} | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		this.fsQuad = new FullScreenQuad( this.material ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	render( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) { | ||||
|  | ||||
|  		this.material.uniforms[ 'tDiffuse' ].value = readBuffer.texture; | ||||
|  | ||||
|  		if ( this.renderToScreen ) { | ||||
|  | ||||
|  			renderer.setRenderTarget( null ); | ||||
|  			this.fsQuad.render( renderer ); | ||||
|  | ||||
| 		} else { | ||||
|  | ||||
|  			renderer.setRenderTarget( writeBuffer ); | ||||
|  			if ( this.clear ) renderer.clear(); | ||||
| 			this.fsQuad.render( renderer ); | ||||
|  | ||||
| 		} | ||||
|  | ||||
|  	} | ||||
|  | ||||
|  	setSize( width, height ) { | ||||
|  | ||||
|  		this.uniforms.width.value = width; | ||||
|  		this.uniforms.height.value = height; | ||||
|  | ||||
|  	} | ||||
|  | ||||
| 	dispose() { | ||||
|  | ||||
| 		this.material.dispose(); | ||||
|  | ||||
| 		this.fsQuad.dispose(); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| export { HalftonePass }; | ||||
		Reference in New Issue
	
	Block a user