添加关照、全局等高线、修改图层问题
This commit is contained in:
		
							
								
								
									
										195
									
								
								static/sdk/three/jsm/renderers/common/Backend.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								static/sdk/three/jsm/renderers/common/Backend.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,195 @@ | ||||
| let vector2 = null; | ||||
| let vector4 = null; | ||||
| let color4 = null; | ||||
|  | ||||
| import Color4 from './Color4.js'; | ||||
| import { Vector2, Vector4, REVISION, createCanvasElement } from 'three'; | ||||
|  | ||||
| class Backend { | ||||
|  | ||||
| 	constructor( parameters = {} ) { | ||||
|  | ||||
| 		this.parameters = Object.assign( {}, parameters ); | ||||
| 		this.data = new WeakMap(); | ||||
| 		this.renderer = null; | ||||
| 		this.domElement = null; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	async init( renderer ) { | ||||
|  | ||||
| 		this.renderer = renderer; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	// render context | ||||
|  | ||||
| 	begin( renderContext ) { } | ||||
|  | ||||
| 	finish( renderContext ) { } | ||||
|  | ||||
| 	// render object | ||||
|  | ||||
| 	draw( renderObject, info ) { } | ||||
|  | ||||
| 	// program | ||||
|  | ||||
| 	createProgram( program ) { } | ||||
|  | ||||
| 	destroyProgram( program ) { } | ||||
|  | ||||
| 	// bindings | ||||
|  | ||||
| 	createBindings( renderObject ) { } | ||||
|  | ||||
| 	updateBindings( renderObject ) { } | ||||
|  | ||||
| 	// pipeline | ||||
|  | ||||
| 	createRenderPipeline( renderObject ) { } | ||||
|  | ||||
| 	createComputePipeline( computeNode, pipeline ) { } | ||||
|  | ||||
| 	destroyPipeline( pipeline ) { } | ||||
|  | ||||
| 	// cache key | ||||
|  | ||||
| 	needsRenderUpdate( renderObject ) { } // return Boolean ( fast test ) | ||||
|  | ||||
| 	getRenderCacheKey( renderObject ) { } // return String | ||||
|  | ||||
| 	// node builder | ||||
|  | ||||
| 	createNodeBuilder( renderObject ) { } // return NodeBuilder (ADD IT) | ||||
|  | ||||
| 	// textures | ||||
|  | ||||
| 	createSampler( texture ) { } | ||||
|  | ||||
| 	createDefaultTexture( texture ) { } | ||||
|  | ||||
| 	createTexture( texture ) { } | ||||
|  | ||||
| 	copyTextureToBuffer( texture, x, y, width, height ) {} | ||||
|  | ||||
| 	// attributes | ||||
|  | ||||
| 	createAttribute( attribute ) { } | ||||
|  | ||||
| 	createIndexAttribute( attribute ) { } | ||||
|  | ||||
| 	updateAttribute( attribute ) { } | ||||
|  | ||||
| 	destroyAttribute( attribute ) { } | ||||
|  | ||||
| 	// canvas | ||||
|  | ||||
| 	getContext() { } | ||||
|  | ||||
| 	updateSize() { } | ||||
|  | ||||
| 	// utils | ||||
|  | ||||
| 	resolveTimestampAsync( renderContext, type ) { } | ||||
|  | ||||
| 	hasFeatureAsync( name ) { } // return Boolean | ||||
|  | ||||
| 	hasFeature( name ) { } // return Boolean | ||||
|  | ||||
| 	getInstanceCount( renderObject ) { | ||||
|  | ||||
| 		const { object, geometry } = renderObject; | ||||
|  | ||||
| 		return geometry.isInstancedBufferGeometry ? geometry.instanceCount : ( object.isInstancedMesh ? object.count : 1 ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	getDrawingBufferSize() { | ||||
|  | ||||
| 		vector2 = vector2 || new Vector2(); | ||||
|  | ||||
| 		return this.renderer.getDrawingBufferSize( vector2 ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	getScissor() { | ||||
|  | ||||
| 		vector4 = vector4 || new Vector4(); | ||||
|  | ||||
| 		return this.renderer.getScissor( vector4 ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	setScissorTest( boolean ) { } | ||||
|  | ||||
| 	getClearColor() { | ||||
|  | ||||
| 		const renderer = this.renderer; | ||||
|  | ||||
| 		color4 = color4 || new Color4(); | ||||
|  | ||||
| 		renderer.getClearColor( color4 ); | ||||
|  | ||||
| 		color4.getRGB( color4, this.renderer.currentColorSpace ); | ||||
|  | ||||
| 		return color4; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	getDomElement() { | ||||
|  | ||||
| 		let domElement = this.domElement; | ||||
|  | ||||
| 		if ( domElement === null ) { | ||||
|  | ||||
| 			domElement = ( this.parameters.canvas !== undefined ) ? this.parameters.canvas : createCanvasElement(); | ||||
|  | ||||
| 			// OffscreenCanvas does not have setAttribute, see #22811 | ||||
| 			if ( 'setAttribute' in domElement ) domElement.setAttribute( 'data-engine', `three.js r${REVISION} webgpu` ); | ||||
|  | ||||
| 			this.domElement = domElement; | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		return domElement; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	// resource properties | ||||
|  | ||||
| 	set( object, value ) { | ||||
|  | ||||
| 		this.data.set( object, value ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	get( object ) { | ||||
|  | ||||
| 		let map = this.data.get( object ); | ||||
|  | ||||
| 		if ( map === undefined ) { | ||||
|  | ||||
| 			map = {}; | ||||
| 			this.data.set( object, map ); | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		return map; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	has( object ) { | ||||
|  | ||||
| 		return this.data.has( object ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	delete( object ) { | ||||
|  | ||||
| 		this.data.delete( object ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| export default Backend; | ||||
		Reference in New Issue
	
	Block a user