#![feature(core_float_math)] mod camera; mod objects; mod ray; mod raytracer; mod scenes; mod vec3; use std::{env, fs}; use crate::ray::Ray; use crate::raytracer::render; use crate::scenes::scene::Scene; use crate::vec3::Vec3; use dotenv::dotenv; // TODO (low priority): implement scene serialization fn main() { dotenv().ok(); pretty_env_logger::init(); // TODO (medium priority): better cli parsing || add random flag to generate random scene let mut json_file = "./scenes/scene.json"; let args: Vec = env::args().collect(); if args.len() > 1 { json_file = &args[1]; } let json_str = fs::read_to_string(json_file).expect("Reading specified scene file failed!"); let mut scene: Scene = serde_json::from_str(&json_str).unwrap(); let mut scene: Scene = Scene::random(); render(&mut scene); }