Start · Sprachen · JavaScript · Referenz · GPUTextureView.label

GPUTextureView.label

Eigenschaft

Lesbare und schreibbare Zeichenkette, die eine <code>GPUTextureView</code> benennt, damit sie in <code>GPUError</code>-Meldungen, Konsolenwarnungen und Debug-Werkzeugen erkennbar ist.

seit JavaScript WebGPU – Chrome/Edge 113+, Safari 26+, Firefox 141 Kategorie: webapi

Signatur

GPUTextureView.label

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

Typ
string
Beschreibung
Das aktuelle Label der 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);
Tiefenpuffer-Ansicht

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);
"" Albedo – Mip 2

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);
}
Fehler bei "Skybox-Ansicht": … (browserabhängige Meldung)

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 GPUTexture wird 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.gpu prüfen, ob es vorhanden ist.