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 in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createRenderPipeline() Methode der GPUDevice Schnittstelle erstellt eine GPURenderPipeline, die die Vertex- und Fragment-Shader-Stufen steuern und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann.
Syntax
createRenderPipeline(descriptor)
Parameter
descriptor-
Ein Objekt, das die folgenden Eigenschaften enthält:
depthStencilOptional-
Ein Objekt (siehe
depthStencilObjektstruktur), das die Tiefen-Stencil-Eigenschaften einschließlich Tests, Operationen und Verzerrung beschreibt. fragmentOptional-
Ein Objekt (siehe
fragmentObjektstruktur), 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 in
GPUError-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:
- Ein
GPUPipelineLayout-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.
- Ein
multisampleOptional-
Ein Objekt (siehe
multisampleObjektstruktur), das beschreibt, wie die Pipeline mit einer renderpass's multisampled Anhängen interagiert. primitiveOptional-
Ein Objekt (siehe
primitiveObjektstruktur), das beschreibt, wie eine Pipeline Primitiven aus ihren Vertex-Eingaben konstruiert und rasterisiert. vertex-
Ein Objekt (siehe
vertexObjektstruktur), das den Vertex-Shader-Einstiegspunkt der Pipeline und seine Eingabepuffer-Layouts beschreibt.
depthStencil Objektstruktur
Das depthStencil Objekt kann die folgenden Eigenschaften enthalten:
depthBiasOptional-
Eine Zahl, die eine konstante Tiefenverzerrung darstellt, die zu jedem Fragment hinzugefügt wird. Wenn nicht angegeben, ist
depthBiasstandardmäßig 0.Hinweis: Die Eigenschaften
depthBias,depthBiasClampunddepthBiasSlopeScalemüssen auf0gesetzt werden, wenn lineare und punktförmige Topologien verwendet werden, d.h. wenntopologyauf"line-list","line-strip"oder"point-list"gesetzt ist. Andernfalls wird einGPUValidationErrorgeneriert und die zurückgegebeneGPURenderPipelinewird ungültig sein. depthBiasClampOptional-
Eine Zahl, die den maximalen Tiefenverzerrungswert eines Fragments darstellt. Wenn nicht angegeben, ist
depthBiasClampstandardmäßig 0. depthBiasSlopeScaleOptional-
Eine Zahl, die eine Tiefenverzerrung darstellt, die mit der Neigung des Fragments skaliert wird. Wenn nicht angegeben, ist
depthBiasSlopeScalestandardmäßig 0. depthCompareOptional-
Ein enumerierter Wert, der die Vergleichsoperation angibt, die zur Prüfung von Fragmenttiefen gegen
depthStencilAttachment-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.
depthCompareist nicht erforderlich, wenn das angegebeneformatkeine Tiefenkomponente hat oder wenn die Vergleichsoperation nicht verwendet wird. depthWriteEnabledOptional-
Ein boolescher Wert. Ein Wert von
truegibt an, dass dieGPURenderPipelinediedepthStencilAttachment-Tiefenwerte nach der Erstellung ändern kann. Wenn sie auffalsegesetzt ist, bedeutet dies, dass sie dies nicht kann.depthWriteEnabledist nicht erforderlich, wenn das angegebeneformatkeine Tiefenkomponente hat. format-
Ein enumerierter Wert, der das
depthStencilAttachment-Format angibt, das mit derGPURenderPipelinekompatibel sein wird. Siehe den Abschnitt Texturformate 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 gegen
depthStencilAttachment-Stencil-Werte verwendet wird. Mögliche Werte sind die gleichen wie für diedepthCompare-Eigenschaft; siehe oben. Wenn nicht angegeben, istcomparestandardmäßig"always". depthFailOpOptional-
Ein enumerierter Wert, der die Stencil-Operation angibt, die ausgeführt wird, wenn der Fragmenttiefenvergleich, der durch
depthComparebeschrieben 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 desdepthStencilAttachmentumgeschlagen 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 desdepthStencilAttachmentgeklemmt 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, ist
depthFailOpstandardmäß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 durch
comparebeschrieben 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 durch
comparebeschrieben 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ür
stencilBack. stencilReadMaskOptional-
Eine Bitmaske, die steuert, welche Stencil-Wert-Bits von
depthStencilAttachmentbeim Ausführen von Stencil-Vergleichstests gelesen werden. Wenn nicht angegeben, iststencilReadMaskstandardmäßig0xFFFFFFFF. stencilWriteMaskOptional-
Eine Bitmaske, die steuert, welche Stencil-Wert-Bits von
depthStencilAttachmentbeim Ausführen von Stencil-Operationen geschrieben werden. Wenn nicht angegeben, iststencilWriteMaskstandardmäßig0xFFFFFFFF.
Hinweis:
Die depthStencilAttachment-Werte werden während der GPUCommandEncoder.beginRenderPass()-Aufrufe angegeben, wenn die GPURenderPipeline tatsächlich verwendet wird, um einen Renderdurchgang auszuführen.
fragment Objektstruktur
Das fragment 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ür WGSL-Konstanten, die in der Pipeline überschrieben werden können, darstellen. Diese Verhalten sich wie geordnete Maps. In jedem Fall istidein Schlüssel, der zum Identifizieren oder Auswählen der Aufzeichnung verwendet wird, und dasconstantist ein enumerierter Wert, der ein WGSL darstellt.Abhängig davon, welche Konstanten Sie überschreiben möchten, kann
iddie 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 im
module, 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 der Einstiegspunkt-Erklärung.Sie können die Eigenschaft
entryPointweglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@fragment-Attribut enthält — der Browser wird diese als Standardeinstiegspunkt verwenden. WennentryPointausgelassen wird und der Browser keinen Standardeinstiegspunkt ermitteln kann, wird einGPUValidationErrorgeneriert und die resultierendeGPURenderPipelinewird ungültig sein. module-
Ein
GPUShaderModule-Objekt, das den WGSL-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.
blendhat zwei Eigenschaften:alphaundcolornehmen 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, ist
dstFactorstandardmäßig"zero".Hinweis: Die
dual-source-blendingFunktion muss aktiviert sein, damit die Mischfaktoroperationensrc1,one-minus-src1,src1-alphaundone-minus-src1-alphaerfolgreich verwendet werden können. Andernfalls wird einGPUValidationErrorgeneriert. 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, ist
operationstandardmäß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ür
dstFactor. Wenn nicht angegeben, istsrcFactorstandardmäßig"one".
Hinweis: Eine detaillierte Erklärung der Algorithmen, die durch jeden
dstFactor/srcFactor- undoperation-enumerierten Wert definiert sind, finden Sie im Abschnitt Mischzustand der Spezifikation. format-
Ein enumerierter Wert, der das erforderliche Format für Ausgabefarben angibt. Siehe den Abschnitt Texturformate der Spezifikation für alle verfügbaren
format-Werte. writeMaskOptional-
Eine oder mehrere bitweise Flags, die die Schreibmaske definieren, die auf den Farbzielzustand angewendet wird. Mögliche Flag-Werte sind:
GPUColorWrite.REDGPUColorWrite.GREENGPUColorWrite.BLUEGPUColorWrite.ALPHAGPUColorWrite.ALL
Wenn nicht angegeben, ist
writeMaskstandardmäßigGPUColorWrite.ALL.Beachten Sie, dass mehrere Flags durch Trennen von Werten mit bitwise OR angegeben werden können, zum Beispiel:
GPUColorWrite.RED | GPUColorWrite.ALPHA.
multisample Objektstruktur
Das multisample Objekt kann die folgenden Eigenschaften enthalten:
alphaToCoverageEnabledOptional-
Ein boolescher Wert. Ein Wert von
truegibt an, dass der Alphakanal eines Fragments verwendet werden sollte, um eine Abdeckungsmaske für Proben zu generieren. Wenn nicht angegeben, istalphaToCoverageEnabledstandardmäßigfalse. countOptional-
Eine Zahl, die die Anzahl der Proben pro Pixel definiert. Die Pipeline ist nur mit Anhängatexturen (
colorAttachments unddepthStencilAttachments) mit passendensampleCountskompatibel (sieheGPUTexture).Wenn nicht angegeben, ist
countstandardmäßig 1. maskOptional-
Eine Bitmaske, die bestimmt, welche Proben geschrieben werden. Wenn nicht angegeben, ist
maskstandardmäßig0xFFFFFFFF.
Hinweis:
Die colorAttachment und depthStencilAttachment-Werte werden während der GPUCommandEncoder.beginRenderPass()-Aufrufe angegeben, wenn die GPURenderPipeline tatsächlich verwendet wird, um einen Renderdurchgang auszuführen.
primitive Objektstruktur
Das primitive 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, ist
cullModestandardmäß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, ist
frontFacestandardmäßig"ccw".Hinweis: Die Werte
frontFaceundcullModehaben 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 von0xFFFFan."uint32": Gibt eine Bytegröße von 4 und einen primitiven Neustartwert von0xFFFFFFFFan.
GPU-Primitivzustände, die eine Streifen-Primitivtopologie angeben, müssen ein Streifenindexformat angeben, wenn sie für indizierte Zeichnungen verwendet werden (zum Beispiel über
GPURenderPassEncoder.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 angegebenen
vertex-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, ist
topologystandardmäßig"triangle-list". unclippedDepthOptional-
Ein boolescher Wert. Ein Wert von
truegibt an, dass das Tiefenclippen deaktiviert ist. Wenn nicht angegeben, istunclippedDepthstandardmäßigfalse. Beachten Sie, dass zur Steuerung des Tiefenclippings diedepth-clip-controlFunktion imGPUDeviceaktiviert sein muss.Hinweis: Die Funktion
depth-clip-controlfeature muss aktiviert sein, damit die EigenschaftunclippedDeptherfolgreich verwendet werden kann. Andernfalls wird einGPUValidationErrorgeneriert.
vertex Objektstruktur
Das vertex Objekt kann die folgenden Eigenschaften enthalten:
constantsOptional-
Eine Sequenz von Aufzeichnungstypen mit der Struktur
(id, value), die Überschreibungswerte für WGSL-Konstanten, die in der Pipeline überschrieben werden können, darstellen. Diese verhalten sich wie geordnete Maps. In jedem Fall istidein Schlüssel, der zum Identifizieren oder Auswählen der Aufzeichnung verwendet wird, und dasconstantist ein enumerierter Wert, der ein WGSL darstellt.Abhängig davon, welche Konstanten Sie überschreiben möchten, kann
iddie 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 im
module, 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 der Einstiegspunkt-Erklärung.Sie können die Eigenschaft
entryPointweglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@vertex-Attribut enthält — der Browser wird diese als Standardeinstiegspunkt verwenden. WennentryPointausgelassen wird und der Browser keinen Standardeinstiegspunkt ermitteln kann, wird einGPUValidationErrorgeneriert und die resultierendeGPURenderPipelinewird ungültig sein. module-
Ein
GPUShaderModule-Objekt, das den WGSL-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 die
GPUVertexFormat-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örigenGPUShaderModuledeklariert 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 durcharrayStridevorangetrieben."vertex": Jede Struktur ist ein Vertex — die Adresse wird für jedes Vertex durcharrayStridevorangetrieben und zwischen Instanzen zurückgesetzt.
Wenn nicht angegeben, ist
stepModestandardmäßig"vertex".
Rückgabewert
Ein GPURenderPipeline-Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createRenderPipeline() aufgerufen wird. Andernfalls wird ein GPUValidationError generiert und ein ungültiges GPURenderPipeline-Objekt wird zurückgegeben:
- Für
depthStencilObjekte:formatist eindepth-or-stencilFormat.- Die Eigenschaften
depthBias,depthBiasClampunddepthBiasSlopeScalesind auf0gesetzt, wenn lineare und punktförmige Topologien verwendet werden, d.h. wenntopologyauf"line-list","line-strip"oder"point-list"gesetzt ist. - Wenn
depthWriteEnabledtrueist oderdepthComparenicht"always", hatformateine Tiefenkomponente. - Wenn die Eigenschaften von
stencilFrontoderstencilBacknicht ihre Standardwerte haben, hatformateine Stencil-Komponente.
- Für
fragmentObjekte:targets.lengthist kleiner oder gleich demmaxColorAttachmentsLimit desGPUDevice.- Für jedes
targetistwriteMasknumerisch 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 einvec4sein). - Wenn die Mischfaktoroperationen
src1,one-minus-src1,src1-alphaoderone-minus-src1-alphaverwendet werden, ist diedual-source-blendingFunktion aktiviert. - Wenn die Eigenschaft
entryPointausgelassen wird, enthält der Shader-Code eine einzige Fragment-Shader-Einstiegspunkt-Funktion, die der Browser als Standardeinstiegspunkt verwenden kann.
- Für
primitiveObjekte:- Wenn die Eigenschaft
unclippedDepthverwendet wird, ist diedepth-clip-controlFunktion aktiviert.
- Wenn die Eigenschaft
- Für
vertexObjekte:- Wenn die Eigenschaft
entryPointausgelassen wird, enthält der Shader-Code eine einzige Vertex-Shader-Einstiegspunkt-Funktion, die der Browser als Standardeinstiegspunkt verwenden kann.
- Wenn die Eigenschaft
Beispiele
Hinweis: Die WebGPU-Beispiele bieten viele weitere Beispiele.
Einfaches Beispiel
Unser einfaches Render-Demo bietet ein Beispiel für die Konstruktion eines gültigen Render-Pipeline-Deskriptorobjekts, das dann verwendet wird, um eine GPURenderPipeline über einen createRenderPipeline() Aufruf zu erstellen.
// …
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
- Die WebGPU API