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.
// 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