Movatterモバイル変換


[0]ホーム

URL:


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

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

View in EnglishAlways switch to English

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

DiecreateBindGroup()-Methode derGPUDevice-Schnittstelle erstellt einGPUBindGroup basierend auf einemGPUBindGroupLayout, das eine Gruppe von zu bindenden Ressourcen und deren Verwendung in Shaderstufen definiert.

Syntax

js
createBindGroup(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

entries

Ein Array von Objekten, die die Ressourcen beschreiben, die für den Shader verfügbar gemacht werden sollen. Es gibt eines für jeden entsprechenden Eintrag, der durch das imlayout referenzierteGPUBindGroupLayout beschrieben wird. Jedes Eintragsobjekt hat die folgenden Eigenschaften:

binding

Eine Zahl, die eine eindeutige Kennung für diese Ressourcenbindung darstellt, die dembinding-Wert eines entsprechendenGPUBindGroupLayout-Eintrags entspricht. Außerdem entspricht es demn-Indexwert des entsprechenden@binding(n)-Attributs im Shader (GPUShaderModule), das in der zugehörigen Pipeline verwendet wird.

resource

Die zu bindende Ressource. Dies kann eine der folgenden sein:

  • GPUBufferBinding: Umfasst einGPUBuffer; sieheGPUBufferBinding-Objekte für eine Definition.
  • GPUBuffer: Kann direkt verwendet werden, ohne in einGPUBufferBinding eingebunden zu werden, vorausgesetzt, die Standardwerte füroffset undsize werden verwendet.
  • GPUExternalTexture
  • GPUTextureView: Kann anstelle einerGPUExternalTexture verwendet werden, sofern sie kompatibel ist (ein 2D-Format mit einer einzigen Subresource, das heißtdimension: "2d").
  • GPUTexture: Kann anstelle einerGPUTextureView verwendet werden, sofern eine Standardansicht gewünscht wird. Wenn in diesem Kontext verwendet, istGPUTexture äquivalent zu einemGPUTextureView-Objekt, das mit einem Aufruf vonGPUTexture.createView() ohne angegebenes Argument erstellt wurde.
  • GPUSampler
labelOptional

Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt beispielsweise inGPUError-Meldungen oder Konsolenwarnungen zu identifizieren.

layout

DasGPUBindGroupLayout, dem dieentries dieser Bindgruppe entsprechen.

GPUBufferBinding-Objekte

EinGPUBufferBinding-Objekt kann die folgenden Eigenschaften enthalten:

buffer

DasGPUBuffer-Objekt, das Sie binden möchten.

offsetOptional

Der Offset in Bytes vom Anfang desbuffer bis zum Anfang des durch die Pufferbindung dem Shader bereitgestellten Bereichs. Wenn weggelassen, ist der Standardwert füroffset 0.

sizeOptional

Die Größe in Bytes der Pufferbindung. Wird sie weggelassen, umfasstsize den Bereich, der beioffset beginnt und am Ende desbuffer endet. Wenn sowohloffset als auchsize weggelassen werden, wird der gesamte Puffer dem Shader bereitgestellt.

Rückgabewert

Eine Instanz desGPUBindGroup-Objekts.

Validierung

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

  • Die Anzahl der Einträge imlayoutGPUBindGroupLayout entspricht der Anzahl der Eintragsobjekte inentries.
  • Für jeden Eintrag imlayoutGPUBindGroupLayout bindet das entsprechende Eintragsobjekt inentries den richtigen Ressourcentyp. Zum Beispiel hat einbuffer-Ressourcenlayout-Objekt einGPUBufferBinding-Objekt, das in der entsprechenden Bindung angegeben ist.
  • Wenn das Ressourcenlayout-Objekt einbuffer ist:
    • Der entsprechende gebundeneGPUBuffer:
      • Der gebundene Teil (wie durchoffset undsize angegeben) ist vollständig innerhalb des Puffers enthalten und hat eine nicht null Größe.
      • Hat eine Größe, die größer ist als dieminBindingSize desbuffer-Ressourcenlayouts.
    • Wenn dertype des Ressourcenlayout-Objekts"uniform" ist:
      • Der gebundeneGPUBuffer hat einenusage, derGPUBufferUsage.UNIFORM einschließt.
      • Die effektive Größe des gebundenen Puffersegments ist kleiner oder gleich demmaxUniformBufferBindingSize-Limit desGPUDevice.
      • Der angegebeneGPUBufferBindingoffset ist ein Vielfaches desminUniformBufferOffsetAlignment-Limit desGPUDevice.
    • Wenn dertype des Ressourcenlayout-Objekts"storage" oder"read-only-storage" ist:
      • Der gebundeneGPUBuffer hat einenusage, derGPUBufferUsage.STORAGE einschließt.
      • Die effektive Größe des gebundenen Puffersegments ist kleiner oder gleich demmaxStorageBufferBindingSize-Limit desGPUDevice.
      • Die effektive Größe des gebundenen Puffersegments ist ein Vielfaches von 4.
      • Der angegebeneGPUBufferBindingoffset ist ein Vielfaches desminStorageBufferOffsetAlignment-Limit desGPUDevice.
  • Wenn das Ressourcenlayout-Objekt einstorageTexture ist, hat das entsprechend gebundeneGPUTextureView:
    • Einedimension, die derviewDimension des Ressourcenlayout-Objekts entspricht (sieheGPUTexture.createView() für weitere Details zu den Einstellungen einer Texturansicht).
    • Einformat, das demsampleType des Ressourcenlayout-Objekts entspricht.
    • EinemipLevelCount von 1.
    • Ist eine Ansicht einesGPUTexture mit einemusage, dasGPUTextureUsage.STORAGE_BINDING einschließt.
  • Wenn das Ressourcenlayout-Objekt eintexture ist, hat das entsprechend gebundeneGPUTextureView:
    • Einedimension, die derviewDimension des Ressourcenlayout-Objekts entspricht (sieheGPUTexture.createView() für weitere Details zu den Einstellungen einer Texturansicht).
    • Einformat, das mit demsampleType des Ressourcenlayout-Objekts kompatibel ist.
    • Ist eine Ansicht einesGPUTexture mit einemusage, dasGPUTextureUsage.TEXTURE_BINDING einschließt.
    • Ist eine Ansicht einesGPUTexture mit einemsampleCount, der größer als 1 ist, wenn diemultisampled-Eigenschaft des Ressourcenlayout-Objektstrue ist, oder gleich 1, wenn siefalse ist.

Beispiele

Hinweis:DieWebGPU-Beispiele bieten viele weitere Beispiele.

Einfaches Beispiel

Unsereinfaches Compute-Demo zeigt ein Beispiel für das Erstellen eines Bindgruppenlayouts und die Verwendung dieses Layouts als Vorlage für das Erstellen einer Bindgruppe.

js
// …const bindGroupLayout = device.createBindGroupLayout({  entries: [    {      binding: 0,      visibility: GPUShaderStage.COMPUTE,      buffer: {        type: "storage",      },    },  ],});const bindGroup = device.createBindGroup({  layout: bindGroupLayout,  entries: [    {      binding: 0,      resource: {        buffer: output,      },    },  ],});// …

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createbindgroup

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