First off, thanks for taking the time to contribute!
This project has a unique architecture designed to ensure correctness while maximizing performance. Before you write code, please understand the Reference/Candidate methodology.
We maintain two implementations for every renderer:
- Reference (Canvas2D): The "Ground Truth". Optimized for readability and correctness.
- Candidate (WebGL2): The "Speed Demon". Optimized for performance.
Any feature or bug fix must first be verified in the Reference implementation. Once the semantics are correct there, we port/optimize it in the Candidate implementation and verify they match using the accuracy benchmarks.
-
Install dependencies
npm install
-
Run the dev server
npm run dev
-
Run benchmarks
- Correctness:
npm run bench:accuracy(Run this before opening a PR!) - Performance:
npm run bench
- Correctness:
We are looking for contributions in the following areas:
- Spherical Geometry: Implementing spherical embeddings (S²) using the same Reference/Candidate pattern.
- WASM Core: Moving the heavy math checks to WASM for even better CPU throughput.
- We use TypeScript.
- Formatting is handled by Prettier/ESLint (run lint before committing).
By contributing to this project, you agree that your contributions will be licensed under the MIT License.