100 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | class Info { | ||
|  | 
 | ||
|  | 	constructor() { | ||
|  | 
 | ||
|  | 		this.autoReset = true; | ||
|  | 
 | ||
|  | 		this.frame = 0; | ||
|  | 		this.calls = 0; | ||
|  | 
 | ||
|  | 		this.render = { | ||
|  | 			calls: 0, | ||
|  | 			drawCalls: 0, | ||
|  | 			triangles: 0, | ||
|  | 			points: 0, | ||
|  | 			lines: 0, | ||
|  | 			timestamp: 0 | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		this.compute = { | ||
|  | 			calls: 0, | ||
|  | 			computeCalls: 0, | ||
|  | 			timestamp: 0 | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		this.memory = { | ||
|  | 			geometries: 0, | ||
|  | 			textures: 0 | ||
|  | 		}; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	update( object, count, instanceCount ) { | ||
|  | 
 | ||
|  | 		this.render.drawCalls ++; | ||
|  | 
 | ||
|  | 		if ( object.isMesh || object.isSprite ) { | ||
|  | 
 | ||
|  | 			this.render.triangles += instanceCount * ( count / 3 ); | ||
|  | 
 | ||
|  | 		} else if ( object.isPoints ) { | ||
|  | 
 | ||
|  | 			this.render.points += instanceCount * count; | ||
|  | 
 | ||
|  | 		} else if ( object.isLineSegments ) { | ||
|  | 
 | ||
|  | 			this.render.lines += instanceCount * ( count / 2 ); | ||
|  | 
 | ||
|  | 		} else if ( object.isLine ) { | ||
|  | 
 | ||
|  | 			this.render.lines += instanceCount * ( count - 1 ); | ||
|  | 
 | ||
|  | 		} else { | ||
|  | 
 | ||
|  | 			console.error( 'THREE.WebGPUInfo: Unknown object type.' ); | ||
|  | 
 | ||
|  | 		} | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	updateTimestamp( type, time ) { | ||
|  | 
 | ||
|  | 		this[ type ].timestamp += time; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	reset() { | ||
|  | 
 | ||
|  | 		this.render.drawCalls = 0; | ||
|  | 		this.compute.computeCalls = 0; | ||
|  | 
 | ||
|  | 		this.render.triangles = 0; | ||
|  | 		this.render.points = 0; | ||
|  | 		this.render.lines = 0; | ||
|  | 
 | ||
|  | 		this.render.timestamp = 0; | ||
|  | 		this.compute.timestamp = 0; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	dispose() { | ||
|  | 
 | ||
|  | 		this.reset(); | ||
|  | 
 | ||
|  | 		this.calls = 0; | ||
|  | 
 | ||
|  | 		this.render.calls = 0; | ||
|  | 		this.compute.calls = 0; | ||
|  | 
 | ||
|  | 		this.render.timestamp = 0; | ||
|  | 		this.compute.timestamp = 0; | ||
|  | 		this.memory.geometries = 0; | ||
|  | 		this.memory.textures = 0; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | export default Info; |