creative-web platform · webgpu + webgl2

High-end WebGL websites, written as documents.

A scene is a JSON document. dudu renders it at 120 fps on WebGPU with a CI-verified WebGL2 fallback. bubu is the collaborative editor that writes it.

One contract between them. Zero editor weight ships to your visitors — the published runtime stays under 350 KB.

m0 · scaffold14 milestones, verified byte-by-bytem13 · render-on-demand

dudu — the engine

Renders the document. Skips everything else.

A thin, functional runtime over Three.js — the scene graph is never the source of truth, the document is. When nothing changes, nothing renders: an idle scene costs about zero GPU.

  • One TSL shader source compiles to WGSL and GLSL — WebGPU first, WebGL2 verified in CI.
  • 100,000 GPU particles at 120 fps, on both backends.
  • Golden-image tested: every visual feature, both backends, compared pixel by pixel.
  • Adaptive quality governor — resolution, particle budgets, and post-FX degrade gracefully on weak devices.
  • Draco, meshopt, and KTX2 assets, lazily loaded only when a scene ships models.
scene.json → main.ts
// a website, as data
import { createRuntime } from '@dudu/engine'

const runtime = await createRuntime(sceneDoc, {
  canvas,
  quality: 'auto',   // frametime governor
})

// scroll drives the timeline; patches mutate live
runtime.applyPatch([{ op: 'material/uniform',
  id: 'hero', name: 'glow', value: 1.4 }])

bubu — the editor

Where scenes are written, together.

A browser-native editor over the same document. Everything you author — hierarchy, shader graphs, keyframes — is a patch to the scene, undoable and shared live.

  • Real-time collaborationCRDT-backed — open the same project in two browsers and both cursors are first-class. No merge conflicts, ever.
  • Visual shader graphsNode-based TSL materials, hot-swapped into the live viewport. A broken graph renders magenta, never crashes.
  • Dope-sheet timelineKeyframe animation driven by seconds — or by the visitor's scroll position on the published page.
  • One-click publishBakes the document and its assets into a static site carrying only the dudu viewer. No React, no editor code.
  • An AI seat at the tableAn MCP server lets coding agents join as collaborating peers — with presence chips and a revert button.
open the playground runs in your browser · nothing to install