This commit is contained in:
dengqn 2025-08-20 15:44:52 +08:00
parent 27905c888f
commit 3343133e9d
1 changed files with 18 additions and 3 deletions

View File

@ -6,6 +6,7 @@ use rand::{rng, Rng};
use crate::hittable::HittableList; use crate::hittable::HittableList;
use crate::material::{Dielectric, Lambertian, MaterialKind, Metal}; use crate::material::{Dielectric, Lambertian, MaterialKind, Metal};
use crate::ppm_writer::PPMWriter; use crate::ppm_writer::PPMWriter;
use crate::triangle::Triangle;
use crate::types_defined::{Camera, Color, Point, Sphere, Vec3}; use crate::types_defined::{Camera, Color, Point, Sphere, Vec3};
mod camera; mod camera;
mod color; mod color;
@ -17,6 +18,7 @@ mod vec3;
mod math_utils; mod math_utils;
mod ppm_writer; mod ppm_writer;
mod material; mod material;
mod triangle;
fn main() { fn main() {
camera_render(); camera_render();
@ -25,11 +27,11 @@ fn main() {
fn camera_render() { fn camera_render() {
let fov: f32 = 90.; let fov: f32 = 90.;
let scale = 4; let scale = 1;
let width: i32 = 1920/scale; let width: i32 = 1920/scale;
let height: i32 = 1080/scale; let height: i32 = 1080/scale;
let sample_times = 50; let sample_times = 20;
let reflect_depth = 64; let reflect_depth = 20;
let pw_r = PPMWriter::new( 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(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(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); gen_spheres(&mut world);
camera.render(&world); camera.render(&world);