1use glam::*;
10use wgpu_3dgs_core::{self as gs, BufferWrapper, ReadIterGaussian};
11
12type GaussianPod = gs::GaussianPodWithShHalfCov3dHalfConfigs;
13
14#[pollster::main]
15async fn main() {
16 let model_path = std::env::args()
17 .nth(1)
18 .unwrap_or_else(|| "examples/model.spz".to_string());
19
20 let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor::default());
21
22 let adapter = instance
23 .request_adapter(&wgpu::RequestAdapterOptions::default())
24 .await
25 .expect("adapter");
26
27 let (device, _) = adapter
28 .request_device(&wgpu::DeviceDescriptor {
29 label: Some("Device"),
30 required_limits: adapter.limits(),
31 ..Default::default()
32 })
33 .await
34 .expect("device");
35
36 println!("Reading gaussians from {}", model_path);
37
38 let gaussians = gs::SpzGaussians::read_from_file(&model_path).expect("gaussians");
39
40 println!("Header: {:?}", gaussians.header);
41
42 let gaussians_buffer = gs::GaussiansBuffer::<GaussianPod>::new(&device, &gaussians);
43
44 println!(
45 "Loaded {} gaussians ({:.3} KB) into GPU buffer.",
46 gaussians_buffer.len(),
47 gaussians_buffer.buffer().size() as f32 / 1024.0,
48 );
49}