//! Decode a learned-splat dir (`splat_gs.bin` + `splat.json`, from //! `tools/wai_int_splat_export.py`) → the integer attribute tensor; print the FNV-1a //! attribute hash. Proves the Rust integer decode reproduces the Python integer //! reference byte-for-byte (splat-equivalence). //! //! cargo run --release --example int_splat_decode --features splat_int -- use wai::int_hyper_synth::IntModel; use wai::int_splat::decode; fn main() { let dir = std::env::args().nth(1).expect("usage: int_splat_decode "); let gs = IntModel::from_bytes(&std::fs::read(format!("{dir}/splat_gs.bin")).unwrap()).unwrap(); let bs: serde_json::Value = serde_json::from_slice(&std::fs::read(format!("{dir}/splat.json")).unwrap()).unwrap(); let clip = decode(&gs, &bs).expect("decode"); println!("{} gaussians × {} attrs ({}²) attr_hash {:016x}", clip.s * clip.s, clip.n_attr, clip.s, clip.attr_hash()); }