proof_engine/metaball/mod.rs
1//! Metaball / Isosurface Entity System
2//!
3//! Each entity is a 3D scalar field defined by a set of field sources (metaballs).
4//! The visible surface is extracted via marching cubes at a configurable threshold.
5//! HP affects field strength — damage literally reshapes the entity's body.
6//!
7//! # Architecture
8//!
9//! ```text
10//! MetaballEntity
11//! ├─ sources: Vec<FieldSource> (position, strength, radius, falloff, color)
12//! ├─ threshold: f32 (isosurface level)
13//! ├─ hp_ratio: f32 (0.0 = dead, 1.0 = full HP)
14//! └─ grid_resolution: u32 (32 normal, 64 boss)
15//!
16//! Per frame:
17//! 1. Update sources (HP modulation, damage zones, breathing)
18//! 2. Evaluate field on 3D grid (CPU or GPU compute)
19//! 3. March cubes → ExtractedMesh
20//! 4. Apply surface material (iridescence, translucency, fresnel)
21//! 5. Render into G-buffer via deferred pipeline
22//! ```
23
24pub mod entity_field;
25pub mod field_eval;
26pub mod marching_cubes;
27pub mod gpu_marching_cubes;
28pub mod surface_material;
29pub mod damage;
30pub mod templates;
31
32pub use entity_field::{MetaballEntity, FieldSource, FalloffType};
33pub use field_eval::FieldSample;
34pub use marching_cubes::{MCVertex, ExtractedMesh, MarchingCubesExtractor};
35pub use gpu_marching_cubes::GpuMarchingCubes;
36pub use surface_material::{SurfaceMaterial, MaterialSample};
37pub use damage::{DamageEvent, DamageResponse, DamageSystem};
38pub use templates::EntityTemplate;