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 };
|