#![warn(missing_docs)]
pub mod geom;
pub mod image;
pub mod material;
pub mod sampler;
pub mod scene;
pub mod prelude {
pub use crate::geom::{Point, Vector};
pub use crate::image::ExportImage;
pub use crate::material;
pub use crate::sampler::Sampler;
pub use crate::scene::{Light, RenderConstraint, Scene, Segment};
pub use crate::image::Image;
#[cfg(feature = "gpu")]
pub use crate::image::VulkanImage;
pub use rand::prelude::*;
}
mod ray;
mod spectrum;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
use std::fs::File;
use std::io::BufWriter;
use std::path::Path;
use std::sync::Arc;
use png::HasParameters;
use crate::image::ExportImage;
use crate::image::Image;
use crate::material::hqz_legacy_default;
use crate::sampler::Sampler;
use crate::scene::Light;
use crate::scene::RenderConstraint;
use crate::scene::Scene;
use crate::scene::Segment;
#[test]
fn png_test() {
let width = 1024.0;
let height = 1024.0;
let l = Light::new(
(512.0, 512.0),
1.0,
0.0,
0.0,
(360.0, 0.0),
Sampler::new_blackbody(6900.0),
);
let r = Scene::new(width as usize, height as usize).with_light(l);
let mut image = Arc::new(Image::new(width as usize, height as usize));
let rays = r.render(RenderConstraint::TimeMS(1000), 1, &mut image);
let data = image.to_rgba8(rays, 0.5, 0.5);
let path = Path::new(r"lib.png_test.png");
let file = File::create(path).unwrap();
let ref mut w = BufWriter::new(file);
let mut encoder = png::Encoder::new(w, 1024, 1024);
encoder.set(png::ColorType::RGBA).set(png::BitDepth::Eight);
let mut writer = encoder.write_header().unwrap();
writer.write_image_data(&data).unwrap(); }
#[test]
fn png_test_2() {
let width: f64 = 1024.0;
let height: f64 = 1024.0;
let o = Segment::line_from_points(
(0.0, height * 0.75),
(width, height * 0.75),
hqz_legacy_default(),
);
let l = Light::new(
(width / 2.0, height / 2.0),
1.0,
0.0,
0.0,
(360.0, 0.0),
Sampler::new_blackbody(6900.0),
);
let r = Scene::new(width as usize, height as usize)
.with_light(l)
.with_object(o);
let mut image = Arc::new(Image::new(width as usize, height as usize));
let rays = r.render(RenderConstraint::TimeMS(1000), 2, &mut image);
let data = image.to_rgba8(rays, 0.5, 0.5);
let path = Path::new(r"lib.png_test_2.png");
let file = File::create(path).unwrap();
let ref mut w = BufWriter::new(file);
let mut encoder = png::Encoder::new(w, 1024, 1024);
encoder.set(png::ColorType::RGBA).set(png::BitDepth::Eight);
let mut writer = encoder.write_header().unwrap();
writer.write_image_data(&data).unwrap(); }
}