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.
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.
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
- Unterstützung des WebGPU-Kompatibilitätsmodus unter OpenGL ES 3.1
- Temporäre Anhänge
- WGSL-Erweiterung texture_and_sampler_let
- Dawn-Updates
Chrome 145
- WGSL-Erweiterung subgroup_uniformity
- Experimentelle synchrone Pufferzuordnung in Workern
- Dawn-Updates
Chrome 144
- WGSL-Erweiterung subgroup_id
- WGSL-Erweiterung uniform_buffer_standard_layout
- WebGPU unter Linux
- Schnellere writeBuffer- und writeTexture-Funktionen
- Dawn-Updates
Chrome 143
- Texturkomponentenswizzle
- Entfernung der Verwendung von schreibgeschützten bgra8unorm-Speichertexturen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen belegen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Entfernung der Verwendung von schreibgeschützten bgra8unorm-Speichertexturen
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 139
- Unterstützung für 3D-Texturen für BC- und ASTC-komprimierte Formate
- Neue Funktion „core-features-and-limits“
- Ursprungstest für den WebGPU-Kompatibilitätsmodus
- Dawn-Updates
Chrome 138
- Kurzform für die Verwendung von Puffern als Bindungsressource
- Änderungen der Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 137
- Verwendung von Texturansichten für die externeTextur-Bindung
- Kopieren von Puffern ohne Angabe von Offsets und Größe
- WGSL workgroupUniformLoad mit Zeiger auf Atom
- GPUAdapterInfo-Attribut powerPreference
- Entfernung des GPURequestAdapterOptions-Attributs compatibilityMode
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut isFallbackAdapter
- Verbesserungen der Shader-Kompilierungszeit unter D3D12
- Canvas-Bilder speichern und kopieren
- Aufhebung der Einschränkungen des Kompatibilitätsmodus
- Dawn-Updates
Chrome 135
- Erstellung von Pipeline-Layouts mit Null-Bindungsgruppen-Layout zulassen
- Ansichtsfenster dürfen über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 134
- Verbesserung von Arbeitslasten für maschinelles Lernen mit Untergruppen
- Entfernung der Unterstützung für filterbare Texturtypen mit Gleitkommazahlen als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertexformate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- Verwendung von VideoFrame displaySize für externe Texturen
- Verarbeitung von Bildern mit nicht standardmäßigen Ausrichtungen mit copyExternalImageToTexture
- Verbesserung der Entwicklerfreundlichkeit
- Aktivierung des Kompatibilitätsmodus mit featureLevel
- Bereinigung experimenteller Untergruppenfunktionen
- Entfernung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut adapterInfo
- Konfiguration des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Filterung von Sampler-Einschränkungen für Texturen
- Erweiterte Tests mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Clip-Entfernungen in WGSL
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben
- Inklusive Scan-Funktionen für Untergruppen
- Experimentelle Unterstützung für Multi-Draw Indirect
- Option für die Shader-Modulkompilierung „strict math“
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 129
- HDR-Unterstützung mit Canvas-Tone Mapping-Modus
- Erweiterte Unterstützung für Untergruppen
- Dawn-Updates
Chrome 128
- Tests mit Untergruppen
- Entfernung der Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler bei preventDefault
- WGSL-Interpolation zuerst und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler bei der Befehlscodierung
- Dawn-Updates
Chrome 126
- Erhöhung des Limits für maxTextureArrayLayers
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserungen der Shader-Kompilierungszeit
- Übermittelte Befehlspuffer müssen eindeutig sein
- Dawn-Updates
Chrome 125
Chrome 124
- Schreibgeschützte und Lese-/Schreib-Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Dawn-Updates
Chrome 123
- Unterstützung für integrierte DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntaxzucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Reichweite mit Kompatibilitätsmodus erweitern (Funktion in Entwicklung)
- Erhöhung des Limits für maxVertexAttributes
- Dawn-Updates
Chrome 121
- Unterstützung von WebGPU unter Android
- Verwendung von DXC anstelle von FXC für die Shader-Kompilierung unter Windows
- Zeitstempelabfragen in Compute- und Rendering-Durchläufen
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Speicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen- und Schablonenstatus
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- Vertexformat unorm10-10-10-2
- Texturformat rgb10a2uint
- Dawn-Updates
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture() - Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertexturen
- Dawn-Updates
Chrome 117
- Vertexpuffer aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipelineerstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Caching von Pipelines mit automatisch generiertem Layout
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()zurückgegeben wird - Reibungslose Videowiedergabe bei Aufruf von
importExternalTexture() - Spezifikationskonformität
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates