gioser

tawasuyu/llimphi

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

Rust 229TOML 101Markdown 82Shell 24052 Definitions

⎇ main llimphi-3d/LEEME.md Markdown · 35 lines · 1.3 KB History raw

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-3d
2
3*Read this in English: [README.md](README.md).*
4
5# llimphi-3d — pase 3D base de Llimphi (M0 del motor 3D)
6
7Lo mínimo para tener **3D real dentro de un `View` de Llimphi**: una
8`Camera3d` (matrices view/proj con `glam`), un depth buffer propio y un
9`Renderer3d` que dibuja geometría indexada con test de profundidad sobre
10la textura intermedia del frame.
11
12## Cómo encaja con el bucle Elm + vello + wgpu
13
14Llimphi ya rasteriza la UI con vello sobre una textura intermedia y expone
15`View::gpu_paint_with` para inyectar una pasada GPU directa *después* de
16vello (con `LoadOp::Load`, preservando la UI). `Renderer3d::render` tiene
17**exactamente** la firma que esa closure necesita
18(`device, queue, encoder, target_view, (w, h), &camera`), así que un nodo 3D
19es:
20```ignore
21let r3d = Arc::new(Mutex::new(Renderer3d::new(&device, fmt)));
22View::empty().gpu_paint_with(move |dev, q, enc, view, rect, vp| {
23    r3d.lock().unwrap().render(dev, q, enc, view, vp, &camera);
24})
25```
26No es un segundo motor: corre sobre el **mismo wgpu** que ya usa Llimphi,
27que a su vez traduce a Vulkan/Metal/DX12/GL/WebGPU. Ver
28`01_yachay/dominium/MOTOR-VOXEL.md` §11 para la ruta completa (M0..M4,
29ray-march de voxels sparse en los hitos siguientes).
30
31`View::gpu_paint_with`: https://docs/llimphi-compositor
32
33---
34
35Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-3d

Read this in English: README.md.

llimphi-3d — pase 3D base de Llimphi (M0 del motor 3D)

Lo mínimo para tener 3D real dentro de un View de Llimphi: una Camera3d (matrices view/proj con glam), un depth buffer propio y un Renderer3d que dibuja geometría indexada con test de profundidad sobre la textura intermedia del frame.

Cómo encaja con el bucle Elm + vello + wgpu

Llimphi ya rasteriza la UI con vello sobre una textura intermedia y expone View::gpu_paint_with para inyectar una pasada GPU directa después de vello (con LoadOp::Load, preservando la UI). Renderer3d::render tiene exactamente la firma que esa closure necesita (device, queue, encoder, target_view, (w, h), &camera), así que un nodo 3D es:

let r3d = Arc::new(Mutex::new(Renderer3d::new(&device, fmt)));
View::empty().gpu_paint_with(move |dev, q, enc, view, rect, vp| {
    r3d.lock().unwrap().render(dev, q, enc, view, vp, &camera);
})

No es un segundo motor: corre sobre el mismo wgpu que ya usa Llimphi, que a su vez traduce a Vulkan/Metal/DX12/GL/WebGPU. Ver 01_yachay/dominium/MOTOR-VOXEL.md §11 para la ruta completa (M0..M4, ray-march de voxels sparse en los hitos siguientes).

View::gpu_paint_with: https://docs/llimphi-compositor


Parte de llimphi — ver llimphi.