Overview
Apache Arrow utilities for luma.gl.
Arrow Rendering
These live examples exercise luma.gl's Arrow path, polygon, and text conversion and rendering
stack through temporary deck.gl integration layers. They demonstrate progressive RecordBatch
streaming, direct columnar inputs, constant and column styling, attribute rendering, and WebGPU
storage rendering.
API Reference
- Arrow Utilities
- Arrow Representations
- Arrow Table Conversion
- Supported Arrow Types
- deck.gl v10 API Directions
Apache Arrow Preliminaries
Apache Arrow has a rich type system that can represent a wide variety of binary data columns. A subset of these column types can be used directly as GPU vertex attribute data, meaning that such arrow columns can be uploaded efficiently to the GPU.
Apache Arrow supports primitive types like Float32, Uint32, and Uint8 that
describe the value stored in each row. It also supports fixed-length vectors of
these types with FixedSizeList. These scalar and fixed-length vector types map
directly to the memory layouts used by GPU vertex attributes.
Arrow also supports variable-length List columns. These are useful for data
such as polygons and paths, but they do not map directly to a single vertex
attribute without an additional conversion step. PathAttributeModel provides the
attribute-backed conversion for prepared Float32 XY, XYZ, and XYZM path coordinate
rows, expanding each logical path into segment instances while keeping row-level
style columns at the path boundary. PathStorageModel provides the WebGPU
storage-backed form: compute expands GPU-resident path values into compact indexed
segment records from copied list-offset metadata, render shaders fetch coordinates
from the original path-value storage buffer, and per-path style rows remain storage
bindings instead of being repeated for every generated segment. Use
ArrowPathRenderer.convertToGPUVectors() or convertArrowPathToGPUVectors() to turn raw
Float32 or Float64 Arrow path vectors into prepared path-attribute inputs. Use
ArrowPathRenderer.convertToGPUVectors(..., {model: 'storage'}) or
convertArrowPathStorageToGPUVectors()
when WebGPU storage rendering should convert Float64 path payloads into Float32
deltas on the GPU before rendering.
GPU Table Interop
@luma.gl/arrow is the adapter layer from Apache Arrow objects into the generic
types in @luma.gl/tables:
makeGPUDataFromArrowData()uploads one ArrowDatachunk into aGPUData.makeGPUVectorFromArrow()uploads one ArrowVectorinto aGPUVector.makeGPURecordBatchFromArrowRecordBatch()uploads one ArrowRecordBatch.makeGPUTableFromArrowTable()uploads one ArrowTablewhile preserving source record batch boundaries.makeGPUSplatDataFromArrow()prepares independently owned Gaussian splat batches for@luma.gl/splats, decoding GraphDECO encodings without clamping or quantizing spherical-harmonic DC radiance.makeGPUSplatDataFromArrowStream()progressively prepares Gaussian splat batches without concatenating Arrow tables or rebuilding previously uploaded GPU buffers. Both Gaussian conversion helpers accept structurally compatible Arrow objects from other installed Arrow versions, including those produced by loaders.gl 5 alpha.ArrowInputSchemacombines source resolution and conversion with finalGPUInputSchemavalidation for model-specific prepared inputs.
The resulting table schema is GPUSchema, and each vector has a
GPUVector.format memory-layout string such as float32x3, unorm8x4, or
vertex-list<float32x3>. Arrow DataType metadata may still be retained by
adapter/readback paths, but @luma.gl/tables itself does not depend on
apache-arrow.
See luma.gl for documentation.