This is a quick evidence check, not a verdict. Use it to decide which repo deserves a closer read.
Compare webgpu-threejs-tsl vs gstack
gstack has a clearer install path than webgpu-threejs-tsl.
Pick this if you want a bundled workflow suite instead of one focused skill.
Dimensionwebgpu-threejs-tslgstack
Shortlist fitstrong fitstrong fit
Installneeds reviewclear
Sourcestrongusable
Scopefocusedsuite
Compare webgpu-threejs-tsl vs Matt Pocock Skills
Matt Pocock Skills has a clearer install path than webgpu-threejs-tsl.
Pick this if you want the clearer install path before reading the repo.
Dimensionwebgpu-threejs-tslMatt Pocock Skills
Shortlist fitstrong fitsolid fit
Installneeds reviewusable
Sourcestrongstrong
Scopefocusedbroad
Source evidence
Source excerpts used for this adoption decision. Low-confidence cases link back to GitHub instead of forcing a misleading quote.
README excerpt
README.md
Overview
This skill provides Claude with comprehensive knowledge for:
Setting up Three.js with WebGPU renderer
Writing shaders using TSL (Three.js Shading Language)
Creating node-based materials
Building GPU compute shaders
Implementing post-processing effects
Integrating custom WGSL code
Installation
This repo ships the same content in two formats so it works in both Claude Code (as an Agent Skill) and Cursor (as project rules). The Claude skill under skills/ is the source of truth; the Cursor rules under .cursor/rules/ are thin shims that @file-reference those same docs, so edits flow through automatically.
Or manually copy the `skills/webgpu-threejs-tsl` folder to:
- **Global**: `~/.claude/skills/`
- **Project**: `<project>/.claude/skills/`
### Cursor
Clone this repo and open it directly — Cursor picks up `.cursor/rules/` automatically.
To use the rules in your own project, copy **both** directories into your project root, preserving the paths:
your-project/
├── .cursor/rules/ # from this repo
└── skills/webgpu-threejs-tsl/ # from this repo (referenced by the rules)
The `.mdc` files use `@file` references pointing at `skills/webgpu-threejs-tsl/...`, so the `skills/` directory must travel with them. If you'd rather not keep the `skills/` folder, inline the referenced content into each `.mdc` file.
The rules are scoped by globs and auto-attach only on relevant files:
- `webgpu-threejs-tsl.mdc` — entry point, JS/TS files
- `compute-shaders.mdc` — files matching `*compute*` or `*particle*`
- `post-processing.mdc` — files matching `*post*`, `*effect*`, `*bloom*`
- `wgsl-integration.mdc` — `.wgsl` files and `*wgsl*` JS/TS
- `device-loss-and-limits.mdc` — files matching `*renderer*` or `*webgpu*`
## Quick Example
import * as THREE from 'three/webgpu';
import { color, time, oscSine, normalWorld, cameraPosition, positionWorld, Fn, float } from 'three/tsl';
// WebGPU renderer
const renderer = new THREE.WebGPURenderer();
await renderer.init();
// TSL material with animated fresnel
const material = new THREE.MeshStandardNodeMaterial();
TSL (Three.js Shading Language) is a node-based shader abstraction that lets you write GPU shaders in JavaScript instead of GLSL/WGSL strings.
Quick Start
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));
Import Pattern
// Always use the WebGPU entry point
import * as THREE from 'three/webgpu';
import { /* TSL functions */ } from 'three/tsl';
Node Materials
Replace standard material properties with TSL nodes:
material.colorNode = texture(map); // instead of material.map
material.roughnessNode = float(0.5); // instead of material.roughness
material.positionNode = displaced; // vertex displacement