Nieuw in WebGPU (Chrome 139)

François Beaufort
François Beaufort

Gepubliceerd: 30 juli 2025

Ondersteuning voor 3D-texturen voor de gecomprimeerde indelingen BC en ASTC

De WebGPU-functies "texture-compression-bc-sliced-3d" en "texture-compression-astc-sliced-3d" voegen ondersteuning toe voor 3D-texturen met de indelingen Block Compression (BC) en Adaptive Scalable Texture Compression (ASTC). Zo kunt u de efficiënte compressiemogelijkheden van BC- en ASTC-indelingen gebruiken voor volumetrische textuurgegevens. Dit leidt tot aanzienlijke verminderingen in het geheugengebruik en de bandbreedtevereisten zonder dat de visuele kwaliteit aanzienlijk afneemt. Dit is vooral waardevol op gebieden zoals wetenschappelijke visualisatie, medische beeldvorming en geavanceerde weergavetechnieken.

Het volgende codefragment checkt of de adapter 3D-texturen ondersteunt met BC- en ASTC-gecomprimeerde indelingen en vraagt een apparaat met deze functies aan als ze 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
}

Ontdek 3D-hersenscans door het Volume Rendering - Texture 3D WebGPU-voorbeeld te checken en de chromestatus-vermelding te bekijken.

3D-hersenscans die zijn gerenderd met WebGPU.
Een hersenscan van een 3D-textuur met de gecomprimeerde ASTC-indeling.

Nieuwe functie core-features-and-limits

Er wordt een nieuwe "core-features-and-limits" functie geïntroduceerd voor de komende compatibiliteitsmodus voor WebGPU. Deze functie geeft aan dat de adapter of het apparaat de kernfuncties en limieten van de WebGPU-specificatie ondersteunt. Op dit moment is alleen de kernversie van WebGPU beschikbaar. Alle WebGPU-implementaties moeten dus "core-features-and-limits" opnemen in de ondersteunde functies.

In de toekomst, als de compatibiliteitsmodus voor WebGPU wordt geleverd, heeft een adapter of een apparaat deze functie misschien niet om aan te geven dat het een compatibiliteitsmodusadapter of -apparaat is en geen kernadapter of -apparaat. Als deze modus aanstaat op een apparaat, worden alle beperkingen van de compatibiliteitsmodus (functies en limieten) opgeheven.

Ga naar de uitleg en het volgende gedeelte voor een gedetailleerde uitleg en gebruik in de compatibiliteitsmodus van WebGPU. Ga naar probleem 418025721.

Origin trial voor de compatibiliteitsmodus van WebGPU

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

Dit is een uitdaging voor ontwikkelaars die het bereik van hun app willen maximaliseren. Ze worden vaak gedwongen meerdere implementaties te ontwikkelen (bijvoorbeeld WebGPU en WebGL), een beperkter publiek te accepteren met de kern van WebGPU of bij WebGL te blijven, waardoor ze de geavanceerde functies van WebGPU, zoals GPU-berekeningen, mislopen.

Visuele weergave van de compatibiliteitsmodus van WebGPU.
De compatibiliteitsmodus voor WebGPU heeft een groter bereik.

De compatibiliteitsmodus voor WebGPU biedt een oplossing door een optionele, iets 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 uit te voeren. Hierdoor wordt het bereik van je app aanzienlijk uitgebreid naar apparaten die geen ondersteuning bieden voor moderne, expliciete grafische API's die vereist zijn voor de kern van WebGPU.

Omdat de compatibiliteitsmodus een subset van WebGPU is, zijn apps die ermee zijn gemaakt ook geldige WebGPU-kernapps. Dit betekent dat ze naadloos worden uitgevoerd, zelfs in browsers die de compatibiliteitsmodus niet specifiek ondersteunen.

Voor veel basis-apps is het aanzetten van de compatibiliteitsmodus net zo eenvoudig als featureLevel: "compatibility" doorgeven als je requestAdapter() aanroept. Voor complexere apps zijn misschien kleine aanpassingen nodig om binnen de beperkingen van de modus te vallen. Het Generate Mipmap WebGPU sample 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
}

De functie aanzetten

Standaard staat de WebGPU-compatibiliteitsmodus niet aan in Chrome, maar je kunt ermee experimenteren in Chrome 139 door de functionaliteit expliciet aan te zetten. Je kunt de functie lokaal activeren door de flag Experimentele functies van het webplatform aan te zetten op chrome://flags/#enable-experimental-web-platform-features.

Er loopt een origin trial om dit aan te zetten voor alle bezoekers van je app. Deze test eindigt in Chrome 145 (21 april 2026). Ga naar het bericht Aan de slag met oorsprongstests om deel te nemen aan de test.

Updates voor Dawn

Er is een message-argument toegevoegd aan de functie WGPUQueueWorkDoneCallback om deze beter af te stemmen op andere callbackfuncties die ook een status hebben. Ga naar de PR voor webgpu-headers.

Als emdawnwebgpu is gekoppeld aan -sSHARED_MEMORY, wordt het bestand webgpu.cpp ook gecompileerd met deze vlag. Ga naar Dawn CL 244075.

Dit zijn maar enkele van de belangrijkste punten. Neem de uitgebreide lijst met doorvoeringen door.

Wat is er nieuw in WebGPU?

Een lijst met alles wat is behandeld in de serie Nieuw in WebGPU.

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

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