Options
All
  • Public
  • Public/Protected
  • All
Menu

Class TextureCube

Wrapper for an WebGL cube texture providing size accessors and requiring for bind, unbind, resize, validity, and initialization implementations. The texture cube object is created on initialization and deleted on uninitialization. After being initialized, the texture cube can be resized, reformated, and data can set directly or via fetch:

const cubeMap = new TextureCube(context, 'CubeMap');
cubeMap.initialize(512, gl.RGB8, gl.RGB, gl.UNSIGNED_BYTE);
cubeMap.fetch({
    positiveX: 'data/cubemap.px.png', negativeX: 'data/cubemap.nx.png',
    positiveY: 'data/cubemap.py.png', negativeY: 'data/cubemap.ny.png',
    positiveZ: 'data/cubemap.pz.png', negativeZ: 'data/cubemap.nz.png',
}).then(() => this.invalidate(true);

Please note that each of the six textures of a texture cube is required to be of the exact same, square dimensions. This is reflected within this classes interface by providing a single size property in favor to width and height.

Hierarchy

  • AbstractObject<WebGLTexture>
    • TextureCube

Implements

  • Bindable

Index

Constructors

constructor

  • Object constructor, requires a context and a valid identifier.

    Parameters

    • context: Context

      Valid context to create the object for.

    • Optional identifier: string

      Meaningful name for identification of this instance.

    Returns TextureCube

Properties

Protected _bytes

_bytes: number[] = ...

For tracking approximate use of GPU storage in bytes per face.

Protected _context

_context: Context
see

context

Protected _format

_format: number = 0
see

format

Protected _identifier

_identifier: string

Protected _internalFormat

_internalFormat: number = 0

Protected _object

_object: undefined | WebGLTexture
see

object

Protected _referenceCount

_referenceCount: number = 0

Number of references to this object. If at least a single reference was counted, this object can neither be initialized (and thus created) nor uninitialized (and thus deleted). The reference count is controlled via ref() and unref() functions.

Protected _size

_size: number = 0
see

size

Protected _type

_type: number = 0
see

type

Protected _valid

_valid: boolean = false
see

valid

Protected assertInitialized

assertInitialized: () => void = ...

Asserts the objects initialization status to be true. Note that the implementation is cached and forwarded to either an empty function when initialized and to an acutal assert(false) otherwise.

Type declaration

    • (): void
    • Returns void

Protected assertUninitialized

assertUninitialized: () => void = ...

Asserts the objects initialization status to be false. Note that the implementation is cached and forwarded to either an empty function when uninitialized and to an acutal assert(false) otherwise.

Type declaration

    • (): void
    • Returns void

Static Readonly DEFAULT_TEXTURE

DEFAULT_TEXTURE: undefined = ...

Default texture, e.g., used for unbind.

Accessors

bytes

  • get bytes(): number
  • Returns the number of bytes this object approximately allocates on the GPU. The size will be zero when no image data was passed to the texture object.

    Returns number

context

  • Read-only access to the objects context, used to get context information and WebGL API access.

    Returns Context

format

  • get format(): number
  • Cached format of the data provided to the texture object for efficient resize. This is set on initialization and might change on data transfers.

    Returns number

identifier

  • get identifier(): string
  • Every GPU asset that allocates memory should provide a human readable identifier for GPU allocation tracking and debugging purposes. Please note that the identifier might changed on initialization due to the generation and assignment of a unique identifier.

    Returns string

    • This assets identifier used for gpu allocation tracking and debugging.

initialized

  • get initialized(): boolean
  • Property getter for readonly access to the initialization status of an initializable instance.

    Returns boolean

internalFormat

  • get internalFormat(): number
  • Cached internal format of the texture for efficient resize. This can only be changed by re-initialization.

    Returns number

object

  • get object(): T

size

  • get size(): number
  • The width/height of the texture object (each cube map face is required to be a square).

    Returns number

type

  • get type(): number
  • Cached type of the data provided to the texture used for efficient resize. This is set on initialization and might change on data transfers.

    Returns number

valid

  • get valid(): boolean
  • Cached object status used to derive validity when initialized.

    Returns boolean

    • True if the object status is complete, false otherwise.

Methods

bind

  • bind(unit?: number): void
  • Bind the texture object to a texture unit.

    Parameters

    • Optional unit: number

    Returns void

calculateMipLevelSize

  • calculateMipLevelSize(level: number): number
  • This function returns how big a specific mip level for this cubemap hast to be.

    Parameters

    • level: number

      The level for which the size should be determined

    Returns number

Protected create

  • create(size: number, internalFormat: number, format: number, type: number): undefined | WebGLTexture
  • Create a texture object on the GPU.

    Parameters

    • size: number

      Initial size (width/height) of each face, which are required to be a square texture.

    • internalFormat: number

      Internal format of the texture object.

    • format: number

      Format of the texture data even though no data is passed.

    • type: number

      Data type of the texel data.

    Returns undefined | WebGLTexture

Protected cropImage

  • cropImage(srcImage: HTMLImageElement, offsetX: number, offsetY: number, width: number, height: number): ImageData
  • Crops the contents of an image and returns a ImageData element of the resulting image. Offsets and sizes of the cropping range need to be supplied. The resulting image data will have the same height and width as the crop size.

    Parameters

    • srcImage: HTMLImageElement
    • offsetX: number
    • offsetY: number
    • width: number
    • height: number

    Returns ImageData

data

  • data(data: PerFaceData | [number, TexImage2DData], mipLevel?: number, bind?: boolean, unbind?: boolean): void
  • Pass data of six images to the texture cube object.

    Parameters

    • data: PerFaceData | [number, TexImage2DData]

      Per face texel data that will be copied into the objects data store. Either provided via object or as tuple, providing the data associated to the targeted face (as GLenum).

    • mipLevel: number = 0
    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

Protected delete

  • delete(): void
  • Delete the texture object on the GPU. This should have the reverse effect of create.

    Returns void

Protected extractMipLevelFromAtlas

  • extractMipLevelFromAtlas(image: HTMLImageElement, mipLevel: number): void
  • Loads one mip map level from a texture atlas in which all mipmap levels of a cubemap are stored. The format is assumed to be NX, PZ, PX, NZ in the top row and PY, NY in the bottom row. The bottom right quarter is assumed to be the next lower mipmap level. This repeats until the highest mipmap level is reached.

    Parameters

    • image: HTMLImageElement

      Source texture atlas.

    • mipLevel: number

      Level to load.

    Returns void

Protected faceID

  • faceID(face: number): number
  • Provides an ID for each of the six texture cube identifier (0: +x, 1: -x, 2: +y, 3: -y, 4: +z, 5: -z).

    Parameters

    • face: number

      Texture cube face identifier, e.g., TEXTURE_CUBE_MAP_POSITIVE_X.

    Returns number

    • Face ID in the following sequence: 0: +x, 1: -x, 2: +y, 3: -y, 4: +z, 5: -z.

fetch

  • fetch(urisByFace: PerFaceURI, crossOrigin?: boolean, mipLevel?: number): Promise<void>
  • Asynchronous load of multiple images (specified per texture cube face) via URI or data URI. Please note that the texture will not be resized and is assumed to be resized upfront accordingly.

    Parameters

    • urisByFace: PerFaceURI

      URI linking the image that should be loaded for a specific face. Data URI is also supported.

    • crossOrigin: boolean = false

      Enable cross origin data loading.

    • mipLevel: number = 0

    Returns Promise<void>

    • Promise for handling images load status.

fetchMipmapAtlas

  • fetchMipmapAtlas(uri: string, crossOrigin?: boolean): Promise<void>
  • Asynchronously loads a cubemap and its mipmap levels from a single texture atlas. The format is assumed to be NX, PZ, PX, NZ in the top row and PY, NY in the bottom row. The bottom right quarter is assumed to be the next lower mipmap level. This repeats until the highest mipmap level is reached.

    Parameters

    • uri: string

      URI linking the texture atlas that should be loaded.

    • crossOrigin: boolean = false

      Enable cross origin data loading.

    Returns Promise<void>

filter

  • filter(mag: number, min: number, bind?: boolean, unbind?: boolean): void
  • Sets the texture object's magnification and minification filter.

    Parameters

    • mag: number

      Value for the TEXTURE_MAG_FILTER parameter.

    • min: number

      Value for the TEXTURE_MIN_FILTER parameter.

    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

initialize

  • initialize(...args: any[]): boolean
  • override

    Ensure that an object handle is created at the point of initialization. When overriding this function super.initialize() has to be invoked immediately/first. Please note that initialization of invalid object raises an assertion in order to prevent further actions without a valid WebGL object. After object creation the valid property is expected to be set accordingly.

    Parameters

    • Rest ...args: any[]

    Returns boolean

levels

  • levels(baseLevel: number, maxLevel: number, bind?: boolean, unbind?: boolean): void
  • Set the textures base and max level for mip mapping. This needs to be used when mip levels are uploaded manually to specifiy how many mip levels exist.

    Parameters

    • baseLevel: number

      The level with the maximal resolution, usually this will be 0.

    • maxLevel: number

      The level with the minimal resolution.

    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

ref

  • ref(): void
  • Increment the reference count of this object.

    Returns void

reformat

  • reformat(internalFormat: number, format?: number, type?: number, bind?: boolean, unbind?: boolean): void
  • This can be used to reformat the texture image without creating a new texture object. Please note that this resets the texture's image data to undefined. @see data for setting new image data.

    Parameters

    • internalFormat: number

      Internal format of the texture object.

    • Optional format: number

      Format of the texture data even though no data is passed.

    • Optional type: number

      Data type of the texel data.

    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

resize

  • resize(size: number, bind?: boolean, unbind?: boolean): void
  • This should be used to efficiently resize the texture.

    Parameters

    • size: number

      Targeted/new size (width/height) of the texture in px.

    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

unbind

  • unbind(unit?: number): void
  • Unbind the texture object from a texture unit.

    Parameters

    • Optional unit: number

    Returns void

uninitialize

  • uninitialize(): void
  • override

    Ensure that an object handle is deleted, invalidated, and its allocated GPU resources are set to zero. When overriding this function super.uninitialize() has to be invoked last/at the end. Note that an object cannot be uninitialized if it is referenced (reference count > 0).

    Returns void

unref

  • unref(): void
  • Decrement the reference count of this object.

    Returns void

wrap

  • wrap(wrap_s: number, wrap_t: number, bind?: boolean, unbind?: boolean): void
  • Sets the texture object's wrapping function for s and t coordinates.

    Parameters

    • wrap_s: number

      Value for the TEXTURE_WRAP_S parameter.

    • wrap_t: number

      Value for the TEXTURE_WRAP_T parameter.

    • bind: boolean = true

      Allows to skip binding the texture (e.g., when binding is handled outside).

    • unbind: boolean = true

      Allows to skip unbinding the texture (e.g., when binding is handled outside).

    Returns void

Static Protected Readonly assertInitializedFalse

Static Protected Readonly assertUninitializedFalse

Static assert_initialized

  • assert_initialized(): MethodDecorator
  • Method decorator for asserting the initialization status of an initializable to be true.

    see

    assertInitialized

    Returns MethodDecorator

Static assert_uninitialized

  • assert_uninitialized(): MethodDecorator

Static discard

  • discard(): MethodDecorator
  • Method decorator for discarding of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be discarded, invokes its uninitialization, and falsifies the initialization status. In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to a static, always-failing assert and an empty/undefined function respectively.

    Returns MethodDecorator

Static initialize

  • initialize(): MethodDecorator
  • Method decorator for initialization of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be initialized, invokes its initialization with arbitrary number of parameters, and sets the initialization status to the initialization success (either false or true). In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to either a static, always-failing assert or an empty/undefined function.

    Returns MethodDecorator

Static uninitialize

  • uninitialize(): MethodDecorator
  • Method decorator for uninitialization of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be uninitialized, invokes its uninitialization, and falsifies the initialization status. In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to a static, always-failing assert and an empty/undefined function respectively.

    Returns MethodDecorator