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 |
浏览器兼容性
加载中…