Files
brahman/crates/apps/gioser-web/README.md
T
2026-05-12 18:55:29 +00:00

2.6 KiB

gioser-web

Landing page de GioSer · En el centro, el ser: chacana animada con shaders WebGL2, nebulosa procedural y cuatro botones cardinales (AIRE · FUEGO · TIERRA · AGUA).

Arquitectura

crates/modules/gioser/
├── gioser-geom/        geometría agnóstica de la chacana (20 vértices)
├── gioser-physics/     resorte-amortiguador N-dim crítico-amortiguado
├── gioser-palette/     4 elementos + cosmos en RGB lineal
├── gioser-shaders/     sources GLSL ES 3.00 (FBM cósmico + SDF chacana)
└── gioser-canvas-web/  renderer WebGL2 que compone todo

crates/apps/gioser-web/  cdylib WASM + index.html + styles.css

Los cuatro primeros son agnósticos del runtime (compilan en cualquier target). gioser-canvas-web agrega la dependencia de WebGL2 / web-sys. Cuando exista yahweh-web, los agnósticos siguen tal cual y el renderer se enchufa al runtime equivalente a yahweh_launcher::launch_app.

Cómo se ve

  • Fondo: vacío violeta-noche con tres capas de FBM (5 octavas) en parallax con el mouse + estrellas titilantes + viñeta radial.
  • Chacana: SDF de la cruz escalonada con outline gaussiano cyan, glow ámbar exterior, aro circular envolvente y rayos sutiles (calendario andino).
  • Sol central: gauss + corona, late con sin(t).
  • Tilt físico: spring-damper sub-crítico (ζ=0.72, 2.2 Hz) que apunta hacia el mouse — overshoot suave, settle de ~600 ms.
  • Botones: DOM real (accesibles, navegables por teclado, deep-link por hash) proyectados desde 3D al viewport cada frame.

Build

Requiere el target wasm32-unknown-unknown y wasm-bindgen-cli.

# Una vez (si no los tenés):
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.99

# Build:
cargo build -p gioser-web --release --target wasm32-unknown-unknown

# Generar bindings JS:
wasm-bindgen \
    target/wasm32-unknown-unknown/release/gioser_web.wasm \
    --out-dir crates/apps/gioser-web/pkg \
    --target web

# Servir (cualquier static server vale):
python3 -m http.server -d crates/apps/gioser-web 8080
# → http://localhost:8080/

Si usás rust-toolchain.toml con Rust del sistema (Artix/Arch), instalá el target con tu package manager (pacman -S rust-wasm o equivalente) o montá rustup en un perfil aparte.

Routing

Los <a href="#aire|fuego|tierra|agua"> apuntan a anchors locales. Cuando definamos rutas reales (otras páginas, sub-apps, etc.), basta con cambiar el href en index.html o interceptar el click desde JS.

Tests

Los crates agnósticos tienen tests unitarios:

cargo test -p gioser-geom -p gioser-physics -p gioser-palette