Skip to main content

Visualization and compute, at GPU scale.

Move massive datasets through GPU-resident pipelines. Filter, aggregate, project, and render without unnecessary CPU round trips. luma.gl is a modular, TypeScript-first framework for data-intensive visualization, portable GPU programming, and high-quality interactive rendering.

Choose the level you need: typed columnar data, GPU-resident dataframes, graph and raster analytics, reusable compute operations, GPU command graphs, rendering primitives, composable visual effects, or retained three-dimensional scenes.

Massive data. GPU-native compute. Interactive visualization. WebGPU and WebGL2.

The framework, module by module

GPU-native computationCompute, tables, and ArrowConnect GPU-resident columns, reusable operations, command graphs, filtering, aggregation, and large-scale visualization.@luma.gl/gpgpu · @luma.gl/tables@luma.gl/arrow · experimental / privateExperimental GPU analyticsDataframes, graphs, and rastersQuery GPU-resident tables, discover graph communities, and analyze cached scientific or geospatial raster tiles without unnecessary readback.luDF · luGraph · LuRaster@luma.gl/experimental · privatePortable GPU foundationCore, WebGPU, and WebGLOne application-facing device API for buffers, textures, pipelines, commands, and explicit GPU resource ownership.@luma.gl/core · @luma.gl/webgpu · @luma.gl/webglRendering engineModels, geometry, and animationBuild with models, GPU geometry, picking, instancing, render loops, and reusable animation mixing.@luma.gl/engineShader programmingReusable shaders and modulesCompose WGSL and GLSL with typed shader modules, injection hooks, lighting, and high-precision visualization tools.@luma.gl/shadertoolsVisual effectsComposable image processingCombine bloom, ambient occlusion, reflections, indirect light, volumetrics, motion blur, and temporal antialiasing.@luma.gl/effectsExperimental retained scenesANARI / Scene APIDescribe cameras, geometry, lights, and renderers; explore glTF and experimental OpenUSD import in the ANARI Playground.@luma.gl/anari · experimental / privateANARI-inspired; not an ANARI-conformant implementation.Assets and materialsglTF and physically based shadingRender portable PBR assets, native glTF extensions, skeletal and morph animations, and independently animated GPU-instanced crowds.@luma.gl/gltfExperimental neural renderingStreaming Gaussian splatsRender progressively streamed captured scenes with view-dependent harmonics, semantic picking and filtering, and bounded tile residency.@luma.gl/splats · experimental / private

WebGPU logo by W3C, used under the Creative Commons Attribution 4.0 International license. Standards marks identify related technologies and do not imply endorsement, certification, or conformance.

How to read the feature matrices

StatusMeaning
AvailableImplemented in a published framework module, subject to documented device and browser requirements.
EvolvingImplemented in a published module, but integration, feature coverage, or the v10 API remains incomplete.
ExperimentalImplemented in a private package or work-in-progress source module that is not yet published independently.
OpportunityA useful extension or known limitation; do not interpret it as existing functionality.

WebGPU + WebGL2 means an application-facing path exists for both backends; exact shader, texture, or device-feature requirements can still differ. WebGPU identifies capabilities that require compute shaders, storage resources, or another WebGPU-specific implementation.

GPU-native data, compute, and visualization

GPU-resident tables and columnar memory

FeatureStatusBackendPackageDetails
Owned or borrowed GPU chunksEvolvingWebGPU + WebGL2@luma.gl/tablesEach GPUData object owns or borrows exactly one GPU buffer.
Typed GPU vectorsEvolvingWebGPU + WebGL2@luma.gl/tablesGPUVector preserves an ordered list of independent data chunks.
Strided and child viewsEvolvingWebGPU + WebGL2@luma.gl/tablesGPUDataView describes views and struct children without duplicating GPU storage.
GPU record batchesEvolvingWebGPU + WebGL2@luma.gl/tablesGPURecordBatch groups aligned named columns without erasing batch identity.
Chunk-preserving tablesEvolvingWebGPU + WebGL2@luma.gl/tablesGPUTable keeps streamed record batches instead of implicitly repacking them.
Constant valuesEvolvingWebGPU + WebGL2@luma.gl/tablesGPUConstant represents scalar or row-level constant inputs.
Explicit vector formatsEvolvingWebGPU + WebGL2@luma.gl/tablesGPUVectorFormat describes stored bytes independently of shader value types.
GPU schemasEvolvingWebGPU + WebGL2@luma.gl/tablesGPUSchema and input schemas describe column names, formats, and bindings.
Shader binding synthesisEvolvingWebGPU + WebGL2@luma.gl/tablesTable-aware helpers connect compatible columns to vertex attributes or storage.
Buffer budget planningEvolvingWebGPU + WebGL2@luma.gl/tablesGPUTableBufferPlanner bounds bindings and respects available device limits.
Explicit packingEvolvingWebGPU + WebGL2@luma.gl/tablesPacking is an explicit operation, never a hidden side effect of streaming.
Ownership-aware destructionEvolvingWebGPU + WebGL2@luma.gl/tablesAggregate destruction does not release buffers borrowed from their original owners.
Table-backed renderingEvolvingWebGPU + WebGL2@luma.gl/tablesGPUTableModel and table geometry connect columnar data directly to drawing.
Table transform feedbackEvolvingWebGL2@luma.gl/tablesApply supported table transforms through WebGL transform feedback.
Table compute dispatchEvolvingWebGPU@luma.gl/tablesCompose typed GPU table inputs and outputs through WebGPU compute.

See GPU table structure and lifecycle.

Apache Arrow, geometry, and text

FeatureStatusBackendPackageDetails
Apache Arrow uploadsExperimentalWebGPU + WebGL2@luma.gl/arrowConvert supported Arrow tables, batches, vectors, and numeric columns into GPU data.
Original batch boundariesExperimentalWebGPU + WebGL2@luma.gl/arrowPreserve source chunks and batch ownership instead of flattening streamed input.
Renderer-independent Arrow analyticsExperimentalWebGPU@luma.gl/arrowUse makeGPUAnalyticsTableFromArrowTable() to create storage-backed analytical tables without renderer-specific shader metadata.
Arrow analytics validity masksExperimentalWebGPU@luma.gl/arrowPreserve compatible Arrow nullability as explicit GPU-resident validity data and independent source batches.
Dictionary-backed analytics categoriesExperimentalWebGPU@luma.gl/arrowPreserve CPU-owned UTF-8 dictionary labels and ordering metadata with signed or unsigned 32-bit GPU category indices.
Fixed-size vector columnsExperimentalWebGPU + WebGL2@luma.gl/arrowAdapt supported fixed-size lists into typed GPU vectors and shader bindings.
Variable-length geometryExperimentalWebGPU + WebGL2@luma.gl/arrowPreserve offsets for paths, polygons, and other row-oriented variable-length data.
Normalized and HDR colorsExperimentalWebGPU + WebGL2@luma.gl/arrowAdapt normalized colors and supported floating-point color inputs without promising universal zero-copy uploads.
Temporal and matrix metadataExperimentalWebGPU + WebGL2@luma.gl/arrowCarry supported timestamps, time origins, and matrix-oriented source metadata.
Arrow path renderingExperimentalWebGPU + WebGL2@luma.gl/arrowDraw Arrow-backed paths with portable attributes or WebGPU storage strategies.
Arrow polygon renderingExperimentalWebGPU + WebGL2@luma.gl/arrowRender supported polygon rows and preserve source-row identity for interaction.
Arrow text renderingExperimentalWebGPU + WebGL2@luma.gl/arrowRender supported string and dictionary-encoded label columns.
Source-row pickingExperimentalWebGPU + WebGL2@luma.gl/arrowMap visible geometry and labels back to their original Arrow rows.
GeoArrow tessellationExperimentalWebGPU + WebGL2@math.gl/geoarrowHandle supported mixed geometry, polygon holes, coordinate layouts, and worker-assisted tessellation.
deck.gl Arrow layersExperimentalWebGPU + WebGL2@deck.gl-community/arrow-layersConnect Arrow-backed paths, polygons, and text to compatible visualization layers.
Text and glyph atlasesExperimentalWebGPU + WebGL2@luma.gl/textRender bitmap, SDF, or MSDF glyphs with supported Unicode layout, kerning, and clipping.
Dictionary-compressed labelsExperimentalWebGPU@luma.gl/textReuse repeated label values through WebGPU storage-based text strategies.
Animated path visualizationEvolvingWebGPU@luma.gl/tablesRender GPU-resident trips and variable-length paths through storage-backed models.

See supported Arrow types and representations.

Portable data operations

FeatureStatusBackendPackageDetails
Portable data evaluationAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuEvaluate supported expressions against the most appropriate available execution backend.
Lazy vector evaluationAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuBuild deferred vector expressions and resolve them when values are needed.
Arithmetic operationsAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuApply addition, subtraction, multiplication, division, powers, and other supported operations.
Elementary mathAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuEvaluate supported sine, cosine, tangent, exponential, logarithm, and square-root functions.
Extent and vector reductionsAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuCalculate supported extents, dot products, lengths, and equality checks.
Gather and selectionAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuGather indexed values, select elements, and generate index sequences.
Segmented operationsAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuApply supported segmented mappings without losing source-vector structure.
Swizzle and interleaveAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuReorder vector components and combine compatible streams.
Result cachingAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuReuse evaluated values and clean up evaluator-owned temporary resources.
Dynamic backend loadingAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuSelect compatible implementations without requiring every execution adapter up front.
Custom operation handlersAvailableCPU + WebGPU + WebGL2@luma.gl/gpgpuExtend evaluator behavior through explicit backend-specific operation handlers.

See GPU operations and custom evaluation.

GPU command graphs and execution

FeatureStatusBackendPackageDetails
GPU command-graph compilationExperimentalWebGPU@luma.gl/experimentalCompile explicit compute, rendering, and copy workflows into reusable encodings.
Resource dependency trackingExperimentalWebGPU@luma.gl/experimentalOrder graph nodes around their declared resources and access relationships.
Caller-owned resourcesExperimentalWebGPU@luma.gl/experimentalImport external buffers, textures, and data views without transferring ownership.
Transient buffer reuseExperimentalWebGPU@luma.gl/experimentalAlias compatible graph-owned scratch allocations across nonoverlapping lifetimes.
Transient texture reuseExperimentalWebGPU@luma.gl/experimentalReuse compatible intermediate textures inside the compiled graph.
Typed table integrationExperimentalWebGPU@luma.gl/experimentalImport GPU vectors and chunk-aware data views into command-graph workflows.
Compute-to-render compositionExperimentalWebGPU@luma.gl/experimentalConnect compute passes to rendering without materializing a CPU-side dataset.
Indirect draw commandsExperimentalWebGPU@luma.gl/experimentalGenerate caller-visible draw and indexed-draw arguments on the GPU.
Indirect compute dispatchExperimentalWebGPU@luma.gl/experimentalProduce bounded dispatch arguments for supported graph-driven workloads.
Explicit submissionExperimentalWebGPU@luma.gl/experimentalReturn encoded GPU work without hidden eager submissions.
Render targets and resolveExperimentalWebGPU@luma.gl/experimentalDescribe render attachments and supported multisample resolve targets.
Execution inspectionExperimentalWebGPU@luma.gl/experimentalInspect graph nodes, resource lifetimes, CPU counters, and available GPU timestamps.
Small-result readbackExperimentalWebGPU@luma.gl/experimentalReturn bounded interaction results or aggregates rather than copying every source row.

See GPU command graphs.

Parallel algorithms and GPU-native queries

FeatureStatusBackendPackageDetails
Prefix scanExperimentalWebGPU@luma.gl/experimentalPerform inclusive, exclusive, and supported segmented prefix operations.
Stable compactionExperimentalWebGPU@luma.gl/experimentalPreserve original row order while removing records outside the current selection.
Indexed range generationExperimentalWebGPU@luma.gl/experimentalBuild bounded index ranges for compatible visibility and selection workflows.
Chunked indexed scatterExperimentalWebGPU@luma.gl/experimentalGPUChunkedIndexedScatter routes selected source identifiers into bounded destination chunks and publishes GPU-resident counts, offsets, and indirect dispatches.
Boolean masksExperimentalWebGPU@luma.gl/experimentalCombine selection masks using supported boolean and difference operations.
GPU depth and key sortingExperimentalWebGPU@luma.gl/experimentalSort supported unsigned keys and values through bitonic or radix implementations.
Chunk-preserving batch sortExperimentalWebGPU@luma.gl/experimentalSort source batches without silently merging independently owned buffers.
Minimum and maximum reductionExperimentalWebGPU@luma.gl/experimentalCompute supported sums, extents, minima, and maxima on the GPU.
Uniform histogramsExperimentalWebGPU@luma.gl/experimentalBin supported numeric inputs into configurable uniform histogram buckets.
Irregular-edge histogramsExperimentalWebGPU@luma.gl/experimentalEvaluate custom bin edges with supported GPU or literal edge buffers.
Grouped aggregatesExperimentalWebGPU@luma.gl/experimentalCalculate supported group count, sum, minimum, maximum, and mean values.
Spatial grid binningExperimentalWebGPU@luma.gl/experimentalAssign compatible rows to bounded two-dimensional grid cells.
Spatial grid indexesExperimentalWebGPU@luma.gl/experimentalIndex supported two-dimensional or three-dimensional points for spatial queries.
Grid aggregatesExperimentalWebGPU@luma.gl/experimentalProduce supported spatial cell sums, minima, maxima, and means.
Hash indexesExperimentalWebGPU@luma.gl/experimentalBuild and query supported bounded unsigned-key hash indexes.
Hash joinsExperimentalWebGPU@luma.gl/experimentalExecute capacity-bounded sparse inner joins for supported unsigned keys.
Batch-preserving joinsExperimentalWebGPU@luma.gl/experimentalPreserve independent left-side batch capacities and expose bounded overflow.
Spatial bounds queriesExperimentalWebGPU@luma.gl/experimentalQuery compatible point, radius, and bounds relationships in GPU spatial indexes.
Bounding-volume hierarchiesExperimentalWebGPU@luma.gl/experimentalBuild or refit fixed-topology hierarchies for supported spatial queries and object-level ray traversal.
Graph traversalExperimentalWebGPU@luma.gl/experimentalTraverse supported incoming, outgoing, or bidirectional hierarchical relationships.
Hierarchy layoutExperimentalWebGPU@luma.gl/experimentalDerive stable hierarchical layout and ancestor-projection data.
Frustum visibilityExperimentalWebGPU@luma.gl/experimentalCull compatible GPU-resident scene records against the current viewing volume.
GPU scene draw generationExperimentalWebGPU@luma.gl/experimentalGroup visible scene resources and generate bounded indirect rendering commands.
Async picking readbackExperimentalWebGPU@luma.gl/experimentalResolve supported selection and picking results through an asynchronous readback ring.
Two-dimensional FFTExperimentalWebGPU@luma.gl/experimentalTransform bounded complex fields for spectral simulation and related data workflows.

See GPU primitive documentation.

GPU dataframe analytics

FeatureStatusBackendPackageDetails
GPU-resident dataframesExperimentalWebGPU@luma.gl/experimental/ludfLuDataFrame wraps typed GPU tables without taking implicit ownership of borrowed source buffers.
Immutable query plansExperimentalWebGPU@luma.gl/experimental/ludfBuild reusable filter, projection, aggregation, histogram, and ordering plans without eagerly dispatching GPU work.
Chunk-preserving source tablesExperimentalWebGPU@luma.gl/experimental/ludfRetain source record-batch boundaries, row identities, ownership, and compatible dictionary metadata.
Typed column expressionsExperimentalWebGPU@luma.gl/experimental/ludfCompose supported numeric, comparison, boolean, literal, and parameter expressions over named columns.
Reusable query parametersExperimentalWebGPU@luma.gl/experimental/ludfRe-encode compatible parameterized filters and derived computations without rebuilding the source dataframe.
Null-aware filteringExperimentalWebGPU@luma.gl/experimental/ludfApply filter() predicates with explicit validity masks and supported null checks.
Column projectionExperimentalWebGPU@luma.gl/experimental/ludfUse select() to project ordered source columns without silently copying or repacking their GPU buffers.
Nullable derived columnsExperimentalWebGPU@luma.gl/experimental/ludfUse withColumn() to evaluate compatible GPU-resident arithmetic while propagating source validity.
Dense grouped aggregationExperimentalWebGPU@luma.gl/experimental/ludfUse groupBy() with dense unsigned categories and dictionary or explicit cardinality; aggregate compatible floating-point values.
Global dataframe reductionsExperimentalWebGPU@luma.gl/experimental/ludfUse aggregate() for non-nullable row counts and validity-aware sums, extrema, and means.
Null-aware dataframe histogramsExperimentalWebGPU@luma.gl/experimental/ludfUse histogram() with compatible numeric columns, explicit domains, irregular edges, and source validity.
Batch-preserving dataframe inner joinsExperimentalWebGPU@luma.gl/experimental/ludfUse innerJoin() with unique-right unsigned keys, stable source-row identifiers, preserved batches, and explicit bounded overflow.
Source-aligned dataframe lookupsExperimentalWebGPU@luma.gl/experimental/ludfUse lookup() to publish compatible right-row identifiers and match masks without compacting or repacking left rows.
Stable dataframe sortingExperimentalWebGPU@luma.gl/experimental/ludfUse sortBy() independently within each source batch with explicit numeric ordering and null/NaN placement.
Per-batch top-K selectionExperimentalWebGPU@luma.gl/experimental/ludfUse topK() to retain a bounded number of stably ordered rows per source batch without flattening independent inputs.
Graph-compiled query executionExperimentalWebGPU@luma.gl/experimental/ludfCompile compatible dataframe plans into reusable GPUCommandGraph work while preserving explicit command submission.

The @luma.gl/experimental/ludf entry point is private and experimental; its graph-native operations are implemented, but non-unique, outer, or multi-key joins, temporal windows, and cross-batch global ordering remain opportunities. See GPU command graphs and reusable primitives.

GPU graph analytics and layout

FeatureStatusBackendPackageDetails
GPU-resident relationship graphsExperimentalWebGPU@luma.gl/experimental/lugraphLuGraph borrows typed source and target columns without materializing a JavaScript edge list.
Chunk-preserving graph inputsExperimentalWebGPU@luma.gl/experimental/lugraphPreserve independently owned source batches and caller-controlled graph resource lifetimes.
Compressed graph adjacencyExperimentalWebGPU@luma.gl/experimental/lugraphBuild reusable forward and optional reverse compressed sparse row (CSR) adjacency for supported graph operations.
Directional vertex degreeExperimentalWebGPU@luma.gl/experimental/lugraphCompute supported incoming or outgoing degree values directly into GPU result columns.
Structural graph core numbersExperimentalWebGPU@luma.gl/experimental/lugraphFind bounded simple weak-graph k-core values, convergence, and maximum degeneracy without counting loops or duplicate neighbors.
Breadth-first graph searchExperimentalWebGPU@luma.gl/experimental/lugraphTraverse bounded unweighted neighborhoods and generate deterministic predecessor or selection results.
Weighted single-source shortest pathsExperimentalWebGPU@luma.gl/experimental/lugraphFind least-cost routes over nonnegative single-precision edge weights with bounded relaxation and deterministic predecessors.
Weakly connected componentsExperimentalWebGPU@luma.gl/experimental/lugraphLabel supported connected groups within an explicit iteration budget and expose convergence information.
Deterministic graph communitiesExperimentalWebGPU@luma.gl/experimental/lugraphLuGraphLabelPropagation assigns communities through bounded unweighted majority votes and deterministic label tie-breaking.
Weighted community modularityExperimentalWebGPU@luma.gl/experimental/lugraphScore existing directed or undirected community partitions, preserving original edge weights and multiplicity without claiming Louvain optimization.
Local clustering coefficientsExperimentalWebGPU@luma.gl/experimental/lugraphMeasure exact weak-neighborhood closure with distinct directed links or optional undirected triangle counts.
GPU PageRankExperimentalWebGPU@luma.gl/experimental/lugraphRank vertices using iterative GPU execution with supported dangling-node redistribution.
Six Graphalytics workload familiesExperimentalWebGPU@luma.gl/experimental/lugraphImplement the Graph Data Council's six LDBC Graphalytics algorithms without claiming official validation, certification, or published benchmark results.
Exact force-directed layoutExperimentalWebGPU@luma.gl/experimental/lugraphGenerate directly renderable graph positions through supported pairwise attraction and repulsion.
Spatially accelerated layoutExperimentalWebGPU@luma.gl/experimental/lugraphApproximate supported distant forces through a flat GPU spatial grid; this is not hierarchical Barnes-Hut.
Interactive graph explorationExperimentalWebGPU@luma.gl/experimental/lugraphCoordinate layout, neighborhood highlighting, GPU picking, dragging, and pinned graph vertices.
deck.gl-native graph analyticsExperimentalWebGPU@deck.gl-community/arrow-layersShare supported GPU graph analytics and layout with deck.gl layers while preserving source batches and deck.gl-owned command submission.
CPU and GPU graph benchmarksExperimentalWebGPU@luma.gl/experimental/lugraphCompare nine bounded reference workloads while separately reporting encoding, completion, setup, and accuracy costs.

Read the GPU-resident graph analytics reference, the interactive luGraph explorer, or the deck.gl graph explorer.

The Graph Data Council (GDC), formerly the Linked Data Benchmark Council, maintains the LDBC Graphalytics benchmark. Its formal reference datasets, correctness outputs, driver, and competition rules are separate from luGraph's local demonstrations. Structural core numbers and modularity scoring go beyond its six standardized workload families.

GPU raster and satellite analysis

FeatureStatusBackendPackageDetails
GPU-resident raster bandsExperimentalWebGPU@luma.gl/experimental/lurasterGPURaster describes compatible raster dimensions, bands, metadata, coordinate systems, and ownership.
Application-owned raster tile sourcesExperimentalWebGPU@luma.gl/experimental/lurasterValidate caller-owned raster source, transport, decoding, and submission contracts before optional framework-managed upload and caching.
Source-provided raster overviewsExperimentalWebGPU@luma.gl/experimental/lurasterSelect compatible source windows, source-provided overview levels, coordinate metadata, and cancellable tile requests.
Bounded raster tile residencyExperimentalWebGPU@luma.gl/experimental/lurasterGPURasterTileCache controls independently bounded decoded CPU tiles, uploaded GPU buffers, and compatible compiled graphs.
Deterministic raster tile evictionExperimentalWebGPU@luma.gl/experimental/lurasterReuse cache hits and evict eligible unpinned raster tiles and graphs within explicit byte and entry-count budgets.
Cancellation-safe raster tile requestsExperimentalWebGPU@luma.gl/experimental/lurasterDeduplicate compatible in-flight source requests without canceling other waiting callers.
Fence-protected raster tile leasesExperimentalWebGPU@luma.gl/experimental/lurasterPin raster tiles and reusable graphs until an application-owned post-submission completion fence resolves.
Compiled raster graph reuseExperimentalWebGPU@luma.gl/experimental/lurasterReuse shape-compatible compiled analysis graphs while rebinding the current tile's borrowed GPU buffers.
Seam-safe cross-tile raster halosExperimentalWebGPU@luma.gl/experimental/lurasterAssemble real neighboring samples on the GPU, preserve cumulative receptive fields, and publish each half-open tile core exactly once.
Nodata-aware analytical overviewsExperimentalWebGPU@luma.gl/experimental/lurasterGenerate calibrated, valid-sample-weighted floating means with explicit sums, counts, masks, and odd-edge coverage.
Exact categorical raster overviewsExperimentalWebGPU@luma.gl/experimental/lurasterPreserve native signed and unsigned class identifiers with deterministic nearest or valid-label mode policies.
Dataset-wide tiled raster statisticsExperimentalWebGPU@luma.gl/experimental/lurasterMerge valid tile counts, calibrated sums, and extrema into explicitly initialized GPU-resident global accumulators.
Stable-domain global histogram replayExperimentalWebGPU@luma.gl/experimental/lurasterReplay every owned tile core against the finalized dataset-wide value domain before merging compatible bins.
GPU global percentiles and thresholdsExperimentalWebGPU@luma.gl/experimental/lurasterDerive histogram-estimated global percentiles and consistent Otsu thresholds without downloading raster samples.
Overflow-aware global raster reductionsExperimentalWebGPU@luma.gl/experimental/lurasterSaturate global counts and bins, expose sticky overflow flags, and invalidate unsafe percentile results.
Buffer and texture conversionExperimentalWebGPU@luma.gl/experimental/lurasterConvert supported raster bands between GPU buffers and textures without downloading source pixels.
Calibrated raster band mathExperimentalWebGPU@luma.gl/experimental/lurasterCombine supported numeric bands while applying explicit scale, offset, validity, and nodata contracts.
GPU vegetation indexExperimentalWebGPU@luma.gl/experimental/lurasterCompute normalized-difference vegetation index (NDVI) from compatible red and near-infrared bands.
Nodata-aware raster statisticsExperimentalWebGPU@luma.gl/experimental/lurasterCalculate supported valid-pixel counts, sums, means, extrema, and scalar summaries.
Raster histogramsExperimentalWebGPU@luma.gl/experimental/lurasterDerive valid-pixel distributions with supported explicit or GPU-inferred histogram domains.
Automatic Otsu thresholdsExperimentalWebGPU@luma.gl/experimental/lurasterSelect supported image thresholds from GPU-resident histogram distributions.
Raster threshold classificationExperimentalWebGPU@luma.gl/experimental/lurasterClassify compatible pixel values against explicit thresholds without CPU-side source traversal.
Raster contrast adjustmentExperimentalWebGPU@luma.gl/experimental/lurasterApply supported contrast remapping while preserving raster validity and domain semantics.
Neighborhood convolutionExperimentalWebGPU@luma.gl/experimental/lurasterEvaluate bounded kernels with supported raster borders and nodata-aware neighborhood policies.
Gaussian and box smoothingExperimentalWebGPU@luma.gl/experimental/lurasterSmooth compatible raster bands without implicitly filling invalid neighboring pixels.
Sobel and Scharr gradientsExperimentalWebGPU@luma.gl/experimental/lurasterEvaluate supported directional derivatives and edge responses from GPU-resident raster neighborhoods.
Gradient magnitude and LaplacianExperimentalWebGPU@luma.gl/experimental/lurasterDerive gradient magnitude and compatible second-order edge information from valid raster pixels.
Binary and grayscale morphologyExperimentalWebGPU@luma.gl/experimental/lurasterProcess supported binary masks or grayscale raster bands with explicit structuring elements, borders, and nodata policies.
Raster dilation and erosionExperimentalWebGPU@luma.gl/experimental/lurasterExpand or contract compatible raster features through bounded square or Manhattan-diamond neighborhoods.
Raster opening and closingExperimentalWebGPU@luma.gl/experimental/lurasterCompose supported erosion/dilation sequences to remove small features or close compatible raster gaps.
Deterministic raster connected componentsExperimentalWebGPU@luma.gl/experimental/lurasterAssign sparse minimum-root foreground labels with explicit four/eight-neighbor connectivity while preserving valid background and nodata barriers.
Convergence-gated raster component labelsExperimentalWebGPU@luma.gl/experimental/lurasterPublish GPU convergence and optional actual iteration counts; clear all labels and validity when a bounded graph cannot prove convergence.
Dense raster component identifiersExperimentalWebGPU@luma.gl/experimental/lurasterCompact converged sparse representatives into deterministic contiguous row-major region IDs without losing valid background.
Bounded raster region counts and overflowExperimentalWebGPU@luma.gl/experimental/lurasterPublish exact required and capacity-clamped component populations, invalidate truncated foreground, and expose per-execution overflow.
Marching-squares contoursExperimentalWebGPU@luma.gl/experimental/lurasterClassify bounded raster cells and generate supported vector contour segments directly on the GPU.
Indirect contour overlaysExperimentalWebGPU@luma.gl/experimental/lurasterDraw GPU-generated contour geometry without downloading or rebuilding every segment on the CPU.
Device-aware raster dispatchExperimentalWebGPU@luma.gl/experimental/lurasterPlan bounded dispatch stripes against the selected device's actual compute limits.

Start with the LuRaster concepts and execution guide, read the LuRaster API reference, or experiment with the Satellite Raster Lab.

Applied visualization, geospatial, and interaction

FeatureStatusBackendPackageDetails
Linked crossfilteringExperimentalWebGPU@luma.gl/experimental/luxfilterMaintain linked scalar ranges and two-dimensional brushes over GPU-resident data.
Self-excluding histogramsExperimentalWebGPU@luma.gl/experimental/luxfilterRecalculate brush histograms without counting the active dimension against itself.
Stable selected row IDsExperimentalWebGPU@luma.gl/experimental/luxfilterPreserve row identity for linked charts and renderable selection masks.
High-precision projectionExperimentalWebGPU@luma.gl/experimental/luprojBuild local error-bounded projection patches from compatible CPU projection providers.
Binary64 coordinate transportExperimentalWebGPU@luma.gl/experimental/luprojTransport 64-bit source coordinates as integer words and subtract a local origin.
Web Mercator supportExperimentalWebGPU@luma.gl/experimental/luprojProject supported geospatial coordinates while retaining local precision.
Geographic distanceExperimentalWebGPU@luma.gl/experimental/geospatialEvaluate supported Haversine, point, segment, and linestring distances.
Polygon containmentExperimentalWebGPU@luma.gl/experimental/geospatialTest supported polygon boundary and containment relationships.
Hierarchical trace viewsExperimentalWebGPU@luma.gl/experimental/lutraceFilter, project, and render supported process, thread, and dependency hierarchies.
GPU-driven timeline pickingExperimentalWebGPU@luma.gl/experimental/lutraceLink trace visibility, indirect timeline draws, and GPU-aware picking.
Chunk-aware trace dependenciesExperimentalWebGPU@luma.gl/experimental/lutraceRoute visible dependency endpoints across supported independent source-span batches.
Bounded dataset residencyExperimentalWebGPUApplication-owned exampleStream large source corpora with an application-managed bounded GPU-resident working set.
Portable path and polygon modelsEvolvingWebGPU + WebGL2@luma.gl/tablesRender table-backed paths and polygons using compatible attribute-driven strategies.
Storage-backed path modelsEvolvingWebGPU@luma.gl/tablesProcess compatible path, polygon, and trip columns directly through storage buffers.

Try Million-Row Crossfilter, Billion-Point Spatial Atlas, GPU data analysis, and GPU sorting. Billion-scale figures describe source corpora; the GPU-resident working set remains bounded.

Portable GPU foundation and rendering

Devices, resources, and presentation

FeatureStatusBackendPackageDetails
Unified GPU device APIAvailableWebGPU + WebGL2@luma.gl/coreAccess adapters, devices, resources, commands, features, and limits through one model.
Backend adaptersAvailableWebGPU + WebGL2@luma.gl/webgpu and @luma.gl/webglSelect the native WebGPU adapter or the WebGL2 compatibility adapter.
Feature and limit discoveryAvailableWebGPU + WebGL2@luma.gl/coreInspect device capabilities before enabling optional functionality.
GPU buffersAvailableWebGPU + WebGL2@luma.gl/coreCreate vertex, index, uniform, and compatible readback buffers.
GPU storage buffersAvailableWebGPU@luma.gl/webgpuBind supported read-only or writable storage buffers to WebGPU shaders.
Typed texture resourcesAvailableWebGPU + WebGL2@luma.gl/coreAllocate compatible 2D, array, cubemap, and three-dimensional texture resources.
Texture views and samplersAvailableWebGPU + WebGL2@luma.gl/coreDescribe texture views, filtering, wrapping, and supported anisotropic sampling.
Compressed texturesEvolvingWebGPU + WebGL2@luma.gl/coreUse BC, ETC2, or ASTC formats when supported by the selected device.
Native external texturesAvailableWebGPU@luma.gl/webgpuBind compatible browser-owned external image resources without a WebGL fallback.
Video texture uploadsAvailableWebGPU + WebGL2@luma.gl/engineUpdate compatible GPU textures from supported browser video sources.
Framebuffers and attachmentsAvailableWebGPU + WebGL2@luma.gl/coreManage color, depth, stencil, and supported multiple-render-target attachments.
Render pipelinesAvailableWebGPU + WebGL2@luma.gl/coreConfigure shader bindings, vertex layouts, depth, stencil, and blend state.
Compute shaders and passesAvailableWebGPU@luma.gl/webgpuEncode compute pipelines, dispatches, and WebGPU storage-resource workflows.
Indexed and indirect drawsEvolvingWebGPU + WebGL2@luma.gl/coreIndexed drawing is portable; GPU-generated indirect drawing requires WebGPU.
Render bundlesEvolvingWebGPU@luma.gl/webgpuReuse compatible recorded render commands.
Transform feedbackAvailableWebGL2@luma.gl/webglSupport established WebGL transform-feedback workflows.
Occlusion and timing queriesEvolvingWebGPU + WebGL2@luma.gl/coreUse supported query types only when the selected backend advertises them.
Multisample resolveAvailableWebGPU@luma.gl/webgpuResolve supported multisampled render attachments.
Canvas sizing and pixel ratioAvailableWebGPU + WebGL2@luma.gl/coreManage browser canvas configuration, resize, and high-DPI presentation.
Extended color and HDREvolvingWebGPU@luma.gl/webgpuPresent compatible floating-point or display-P3 output when browser and display support it.

Engine, geometry, and interaction

FeatureStatusBackendPackageDetails
Model and material lifecycleAvailableWebGPU + WebGL2@luma.gl/engineCompose shader inputs, geometry, materials, pipelines, and draw calls.
CPU and GPU geometryAvailableWebGPU + WebGL2@luma.gl/engineConnect source geometry to explicit GPU buffers and shader-facing layouts.
Built-in geometry primitivesAvailableWebGPU + WebGL2@luma.gl/engineGenerate supported cubes, planes, spheres, cylinders, cones, and related meshes.
Indexed and instanced renderingAvailableWebGPU + WebGL2@luma.gl/engineReuse geometry across indexed meshes and compatible instance batches.
Scenegraph transformsAvailableWebGPU + WebGL2@luma.gl/engineOrganize supported scene nodes, groups, transforms, and bounding information.
Dynamic buffers and texturesAvailableWebGPU + WebGL2@luma.gl/engineResize and update managed application resources as data changes.
Integer-index pickingEvolvingWebGPU + WebGL2@luma.gl/engineUse exact integer picking when the selected backend supports integer render targets.
Color picking fallbackAvailableWebGPU + WebGL2@luma.gl/engineEncode supported object and batch identifiers into compatible color targets.
Orbit camera controlsAvailableWebGPU + WebGL2@luma.gl/engineOrbit, zoom, constrain, and automatically rotate an interactive scene camera.
Animation loop and timelineAvailableWebGPU + WebGL2@luma.gl/engineCoordinate rendering, frame state, keyframes, and application updates.
Animation interpolationAvailableWebGPU + WebGL2@luma.gl/engineEvaluate step, linear, cubic-spline, and supported quaternion interpolation.
Animation clip mixingAvailableWebGPU + WebGL2@luma.gl/enginePlay, pause, scrub, loop, weight, and crossfade compatible animation actions.
Fullscreen drawingAvailableWebGPU + WebGL2@luma.gl/engineBuild visualization overlays and fullscreen passes from reusable clip-space geometry.

Shader assembly and numerical precision

FeatureStatusBackendPackageDetails
WGSL shader assemblyAvailableWebGPU@luma.gl/shadertoolsCompose supported WebGPU shader source and typed application bindings.
GLSL shader assemblyAvailableWebGL2@luma.gl/shadertoolsCompose supported WebGL vertex and fragment shaders.
Typed shader modulesAvailableWebGPU + WebGL2@luma.gl/shadertoolsReuse shader modules with explicit source, dependencies, and uniform types.
Shader hooks and injectionsAvailableWebGPU + WebGL2@luma.gl/shadertoolsExtend supported applications through composable shader hooks and source injections.
Shader pluginsAvailableWebGPU + WebGL2@luma.gl/shadertoolsOrder reusable shader plugins and validate supported varying relationships.
Uniform and binding reflectionAvailableWebGPU + WebGL2@luma.gl/shadertoolsCoordinate application uniforms, supported bindings, and shader layouts.
Color and picking modulesAvailableWebGPU + WebGL2@luma.gl/shadertoolsReuse compatible color transforms, clipping, filtering, and picking logic.
Lighting and PBR shadersAvailableWebGPU + WebGL2@luma.gl/shadertoolsCompose supported Lambert, Phong, physically based shading, and image-based lighting.
Joint-driven skinningAvailableWebGPU + WebGL2@luma.gl/shadertoolsSkin compatible glTF and retained-scene geometry using shared WGSL and GLSL joint-palette modules.
Geometric specular antialiasingAvailableWebGPU + WebGL2@luma.gl/shadertoolsStabilize supported base and clearcoat highlights through derivative-based geometric filtering.
Split-float high precisionEvolvingWebGPU + WebGL2@luma.gl/shadertoolsEmulate selected higher-precision arithmetic without claiming native WGSL 64-bit floats.
GLSL fp64 transcendentalsAvailableWebGL2@luma.gl/shadertoolsUse the supported GLSL high-precision transcendental library.
64-bit cell identifiersEvolvingWebGPU@luma.gl/shadertoolsRepresent supported geospatial cell identifiers as paired unsigned words.

Lighting, visual effects, and transparency

FeatureStatusBackendPackageDetails
Ordered image-effect pipelinesAvailableWebGPU + WebGL2@luma.gl/effectsChain compatible shader passes and explicitly named intermediate targets.
HDR bloomAvailableWebGPU + WebGL2@luma.gl/effectsApply supported floating-point highlight extraction and multiresolution blur.
Photographic lens effectsAvailableWebGPU + WebGL2@luma.gl/effectsAdd optional chromatic ghosts, radial halos, aperture starbursts, and compatible lens-dirt masks.
Fused WebGPU bloomAvailableWebGPU@luma.gl/effectsFuse compatible bloom downsampling and filtering work while retaining a portable render-pass fallback.
Fourier aperture convolutionExperimentalWebGPU@luma.gl/experimentalConvolve compatible highlight fields against a supplied aperture through independent RGB GPU Fourier transforms.
Color and image filtersAvailableWebGPU + WebGL2@luma.gl/effectsAdjust brightness, contrast, hue, saturation, noise, sepia, and vignette.
Depth-of-field passesAvailableWebGPU + WebGL2@luma.gl/effectsApply supported depth-aware focus and image-space blur.
Temporal antialiasingAvailableWebGPU@luma.gl/effectsReproject compatible camera, color, and depth history with jitter and neighborhood-clamped accumulation.
Motion blurAvailableWebGPU@luma.gl/effectsUse compatible velocity and frame data for image-space motion blur.
Screen-space ambient occlusionAvailableWebGPU@luma.gl/effectsCompute supported SSAO and GTAO visibility from scene attachments.
Screen-space reflectionsAvailableWebGPU@luma.gl/effectsTrace and stabilize supported SSR reflections using depth and frame history.
Screen-space indirect lightingAvailableWebGPU@luma.gl/effectsApproximate supported diffuse bounce lighting with temporally filtered SSGI.
Adaptive exposureAvailableWebGPU@luma.gl/effectsReduce scene luminance on the GPU and update compatible HDR exposure.
Volumetric lighting and fogAvailableWebGPU@luma.gl/effectsRender supported fog, participating media, and clustered light scattering.
Depth-aware outlinesAvailableWebGPU@luma.gl/effectsHighlight compatible object boundaries using auxiliary scene attachments.
Deferred G-buffer renderingExperimentalWebGPU@luma.gl/experimentalCompose supported surface attachments and deferred lighting passes.
Compute-clustered lightsExperimentalWebGPU@luma.gl/experimentalPartition dense point-light workloads into compatible screen-space clusters.
Cascaded directional shadowsExperimentalWebGPU@luma.gl/experimentalRender supported cascaded shadow maps for directional lights.
Spot and point shadowsExperimentalWebGPU@luma.gl/experimentalRender supported spot shadows and six-face omnidirectional point shadows.
Soft and contact shadowsExperimentalWebGPU@luma.gl/experimentalApply supported blocker search, filtering, and screen-space contact shadows.
Exact order-independent transparencyExperimentalWebGPU@luma.gl/experimentalUse a bounded A-buffer on devices with sufficient fragment storage resources.
Weighted-blended transparencyExperimentalWebGPU + WebGL2@luma.gl/experimentalApproximate order-independent transparency when required float attachments are blendable.
Spectral optical causticsExperimentalWebGPU@luma.gl/experimentalCompute supported wavelength-separated lighting through a bounded refractor.

Try Lightstorm Megacity, Illumination Lab, Prism Cathedral, and Effects: Image Processing.

glTF, PBR, and standards-driven animation

FeatureStatusBackendPackageDetails
glTF and GLB scene loadingAvailableWebGPU + WebGL2@luma.gl/gltfLoad supported scene hierarchies, indexed meshes, cameras, materials, and animation data.
Draco mesh compressionAvailableWebGPU + WebGL2@luma.gl/gltfDecode supported Draco-compressed meshes through the shared asset loader.
Meshopt compressionAvailableWebGPU + WebGL2@luma.gl/gltfDecode supported Meshopt-compressed primitives during asset loading.
Quantized geometryAvailableWebGPU + WebGL2@luma.gl/gltfExpand supported quantized accessors before GPU geometry creation.
Basis Universal and KTX2EvolvingWebGPU + WebGL2@luma.gl/gltfDecode supported compressed textures when the runtime and selected device permit it.
Metallic-roughness materialsAvailableWebGPU + WebGL2@luma.gl/gltfApply supported PBR textures, material factors, normals, and emissive surfaces.
Authored PBR texture slotsAvailableWebGPU + WebGL2@luma.gl/gltfPreserve 21 supported material texture slots, their color spaces, sampler semantics, and authored transforms.
Specular and index of refractionAvailableWebGPU + WebGL2@luma.gl/gltfApply authored glTF specular factors, specular textures, and physical index-of-refraction parameters.
Clearcoat and sheenAvailableWebGPU + WebGL2@luma.gl/gltfRender authored secondary clearcoat and cloth-like sheen material lobes through shared PBR shaders.
Iridescence and anisotropyAvailableWebGPU + WebGL2@luma.gl/gltfRender thin-film interference and directional anisotropic highlights through the shared PBR shader.
Transmission and volumeAvailableWebGPU + WebGL2@luma.gl/gltfShared scene renderers refract captured scene color; the standalone glTF rendering fallback remains approximate.
Chromatic dispersionAvailableWebGPU + WebGL2@luma.gl/gltfSeparate visible wavelengths when physical transmission uses authored KHR_materials_dispersion.
Authored bump mapsAvailableWebGPU + WebGL2@luma.gl/gltfApply supported EXT_materials_bump height textures through the canonical physically based shader.
Diffuse transmissionAvailableWebGPU + WebGL2@luma.gl/gltfEvaluate supported KHR_materials_diffuse_transmission factors and independently authored color textures.
Approximate volume scatteringEvolvingWebGPU + WebGL2@luma.gl/gltfApproximate the unratified KHR_materials_volume_scatter draft per surface without claiming random-walk transport.
Authored UV transformsAvailableWebGPU + WebGL2@luma.gl/gltfPreserve supported texture offset, rotation, and scale semantics.
Authored normals and tangentsEvolvingWebGPU + WebGL2@luma.gl/gltfPreserve supported vertex attributes; complete renderer-to-renderer fidelity varies.
Punctual-light parsingAvailableWebGPU + WebGL2@luma.gl/gltfParse supported authored directional, point, and spot light definitions.
Generated image-based lightingExperimentalWebGPU + WebGL2@luma.gl/experimentalGenerate compatible GGX-prefiltered specular maps, diffuse irradiance, and a split-sum BRDF lookup texture.
Shared animation clipsAvailableWebGPU + WebGL2@luma.gl/enginePlay, blend, crossfade, loop, and interpolate compatible imported tracks.
Typed animation pointersAvailableWebGPU + WebGL2@luma.gl/gltfAnimate supported KHR_animation_pointer transforms, morph weights, visibility, materials, UVs, cameras, and lights.
Existing joint-driven skinningAvailableWebGPU + WebGL2@luma.gl/shadertoolsReuse established skin shaders and automatically bind mesh-local glTF joint palettes.
Morph-target animationAvailableWebGPU + WebGL2@luma.gl/gltfAnimate POSITION, NORMAL, and TANGENT morph targets through shared glTF, engine, and retained-scene paths.
Independently animated GPU crowdsAvailableWebGPU + WebGL2@luma.gl/gltfcreateGLTFAnimatedCrowd() batches independently animated actors into one instanced draw per compatible source primitive.
Actor-specific crowd playbackAvailableWebGPU + WebGL2@luma.gl/gltfGive each actor an independent clip, phase, speed, crossfade, and root transform while reusing shared source geometry.
Backend-specific crowd joint palettesAvailableWebGPU + WebGL2@luma.gl/gltfAccess actor-specific skin palettes through WebGPU storage buffers or WebGL2 floating-point palette textures.
Native material variantsAvailableWebGPU + WebGL2@luma.gl/gltfSelect compatible authored KHR_materials_variants without replacing retained scene nodes.
Imported GPU instancingAvailableWebGPU + WebGL2@luma.gl/gltfRender authored EXT_mesh_gpu_instancing transforms through one real instanced draw per source primitive.
Imported node visibilityAvailableWebGPU + WebGL2@luma.gl/gltfApply authored KHR_node_visibility recursively to compatible descendants and punctual lights.
Source-faithful glTF and GLB exportAvailableWebGPU + WebGL2@luma.gl/gltfPreserve supported hierarchy, geometry, accessors, images, skins, morph targets, animation, and extensions.
Screen-space crowd level of detailAvailableWebGPU + WebGL2@luma.gl/gltfClassify independently animated actors into authored or automatically decimated mesh-detail buckets, cull offscreen/tiny actors, and submit one instanced draw per occupied source-primitive/detail group. GPU-driven indirect selection remains future work.
Global animated-crowd vertex budgetsAvailableWebGPU + WebGL2@luma.gl/gltfLimit submitted index references across all visible actor primitives, deterministically demote farther characters first, and report unsatisfied limits without hiding actors.

The ownership boundaries are intentional: @luma.gl/gltf interprets assets, @luma.gl/shadertools owns shared shading, @luma.gl/engine owns generic animation, @luma.gl/experimental explores higher-level rendering, and @luma.gl/anari orchestrates retained scene objects. Reuse each capability at its existing layer rather than creating parallel implementations.

See the glTF extension support matrix, native glTF runtime behavior, materials and texture slots, and source-faithful asset interchange, or explore independently animated glTF crowds.

Declarative scenes and asset integration

FeatureStatusBackendPackageDetails
ANARI-inspired retained objectsExperimentalWebGPU + WebGL2@luma.gl/anariManage retained cameras, geometry, materials, lights, surfaces, instances, and worlds.
Perspective and orthographic camerasExperimentalWebGPU + WebGL2@luma.gl/anariConfigure supported camera models through the retained scene API.
Shared geometry instancesExperimentalWebGPU + WebGL2@luma.gl/anariReuse compatible surfaces, groups, and geometry across retained instances.
Physically based scene materialsExperimentalWebGPU + WebGL2@luma.gl/anariDescribe supported matte and physically based material parameters.
Scene light typesExperimentalWebGPU + WebGL2@luma.gl/anariConfigure supported ambient, directional, point, and spot lights.
Switchable scene renderersExperimentalWebGPU + WebGL2@luma.gl/anariSelect supported forward or debug views; deferred and ray-tracing renderers require WebGPU.
Retained animation playbackExperimentalWebGPU + WebGL2@luma.gl/anariPlay supported transform, material, texture-coordinate, skeletal, and morph-target animations.
Editable JSON scenesExperimentalWebGPU + WebGL2@luma.gl/anariInspect and edit supported retained scene descriptions interactively.
Experimental OpenUSD importExperimentalWebGPU + WebGL2@luma.gl/anariThe ANARI Playground imports supported ASCII USD and ASCII-root USDZ examples.
Scene-level skeletal animationExperimentalWebGPU + WebGL2@luma.gl/anariAutomatically evaluate imported skeletal clips and bind independent mesh-local joint palettes.
Retained morph-target animationExperimentalWebGPU + WebGL2@luma.gl/anariUpdate supported POSITION, NORMAL, and TANGENT morph targets through retained scene playback.
Camera-reprojected scene antialiasingExperimentalWebGPU@luma.gl/anariStabilize compatible forward and deferred raster views with persistent camera-reprojected history.

This is an ANARI-inspired proof of concept, not a claim of complete standards conformance. Explore the ANARI Playground, or read about retained animation and switchable scene renderers.

GPU ray tracing and progressive rendering

FeatureStatusBackendPackageDetails
WebGPU software ray tracingExperimentalWebGPU@luma.gl/experimentalTrace supported retained scene geometry through caller-owned GPU command graphs without hardware ray-tracing extensions.
Retained ANARI ray tracingExperimentalWebGPU@luma.gl/anariSelect the raytrace renderer for compatible retained cameras, analytic spheres, meshes, and direct lights.
Morton-sorted scene accelerationExperimentalWebGPU@luma.gl/experimentalBuild GPU Morton-sorted top-level acceleration structures (TLAS) with bounding-volume hierarchies (BVH) over compatible objects and instances.
Transform-aware acceleration refitsExperimentalWebGPU@luma.gl/experimentalReuse retained leaf permutations and refit compatible scene hierarchies when only instance transforms change.
Triangle-level mesh accelerationExperimentalWebGPU@luma.gl/experimentalBuild and reuse GPU Morton-sorted bottom-level acceleration structures (BLAS) over supported mesh triangles.
Nearest-hit and shadow traversalExperimentalWebGPU@luma.gl/experimentalTraverse the scene hierarchy for primary intersections and bounded early-exit direct-light shadow rays.
Progressive ray accumulationExperimentalWebGPU@luma.gl/anariAccumulate compatible direct-light samples across unchanged frames; this does not imply multi-bounce transport.
Adaptive ray-tracing resolutionExperimentalWebGPU@luma.gl/anariAdjust internal resolution, sampled-pixel phases, and rotating shadow work toward an explicit frame budget.
Ray-traced temporal reprojectionExperimentalWebGPU@luma.gl/anariReuse compatible retained history and reject invalid camera, depth, normal, or scene changes.
HDR ray-tracing presentationExperimentalWebGPU@luma.gl/anariResolve and upsample supported floating-point ray-traced output to compatible presentation targets.
Advanced acceleration topologyOpportunityWebGPU@luma.gl/experimentalExtend existing Morton-sorted TLAS/BLAS hierarchies with SAH/Karras topology and richer traversal diagnostics.
Multi-bounce path tracingOpportunityWebGPU@luma.gl/experimentalExtend existing direct-light ray tracing with indirect transport, physically based bounces, and denoising.
Ray-traced animated materialsOpportunityWebGPU@luma.gl/anariExtend supported ray tracing toward textured PBR, transmission, skeletal deformation, and animated morph targets.

Read the ANARI ray-tracing renderer and the retained rendering architecture.

Gaussian splats and captured-scene rendering

FeatureStatusBackendPackageDetails
Typed Gaussian splat columnsExperimentalWebGPU + WebGL2@luma.gl/splatsRepresent position, scale, orientation, opacity, supported colors, and row identity.
Anisotropic covarianceExperimentalWebGPU + WebGL2@luma.gl/splatsProject compatible anisotropic splats rather than reducing them to fixed point sprites.
Portable splat renderingExperimentalWebGPU + WebGL2@luma.gl/splatsSelect WebGPU storage or globally ordered WebGL2 attribute-backed rendering without mutating caller-owned source data.
Globally sorted WebGL splat runsExperimentalWebGL2@luma.gl/splatsComposite every visible row exactly once across interleaved source batches using independently owned reordered attributes.
Progressive batch streamingExperimentalWebGPU + WebGL2@luma.gl/splatsPreserve independently owned streamed source batches.
GPU projection and cullingExperimentalWebGPU@luma.gl/splatsProject visible splats and apply supported frustum, opacity, and size thresholds.
GPU depth sortingExperimentalWebGPU@luma.gl/splatsExecute supported command-graph-native global depth ordering.
Indirect splat drawingExperimentalWebGPU@luma.gl/splatsGenerate one bounded indirect draw from the visible GPU-resident set.
Segmented paged splat renderingExperimentalWebGPU@luma.gl/splatsProject sparse original source rows into bounded GPU segments and draw them in one globally sorted cross-page depth order.
Spark-calibrated RAD reconstructionExperimentalWebGPU@luma.gl/splatsProject analytic Gaussian covariance with area-preserving antialiasing and authored nonlinear coarse-level opacity.
HDR spherical-harmonic DCExperimentalWebGPU@luma.gl/splatsPreserve supported floating-point source radiance on compatible presentation targets.
Standard-dynamic-range fallbackExperimentalWebGPU + WebGL2@luma.gl/splatsApply supported display mapping when extended HDR output is unavailable.
View-dependent harmonicsExperimentalWebGPU + WebGL2@luma.gl/splatsEvaluate degree-one through degree-three spherical harmonics in reusable WebGPU graphs and unclamped Float32 WebGL2 attributes.
Unclamped WebGL harmonic radianceExperimentalWebGL2@luma.gl/splatsPreserve directional highlights and negative radiance from byte-backed source colors in stable Float32 vertex attributes.
Dedicated splat pickingExperimentalWebGPU + WebGL2@luma.gl/splatsResolve stable batch, row, and semantic identities through graph-native integer picking or portable GPU passes.
Semantic splat filteringExperimentalWebGPU + WebGL2@luma.gl/splatsApply GPU-native graph class selection or portable class/predicate filtering without repacking batches.
Dynamic splat updatesExperimentalWebGPU + WebGL2@luma.gl/splatsUpdate prepared source rows in place while preserving GPU buffers and reusable command graphs.
Mixed mesh and splat renderingExperimentalWebGPU + WebGL2@luma.gl/splatsComposite depth-tested Gaussian splats between caller-owned opaque and transparent meshes.
Bounded splat residencyExperimentalWebGPU + WebGL2@luma.gl/splatsReserve upload capacity and evict prioritized, unpinned source tiles within byte, row, and chunk budgets.
Hierarchical splat refinementExperimentalWebGPU + WebGL2@luma.gl/splatsSelect frustum-culled, foveated source-page frontiers with parent fallback and bounded asynchronous loading.
Row-accurate RAD hierarchyExperimentalWebGPU + WebGL2@luma.gl/splatsPrioritize authored child rows with best-first angular refinement, coarse-node coverage, parent fallback, and sparse source-row identity.
Khronos glTF splat attributesExperimentalWebGPU + WebGL2@luma.gl/splatsRender decoded KHR_gaussian_splatting attributes, feature IDs, and externally decoded SPZ v2 content.
Camera-driven RAD page sourcesExperimentalWebGPU + WebGL2@luma.gl/arrow and @luma.gl/splatsDemand, prioritize, cancel, and evict independently range-fetched source pages while preserving authored global row identities.
Background RAD page decodingExperimentalWebGPUGaussian Splat ViewerDecode transferable RAD ranges in bounded module workers; preserve Arrow ownership and automatically fall back when worker startup, CSP, or dynamic imports fail.

Higher-order harmonics, semantic filtering, dedicated picking, and mixed-scene composition are available through the portable SplatRenderer and the WebGPU-only GPUSplatGraphRenderer. The graph renderer preserves its high-throughput GPU depth sorting and indirect-drawing path.

View captured scenes in the Gaussian Splat Viewer and review completed and planned work in the Gaussian splat implementation roadmap.

Simulation and immersive presentation

FeatureStatusBackendPackageDetails
Three-dimensional fire and smokeExperimentalWebGPU@luma.gl/experimentalEvolve three-dimensional fire velocity, pressure, fuel, heat, smoke, and solid obstacles.
Spectral ocean simulationExperimentalWebGPU@luma.gl/experimentalGenerate GPU Fourier-displaced waves, normals, and compression-derived whitecaps.
Two-dimensional MLS-MPM liquidsExperimentalWebGPU@luma.gl/experimentalSimulate supported two-dimensional MLS-MPM particle and grid transfers.
Full three-dimensional particle liquidsOpportunityWebGPU@luma.gl/experimentalThe existing liquid solver is two-dimensional rather than a general three-dimensional fluid system.
Cloth and soft-body simulationOpportunityWebGPU@luma.gl/experimentalDeformable-body simulation is not part of the current framework.
WebXR frame integrationExperimentalWebGPU + WebGL2@luma.gl/experimentalDrive compatible immersive frames from WebXR session scheduling.
Immersive AR and VRExperimentalWebGPU + WebGL2@luma.gl/experimentalRender supported per-eye immersive AR and VR views with explicit viewports.
Native WebGPU XR layersExperimentalWebGPU@luma.gl/experimentalUse projection layers only when the browser, XR session, and adapter support them.
Raw AR camera texturesExperimentalWebGL2@luma.gl/experimentalBind compatible raw-camera access through the WebGL immersive path.
Advanced XR spatial featuresOpportunityWebGPU + WebGL2@luma.gl/experimentalHit testing, anchors, hand tracking, depth sensing, and WebGPU camera textures remain absent.

Try Volumetric Fire Forge, Tempest Ocean, and Fluid Foundry.

Opportunities for data-intensive visualization and compute

These opportunities follow luma.gl's core focus: massive data, GPU-native computation, practical rendering infrastructure, and interactive visualization. They describe useful directions, not commitments to release dates.

FeatureStatusBackendPackageDetails
Unified out-of-core dataset streamingOpportunityWebGPU + WebGL2@luma.gl/tables and @luma.gl/arrowExtend existing splat and raster residency managers into shared Arrow/columnar streaming, coordinated priorities, and reusable backpressure.
Unified compute schedulingOpportunityWebGPU@luma.gl/gpgpu and @luma.gl/experimentalLower compatible lazy expressions into reusable command graphs while preserving portable fallbacks.
Kernel fusionOpportunityWebGPU@luma.gl/gpgpuReduce intermediate allocations by fusing compatible columnar compute operations.
Advanced dataframe analyticsOpportunityWebGPU@luma.gl/experimental/ludfExtend existing grouped analytics, joins, lookups, sorting, and top-K toward non-unique/outer joins, temporal windows, and incremental updates.
GPU vector similarity searchOpportunityWebGPU@luma.gl/experimentalAdd embedding similarity, nearest-neighbor indexes, top-K distance queries, and compatible metadata filtering.
Cross-tile contour stitching and combined raster pipelinesOpportunityWebGPU@luma.gl/experimental/lurasterExtend implemented halos, generated overviews, and global replay toward stitched contour topology and combined cross-tile neighborhood/overview analysis.
Advanced GPU graph analyticsOpportunityWebGPU@luma.gl/experimental/lugraphBuild on existing core numbers, weighted shortest paths, local clustering, community modularity scoring, all six Graphalytics families, and layouts with Louvain/Leiden partition optimization and dynamic graph updates.
Hierarchical spatial indexesOpportunityWebGPU@luma.gl/experimental/geospatialExtend supported spatial queries toward tiled indexing, nearest neighbors, and spatial joins.
High-precision geospatial pipelinesOpportunityWebGPU@luma.gl/experimental/luprojBroaden projection, local-origin precision, coordinate systems, and streamed map-scale workflows.
Cross-view GPU-native provenanceOpportunityWebGPU@luma.gl/experimental/luxfilterExtend existing linked filters and histograms with shared picking, provenance, and selection across more charts, maps, and scene views.
Scalable GPU-native annotationsOpportunityWebGPU + WebGL2@luma.gl/text and @luma.gl/arrowAdvance streamed labels, dictionary reuse, collision-aware placement, and exact row selection.
Scientific volume renderingOpportunityWebGPU@luma.gl/anari and @luma.gl/experimentalVisualize streamed three-dimensional fields with transfer functions, clipping, and isosurfaces.
Massive geometry visualizationOpportunityWebGPU@luma.gl/experimentalExtend procedural virtual geometry toward imported mesh clusters and occlusion-aware residency.
Motion-aware temporal reconstructionOpportunityWebGPU@luma.gl/effects and @luma.gl/anariExtend camera-reprojection antialiasing with animated-object motion vectors, compatible denoising, and temporal upscaling.
GPU-resident crowd animationOpportunityWebGPU@luma.gl/gltfExtend existing instanced skeletal crowds toward GPU clip sampling, independent actor morph deformation, and material variation.
Incremental GPU splat hierarchy schedulingOpportunityWebGPU@luma.gl/splatsMove authored row traversal and camera-prioritized page scheduling into bounded incremental worker/GPU workflows.
Segmented splat picking and mesh compositionOpportunityWebGPU@luma.gl/splatsAdd stable GPU picking across paged segments and compose segmented splats with caller-owned meshes in one depth-aware pass.
Partitioned splat sorting and scatterOpportunityWebGPU@luma.gl/splatsExtend global ordering beyond 33,554,432 active rows on a 128 MiB binding limit and replace segment-pair scatter with near-linear routing.
Streamed 3D Tiles and glTF splat transportOpportunityWebGPU + WebGL2@luma.gl/splats with existing loaders.gl packagesReuse existing Tileset3D traversal, fetching, computed transforms, caching, and feature metadata; apply loader-computed transforms per tile/page in the renderer; connect selected tiles to prepared splats or the existing SplatLayer after loaders.gl adds Gaussian glTF extension handlers and SPZ v2 decoding (#1245).
Measured captured-scene visual and performance parityOpportunityWebGPU@luma.gl/splatsEstablish reproducible Coit imagery, frame-time, startup, bandwidth, and bounded-residency comparisons against Spark.
Production-ready module boundariesOpportunityWebGPU + WebGL2@luma.gl/engine, @luma.gl/tables, and @luma.gl/gpgpuGraduate reusable scheduling, data adapters, and algorithms into their natural published packages.

@luma.gl/experimental, @luma.gl/anari, @luma.gl/splats, @luma.gl/arrow, @luma.gl/text, @math.gl/geoarrow, and @deck.gl-community/arrow-layers are private packages in active development and are not yet published independently. Hardware capabilities, browser support, and API stability vary by feature.

Explore the live visualization examples, read the GPU programming guides, or inspect the GPU data and compute architecture.