From 2e24fef5acada5d63dfa6517d628356ddb8c72f2 Mon Sep 17 00:00:00 2001 From: Phireh Date: Sat, 21 Aug 2021 22:39:59 +0200 Subject: [PATCH] New scatter formula --- main.cpp | 2 +- vec3.hpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 8f30161..1c16754 100644 --- a/main.cpp +++ b/main.cpp @@ -21,7 +21,7 @@ color ray_color(const ray& r, const hittable& world, int32_t depth) hit_record rec; if (world.hit(r, 0.001, INFINITY, rec)) { - point3 target = rec.p + rec.normal + random_in_unit_sphere(); + point3 target = rec.p + rec.normal + random_in_hemisphere(rec.normal); return 0.5 * ray_color(ray(rec.p, target - rec.p), world, depth-1); } vec3 unit_direction = normalize(r.direction); diff --git a/vec3.hpp b/vec3.hpp index acc9513..614938a 100644 --- a/vec3.hpp +++ b/vec3.hpp @@ -159,4 +159,20 @@ vec3 random_in_unit_sphere() } } +// Returns a normalized version of the above vector +vec3 random_unit_vector() +{ + return normalize(random_in_unit_sphere()); +} + +vec3 random_in_hemisphere(const vec3& normal) +{ + vec3 in_unit_sphere = random_in_unit_sphere(); + + if (dot(in_unit_sphere, normal) > 0.0) + return in_unit_sphere; + else + return -in_unit_sphere; +} + #endif