tawasuyu

tawasuyu/llimphi

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

Rust 614Markdown 274TOML 149RON 310606 Definiciones

⎇ main llimphi-3d/src/lib.rs Rust · 68 líneas · 2.3 KB Historia Quién tocó qué crudo

chore: refresco desde el monorepo — 132 miembros, 79 widgets, la galería vuelve y licencia dual d8edd9a9c · Sergio ·

1//! # llimphi-3d — pase 3D base de Llimphi (M0 del motor 3D)
2//!
3//! Lo mínimo para tener **3D real dentro de un `View` de Llimphi**: una
4//! [`Camera3d`] (matrices view/proj con `glam`), un depth buffer propio y un
5//! [`Renderer3d`] que dibuja geometría indexada con test de profundidad sobre
6//! la textura intermedia del frame.
7//!
8//! ## Cómo encaja con el bucle Elm + vello + wgpu
9//!
10//! Llimphi ya rasteriza la UI con vello sobre una textura intermedia y expone
11//! [`View::gpu_paint_with`] para inyectar una pasada GPU directa *después* de
12//! vello (con `LoadOp::Load`, preservando la UI). [`Renderer3d::render`] tiene
13//! **exactamente** la firma que esa closure necesita
14//! (`device, queue, encoder, target_view, (w, h), &camera`), así que un nodo 3D
15//! es:
16//!
17//! ```ignore
18//! let r3d = Arc::new(Mutex::new(Renderer3d::new(&device, fmt)));
19//! View::empty().gpu_paint_with(move |dev, q, enc, view, rect, vp| {
20//!     r3d.lock().unwrap().render(dev, q, enc, view, vp, &camera);
21//! })
22//! ```
23//!
24//! No es un segundo motor: corre sobre el **mismo wgpu** que ya usa Llimphi,
25//! que a su vez traduce a Vulkan/Metal/DX12/GL/WebGPU. Ver
26//! `01_yachay/dominium/MOTOR-VOXEL.md` §11 para la ruta completa (M0..M4,
27//! ray-march de voxels sparse en los hitos siguientes).
28//!
29//! [`View::gpu_paint_with`]: https://docs/llimphi-compositor
30
31pub use glam;
32pub use wgpu;
33
34mod billboard;
35mod camera;
36mod cinema;
37mod dimensions;
38mod glow;
39mod hud;
40mod lines;
41mod mesh;
42mod postfx;
43mod reflection;
44mod renderer;
45mod scene;
46mod sky;
47mod ser;
48mod voxel;
49mod voxel_renderer;
50
51pub use billboard::{Billboard, Billboards};
52pub use ser::{SdfKind, SdfPrim, SdfSer, VOXEL_MAX_SERS, VOXEL_MAX_SER_PRIMS};
53pub use camera::Camera3d;
54pub use cinema::{CamKey, CameraTrack};
55pub use glow::Glows;
56pub use lines::{LineVertex, Lines3d};
57pub use sky::{SkyBackdrop, SkyMapping, SkyParams};
58pub use dimensions::{Dimension, Multiverse};
59pub use hud::{Hud, HudQuad};
60pub use mesh::{cube, push_cube, uv_sphere, Vertex3d, CUBE_INDICES};
61pub use postfx::{PostFx, PostFxConfig};
62pub use reflection::{PlanarReflection, ReflectionPlane, SurfaceParams};
63pub use renderer::{Renderer3d, MESH_MAX_LIGHTS};
64pub use scene::Scene3d;
65pub use voxel::{DirtyBox, VoxelGrid};
66pub use voxel_renderer::{
67    Atmosphere, Entity3d, NightSky, PointLight, VoxelRenderer, VOXEL_BRICK, VOXEL_MAX_LIGHTS,
68};