我有一个用wgPU/rust编写的工作物理模拟器,当我从命令行运行时它就能工作.然而,当我try 在Chrome v114(根据我在网上看到的支持)上运行时,我收到以下错误消息,指出计算工作组的最大数量为零.我打印出了我的适配器功能,得到了以下内容:Limits { . . . max_compute_workgroup_storage_size: 0, max_compute_invocations_per_workgroup: 0, max_compute_workgroup_size_x: 0, max_compute_workgroup_size_y: 0, max_compute_workgroup_size_z: 0, max_compute_workgroups_per_dimension: 0, max_push_constant_size: 256 }

此外,在引发错误时,控制台会转储以下内容: Version: WebGL 2.0 (OpenGL ES 3.0 Chromium)

我的适配器设置错误了吗?或者WGPU还不支持浏览器中的计算着色器?欢迎任何建议.谢谢大家.

编辑:以防这会破解代码,这些是我在本地运行时的设备功能.


...
max_compute_workgroup_storage_size: 16384, 
max_compute_invocations_per_workgroup: 256, max_compute_workgroup_size_x: 256, max_compute_workgroup_size_y: 256, max_compute_workgroup_size_z: 64, max_compute_workgroups_per_dimension: 65535, max_push_constant_size: 0 }```

推荐答案

WASM中的wgpu目前支持either WebGL 2 or WebGPU,但支持not both in one build.

由于您看到的是WebGL 2报告,因此您的wgpu依赖项规范中已激活features = ["webgl"];您必须删除它才能启用WebGPU支持.

这不会对兼容性造成任何损害,因为您的应用程序需要计算着色器,而计算着色器不是WebGL 2的一部分.

Rust相关问答推荐

通过解引用将值移出Box(以及它被脱糖到什么地方)?

在决定使用std::Sync::Mutex还是使用Tokio::Sync::Mutex时,操作系统线程调度是考虑因素吗?

用 rust 蚀中的future 展望 struct 的future

Gtk4-rs:将监视器作为gdk::monitor获取,而不是作为glib::对象获取

为什么&;mut buf[0..buf.len()]会触发一个可变/不可变的borrow 错误?

对于rustc编译的RISC-V32IM二进制文件,llvm objdump没有输出

为什么 vec![Vec::with_capacity(n)] 为子向量创建 0 容量?

是否可以在不直接重复的情况下为许多特定类型实现一个函数?

如何在 `connect_activate()` 之外创建一个 `glib::MainContext::channel()` 并将其传入?

Boxing 如何将数据从堆栈移动到堆?

闭包返回类型的生命周期规范

方法可以被误认为是标准特性方法

为什么需要同时为值和引用实现`From`?方法不应该自动解引用或borrow 吗?(2023-06-16)

如何从 x86_64 Mac 构建 M1 Mac?

在每个循环迭代中删除borrow

判断对象是 PyDatetime 还是 Pydate 的实例?

&str 的编译时拆分是否可能?

在 Rust 中返回对枚举变体的引用是个好主意吗?

相交着色器从 SSBO 中读取零

守卫如何影响匹配语句?