wgpu-kit 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/README.zh-CN.md +36 -41
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
**Browser GPGPU middle layer. 200,000 particles at 142fps — in 5 lines of code.**
|
|
4
4
|
All the WebGPU boilerplate — device, buffers, pipelines, dispatch, readbacks — wrapped into two simple API layers.
|
|
5
5
|
|
|
6
|
+
[](https://github.com/nanfengw0w/wgpu-kit/actions/workflows/ci.yml) [](https://www.npmjs.com/package/wgpu-kit) [](LICENSE)
|
|
7
|
+
|
|
6
8
|
[**API Reference**](docs/API.md) · [中文文档](README.zh-CN.md) · **[LIVE DEMO](https://nanfengw0w.github.io/wgpu-kit/)** · Changelog: [releases](https://github.com/nanfengw0w/wgpu-kit/releases)
|
|
7
9
|
|
|
8
|
-

|
|
9
11
|
|
|
10
12
|
## Quick start
|
|
11
13
|
|
|
@@ -62,7 +64,7 @@ dispatch, readbacks, error line-mapping — all handled by the library.
|
|
|
62
64
|
| `wgpu-kit/media` | canvas recording (webm/mp4) |
|
|
63
65
|
| `wgpu-kit/vite` | WGSL kernel hot reload |
|
|
64
66
|
|
|
65
|
-

|
|
66
68
|
|
|
67
69
|
*The life pack: Turing patterns / Physarum / Boids / Tentacles — [open the demo](https://nanfengw0w.github.io/wgpu-kit/life.html).*
|
|
68
70
|
|
package/README.zh-CN.md
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
# wgpu-kit
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
3
|
+
> 浏览器创意编程 GPU 工具包:20 万粒子物理 120fps,只需 5 行代码。
|
|
4
|
+
> WebGPU 计算的全套样板——设备、缓冲、管线、dispatch、双缓冲、读回、错误行号映射——打包成两层简单 API。
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
· **[API 参考(中文)](docs/API.zh-CN.md)** · [API Reference (English)](docs/API.md)
|
|
6
|
+
[](https://github.com/nanfengw0w/wgpu-kit/actions/workflows/ci.yml) [](https://www.npmjs.com/package/wgpu-kit) [](LICENSE)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
English: [README.md](README.md) · [API 参考(中文)](docs/API.zh-CN.md) · [API Reference (English)](docs/API.md) · **[在线演示](https://nanfengw0w.github.io/wgpu-kit/)**
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
## 快速开始
|
|
10
13
|
|
|
11
14
|
```bash
|
|
12
|
-
npm i wgpu-kit
|
|
15
|
+
npm i wgpu-kit
|
|
13
16
|
```
|
|
14
17
|
|
|
15
|
-
**5 行,10
|
|
18
|
+
**5 行,10 万粒子:**
|
|
16
19
|
|
|
17
20
|
```ts
|
|
18
21
|
import { particles } from 'wgpu-kit';
|
|
@@ -23,7 +26,7 @@ function frame() { sim.tick(); requestAnimationFrame(frame); }
|
|
|
23
26
|
frame();
|
|
24
27
|
```
|
|
25
28
|
|
|
26
|
-
**自定义 GPU
|
|
29
|
+
**自定义 GPU 计算**——你只写"单个元素怎么变"的函数:
|
|
27
30
|
|
|
28
31
|
```ts
|
|
29
32
|
import { elementKernel, Buffer } from 'wgpu-kit';
|
|
@@ -32,8 +35,8 @@ const pos = await Buffer.create('vec2f', 100_000);
|
|
|
32
35
|
const vel = await Buffer.create('vec2f', 100_000);
|
|
33
36
|
|
|
34
37
|
const integrate = elementKernel({
|
|
35
|
-
state:
|
|
36
|
-
inputs:
|
|
38
|
+
state: { pos: 'vec2f' },
|
|
39
|
+
inputs: { vel: 'vec2f' },
|
|
37
40
|
uniforms: { dt: 'f32' },
|
|
38
41
|
code: `
|
|
39
42
|
fn userFn(idx: u32, dt: f32) {
|
|
@@ -44,55 +47,47 @@ const integrate = elementKernel({
|
|
|
44
47
|
await integrate.run({ pos, vel }, { dt: 0.02 });
|
|
45
48
|
```
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
## 包家族
|
|
50
|
+
## 入口一览
|
|
50
51
|
|
|
51
|
-
|
|
|
52
|
+
| 导入 | 用途 |
|
|
52
53
|
| --- | --- |
|
|
53
|
-
| `wgpu-kit` | elementKernel 核心 + Buffer/PingPong/rawKernel |
|
|
54
|
-
| `wgpu-kit/particles` |
|
|
55
|
-
| `wgpu-kit/life` |
|
|
56
|
-
| `wgpu-kit/fields` | 向量场平迹
|
|
54
|
+
| `wgpu-kit` | elementKernel 核心 + Buffer / PingPong / rawKernel |
|
|
55
|
+
| `wgpu-kit/particles` | 粒子生命:力矩阵预设、自适应世界、热更新 |
|
|
56
|
+
| `wgpu-kit/life` | 图灵斑图 / 粘菌 / Boids / 软体触手 |
|
|
57
|
+
| `wgpu-kit/fields` | 向量场平迹 |
|
|
57
58
|
| `wgpu-kit/image` | GPU 滤镜管线(blur/sharpen/edge/…) |
|
|
58
59
|
| `wgpu-kit/react` | `<ParticleCanvas />` |
|
|
59
60
|
| `wgpu-kit/three` | three.js 快照互通 |
|
|
60
|
-
| `wgpu-kit/media` | 画布录制(
|
|
61
|
-
| `wgpu-kit/
|
|
61
|
+
| `wgpu-kit/media` | 画布录制(webm/mp4) |
|
|
62
|
+
| `wgpu-kit/observe` | GPU 计时 / 设备诊断 / 画布助手 |
|
|
63
|
+
| `wgpu-kit/vite` | WGSL kernel 热重载 |
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
| 指标 | 数值 | 环境 |
|
|
66
|
-
| --- | --- | --- |
|
|
67
|
-
| 粒子模拟(端到端) | **131,072 粒子 @ 142fps** | RTX 4060 Laptop,playground 实测 |
|
|
68
|
-
| 粒子计算(纯 GPU) | grid@131k = **0.89 ms/帧** | 同上,headless 基准 |
|
|
69
|
-
| 邻域算法对比 | grid 比 O(N²) tiling 快 **6.7×**@16k,近似 O(N) | 同会话基准 |
|
|
70
|
-
| 库体积 | core gzip **5.34 kB**;+particles **10.27 kB** | gzip -c |
|
|
65
|
+

|
|
71
66
|
|
|
72
|
-
|
|
67
|
+
*life 包:图灵斑图 / 粘菌 / Boids / 软体触手 — [打开演示](https://nanfengw0w.github.io/wgpu-kit/life.html)。*
|
|
73
68
|
|
|
74
|
-
##
|
|
69
|
+
## 数字(全部可复现)
|
|
75
70
|
|
|
76
|
-
|
|
71
|
+
| 指标 | 数值 | 环境 |
|
|
72
|
+
| --- | --- | --- |
|
|
73
|
+
| 粒子端到端 | 200,000 @ 122fps / 66,000 @ 144fps | RTX 4060 Laptop,playground 实测 |
|
|
74
|
+
| 粒子计算(grid) | 16k→262k 平坦,3.0→3.3ms/帧 | headless 基准 |
|
|
75
|
+
| 邻域算法 | grid 近似 O(N),66k 时比暴力快 8.5× | 同会话 A/B |
|
|
76
|
+
| 库体积 | core gzip ~10kB(共享上下文构建) | gzip |
|
|
77
77
|
|
|
78
78
|
## 三条设计铁律
|
|
79
79
|
|
|
80
80
|
1. **第二层 5 分钟出活,第一层不封顶**——`rawKernel` 与原生 `GPUBuffer` 逃生舱常开;
|
|
81
|
-
2. **错误说人话**——WGSL
|
|
82
|
-
3.
|
|
81
|
+
2. **错误说人话**——WGSL 编译失败映射回你的代码行号;
|
|
82
|
+
3. **基准即文档**——所有数字可复现;gzip 体积预算由 `npm run build` 强制核对。
|
|
83
83
|
|
|
84
84
|
## 支持矩阵
|
|
85
85
|
|
|
86
86
|
| 浏览器 | 状态 |
|
|
87
87
|
| --- | --- |
|
|
88
|
-
| Chrome / Edge 113+(含无头) | ✅
|
|
89
|
-
| Safari 18+ | 🔶 WebGPU
|
|
90
|
-
|
|
|
91
|
-
| WebGL2 / 无 WebGPU | ❌ 不做降级(ADR-1);打开 [detect 页](playground/detect.html)可诊断 |
|
|
92
|
-
|
|
93
|
-
## 项目方法论
|
|
94
|
-
|
|
95
|
-
这不是一个"写完就算"的仓库:**每个阶段完成后,由无头浏览器在真实 GPU 上运行结构化探针验证,验证日志、路径对比、事故复盘全部入档**。从裸 WebGPU spike 到 13 万粒子,共 6 个阶段、7 个版本标签、38 项自动化探针。
|
|
88
|
+
| Chrome / Edge 113+(含无头) | ✅ 全部验证在此完成(RTX 4060,D3D 后端) |
|
|
89
|
+
| Safari 18+ / Firefox | 🔶 WebGPU 可用即应工作;未实测,issue 欢迎 |
|
|
90
|
+
| WebGL2 / 无 WebGPU | ❌ 不做降级(设计决策);`detect.html` 可诊断 |
|
|
96
91
|
|
|
97
92
|
## 许可
|
|
98
93
|
|