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.
- Built with TypeScript / WebGPU / WGSL
- Status In development
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.