From 56bed8e38f5b6d9effd77371ad781ae71601205b Mon Sep 17 00:00:00 2001 From: ladevieq Date: Mon, 21 Dec 2020 13:51:18 +0100 Subject: Add lambertian and metallic materials --- src/lambertian.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/lambertian.cpp (limited to 'src/lambertian.cpp') diff --git a/src/lambertian.cpp b/src/lambertian.cpp new file mode 100644 index 0000000..16ab146 --- /dev/null +++ b/src/lambertian.cpp @@ -0,0 +1,18 @@ +#include "lambertian.hpp" +#include "hittable.hpp" + +lambertian::lambertian(const color& albedo) : albedo(albedo) {} + +bool lambertian::scatter(const ray& r, const struct hit_info& info, color& attenuation, ray& scattered) const { + // auto scatter_direction = info.normal + random_in_unit_sphere(); + // auto scatter_direction = info.normal + random_unit_vector(); + auto scatter_direction = info.normal + random_in_hemisphere(info.normal); + + if (scatter_direction.near_zero()) { + scatter_direction = info.normal; + } + + scattered = ray { info.point, scatter_direction }; + attenuation = albedo; + return true; +} -- cgit v1.3