From 3343133e9de8a941db64636a9b38e21077abf238 Mon Sep 17 00:00:00 2001 From: dengqn <434500374@qq.com> Date: Wed, 20 Aug 2025 15:44:52 +0800 Subject: [PATCH] triangle --- src/main.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index d4b2e5c..115e671 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ use rand::{rng, Rng}; use crate::hittable::HittableList; use crate::material::{Dielectric, Lambertian, MaterialKind, Metal}; use crate::ppm_writer::PPMWriter; +use crate::triangle::Triangle; use crate::types_defined::{Camera, Color, Point, Sphere, Vec3}; mod camera; mod color; @@ -17,6 +18,7 @@ mod vec3; mod math_utils; mod ppm_writer; mod material; +mod triangle; fn main() { camera_render(); @@ -25,11 +27,11 @@ fn main() { fn camera_render() { let fov: f32 = 90.; - let scale = 4; + let scale = 1; let width: i32 = 1920/scale; let height: i32 = 1080/scale; - let sample_times = 50; - let reflect_depth = 64; + let sample_times = 20; + let reflect_depth = 20; let pw_r = PPMWriter::new( @@ -77,6 +79,19 @@ fn camera_render() { // world.put(Box::new(Sphere::new(Point::new(1.0, 0.0, -1.0), 0.5, right_m))); world.put(Box::new(Sphere::new(Point::new(0.0, -500.5, -1.0), 500.0, plane_m))); + // world.put(Box::new(Triangle::new( + // Point::new(0.0, 0.5, 0.0), + // Point::new(5.5, 0.5, 0.0), + // Point::new(5.5, 5.5, 0.0), + // Some(MaterialKind::Metal(Metal { albedo: Color::new(0.8, 0.6, 0.2), fuzz: 0.00001 })) + // ))); + world.put(Box::new(Triangle::new( + Point::new(0.0, 0.5, 5.0), + Point::new(0.0, 5.5, -5.0), + Point::new(5.5, 0.5, 0.0), + Some(MaterialKind::Dielectric(Dielectric { albedo: Color::new(1.0, 1.0, 1.0), refraction_index: 1./1.5 })) + ))); + gen_spheres(&mut world); camera.render(&world);