添加关照、全局等高线、修改图层问题
This commit is contained in:
		
							
								
								
									
										79
									
								
								static/sdk/three/jsm/postprocessing/SavePass.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								static/sdk/three/jsm/postprocessing/SavePass.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | ||||
| import { | ||||
| 	HalfFloatType, | ||||
| 	NoBlending, | ||||
| 	ShaderMaterial, | ||||
| 	UniformsUtils, | ||||
| 	WebGLRenderTarget | ||||
| } from 'three'; | ||||
| import { Pass, FullScreenQuad } from './Pass.js'; | ||||
| import { CopyShader } from '../shaders/CopyShader.js'; | ||||
|  | ||||
| class SavePass extends Pass { | ||||
|  | ||||
| 	constructor( renderTarget ) { | ||||
|  | ||||
| 		super(); | ||||
|  | ||||
| 		const shader = CopyShader; | ||||
|  | ||||
| 		this.textureID = 'tDiffuse'; | ||||
|  | ||||
| 		this.uniforms = UniformsUtils.clone( shader.uniforms ); | ||||
|  | ||||
| 		this.material = new ShaderMaterial( { | ||||
|  | ||||
| 			uniforms: this.uniforms, | ||||
| 			vertexShader: shader.vertexShader, | ||||
| 			fragmentShader: shader.fragmentShader, | ||||
| 			blending: NoBlending | ||||
|  | ||||
| 		} ); | ||||
|  | ||||
| 		this.renderTarget = renderTarget; | ||||
|  | ||||
| 		if ( this.renderTarget === undefined ) { | ||||
|  | ||||
| 			this.renderTarget = new WebGLRenderTarget( 1, 1, { type: HalfFloatType } ); // will be resized later | ||||
| 			this.renderTarget.texture.name = 'SavePass.rt'; | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		this.needsSwap = false; | ||||
|  | ||||
| 		this.fsQuad = new FullScreenQuad( this.material ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	render( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive */ ) { | ||||
|  | ||||
| 		if ( this.uniforms[ this.textureID ] ) { | ||||
|  | ||||
| 			this.uniforms[ this.textureID ].value = readBuffer.texture; | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		renderer.setRenderTarget( this.renderTarget ); | ||||
| 		if ( this.clear ) renderer.clear(); | ||||
| 		this.fsQuad.render( renderer ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	setSize( width, height ) { | ||||
|  | ||||
| 		this.renderTarget.setSize( width, height ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	dispose() { | ||||
|  | ||||
| 		this.renderTarget.dispose(); | ||||
|  | ||||
| 		this.material.dispose(); | ||||
|  | ||||
| 		this.fsQuad.dispose(); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| export { SavePass }; | ||||
		Reference in New Issue
	
	Block a user