Skip to main content

Giorgi Alvarez  ·  Systems & Graphics Engineer  ·  New York City

Real-time rendering engines for the web.

Kanvon is a 2D canvas editor that runs in the browser. Its renderer, physics solver, layout engine and 3D importers are written in Rust and compiled to WebAssembly, about 467,000 lines in total.

467KLines of Rust
99KLines of TypeScript
43D import formats
120Hz frame pacing

Kanvon

A vector design tool with a game engine underneath. Draw vectors, write GLSL, rig a character, drop it into a physics scene, script it in Lua, and export the result as a video or a standalone web player.

kanvon.comRustWebAssemblyWebGL2TypeScriptLuaAxumPostgres

Orbit Bloom

A finished puzzle game. Shapes, shaders, HUD and game rules all authored in the editor and driven by Lua.

Marble Cascade

322 bodies spawned, 118 active, resolved every frame by the engine's rigid-body solver.

Select a scene to load it.

Renderer
WebGL2: instanced batching, an effect pipeline, clipping, text and brush strokes, plus a node-graph GLSL compiler with a shader cache.
Physics
A 2D rigid-body engine on glam and hecs. Spatial-hash broadphase, SAT narrowphase with reference-face clipping, a soft-step TGS solver with warm starting, and union-find island sleeping.
ECS
An entity-component world running one ordered pass per frame: animation first, then scripts, physics, layout, transforms, styles, and finally render.
Layout
The CSS box model — block, flex and grid — solved inside the engine, before transforms propagate to children.
Scripting
Lua per shape and per scene, with raycast and area queries running against a read-only snapshot of the physics world.
Import
glTF/GLB, FBX, OBJ and Collada importers, including FBX's Objects/Connections graph, skinning clusters and animation stacks.
Collision
Colliders traced from what a shape looks like: silhouettes read from artwork alpha, concave outlines ear-clipped and convex-decomposed, and hulls re-skinned each frame to follow an animated pose.
Collaboration
Server-authoritative multi-user editing over a single WebSocket, with per-item operations and cursors drawn by the engine itself.
Export
PNG, GIF and video from the browser or a headless native CLI. Export to Web emits a standalone WASM player that runs anywhere.
kanvon.com / editor

Try the editor

The WebAssembly engine loads on request rather than on page load, so it does not affect this page's load time.

About

I have been building software professionally for seventeen years, most of it for the web. Over the last two, my work has moved down the stack from application code to the systems that application code is built on.

Kanvon is the result. Where off-the-shelf physics lacked the precision the editor required, the answer was a dedicated solver. Where artwork collided as a bounding box rather than its actual outline, a silhouette tracer. In both cases the practical fix was one layer below where the problem first appeared.

I am based in New York and focus on low-level, performance-sensitive problems: renderers, engines, simulation, and the infrastructure that supports them.

Systems
Rust · WebAssembly · WebGL2 · GLSL · Lua
Web
TypeScript · React · Next.js · Node · SCSS
Data
PostgreSQL · MongoDB
Infra
Docker · Kubernetes · Nginx · AWS

Get in touch

I am open to work involving graphics, simulation, WebAssembly, or a product that is running into the limits of its current engine or library.