Veröffentlicht am 22. Oktober 2025
Erweiterte Unterstützung für Texturformate
Mit dem neuen "texture-formats-tier1" GPU-Feature können Entwickler vorhandene Inhalte ins Web portieren, ohne sie für die geringeren Möglichkeiten von WebGPU neu schreiben zu müssen. Es unterstützt die neuen Texturformate "r16unorm", "r16snorm", "rg16unorm", "rg16snorm", "rgba16unorm" und "rgba16snorm" mit Renderanhang, Mischbarkeit, Multisample-Funktionen und "read-only" oder "write-only" Speichertexturzugriff. Außerdem werden die vorhandenen Texturformate "r8snorm", "rg8snorm" und "rgba8snorm" mit Renderanhang, Mischbarkeit, Multisample- und Auflösungsfunktionen unterstützt. Weitere Texturformate können auch mit "read-only" oder "write-only" Speichertexturzugriff verwendet werden.
Das neue "texture-formats-tier2" GPU-Feature ermöglicht den "read-write" Speichertexturzugriff für bestimmte Formate, was für Projekte wie das Portieren der Unreal Engine ins Web entscheidend ist. Wenn Sie "texture-formats-tier2" beim Erstellen des Geräts aktivieren, wird automatisch auch "texture-formats-tier1" aktiviert.
Weitere Informationen finden Sie im folgenden Snippet und im chromestatus-Eintrag.
const adapter = await navigator.gpu.requestAdapter();
const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });
// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
// Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
// Use "read-only" or "write-only" storage texture access...
} else {
// Fallback: Use another texture format...
}
Vielen Dank an die Mitarbeiter von Intel für ihre Arbeit.
Primitiver Index in WGSL
Der primitive_index ist ein integrierter WGSL-Wert, der das aktuelle Primitive (z. B. einen Punkt, eine Linie oder ein Dreieck) eindeutig identifiziert, das von einem Fragment-Shader verarbeitet wird. Er beginnt bei 0, wird nach der Verarbeitung jedes Primitiven um 1 erhöht und zwischen den einzelnen gezeichneten Instanzen auf 0 zurückgesetzt.
Wenn das Feature "primitive-index" in einem GPUAdapter verfügbar ist, fordern Sie ein GPUDevice mit diesem Feature an, um die Unterstützung für primitive Indizes in WGSL zu erhalten. Aktivieren Sie diese Erweiterung explizit in Ihrem WGSL-Code mit enable primitive_index;. Nach der Aktivierung können Sie den integrierten Ganzzahlwert primitive_index in Ihrem Fragment-Shader verwenden, um auf Daten pro Primitive zuzugreifen oder Logik auszuführen, die sich beispielsweise für jede gerenderte geometrische Form unterscheidet.
Das folgende Code-Snippet zeigt einen Fragment-Shader, der das zweite Primitive rot und alle anderen primitiven Elemente blau rendert.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
requiredFeatures: ["primitive-index"],
});
const fragmentShaderModule = device.createShaderModule({ code: `
enable primitive_index;
@fragment
fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
if (i == 1) {
return vec4f(1, 0, 0, 1);
}
return vec4f(0, 1, 0, 1);
}`,
});
// Send the appropriate commands to the GPU...
Noch mehr entdecken Sie im Beispiel für die Auswahl von Primitiven und im chromestatus-Eintrag.
Dawn-Updates
Die CMake-Variable DAWN_BUILD_MONOLITHIC_LIBRARY, die zum Verarbeiten des Typs der zu erstellenden monolithischen Bibliothek verwendet wird, hat ihren Standardwert von OFF in STATIC geändert. Standardmäßig werden also die Dateien libwebgpu* generiert.
Dawn verarbeitet jetzt wgpu::PresentMode::Undefined korrekt, wenn eine wgpu::Surface konfiguriert wird. Weitere Informationen finden Sie unter Problem 441410668.
Hier werden nur einige der wichtigsten Neuerungen behandelt. 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 149–150
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
- Swizzle für Texturkomponenten
- Entfernung der schreibgeschützten Nutzung von 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 verbrauchen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Entfernung der schreibgeschützten Nutzung von bgra8unorm-Speichertexturen
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 139
- Unterstützung von 3D-Texturen für komprimierte BC- und ASTC-Formate
- Neues Feature „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
- Puffer werden ohne Angabe von Offsets und Größe kopiert
- WGSL workgroupUniformLoad mit Zeiger auf Atomic
- 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
- Viewports können ü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 vom Typ „float“ als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- 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 Untergruppen-Features
- 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
- Einschränkungen für Sampler für Texturen filtern
- Erweiterte Experimente mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Clip-Abstände 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 „strict math“ für die Kompilierung von Shader-Modulen
- 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
- Experimente 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 für Befehlscodierer
- Dawn-Updates
Chrome 126
- Erhöhung des Limits für maxTextureArrayLayers
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserungen der Shader-Kompilierungszeit
- Eingereichte 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
- Syntax-Zucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Erweiterung der Reichweite mit dem Kompatibilitätsmodus (Feature 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 Render-Passes
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Arbeitsspeicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen-/Schablonenstatus
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Features
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- Vertex-Format 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
- Vertex-Puffer aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipeline-Erstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()zurückgegeben wird - Reibungslose Videowiedergabe, wenn
importExternalTexture()aufgerufen wird - 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