Neu in WebGPU (Chrome 139)

François Beaufort
François Beaufort

Veröffentlicht: 30. Juli 2025

Unterstützung für 3D-Texturen für BC- und ASTC-komprimierte Formate

Die WebGPU-Funktionen "texture-compression-bc-sliced-3d" und "texture-compression-astc-sliced-3d" bieten Unterstützung für 3D-Texturen mit den Formaten Block Compression (BC) und Adaptive Scalable Texture Compression (ASTC). So können Sie die effizienten Komprimierungsfunktionen von BC- und ASTC-Formaten für volumetrische Texturdaten nutzen und den Speicherbedarf und die Bandbreitenanforderungen erheblich reduzieren, ohne die visuelle Qualität wesentlich zu beeinträchtigen. Dies ist besonders in Bereichen wie der wissenschaftlichen Visualisierung, der medizinischen Bildgebung und fortschrittlichen Rendering-Techniken von Vorteil.

Das folgende Code-Snippet prüft, ob der Adapter 3D-Texturen mit BC- und ASTC-komprimierten Formaten unterstützt, und fordert ein Gerät mit diesen Funktionen an, falls sie verfügbar sind.

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
}

Sie können 3D-Gehirnscans untersuchen, indem Sie sich das WebGPU-Beispiel für Volume Rendering – Texture 3D ansehen und den chromestatus-Eintrag aufrufen.

Mit WebGPU gerenderte 3D-Gehirnscans.
Ein Gehirnscan aus einer 3D-Textur mit ASTC-komprimiertem Format.

Neue Funktion „core-features-and-limits“

Für den kommenden WebGPU-Kompatibilitätsmodus wird eine neue Funktion namens "core-features-and-limits" eingeführt. Diese Funktion gibt an, dass der Adapter oder das Gerät die Kernfunktionen und -limits der WebGPU-Spezifikation unterstützt. „core“ WebGPU ist derzeit die einzige verfügbare Version. Daher müssen alle WebGPU-Implementierungen "core-features-and-limits" in ihren unterstützten Funktionen enthalten.

Wenn der WebGPU-Kompatibilitätsmodus in Zukunft verfügbar ist, kann es sein, dass ein Adapter oder ein Gerät diese Funktion nicht hat. Das bedeutet, dass es sich um einen Adapter oder ein Gerät im Kompatibilitätsmodus und nicht um einen Core-Adapter oder ein Core-Gerät handelt. Wenn diese Funktion auf einem Gerät aktiviert ist, werden alle Einschränkungen des Kompatibilitätsmodus (Funktionen und Limits) aufgehoben.

Eine detaillierte Erläuterung und Verwendung im WebGPU-Kompatibilitätsmodus finden Sie in der Erläuterung und im folgenden Abschnitt. Siehe Problem 418025721.

Ursprungstest für den WebGPU-Kompatibilitätsmodus

WebGPU ist eine leistungsstarke API für moderne Grafiken, die mit Technologien wie Vulkan, Metal und Direct3D 12 kompatibel ist. Viele Geräte unterstützen diese neueren APIs jedoch noch nicht. Unter Windows haben beispielsweise 31% der Chrome-Nutzer nicht Direct3D 11.1 oder höher. Unter Android haben 15% der Android-Nutzer nicht Vulkan 1.1, darunter 10% ohne Vulkan.

Das stellt Entwickler vor eine Herausforderung, die die Reichweite ihrer Anwendung maximieren möchten. Sie müssen oft mehrere Implementierungen entwickeln (z. B. WebGPU und WebGL), sich mit einer kleineren Zielgruppe mit Core-WebGPU zufrieden geben oder bei WebGL bleiben und die erweiterten Funktionen von WebGPU wie GPU-Computing verpassen.

Visuelle Darstellung des WebGPU-Kompatibilitätsmodus.
Erweiterte Reichweite durch den WebGPU-Kompatibilitätsmodus.

Der WebGPU-Kompatibilitätsmodus bietet eine Lösung, indem er eine optionale, leicht eingeschränkte Version der WebGPU API bereitstellt. Dieser Modus ist für die Ausführung älterer Grafik-APIs wie OpenGL ES 3.1 und Direct3D11 konzipiert und erweitert die Reichweite Ihrer Anwendung erheblich auf Geräte, die keine modernen, expliziten Grafik-APIs unterstützen, die für Core-WebGPU erforderlich sind.

Da der Kompatibilitätsmodus eine Teilmenge von WebGPU ist, sind Anwendungen, die damit erstellt wurden, auch gültige WebGPU-Core-Anwendungen. Das bedeutet, dass sie auch in Browsern nahtlos ausgeführt werden, die den Kompatibilitätsmodus nicht speziell unterstützen.

Bei vielen einfachen Anwendungen ist das Aktivieren des Kompatibilitätsmodus so einfach wie das Übergeben von featureLevel: "compatibility" beim Aufrufen von requestAdapter(). Bei komplexeren Anwendungen sind möglicherweise kleinere Anpassungen erforderlich, um die Einschränkungen des Modus zu erfüllen. Das WebGPU-Beispiel Generate Mipmap ist ein gutes Beispiel.

// 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
}

Feature aktivieren

Standardmäßig ist der WebGPU-Kompatibilitätsmodus in Chrome nicht aktiviert. Sie können ihn jedoch in Chrome 139 testen, indem Sie die Funktion explizit aktivieren. Sie können ihn lokal aktivieren, indem Sie das "Experimentelle Webplattformfunktionen" Flag unter chrome://flags/#enable-experimental-web-platform-features aktivieren.

Um ihn für alle Besucher Ihrer App zu aktivieren, wird derzeit ein Ursprungstest durchgeführt, der in Chrome 145 (21. April 2026) endet. Informationen zur Teilnahme am Ursprungstest finden Sie im Beitrag Ursprungstests.

Dawn-Updates

Der Funktion WGPUQueueWorkDoneCallback wurde ein message-Argument hinzugefügt, um die Konsistenz mit anderen Callback-Funktionen zu erhöhen, die ebenfalls einen Status verwenden. Siehe webgpu-headers PR.

Wenn emdawnwebgpu mit -sSHARED_MEMORY verknüpft ist, wird auch die Datei webgpu.cpp mit diesem Flag kompiliert. Siehe Dawn CL 244075.

Dies sind nur einige der wichtigsten Änderungen. Eine vollständige Liste der Commits finden Sie hier.

Neues in WebGPU

Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.

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