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.
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.
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
glamandhecs. 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.
Earlier work
Earlier projects, kept here for reference.
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.