// the find
lume/glas
WebGL in WebAssembly with AssemblyScript
An ambitious port of Three.js from JavaScript/TypeScript into AssemblyScript, targeting WebAssembly for potential performance gains in WebGL rendering. The pitch is that web developers already know TypeScript-like syntax, so AssemblyScript gives them a path to WASM without learning Rust or C++. Still firmly alpha — the current demo only instantiates an Object3D, nothing renders yet.
The math layer (Vector2/3/4, Matrix3/4, Quaternion, Euler, etc.) is thoroughly ported and has proper as-pect unit tests, so the foundation is solid. The ASWebGLue bridge library solves a real problem — AssemblyScript can't call browser WebGL APIs directly, and having a dedicated interop layer is the right architecture. The directory structure mirrors Three.js exactly, which makes it easy to track porting progress and diff against upstream. Dist artifacts (both .wasm and ESM/UMD JS wrappers) are committed, so you can drop it into a project without a build step.
The renderer — the entire point of the thing — is not ported. WebGLRenderer.ts exists but leans on .js stub files for most of the WebGL subsystems; you cannot actually draw anything. Half the codebase is still plain .js with .d.ts declaration files sitting next to unported AssemblyScript stubs, which means the 'port' label is generous. Last meaningful commit activity tapered off years ago and the project board links are dead; this reads as abandoned before it reached its stated initial goal. There's also no evidence the WASM path is actually faster than plain Three.js for typical scenes — the JS↔WASM boundary overhead for per-frame WebGL calls could easily cancel out any WASM gains.