blit.asm$D2F0 · chip.bin

blit

A native pixel art editor in Rust, in the same space as Aseprite and Pixelorama, with a command line and Rhai scripting so a sprite can be a build step.

coverThe blit editor with a pixel wolf on the canvas, tool panels, layers and timeline
The blit editor with a pixel wolf on the canvas, tool panels, layers and timeline
README.mdblit/index.mdx

A pixel art editor written in Rust: egui for the chrome, wgpu for the canvas, and a core crate with no GUI or GPU dependency at all. It’s at v0.2, which means you can draw, layer, animate, tag, save and export real work in it.

The editor

  • Two tools at once. Each mouse button gets its own tool, colour, brush and options, so pencil on the left and eraser on the right removes the most common mode switch in pixel art.
  • Pencil, eraser, bucket, picker, line, rectangle, ellipse, with pixel-perfect stroke thinning and X/Y mirroring.
  • Pixel and group layers, nine blend modes, clipping masks, per-cel z-index.
  • Frames with individual durations, and playback timed by the wall clock rather than repaint count.
  • Canvas resize with an anchor, crop, trim, flips and turns, all undoable.
  • .blit projects, PNG, PNG sequences, spritesheets with a JSON atlas, animated GIF; palettes in .gpl, .pal, .hex and JSON.

Compositing runs on the CPU on purpose. The canvas and the exporter call the same function, so what you see is what you export by construction, not by testing two implementations into agreement.

The command line

A separate blit binary links only the core, so it runs on a build server with no display. It does info, export, transform, resize, crop and import (slicing a spritesheet back into frames), and blit run executes a Rhai script over the same functions. A .blit file can never carry a script, so opening a sprite someone sent you never runs code. Exports are byte-identical across runs.

A greyscale pixel wolf in profile with red eyes
Drawn by a script: 64×64 of hand-placed ASCII, rendered through the same tool functions the canvas uses and redrawn by the test suite on every run.