Wat is er nieuw in WebGPU (Chrome 139)

François Beaufort
François Beaufort

Gepubliceerd: 30 juli 2025

Ondersteuning voor 3D-texturen in de gecomprimeerde formaten BC en ASTC.

De WebGPU-functies "texture-compression-bc-sliced-3d" en "texture-compression-astc-sliced-3d" bieden ondersteuning voor 3D-texturen met behulp van Block Compression (BC) en Adaptive Scalable Texture Compression (ASTC) formaten. Hierdoor kunt u profiteren van de efficiënte compressiemogelijkheden van BC en ASTC voor volumetrische textuurgegevens, wat aanzienlijke reducties in geheugengebruik en bandbreedte oplevert zonder noemenswaardig verlies aan beeldkwaliteit. Dit is met name waardevol in vakgebieden zoals wetenschappelijke visualisatie, medische beeldvorming en geavanceerde renderingtechnieken.

Het volgende codefragment controleert of de adapter 3D-texturen met BC- en ASTC-compressieformaten ondersteunt en vraagt ​​een apparaat met deze functies aan als deze beschikbaar zijn.

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

Verken 3D-hersenscans door het voorbeeld Volume Rendering - Texture 3D WebGPU te bekijken en de vermelding in chromestatus te raadplegen.

3D-hersenscans weergegeven met behulp van WebGPU.
Een hersenscanafbeelding afkomstig van een 3D-textuur in ASTC-gecomprimeerd formaat.

Nieuwe functie voor "kernfuncties en -beperkingen".

Er wordt een nieuwe functie "core-features-and-limits" geïntroduceerd voor de aankomende WebGPU-compatibiliteitsmodus. Deze functie geeft aan dat de adapter of het apparaat de kernfuncties en -limieten van de WebGPU-specificatie ondersteunt. "Core" WebGPU is momenteel de enige beschikbare versie, dus alle WebGPU-implementaties moeten "core-features-and-limits" in hun ondersteunde functies opnemen.

In de toekomst, wanneer de WebGPU-compatibiliteitsmodus beschikbaar komt, beschikt een adapter of apparaat mogelijk niet over deze functie om aan te geven dat het een adapter of apparaat in compatibiliteitsmodus is en niet in de core-modus. Wanneer deze functie op een apparaat is ingeschakeld, worden alle beperkingen (functies en limieten) van de compatibiliteitsmodus opgeheven.

Voor een gedetailleerde uitleg en gebruik in de WebGPU-compatibiliteitsmodus, raadpleeg de uitleg en het volgende gedeelte. Zie probleem 418025721 .

Origin-proefversie voor WebGPU-compatibiliteitsmodus

WebGPU is een krachtige API die is ontworpen voor moderne grafische toepassingen en aansluit bij technologieën zoals Vulkan, Metal en Direct3D 12. Een aanzienlijk aantal apparaten biedt echter nog steeds geen ondersteuning voor deze nieuwere API's. Zo heeft bijvoorbeeld 31% van de Chrome-gebruikers op Windows geen Direct3D 11.1 of hoger. Op Android heeft 15% van de gebruikers geen Vulkan 1.1, waaronder 10% die helemaal geen Vulkan heeft.

Dit vormt een uitdaging voor ontwikkelaars die het bereik van hun applicatie willen maximaliseren. Ze worden vaak gedwongen om meerdere implementaties te ontwikkelen (bijvoorbeeld WebGPU en WebGL), genoegen te nemen met een beperkter publiek met pure WebGPU, of zich te beperken tot WebGL, waardoor ze de geavanceerde functies van WebGPU, zoals GPU-computing, mislopen.

Visuele weergave van de WebGPU-compatibiliteitsmodus.
De compatibiliteitsmodus voor WebGPU heeft het bereik vergroot.

De WebGPU-compatibiliteitsmodus biedt een oplossing door een optionele, enigszins beperkte versie van de WebGPU API aan te bieden. Deze modus is ontworpen om oudere grafische API's zoals OpenGL ES 3.1 en Direct3D11 te gebruiken, waardoor het bereik van uw applicatie aanzienlijk wordt uitgebreid naar apparaten die de moderne, expliciete grafische API's die vereist zijn door de kern van WebGPU niet ondersteunen.

Omdat de compatibiliteitsmodus een onderdeel is van WebGPU, zijn applicaties die ermee zijn ontwikkeld ook geldige WebGPU-"kern"-applicaties. Dit betekent dat ze probleemloos werken, zelfs in browsers die de compatibiliteitsmodus niet specifiek ondersteunen.

Voor veel eenvoudige toepassingen is het inschakelen van de compatibiliteitsmodus net zo simpel als het doorgeven featureLevel: "compatibility" bij het aanroepen van requestAdapter() . Complexere toepassingen vereisen mogelijk kleine aanpassingen om binnen de beperkingen van de modus te blijven. Het voorbeeld Generate Mipmap WebGPU is een goed voorbeeld.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

Schakel de functie in

Standaard is de WebGPU-compatibiliteitsmodus niet ingeschakeld in Chrome, maar je kunt ermee experimenteren in Chrome 139 door de functionaliteit expliciet in te schakelen. Je kunt dit lokaal doen door de vlag "Experimental Web Platform Features" in te schakelen via chrome://flags/#enable-experimental-web-platform-features .

Om dit voor alle bezoekers van uw app mogelijk te maken, loopt er momenteel een Origin-proef die eindigt in Chrome 145 (21 april 2026). Raadpleeg het bericht 'Aan de slag met Origin-proeven ' voor meer informatie over deelname aan de proef.

Dawn-updates

Er is een message toegevoegd aan de WGPUQueueWorkDoneCallback -functie om meer consistentie te creëren met andere callback-functies die ook een status als argument accepteren. Zie de pull request webgpu-headers .

Wanneer emdawnwebgpu wordt gelinkt met -sSHARED_MEMORY , wordt het bijbehorende webgpu.cpp-bestand ook met deze vlag gecompileerd. Zie Dawn CL 244075 .

Dit is slechts een greep uit de belangrijkste hoogtepunten. Bekijk de volledige lijst met commits .

Wat is er nieuw in WebGPU?

Een lijst van alles wat in de serie ' Wat is nieuw in WebGPU' aan bod is gekomen.

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113