Add multiple light support.

This commit is contained in:
2021-07-18 21:10:04 -07:00
parent 839642b886
commit 1629b2cbfa
4 changed files with 35 additions and 34 deletions

View File

@@ -95,7 +95,7 @@ fn main() -> Result<()> {
};
let mut world = World::default();
world.light = Some(light);
world.lights = vec![light];
world.objects = vec![floor, left_wall, right_wall, middle, right, left];
let image = camera.render(&world);

View File

@@ -35,7 +35,10 @@ fn main() -> Result<()> {
let height = 1440;
let light_position = Tuple::point(-10., 10., -10.);
let light_color = WHITE;
let light = PointLight::new(light_position, light_color);
let light1 = PointLight::new(light_position, light_color);
let light_position = Tuple::point(10., 10., -10.);
let light_color = Color::new(0.0, 0.0, 1.0);
let light2 = PointLight::new(light_position, light_color);
let mut camera = Camera::new(width, height, PI / 4.);
let from = Tuple::point(0., 1.5, -5.);
let to = Tuple::point(0., 1., 0.);
@@ -82,7 +85,7 @@ fn main() -> Result<()> {
let mut right = Sphere::default();
right.set_transform(Matrix4x4::translation(1.5, 0.5, -0.5) * Matrix4x4::scaling(0.5, 0.5, 0.5));
right.material = Material {
color: Color::new(0.5, 1., 0.1),
color: Color::new(1., 1., 1.),
diffuse: 0.7,
specular: 0.3,
..Material::default()
@@ -100,7 +103,7 @@ fn main() -> Result<()> {
};
let mut world = World::default();
world.light = Some(light);
world.lights = vec![light1, light2];
world.objects = vec![floor, left_wall, right_wall, middle, right, left];
let image = camera.render(&world);