Cleaned up command line options. Removed old procedural scene code.

This commit is contained in:
Nathan Vegdahl 2016-06-02 23:00:31 -07:00
parent 039943e0cb
commit 43c5a94ebb

View File

@ -40,23 +40,21 @@ const USAGE: &'static str = r#"
Psychopath <VERSION> Psychopath <VERSION>
Usage: Usage:
psychopath [options] <imgpath>
psychopath [options] -i <file> psychopath [options] -i <file>
psychopath (-h | --help) psychopath (-h | --help)
psychopath --version psychopath --version
Options: Options:
-i <file>, --input <file> Input .psy file -i <file>, --input <file> Input .psy file.
-s <n>, --spp <n> Number of samples per pixel [default: 16]. -s <n>, --spp <n> Number of samples per pixel.
-h, --help Show this screen. -h, --help Show this screen.
--version Show version. --version Show version.
"#; "#;
#[derive(Debug, RustcDecodable)] #[derive(Debug, RustcDecodable)]
struct Args { struct Args {
arg_imgpath: String,
flag_input: Option<String>, flag_input: Option<String>,
flag_spp: Option<u32>, flag_spp: Option<usize>,
flag_version: bool, flag_version: bool,
} }
@ -86,64 +84,6 @@ fn main() {
panic!() panic!()
}; };
// Generate a scene of triangles
// let mesh = TriangleMesh::from_triangles(2, {
// let mut triangles = Vec::new();
// let xres = 32;
// let yres = 32;
// let xinc = 512.0 / (xres as f32);
// let yinc = 512.0 / (yres as f32);
// for x in 0..xres {
// for y in 0..yres {
// let i = y * xres + x;
// let cx = halton::sample(0, i) * 512.0;
// let cy = halton::sample(1, i) * 512.0;
// let cz = halton::sample(2, i) * 512.0;
// let cx = x as f32 * xinc;
// let cy = y as f32 * yinc;
// let cz = 1.0;
// triangles.push((Point::new(cx, cy, cz + 1.0),
// Point::new(cx + xinc, cy, cz + 1.1),
// Point::new(cx, cy + yinc, cz + 1.2)));
// triangles.push((Point::new(cx + 25.0, cy, cz + 1.0),
// Point::new(cx + 25.0 + xinc, cy, cz + 1.1),
// Point::new(cx + 25.0, cy + yinc, cz + 1.2)));
// }
// }
// triangles
// });
//
// let cam = Camera::new(vec![Matrix4x4::from_location(Point::new(256.0, 256.0, -1024.0))],
// vec![0.785],
// vec![20.0],
// vec![1026.0]);
//
// let mut assembly_b = AssemblyBuilder::new();
// assembly_b.add_object("yar", Object::Surface(Box::new(mesh)));
// assembly_b.add_object_instance("yar",
// Some(&[Matrix4x4::from_location(Point::new(25.0, 0.0, 0.0))]));
// let assembly = assembly_b.build();
//
// let scene = Scene {
// name: None,
// background_color: (0.0, 0.0, 0.0),
// camera: cam,
// root: assembly,
// };
//
// let r = Renderer {
// output_file: args.arg_imgpath.clone(),
// resolution: (512, 512),
// spp: samples_per_pixel as usize,
// scene: scene,
// };
//
println!("Scene built.");
let samples_per_pixel = args.flag_spp.unwrap_or_else(|| 16);
println!("Sample count: {}", samples_per_pixel);
println!("Ray size: {} bytes", mem::size_of::<Ray>()); println!("Ray size: {} bytes", mem::size_of::<Ray>());
// Iterate through scenes and render them // Iterate through scenes and render them
@ -151,7 +91,13 @@ fn main() {
for child in children { for child in children {
if child.type_name() == "Scene" { if child.type_name() == "Scene" {
println!("Parsing scene..."); println!("Parsing scene...");
let r = parse_scene(child).unwrap(); let mut r = parse_scene(child).unwrap();
if let Some(spp) = args.flag_spp {
println!("Overriding scene spp: {}", spp);
r.spp = spp;
}
println!("Rendering scene..."); println!("Rendering scene...");
r.render(); r.render();
} }