Add fuzz parameter to reflective material

This commit is contained in:
Camden Dixie O'Brien committed 2025-09-23 15:35:26 +01:00
1 parent 746b902302
commit d47e7d7d9d
3 files changed
+12 -6

No files matched your search

+7 -2
View File
@@ -34,10 +34,15 @@ bool scatter_reflective(
material_params_t params, hit_t hit, rng_t *rng, ray_t *ray,
vec3_t *atten_out)
{
(void)rng;
vec3_t reflected = reflect(ray->dir, hit.normal);
if (params.reflective.fuzz != 0.0) {
const double weight = params.reflective.fuzz * rng_canon(rng);
const vec3_t scatter = vec3_scale(rng_vec3(rng), weight);
reflected = vec3_unit(vec3_add(reflected, scatter));
}
ray->orig = hit.point;
ray->dir = reflect(ray->dir, hit.normal);
ray->dir = reflected;
*atten_out = params.reflective.tint;
return true;
}