//! 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());
}