Senior WebGPU & 3D Graphics Architect for 2026. Specialized in Three.js v172+, WebGPU-first rendering, TSL (Three Shader Language), and high-performance React 19 integration via `@react-three/fiber` and `@react-three/drei`. Expert in building immersive, low-latency, and accessible 3D experiences for the modern web.
Senior WebGPU & 3D Graphics Architect for 2026. Specialized in Three.js v172+, WebGPU-first rendering, TSL (Three Shader Language), and high-performance React 19 integration via @react-three/fiber and @react-three/drei. Expert in building immersive, low-latency, and accessible 3D experiences for the modern web.
threejs-expert for core scene architecture and ui-ux-pro for HUD/UI overlay integration.activate_skill(name="threejs-expert") → activate_skill(name="react-expert") → activate_skill(name="tailwind4-expert").stats-gl and renderer.info to verify draw calls and VRAM usage.As of 2026, WebGPURenderer is the production standard. Always prioritize asynchronous initialization and TSL for shaders.
WebGLRenderer unless specifically requested for compatibility with hardware older than 2022.await renderer.init() before the first render loop.useFrame for all frame-by-frame updates (rotations, positions). NEVER use setState inside the render loop.<Canvas> in <Suspense> to allow Next.js 16 to stream the 3D scene while serving the static shell instantly.useMemo for geometries/materials; let the React Compiler handle memoization unless profiling shows leaks..glb and KTX2 (Basis Universal) for textures.InstancedMesh for repetition and BatchedMesh for diverse geometries sharing a material..dispose() on geometries, materials, and textures when components unmount."use client";
import { Canvas, useFrame } from "@react-three/fiber";
import { useRef, Suspense } from "react";
import * as THREE from "three";
function RotatingBox() {
const meshRef = useRef<THREE.Mesh>(null!);
// Native mutation in React 19 / R3F loop
useFrame((state, delta) => {
meshRef.current.rotation.x += delta;
meshRef.current.rotation.y += delta * 0.5;
});
return (
<mesh ref={meshRef}>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="royalblue" />
</mesh>
);
}
export default function Scene() {
return (
<div className="h-screen w-full bg-slate-950">
<Suspense fallback={<div>Loading 3D Scene...</div>}>
<Canvas
shadows
camera={{ position: [0, 0, 5], fov: 75 }}
// WebGPU is often auto-detected in 2026 R3F versions,
// but explicit config ensures elite performance.
gl={(canvas) => {
const renderer = new THREE.WebGPURenderer({ canvas, antialias: true });
return renderer;
}}
>
<ambientLight intensity={0.5} />
<directionalLight position={[10, 10, 5]} intensity={1} castShadow />
<RotatingBox />
</Canvas>
</Suspense>
</div>
);
}
import { nodeFrame } from 'three/addons/renderers/webgpu/utils/NodeFrame.js';
import { texture, uv, color, mix, oscSine, timerLocal } from 'three/tsl';
// TSL enables writing shaders that work on both WebGPU and WebGL
const material = new THREE.MeshStandardNodeMaterial();
const time = timerLocal();
const animatedColor = mix(color(0xff0000), color(0x0000ff), oscSine(time));
material.colorNode = animatedColor;
new THREE.Vector3() or new THREE.Color() inside useFrame. It causes massive GC pressure.requestAnimationFrame manually inside a React project; use R3F's useFrame.renderer.init(). In WebGPU, failing to await initialization leads to race conditions and black screens.LOD (Level of Detail) or Impostors.Suspense. It blocks the main thread and ruins the UX.scripts/validate-assets.ts: Checks for uncompressed textures or high-poly counts in the project.scripts/generate-tsl-boilerplate.py: Scaffolds a TSL shader node.Updated: January 23, 2026 - 15:45
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer