Skip to content

Commit

Permalink
Merge pull request #20009 from DefinitelyMaybe/src/textures--move-to-…
Browse files Browse the repository at this point in the history
…es6-classes

src/textures: move to es6 classes
  • Loading branch information
mrdoob authored Feb 20, 2021
2 parents 87b2a7a + a45af31 commit cb8a6c5
Show file tree
Hide file tree
Showing 9 changed files with 184 additions and 181 deletions.
12 changes: 7 additions & 5 deletions src/textures/CanvasTexture.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { Texture } from './Texture.js';

function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
class CanvasTexture extends Texture {

Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {

this.needsUpdate = true;
super( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );

this.needsUpdate = true;

}

}

CanvasTexture.prototype = Object.create( Texture.prototype );
CanvasTexture.prototype.constructor = CanvasTexture;
CanvasTexture.prototype.isCanvasTexture = true;

export { CanvasTexture };
28 changes: 14 additions & 14 deletions src/textures/CompressedTexture.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
import { Texture } from './Texture.js';

function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {
class CompressedTexture extends Texture {

Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );
constructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {

this.image = { width: width, height: height };
this.mipmaps = mipmaps;
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );

// no flipping for cube textures
// (also flipping doesn't work for compressed textures )
this.image = { width: width, height: height };
this.mipmaps = mipmaps;

this.flipY = false;
// no flipping for cube textures
// (also flipping doesn't work for compressed textures )

// can't generate mipmaps for compressed textures
// mips must be embedded in DDS files
this.flipY = false;

this.generateMipmaps = false;
// can't generate mipmaps for compressed textures
// mips must be embedded in DDS files

}
this.generateMipmaps = false;

CompressedTexture.prototype = Object.create( Texture.prototype );
CompressedTexture.prototype.constructor = CompressedTexture;
}

CompressedTexture.prototype.isCompressedTexture = true;
}

CompressedTexture.prototype.isCompressedTexture = true;

export { CompressedTexture };
48 changes: 22 additions & 26 deletions src/textures/CubeTexture.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,46 @@
import { Texture } from './Texture.js';
import { CubeReflectionMapping, RGBFormat } from '../constants.js';

function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {
class CubeTexture extends Texture {

images = images !== undefined ? images : [];
mapping = mapping !== undefined ? mapping : CubeReflectionMapping;
format = format !== undefined ? format : RGBFormat;
constructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {

Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );
images = images !== undefined ? images : [];
mapping = mapping !== undefined ? mapping : CubeReflectionMapping;
format = format !== undefined ? format : RGBFormat;

this.flipY = false;
super( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );

// Why CubeTexture._needsFlipEnvMap is necessary:
//
// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)
// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,
// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.
// Why CubeTexture._needsFlipEnvMap is necessary:
//
// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)
// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,
// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.

// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped
// and the flag _needsFlipEnvMap controls this conversion. The flip is not required (and thus _needsFlipEnvMap is set to false)
// when using WebGLCubeRenderTarget.texture as a cube texture.
// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped
// and the flag _needsFlipEnvMap controls this conversion. The flip is not required (and thus _needsFlipEnvMap is set to false)
// when using WebGLCubeRenderTarget.texture as a cube texture.

this._needsFlipEnvMap = true;
this._needsFlipEnvMap = true;

}

CubeTexture.prototype = Object.create( Texture.prototype );
CubeTexture.prototype.constructor = CubeTexture;

CubeTexture.prototype.isCubeTexture = true;
this.flipY = false;

Object.defineProperty( CubeTexture.prototype, 'images', {
}

get: function () {
get images() {

return this.image;

},
}

set: function ( value ) {
set images( value ) {

this.image = value;

}

} );
}

CubeTexture.prototype.isCubeTexture = true;

export { CubeTexture };
26 changes: 13 additions & 13 deletions src/textures/DataTexture.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
import { Texture } from './Texture.js';
import { NearestFilter } from '../constants.js';

function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {
class DataTexture extends Texture {

Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );
constructor( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {

this.image = { data: data || null, width: width || 1, height: height || 1 };
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );

this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;
this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;
this.image = { data: data || null, width: width || 1, height: height || 1 };

this.generateMipmaps = false;
this.flipY = false;
this.unpackAlignment = 1;
this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;
this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;

this.needsUpdate = true;
this.generateMipmaps = false;
this.flipY = false;
this.unpackAlignment = 1;

}
this.needsUpdate = true;

DataTexture.prototype = Object.create( Texture.prototype );
DataTexture.prototype.constructor = DataTexture;
}

DataTexture.prototype.isDataTexture = true;
}

DataTexture.prototype.isDataTexture = true;

export { DataTexture };
24 changes: 13 additions & 11 deletions src/textures/DataTexture2DArray.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
import { Texture } from './Texture.js';
import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';

function DataTexture2DArray( data = null, width = 1, height = 1, depth = 1 ) {
class DataTexture2DArray extends Texture {

Texture.call( this, null );
constructor( data = null, width = 1, height = 1, depth = 1 ) {

this.image = { data, width, height, depth };
super( null );

this.magFilter = NearestFilter;
this.minFilter = NearestFilter;
this.image = { data, width, height, depth };

this.wrapR = ClampToEdgeWrapping;
this.magFilter = NearestFilter;
this.minFilter = NearestFilter;

this.generateMipmaps = false;
this.flipY = false;
this.wrapR = ClampToEdgeWrapping;

this.needsUpdate = true;
this.generateMipmaps = false;
this.flipY = false;

this.needsUpdate = true;

}

}

DataTexture2DArray.prototype = Object.create( Texture.prototype );
DataTexture2DArray.prototype.constructor = DataTexture2DArray;
DataTexture2DArray.prototype.isDataTexture2DArray = true;

export { DataTexture2DArray };
37 changes: 19 additions & 18 deletions src/textures/DataTexture3D.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
import { Texture } from './Texture.js';
import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';

function DataTexture3D( data = null, width = 1, height = 1, depth = 1 ) {
class DataTexture3D extends Texture {

// We're going to add .setXXX() methods for setting properties later.
// Users can still set in DataTexture3D directly.
//
// const texture = new THREE.DataTexture3D( data, width, height, depth );
// texture.anisotropy = 16;
//
// See #14839
constructor( data = null, width = 1, height = 1, depth = 1 ) {

Texture.call( this, null );
// We're going to add .setXXX() methods for setting properties later.
// Users can still set in DataTexture3D directly.
//
// const texture = new THREE.DataTexture3D( data, width, height, depth );
// texture.anisotropy = 16;
//
// See #14839

this.image = { data, width, height, depth };
super( null );

this.magFilter = NearestFilter;
this.minFilter = NearestFilter;
this.image = { data, width, height, depth };

this.wrapR = ClampToEdgeWrapping;
this.magFilter = NearestFilter;
this.minFilter = NearestFilter;

this.generateMipmaps = false;
this.flipY = false;
this.wrapR = ClampToEdgeWrapping;

this.needsUpdate = true;
this.generateMipmaps = false;
this.flipY = false;

this.needsUpdate = true;

}

}

DataTexture3D.prototype = Object.create( Texture.prototype );
DataTexture3D.prototype.constructor = DataTexture3D;
DataTexture3D.prototype.isDataTexture3D = true;

export { DataTexture3D };
33 changes: 18 additions & 15 deletions src/textures/DepthTexture.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,36 @@
import { Texture } from './Texture.js';
import { NearestFilter, UnsignedShortType, UnsignedInt248Type, DepthFormat, DepthStencilFormat } from '../constants.js';

function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {
class DepthTexture extends Texture {

format = format !== undefined ? format : DepthFormat;
constructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {

if ( format !== DepthFormat && format !== DepthStencilFormat ) {
format = format !== undefined ? format : DepthFormat;

throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );
if ( format !== DepthFormat && format !== DepthStencilFormat ) {

}
throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );

}

if ( type === undefined && format === DepthFormat ) type = UnsignedShortType;
if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;

if ( type === undefined && format === DepthFormat ) type = UnsignedShortType;
if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );

Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
this.image = { width: width, height: height };

this.image = { width: width, height: height };
this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;
this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;

this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;
this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;
this.flipY = false;
this.generateMipmaps = false;

}

this.flipY = false;
this.generateMipmaps = false;

}

DepthTexture.prototype = Object.create( Texture.prototype );
DepthTexture.prototype.constructor = DepthTexture;
DepthTexture.prototype.isDepthTexture = true;

export { DepthTexture };
Loading

0 comments on commit cb8a6c5

Please sign in to comment.