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:

  • means the current tree contains an explicit WebGPU/WGSL implementation, or the API is a thin wrapper over one.
  • 🚧 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
@deck.gl/layersBitmapLayer
@deck.gl/layersIconLayer
@deck.gl/layersLineLayer
@deck.gl/layersPointCloudLayer
@deck.gl/layersScatterplotLayer
@deck.gl/layersColumnLayer
@deck.gl/layersGridCellLayer
@deck.gl/layersPathLayer
@deck.gl/layersPolygonLayer
@deck.gl/layersGeoJsonLayer
@deck.gl/layersTextLayer
@deck.gl/layersSolidPolygonLayer
@deck.gl/aggregation-layersScreenGridLayer
@deck.gl/aggregation-layersHexagonLayer
@deck.gl/aggregation-layersContourLayer
@deck.gl/aggregation-layersGridLayer
@deck.gl/aggregation-layersHeatmapLayer
@deck.gl/mesh-layersSimpleMeshLayer
@deck.gl/mesh-layersScenegraphLayer
@deck.gl/geo-layersA5Layer
@deck.gl/geo-layersGreatCircleLayer
@deck.gl/geo-layersS2Layer
@deck.gl/geo-layersQuadkeyLayer
@deck.gl/geo-layersTileLayer
@deck.gl/geo-layersTripsLayer
@deck.gl/geo-layersH3ClusterLayer
@deck.gl/geo-layersH3HexagonLayer
@deck.gl/geo-layersTile3DLayer
@deck.gl/geo-layersTerrainLayer
@deck.gl/geo-layersMVTLayer
@deck.gl/geo-layersGeohashLayer
@deck.gl/cartoClusterTileLayer
@deck.gl/cartoH3TileLayer
@deck.gl/cartoHeatmapTileLayer
@deck.gl/cartoPointLabelLayer
@deck.gl/cartoQuadbinTileLayer
@deck.gl/cartoRasterTileLayer
@deck.gl/cartoVectorTileLayer

Extensions

The table below covers the public extensions in @deck.gl/extensions. They all remain WebGL-only today because they rely on GLSL shader injections, GLSL-only shader modules, or extra render/picking passes that have not been ported to WebGPU.

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/corePostProcessEffectThe 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.
PickingDeck currently skips picking on WebGPU, including hover and click picking paths.
Shader hooks / layer extensionsdeck.gl's WGSL shader hook list is currently empty, so injection-based extensions are not yet portable.
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.
Attribute transitions🚧Some layers disable transitions on WebGPU, and transition utilities still contain WebGL-specific buffer read paths.
Base map overlaysTransparent overlay integration still requires premultiplied-alpha work across deck and the base map stack.
Base map interleavingNo 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.