Signatur
Beschreibung
Die Eigenschaft label gehört zum Mixin GPUObjectBase und ist daher auf allen WebGPU-Objekten vorhanden, also auch auf GPUTextureView. Sie enthält einen frei wählbaren Namen, mit dem Browser und Grafik-Debugger (z. B. PIX, RenderDoc, Xcode GPU Frame Capture) die Ansicht in Fehlermeldungen und Validierungswarnungen benennen. So wird etwa aus „Invalid TextureView“ eine Meldung wie „Invalid TextureView "Tiefenpuffer-Ansicht"“.
Ein Label lässt sich auf zwei Arten vergeben: gleich beim Erzeugen über die Eigenschaft label im Deskriptor von GPUTexture.createView() oder nachträglich durch Zuweisung an view.label. Wird kein Label angegeben, ist der Wert eine leere Zeichenkette "".
Labels sind vor allem dann nützlich, wenn eine Anwendung viele Texturansichten verwaltet, etwa einzelne Mip-Stufen, Array-Ebenen, Cubemap-Seiten oder die pro Frame neu erzeugte Ansicht der Canvas-Textur. Das Label beeinflusst das Rendern nicht, es dient ausschließlich zur Diagnose.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | "" | Beim Zuweisen: der neue Name der Texturansicht. Andere Werte werden nach den WebIDL-Regeln in eine Zeichenkette umgewandelt (USVString). |
Rückgabewert
GPUTextureView. Ist keines gesetzt, eine leere Zeichenkette.Beispiele
Label beim Erzeugen der Ansicht setzen
const adapter = await navigator.gpu?.requestAdapter();
if (!adapter) throw new Error('WebGPU nicht verfügbar');
const device = await adapter.requestDevice();
const depthTexture = device.createTexture({
label: 'Tiefenpuffer',
size: [800, 600],
format: 'depth24plus',
usage: GPUTextureUsage.RENDER_ATTACHMENT,
});
const depthView = depthTexture.createView({ label: 'Tiefenpuffer-Ansicht' });
console.log(depthView.label);
Label nachträglich zuweisen und auslesen
const texture = device.createTexture({
size: [256, 256],
format: 'rgba8unorm',
mipLevelCount: 9,
usage: GPUTextureUsage.TEXTURE_BINDING,
});
const view = texture.createView({ baseMipLevel: 2, mipLevelCount: 1 });
console.log(JSON.stringify(view.label)); // noch kein Label
view.label = 'Albedo – Mip 2';
console.log(view.label);
Validierungsfehler mit benannter Ansicht abfangen
device.pushErrorScope('validation');
// Fehler: Ansicht einer 2D-Textur als 'cube' anlegen (braucht 6 Ebenen)
const badView = texture.createView({
label: 'Skybox-Ansicht',
dimension: 'cube',
});
const error = await device.popErrorScope();
if (error) {
// Die Meldung nennt das Label, z. B. ... [TextureView "Skybox-Ansicht"] ...
console.warn(`Fehler bei "${badView.label}":`, error.message);
}
Canvas-Ansicht pro Frame benennen
const context = document.querySelector('canvas').getContext('webgpu');
context.configure({ device, format: navigator.gpu.getPreferredCanvasFormat() });
let frame = 0;
const render = () => {
const view = context.getCurrentTexture().createView({
label: `Canvas-Ansicht Frame ${frame++}`,
});
// ... Render-Pass mit view als colorAttachment ...
requestAnimationFrame(render);
};
requestAnimationFrame(render);
// Wichtig · Fallstricke
- Nur zur Diagnose: Das Label hat keinen Einfluss auf das Rendern. Es muss nicht eindeutig sein. Wie und ob es in Fehlermeldungen erscheint, hängt vom Browser ab.
- Ansicht und Textur sind getrennt: Das Label der
GPUTexturewird nicht automatisch an die Ansicht vererbt. Ansichten sollten ein eigenes Label bekommen, am besten eines, das Textur und Ausschnitt nennt (z. B. „Schatten – Ebene 3“). - Keine sensiblen Daten: Labels können in Fehlerprotokollen, Absturzberichten und Debug-Werkzeugen auftauchen. Keine Nutzerdaten oder Geheimnisse hineinschreiben.
- Leistung: Wer pro Frame neue Ansichten mit Template-Strings benennt, erzeugt jedes Mal eine Zeichenkette. Das kostet wenig, lässt sich in Produktionsbuilds aber abschalten.
- Kompatibilität: WebGPU steht nur in sicheren Kontexten zur Verfügung und ist nicht in allen Browsern bzw. auf allen Plattformen aktiviert. Vorher mit
navigator.gpuprüfen, ob es vorhanden ist.