GPUCanvasContext: Methode configure()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die configure()-Methode der GPUCanvasContext-Schnittstelle konfiguriert den Kontext zur Verwendung für das Rendering mit einem gegebenen GPUDevice. Beim Aufruf wird das Canvas zunächst auf transparentes Schwarz geleert.
Syntax
configure(configuration)
Parameter
configuration-
Ein Objekt, das die folgenden Eigenschaften enthält:
alphaModeOptional-
Ein enumerierter Wert, der den Effekt angibt, den Alpha-Werte auf den Inhalt der von
getCurrentTexture()zurückgegebenen Texturen beim Lesen, Anzeigen oder Verwenden als Bildquelle haben werden. Mögliche Werte sind:opaque: Alpha-Werte werden ignoriert — wenn eine Textur noch nicht opak ist, wird der Alpha-Kanal auf 1,0 gelöscht, wenn sie als Bildquelle verwendet oder auf dem Bildschirm angezeigt wird. Dies ist der Standardwert.premultiplied: Farbwerte werden mit ihrem Alpha-Wert multipliziert. Zum Beispiel sind 100 % Rot bei 50 % Alpha[0.5, 0, 0, 0.5].
colorSpaceOptional-
Der Farbraum, mit dem Werte in Texturen, die von
getCurrentTexture()zurückgegeben werden, angezeigt werden sollen. Mögliche Werte sindsrgb(der Standardwert) unddisplay-p3. device-
Das
GPUDevice, das die Rendering-Informationen für den Kontext liefert. format-
Das Format, das Texturen haben werden, die von
getCurrentTexture()zurückgegeben werden. Dies kannbgra8unorm,rgba8unormoderrgba16floatsein. Das optimale Canvas-Texturformat für das aktuelle System kann vonGPU.getPreferredCanvasFormat()zurückgegeben werden. Es wird empfohlen, dieses zu verwenden — wenn Sie das bevorzugte Format beim Konfigurieren des Canvas-Kontexts nicht verwenden, können zusätzliche Overheads auftreten, z. B. zusätzliche Texturkopien, je nach Plattform. toneMappingOptional-
Ein Objekt, das Parameter spezifiziert, die das Tone Mapping für den Kontext definieren — wie der Inhalt der zugehörigen Texturen angezeigt werden soll. Dies ermöglicht es WebGPU, Farben heller als
white(#FFFFFF) zu zeichnen. Mögliche Eigenschaften sind:modeOptional-
Ein enumerierter Wert, der den Tone-Mapping-Modus für das Canvas angibt. Mögliche Werte sind:
standard-
Der Standardwert. Beschränkt den gerenderten Inhalt auf den Standard-Dynamikbereich (SDR) des Displays. Dieser Modus wird erreicht, indem alle Farbwerte im Farbraum des Bildschirms auf das Intervall
[0, 1]eingeschränkt werden. extended-
Ermöglicht das Rendern von Inhalten im gesamten Hochdynamikbereich (HDR) des Displays, sofern verfügbar. Der HDR-Modus erlaubt, eine größere Bandbreite an Farben und Helligkeitsebenen anzuzeigen, mit präziseren Anweisungen, welche Farbe in jedem Fall angezeigt werden soll. Dieser Modus entspricht
"standard"im[0, 1]-Bereich des Bildschirms. Die Einschränkung oder Projektion erfolgt auf den erweiterten Dynamikbereich des Bildschirms, jedoch nicht auf[0, 1].
usageOptional-
Bitweise Flags zur Angabe der erlaubten Nutzung für Texturen, die von
getCurrentTexture()zurückgegeben werden. Mögliche Werte sind:GPUTextureUsage.COPY_SRC: Die Textur kann als Quelle einer Kopieroperation verwendet werden, beispielsweise als Argumentsourceeines Aufrufs vonGPUCommandEncoder.copyTextureToBuffer().GPUTextureUsage.COPY_DST: Die Textur kann als Ziel einer Kopier-/Schreiboperation verwendet werden, beispielsweise als Argumentdestinationeines Aufrufs vonGPUCommandEncoder.copyTextureToTexture().GPUTextureUsage.RENDER_ATTACHMENT: Die Textur kann als Farbanhang in einem Renderpass verwendet werden, beispielsweise in einer Farbanhangansicht in einem Aufruf vonGPUCommandEncoder.beginRenderPass().GPUTextureUsage.RENDER_ATTACHMENTist der Standardwert fürusage, aber beachten Sie, dass dieser nicht automatisch enthalten ist, wenn ein anderer Wert explizit gesetzt wird; in solchen Fällen müssen Sie ihn zusätzlich einbeziehen.GPUTextureUsage.TEXTURE_BINDING: Die Textur kann für die Verwendung als abgetastete Textur in einem Shader gebunden werden, beispielsweise in einem Bindgruppeeintrag in einem Aufruf vonGPUDevice.createBindGroup().GPUTextureUsage.STORAGE_BINDING: Die Textur kann für die Verwendung als Speicherungstextur in einem Shader gebunden werden, beispielsweise in einem Bindgruppeeintrag in einem Aufruf vonGPUDevice.createBindGroup().
Beachten Sie, dass mehrere mögliche Nutzungen unter Verwendung des bitweisen OR-Operators spezifiziert werden können. Zum Beispiel
usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT. viewFormatsOptional-
Ein Array von Formaten, welches Formate enthält, die Ansichten von Texturen, die von
getCurrentTexture()zurückgegeben werden, verwenden dürfen. Siehe Texture Formats für alle möglichen Werte.
Rückgabewert
Kein (undefined).
Ausnahmen
TypeErrorDOMException-
Wird geworfen, wenn
usagedasTRANSIENT_ATTACHMENT-Bit enthält.
Beispiele
>Grundlegende Verwendung
const canvas = document.querySelector("#gpuCanvas");
const context = canvas.getContext("webgpu");
context.configure({
device,
format: navigator.gpu.getPreferredCanvasFormat(),
alphaMode: "premultiplied",
});
HDR-toneMapping-Demos
Siehe das Beispiel Particles (HDR) und den Test HDR support.
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpucanvascontext-configure> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API