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-Phasen steuern und in einem GPURenderPassEncoder oder GPURenderBundleEncoder verwendet werden kann.
Syntax
createRenderPipeline(descriptor)
Parameter
descriptor-
Ein Objekt mit den folgenden Eigenschaften:
depthStencilOptional-
Ein Objekt (siehe
depthStencilObjektstruktur), das die Depth-Stencil-Eigenschaften einschließlich Tests, Operationen und Bias beschreibt. fragmentOptional-
Ein Objekt (siehe
fragmentObjektstruktur), das den Einstiegspunkt des Fragment-Shaders der Pipeline und seine Ausgabefarben beschreibt. Wenn kein Einstiegspunkt des Fragment-Shaders definiert ist, wird die Pipeline keine Farbanhang-Ausgaben erzeugen, jedoch weiterhin Rasterisierung durchführen und Tiefenwerte basierend auf der Ausgabe der Vertex-Position erzeugen. Tiefentests und Stencil-Operationen können weiterhin verwendet werden. labelOptional-
Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError-Meldungen oder Konsolenwarnungen. layout-
Definiert das Layout (Struktur, Zweck und Typ) aller GPU-Ressourcen (Puffer, Texturen etc.), die während der Ausführung der Pipeline verwendet werden. Mögliche Werte sind:
- Ein
GPUPipelineLayout-Objekt, das mitGPUDevice.createPipelineLayout()erstellt wurde und der GPU ermöglicht, im Voraus herauszufinden, wie die Pipeline am effizientesten ausgeführt wird. - Ein String
"auto", der die Pipeline dazu veranlasst, ein implizites Bind-Group-Layout basierend auf allen im Shader-Code definierten Bindungen zu generieren. Wenn"auto"verwendet wird, dürfen die generierten Bind-Group-Layouts nur mit der aktuellen Pipeline verwendet werden.
- Ein
multisampleOptional-
Ein Objekt (siehe
multisampleObjektstruktur), das beschreibt, wie die Pipeline mit den Multisample-Anhängen eines Render-Passes interagiert. primitiveOptional-
Ein Objekt (siehe
primitiveObjektstruktur), das beschreibt, wie eine Pipeline Primitive aus ihren Vertex-Eingaben konstruiert und rastert. vertex-
Ein Objekt (siehe
vertexObjektstruktur), das den Einstiegspunkt des Vertex-Shaders der Pipeline und seine Eingabepuffer-Layouts beschreibt.
depthStencil Objektstruktur
Das depthStencil Objekt kann die folgenden Eigenschaften enthalten:
depthBiasOptional-
Eine Zahl, die einen konstanten Tiefen-Bias darstellt, der zu jedem Fragment addiert wird. Wenn nicht angegeben, ist
depthBiasstandardmäßig 0.Hinweis: Die Eigenschaften
depthBias,depthBiasClampunddepthBiasSlopeScalemüssen auf0gesetzt werden für Linien- und Punkt-Topologien, d.h. wenntopologyauf"line-list","line-strip"oder"point-list"gesetzt ist. Andernfalls wird einGPUValidationErrorerzeugt und die zurückgegebeneGPURenderPipelinewird ungültig sein. depthBiasClampOptional-
Eine Zahl, die den maximalen Tiefen-Bias eines Fragments darstellt. Wenn nicht angegeben, ist
depthBiasClampstandardmäßig 0. depthBiasSlopeScaleOptional-
Eine Zahl, die einen Tiefen-Bias darstellt, der mit der Neigung des Fragments skaliert wird. Wenn nicht angegeben, ist
depthBiasSlopeScalestandardmäßig 0. depthCompareOptional-
Ein enumerierter Wert, der die Vergleichsoperation angibt, die verwendet wird, um Fragments-Tiefen gegen
depthStencilAttachment-Tiefenwerte zu testen. Mögliche Werte sind:"never": Vergleichstests schlagen immer fehl."less": Ein angegebener Wert besteht den Vergleichstest, wenn er kleiner ist als der abgetastete Wert."equal": Ein angegebener Wert besteht den Vergleichstest, wenn er gleich dem abgetasteten Wert ist."less-equal": Ein angegebener Wert besteht den Vergleichstest, wenn er kleiner oder gleich dem abgetasteten Wert ist."greater": Ein angegebener Wert besteht den Vergleichstest, wenn er größer ist als der abgetastete Wert."not-equal": Ein angegebener Wert besteht den Vergleichstest, wenn er nicht gleich dem abgetasteten Wert ist."greater-equal": Ein angegebener 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 dieGPURenderPipelinedepthStencilAttachment-Tiefenwerte nach der Erstellung ändern kann. Wenn es auffalsegesetzt wird, bedeutet das, dass sie dies nicht kann.depthWriteEnabledist nicht erforderlich, wenn das angegebeneformatkeine Tiefenkomponente hat. format-
Ein enumerierter Wert, der das
depthStencilAttachment-Format angibt, mit dem dieGPURenderPipelinekompatibel sein wird. Siehe den Abschnitt Texture Formats der Spezifikation für alle verfügbarenformat-Werte. stencilBackOptional-
Ein Objekt, das definiert, wie Stencil-Vergleiche und -Operationen für rückseitige Primitive durchgeführt werden. Seine Eigenschaften können umfassen:
compareOptional-
Ein enumerierter Wert, der die Vergleichsoperation angibt, die beim Testen von Fragmenten gegen
depthStencilAttachment-Stencil-Werte verwendet wird. Mögliche Werte sind dieselben wie für diedepthCompare-Eigenschaft; siehe oben. Wenn nicht angegeben, istcomparestandardmäßig"always". depthFailOpOptional-
Ein enumerierter Wert, der die Stencil-Operation angibt, die durchgeführt wird, wenn der Tiefenvergleich des Fragments, wie durch
depthComparebeschrieben, fehlschlägt. Mögliche Werte sind:"decrement-clamp": Verringert den aktuellen Renderstatus-Stencil-Wert und klemmt ihn auf 0."decrement-wrap": Verringert den aktuellen Renderstatus-Stencil-Wert und setzt ihn auf den maximal darstellbaren Wert desdepthStencilAttachment-Stencil-Aspekts zurück, wenn der Wert unter 0 sinkt."invert": Bitweises Invertieren des aktuellen Renderstatus-Stencil-Werts."increment-clamp": Erhöht den aktuellen Renderstatus-Stencil-Wert und klemmt ihn auf den maximal darstellbaren Wert desdepthStencilAttachment-Stencil-Aspekts."increment-wrap": Erhöht den aktuellen Renderstatus-Stencil-Wert und setzt ihn auf null zurück, wenn der Wert den maximal darstellbaren Wert desdepthStencilAttachment-Stencil-Aspekts überschreitet."keep": Behält den aktuellen Stencil-Wert bei."replace": Setzt den Stencil-Wert auf den aktuellen Renderstatus-Stencil-Wert."zero": Setzt den Stencil-Wert auf 0.
Wenn nicht angegeben, ist
depthFailOpstandardmäßig"keep".Hinweis: Der Renderstatus-Stencil-Wert wird zu Beginn eines Render-Passes auf 0 gesetzt.
failOpOptional-
Ein enumerierter Wert, der die Stencil-Operation angibt, die durchgeführt wird, wenn der Stencil-Vergleichstest des Fragments, wie durch
comparebeschrieben, fehlschlägt. Mögliche und Standardwerte sind die gleichen wie fürdepthFailOp. passOpOptional-
Ein enumerierter Wert, der die Stencil-Operation angibt, die durchgeführt wird, wenn der Stencil-Vergleichstest des Fragments, wie durch
comparebeschrieben, besteht. Mögliche und Standardwerte sind die gleichen wie fürdepthFailOp.
stencilFrontOptional-
Ein Objekt, das definiert, wie Stencil-Vergleiche und -Operationen für vorderseitige Primitive durchgeführt werden. Seine Eigenschaften sind dieselben wie für
stencilBack. stencilReadMaskOptional-
Eine Bitmaske, die steuert, welche
depthStencilAttachment-Stencilwert-Bits gelesen werden, wenn Stencil-Vergleichstests durchgeführt werden. Wenn nicht angegeben, iststencilReadMaskstandardmäßig0xFFFFFFFF. stencilWriteMaskOptional-
Eine Bitmaske, die steuert, welche
depthStencilAttachment-Stencilwert-Bits geschrieben werden, wenn Stencil-Operationen durchgeführt werden. Wenn nicht angegeben, iststencilWriteMaskstandardmäßig0xFFFFFFFF.
Hinweis:>depthStencilAttachment-Werte werden während GPUCommandEncoder.beginRenderPass()-Aufrufen angegeben, wenn die GPURenderPipeline tatsächlich verwendet wird, um einen Render-Pass auszuführen.
fragment Objektstruktur
Das fragment Objekt enthält ein Array von Objekten, die jeweils die folgenden Eigenschaften haben können:
constantsOptional-
Eine Sequenz von Record-Typen mit der Struktur
(id, value), die Override-Werte für WGSL-Konstanten enthält, die in der Pipeline überschrieben werden können. Diese verhalten sich ähnlich wie geordnete Maps. In jedem Fall istidein Schlüssel, der verwendet wird, um den Record zu identifizieren oder auszuwählen, undconstantist ein enumerierter Wert, der einen WGSL darstellt.Abhängig davon, welche Konstante Sie überschreiben möchten, kann
iddie Form der numerischen ID der Konstante annehmen, wenn eine angegeben ist, oder sonst den Identifier-Namen der Konstante.Ein Code-Snippet, das Override-Werte 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 Phase verwenden wird, um ihre Arbeit auszuführen. Die entsprechende Shader-Funktion muss das@fragment-Attribute haben, um als dieser Einstiegspunkt identifiziert zu werden. Weitere Informationen finden Sie unter Entry Point Declaration.Sie können die
entryPoint-Eigenschaft weglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@fragment-Attribute enthält — der Browser verwendet diese als den Standard-Einstiegspunkt. FallsentryPointweggelassen wird und der Browser keinen Standard-Einstiegspunkt bestimmen kann, wird einGPUValidationErrorerzeugt und die resultierendeGPURenderPipelinewird ungültig. module-
Ein
GPUShaderModule-Objekt, das den WGSL-Code enthält, den diese programmierbare Phase ausführen wird. targets-
Ein Array von Objekten, die Farbzustände darstellen, welche Konfigurationsdetails für die Farben darstellen, die von der Fragment-Shader-Phase ausgegeben werden. Diese Objekte können die folgenden Eigenschaften umfassen:
blendOptional-
Ein Objekt, das einen Blend-Modus beschreibt, der auf die Ausgabefarbe angewendet werden soll.
blendhat zwei Eigenschaften:Sowohl
alphaals auchcolorerwarten ein Objekt als Wert, das die folgenden Eigenschaften enthalten kann:dstFactorOptional-
Ein enumerierter Wert, der die Blend-Faktor-Operation definiert, die auf Werte aus dem Zielanhang angewendet 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-blendingFähigkeit muss aktiviert sein, damit die Blend-Faktor-Operationensrc1,one-minus-src1,src1-alphaundone-minus-src1-alphaerfolgreich genutzt werden können. Andernfalls wird einGPUValidationErrorerzeugt. operationOptional-
Ein enumerierter Wert, der den Algorithmus definiert, der verwendet wird, um Quell- und Ziel-Blend-Faktoren zu kombinieren, um die endgültigen Werte zu berechnen, die in die 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 Blend-Faktor-Operation definiert, die auf Werte aus dem Fragment-Shader angewendet werden soll. Mögliche Werte sind dieselben wie für
dstFactor. Wenn nicht angegeben, istsrcFactorstandardmäßig"one".
Hinweis: Für eine detaillierte Erklärung der Algorithmen, die von jedem
dstFactor/srcFactorundoperation-Wert definiert werden, sehen Sie bitte im Abschnitt Blend State der Spezifikation nach. format-
Ein enumerierter Wert, der das erforderliche Format für Ausgabefarben angibt. Siehe den Abschnitt Texture Formats der Spezifikation für alle verfügbaren
format-Werte. writeMaskOptional-
Eine oder mehrere bitweise Flags, die die Schreibmaske definieren, die auf den Farbzielzustand angewendet werden soll. Mögliche Flag-Werte sind:
GPUColorWrite.REDGPUColorWrite.GREENGPUColorWrite.BLUEGPUColorWrite.ALPHAGPUColorWrite.ALL
Wenn nicht angegeben, ist
writeMaskstandardmäßigGPUColorWrite.ALL.Beachten Sie, dass mehrere Flags angegeben werden können, indem Werte mit bitweise OR getrennt werden, 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 Sample-Abdeckungsmaske zu erzeugen. Wenn nicht angegeben, istalphaToCoverageEnabledstandardmäßigfalse. countOptional-
Eine Zahl, die die Anzahl der Samples pro Pixel definiert. Die Pipeline wird nur mit Anhang-Texturen (
colorAttachments unddepthStencilAttachments) kompatibel sein, die übereinstimmendesampleCountsaufweisen (sieheGPUTexture).Wenn nicht angegeben, ist
countstandardmäßig 1. maskOptional-
Eine Bitmaske, die bestimmt, welche Samples geschrieben werden. Wenn nicht angegeben, ist
maskstandardmäßig0xFFFFFFFF.
Hinweis:>colorAttachment und depthStencilAttachment Werte werden während GPUCommandEncoder.beginRenderPass()-Aufrufen angegeben, wenn die GPURenderPipeline tatsächlich verwendet wird, um einen Render-Pass auszuführen.
primitive Objektstruktur
Das primitive Objekt kann die folgenden Eigenschaften enthalten:
cullModeOptional-
Ein enumerierter Wert, der festlegt, welche Polygonorientierung gegebenenfalls gekappt wird. Mögliche Werte sind:
"back": Rückseitige Polygone werden gekappt."front": Vorderseitige Polygone werden gekappt."none": Keine Polygone werden gekappt.
Wenn nicht angegeben, ist
cullModestandardmäßig"none". frontFaceOptional-
Ein enumerierter Wert, der festlegt, welche Polygone als vorderseitig betrachtet werden. Mögliche Werte sind:
"ccw": Polygone mit Vertizes, deren Framebuffer-Koordinaten in gegen den Uhrzeigersinn angegebener Reihenfolge vorliegen."cw": Polygone mit Vertizes, deren Framebuffer-Koordinaten in Uhrzeigersinn angegebener Reihenfolge vorliegen.
Wenn nicht angegeben, ist
frontFacestandardmäßig"ccw".Hinweis: Die Werte
frontFaceundcullModehaben keine Auswirkungen auf die Topologien"point-list","line-list"oder"line-strip". stripIndexFormatOptional-
Ein enumerierter Wert, der das Indexbuffer-Format und den Primitive-Restart-Wert für Pipelines mit Streifentopologien (
"line-strip"oder"triangle-strip") bestimmt. Der Primitive-Restart-Wert gibt an, welcher Indexwert anzeigt, dass ein neues Primitive gestartet werden soll, anstatt den Streifen mit den vorher indexierten Vertizes fortzusetzen. Mögliche Werte sind:"uint16": Gibt eine Byte-Größe von 2 und einen Primitive-Restart-Wert von0xFFFFan."uint32": Gibt eine Byte-Größe von 4 und einen Primitive-Restart-Wert von0xFFFFFFFFan.
GPU-Primitivzustände, die eine Streifenprimitiv-Topologie angeben, müssen ein Streifenindex-Format angeben, wenn sie für indizierte Zeichnungen verwendet werden (zum Beispiel über
GPURenderPassEncoder.drawIndexed()), damit der Primitive-Restart-Wert, der verwendet werden soll, zum Zeitpunkt der Pipeline-Erstellung bekannt ist. Pipelines mit Listenprimitiv-Topologien ("line-list","point-list"oder"triangle-list") sollten keinenstripIndexFormat-Wert angeben. Stattdessen verwenden sie das Indexformat, das zum Beispiel anGPURenderPassEncoder.setIndexBuffer()übergeben wurde, wenn sie indizierte Rendering ausführen. topologyOptional-
Ein enumerierter Wert, der den Typ des zu konstruierenden Primitives aus den angegebenen
vertex-Eingaben definiert. Mögliche Werte sind:"line-list": Jedes aufeinanderfolgende Paar von zwei Vertizes definiert ein Linienprimitiv."line-strip": Jeder Vertex nach dem ersten definiert ein Linienprimitiv zwischen ihm und dem vorherigen Vertex."point-list": Jeder Vertex definiert ein Punktprimitiv."triangle-list": Jedes aufeinanderfolgende Tripel aus drei Vertizes definiert ein Dreiecksprimitiv."triangle-strip": Jeder Vertex nach den ersten beiden definiert ein Dreiecksprimitiv zwischen ihm und den vorhergehenden beiden Vertizes.
Wenn nicht angegeben, ist
topologystandardmäßig"triangle-list". unclippedDepthOptional-
Ein boolescher Wert. Ein Wert von
truegibt an, dass Tiefenkappung deaktiviert ist. Wenn nicht angegeben, istunclippedDepthstandardmäßigfalse. Beachten Sie, dass um die Tiefenkappung zu steuern, die Fähigkeitdepth-clip-controlfeature imGPUDeviceaktiviert sein muss.Hinweis: Die Fähigkeit
depth-clip-controlfeature muss aktiviert sein, damit dieunclippedDepth-Eigenschaft erfolgreich verwendet werden kann. Andernfalls wird einGPUValidationErrorerzeugt.
vertex Objektstruktur
Das vertex Objekt kann die folgenden Eigenschaften enthalten:
constantsOptional-
Eine Sequenz von Record-Typen mit der Struktur
(id, value), die Override-Werte für WGSL-Konstanten enthält, die in der Pipeline überschrieben werden können. Diese verhalten sich ähnlich wie geordnete Maps. In jedem Fall istidein Schlüssel, der verwendet wird, um den Record zu identifizieren oder auszuwählen, undconstantist ein enumerierter Wert, der einen WGSL darstellt.Abhängig davon, welche Konstante Sie überschreiben möchten, kann
iddie Form der numerischen ID der Konstante annehmen, wenn eine angegeben ist, oder sonst den Identifier-Namen der Konstante.Ein Code-Snippet, das Override-Werte 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 Phase verwenden wird, um ihre Arbeit auszuführen. Die entsprechende Shader-Funktion muss das@vertex-Attribute haben, um als dieser Einstiegspunkt identifiziert zu werden. Weitere Informationen finden Sie unter Entry Point Declaration.Sie können die
entryPoint-Eigenschaft weglassen, wenn Ihr Shader-Code eine einzelne Funktion mit dem@vertex-Attribute enthält — der Browser verwendet diese als den Standard-Einstiegspunkt. FallsentryPointweggelassen wird und der Browser keinen Standard-Einstiegspunkt bestimmen kann, wird einGPUValidationErrorerzeugt und die resultierendeGPURenderPipelinewird ungültig. module-
Ein
GPUShaderModule-Objekt, das den WGSL-Code enthält, den diese programmierbare Phase ausführen wird. buffersOptional-
Ein Array von Objekten, die jeweils das erwartete Layout eines Vertex-Puffers darstellen, der in der Pipeline verwendet wird. Jedes Objekt kann die folgenden Eigenschaften enthalten:
arrayStride-
Eine Zahl, die den Abstand in Bytes zwischen den verschiedenen Strukturen (z.B. Vertizes) 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 spezifiziert. Für alle verfügbaren Werte siehe die Definition der
GPUVertexFormatin der Spezifikation. offset-
Eine Zahl, die den Versatz in Bytes vom Anfang der Struktur zu den Daten für das Attribut spezifiziert.
shaderLocation-
Der numerische Ort, der diesem Attribut zugeordnet ist und der mit einem
@locationAttribut übereinstimmen wird, das im WGSL-Code des zugehörigenGPUShaderModuledeklariert ist, das in dermodule-Eigenschaft desvertex-Objekts referenziert wird.
stepModeOptional-
Ein enumerierter Wert, der definiert, ob die separate Strukturen im Puffer Vertizes oder Instanzen darstellen. Mögliche Werte sind:
"instance": Jede Struktur ist eine Instanz — die Adresse wird für jede Instanz umarrayStrideerhöht."vertex": Jede Struktur ist ein Vertex — die Adresse wird für jeden Vertex umarrayStrideerhöht und zwischen den Instanzen zurückgesetzt.
Wenn nicht angegeben, ist
stepModestandardmäßig"vertex".
Rückgabewert
Eine Instanz des GPURenderPipeline-Objekts.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createRenderPipeline() aufgerufen wird, ansonsten wird ein GPUValidationError erzeugt und ein ungültiges GPURenderPipeline-Objekt wird zurückgegeben:
- Für
depthStencilObjekte:formatist eindepth-or-stencilFormat.- Die Eigenschaften
depthBias,depthBiasClampunddepthBiasSlopeScalesind auf0gesetzt für Linien- und Punkt-Topologien, d.h. wenntopologyauf"line-list","line-strip", oder"point-list"gesetzt ist. - Wenn
depthWriteEnabledtrueist oderdepthComparenicht"always"ist, hatformateine Tiefenkomponente. - Wenn die Eigenschaften von
stencilFrontoderstencilBacknicht auf ihren Standardwerten sind, hatformateine Stencil-Komponente.
- Für
fragmentObjekte:targets.lengthist kleiner oder gleich demmaxColorAttachmentsLimit desGPUDevice.- Für jedes
targetist der numerische Wert vonwriteMaskkleiner als 16. - Wenn eine der verwendeten Blend-Faktor-Operationen den Alphakanal der Quelle verwenden (z.B.
"src-alpha-saturated"), hat die Ausgabe einen Alphakanal (d.h. es muss einvec4sein). - Wenn die
src1,one-minus-src1,src1-alphaoderone-minus-src1-alphaBlend-Faktor-Operationen verwendet werden, ist die Fähigkeitdual-source-blendingfeature aktiviert. - Wenn die
entryPoint-Eigenschaft ausgelassen wird, enthält der Shader-Code eine einzelne Fragment-Shader-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
- Für
primitiveObjekte:- Wenn die
unclippedDepth-Eigenschaft verwendet wird, ist die Fähigkeitdepth-clip-controlfeature aktiviert.
- Wenn die
- Für
vertexObjekte:- Wenn die
entryPoint-Eigenschaft ausgelassen wird, enthält der Shader-Code eine einzelne Vertex-Shader-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
- Wenn die
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-Deskriptor-Objekts, 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
Loading…
Siehe auch
- Die WebGPU-API