DataTexture subclass that manages allocation and efficient updates of variable-sized portions.

Each portion represents a contiguous block of items within the texture's buffer. Portions can be allocated, updated, and freed dynamically. The class tracks dirty portions and uploads only the changed data to the GPU. Portions can also be moved during packing to eliminate fragmentation, with optional callbacks. Items can be individually addressed within each portion.

Hierarchy (View Summary)

Properties

buffer: any

CPU-side backing buffer used to populate this texture.

The concrete type depends on the implementation (e.g., Uint32Array, Float32Array, or a view over an ArrayBuffer). This buffer is uploaded to the GPU when updated.

bufferClass: any

The ArrayBufferView class used for the CPU-side buffer.

bytesPerTexel: number

Size in bytes of a single texel in the data texture.

debugging: boolean = true

Enables internal event emission for this data texture.

description: string = ""

Human-readable description of the data stored in this texture.

Intended for debugging UIs and diagnostics (e.g., displayed above inspectors). Subclasses or owners should populate this with a concise explanation of the layout and semantic meaning (e.g., “mesh matrices (Mat4, row-major), indexed by meshId”).

elementsPerItem: number

Number of individual elements (e.g., floats, uint32s) stored per logical item in this data texture.

elementsPerTexel: number

Number of individual elements (e.g., floats, uint32s) stored per texel in the data texture.

format: number

Texture format (e.g., gl.RGBA, gl.RGBA_INTEGER).

gl: WebGL2RenderingContext

The WebGL2 rendering context.

height: number

Texture height in texels.

internalFormat: number

Texture internal format (e.g., gl.RGBA8, gl.RGBA32UI, gl.RGBA32F).

itemSizeInBytes: number

Size in bytes of a single logical item stored in the data texture.

lastUploadTimeMS: number = 0

Duration (in milliseconds) of the last upload to GPU.

This value is 0 until the first upload occurs.

maxItems: number

Maximum number of logical items that can be stored in this texture.

The value of numItems never exceeds this limit.

onUpdated: EventEmitter<DataTexture, undefined> = ...

Emitted when the CPU-side buffer for this texture has changed and been uploaded to the GPU.

This event is intended for debugging tools and monitoring UIs; it is only emitted when debugging is enabled.

texelsPerItem: number

Number of texels occupied by a single logical item in the data texture.

texture: WebGLTexture

The underlying WebGL texture object.

This is the GPU resource that is bound and sampled/loaded by shaders.

type: number

Texture data type (e.g., gl.UNSIGNED_BYTE, gl.UNSIGNED_INT, gl.FLOAT).

width: number

Texture width in texels.

Accessors

Methods