From 2dd9475c04160dad622b68de695fcd42ea67ea24 Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Tue, 12 Mar 2024 22:24:57 +0100 Subject: [PATCH] [FEAT] Chapter 11 is done. --- data/chapter_10.png | Bin 24391 -> 29149 bytes raytracing/src/core/intersection-data.cpp | 2 +- raytracing/src/core/intersection-data.h | 2 +- raytracing/src/renderer/world.cpp | 9 +++++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/data/chapter_10.png b/data/chapter_10.png index 1b7517fac32a343ea1c1a5c761b27276b1e5f5fa..d9fb6962fef3857a2b6df1f4129eccfbb10f69bb 100644 GIT binary patch literal 29149 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]@Z^7@j4hlH~Pp~|{I%8L@ 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�sA} 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 diff --git a/raytracing/src/core/intersection-data.cpp b/raytracing/src/core/intersection-data.cpp index fb3f958..a647019 100644 --- a/raytracing/src/core/intersection-data.cpp +++ b/raytracing/src/core/intersection-data.cpp @@ -258,7 +258,7 @@ const double IntersectionData::n2(void) const /* ------------------------------------------------------------------------- */ -double IntersectionData::schlick(void) +double IntersectionData::schlick(void) const { double the_cos, the_r0; diff --git a/raytracing/src/core/intersection-data.h b/raytracing/src/core/intersection-data.h index ca18735..5e0e802 100644 --- a/raytracing/src/core/intersection-data.h +++ b/raytracing/src/core/intersection-data.h @@ -78,7 +78,7 @@ namespace Raytracer void set_n2(double an_n2); const double n2(void) const; - double schlick(void); + double schlick(void) const; private: bool m_is_inside; diff --git a/raytracing/src/renderer/world.cpp b/raytracing/src/renderer/world.cpp index 625328a..6f8451d 100644 --- a/raytracing/src/renderer/world.cpp +++ b/raytracing/src/renderer/world.cpp @@ -167,8 +167,17 @@ Color World::shade_hit(const IntersectionData &an_intersection_data, uint32_t a_ Shape *the_object = an_intersection_data.object(); Color the_surface = the_object->material().lighting(the_object, m_light, an_intersection_data.over_point(), an_intersection_data.eyev(), an_intersection_data.normalv(), the_shadowed); + Color the_reflected = reflected_color(an_intersection_data, a_remaining); Color the_refracted = refracted_color(an_intersection_data, a_remaining); + + Material &the_material = an_intersection_data.object()->material(); + if ((the_material.reflective() > 0) && (the_material.transparency() > 0)) + { + double the_reflectance = an_intersection_data.schlick(); + return the_surface + (the_reflected * the_reflectance) + the_refracted * (1 - the_reflectance); + } + return the_surface + the_reflected + the_refracted; }