Engine-agnostic node-based shader graph for authoring shaders with template-driven compilation to multiple targets.
To install dependencies:
bun installTo start a development server:
bun devTo run for production:
bun startThis project implements a TypeScript-first node-based shader graph with ReactFlow and a Bun server, using canonical node templates in data/nodes/** and language packs in data/languages/**.
Quick commands:
- Run unit tests:
bun run test - Run linter:
bun run lint - Start dev server:
bun run dev - Build for production:
bun run build
- Versioning is automated by Semantic Release.
- Follow the Conventional Commit format for every commit so release notes and version bumps are calculated correctly.
- After pushing Conventional Commits, run
bun run release:dryfrommain(or append-- --branches $(git rev-parse --abbrev-ref HEAD)to evaluate your branch) to preview the next version bump and changelog. - The
CIworkflow publishes releases automatically on pushes tomainonce tests pass; no manual tagging is required. - Follow the Release Testing Playbook for a full end-to-end smoke test, including the UI badge and the manual GitHub Action dry-run.
- Serve locally:
bun run docs:dev(requires Python +pip install -r requirements.txt) - Build into
dist/docs:bun run docs:build - At runtime, the Bun server serves docs at
/docswhen built.
See AGENTS.md for the minimal working agreement and gates.
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started, code style, testing requirements, and the pull request process.
- Build bundles and manifest:
bun run build- Start dev server (serves bundles from dist with immutable cache):
OSG_STATIC_BUNDLES=1 bun run dev- Notes:
- The app runs against server APIs only; static bundle fallbacks are not used.
- First compile is gated on language readiness; preview should render quickly on cold start.