WebGPU:在浏览器中运行 250,000 个粒子
这标志着第 50 天。这是我“每天从零开始构建一项新技术”系列挑战的最后一天。我想用 WebGPU 来收官。
我在浏览器内部完全通过 GPU 模拟了 250,000 个粒子。
你的 CPU 拥有几个高速核心。你的 GPU 则拥有数千个简单核心。CPU 只能逐个移动粒子,而 GPU 可以同时移动数千个粒子。
WebGPU 是 WebGL 的现代继任者。它通过 compute shaders 让你的浏览器能够访问硬件。这些 shaders 允许 GPU 进行数学运算,而不仅仅是绘制图形。
工作原理:
• 你创建一个 device 来管理 GPU。 • 你创建一个 buffer 来存储位置和速度等粒子数据。 • 你只需上传一次数据,并将其保留在 GPU 上。 • 你为单个粒子编写一个 compute shader。 • GPU 会同时在所有 250,000 个粒子上运行该 shader。
数据始终保留在 GPU 上。它从计算阶段直接进入渲染阶段,无需返回 CPU。这种速度使得模拟能够以 60fps 的帧率运行。
WebGPU 是浏览器内数学运算和本地机器学习的新基石。这是结束这个系列最完美的方式。
感谢你一路见证这段旅程。你可以在这里找到每个项目的完整存档。
完整代码:https://github.com/dev48v/webgpu-from-zero
完整文章:https://dev.to/dev48v/webgpu-i-simulated-250000-particles-entirely-on-the-gpu-in-the-browser-2o0f