Signatur
Beschreibung
Die Eigenschaft label einer GPURenderPipeline enthält einen frei wählbaren String. Er dient nur der Identifikation beim Debuggen: Der Browser verwendet ihn in GPUValidationError-Meldungen, in Konsolenwarnungen und in Werkzeugen wie den WebGPU-Inspektoren. Auf das Rendering selbst hat das Label keinen Einfluss.
Setzen lässt sich das Label auf zwei Wegen: direkt beim Erstellen über die Eigenschaft label im Deskriptor von GPUDevice.createRenderPipeline() bzw. createRenderPipelineAsync() oder nachträglich, indem man pipeline.label einen neuen Wert zuweist.
Gerade in größeren Anwendungen mit vielen Pipelines (Schatten-, Geometrie- oder Nachbearbeitungs-Pässe) sind aussagekräftige Labels sehr hilfreich. Fehlermeldungen wie „Invalid RenderPipeline "Schatten-Pass"“ zeigen dann sofort, welches Objekt betroffen ist.
Rückgabewert
"". Die Eigenschaft ist schreibbar.Beispiele
Label beim Erstellen der Pipeline setzen
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const format = navigator.gpu.getPreferredCanvasFormat();
const module = device.createShaderModule({
label: 'Dreieck-Shader',
code: `
@vertex fn vs(@builtin(vertex_index) i: u32) -> @builtin(position) vec4f {
var p = array<vec2f, 3>(vec2f(0, 0.5), vec2f(-0.5, -0.5), vec2f(0.5, -0.5));
return vec4f(p[i], 0, 1);
}
@fragment fn fs() -> @location(0) vec4f { return vec4f(1, 0, 0, 1); }
`
});
const pipeline = device.createRenderPipeline({
label: 'Dreieck-Pipeline',
layout: 'auto',
vertex: { module, entryPoint: 'vs' },
fragment: { module, entryPoint: 'fs', targets: [{ format }] }
});
console.log(pipeline.label);
Label nachträglich ändern
// pipeline wurde ohne Label erstellt
console.log(JSON.stringify(pipeline.label));
pipeline.label = 'Nachbearbeitung: Bloom';
console.log(pipeline.label);
Label in Validierungsfehlern sichtbar machen
device.pushErrorScope('validation');
const kaputt = device.createRenderPipeline({
label: 'Schatten-Pass',
layout: 'auto',
vertex: { module, entryPoint: 'gibtEsNicht' }
});
const error = await device.popErrorScope();
if (error) {
// Die Meldung enthält typischerweise das Label, z. B. [RenderPipeline "Schatten-Pass"]
console.warn(error.message);
}
// Wichtig · Fallstricke
- Das Label ist nur zum Debuggen gedacht. Das Format der Fehlermeldungen ist nicht standardisiert, deshalb sollte kein Programmcode die Meldungstexte auswerten.
- Labels können in Fehlermeldungen und Absturzberichten auftauchen. Keine sensiblen Daten wie Nutzernamen oder Token hineinschreiben.
- Wenn
createRenderPipelineAsync()mit einemGPUPipelineErrorfehlschlägt, gibt es kein Pipeline-Objekt. Das Label aus dem Deskriptor kann aber in der Fehlermeldung erscheinen. - WebGPU ist nur in sicheren Kontexten (HTTPS) verfügbar und wird noch nicht überall unterstützt. Vor der Nutzung mit
if (!navigator.gpu)prüfen, ob es vorhanden ist. - Die Eigenschaft stammt aus dem Mixin
GPUObjectBase. Alle WebGPU-Objekte (Buffer, Texturen, Shader-Module usw.) haben dasselbelabel-Verhalten.