Movatterモバイル変換


[0]ホーム

URL:


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

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

View in EnglishAlways switch to English

GPUDevice: createRenderPipeline() 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.

DiecreateRenderPipeline() Methode derGPUDevice Schnittstelle erstellt eineGPURenderPipeline, die die Vertex- und Fragment-Shader-Stufen steuern und in einemGPURenderPassEncoder oderGPURenderBundleEncoder verwendet werden kann.

Syntax

js
createRenderPipeline(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

depthStencilOptional

Ein Objekt (siehedepthStencil Objektstruktur), das die Tiefen-Stencil-Eigenschaften einschließlich Tests, Operationen und Verzerrung beschreibt.

fragmentOptional

Ein Objekt (siehefragment Objektstruktur), das den Fragment-Shader-Einstiegspunkt der Pipeline und seine Ausgabefarben beschreibt. Wenn kein Fragment-Shader-Einstiegspunkt definiert ist, erzeugt die Pipeline keine Farbanhang-Ausgaben, führt jedoch weiterhin Rasterisierung durch und erzeugt Tiefenwerte basierend auf dem Vertex-Positionsausgang. Tiefentests und Stencil-Operationen können weiterhin genutzt werden.

labelOptional

Ein String, der eine Bezeichnung liefert, mit der das Objekt identifiziert werden kann, zum Beispiel inGPUError-Meldungen oder Konsolenwarnungen.

layout

Definiert das Layout (Struktur, Zweck und Typ) aller GPU-Ressourcen (Puffer, Texturen usw.), die während der Ausführung der Pipeline verwendet werden. Mögliche Werte sind:

  • EinGPUPipelineLayout-Objekt, erstellt mitGPUDevice.createPipelineLayout(), das es der GPU ermöglicht, im Voraus zu bestimmen, wie die Pipeline am effizientesten ausgeführt wird.
  • Ein String"auto", der die Pipeline dazu bringt, basierend auf allen in den Shader-Code definierten Bindungen ein implizites Bindungsgruppen-Layout zu generieren. Wenn"auto" verwendet wird, können die generierten Bindungsgruppen-Layouts nur mit der aktuellen Pipeline verwendet werden.
multisampleOptional

Ein Objekt (siehemultisample Objektstruktur), das beschreibt, wie die Pipeline mit einer renderpass's multisampled Anhängen interagiert.

primitiveOptional

Ein Objekt (sieheprimitive Objektstruktur), das beschreibt, wie eine Pipeline Primitiven aus ihren Vertex-Eingaben konstruiert und rasterisiert.

vertex

Ein Objekt (siehevertex Objektstruktur), das den Vertex-Shader-Einstiegspunkt der Pipeline und seine Eingabepuffer-Layouts beschreibt.

depthStencil Objektstruktur

DasdepthStencil Objekt kann die folgenden Eigenschaften enthalten:

depthBiasOptional

Eine Zahl, die eine konstante Tiefenverzerrung darstellt, die zu jedem Fragment hinzugefügt wird. Wenn nicht angegeben, istdepthBias standardmäßig 0.

Hinweis:Die EigenschaftendepthBias,depthBiasClamp unddepthBiasSlopeScale müssen auf0 gesetzt werden, wenn lineare und punktförmige Topologien verwendet werden, d.h. wenntopology auf"line-list","line-strip" oder"point-list" gesetzt ist. Andernfalls wird einGPUValidationError generiert und die zurückgegebeneGPURenderPipeline wird ungültig sein.

depthBiasClampOptional

Eine Zahl, die den maximalen Tiefenverzerrungswert eines Fragments darstellt. Wenn nicht angegeben, istdepthBiasClamp standardmäßig 0.

depthBiasSlopeScaleOptional

Eine Zahl, die eine Tiefenverzerrung darstellt, die mit der Neigung des Fragments skaliert wird. Wenn nicht angegeben, istdepthBiasSlopeScale standardmäßig 0.

depthCompareOptional

Ein enumerierter Wert, der die Vergleichsoperation angibt, die zur Prüfung von Fragmenttiefen gegendepthStencilAttachment-Tiefenwerte verwendet wird. Mögliche Werte sind:

  • "never": Vergleichstests schlagen nie zu.
  • "less": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er kleiner als der abgetastete Wert ist.
  • "equal": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er gleich dem abgetasteten Wert ist.
  • "less-equal": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er kleiner oder gleich dem abgetasteten Wert ist.
  • "greater": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er größer als der abgetastete Wert ist.
  • "not-equal": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er nicht gleich dem abgetasteten Wert ist.
  • "greater-equal": Ein bereitgestellter Wert besteht den Vergleichstest, wenn er größer oder gleich dem abgetasteten Wert ist.
  • "always": Vergleichstests bestehen immer.

depthCompare ist nicht erforderlich, wenn das angegebeneformat keine Tiefenkomponente hat oder wenn die Vergleichsoperation nicht verwendet wird.

depthWriteEnabledOptional

Ein boolescher Wert. Ein Wert vontrue gibt an, dass dieGPURenderPipeline diedepthStencilAttachment-Tiefenwerte nach der Erstellung ändern kann. Wenn sie auffalse gesetzt ist, bedeutet dies, dass sie dies nicht kann.

depthWriteEnabled ist nicht erforderlich, wenn das angegebeneformat keine Tiefenkomponente hat.

format

Ein enumerierter Wert, der dasdepthStencilAttachment-Format angibt, das mit derGPURenderPipeline kompatibel sein wird. Siehe den AbschnittTexturformate der Spezifikation für alle verfügbarenformat-Werte.

stencilBackOptional

Ein Objekt, das definiert, wie Stencil-Vergleiche und -Operationen für rückwärtige Primitiven durchgeführt werden. Seine Eigenschaften können sein:

compareOptional

Ein enumerierter Wert, der die Vergleichsoperation angibt, die beim Testen von Fragmenten gegendepthStencilAttachment-Stencil-Werte verwendet wird. Mögliche Werte sind die gleichen wie für diedepthCompare-Eigenschaft; siehe oben. Wenn nicht angegeben, istcompare standardmäßig"always".

depthFailOpOptional

Ein enumerierter Wert, der die Stencil-Operation angibt, die ausgeführt wird, wenn der Fragmenttiefenvergleich, der durchdepthCompare beschrieben wird, fehlschlägt. Mögliche Werte sind:

  • "decrement-clamp": Verringert den aktuellen Renderstatus-Stencilwert, indem er auf 0 geklemmt wird.
  • "decrement-wrap": Verringert den aktuellen Renderstatus-Stencilwert, indem er auf den maximal darstellbaren Wert des Stencil-Aspekts desdepthStencilAttachment umgeschlagen wird, wenn der Wert unter 0 geht.
  • "invert": Bitweises Invertieren des aktuellen Renderstatus-Stencilwerts.
  • "increment-clamp": Erhöht den aktuellen Renderstatus-Stencilwert, indem er auf den maximal darstellbaren Wert des Stencil-Aspekts desdepthStencilAttachment geklemmt wird.
  • "increment-wrap": Erhöht den aktuellen Renderstatus-Stencilwert, indem er auf 0 umgeschlagen wird, wenn der Wert den maximal darstellbaren Wert des Stencil-Aspekts desdepthStencilAttachment übersteigt.
  • "keep": Beibehaltung des aktuellen Stencil-Werts.
  • "replace": Setzen des Stencil-Werts auf den aktuellen Renderstatus-Stencilwert.
  • "zero": Setzen des Stencil-Werts auf 0.

Wenn nicht angegeben, istdepthFailOp standardmäßig"keep".

Hinweis:Der Renderstatus-Stencilwert ist am Anfang eines Renderdurchgangs auf 0 initialisiert.

failOpOptional

Ein enumerierter Wert, der die Stencil-Operation angibt, die ausgeführt wird, wenn der Fragment-Stencil-Vergleichstest, der durchcompare beschrieben wird, fehlschlägt. Mögliche und Standardwerte sind die gleichen wie fürdepthFailOp.

passOpOptional

Ein enumerierter Wert, der die Stencil-Operation angibt, die ausgeführt wird, wenn der Fragment-Stencil-Vergleichstest, der durchcompare beschrieben wird, besteht. Mögliche und Standardwerte sind die gleichen wie fürdepthFailOp.

stencilFrontOptional

Ein Objekt, das definiert, wie Stencil-Vergleiche und -Operationen für frontseitige Primitives durchgeführt werden. Seine Eigenschaften sind dieselben wie fürstencilBack.

stencilReadMaskOptional

Eine Bitmaske, die steuert, welche Stencil-Wert-Bits vondepthStencilAttachment beim Ausführen von Stencil-Vergleichstests gelesen werden. Wenn nicht angegeben, iststencilReadMask standardmäßig0xFFFFFFFF.

stencilWriteMaskOptional

Eine Bitmaske, die steuert, welche Stencil-Wert-Bits vondepthStencilAttachment beim Ausführen von Stencil-Operationen geschrieben werden. Wenn nicht angegeben, iststencilWriteMask standardmäßig0xFFFFFFFF.

Hinweis:DiedepthStencilAttachment-Werte werden während derGPUCommandEncoder.beginRenderPass()-Aufrufe angegeben, wenn dieGPURenderPipeline tatsächlich verwendet wird, um einen Renderdurchgang auszuführen.

fragment Objektstruktur

Dasfragment Objekt enthält ein Array von Objekten, die jeweils die folgenden Eigenschaften enthalten können:

constantsOptional

Eine Sequenz von Aufzeichnungstypen mit der Struktur(id, value), die Überschreibungswerte fürWGSL-Konstanten, die in der Pipeline überschrieben werden können, darstellen. Diese Verhalten sich wiegeordnete Maps. In jedem Fall istid ein Schlüssel, der zum Identifizieren oder Auswählen der Aufzeichnung verwendet wird, und dasconstant ist ein enumerierter Wert, der ein WGSL darstellt.

Abhängig davon, welche Konstanten Sie überschreiben möchten, kannid die Form der numerischen ID der Konstante annehmen, sofern eine festgelegt ist, oder anderweitig den Bezeichnernamen der Konstante.

Ein Codeausschnitt, der Überschreibungswerte für mehrere überschreibbare Konstanten bereitstellt, könnte so aussehen:

js
({  // …  constants: {    0: false,    1200: 3.0,    1300: 2.0,    width: 20,    depth: -1,    height: 15,  },});
entryPointOptional

Der Name der Funktion immodule, die diese Stufe zur Durchführung ihrer Arbeit verwenden wird. Die entsprechende Shader-Funktion muss das@fragment-Attribut haben, um als dieser Einstiegspunkt identifiziert zu werden. Weitere Informationen finden Sie in derEinstiegspunkt-Erklärung.

Sie können die EigenschaftentryPoint weglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@fragment-Attribut enthält — der Browser wird diese als Standardeinstiegspunkt verwenden. WennentryPoint ausgelassen wird und der Browser keinen Standardeinstiegspunkt ermitteln kann, wird einGPUValidationError generiert und die resultierendeGPURenderPipeline wird ungültig sein.

module

EinGPUShaderModule-Objekt, das denWGSL-Code enthält, der in dieser programmierbaren Stufe ausgeführt wird.

targets

Ein Array von Objekten, die Farbzustände darstellen, die Konfigurationsdetails für die Farben, die von der Fragment-Shader-Stufe ausgegeben werden, darstellen. Diese Objekte können die folgenden Eigenschaften enthalten:

blendOptional

Ein Objekt, das einen Mischmodus beschreibt, der auf die Ausgabe-Farbe angewendet wird.blend hat zwei Eigenschaften:

alpha

Beschreibt den Alphakanalwert.

color

Beschreibt den Farbwert.

alpha undcolor nehmen beide ein Objekt als Wert an, das die folgenden Eigenschaften haben kann:

dstFactorOptional

Ein enumerierter Wert, der die Mischfaktor-Operation definiert, die auf Werte aus dem Zielanhang ausgeführt werden soll. Mögliche Werte sind:

  • "constant"
  • "dst"
  • "dst-alpha"
  • "one"
  • "one-minus-dst"
  • "one-minus-src"
  • "one-minus-src1"
  • "one-minus-src-alpha"
  • "one-minus-src1-alpha"
  • "one-minus-dst-alpha"
  • "one-minus-constant"
  • "src"
  • "src1"
  • "src-alpha"
  • "src1-alpha"
  • "src-alpha-saturated"
  • "zero"

Wenn nicht angegeben, istdstFactor standardmäßig"zero".

Hinweis:Diedual-source-blendingFunktion muss aktiviert sein, damit die Mischfaktoroperationensrc1,one-minus-src1,src1-alpha undone-minus-src1-alpha erfolgreich verwendet werden können. Andernfalls wird einGPUValidationError generiert.

operationOptional

Ein enumerierter Wert, der den Algorithmus definiert, der verwendet wird, um Quell- und Ziel-Mischfaktoren zu kombinieren, um die endgültigen Werte zu berechnen, die den Zielanhang-Komponenten geschrieben werden. Mögliche Werte sind:

  • "add"
  • "max"
  • "min"
  • "reverse-subtract"
  • "subtract"

Wenn nicht angegeben, istoperation standardmäßig"add".

srcFactorOptional

Ein enumerierter Wert, der die Mischfaktor-Operation definiert, die auf Werte aus dem Fragment-Shader ausgeführt wird. Mögliche Werte sind die gleichen wie fürdstFactor. Wenn nicht angegeben, istsrcFactor standardmäßig"one".

Hinweis:Eine detaillierte Erklärung der Algorithmen, die durch jedendstFactor/srcFactor- undoperation-enumerierten Wert definiert sind, finden Sie im AbschnittMischzustand der Spezifikation.

format

Ein enumerierter Wert, der das erforderliche Format für Ausgabefarben angibt. Siehe den AbschnittTexturformate der Spezifikation für alle verfügbarenformat-Werte.

Hinweis:Damit die Formater32float,rg32float undrgba32float mitMischung verwendet werden können, muss diefloat32-blendableFunktion im Gerät verfügbar sein.

writeMaskOptional

Eine oder mehrerebitweise Flags, die die Schreibmaske definieren, die auf den Farbzielzustand angewendet wird. Mögliche Flag-Werte sind:

  • GPUColorWrite.RED
  • GPUColorWrite.GREEN
  • GPUColorWrite.BLUE
  • GPUColorWrite.ALPHA
  • GPUColorWrite.ALL

Wenn nicht angegeben, istwriteMask standardmäßigGPUColorWrite.ALL.

Beachten Sie, dass mehrere Flags durch Trennen von Werten mitbitwise OR angegeben werden können, zum Beispiel:GPUColorWrite.RED | GPUColorWrite.ALPHA.

multisample Objektstruktur

Dasmultisample Objekt kann die folgenden Eigenschaften enthalten:

alphaToCoverageEnabledOptional

Ein boolescher Wert. Ein Wert vontrue gibt an, dass der Alphakanal eines Fragments verwendet werden sollte, um eine Abdeckungsmaske für Proben zu generieren. Wenn nicht angegeben, istalphaToCoverageEnabled standardmäßigfalse.

countOptional

Eine Zahl, die die Anzahl der Proben pro Pixel definiert. Die Pipeline ist nur mit Anhängatexturen (colorAttachments unddepthStencilAttachments) mit passendensampleCounts kompatibel (sieheGPUTexture).

Wenn nicht angegeben, istcount standardmäßig 1.

maskOptional

Eine Bitmaske, die bestimmt, welche Proben geschrieben werden. Wenn nicht angegeben, istmask standardmäßig0xFFFFFFFF.

Hinweis:DiecolorAttachment unddepthStencilAttachment-Werte werden während derGPUCommandEncoder.beginRenderPass()-Aufrufe angegeben, wenn dieGPURenderPipeline tatsächlich verwendet wird, um einen Renderdurchgang auszuführen.

primitive Objektstruktur

Dasprimitive Objekt kann die folgenden Eigenschaften enthalten:

cullModeOptional

Ein enumerierter Wert, der definiert, welche Polygonorientierung, falls vorhanden, ausgeschnitten wird. Mögliche Werte sind:

  • "back": Rückwärtige Polygone werden ausgeschnitten.
  • "front": Vordere Polygone werden ausgeschnitten.
  • "none": Keine Polygone werden ausgeschnitten.

Wenn nicht angegeben, istcullMode standardmäßig"none".

frontFaceOptional

Ein enumerierter Wert, der definiert, welche Polygone als vorderseitig gelten. Mögliche Werte sind:

  • "ccw": Polygone mit Scheitelpunkten, deren Framebuffer-Koordinaten in gegen den Uhrzeigersinn angegeben sind.
  • "cw": Polygone mit Scheitelpunkten, deren Framebuffer-Koordinaten im Uhrzeigersinn angegeben sind.

Wenn nicht angegeben, istfrontFace standardmäßig"ccw".

Hinweis:Die WertefrontFace undcullMode haben keine Auswirkung auf die"point-list","line-list" oder"line-strip" Topologien.

stripIndexFormatOptional

Ein enumerierter Wert, der das Indexpufferformat und den primitiven Neustartwert im Fall von Pipelines mit Streifentopologien ("line-strip" oder"triangle-strip") bestimmt. Der primitive Neustartwert gibt an, welcher Indexwert angibt, dass ein neues Primitive gestartet werden sollte, anstatt den Streifen mit den vorherigen indizierten Scheitelpunkten fortzusetzen. Mögliche Werte sind:

  • "uint16": Gibt eine Bytegröße von 2 und einen primitiven Neustartwert von0xFFFF an.
  • "uint32": Gibt eine Bytegröße von 4 und einen primitiven Neustartwert von0xFFFFFFFF an.

GPU-Primitivzustände, die eine Streifen-Primitivtopologie angeben, müssen ein Streifenindexformat angeben, wenn sie für indizierte Zeichnungen verwendet werden (zum Beispiel überGPURenderPassEncoder.drawIndexed()), damit der primitive Neustartwert, der verwendet wird, zum Zeitpunkt der Pipeline-Erstellung bekannt ist. Pipelines mit Listenprimitivtopologien ("line-list","point-list" oder"triangle-list") sollten keinenstripIndexFormat-Wert angeben. Stattdessen wird das Indexformat verwendet, das zum Beispiel anGPURenderPassEncoder.setIndexBuffer() beim Durchführen der indizierten Wiedergabe übergeben wird.

topologyOptional

Ein enumerierter Wert, der den Typ des Primitives definiert, das aus den angegebenenvertex-Eingaben konstruiert werden soll. Mögliche Werte sind:

  • "line-list": Jedes aufeinanderfolgende Paar von zwei Scheitelpunkten definiert ein Linien-Primitive.
  • "line-strip": Jeder Scheitelpunkt nach dem ersten definiert ein Linien-Primitive zwischen ihm und dem vorherigen Scheitelpunkt.
  • "point-list": Jeder Scheitelpunkt definiert ein Punkt-Primitive.
  • "triangle-list": Jedes aufeinanderfolgende Trio von drei Scheitelpunkten definiert ein Dreieck-Primitive.
  • "triangle-strip": Jeder Scheitelpunkt nach den ersten beiden definiert ein Dreieck-Primitive zwischen ihm und den vorherigen beiden Scheitelpunkten.

Wenn nicht angegeben, isttopology standardmäßig"triangle-list".

unclippedDepthOptional

Ein boolescher Wert. Ein Wert vontrue gibt an, dass das Tiefenclippen deaktiviert ist. Wenn nicht angegeben, istunclippedDepth standardmäßigfalse. Beachten Sie, dass zur Steuerung des Tiefenclippings diedepth-clip-controlFunktion imGPUDevice aktiviert sein muss.

Hinweis:Die Funktiondepth-clip-controlfeature muss aktiviert sein, damit die EigenschaftunclippedDepth erfolgreich verwendet werden kann. Andernfalls wird einGPUValidationError generiert.

vertex Objektstruktur

Dasvertex Objekt kann die folgenden Eigenschaften enthalten:

constantsOptional

Eine Sequenz von Aufzeichnungstypen mit der Struktur(id, value), die Überschreibungswerte fürWGSL-Konstanten, die in der Pipeline überschrieben werden können, darstellen. Diese verhalten sich wiegeordnete Maps. In jedem Fall istid ein Schlüssel, der zum Identifizieren oder Auswählen der Aufzeichnung verwendet wird, und dasconstant ist ein enumerierter Wert, der ein WGSL darstellt.

Abhängig davon, welche Konstanten Sie überschreiben möchten, kannid die Form der numerischen ID der Konstante annehmen, wenn eine angegeben ist, oder andernfalls den Bezeichnernamen der Konstante.

Ein Codeausschnitt, der Überschreibungswerte für mehrere überschreibbare Konstanten bereitstellt, könnte so aussehen:

js
({  // …  constants: {    0: false,    1200: 3.0,    1300: 2.0,    width: 20,    depth: -1,    height: 15,  },});
entryPointOptional

Der Name der Funktion immodule, die diese Stufe zur Durchführung ihrer Arbeit verwenden wird. Die entsprechende Shader-Funktion muss das@vertex-Attribut haben, um als dieser Einstiegspunkt identifiziert zu werden. Weitere Informationen finden Sie in derEinstiegspunkt-Erklärung.

Sie können die EigenschaftentryPoint weglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@vertex-Attribut enthält — der Browser wird diese als Standardeinstiegspunkt verwenden. WennentryPoint ausgelassen wird und der Browser keinen Standardeinstiegspunkt ermitteln kann, wird einGPUValidationError generiert und die resultierendeGPURenderPipeline wird ungültig sein.

module

EinGPUShaderModule-Objekt, das denWGSL-Code enthält, der in dieser programmierbaren Stufe ausgeführt wird.

buffersOptional

Ein Array von Objekten, die jeweils das erwartete Layout eines Vertexpuffers darstellen, der in der Pipeline verwendet wird. Jedes Objekt kann die folgenden Eigenschaften enthalten:

arrayStride

Eine Zahl, die die Schrittweite in Bytes zwischen den verschiedenen Strukturen (z. B. Vertices) innerhalb des Puffers darstellt.

attributes

Ein Array von Objekten, das das Layout der Vertex-Attribute innerhalb jeder Struktur definiert. Jedes Objekt hat die folgenden Eigenschaften:

format

Ein enumerierter Wert, der das Format des Vertex angibt. Für alle verfügbaren Werte siehe dieGPUVertexFormat-Definition in der Spezifikation.

offset

Eine Zahl, die den Offset in Bytes vom Beginn der Struktur zu den Daten für das Attribut angibt.

shaderLocation

Die numerische Position, die mit diesem Attribut verbunden ist, die mit einem@location-Attribut übereinstimmt, das im WGSL-Code des zugehörigenGPUShaderModule deklariert ist, auf den in dermodule-Eigenschaft desvertex-Objekts verwiesen wird.

stepModeOptional

Ein enumerierter Wert, der definiert, ob die separaten Strukturen im Puffer Vertices oder Instanzen darstellen. Mögliche Werte sind:

  • "instance": Jede Struktur ist eine Instanz — die Adresse wird für jede Instanz durcharrayStride vorangetrieben.
  • "vertex": Jede Struktur ist ein Vertex — die Adresse wird für jedes Vertex durcharrayStride vorangetrieben und zwischen Instanzen zurückgesetzt.

Wenn nicht angegeben, iststepMode standardmäßig"vertex".

Rückgabewert

EinGPURenderPipeline-Objektinstanz.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenncreateRenderPipeline() aufgerufen wird. Andernfalls wird einGPUValidationError generiert und ein ungültigesGPURenderPipeline-Objekt wird zurückgegeben:

  • FürdepthStencil Objekte:
    • format ist eindepth-or-stencil Format.
    • Die EigenschaftendepthBias,depthBiasClamp unddepthBiasSlopeScale sind auf0 gesetzt, wenn lineare und punktförmige Topologien verwendet werden, d.h. wenntopology auf"line-list","line-strip" oder"point-list" gesetzt ist.
    • WenndepthWriteEnabledtrue ist oderdepthCompare nicht"always", 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 istwriteMask numerisch kleiner als 16.
    • Wenn einer der verwendeten Mischfaktoroperationen den Alphakanal der Quelle verwenden (zum Beispiel"src-alpha-saturated"), hat die Ausgabe einen Alphakanal (d.h. es muss einvec4 sein).
    • Wenn die Mischfaktoroperationensrc1,one-minus-src1,src1-alpha oderone-minus-src1-alpha verwendet werden, ist diedual-source-blendingFunktion aktiviert.
    • Wenn die EigenschaftentryPoint ausgelassen wird, enthält der Shader-Code eine einzige Fragment-Shader-Einstiegspunkt-Funktion, die der Browser als Standardeinstiegspunkt verwenden kann.
  • Fürprimitive Objekte:
    • Wenn die EigenschaftunclippedDepth verwendet wird, ist diedepth-clip-controlFunktion aktiviert.
  • Fürvertex Objekte:
    • Wenn die EigenschaftentryPoint ausgelassen wird, enthält der Shader-Code eine einzige Vertex-Shader-Einstiegspunkt-Funktion, die der Browser als Standardeinstiegspunkt verwenden kann.

Beispiele

Hinweis:DieWebGPU-Beispiele bieten viele weitere Beispiele.

Einfaches Beispiel

Unsereinfaches Render-Demo bietet ein Beispiel für die Konstruktion eines gültigen Render-Pipeline-Deskriptorobjekts, das dann verwendet wird, um eineGPURenderPipeline über einencreateRenderPipeline() Aufruf zu erstellen.

js
// …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 = device.createRenderPipeline(pipelineDescriptor);// …

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createrenderpipeline

Browser-Kompatibilität

Siehe auch

Help improve MDN

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

[8]ページ先頭

©2009-2025 Movatter.jp