Filterbare 32-Bit-Float-Texturen
32-Bit-Gleitkommatexturen werden zum Speichern hochpräziser Daten wie HDR-Bilder und Tiefenkarten verwendet. Sie sind besonders wichtig für GPUs, die in High-End-Gaming- und professionellen Anwendungen verwendet werden.
Die Unterstützung für filterbare 32-Bit-Float-Texturen beschreibt die Fähigkeit einer GPU, 32-Bit-Gleitkommatexturen zu filtern. Das bedeutet, dass die GPU die Ränder von Gleitkommatexturen glätten kann, damit sie weniger zerklüftet erscheinen. Sie ähnelt der Erweiterung „OES_texture_float_linear“ in WebGL.
Nicht alle GPUs unterstützen filterbare 32-Bit-Float-Texturen. Wenn die Funktion „"float32-filterable"
“ in einem GPUAdapter
verfügbar ist, können Sie jetzt mit dieser Funktion ein GPUDevice
anfordern und Texturen mit den Formaten „r32float“, „rg32float“ und „rgba32float“ filtern. Sehen Sie sich das folgende Beispiel und issue dawn:1664 an.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-filterable")) {
throw new Error("Filterable 32-bit float textures support is not available");
}
// Explicitly request filterable 32-bit float textures support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-filterable"],
});
// Create a sampler with linear filtering.
const sampler = device.createSampler({
magFilter: "linear",
});
// Create a texture with rgba32float format.
const texture = device.createTexture({
size: [100, 100],
format: "rgba32float",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with sampler and texture and
// send the appropriate commands to the GPU....
unorm10-10-10-2-Vertex-Format
In der WebGPU-Spezifikation wurde ein neues Vertex-Format namens „unorm10-10-10-2“ bzw. „rgb10a2“ hinzugefügt. Sie besteht aus einem verpackten 32-Bit-Wert mit vier normalisierten vorzeichenlosen Ganzzahlwerten, die in 10 Bit, 10 Bit, 10 Bit und 2 Bit angeordnet sind. Sehen Sie sich das folgende Beispiel und issue dawn:2044 an.
// Define the layout of vertex attribute data with unorm10-10-10-2 format.
const buffers = [
{
arrayStride: 0,
attributes: [
{ format: "unorm10-10-10-2", offset: 0, shaderLocation: 0 },
],
},
];
// Describe the vertex shader entry point and its input buffer layouts.
const vertex = {
module: myVertexShaderModule,
entryPoint: "main",
buffers,
};
// Pass vertex to device.createRenderPipeline() and
// use vec4<f32> type in WGSL shader code to manipulate data.
RGB10a2uint-Texturformat
Ein neues Texturformat namens „rgb10a2uint“ wurde der WebGPU-Spezifikation hinzugefügt. Sie besteht aus einem 32-Bit-Pixelformat mit vier vorzeichenlosen Ganzzahlkomponenten: 10-Bit-Rot, 10-Bit-Grün, 10-Bit-Blau und 2-Bit-Alpha. Sehen Sie sich das folgende Beispiel und issue dawn:1936 an.
// Create a texture with rgb10a2uint format.
const texture = device.createTexture({
size: [100, 100],
format: "rgb10a2uint",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with texture and
// send the appropriate commands to the GPU....
Updates zum Morgengrauen
Durch Zeitstempelabfragen können WebGPU-Anwendungen bis auf die Nanosekunde genau messen, wie viel Zeit ihre GPU-Befehle für die Ausführung benötigen. Die API-Form zum Erfassen von Zeitstempelabfragen am Anfang und Ende von Karten/Tickets wurde aktualisiert, um der WebGPU-Spezifikation zu entsprechen. Sehen Sie sich das folgende Beispiel und issue dawn:1800 an.
// Create a timestamp query set that will store the timestamp values.
wgpu::QuerySetDescriptor querySetDescriptor = {
.count = 2,
.type = wgpu::QueryType::Timestamp};
wgpu::QuerySet querySet = device.CreateQuerySet(&querySetDescriptor);
wgpu::RenderPassTimestampWrites timestampWrites = {
.querySet = querySet,
.beginningOfPassWriteIndex = 0,
.endOfPassWriteIndex = 1};
wgpu::ComputePassDescriptor pass{.timestampWrites = ×tampWrites};
// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);
Dies sind nur einige der wichtigsten Punkte. Hier finden Sie eine vollständige Liste der Commits.
Neu bei WebGPU
Hier finden Sie eine Liste aller Inhalte, die in der Reihe What's New in WebGPU behandelt wurden.
Chrome 125
Chrome 124
- Schreibgeschützte und nicht schreibgeschützte Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Updates zum Morgengrauen
Chrome 123
- Unterstützung von integrierten Funktionen in DP4a in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntax für die Dereferenzierung von zusammengesetzten Elementen in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Updates zum Morgengrauen
Chrome 122
- Reichweite mit Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit für „maxVertexAttributes“ erhöhen
- Updates zum Morgengrauen
Chrome 121
- Unterstützung von WebGPU unter Android
- Für die Shader-Kompilierung unter Windows DXC statt FXC verwenden
- Zeitstempelabfragen in Rechen- und Renderingdurchläufen
- Standardeinstiegspunkte für Shader-Module
- display-p3 als GPUExternalTexture-Farbraum unterstützen
- Informationen zum Arbeitsspeicher-Heaps
- Updates zum Morgengrauen
Chrome 120
- Unterstützung von 16-Bit-Gleitkommawerten in WGSL
- Gehe an die Grenzen
- Änderungen am Status der Tiefenschablone
- Aktualisierungen der Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Frühjahrsputz-Funktionen
Chrome 119
- Filterbare 32-Bit-Float-Texturen
- Vertex-Format „unorm10-10-10-2“
- rgb10a2uint Texturformat
- Updates zum Morgengrauen
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture()
- Experimentelle Unterstützung für nicht schreibgeschützte und schreibgeschützte Speichertexturen
- Updates zum Morgengrauen
Chrome 117
- Nicht festgelegter Vertex-Zwischenspeicher
- Bindungsgruppe aufheben
- Fehler aufgrund asynchroner Pipelineerstellung bei Verlust des Geräts stummschalten
- Updates zur Erstellung von SPIR-V-Shader-Modulen
- Entwicklererfahrung verbessern
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Updates zum Morgengrauen
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät vom GPUAdapter
requestDevice()
zurückgegeben - Für eine flüssige Videowiedergabe bei
importExternalTexture()
-Aufrufen sorgen - Spezifikationskonformität
- Entwicklererfahrung verbessern
- Updates zum Morgengrauen
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Diskrete GPU standardmäßig mit Netzstrom betreiben
- Entwicklererfahrung verbessern
- Updates zum Morgengrauen
Chrome 114
- JavaScript optimieren
- getCurrentTexture() auf nicht konfiguriertem Canvas wirft InvalidStateError
- Updates zu WGSL
- Updates zum Morgengrauen