Introduction

vshaders is a registry of composable WGSL shader effects for vgpu, the WebGPU library. It ships two kinds of things: pure WGSL modules you install from npm, and complete effects you copy into your project and own.

The two-layer model

LayerWhat it isHow you get it
ModulesFunctions, structs and constants. No bindings, no entry points.Installed from npm as versioned @vshaders/* packages.
EffectsEntry shaders with bindings and uniforms, plus a React wrapper.Copied into your project from the registry, shadcn style.

The split is enforced, not aspirational: vgpu's resolver rejects any imported module that declares @group or @binding (the VGPU-RESOLVE-MODULE-BINDING error). Bindings belong to the entry shader you own, so a package can never dictate your bind group layout. That one rule is what keeps the layers honest.

What exists today

  • Five packages on npm at 0.2.0: @vshaders/sdf, @vshaders/color, @vshaders/dither, @vshaders/ease and @vshaders/fluid.
  • Eleven effects: mesh gradient, metaballs, palette field, flow, ripple, dither, fluid, displacement, god rays, heatmap and undertones, each with a live editor at /effects/<slug> whose tuned state encodes into a shareable permalink. Fluid is a real multi-pass simulation, driven only by the cursor.
  • A shadcn-compatible registry at vshaders.com/r, so npx shadcn add works with no custom tooling. All eleven effects are installable registry items.
  • Every shader here passes vgpu check --require-validation before it ships.

Where to go next