© 2026 Hedgehog Software, LLC
import { WebGPU, AutoCanvas, Pass, Material, Geometry, Shader } from '@use-gpu/webgpu'; const UsePage = () => { const canvasRef = useRef(null); useEffect(() => { if (!canvasRef.current) return; const vertexShader = ` @vertex fn main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> { var positions = array<vec2<f32>, 2>( vec2<f32>(-0.5, -0.5), // Start point of the line vec2<f32>(0.5, 0.5) // End point of the line ); return vec4<f32>(positions[VertexIndex], 0.0, 1.0); } `; const fragmentShader = ` @fragment fn main() -> @location(0) vec4<f32> { return vec4<f32>(1.0, 0.0, 0.0, 1.0); // Red color } `; }, []); return ( <WebGPU> <AutoCanvas canvas={canvasRef.current}> <Pass> <Shader vertex={vertexShader} fragment={fragmentShader} /> <Geometry vertices={2} /> {/* Only two vertices are needed for a line */} <Material /> </Pass> </AutoCanvas> </WebGPU> ); }; export default UsePage;
"@use-gpu/inspect": "^0.11.0", "@use-gpu/inspect-gpu": "^0.11.0", "@use-gpu/layout": "^0.11.0", "@use-gpu/live": "^0.11.0", "@use-gpu/parse": "^0.11.0", "@use-gpu/plot": "^0.11.0", "@use-gpu/react": "^0.11.0", "@use-gpu/scene": "^0.11.0", "@use-gpu/traits": "^0.11.0", "@use-gpu/webgpu": "^0.11.0", "@use-gpu/wgsl-loader": "^0.11.0", "@use-gpu/workbench": "^0.11.0", "@webgpu/types": "^0.1.40", }
[ Client!] ✘ [ERROR] No loader is configured for ".wgsl" files: