en un clic
r3f-setup
Set up a React Three Fiber project with WebGPU support.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Set up a React Three Fiber project with WebGPU support.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
Poll for changes to any value and trigger React re-renders when it changes.
Day-to-day coding style and patterns for R3F game development with Miniplex ECS.
Verekia's preferred project setup with Next.js Pages Router, Tailwind 4, oxfmt, oxlint, and TypeScript.
Use Zustand as a simple state store for entity management (not a true ECS).
Attach meshes to bones of a skinned mesh, such as attaching a sword to a character's hand.
Shake the camera when the player takes damage or on impacts for visual feedback.
| name | r3f-setup |
| description | Set up a React Three Fiber project with WebGPU support. |
Set up a React Three Fiber project with WebGPU support using React 19 and Three.js TSL.
Core dependencies for R3F with WebGPU:
{
"dependencies": {
"@react-three/drei": "11.0.0-alpha.4",
"@react-three/fiber": "10.0.0-alpha.1",
"react": "19.2.3",
"react-dom": "19.2.3",
"three": "0.182.0"
},
"devDependencies": {
"@types/three": "0.182.0"
},
"overrides": {
"three": "0.182.0"
}
}
Import Canvas from the WebGPU entry point:
import { Canvas } from '@react-three/fiber/webgpu'
const App = () => (
<Canvas>
<mesh>
<boxGeometry />
<meshBasicMaterial color="red" />
</mesh>
</Canvas>
)
For custom shaders, use Three.js TSL (Three Shading Language):
import { Fn, vec3, sin, time } from 'three/tsl'
Use node materials like meshBasicNodeMaterial for TSL integration.
Create r3f.d.ts in your project (at the root for example) for proper typings:
import type { ThreeToJSXElements } from '@react-three/fiber'
import type * as THREE from 'three/webgpu'
declare module '@react-three/fiber' {
interface ThreeElements extends ThreeToJSXElements<typeof THREE> {}
}
This enables R3F element's typings. Make sure it's part of the files included in your tsconfig.json.
Three.js 0.182.0 and detect-gpu require patches for WebGPU/SSR compatibility. Add to package.json:
{
"patchedDependencies": {
"three@0.182.0": "patches/three@0.182.0.patch",
"detect-gpu@5.0.70": "patches/detect-gpu@5.0.70.patch"
}
}
Create patches/three@0.182.0.patch (fixes GPUShaderStage SSR error):
diff --git a/build/three.webgpu.js b/build/three.webgpu.js
index 31ff163d67f4cc5dec060a11bc7151c64f949fd9..823c1c35bca5411a27cbf52c5c3a188001fe0445 100644
--- a/build/three.webgpu.js
+++ b/build/three.webgpu.js
@@ -70604,7 +70604,7 @@ const GPUPrimitiveTopology = {
TriangleStrip: 'triangle-strip',
};
-const GPUShaderStage = ( typeof self !== 'undefined' ) ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
+const GPUShaderStage = ( typeof self !== 'undefined' && self.GPUShaderStage ) ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
const GPUCompareFunction = {
Never: 'never',
Create patches/detect-gpu@5.0.70.patch (adds missing exports field):
diff --git a/package.json b/package.json
index 22ffa92b457c0d83c052eab3f1961110d134d1b3..4f5f9ef7a8a80d6f85e3e5b241a87091d95bbe39 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,12 @@
"main": "dist/detect-gpu.umd.js",
"module": "dist/detect-gpu.esm.js",
"types": "dist/src/index.d.ts",
+ "exports": {
+ ".": {
+ "import": "./dist/detect-gpu.esm.js",
+ "require": "./dist/detect-gpu.umd.js"
+ }
+ },
"homepage": "https://github.com/pmndrs/detect-gpu#readme",
"bugs": {
"url": "https://github.com/pmndrs/detect-gpu/issues"
Run bun install to apply patches.
three-stdlib for additional utilitiesoverrides field ensures consistent Three.js versions across dependenciesThis skill is part of verekia's r3f-gamedev.