diff options
author | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2025-03-02 10:57:03 +0700 |
---|---|---|
committer | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2025-03-02 10:57:03 +0700 |
commit | af5cbc11486b5feed4605b9f9685ed55d9f3710a (patch) | |
tree | a9ae4d9868773f65d928c3b3d2d213fce53ace7c | |
parent | 01556fee5c6c12dfd172183f197a0e5f2fe8f9ab (diff) |
upd switch ray
diffusion method
-rw-r--r-- | src/calculus.rs | 2 | ||||
-rw-r--r-- | src/camera.rs | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/calculus.rs b/src/calculus.rs index 8865154..e1e9caf 100644 --- a/src/calculus.rs +++ b/src/calculus.rs @@ -34,7 +34,7 @@ pub mod calculus { ) } - fn random_unit() -> Vec3 { + pub fn random_unit() -> Vec3 { loop { let p = Self::random_range(-1.0, 1.0); let lensq = p.mag_sqr(); diff --git a/src/camera.rs b/src/camera.rs index 37e99c6..87ba7c3 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -85,10 +85,11 @@ impl Camera { let mut rec = HitRecord::default(); let ray_t = Interval::new(0.001, f32::INFINITY); if world.hit(ray, ray_t, &mut rec) { - let direction = Vec3::random_on_hemisphere(&rec.normal); + // let direction = Vec3::random_on_hemisphere(&rec.normal); + let direction = rec.normal.add(&Vec3::random_unit()); let origin = rec.position.clone(); let r = Ray { origin, direction }; - return self.ray_color(&r, world, depth - 1).mul_scalar(0.5); + return self.ray_color(&r, world, depth - 1).mul_scalar(0.9); } let unit_direction = ray.direction.unit(); |