From 2db0d27e7f1744443958717c19b732eed57455f2 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Sat, 9 Jan 2021 20:42:24 +0100 Subject: Replace old classes with compute shader structs --- src/dielectric.cpp | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/dielectric.cpp (limited to 'src/dielectric.cpp') diff --git a/src/dielectric.cpp b/src/dielectric.cpp deleted file mode 100644 index 80ca069..0000000 --- a/src/dielectric.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "dielectric.hpp" -#include "rt.hpp" -#include "hittable.hpp" - -dielectric::dielectric(double index_of_refraction) - : ior(index_of_refraction) {} - -bool dielectric::scatter(const ray& r, const struct hit_info& info, color& attenuation, ray& scattered) const { - auto unit_direction = r.direction.unit(); - auto refraction_ratio = info.front_face ? (1.0 / ior) : ior; - double cos_theta = fmin(info.normal.dot(-unit_direction), 1.0); - double sin_theta = sqrt(1.0 - cos_theta * cos_theta); - - vec3 direction; - if (refraction_ratio * sin_theta > 1.0 || reflectance(cos_theta, refraction_ratio) > randd()) { - direction = reflect(unit_direction, info.normal); - } else { - direction = refract(unit_direction, info.normal, refraction_ratio); - } - - scattered = ray { info.point, direction }; - attenuation = { 1.0, 1.0, 1.0 }; - - return true; -} - -double dielectric::reflectance(double cosine, double ref_idx) { - // Use Schlick's approximation for reflectance. - auto r0 = (1 - ref_idx) / (1 + ref_idx); - r0 = r0 * r0; - return r0 + (1 - r0) * pow ((1 - cosine), 5); -} -- cgit v1.3