Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
GPUComputePassEncoder
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DieGPUComputePassEncoder-Schnittstelle derWebGPU-API kodiert Befehle, die mit der Steuerung der Compute-Shader-Phase verbunden sind und von einerGPUComputePipeline ausgegeben werden. Sie ist Teil der umfassenden Kodierungsaktivität einesGPUCommandEncoder.
Eine Compute-Pipeline enthält eine einzelne Compute-Stufe, in der ein Compute-Shader allgemeine Daten verarbeitet, diese parallel über eine festgelegte Anzahl von Arbeitsgruppen verarbeitet und das Ergebnis in einem oder mehreren Puffern zurückgibt.
EinGPUComputePassEncoder-Objekt wird über dieGPUCommandEncoder.beginComputePass()-Eigenschaft erstellt.
In diesem Artikel
Instanz-Eigenschaften
Instanz-Methoden
dispatchWorkgroups()Sendet ein spezifisches Raster von Arbeitsgruppen, um die Arbeit zu erledigen, die von der aktuellen
GPUComputePipelinedurchgeführt wird.dispatchWorkgroupsIndirect()Sendet ein Raster von Arbeitsgruppen, definiert durch die Parameter eines
GPUBuffer, um die Arbeit der aktuellenGPUComputePipelineauszuführen.end()Beendet die Aufzeichnung der aktuellen Compute-Pass-Befehlssequenz.
insertDebugMarker()Markiert einen bestimmten Punkt in einer Serie von kodierten Befehlen mit einem Label.
popDebugGroup()Beendet eine Debug-Gruppe, die mit einem
pushDebugGroup()-Aufruf begonnen wurde.pushDebugGroup()Beginnt eine Debug-Gruppe, die mit einem angegebenen Label markiert wird und alle nachfolgenden kodierten Befehle bis zu einer
popDebugGroup()-Methode enthält.setBindGroup()Stellt die
GPUBindGroupein, die für die folgenden Compute-Befehle für einen gegebenen Index verwendet werden soll.setPipeline()Stellt die
GPUComputePipelineein, die für diesen Compute-Pass verwendet werden soll.
Beispiele
In unserembasischen Compute-Demo werden mehrere Befehle über einenGPUCommandEncoder aufgezeichnet. Die meisten dieser Befehle stammen von demGPUComputePassEncoder, der überGPUCommandEncoder.beginComputePass() erstellt wurde.
// …// Create GPUCommandEncoder to encode commands to issue to the GPUconst commandEncoder = device.createCommandEncoder();// Create GPUComputePassEncoder to initiate compute passconst passEncoder = commandEncoder.beginComputePass();// Issue commandspassEncoder.setPipeline(computePipeline);passEncoder.setBindGroup(0, bindGroup);passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));// End the compute passpassEncoder.end();// Copy output buffer to staging buffercommandEncoder.copyBufferToBuffer( output, 0, // Source offset stagingBuffer, 0, // Destination offset BUFFER_SIZE,);// End frame by passing array of command buffers to command queue for executiondevice.queue.submit([commandEncoder.finish()]);// …Spezifikationen
| Specification |
|---|
| WebGPU> # gpucomputepassencoder> |
Browser-Kompatibilität
Siehe auch
- DieWebGPU-API