Skip to content

JiashuaiXu/webgpu-samples

 
 

Repository files navigation

🎮 WebGPU Samples - 学习指南

在线演示: WebGPU Samples 官网

WebGPU Samples 是一套展示 WebGPU API 用法的示例和演示集合。WebGPU 是新一代 Web 图形 API,提供对现代 GPU 的底层访问能力。


📚 学习文档

我们提供了详细的中文学习教程,帮助你从零开始掌握 WebGPU:

👉 开始学习 →

教程目录

教程 难度 内容
WebGPU 基础概念 Adapter、Device、Buffer、Texture、Pipeline
Hello Triangle WebGPU 初始化、着色器、渲染循环
Hello Triangle MSAA 多重采样抗锯齿
Rotating Cube ⭐⭐ 顶点缓冲区、MVP矩阵、深度测试
Textured Cube ⭐⭐ 纹理加载、采样器、Bind Groups
Compute Boids ⭐⭐⭐ 计算着色器、Storage Buffer

参考资料


🚀 快速开始

环境要求

  • Node.js 18+
  • 支持 WebGPU 的浏览器:
    • Chrome 113+
    • Edge 113+
    • Safari 17+ (macOS Sonoma)
    • Firefox (需开启实验特性)

安装与运行

# 1. 克隆项目 (如果还没有)
git clone https://github.com/webgpu/webgpu-samples.git
cd webgpu-samples

# 2. 安装依赖
npm ci

# 3. 启动开发服务器
npm start

# 4. 打开浏览器访问
# http://localhost:8080

构建命令

命令 说明
npm ci 安装依赖
npm start 启动开发服务器 (热重载)
npm run build 生产环境构建
npm run serve 运行生产服务器

📂 项目结构

webgpu-samples/
│
├── 📄 index.html              # 项目入口页面
├── 📄 package.json            # 项目配置和依赖
├── 📄 rollup.config.js        # Rollup 打包配置
├── 📄 LICENSE.txt             # BSD-3-Clause 许可证
│
├── 📚 docs/                   # 学习教程文档
│   ├── README.md             # 学习路径索引 (入口)
│   ├── 00-webgpu-basics.md   # WebGPU 基础概念
│   ├── 01-hello-triangle.md  # Hello Triangle 教程
│   ├── 02-hello-triangle-msaa.md
│   ├── 03-rotating-cube.md
│   ├── 05-textured-cube.md
│   ├── 11-compute-boids.md
│   └── appendix/             # 附录
│       ├── wgsl-cheatsheet.md      # WGSL 速查表
│       └── webgpu-api-reference.md # API 参考
│
├── 🎯 sample/                 # 示例源码目录 (40+ 示例)
│   ├── helloTriangle/        # 基础示例
│   │   ├── index.html       # 示例页面
│   │   ├── main.ts          # 主程序逻辑
│   │   └── meta.ts          # 示例元数据
│   ├── rotatingCube/
│   ├── texturedCube/
│   ├── computeBoids/
│   ├── shadowMapping/
│   ├── deferredRendering/
│   ├── particles/
│   ├── cornell/              # 光线追踪
│   └── ...                   # 更多示例
│
├── 🎨 shaders/                # 共享着色器 (WGSL)
│   ├── basic.vert.wgsl       # 基础顶点着色器
│   ├── triangle.vert.wgsl    # 三角形顶点着色器
│   ├── red.frag.wgsl         # 红色片段着色器
│   ├── black.frag.wgsl       # 黑色片段着色器
│   ├── vertexPositionColor.frag.wgsl
│   └── fullscreenTexturedQuad.wgsl
│
├── 📦 meshes/                 # 3D 网格数据
│   ├── cube.ts               # 立方体顶点数据
│   ├── sphere.ts             # 球体
│   ├── box.ts                # 盒子
│   ├── teapot.ts             # 茶壶
│   ├── stanfordDragon.ts     # 斯坦福龙模型
│   ├── primitives.ts         # 基础图元
│   ├── mesh.ts               # 网格基类
│   └── utils.ts              # 工具函数
│
├── 🌐 public/                 # 静态资源
│   ├── assets/
│   │   ├── img/             # 图片纹理 (PNG, JPG)
│   │   ├── font/            # 字体资源
│   │   ├── gltf/            # 3D 模型 (GLB)
│   │   └── video/           # 视频文件
│   ├── css/                  # 样式文件
│   │   ├── styles.css       # 全局样式
│   │   ├── HomePage.css     # 首页样式
│   │   ├── MainLayout.css   # 主布局
│   │   └── SampleLayout.css # 示例页面布局
│   └── js/
│       └── iframe-helper.js  # iframe 辅助脚本
│
├── 🔧 src/                    # 框架源码
│   ├── main.ts               # 主入口
│   ├── samples.ts            # 示例注册
│   ├── types.d.ts            # 类型定义
│   └── utils/                # 工具函数
│
├── 🛠️ build/                  # 构建脚本
│   ├── tools/
│   │   ├── build.js         # 构建脚本
│   │   ├── serve.js         # 开发服务器
│   │   └── copy.js          # 文件复制
│   └── lib/                  # 构建工具库
│
└── 📁 out/                    # 构建输出目录 (gitignore)
    └── ...                   # 编译后的文件

📄 关键文件说明

文件/目录 说明
sample/*/main.ts 每个示例的主程序,包含 WebGPU 初始化和渲染逻辑
sample/*/index.html 示例的 HTML 页面
sample/*/*.wgsl 示例专用的着色器文件
shaders/*.wgsl 多个示例共享的着色器
meshes/*.ts 3D 模型的顶点数据定义
src/samples.ts 所有示例的注册和配置

🎯 示例文件结构

每个示例目录通常包含:

sample/exampleName/
├── index.html       # HTML 页面模板
├── main.ts          # TypeScript 主程序
├── meta.ts          # 示例元数据 (名称、描述、标签)
└── *.wgsl           # 该示例专用的着色器 (可选)

🎯 示例列表

入门示例

示例 说明
helloTriangle 最基础的 WebGPU 示例
helloTriangleMSAA 带抗锯齿的三角形
rotatingCube 旋转的彩色立方体
twoCubes 渲染两个立方体
texturedCube 带纹理的立方体
instancedCube 实例化渲染

计算着色器

示例 说明
computeBoids 粒子群模拟 (Boids 算法)
gameOfLife 康威生命游戏
bitonicSort GPU 排序算法
imageBlur 图像模糊处理

高级渲染

示例 说明
shadowMapping 阴影映射
deferredRendering 延迟渲染
normalMap 法线贴图
particles 高级粒子系统
cubemap 立方体贴图/天空盒

专业技术

示例 说明
a-buffer 顺序无关透明度
cornell 康奈尔盒 (光线追踪)
volumeRenderingTexture3D 体积渲染

🎓 学习建议

  1. 按顺序学习 - 从 Hello Triangle 开始,逐步深入
  2. 动手实践 - 修改代码,观察效果变化
  3. 理解着色器 - WGSL 是 WebGPU 的核心
  4. 善用调试 - Chrome DevTools 的 WebGPU 面板
  5. 阅读规范 - 遇到问题查阅官方文档

🔗 有用资源


📄 许可证

BSD-3-Clause License


开始你的 WebGPU 学习之旅吧! 🚀

👉 查看学习教程

About

WebGPU Samples

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 95.9%
  • CSS 1.5%
  • JavaScript 1.4%
  • Other 1.2%