Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. GPUDevice
  4. createRenderPipelineAsync()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

GPUDevice: createRenderPipelineAsync() Methode

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.

DiecreateRenderPipelineAsync() Methode derGPUDevice Schnittstelle gibt einPromise zurück, das mit einerGPURenderPipeline erfüllt wird. Diese kann die Vertex- und Fragment-Shader-Stufen steuern und in einemGPURenderPassEncoder oderGPURenderBundleEncoder verwendet werden, sobald die Pipeline ohne Verzögerung genutzt werden kann.

Hinweis:Es ist generell vorzuziehen, diese Methode gegenüberGPUDevice.createRenderPipeline() zu verwenden, wann immer möglich, da so verhindert wird, dass GPU-Operationsausführungen bei der Pipeline-Kompilation blockiert werden.

Syntax

js
createRenderPipelineAsync(descriptor)

Parameter

descriptor

Siehe die Descriptor-Definition für die MethodeGPUDevice.createRenderPipeline().

Rückgabewert

EinPromise, das mit einerGPURenderPipeline Objektinstanz erfüllt wird, wenn die erstellte Pipeline bereit ist, ohne zusätzliche Verzögerung verwendet zu werden.

Validierung

Wenn die Pipeline-Erstellung fehlschlägt und die resultierende Pipeline dadurch ungültig wird, wird das zurückgegebene Promise mit einemGPUPipelineError abgelehnt:

  • Wenn dies auf einen internen Fehler zurückzuführen ist, hat derGPUPipelineError einenreason von"internal".
  • Wenn dies auf einen Validierungsfehler zurückzuführen ist, hat derGPUPipelineError einenreason von"validation".

Ein Validierungsfehler kann auftreten, wenn eine der folgenden Bedingungen falsch ist:

  • FürdepthStencil-Objekte:
    • format ist eindepth-or-stencil Format.
    • Die EigenschaftendepthBias,depthBiasClamp unddepthBiasSlopeScale sind auf0 gesetzt für Linien- und Punkt-Topologien, d.h. wenntopology auf"line-list","line-strip" oder"point-list" gesetzt ist.
    • WenndepthWriteEnabledtrue ist oderdepthCompare nicht"always" ist, hatformat eine Tiefenkomponente.
    • Wenn die Eigenschaften vonstencilFront oderstencilBack nicht ihre Standardwerte haben, hatformat eine Stencil-Komponente.
  • Fürfragment-Objekte:
    • targets.length ist kleiner oder gleich demmaxColorAttachmentsLimit desGPUDevice.
    • Für jedestarget ist der numerische Äquivalent vonwriteMask kleiner als 16.
    • Wenn eine der verwendeten Mischfaktor-Operationen den Quell-Alpha-Kanal verwendet (zum Beispiel"src-alpha-saturated"), hat die Ausgabe einen Alpha-Kanal (d.h. es muss einvec4 sein).
    • Wenn dieentryPoint-Eigenschaft weggelassen wird, enthält der Shader-Code eine einzelne Fragment-Shader-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
  • Fürprimitive-Objekte:
    • Wenn dieunclippedDepth-Eigenschaft verwendet wird, ist diedepth-clip-controlFunktion aktiviert.
  • Fürvertex-Objekte:
    • Wenn dieentryPoint-Eigenschaft weggelassen wird, enthält der Shader-Code eine einzelne Vertex-Shader-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.

Beispiele

Hinweis:DieWebGPU-Beispiele bieten viele weitere Beispiele.

Einfaches Beispiel

Das folgende Beispiel zeigt ein einfaches Beispiel der Konstruktion eines gültigen Render-Pipeline-Descriptor-Objekts, das dann verwendet wird, um eineGPURenderPipeline über einencreateRenderPipelineAsync() Aufruf zu erstellen.

js
async function init() {  // …  const vertexBuffers = [    {      attributes: [        {          shaderLocation: 0, // position          offset: 0,          format: "float32x4",        },        {          shaderLocation: 1, // color          offset: 16,          format: "float32x4",        },      ],      arrayStride: 32,      stepMode: "vertex",    },  ];  const pipelineDescriptor = {    vertex: {      module: shaderModule,      entryPoint: "vertex_main",      buffers: vertexBuffers,    },    fragment: {      module: shaderModule,      entryPoint: "fragment_main",      targets: [        {          format: navigator.gpu.getPreferredCanvasFormat(),        },      ],    },    primitive: {      topology: "triangle-list",    },    layout: "auto",  };  const renderPipeline =    await device.createRenderPipelineAsync(pipelineDescriptor);  // …}

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createrenderpipelineasync

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp