InternalCPU-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.
The ArrayBufferView class used for the CPU-side buffer.
Size in bytes of a single texel in the data texture.
Enables internal event emission for this data texture.
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”).
Number of individual elements (e.g., floats, uint32s) stored per logical item in this data texture.
Number of individual elements (e.g., floats, uint32s) stored per texel in the data texture.
Texture format (e.g., gl.RGBA, gl.RGBA_INTEGER).
The WebGL2 rendering context.
Texture height in texels.
Texture internal format (e.g., gl.RGBA8, gl.RGBA32UI, gl.RGBA32F).
Size in bytes of a single logical item stored in the data texture.
Duration (in milliseconds) of the last upload to GPU.
This value is 0 until the first upload occurs.
Maximum number of logical items that can be stored in this texture.
The value of numItems never exceeds this limit.
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.
Number of texels occupied by a single logical item in the data texture.
InternaltextureThe underlying WebGL texture object.
This is the GPU resource that is bound and sampled/loaded by shaders.
Texture data type (e.g., gl.UNSIGNED_BYTE, gl.UNSIGNED_INT, gl.FLOAT).
Whether to use a CPU-side buffer for staging data before uploading to the GPU.
Texture width in texels.
Static ReadonlyitemCancels all pending uploads.
Checks if a portion of the given size can be allocated.
Number of items in the portion.
InternalFrees GPU resources associated with this data texture.
Gets the total capacity in bytes of the data texture.
Gets the item at the given index within its portion.
Retrieves all logical items currently stored in this texture.
An array of decoded items.
Allocates a portion of the given size and sets its data.
Data array (must be a multiple of elementsPerItem).
OptionalonMove: (newBase: number) => voidOptional callback invoked if the portion is moved during packing.
Portion handle, or null if allocation failed.
Gets a view of the buffer for the given portion handle.
Portion handle.
Gets the used capacity in bytes of the data texture.
ProtectednotifyInternalNotifies listeners that the data texture has been updated.
Replaces the data for a portion, resizing the portion if needed. If the new data is longer or shorter than the current portion, reallocates as needed. Updates the handle's base and size if the portion moves.
Portion handle to update (will be mutated if moved).
New data array (must be a multiple of elementsPerItem).
SDKResult with updated PortionHandle.
Uploads all dirty portions to the GPU as efficiently as possible.
Internal algorithm:
True if any uploads occurred, false otherwise.
Per-batch, per-line-segment cumulative model-space distance along the parent polyline.
For each line segment in a
LinesPrimitivegeometry, this texture holds the model-space distance from the polyline's start to the segment's first vertex, in geometry-local coordinates. The vertex shader uses it to compute a screen- space pixel offset that's added to the per-segmentalongPxbefore the pattern walk runs — that keeps the dash phase continuous across polyline joints rather than restarting at every segment.Allocated lazily per batch: a portion is reserved at geometry-upload time for each
LinesPrimitivegeometry, sized to the geometry's line count. Geometries that aren'tLinesPrimitive(triangles, points) reserve no portion; batches that contain none of them never allocate this texture at all.One
R32Ftexel per segment — recovered in the shader as a plain float, nouintBitsToFloatreinterpret needed.