84 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import Binding from './Binding.js'; | ||
|  | 
 | ||
|  | let id = 0; | ||
|  | 
 | ||
|  | class SampledTexture extends Binding { | ||
|  | 
 | ||
|  | 	constructor( name, texture ) { | ||
|  | 
 | ||
|  | 		super( name ); | ||
|  | 
 | ||
|  | 		this.id = id ++; | ||
|  | 
 | ||
|  | 		this.texture = texture; | ||
|  | 		this.version = texture ? texture.version : 0; | ||
|  | 		this.store = false; | ||
|  | 
 | ||
|  | 		this.isSampledTexture = true; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	get needsBindingsUpdate() { | ||
|  | 
 | ||
|  | 		const { texture, version } = this; | ||
|  | 
 | ||
|  | 		return texture.isVideoTexture ? true : version !== texture.version; // @TODO: version === 0 && texture.version > 0 ( add it just to External Textures like PNG,JPG )
 | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	update() { | ||
|  | 
 | ||
|  | 		const { texture, version } = this; | ||
|  | 
 | ||
|  | 		if ( version !== texture.version ) { | ||
|  | 
 | ||
|  | 			this.version = texture.version; | ||
|  | 
 | ||
|  | 			return true; | ||
|  | 
 | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return false; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | class SampledArrayTexture extends SampledTexture { | ||
|  | 
 | ||
|  | 	constructor( name, texture ) { | ||
|  | 
 | ||
|  | 		super( name, texture ); | ||
|  | 
 | ||
|  | 		this.isSampledArrayTexture = true; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | class Sampled3DTexture extends SampledTexture { | ||
|  | 
 | ||
|  | 	constructor( name, texture ) { | ||
|  | 
 | ||
|  | 		super( name, texture ); | ||
|  | 
 | ||
|  | 		this.isSampled3DTexture = true; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | class SampledCubeTexture extends SampledTexture { | ||
|  | 
 | ||
|  | 	constructor( name, texture ) { | ||
|  | 
 | ||
|  | 		super( name, texture ); | ||
|  | 
 | ||
|  | 		this.isSampledCubeTexture = true; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export { SampledTexture, SampledArrayTexture, Sampled3DTexture, SampledCubeTexture }; |