关于 webgpu-threejs-tsl
面向 Three.js WebGPU 开发的技能资料,帮助开发者用 JavaScript 和 TSL 编写着色器,并提供概念文档、示例与模板。
主要功能
- 01TSL 节点着色器文档
- 02节点材质与计算着色器示例
- 03后期处理与 WGSL 集成指南
- 04WebGPU 项目和计算着色器模板
- 05设备丢失及设备限制参考
适用场景
- 01搭建 Three.js WebGPU 项目
- 02使用 TSL 创建自定义材质
- 03实现 GPU 计算粒子效果
- 04从 GLSL 迁移到 TSL
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dgreenheck/ webgpu-claude-skill --skill webgpu-threejs-tsl安装后在 Claude Code 中输入/webgpu-threejs-tsl确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
REFERENCE.mddocs/compute-shaders.mdcore-concepts.mddevice-loss.mdlimits-and-features.mdmaterials.mdpost-processing.mdwgsl-integration.mdexamples/basic-setup.jscustom-material.jsearth-shader.jsparticle-system.jspost-processing.jstemplates/compute-shader.jswebgpu-project.js详细介绍
使用 TSL 的 WebGPU Three.js
TSL(Three.js Shading Language)是一种基于节点的着色器抽象,让你可以用 JavaScript 编写 GPU 着色器,而不是使用 GLSL/WGSL 字符串。
快速开始
import * as THREE from 'three/webgpu';
import { color, time, oscSine } from 'three/tsl';
const renderer = new THREE.WebGPURenderer();
await renderer.init();
const material = new THREE.MeshStandardNodeMaterial();
material.colorNode = color(0xff0000).mul(oscSine(time));
技能内容
文档
docs/core-concepts.md- 类型、运算符、uniform、控制流docs/materials.md- 节点材质及其所有属性docs/compute-shaders.md- 使用实例化数组进行 GPU 计算docs/post-processing.md- 内置效果和自定义效果docs/wgsl-integration.md- 自定义 WGSL 函数docs/device-loss.md- 处理 GPU 设备丢失与恢复docs/limits-and-features.md- WebGPU 设备限制和可选功能
示例
examples/basic-setup.js- 最简 WebGPU 项目examples/custom-material.js- 自定义着色器材质examples/particle-system.js- GPU 计算粒子examples/post-processing.js- 效果管线examples/earth-shader.js- 带大气层的完整地球
模板
templates/webgpu-project.js- 入门项目模板templates/compute-shader.js- 计算着色器模板
参考
REFERENCE.md- 快速参考速查表
核心概念
导入模式
// Always use the WebGPU entry point
import * as THREE from 'three/webgpu';
import { /* TSL functions */ } from 'three/tsl';
节点材质
使用 TSL 节点替换标准材质属性:
material.colorNode = texture(map); // instead of material.map
material.roughnessNode = float(0.5); // instead of material.roughness
material.positionNode = displaced; // vertex displacement
方法链式调用
TSL 使用方法链式调用执行操作:
// Instead of: sin(time * 2.0 + offset) * 0.5 + 0.5
time.mul(2.0).add(offset).sin().mul(0.5).add(0.5)
自定义函数
使用 Fn() 编写可复用的着色器逻辑:
const fresnel = Fn(([power = 2.0]) => {
const nDotV = normalWorld.dot(viewDir).saturate();
return float(1.0).sub(nDotV).pow(power);
});
何时使用此技能
- 使用 WebGPU 渲染器设置 Three.js
- 使用 TSL 创建自定义着色器材质
- 编写 GPU 计算着色器
- 构建后期处理管线
- 从 GLSL 迁移到 TSL
- 实现视觉效果(粒子、水、地形等)
资源
- Three.js TSL Wiki
- WebGPU 示例(文件名前缀为
webgpu_)
评论
支持 Markdown