WGSLLanguageFeatures
注意:此功能在 Web Workers 中可用。
WebGPU API 的 WGSLLanguageFeatures 介面是一個 類似 set 的物件,用於報告 WebGPU 實現所支援的 WGSL 語言擴充套件。
WGSLLanguageFeatures 物件透過 GPU.wgslLanguageFeatures 屬性訪問。
注意: 並非所有瀏覽器都支援 API 的所有 WGSL 語言擴充套件。建議您在選擇使用的任何擴充套件時進行徹底的測試。
可用功能
以下 WGSL 語言擴充套件在 WGSL 規範的 WGSL 語言擴充套件 中定義。請注意,功能的具體集合在不同實現和物理裝置上會有所不同,並且可能會隨時間而變化。
packed_4x8_integer_dot_product-
允許透過 WGSL 程式碼使用 DP4a (Dot Product of 4 Elements and Accumulate) GPU 指令。這些指令可以高效地執行 8 位整數點積運算,以加速計算,節省記憶體和網路頻寬,並提高效能,相比於等效的
f32版本。它們通常在機器學習模型中用於推理和 AI 框架。具體來說,當
packed_4x8_integer_dot_product可用時,WGSL 程式碼可以使用:- 打包 4 個 8 位整數的 32 位整數標量,用作點積指令的輸入(透過
dot4U8Packed()和dot4I8Packed()內建函式)。 - 打包和解包指令,使用打包的 4 個 8 位整數向量(透過
pack4xI8()和pack4xI8Clamp()等內建函式)。
- 打包 4 個 8 位整數的 32 位整數標量,用作點積指令的輸入(透過
pointer_composite_access-
使 WGSL 著色器程式碼能夠使用相同的點(
.)語法來訪問複雜資料型別的元件,無論您是直接處理資料還是處理指向它的指標。當
pointer_composite_access可用時:- 如果
foo是一個指標:foo.bar可用,作為編寫(*foo).bar的更便捷方式。通常需要星號(*)將指標轉換為可解引用的“引用”,但現在指標和引用幾乎可以互換使用。 - 如果
foo不是指標:點(.)運算子的執行方式與您習慣的直接訪問成員的方式完全相同。 - 如果
pa是一個儲存陣列起始地址的指標,則pa[i]可以直接訪問儲存該陣列第i個元素的記憶體位置。
有關更多詳細資訊和示例,請參閱 WGSL 中解引用複合型別的語法糖。
- 如果
readonly_and_readwrite_storage_textures-
當可用時,允許在指定儲存紋理繫結組佈局中的儲存紋理繫結組條目型別時,將
"read-only"和"read-write"storageTexture.access值設定為這些。它們分別允許 WGSL 程式碼讀取儲存紋理,以及讀取/寫入儲存紋理。 unrestricted_pointer_parameters-
放寬了將指標傳遞給 WGSL 函式的限制。當可用時,允許執行以下操作:
-
將儲存、統一和工作組地址空間的引數指標傳遞給使用者宣告的函式。
-
將結構體成員和陣列元素的指標傳遞給使用者宣告的函式。
有關更多詳細資訊,請參閱 指標作為函式引數。
-
例項屬性
以下屬性適用於所有隻讀的 類似 set 物件:
size-
返回 set 中值的數量。
例項方法
以下方法適用於所有隻讀的 類似 set 物件:
示例
檢查擴充套件是否可用
if (
navigator.gpu.wgslLanguageFeatures.has(
"readonly_and_readwrite_storage_textures",
)
) {
console.log("Read-only and read-write storage textures are available");
}
返回 set 的大小並遍歷值
const wgslFeatures = navigator.gpu.wgslLanguageFeatures;
// Return the size of the set
console.log(wgslFeatures.size);
// Iterate through all the set values using values()
const valueIterator = wgslFeatures.values();
for (const value of valueIterator) {
console.log(value);
}
// …
規範
| 規範 |
|---|
| WebGPU # gpuwgsllanguagefeatures |
瀏覽器相容性
載入中…