1 个不稳定版本
0.1.0 | 2020 年 8 月 10 日 |
---|
#42 在 #web-gpu
90 每月下载次数
195KB
4K SLoC
注意:这是一个临时分支,以便 Bevy 可以使用稍微新一点的 WGPU 版本。当发布新的 WGPU-RS 版本时,我们将回归到官方版本。
wgpu-rs
wgpu-rs 是 wgpu-core 上的惯用 Rust 包装器。[链接](https://github.com/gfx-rs/wgpu)。它旨在满足 Rust 社区在通用图形和计算需求。
wgpu-rs 可以针对原生支持的后端和 WASM 直接进行。
展示
用法
如何运行示例
所有示例都位于 examples 目录下。
这些示例使用在 Cargo 文档中找到的默认示例运行语法。例如,要运行 cube
示例
cargo run --example cube
hello-triangle
和 hello-compute
示例显示了没有任何辅助代码的裸机设置。对于 hello-compute
,传递用空格分隔的 4 个数字作为参数
cargo run --example hello-compute 1 2 3 4
在 Web 上运行示例 (wasm32-unknown-unknown
)
在 Web 上运行仍处于开发中。您可能需要在浏览器中启用实验性标志。检查浏览器实现状态在 webgpu.io。值得注意的是,wgpu-rs
常常在赶上上游 WebGPU API 变化方面领先。我们保持 gecko
分支指向应在最新 Firefox 上工作的代码。
要针对 wasm32-unknown-unknown
目标运行示例,首先像往常一样构建示例,然后运行 wasm-bindgen
# Checkout `gecko` branch that matches the state of Firefox
git checkout upstream/gecko
# Install or update wasm-bindgen-cli
cargo install -f wasm-bindgen-cli
# Build with the wasm target
RUSTFLAGS=--cfg=web_sys_unstable_apis cargo build --target wasm32-unknown-unknown --example hello-triangle
# Generate bindings in a `target/generated` directory
wasm-bindgen --out-dir target/generated --web target/wasm32-unknown-unknown/debug/examples/hello-triangle.wasm
在 target/generated
目录中创建一个 index.html
文件并添加以下代码
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="module">
import init from "./hello-triangle.js";
init();
</script>
</body>
</html>
现在在 target/generated
目录中运行一个本地 Web 服务器,以在浏览器中查看 hello-triangle
。例如 python -m http.server
如何编译示例中的着色器
目前,示例中的着色器是用 GLSL 4.50 编写的,并手动编译为 SPIR-V。将来 WGSL 将成为 WebGPU 的着色器语言,但尚未实现支持。
目前,可以通过运行 make
将着色器编译成 SPIR-V,这需要您拥有 glslang
的 glslangValidator
二进制文件。
朋友们
向以下与 wgpu-rs 配合得最好的项目致敬
- wgpu_glyph - 用于您的文本渲染需求
- coffee - 一个完整的 2D 引擎
- iced - 一个跨平台 GUI 库
- rgx - 一个 2D 图形库
- imgui-wgpu - Dear ImGui 接口
- pixels - 创建硬件加速像素帧缓冲区的最简单方式
- kas - 工具抽象系统
- oxidator - RTS 游戏引擎
- nannou - 一个创意编码框架
- harmony - 一个现代 2D/3D 引擎
- wgpu-pbr - 游戏的实时 PBR 渲染器
此外,支持 wgpu-rs 的库
开发
如果您需要测试对 gfx-rs 或其他依赖的本地修复,最简单的方法是添加一个 Cargo 补丁。例如,在 Windows 上工作于 DX12 后端时,您可以检出 gfx-rs 仓库的 "hal-0.2" 分支并将其添加到 "Cargo.toml" 的末尾
[patch.crates-io]
gfx-backend-dx12 = { path = "../gfx/src/backend/dx12" }
gfx-hal = { path = "../gfx/src/hal" }
如果需要更改版本,您需要执行 cargo update -p gfx-backend-dx12
。
依赖项
~2–12MB
~134K SLoC