Start · Sprachen · JavaScript · Referenz · GPUTexture.label

GPUTexture.label

Eigenschaft

Lesbare und schreibbare Bezeichnung einer <code>GPUTexture</code>, über die sich die Textur in Fehlermeldungen, Konsolenwarnungen und Debugging-Tools wiedererkennen lässt.

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

Signatur

GPUTexture.label

Beschreibung

Die Eigenschaft label ist ein String, den du jeder GPUTexture geben kannst. Sie hat keinen Einfluss auf das Rendering. Sie dient nur der Fehlersuche: Browser verwenden die Bezeichnung in Validierungsfehlern (GPUValidationError), in Konsolenwarnungen und in GPU-Debugging-Werkzeugen. So erscheint dort zum Beispiel „[Texture "Schattenkarte"] is destroyed“ und nicht nur ein namenloses Objekt.

Normalerweise wird die Bezeichnung beim Anlegen über das Feld label im Deskriptor von GPUDevice.createTexture() gesetzt. Weil die Eigenschaft beschreibbar ist, kannst du sie später auch direkt ändern. Das ist nützlich, wenn eine Textur im Lauf der Anwendung eine andere Aufgabe bekommt, etwa in einem Textur-Pool.

Wurde keine Bezeichnung angegeben, ist der Wert ein leerer String (""). Die Eigenschaft gehört zum Mixin GPUObjectBase. Deshalb haben auch alle anderen WebGPU-Objekte wie GPUBuffer, GPUTextureView, GPUSampler oder GPURenderPipeline eine label-Eigenschaft, die genauso funktioniert.

Rückgabewert

Typ
string
Beschreibung
Die aktuelle Bezeichnung der Textur. Wurde keine angegeben, ist es ein leerer String "". Beim Setzen wird jeder Wert in einen String umgewandelt.

Beispiele

Bezeichnung beim Anlegen der Textur vergeben

const adapter = await navigator.gpu?.requestAdapter();
if (!adapter) throw new Error('WebGPU wird nicht unterstützt');
const device = await adapter.requestDevice();

const depthTexture = device.createTexture({
  label: 'Tiefenpuffer Hauptszene',
  size: [1280, 720],
  format: 'depth24plus',
  usage: GPUTextureUsage.RENDER_ATTACHMENT,
});

console.log(depthTexture.label);
Tiefenpuffer Hauptszene

Bezeichnung nachträglich lesen und ändern

const texture = device.createTexture({
  size: [256, 256],
  format: 'rgba8unorm',
  usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
});

console.log(JSON.stringify(texture.label)); // noch keine Bezeichnung

// Textur aus einem Pool wird für eine neue Aufgabe verwendet
texture.label = 'Sprite-Atlas Level 3';
console.log(texture.label);
"" Sprite-Atlas Level 3

Bezeichnung in Validierungsfehlern sichtbar machen

const shadowMap = device.createTexture({
  label: 'Schattenkarte',
  size: [2048, 2048],
  format: 'depth32float',
  usage: GPUTextureUsage.RENDER_ATTACHMENT,
});

device.pushErrorScope('validation');

// Fehler: Die Textur hat keine TEXTURE_BINDING-Nutzung
shadowMap.destroy();
shadowMap.createView({ label: 'Schattenkarte-View' });
const encoder = device.createCommandEncoder({ label: 'Schatten-Encoder' });
encoder.beginRenderPass({
  colorAttachments: [],
  depthStencilAttachment: {
    view: shadowMap.createView(),
    depthLoadOp: 'clear',
    depthStoreOp: 'store',
    depthClearValue: 1,
  },
}).end();
device.queue.submit([encoder.finish()]);

const error = await device.popErrorScope();
if (error) console.warn(error.message); // Meldung enthält "Schattenkarte"
Beispielsweise: Destroyed texture [Texture "Schattenkarte"] used in a submit. (Der genaue Text hängt vom Browser ab.)

// Wichtig · Fallstricke

  • Nur für die Fehlersuche: label ändert nichts am Verhalten der Textur. Bezeichnungen müssen nicht eindeutig sein und werden von der GPU nicht ausgewertet.
  • Keine sensiblen Daten: Bezeichnungen erscheinen in Fehlermeldungen, in der Konsole und in Debugging-Werkzeugen. Nutzernamen, Tokens und ähnliche Daten gehören deshalb nicht hinein.
  • Views haben eigene Bezeichnungen: Eine GPUTextureView übernimmt die Bezeichnung ihrer Textur nicht. Gib sie bei createView({ label }) gesondert an.
  • Fehlermeldungen unterscheiden sich: Wie die Meldungen formuliert sind und wo die Bezeichnung darin steht, legt jeder Browser selbst fest. Werte Meldungstexte daher nicht programmatisch aus.
  • Kompatibilität: WebGPU gibt es nur in sicheren Kontexten (HTTPS), und die Unterstützung ist noch lückenhaft. Chromium unterstützt es ab Version 113, Safari ab 26, Firefox ab 141 unter Windows. Prüfe vorher mit navigator.gpu, ob WebGPU verfügbar ist.