finds.dev← search

// the find

asny/three-d

★ 1,633 · Rust · MIT · updated Apr 2026

2D/3D renderer - makes it simple to draw stuff across platforms (including web)

three-d is an OpenGL/WebGL/OpenGL ES renderer in Rust that targets the sweet spot between wgpu's low-level control and a full game engine. It runs natively on Windows/Mac/Linux and compiles to WebAssembly for the browser — same code, both targets. Aimed at developers who want to draw things (data viz, tools, small games) without writing a thousand lines of boilerplate.

The three-layer API design is the real win: context (raw GL), core (buffers/shaders without setup pain), renderer (PBR, lights, shadows with zero graphics knowledge required) — you pick your entry point and mix levels freely. The WASM target actually works and the examples include live web demos, not just promises. The example coverage is unusually thorough: PBR, particles, instancing, terrain, volume rendering, wireframe, picking — 30+ working examples with both native and web builds. Asset loading is factored into a separate crate (three-d-asset) so you can swap it out or skip it without dragging in dead weight.

Pre-1.0 with explicit warnings of regular breaking changes — not a library you pin and forget. The renderer module is built on OpenGL 3.3, which Apple deprecated in 2018; on modern Macs you're running through the Metal compatibility layer with no guarantee it stays fast or correct long-term. No Vulkan, Metal, or wgpu backend, so if you need GPU compute, multi-queue, or want to target platforms where OpenGL is absent (some mobile, WebGPU-only environments), you're stuck. Documentation beyond the examples is thin — the high-level renderer API is mostly learned by reading example source, not docs.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →