def scatter(self, ray, rec, srec): reflected = ray.dir.unit_vector().reflect(rec.normal) srec.specular_ray = Ray(rec.p, reflected + self.fuzz * Vec3.random_in_unit_sphere()) srec.attenuation = self.a srec.is_specular = True srec.pdf_ptr = 0 return True
def scatter(self, ray, rec, attenuation, scattered): scattered.replace_values(Ray(rec.p, Vec3.random_in_unit_sphere(), ray.time)) attenuation.replace_values(self.albedo.value(rec.u, rec.v, rec.p)) return True