Regenerado con scripts/actualizar-standalone.py --llimphi. Vendoriza además
shared/{foreign-lottie,grafo}. Quedan fuera los crates acoplados al workspace
madre (wasm-*, video-plane, voxel-app/studio, allichay, plugin-host, shuma-term).
cargo check --workspace verde (112 miembros).
1.6 KiB
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:
ExternalSurface: dueño de la textura + render pipeline + bind group.upload(rgba, w, h)sube bytes y recrea la textura siw/hcambiaron.ExternalSurface::view: helper que construye unViewcongpu_paint_withya conectado. La app sólo elige elStyledel nodo (qué porción del layout ocupa).
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.