A texture is a container for texel data that can be utilized in a fragment shader. Typically, the texel data represents an image that is mapped over geometry.
Note on HDR texture format support:
new Texture(graphicsDevice: GraphicsDevice, options?: {
addressU: number;
addressV: number;
addressW: number;
anisotropy: number;
arrayLength: number;
compareFunc: number;
compareOnRead: boolean;
cubemap: boolean;
depth: number;
flipY: boolean;
format: number;
height: number;
levels: | Uint8Array<ArrayBufferLike>[]
| Uint16Array<ArrayBufferLike>[]
| Uint32Array<ArrayBufferLike>[]
| Float32Array<ArrayBufferLike>[]
| HTMLCanvasElement[]
| HTMLImageElement[]
| HTMLVideoElement[]
| Uint8Array<ArrayBufferLike>[][];
magFilter: number;
minFilter: number;
mipmaps: boolean;
name: string;
numLevels: number;
premultiplyAlpha: boolean;
projection: string;
storage: boolean;
type: string;
volume: boolean;
width: number;
}): Texture
Create a new Texture instance.
GraphicsDevice
The graphics device used to manage this texture.
Object for passing optional arguments.
number
The repeat mode to use in the U direction. Defaults to ADDRESS_REPEAT.
number
The repeat mode to use in the V direction. Defaults to ADDRESS_REPEAT.
number
The repeat mode to use in the W direction. Defaults to ADDRESS_REPEAT.
number
The level of anisotropic filtering to use. Defaults to 1.
number
Specifies whether the texture is to be a 2D texture array. When passed in as undefined or < 1, this is not an array texture. If ≥ 1, this is an array texture. Defaults to undefined.
number
Comparison function when compareOnRead is enabled. Can be:
Defaults to FUNC_LESS.
boolean
When enabled, and if texture format is PIXELFORMAT_DEPTH or PIXELFORMAT_DEPTHSTENCIL, hardware PCF is enabled for this texture, and you can get filtered results of comparison using texture() in your shader. Defaults to false.
boolean
Specifies whether the texture is to be a cubemap. Defaults to false.
number
The number of depth slices in a 3D texture.
boolean
Specifies whether the texture should be flipped in the Y-direction. Only affects textures with a source that is an image, canvas or video element. Does not affect cubemaps, compressed textures or textures set from raw pixel data. Defaults to false.
number
The pixel format of the texture. Can be:
Defaults to PIXELFORMAT_RGBA8.
number
The height of the texture in pixels. Defaults to 4.
| Uint8Array<ArrayBufferLike>
| Uint16Array<ArrayBufferLike>
| Uint32Array<ArrayBufferLike>
| Float32Array<ArrayBufferLike>
| HTMLCanvasElement
| HTMLImageElement
| HTMLVideoElement
| Uint8Array<ArrayBufferLike>[]
Array of Uint8Array or other supported browser interface; or a two-dimensional array of Uint8Array if options.arrayLength is defined and greater than zero.
number
The magnification filter type to use. Defaults to FILTER_LINEAR.
number
The minification filter type to use. Defaults to FILTER_LINEAR_MIPMAP_LINEAR.
boolean
When enabled try to generate or use mipmaps for this texture. Default is true.
string
The name of the texture. Defaults to null.
number
Specifies the number of mip levels to generate. If not specified, the number is calculated based on the texture size. When this property is set, the mipmaps property is ignored.
boolean
If true, the alpha channel of the texture (if present) is multiplied into the color channels. Defaults to false.
string
The projection type of the texture, used when the texture represents an environment. Can be:
Defaults to TEXTUREPROJECTION_CUBE if options.cubemap is true, otherwise TEXTUREPROJECTION_NONE.
boolean
Defines if texture can be used as a storage texture by a compute shader. Defaults to false.
string
Specifies the texture type. Can be:
Defaults to TEXTURETYPE_DEFAULT.
boolean
Specifies whether the texture is to be a 3D volume. Defaults to false.
number
The width of the texture in pixels. Defaults to 4.
// Create a 8x8x24-bit texture
const texture = new Texture(graphicsDevice, {
width: 8,
height: 8,
format: PIXELFORMAT_RGB8
})
// Fill the texture with a gradient
const pixels = texture.lock()
const count = 0
for (let i = 0; i < 8; i++) {
for (let j = 0; j < 8; j++) {
pixels[count++] = i * 32
pixels[count++] = j * 32
pixels[count++] = 255
}
}
texture.unlock()
name: string
The name of the texture.
get addressU(): number
Gets the addressing mode to be applied to the texture horizontally.
number
set addressU(v: number): void
Sets the addressing mode to be applied to the texture horizontally. Can be:
number
void
get addressV(): number
Gets the addressing mode to be applied to the texture vertically.
number
set addressV(v: number): void
Sets the addressing mode to be applied to the texture vertically. Can be:
number
void
get addressW(): number
Gets the addressing mode to be applied to the 3D texture depth.
number
set addressW(addressW: number): void
Sets the addressing mode to be applied to the 3D texture depth. Can be:
number
void
get anisotropy(): number
Gets the integer value specifying the level of anisotropy to apply to the texture.
number
set anisotropy(v: number): void
Sets the integer value specifying the level of anisotropy to apply to the texture ranging from 1 (no anisotropic filtering) to the GraphicsDevice property maxAnisotropy.
number
void
get array(): boolean
Returns true if this texture is a 2D texture array and false otherwise.
boolean
get arrayLength(): number
Returns the number of textures inside this texture if this is a 2D array texture or 0 otherwise.
number
get compareFunc(): number
Sets the comparison function when compareOnRead is enabled.
number
set compareFunc(v: number): void
Sets the comparison function when compareOnRead is enabled. Possible values:
number
void
get compareOnRead(): boolean
Gets whether you can get filtered results of comparison using texture() in your shader.
boolean
set compareOnRead(v: boolean): void
When enabled, and if texture format is PIXELFORMAT_DEPTH or PIXELFORMAT_DEPTHSTENCIL, hardware PCF is enabled for this texture, and you can get filtered results of comparison using texture() in your shader.
boolean
void
get cubemap(): boolean
Returns true if this texture is a cube map and false otherwise.
boolean
get depth(): number
The number of depth slices in a 3D texture.
number
get flipY(): boolean
Gets whether the texture should be flipped in the Y-direction.
boolean
set flipY(flipY: boolean): void
Sets whether the texture should be flipped in the Y-direction. Only affects textures with a source that is an image, canvas or video element. Does not affect cubemaps, compressed textures or textures set from raw pixel data. Defaults to true.
boolean
void
get format(): number
The pixel format of the texture. Can be:
number
get height(): number
The height of the texture in pixels.
number
get magFilter(): number
Gets the magnification filter to be applied to the texture.
number
set magFilter(v: number): void
Sets the magnification filter to be applied to the texture. Can be:
number
void
get minFilter(): number
Gets the minification filter to be applied to the texture.
number
set minFilter(v: number): void
Sets the minification filter to be applied to the texture. Can be:
number
void
get mipmaps(): boolean
Gets whether the texture should generate/upload mipmaps.
boolean
set mipmaps(v: boolean): void
Sets whether the texture should generate/upload mipmaps.
boolean
void
get numLevels(): number
Gets the number of mip levels.
number
get pot(): boolean
Returns true if all dimensions of the texture are power of two, and false otherwise.
boolean
get srgb(): boolean
Returns true if the texture is stored in an sRGB format, meaning it will be converted to linear space when sampled. Returns false if the texture is stored in a linear format.
boolean
get storage(): boolean
Defines if texture can be used as a storage texture by a compute shader.
boolean
get volume(): boolean
Returns true if this texture is a 3D volume and false otherwise.
boolean
get width(): number
The width of the texture in pixels.
number
destroy(): void
Frees resources associated with this texture.
void
getSource(mipLevel?: number): HTMLImageElement
Get the pixel data of the texture. If this is a cubemap then an array of 6 images will be returned otherwise a single image.
number = 0
A non-negative integer specifying the image level of detail. Defaults to 0, which represents the base image source. A level value of N, that is greater than 0, represents the image source for the Nth mipmap reduction level.
The source image of this texture. Can be null if source not assigned for specific image level.
lock(options?: {
face: number;
level: number;
mode: number;
}):
| Uint8Array<ArrayBufferLike>
| Uint16Array<ArrayBufferLike>
| Uint32Array<ArrayBufferLike>
| Float32Array<ArrayBufferLike>
Locks a miplevel of the texture, returning a typed array to be filled with pixel data.
Optional options object. Valid properties are as follows:
number
If the texture is a cubemap, this is the index of the face to lock.
number
The mip level to lock with 0 being the top level. Defaults to 0.
number
The lock mode. Can be:
| Uint8Array<ArrayBufferLike>
| Uint16Array<ArrayBufferLike>
| Uint32Array<ArrayBufferLike>
| Float32Array<ArrayBufferLike>
A typed array containing the pixel data of the locked mip level.
setSource(source:
| HTMLCanvasElement
| HTMLImageElement
| HTMLVideoElement
| HTMLCanvasElement[]
| HTMLImageElement[]
| HTMLVideoElement[], mipLevel?: number): void
Set the pixel data of the texture from a canvas, image, video DOM element. If the texture is a cubemap, the supplied source must be an array of 6 canvases, images or videos.
A canvas, image or video element, or an array of 6 canvas, image or video elements.
HTMLCanvasElement | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | HTMLImageElement | HTMLVideoElement
number = 0
A non-negative integer specifying the image level of detail. Defaults to 0, which represents the base image source. A level value of N, that is greater than 0, represents the image source for the Nth mipmap reduction level.
void
unlock(): void
Unlocks the currently locked mip level and uploads it to VRAM.
void
upload(): void
Forces a reupload of the textures pixel data to graphics memory. Ordinarily, this function is called by internally by Texture#setSource and Texture#unlock. However, it still needs to be called explicitly in the case where an HTMLVideoElement is set as the source of the texture. Normally, this is done once every frame before video textured geometry is rendered.
void