tawasuyu

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 660Markdown 302TOML 157RON 312382 Definiciones

⎇ main llimphi-surface/LEEME.md Markdown · 40 líneas · 1.6 KB Historia crudo

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-surface
2
3*Read this in English: [README.md](README.md).*
4
5Superficies externas dentro del bucle Elm.
6
7Un `ExternalSurface` es una textura RGBA8 que vive en GPU y se pinta
8sobre un rect del frame Llimphi cada vez que la app lo expone vía
9`View::gpu_paint_with`. La fuente de bytes corre afuera del bucle
10Elm: un decoder de video, un capture de cámara, un raster de PDF,
11una textura raw producida por otro motor — cualquier productor que
12genere RGBA puede empujar frames con `ExternalSurface::upload` y
13ver el resultado en la próxima pasada de raster.
14
15El crate provee:
16
17- `ExternalSurface`: dueño de la textura + render pipeline + bind
18  group. `upload(rgba, w, h)` sube bytes y recrea la textura si
19  `w`/`h` cambiaron.
20- `ExternalSurface::view`: helper que construye un `View` con
21  `gpu_paint_with` ya conectado. La app sólo elige el `Style` del
22  nodo (qué porción del layout ocupa).
23
24## Diseño
25
26El pipeline es un textured-quad clásico: dos triángulos cubren el
27rect destino, el fragment shader samplea la textura externa con
28sampler bilineal. Las coordenadas NDC del quad se computan en GPU
29a partir de `(rect, viewport)` que viajan por uniform — por eso
30el callback necesita el `viewport` que `llimphi-ui` empezó a
31propagar en `GpuPaintFn`.
32
33La textura intermedia donde Llimphi pinta vello es `Rgba8Unorm`
34(ver `llimphi-hal::INTERMEDIATE_FORMAT`). El pipeline emite
35`Rgba8Unorm` también — el target del render pass es esa misma
36intermedia con `LoadOp::Load`, así el fondo vello queda preservado.
37
38---
39
40Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-surface

Read this in English: README.md.

Superficies externas dentro del bucle Elm.

Un ExternalSurface es una textura RGBA8 que vive en GPU y se pinta sobre un rect del frame Llimphi cada vez que la app lo expone vía View::gpu_paint_with. La fuente de bytes corre afuera del bucle Elm: un decoder de video, un capture de cámara, un raster de PDF, una textura raw producida por otro motor — cualquier productor que genere RGBA puede empujar frames con ExternalSurface::upload y ver el resultado en la próxima pasada de raster.

El crate provee:

Diseño

El pipeline es un textured-quad clásico: dos triángulos cubren el rect destino, el fragment shader samplea la textura externa con sampler bilineal. Las coordenadas NDC del quad se computan en GPU a partir de (rect, viewport) que viajan por uniform — por eso el callback necesita el viewport que llimphi-ui empezó a propagar en GpuPaintFn.

La textura intermedia donde Llimphi pinta vello es Rgba8Unorm (ver llimphi-hal::INTERMEDIATE_FORMAT). El pipeline emite Rgba8Unorm también — el target del render pass es esa misma intermedia con LoadOp::Load, así el fondo vello queda preservado.


Parte de llimphi — ver llimphi.