Function rust_tracer::render
source · pub fn render(
image_width: u32,
samples_per_pixel: u32,
max_depth: usize,
world: &HittableList,
camera: &Camera
)
Expand description
Renders a scene given an image width, number of samples, max recursion depth, a world, and a camera
Examples
use rust_tracer::{
camera::Camera,
hittables::{self, Sphere},
materials::{Dielectric, Lambertian, Metal},
math::{Color, Point3, Vector3},
};
// World
let mut world = hittables::HittableList::new();
let ground_material = Lambertian::new(Color::new(0.8, 0.8, 0.0));
let center_material = Lambertian::new(Color::new(0.1, 0.2, 0.5));
let left_material = Dielectric::new(1.5);
let right_material = Metal::new(Color::new(0.8, 0.6, 0.2), 0.0);
world.add(Sphere::new(
Point3::new(0.0, -100.5, -1.0),
100.0,
ground_material,
));
world.add(Sphere::new(
Point3::new(0.0, 0.0, -1.0),
0.5,
center_material,
));
world.add(Sphere::new(
Point3::new(-1.0, 0.0, -1.0),
0.5,
left_material.clone(),
));
world.add(Sphere::new(
Point3::new(-1.0, 0.0, -1.0),
-0.45,
left_material,
));
world.add(Sphere::new(
Point3::new(1.0, 0.0, -1.0),
0.5,
right_material,
));
// Camera
let camera = Camera::new(
Point3::new(-2.0, 2.0, 1.0),
Point3::new(0.0, 0.0, -1.0),
Vector3(0.0, 1.0, 0.0),
20.0,
16.0 / 9.0,
);
// Render
rust_tracer::render(400, 100, 50, &world, &camera);