Skip to main content

WebGPU

caution

WebGPU support in deck.gl v9 is still a work in progress and is not production ready.

deck.gl is gradually adding support for running on WebGPU. Support is landing layer by layer and feature by feature.

This page is conservative and source-based:

  • โœ… vX.Y means the current tree contains an explicit WebGPU/WGSL implementation, or the API is a thin wrapper over one. The version identifies the first deck.gl minor release with full WebGPU support.
  • ๐Ÿšง means some code paths work, but the full API surface is not yet ported.
  • โŒ means there is no in-tree WebGPU implementation yet.

For composite and wrapper layers, statuses are based on their default or general rendering path, not on every possible custom sublayer configuration.

Enabling WebGPUโ€‹

deck.gl needs to be set up to use a luma.gl device that uses the luma.gl webgpuAdapter.

import {webgpuAdapter} from '@luma.gl/webgpu';

new Deck({
deviceProps: {
type: 'webgpu',
adapters: [webgpuAdapter]
}
});

Layersโ€‹

The table below covers the public layer exports from the layer packages. It is derived from the current source tree rather than the website badges, which may lag behind in-tree ports.

ModuleLayerWebGLWebGPU
@deck.gl/layersArcLayerโœ…โœ… v9.4
@deck.gl/layersBitmapLayerโœ…โœ… v9.4
@deck.gl/layersIconLayerโœ…โœ… v9.3
@deck.gl/layersLineLayerโœ…โœ… v9.2
@deck.gl/layersPointCloudLayerโœ…โœ… v9.2
@deck.gl/layersScatterplotLayerโœ…โœ… v9.2
@deck.gl/layersColumnLayerโœ…โœ… v9.4
@deck.gl/layersGridCellLayerโœ…โœ… v9.4
@deck.gl/layersPathLayerโœ…โœ… v9.4
@deck.gl/layersPolygonLayerโœ…โœ… v9.4
@deck.gl/layersGeoJsonLayerโœ…โœ… v9.4
@deck.gl/layersTextLayerโœ…โœ… v9.4
@deck.gl/layersSolidPolygonLayerโœ…โœ… v9.4
@deck.gl/aggregation-layersScreenGridLayerโœ…โœ… v9.4
@deck.gl/aggregation-layersHexagonLayerโœ…โœ… v9.4
@deck.gl/aggregation-layersContourLayerโœ…โœ… v9.4
@deck.gl/aggregation-layersGridLayerโœ…โœ… v9.4
@deck.gl/aggregation-layersHeatmapLayerโœ…โœ… v9.4
@deck.gl/mesh-layersSimpleMeshLayerโœ…โœ… v9.4
@deck.gl/mesh-layersScenegraphLayerโœ…โœ… v9.4
@deck.gl/geo-layersA5Layerโœ…โœ… v9.4
@deck.gl/geo-layersGreatCircleLayerโœ…โœ… v9.4
@deck.gl/geo-layersS2Layerโœ…โœ… v9.4
@deck.gl/geo-layersQuadkeyLayerโœ…โœ… v9.4
@deck.gl/geo-layersTileLayerโœ…โœ… v9.4
@deck.gl/geo-layersTripsLayerโœ…โœ… v9.4
@deck.gl/geo-layersH3ClusterLayerโœ…โœ… v9.4
@deck.gl/geo-layersH3HexagonLayerโœ…โœ… v9.4
@deck.gl/geo-layersTile3DLayerโœ…โœ… v9.4
@deck.gl/geo-layersTerrainLayerโœ…โœ… v9.4
@deck.gl/geo-layersMVTLayerโœ…โœ… v9.4
@deck.gl/geo-layersGeohashLayerโœ…โœ… v9.4
@deck.gl/cartoClusterTileLayerโœ…โŒ
@deck.gl/cartoH3TileLayerโœ…โŒ
@deck.gl/cartoHeatmapTileLayerโœ…โŒ
@deck.gl/cartoPointLabelLayerโœ…โŒ
@deck.gl/cartoQuadbinTileLayerโœ…โŒ
@deck.gl/cartoRasterTileLayerโœ…โŒ
@deck.gl/cartoVectorTileLayerโœ…โŒ

GeoJsonLayer supports polygon, line, and text point rendering on WebGPU. TextLayer supports glyph rendering; text backgrounds and collision filtering still require WebGL.

  • S2Layer, QuadkeyLayer, and GeohashLayer inherit their WebGPU rendering from PolygonLayer, including extruded, stroked, and wireframe cells.
  • H3HexagonLayer supports both its high-precision PolygonLayer path and its instanced ColumnLayer path on WebGPU.
  • H3ClusterLayer renders through the polygon path.
  • A5Layer inherits its WebGPU rendering from PolygonLayer and supports both bigint and hexadecimal A5 cell identifiers.
  • Tile3DLayer supports point-cloud, glTF scenegraph, and I3S mesh tile content on WebGPU.

Extensionsโ€‹

The table below covers the public extensions in @deck.gl/extensions. Most remain WebGL-only because they rely on GLSL shader injections, GLSL-only shader modules, or extra render/picking passes that have not been ported to WebGPU. ClipExtension has initial WebGPU support on the primitive layers used by the default MVTLayer rendering path.

ModuleExtensionWebGLWebGPU
@deck.gl/extensionsBrushingExtensionโœ…โŒ
@deck.gl/extensionsDataFilterExtensionโœ…โŒ
@deck.gl/extensionsFp64Extensionโœ…โŒ
@deck.gl/extensionsPathStyleExtensionโœ…โŒ
@deck.gl/extensionsFillStyleExtensionโœ…โŒ
@deck.gl/extensionsClipExtensionโœ…๐Ÿšง
@deck.gl/extensionsCollisionFilterExtensionโœ…โŒ
@deck.gl/extensionsMaskExtensionโœ…โŒ

Effectsโ€‹

The table below covers the public effect classes exported by @deck.gl/core.

ModuleEffectWebGLWebGPUNotes
@deck.gl/coreLightingEffectโœ…๐ŸšงMaterial lighting modules have WGSL support, but the shadow path still depends on the GLSL-only shadow shader module.
@deck.gl/corePostProcessEffectโœ…โŒThe current screen-pass chain is still generated from GLSL fragment shader templates and is not WebGPU-ready as a supported deck.gl feature.

Featuresโ€‹

FeatureStatusComment
Views๐ŸšงThe core project and project32 shader modules have WGSL ports, so standard view/projection paths should work.
Pickingโœ…Deck does async picking on WebGPU, including hover and click picking paths.
Shader hooks / layer extensions๐ŸšงClipExtension has targeted support on ScatterplotLayer, PathLayer, and SolidPolygonLayer; general WGSL shader injection is not yet supported.
GPU transforms๐ŸšงUnderlying GPU transform APIs are evolving, but deck.gl still has transform-gated tests and no documented WebGPU support for transform-based workflows.
Constant attributesโœ…AttributeManager now materializes constant attributes into full buffers on WebGPU as a compatibility path for layers that rely on constant accessors.
Attribute transitions๐ŸšงSome layers disable transitions on WebGPU, and transition utilities still contain WebGL-specific buffer read paths.
Base map overlays๐ŸšงTransparent overlay integration still requires premultiplied-alpha work across deck and the base map stack.
Base map interleavingโŒNo current base map integration path supports WebGPU interleaving.

Backgroundโ€‹

While the visible WebGPU surface is still limited, much of the groundwork has already happened in luma.gl, the GPU framework powering deck.gl. deck.gl is following that work by porting its shader modules, layers, and render features incrementally.

Participatingโ€‹

If you want to contribute to deck.gl WebGPU development, or just follow along, we have a dedicated channel in the OpenJS / Open Visualization slack community.

You can also check release tracker tasks and ongoing implementation work on GitHub.