SampledTexture.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import Binding from './Binding.js';
  2. let id = 0;
  3. class SampledTexture extends Binding {
  4. constructor( name, texture ) {
  5. super( name );
  6. this.id = id ++;
  7. this.texture = texture;
  8. this.version = 0;
  9. this.isSampledTexture = true;
  10. }
  11. get needsBindingsUpdate() {
  12. const { texture, version } = this;
  13. return texture.isVideoTexture ? true : version !== texture.version; // @TODO: version === 0 && texture.version > 0 ( add it just to External Textures like PNG,JPG )
  14. }
  15. update() {
  16. if ( this.version !== this.texture.version ) {
  17. this.version = this.texture.version;
  18. return true;
  19. }
  20. return false;
  21. }
  22. }
  23. class SampledArrayTexture extends SampledTexture {
  24. constructor( name, texture ) {
  25. super( name, texture );
  26. this.isSampledArrayTexture = true;
  27. }
  28. }
  29. class Sampled3DTexture extends SampledTexture {
  30. constructor( name, texture ) {
  31. super( name, texture );
  32. this.isSampled3DTexture = true;
  33. }
  34. }
  35. class SampledCubeTexture extends SampledTexture {
  36. constructor( name, texture ) {
  37. super( name, texture );
  38. this.isSampledCubeTexture = true;
  39. }
  40. }
  41. export { SampledTexture, SampledArrayTexture, Sampled3DTexture, SampledCubeTexture };