Implement Lambertian diffuse scattering
This commit is contained in:
@@ -29,10 +29,10 @@ static const vec3_t black = { 0.0, 0.0, 0.0 };
|
|||||||
|
|
||||||
static ray_t scatter(hit_t hit, rng_t *rng)
|
static ray_t scatter(hit_t hit, rng_t *rng)
|
||||||
{
|
{
|
||||||
const vec3_t rand = rng_vec3(rng);
|
return (ray_t) {
|
||||||
const vec3_t dir
|
.orig = hit.point,
|
||||||
= vec3_dot(rand, hit.normal) > 0.0 ? rand : vec3_scale(rand, -1.0);
|
.dir = vec3_add(hit.normal, rng_vec3(rng)),
|
||||||
return (ray_t) { .orig = hit.point, .dir = dir };
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static vec3_t
|
static vec3_t
|
||||||
|
|||||||
Reference in New Issue
Block a user