Skip to content
@vzglyd

vzglyd

vzglyd

A Raspberry Pi 4 display engine for ambient 3D art and always-on information displays.

Slides — small Rust programs compiled to WebAssembly — render at 60 FPS to whatever screen you've mounted on the wall. The engine enforces hard limits: 60,000 vertices, 4 MiB of texture memory, four meshes. Not guidelines. Hard limits.

This is the Constraint Principle: treat the hardware's boundaries not as a ceiling to push against, but as the canvas itself. Every polygon is intentional. Every pixel is placed.


What lives here

Repo Purpose
vzglyd/vzglyd Engine, slide runtime, example slides, packaging

How it works

┌─────────────────────────────────────────────────────┐
│  Slide (.vzglyd archive)                            │
│  ┌────────────────┐  ┌───────────┐  ┌────────────┐ │
│  │  slide.wasm    │  │  shaders  │  │   assets   │ │
│  │  (Rust→wasm32) │  │  (.wgsl)  │  │  (≤4 MiB)  │ │
│  └────────────────┘  └───────────┘  └────────────┘ │
└──────────────────┬──────────────────────────────────┘
                   │ wasmtime sandbox
                   ▼
┌─────────────────────────────────────────────────────┐
│  Engine (Rust + wgpu)                               │
│  • Enforces vertex / texture / mesh budgets         │
│  • Drives Wayland or DRM/KMS output                 │
│  • 60 FPS on Raspberry Pi 4                         │
└─────────────────────────────────────────────────────┘

Slides are sandboxed WebAssembly. They can't see the filesystem, can't open sockets, can't allocate past their budget. If they try, the engine refuses — not crashes, refuses.


The limits (not suggestions)

Resource Budget
Vertices per frame 60,000
Texture memory 4 MiB (four 512×512 RGBA8)
Static meshes 4
Dynamic meshes 4
Target framerate 60 FPS on RPi 4

A full procedural landscape fits in 4,225 vertices. A clock face, numerals, and sweep hand fit in the remainder.


Example slides shipping today

clock · quotes · affirmations · facts · budget · chores · weather · afl-ladder · news · reminders · servers · wikipedia-history

All written in Rust, all compile to WASM, all fit the budget.


Get started

# Install the engine
cargo install --git https://github.com/vzglyd/vzglyd vzglyd

# Build and run the clock slide
cargo build --example clock --target wasm32-wasip1
vzglyd run target/wasm32-wasip1/debug/examples/clock.wasm

Requires Rust 1.85+, a wasm32-wasip1 target, and a display.


Contributing

New slides are the highest-leverage contribution. The engine is stable; the slide library is where the project grows.

See CONTRIBUTING.md for the authoring guide, shader contract, and submission checklist.


MIT or Apache-2.0, at your option.

Popular repositories Loading

  1. vzglyd vzglyd Public

    A Raspberry Pi display engine for ambient slides compiled to WebAssembly

    Rust

  2. VRX-64-slide VRX-64-slide Public

    ABI contract and data types for vzglyd display engine slides

    Rust

  3. VRX-64-sidecar VRX-64-sidecar Public

    Networking and IPC utilities for vzglyd slide sidecars

    Rust

  4. VRX-64-clock VRX-64-clock Public

    Clock slide for the vzglyd display engine

    Rust

  5. .github .github Public

    vzglyd organization profile

  6. vzglyd.github.io vzglyd.github.io Public

    vzglyd slide preview — hosted at vzglyd.github.io

    JavaScript

Repositories

Showing 10 of 13 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…