Repository navigation
[Feature] WebGPU-WebGL feature parity #3473
Copy link
Copy link
Open
Labels
hall of fame 👑Awesome content in there!Awesome content in there!module: renderingGeneral rendering issuesGeneral rendering issuesmodule: webglIssues related to WebGLIssues related to WebGLmodule: webgpuIssues related to WebGPU rendering support and classesIssues related to WebGPU rendering support and classestype: feature request 💡Desired capabilities / enhancementsDesired capabilities / enhancements
Description
Motivation
WebGPU is the path to better scalability, better GPU resource management, and more future-proof rendering performance for the kinds of large datasets.
Browser support :
-
Chrome, Edge, and other Chromium-based browsers:
- WebGPU is available on Windows (with Direct3D 12), macOS, and ChromeOS starting with Chrome and Edge version 113.
- Support for Android was added in Chrome version 121 for devices running at least Android 12, and with Qualcomm/ARM GPUs.
- Support for Linux and expanded support for existing platforms is in progress.
-
Firefox:
- WebGPU is available on Windows as of Firefox 141.
- WebGPU is available in macOS Tahoe 26 on ARM64 machines, as of Firefox 145.
- Support for Linux, Android, and Intel-based Macs is in progress.
-
Safari:
- WebGPU is available in macOS Tahoe 26, iOS 26, iPadOS 26, and visionOS 26.
Detailed Description
Texture:
- Subimage texture uploads
Texture.writeSubImageDatafeat(WebGPU): implement subimage texture upload #3477 - CubeMap feat(WebGPU): support cube map textures on the diffuse texture #3669
Background:
- Support a vtkBackground(background clear, gradient, texture, skybox) in WebGPU (feat(WebGPU): add vtkSkybox #3486)
SkyBox:
- Support a vtkSkyBox in WebGPU (feat(WebGPU): add vtkSkybox #3486)
Device.lost
- Support a device.lost handler in WebGPU (feat(WebGPU): implement device.lost handler #3485)
ImageCPRMapper:
- feat(ImageCPRMapper): add ImageCPRMapper in WebGPU #3471
- updatedExtents partial upload (feat(WebGPU): align image mapper features with WebGL #3615)
PolydataMapper/CellArrayMapper:
- Backface material support (feat(WebGPU): add polydata backface material and local culling #3475)
- Coincident topology / polygon offset handling (feat(WebGPU): add coincident topology offsets to CellArrayMapper #3479)
- Clipping planes (feat(WebGPU): add clipping plane support for polydata, volume and image #3464)
- Depth only / z-buffer pass support (feat(WebGPU): Depth only / zbuffer pass support in CellArrayMapper #3487)
- Front/back face culling controls (feat(WebGPU): add polydata backface material and local culling #3475)
- Support scalars at cells (i.e. support texture maps) (feat(WebGPU): Depth only / zbuffer pass support in CellArrayMapper #3487)
- Line width
- Point size (getPointSize() has zero hits; verts draw as one pixel)
- Property.lighting flag (getLighting() has zero hits; lighting follows the presence of a normal)
- Property.interpolation (FLAT, GOURAUD, PHONG) (getInterpolation() has zero hits, so flat shading is unavailable)
- Multiple actor textures with several tcoord array (only texture index 0)
PolyDataMapper2D:
ImageMapper:
- Opacity transfer-function support via piecewise-function LUTs (feat(WebGPU): add ImageMapper #3482)
- Independent-components mode with per-component weights/mixing (feat(WebGPU): add ImageMapper #3482)
- Dependent multicomponent(LA/RGB/RGBA) image modes (feat(WebGPU): add ImageMapper #3482)
- Label-outline rendering for labelmaps (feat(WebGPU): add ImageMapper #3482)
- Clipping planes (feat(WebGPU): add clipping plane support for polydata, volume and image #3464)
- Z-buffer/depth pass (feat(WebGPU): add ImageMapper #3482)
- Coincident topology / polygon offset (feat(WebGPU): add ImageMapper #3482)
- useLookupTableScalarRange (feat(WebGPU): add ImageMapper #3482)
- vtkImageArrayMapper sub slice, norm16 and mipmap scalar paths, shared transfer function textures, preferSizeOverAccuracy downgrade, depth in color encoding (feat(WebGPU): align image mapper features with WebGL #3615)
ImageResliceMapper:
- Support a vtkImageResliceMapper(extend vtkWebGPUImageMapper) in WebGPU (feat(WebGPU): add ImageResliceMapper #3495)
- updatedExtents partial upload (feat(WebGPU): align image mapper features with WebGL #3615)
VolumeMapper/VolumePassFSQ:
- Volumetric lighting (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- True multi component volume sampling (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Independent component mixing with component weights / ColorMixPreset behaviors (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- RADON_TRANSFORM_BLEND (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- LABELMAP_EDGE_PROJECTION_BLEND (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Labelmap outline thickness rendering (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Clipping planes (feat(WebGPU): add clipping plane support for polydata, volume and image #3464)
- Intermixed rendering against opaque geometry via z-buffer input
- Volumetric scattering / global illumination controls (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Local ambient occlusion (LAO) (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- ForceNearestInterpolation per component (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- computeNormalFromOpacity support (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Volume shadow sampling distance factor support (feat(WebGPU): add WebGPU support to VolumePassFSQ #3526)
- Transfer function texture sharing across mappers (feat(WebGPU): align image mapper features with WebGL #3615)
- updatedExtents partial 3D upload (feat(WebGPU): align image mapper features with WebGL #3615)
- Multi component MIP, MinIP, Average, Additive (partial, only component 0, and no shading in those modes) (feat(WebGPU): align image mapper features with WebGL #3615)
- ipScalarRange with data offset (partial, scale only) (feat(WebGPU): align image mapper features with WebGL #3615)
CutterMapper:
HardwareSelector:
- Extend WebGPU async support (feat(WebGPU): extend the hardware selector API #3671)
- missing
attach(feat(WebGPU): align image mapper features with WebGL #3615) - make selection part of Core (feat(WebGPU): extend the hardware selector API #3671)
RadialDistortionPass:
- missing
Convolution2DPass:
- Support a Convolution2DPass in WebGPU (feat(WebGPU): add Convolution2DPass #3614)
SurfaceLIC:
- Support a SurfaceLIC in WebGPU
Actor2D
- Support Actor2D (feat(WebGPU): support Actor2D overlay #3659)
ShaderReplacement
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
hall of fame 👑Awesome content in there!Awesome content in there!module: renderingGeneral rendering issuesGeneral rendering issuesmodule: webglIssues related to WebGLIssues related to WebGLmodule: webgpuIssues related to WebGPU rendering support and classesIssues related to WebGPU rendering support and classestype: feature request 💡Desired capabilities / enhancementsDesired capabilities / enhancements
Activity
finetjul commentedon Apr 15, 2026
I added the lack of support for scalars at cells for the polydata mapper.
vtkMapper enforces texture mapping but WebGPU mapper does not support texture mapping.