ariadne

A research renderer — a programmable laboratory for light transport, built on WebGPU and WGSL. A bidirectional wavefront path tracer written from scratch, carrying a CPU reference implementation alongside the GPU one for verification.

Readme

A research renderer: a programmable laboratory for light transport, built on TypeScript, WebGPU, and WGSL. For research and for art.

All project documentation lives under docs/: the founding worldview (docs/overview/), design decisions (docs/design/), the experiment lab notebook (docs/experiments/), and annotated sources (docs/references/). The worldview documents describe commitments and reasoning, not a specification; the concrete design is worked out — and measured — as we build.

Requirements

  • Node.js ≥ 20
  • A browser with WebGPU (recent Chrome, Edge, Safari, or Firefox)

Development

npm install
npm run dev        # dev server with hot reload
npm test           # run tests once
npm run test:watch # run tests on change
npm run render:ref # CPU reference → out/*.ppm (args: -- <size> <spp>)
npm run typecheck  # tsc, no emit
npm run lint       # eslint
npm run format     # prettier, writes in place
npm run build      # typecheck + production bundle in dist/

The dev server serves three pages: / (the renderer, WebGPU), /probes.html (the platform probes of design/02, WebGPU), and /reference.html (the CPU reference tracer rendering progressively in the browser — plain TypeScript, no WebGPU required).

Shaders live in .wgsl files and are imported into TypeScript as strings via Vite’s ?raw suffix.

← All software