Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
GPUSupportedFeatures
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.
DasGPUSupportedFeatures Interface derWebGPU API ist einSet-ähnliches Objekt, das zusätzliche Funktionalitäten beschreibt, die von einemGPUAdapter unterstützt werden.
DasGPUSupportedFeatures-Objekt für den aktuellen Adapter kann über dieGPUAdapter.features Eigenschaft abgerufen werden – verwenden Sie dies, um zu testen, welche Features Ihre aktuelle Konfiguration unterstützt. Um einGPUDevice mit einem bestimmten aktivierten Feature zu erstellen, müssen Sie dieses imrequiredFeatures Array desGPUAdapter.requestDevice() Deskriptors angeben.
Bitte beachten Sie, dass nicht alle Features in WebGPU in allen Browsern verfügbar sein werden, die es unterstützen, selbst wenn die Features von der zugrunde liegenden Hardware unterstützt werden. Dies könnte auf Einschränkungen im zugrunde liegenden System, Browser oder Adapter zurückzuführen sein. Zum Beispiel:
- Das zugrunde liegende System kann möglicherweise nicht garantieren, dass ein Feature in einer Weise bereitgestellt wird, die mit einem bestimmten Browser kompatibel ist.
- Der Browseranbieter hat möglicherweise keine sichere Methode gefunden, um die Unterstützung für dieses Feature zu implementieren, oder hat es einfach noch nicht umgesetzt.
Wenn Sie hoffen, ein spezifisches zusätzliches Feature in einer WebGPU-App zu nutzen, wird gründliches Testen empfohlen.
In diesem Artikel
Verfügbare Features
Die folgenden zusätzlichen Features sind in WebGPU definiert. Bedenken Sie, dass die genaue Menge an verfügbaren Features je nach Implementierungen und physischen Geräten variieren wird und sich im Laufe der Zeit ändern kann.
| Feature-Name | Beschreibung |
|---|---|
bgra8unorm-storage | Wenn aktiviert, erlaubtSTORAGE_BINDINGusage vonbgra8unorm-formatGPUTextures. |
clip-distances | Wenn aktiviert, erlaubt die Nutzung vonclip_distances in WGSL. |
core-features-and-limits | Wenn aktiviert, bedeutet dies, dass derGPUAdapter /GPUDevice in der Lage ist, alle Kern-WebGPU-Features und -Grenzen zu nutzen, was es Anwendungen ermöglicht, Geräte mit den Plattform-Grafik-APIs Direct 3D 12, Metal und Vulkan zu unterstützen (beachten Sie, dass Safari nur Metal unterstützt). Dies wird auch als "Kern" WebGPU bezeichnet. Derzeit haben alle Adapter "Kern" WebGPU verfügbar, und es wird automatisch auf allen Geräten aktiviert, auch wenn es nicht angefordert wird. Dieses Feature ermöglicht es Adaptern und Geräten, zwischen "Kern" WebGPU und "Kompatibilitätsmodus" zu unterscheiden, der Unterstützung für ältere Grafik-APIs (wie Direct 3D 11 und OpenGL ES) auf Kosten von Leistung und Feature-Set bietet. |
depth-clip-control | Wenn aktiviert, erlaubt es, dasTiefe-Clipping zu deaktivieren. Wenndepth-clip-control aktiviert ist, ist dieunclippedDepth Eigenschaft auf demprimitive Objekt verfügbar, das Teil des DeskriptorscreateRenderPipeline() odercreateRenderPipelineAsync() ist, wenn einGPURenderPipeline erstellt wird.primitive beschreibt, wie eine Pipeline Primitiven aus ihren Vertexeingaben konstruiert und rasterisiert. Setzen Sieunclipped-depth auftrue, um das Tiefe-Clipping zu deaktivieren. |
depth32float-stencil8 | Wenn aktiviert, ermöglicht es die Erstellung von Texturen mit dem Formatdepth32float-stencil8. Wenndepth32float-stencil8 aktiviert ist, kann derdepth32float-stencil8-Wert für dieformat Eigenschaft descreateTexture() Deskriptors verwendet werden, wenn eineGPUTexture erstellt wird. |
dual-source-blending | Wenn aktiviert, erlaubt es die Verwendung vondual_source_blending in WGSL, das sowohl die Pixel-Shader-Ausgaben (@blend_src(0) und@blend_src(1)) als Eingaben für eine Mischoperation mit dem einzigen Farbanhang an@location(0) verwendet. In WebGPU ermöglichtdual-source-blending die folgenden Mischfaktoroperationen (spezifiziert in dendstFactor undsrcFactor Eigenschaften der DeskriptorscreateRenderPipeline() undcreateRenderPipelineAsync()):src1,one-minus-src1,src1-alpha undone-minus-src1-alpha. |
float32-blendable | Wenn aktiviert, erlaubt es dasMischen vonr32float-,rg32float-, undrgba32float-formatGPUTextures. |
float32-filterable | Wenn aktiviert, erlaubt es dasFiltern vonr32float-,rg32float-, undrgba32float-formatGPUTextures. |
indirect-first-instance | Wenn aktiviert, erlaubt es die Verwendung von nicht-nullfirstInstance Werten in der EigenschaftindirectBuffer derdrawIndirect() unddrawIndexedIndirect() Methoden, die inGPURenderPassEncoder undGPURenderBundleEncoder Instanzen verfügbar sind. |
primitive-index | Wenn aktiviert, erlaubt es die Verwendung der eingebauten Variablenprimitive_index in WGSL. Dieser eingebaute Eingabewert bietet einen per-primitive Index zu Fragment-Shadern auf unterstützter Hardware, ähnlich wie die existierenden eingebautenvertex_index undinstance_index. Dieprimitive_index eingebaute Variabel ist nützlich für fortgeschrittene grafische Techniken, wie z.B. virtualisierte Geometrie. |
rg11b10ufloat-renderable | Wenn aktiviert, erlaubt esRENDER_ATTACHMENTusage vonrg11b10ufloat-formatGPUTextures sowie deren Mischen und Multisampling. |
shader-f16 | Wenn aktiviert, erlaubt es die Verwendung des Halbpräzision Gleitkomma-Typsf16 in WGSL. |
subgroups | Wenn aktiviert, erlaubt es die Nutzung vonSubgruppen in WGSL. Subgruppen ermöglichen SIMD-Level Parallelismus, bei dem Threads in einer Arbeitsgruppe kommunizieren und kollektive mathematische Operationen ausführen können, wie z.B. eine Summe von Zahlen zu berechnen, und bieten eine effiziente Methode zum Austausch von Daten zwischen Threads. Beachten Sie, dass die EigenschaftensubgroupMinSize undsubgroupMaxSize nützlich sein können, um beispielsweise zu überprüfen, ob Sie einen fest kodierten Algorithmus haben, der eine Subgruppe mit einer bestimmten Größe erfordert. Sie können f16-Werte mit Subgruppen verwenden, wenn Sie ein GPUDevice mit denshader-f16 undsubgroups Features anfordern. |
texture-component-swizzle | Wenn aktiviert, erlaubt das Setzen derswizzle Eigenschaft beim Aufrufen vonGPUTexture.createView(). Dieses Feature erlaubt es, die Rot-, Grün-, Blau- und Alpha-Kanalwerte einer Textur in einer Texturansicht neu anzuordnen oder zu ersetzen, wenn sie von einem Shader aufgerufen werden. |
texture-compression-bc | Wenn aktiviert, erlaubt es die Erstellung von zweidimensionalen BC-komprimierten Texturen. Wenntexture-compression-bc aktiviert ist, können die folgenden Werte für dieformat Eigenschaft descreateTexture() Deskriptors verwendet werden, wenn eineGPUTexture erstellt wird:bc1-rgba-unorm,bc1-rgba-unorm-srgb,bc2-rgba-unorm,bc2-rgba-unorm-srgb,bc3-rgba-unorm,bc3-rgba-unorm-srgb,bc4-r-unorm,bc4-r-snorm,bc5-rg-unorm,bc5-rg-snorm,bc6h-rgb-ufloat,bc6h-rgb-float,bc7-rgba-unorm, undbc7-rgba-unorm-srgb. |
texture-compression-bc-sliced-3d | Wenn aktiviert, erlaubt es die Erstellung von dreidimensionalen BC-komprimierten Texturen. Wenntexture-compression-bc-sliced-3d aktiviert ist, muss auchtexture-compression-bc aktiviert sein, da es ermöglicht, dass die BC-Texturformate (siehetexture-compression-bc, oben) in den ersten beiden Dimensionen verwendet werden.texture-compression-bc-sliced-3d ermöglicht es, diese Texturen in der dritten Dimension zu verwenden. |
texture-compression-astc | Wenn aktiviert, erlaubt es die Erstellung von zweidimensionalen ASTC-komprimierten Texturen. Wenntexture-compression-astc aktiviert ist, können die folgenden Werte für dieformat Eigenschaft descreateTexture() Deskriptors verwendet werden, wenn eineGPUTexture erstellt wird:astc-4x4-unorm,astc-4x4-unorm-srgb,astc-5x4-unorm,astc-5x4-unorm-srgb,astc-5x5-unorm,astc-5x5-unorm-srgb,astc-6x5-unorm,astc-6x5-unorm-srgb,astc-6x6-unorm,astc-6x6-unorm-srgb,astc-8x5-unorm,astc-8x5-unorm-srgb,astc-8x6-unorm,astc-8x6-unorm-srgb,astc-8x8-unorm,astc-8x8-unorm-srgb,astc-10x5-unorm,astc-10x5-unorm-srgb,astc-10x6-unorm,astc-10x6-unorm-srgb,astc-10x8-unorm,astc-10x8-unorm-srgb,astc-10x10-unorm,astc-10x10-unorm-srgb,astc-12x10-unorm,astc-12x10-unorm-srgb, undastc-12x12-unorm``astc-12x12-unorm-srgb. |
texture-compression-astc-sliced-3d | Wenn aktiviert, erlaubt es die Erstellung von dreidimensionalen ASTC-komprimierten Texturen. Wenntexture-compression-astc-sliced-3d aktiviert ist, muss auchtexture-compression-astc aktiviert sein, da es ermöglicht, dass die ASTC-Texturformate (siehetexture-compression-astc, oben) in den ersten beiden Dimensionen verwendet werden.texture-compression-astc-sliced-3d ermöglicht diese gleichen Texturen in der dritten Dimension zu verwenden. |
texture-compression-etc2 | Wenn aktiviert, erlaubt es die Erstellung von zweidimensionalen ETC2-komprimierten Texturen. Wenntexture-compression-etc2 aktiviert ist, können die folgenden Werte für dieformat Eigenschaft descreateTexture() Deskriptors verwendet werden, wenn eineGPUTexture erstellt wird:etc2-rgb8unorm,etc2-rgb8unorm-srgb,etc2-rgb8a1unorm,etc2-rgb8a1unorm-srgb,etc2-rgba8unorm,etc2-rgba8unorm-srgb,eac-r11unorm,eac-r11snorm,eac-rg11unorm, undeac-rg11snorm. |
texture-formats-tier1 | Wenn aktiviert, wird das Featurerg11b10ufloat-renderable automatisch aktiviert und es könnenGPUTextures (viaGPUDevice.createTexture()) mit den imTier 1 spezifizierten Formaten erstellt werden. Das Tier 1-Set von Texturformaten ist so konzipiert, dass Entwickler bestehende Inhalte ins Web portieren können, ohne dass diese neu geschrieben werden müssen, um die geringeren Fähigkeiten von WebGPU zu nutzen. |
texture-formats-tier2 | Wenn aktiviert, werden die Featuresrg11b10ufloat-renderable undtexture-formats-tier1 automatisch aktiviert und es könnenGPUTextures (viaGPUDevice.createTexture()) mit den imTier 2 spezifizierten Formaten erstellt werden. Das Tier 2-Set von Texturformaten unterstützt Speichertexturformate, die in "Kern" WebGPU nicht unterstützt werden und für fortgeschrittene Nutzung erforderlich sind. |
timestamp-query | Wenn aktiviert, erlaubt es, Zeitstempelabfragen durchzuführen, die die Zeit messen, die benötigt wird, um Berechnungs- und Rendering-Pässe auszuführen. Wenntimestamp-query aktiviert ist, kann dertimestamp-Wert für dietype Eigenschaft descreateQuerySet() Deskriptors verwendet werden, wenn einGPUQuerySet erstellt wird. Zusätzlich kann dietimestampWrites-Eigenschaft sowohl beimbeginComputePass() als auch beimbeginRenderPass() Deskriptor gesetzt werden, wenn einGPUComputePassEncoder undGPURenderPassEncoder erstellt wird.GPUQuerySet Objekte werden innerhalb der Objekte referenziert, die in dertimestampWrites Eigenschaft enthalten sind, um anzugeben, wo Zeitstempel geschrieben werden sollen. |
Instanz-Eigenschaften
Die folgenden Eigenschaften sind auf allen schreibgeschütztenSet-ähnlichen Objekten verfügbar (die untenstehenden Links führen zurSet globalen Objektreferenzseite).
sizeGibt die Anzahl der Werte im Set zurück.
Instanz-Methoden
Die folgenden Methoden sind auf allen schreibgeschütztenSet-ähnlichen Objekten verfügbar (die untenstehenden Links führen zurSet globalen Objektreferenzseite).
has()Gibt einen Booleschen Wert zurück, der angibt, ob ein Element mit dem angegebenen Wert im Set vorhanden ist oder nicht.
values()Gibt ein neues Iteratorobjekt zurück, das dieWerte für jedes Element im Set in Einfügereihenfolge liefert.
keys()Ein Alias für
values().entries()Gibt ein neues Iteratorobjekt zurück, dasein Array von
[value, value]für jedes Element im Set in Einfügereihenfolge enthält.forEach()Ruft eine bereitgestellte Callback-Funktion einmal für jeden im Set vorhandenen Wert in Einfügereihenfolge auf.
Beispiele
async function init() { if (!navigator.gpu) { throw Error("WebGPU not supported."); } const adapter = await navigator.gpu.requestAdapter(); if (!adapter) { throw Error("Couldn't request WebGPU adapter."); } const adapterFeatures = adapter.features; // Return the size of the set console.log(adapterFeatures.size); // Check whether a feature is supported by the adapter console.log(adapterFeatures.has("texture-compression-astc")); // Iterate through all the set values using values() const valueIterator = adapterFeatures.values(); for (const value of valueIterator) { console.log(value); } // Iterate through all the set values using keys() const keyIterator = adapterFeatures.keys(); for (const value of keyIterator) { console.log(value); } // Iterate through all the set values using entries() const entryIterator = adapterFeatures.entries(); for (const entry of entryIterator) { console.log(entry[0]); } // Iterate through all the set values using forEach() adapterFeatures.forEach((value) => { console.log(value); }); // …}Spezifikationen
| Specification |
|---|
| WebGPU> # gpusupportedfeatures> |
Browser-Kompatibilität
Siehe auch
- DieWebGPU API
- Die SpezifikationFeature Index