GPUSupportedFeatures
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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 GPUSupportedFeatures
-Schnittstelle der WebGPU API ist ein Set-ähnliches Objekt, das zusätzliche Funktionen beschreibt, die von einem GPUAdapter
unterstützt werden.
Das GPUSupportedFeatures
-Objekt für den aktuellen Adapter kann über die GPUAdapter.features
-Eigenschaft aufgerufen werden – verwenden Sie dieses, um zu testen, welche Features Ihre aktuelle Konfiguration unterstützt. Um ein GPUDevice
mit einem bestimmten aktivierten Feature zu erstellen, müssen Sie es im requiredFeatures
-Array des GPUAdapter.requestDevice()
-Deskriptors angeben.
Beachten Sie, dass nicht alle Features von WebGPU in allen unterstützenden Browsern verfügbar sein werden, selbst wenn die Features von der zugrunde liegenden Hardware unterstützt werden. Dies kann an Einschränkungen im zugrunde liegenden System, Browser oder Adapter liegen. Zum Beispiel:
- Das zugrunde liegende System kann möglicherweise nicht garantieren, dass ein Feature auf eine Weise verfügbar ist, die mit einem bestimmten Browser kompatibel ist.
- Der Browseranbieter hat möglicherweise keinen sicheren Weg gefunden, die Unterstützung für dieses Feature zu implementieren, oder hat es noch nicht geschafft.
Wenn Sie hoffen, ein bestimmtes zusätzliches Feature in einer WebGPU-Anwendung zu nutzen, wird gründliches Testen empfohlen.
Verfügbare Funktionen
Die folgenden zusätzlichen Funktionen sind in WebGPU definiert. Beachten Sie, dass die genaue Menge an verfügbaren Funktionen je nach Implementierung und physischen Geräten variieren wird und sich im Laufe der Zeit ändern kann.
Feature-Name | Beschreibung |
---|---|
bgra8unorm-storage |
Bei Aktivierung wird die STORAGE_BINDING -usage von bgra8unorm -format -GPUTexture s ermöglicht. |
clip-distances |
Bei Aktivierung wird die Verwendung von clip_distances in WGSL ermöglicht. |
depth-clip-control |
Ermöglicht das Deaktivieren des depth-clippings. Wenn depth-clip-control aktiviert ist, ist die unclippedDepth -Eigenschaft im primitive -Objekt verfügbar, das Teil der Deskriptoren von createRenderPipeline() oder createRenderPipelineAsync() ist, wenn ein GPURenderPipeline erstellt wird. primitive beschreibt, wie eine Pipeline Primitive aus ihren Vertex-Eingaben konstruiert und rasterisiert. Setzen Sie unclipped-depth auf true , um depth-clipping zu deaktivieren. |
depth32float-stencil8 |
Ermöglicht die Erstellung von Texturen mit dem Format depth32float-stencil8 . Wenn depth32float-stencil8 aktiviert ist, kann der depth32float-stencil8 -Wert für die format -Eigenschaft des createTexture() -Deskriptors verwendet werden, wenn ein GPUTexture erstellt wird. |
dual-source-blending |
Bei Aktivierung wird die Verwendung von dual_source_blending in WGSL ermöglicht, das beide Pixel-Shader-Ausgaben (@blend_src(0) und @blend_src(1) ) als Eingaben für eine Mischoperation mit dem einzigen Farb-Anhang bei @location(0) verwendet. In WebGPU ermöglicht dual-source-blending die folgenden Blendfaktoroperationen (angegeben in den dstFactor - und srcFactor -Eigenschaften der Deskriptoren von createRenderPipeline() und createRenderPipelineAsync() ): src1 , one-minus-src1 , src1-alpha und one-minus-src1-alpha . |
float32-blendable |
Bei Aktivierung wird das Mischen von r32float -, rg32float - und rgba32float -format -GPUTexture s ermöglicht. |
float32-filterable |
Bei Aktivierung wird das Filteren von r32float -, rg32float - und rgba32float -format -GPUTexture s ermöglicht. |
indirect-first-instance |
Bei Aktivierung wird die Verwendung von nicht-null firstInstance -Werten in der indirectBuffer -Eigenschaft der drawIndirect() - und drawIndexedIndirect() -Methoden ermöglicht, die auf Instanzen von GPURenderPassEncoder und GPURenderBundleEncoder verfügbar sind. |
rg11b10ufloat-renderable |
Bei Aktivierung wird die Nutzung des RENDER_ATTACHMENT -usage von rg11b10ufloat -format -GPUTexture s sowie deren Mischen und Multisampling ermöglicht. |
shader-f16 |
Bei Aktivierung wird die Verwendung des halben Präzision-Gleitkommatyps f16 in WGSL ermöglicht. |
texture-compression-bc |
Ermöglicht die Erstellung von zweidimensionalen BC-komprimierten Texturen. Wenn texture-compression-bc aktiviert ist, können die folgenden Werte für die format -Eigenschaft des createTexture() -Deskriptors verwendet werden, wenn ein GPUTexture 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 und bc7-rgba-unorm-srgb . |
texture-compression-bc-sliced-3d |
Ermöglicht die Erstellung von dreidimensionalen BC-komprimierten Texturen. Wenn texture-compression-bc-sliced-3d aktiviert ist, muss auch texture-compression-bc aktiviert sein, da es die BC-Texturformate in den ersten beiden Dimensionen ermöglicht (siehe texture-compression-bc , oben). texture-compression-bc-sliced-3d ermöglicht die Verwendung dieser Texturen in der dritten Dimension. Adapter, die texture-compression-bc unterstützen, unterstützen immer texture-compression-bc-sliced-3d . Beachten Sie, dass diese Funktion derzeit in keinem Browser unterstützt wird. |
texture-compression-astc |
Ermöglicht die Erstellung von zweidimensionalen ASTC-komprimierten Texturen. Wenn texture-compression-astc aktiviert ist, können die folgenden Werte für die format -Eigenschaft des createTexture() -Deskriptors verwendet werden, wenn ein GPUTexture 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 und astc-12x12-unorm-srgb . |
texture-compression-astc-sliced-3d |
Ermöglicht die Erstellung von dreidimensionalen ASTC-komprimierten Texturen. Wenn texture-compression-astc-sliced-3d aktiviert ist, muss auch texture-compression-astc aktiviert sein, da es die ASTC-Texturformate in den ersten beiden Dimensionen ermöglicht (siehe texture-compression-astc , oben). texture-compression-astc-sliced-3d ermöglicht die Nutzung dieser Texturen in der dritten Dimension. Adapter, die texture-compression-astc unterstützen, unterstützen nicht immer texture-compression-astc-sliced-3d . Beachten Sie, dass diese Funktion derzeit in keinem Browser unterstützt wird. |
texture-compression-etc2 |
Ermöglicht die Erstellung von zweidimensionalen ETC2-komprimierten Texturen. Wenn texture-compression-etc2 aktiviert ist, können die folgenden Werte für die format -Eigenschaft des createTexture() -Deskriptors verwendet werden, wenn ein GPUTexture erstellt wird: etc2-rgb8unorm , etc2-rgb8unorm-srgb , etc2-rgb8a1unorm , etc2-rgb8a1unorm-srgb , etc2-rgba8unorm , etc2-rgba8unorm-srgb , eac-r11unorm , eac-r11snorm , eac-rg11unorm und eac-rg11snorm . |
timestamp-query |
Ermöglicht das Ausführen von Zeitstempelanfragen, die die Zeit messen, die zum Ausführen von Berechnungs- und Render-Passagen benötigt wird. Wenn timestamp-query aktiviert ist, kann der timestamp -Wert für die type -Eigenschaft des createQuerySet() -Deskriptors eingestellt werden, wenn ein GPUQuerySet erstellt wird. Darüber hinaus kann die timestampWrites -Eigenschaft im beginComputePass() - und beginRenderPass() -Deskriptor eingestellt werden, wenn ein GPUComputePassEncoder bzw. GPURenderPassEncoder erstellt wird. GPUQuerySet -Objekte werden innerhalb der Objekte referenziert, die in der timestampWrites -Eigenschaft enthalten sind, um anzugeben, wo Zeitstempel geschrieben werden sollen. |
Instanz-Eigenschaften
Die folgenden Eigenschaften stehen allen schreibgeschützten Set-ähnlichen Objekten zur Verfügung (die unten stehenden Links beziehen sich auf die Set
Referenzseite des globalen Objekts).
size
Experimentell-
Gibt die Anzahl der Werte im Set zurück.
Instanz-Methoden
Die folgenden Methoden stehen allen schreibgeschützten Set-ähnlichen Objekten zur Verfügung (die unten stehenden Links beziehen sich auf die Set
Referenzseite des globalen Objekts).
has()
Experimentell-
Gibt einen booleschen Wert zurück, der angibt, ob ein Element mit dem gegebenen Wert im Set vorhanden ist oder nicht.
values()
Experimentell-
Gibt ein neues Iterator-Objekt zurück, das die Werte für jedes Element im Set in Einfüge-Reihenfolge liefert.
keys()
Experimentell-
Ein Alias für
values()
. entries()
Experimentell-
Gibt ein neues Iterator-Objekt zurück, das ein Array von
[value, value]
für jedes Element im Set in Einfüge-Reihenfolge enthält. forEach()
Experimentell-
Ruft eine bereitgestellte Rückruffunktion einmal für jeden im Set vorhandenen Wert in Einfüge-Reihenfolge 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 # gpu-supportedfeatures |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API
- Die Spezifikation Feature Index