mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
Friendly shaders, everywhere.
LightPlayer is an open platform for LED art: author effects as GLSL shaders in a browser studio,
preview them in a built-in simulator, and run them on real hardware — where they are JIT-compiled
to native code on the device itself.
Try it now at lightplayer.app — the Studio runs entirely in your
browser, and the built-in simulator means you don't need any hardware to start playing.檢視完整 README ↗LightPlayer is an open platform for LED art: author effects as GLSL shaders in a browser studio, preview them in a built-in simulator, and run them on real hardware — where they are JIT-compiled to native code on the device itself.
Try it now at lightplayer.app — the Studio runs entirely in your browser, and the built-in simulator means you don't need any hardware to start playing.
What makes it different:
LightPlayer is in alpha. A determined tester can get real value today: author GLSL effects in the browser studio, run them in the simulator without hardware, and drive WS2812-class strips from an ESP32-family board over USB. Expect rough edges and breaking changes — there are no project-format or protocol compatibility promises yet. The Studio requires a Chromium-based browser (it uses WebSerial and OPFS). Issue reports are welcome.
The fastest path is the hosted Studio at lightplayer.app
(deployed from main; no install, no hardware — open it in a Chromium-based browser).
To run everything from source:
# Clone the repo
git clone https://github.com/PhotomancerArt/lightplayer.git
cd lightplayer
# Initialize your development environment
scripts/dev-init.sh
# Run the browser Studio (with built-in simulator — no hardware needed)
just studio-dev
Then open the Studio in a Chromium-based browser, open an example project, and connect it to the browser simulator.
For a headless engine demo without the Studio:
just demo
just demo <example-name> # run other examples (see catalog/)
LightPlayer runs on ESP32-family boards — ESP32-C6 (RISC-V), ESP32-S3, and classic ESP32 (both Xtensa) — with the supported-board list at lightplayer.app/#/boards. Shaders are JIT-compiled to the chip's own instruction set, on the chip. It goes surprisingly fast on modest silicon: a decade-old classic ESP32 drives 1,500 LEDs across five outputs at 30 fps, using both cores.
The quickest demo path uses an ESP32-C6. To flash firmware, push the projects/test/basic project over
USB serial, and run it on real hardware:
just demo-esp32c6-host
You need an ESP32-C6 board connected by USB, the RISC-V target installed (the recipe runs
install-rv32-target), and espflash on your PATH for
flashing.
Wiring: connect a WS2812-class addressable strip's data line to GPIO 18. Where outputs go
is configured, not hardcoded: each output channel names a board endpoint — ws281x:local:D10 in
projects/test/basic/output.json — which the board's manifest maps to a
physical pin (the default ESP32-C6 profile maps D10 to GPIO 18). Outputs can be rewired from the
Studio, boards can drive multiple output channels concurrently (up to 1,024 LEDs per channel), and
a /hardware.json pushed to the device overrides the built-in board profile.
For an empty flash and firmware only (no project push), use just demo-esp32c6-standalone.
Initialize the development environment:
scripts/dev-init.sh
This will:
riscv32imac-unknown-none-elf) if neededjust check)Required tools:
just - Task runner: cargo install just or via package manageroxipng - Lossless PNG optimizer for Studio story captures:
cargo install oxipng or brew install oxipngCommon development commands:
just fci - Fix, check, build, and test the whole project. Do this before you submit a PR.just fci-app - Fix, check, build, and test the application.just fci-glsl - Fix, check, build, and test the GLSL compiler.See just --list for all available commands, and docs/development.md for
deeper workflows: board manifests, schema generation, GPIO calibration, and on-hardware
firmware tests.
lp-app/ Browser Studio (Dioxus + WASM): studio UI, server/client, device link, OPFS
filesystem, browser firmware hostlp-core/ Platform core (lpc-* crates): rendering engine, data model, wire protocol,
registry, board manifestslp-shader/ GLSL compiler: frontend (via naga), LightPlayer IR, backends (native RISC-V
and Xtensa JIT, Cranelift, WASM), Q16.16 fixed-point math, and the filetest suite — see
lp-shader/README.mdlp-fw/ Firmware: ESP32 targets (fw-esp32c6, fw-esp32s3, and fw-esp32v3 for the
classic ESP32) over a shared chip-generic layer (fw-esp32-common), the multi-channel WS281x
driver (lp-ws281x), host and browser runtimes (fw-host, fw-browser), emulator firmware
(fw-emu), and integration tests (fw-tests) — see lp-fw/README.mdlp-gfx/ GPU rendering layer (wgpu) used for Studio previewslp-emu/ Architecture-neutral emulator substrate (lp-emu-core) and host↔guest ABI
(lp-emu-abi) shared by the architecture emulatorslp-riscv/ RISC-V 32-bit emulator, instruction encoding/decoding, and ELF toolinglp-xt/ Xtensa (ESP32-S3 / classic ESP32) instruction model, emulator, and ELF tooling —
the Xtensa counterpart to lp-riscv/lp-cli/ Developer CLI (projects, dev server, board manifests, GPIO calibration); runs
from a source checkoutlp-base/ Foundation crates: collections, filesystem, performance, recoverycatalog/ Built-in content: patterns and projects (Explore in Studio)schemas/ Generated JSON Schemas for project/node/board filesdocs/ Documentation, ADRs, and design notesLightPlayer follows in the footsteps of the LED-art projects that shaped this space:
LightPlayer would not be possible without the amazing work of these projects:
no_std)glsl-in GLSL
frontend (used by lps-frontend)[patch.crates-io] in the workspace Cargo.toml so naga glsl-in works on no_std
targets... and many more not listed. Thank you to everyone in the open source community for your work.
Special thanks to @SeanConnell for his support and guidance throughout the development of the project.
LightPlayer-owned code is licensed under the GNU Affero General Public License version 3 or later
(AGPL-3.0-or-later). See LICENSE for the full license text.
Third-party code, vendored forks, and dependencies remain under their own licenses.
Derived third-party sources and their vendored license texts (licenses/):
lp-core/lpc-engine/src/nodes/fluid/solver.rs, and the
firmware perf experiment lp-fw/fw-esp32c6/src/tests/msafluid_solver.rs):
derived from Memo Akten's MSAFluid
MSAFluidSolver2D, Copyright (c) 2008, 2009 Memo Akten, www.memo.tv,
BSD-3-Clause (licenses/MSAFluid-BSD-3-Clause.txt;
the C++ port is MIT, licenses/MSAFluid-MIT.txt),
itself after Jos Stam, "Real-Time Fluid Dynamics for Games" (GDC 2003).catalog/COPYING.md.Contributions are accepted under the terms in CONTRIBUTING.md.
scripts/third_party/ Vendored forks (naga, and friends)