refresh: stack al día (vello 0.7 / wgpu 27 / parley 0.6) + motor 3D voxel

Re-sincroniza las fuentes desde el monorepo (estaba en vello 0.5/wgpu 24 y con la
estructura vieja de eventloop) y suma el 3D:

- bump del workspace a vello 0.7 / wgpu 27 / parley 0.6, + accesskit 0.24 /
  accesskit_winit 0.33 / vello_hybrid 0.0.9.
- nuevos crates: llimphi-3d (voxels ray-march + mallas en un depth compartido,
  montable dentro de un View 2D vía set_viewport+scissor) y llimphi-voxel
  (world-gen, personajes, director de escenas) + shared/foreign-vox (puente .vox).
- README: sección "Not just 2D — a 3D voxel engine" + GIF (docs/llimphi_voxel.gif).
- excluido modules/allichay (arrastra deps fuera del alcance del front-door).
- cargo check --workspace: verde.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-06-18 14:40:00 +00:00
parent e74800d9da
commit ccab39f140
202 changed files with 44034 additions and 1811 deletions
+20 -3
View File
@@ -23,8 +23,8 @@ use llimphi_ui::llimphi_layout::taffy::{
};
use llimphi_ui::llimphi_raster::peniko::Color;
use llimphi_ui::llimphi_text::Alignment;
use llimphi_ui::View;
use llimphi_theme::{alpha, radius, Theme};
use llimphi_ui::{Shadow, View};
use llimphi_theme::{alpha, elevation, motion, radius, Theme};
use llimphi_widget_panel::{panel_signature_painter, PanelStyle};
/// Paleta del modal.
@@ -36,7 +36,7 @@ pub struct ModalPalette {
/// lo que pidió el caller. Esto focaliza al modal sin "encerrarlo".
pub scrim: Color,
/// Firma visual del panel — gradient sutil + hairline accent en el
/// top edge. La que vuelve consistente el "look gioser" en todos
/// top edge. La que vuelve consistente el "look tawasuyu" en todos
/// los modales y overlays.
pub panel: PanelStyle,
pub border: Color,
@@ -212,6 +212,21 @@ pub fn modal_view<Msg: Clone + 'static>(spec: ModalSpec<Msg>) -> View<Msg> {
})
.children(btn_children);
// Sombra E4 + entrada animada (ease_out_cubic, FAST). El `key`
// estable se deriva del puntero a `spec.title` — alcanza para que
// una sola firma de modal viva en el frame. Si la app necesita
// múltiples modales animados independientemente, pasar un `key`
// propio (todavía no expuesto en la API — se agrega cuando aparezca
// ese caller).
let (sh_a, sh_blur, sh_dy) = elevation::E4;
let modal_shadow = Shadow {
color: Color::from_rgba8(0, 0, 0, sh_a),
blur: sh_blur,
dx: 0.0,
dy: sh_dy,
spread: 0.0,
};
let panel_key: u64 = 0x4d4f44414c00_u64 ^ (w as u64) ^ ((h as u64) << 8);
let panel = View::new(Style {
position: Position::Absolute,
inset: Rect {
@@ -229,6 +244,8 @@ pub fn modal_view<Msg: Clone + 'static>(spec: ModalSpec<Msg>) -> View<Msg> {
})
.paint_with(panel_signature_painter(palette.panel))
.radius(palette.panel.radius)
.shadow(modal_shadow)
.animated_enter(panel_key, motion::FAST)
.clip(true)
.children(vec![header, separator, body_wrap, buttons_row]);