Veröffentlicht am 17. Juni 2026
Immediates
Mit Immediates, auch Push-Konstanten oder Root-Konstanten genannt, können Sie kleine Mengen häufig geänderter Daten direkt an Shader übergeben. Dadurch wird der Aufwand für das Erstellen von GPU-Puffern und das Verwalten von Bindungsgruppen umgangen.
Das Aktualisieren von Uniform-Pufferbindungen für Daten, die sich bei jedem Zeichenaufruf ändern, z. B. eine eindeutige Objekt-ID oder eine 3D-Transformationsmatrix für Hunderte von Objekten, verursacht CPU-Overhead. Fügen Sie Rohwerte direkt in den Pass-Encoder ein, um zu vermeiden, dass Daten in den Arbeitsspeicher geschrieben und GPU-Lookups verwaltet werden müssen.
Immediates bieten einen schnellen Pfad für kleine, hochdynamische Variablen. Verwenden Sie Uniform-Puffer oder Speicherpuffer für große Datenarrays, komplexe Beleuchtungsstrukturen oder massive Matrizen.
Im WGSL-Shader können Sie mit dem Adressraum <immediate> sofortige Daten definieren, die direkt an den Pass-Encoder übergeben werden können. Rufen Sie setImmediates() in JavaScript vor einem Zeichenaufruf auf, um diese Daten ohne Bindung einer Gruppe bereitzustellen. Um die Unterstützung zu prüfen, können Sie die WGSL-Spracherweiterung immediate_address_space über navigator.gpu.wgslLanguageFeatures erkennen. Sehen Sie sich das folgende Beispiel und die Absicht zur Auslieferung an.
if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) {
throw new Error(`WGSL immediate address space is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const module = device.createShaderModule({ code: `
requires immediate_address_space;
var<immediate> color: vec4f;
@vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f {
const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1));
return vec4f(pos[i], 0, 1);
}
@fragment fn fragmentMain() -> @location(0) vec4f {
return color;
}`,
});
// Create render pass encoder (omitted)...
// By using layout: 'auto', WebGPU will automatically infer the `immediateSize`
// required by the pipeline layout from the WGSL module.
const pipeline = device.createRenderPipeline({
layout: 'auto',
vertex: { module },
fragment: { module, targets: [{ format }] },
});
myRenderPassEncoder.setPipeline(pipeline);
// Send immediate data to the GPU, then issue a draw call
myRenderPassEncoder.setImmediates(/*rangeOffset=*/0, new Float32Array([255, 0, 0, 255]));
myRenderPassEncoder.draw(3);
myRenderPassEncoder.end();
Weitere Informationen zu dieser Funktion finden Sie unter WebGPUFundamentals Immediates.
Vielen Dank an das Team von Microsoft für seine Beiträge.
Strengere Validierung für temporäre Anhänge
In WebGPU wurde vor Kurzem das TRANSIENT_ATTACHMENT GPUTextureUsage-Flag eingeführt, mit dem Entwickler temporäre Renderanhänge wie Tiefen-Stencil-Puffer oder Multisample-Ziele erstellen können. Diese Anhänge bleiben im schnellen On-Chip-Tile-Speicher, ohne dass Haupt-VRAM zugewiesen werden muss.
Mit den letzten Updates (#6248 und #6267) werden die Validierungsregeln verfeinert, um den Missbrauch dieser speichereffizienten Texturanhänge zu verhindern:
- Aufgrund von Plattformbeschränkungen muss
viewFormatsbeim Erstellen temporärer Texturen ein leeres Array sein. Alternative Ansichtsformate sind nicht erforderlich, da temporäre Texturen nur für das Rendering verwendet werden. - Durch das Erstellen einer Texturansicht werden die Nutzungsflags nicht eingeschränkt. Wenn Sie
createView()für eine temporäre Textur aufrufen, kann die Ansicht ihre Verwendung nicht ändern. - Temporäre Anhänge können in einem Renderpass nicht als
resolveTargetverwendet werden.
Dawn-Updates
Hier werden nur einige der wichtigsten Highlights 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 Speichertexturverwendung bgra8unorm
- 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
- Einstellung der schreibgeschützten Speichertexturverwendung bgra8unorm
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 139
- Unterstützung von 3D-Texturen für komprimierte BC- und ASTC-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
- Einstellung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 137
- Verwendung der Texturansicht für die externalTexture-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
- Zulassen, dass Viewports über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits 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 Vertex-Formate mit einer Komponente
- Anfrage 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
- Einstellung des Limits maxInterStageShaderComponents
- Dawn-Updates
Chrome 132
- Verwendung der Texturansicht
- 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-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-Modul-Kompilierung „strict math“
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Einstellung 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
- Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler, wenn 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 Befehls-Encoder
- Dawn-Updates
Chrome 126
- Erhöhung des Limits 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
- Syntax-Zucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Stencil- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Erweiterung der Reichweite mit dem Kompatibilitätsmodus (Funktion in Entwicklung)
- Erhöhung des Limits 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 Renderpasses
- 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
- An die Grenzen gehen
- Änderungen am Tiefen-Stencil-Status
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
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 verwenden
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates