From f7e71da27f1dbb8b46f185c2fd077ba1461f2f6f Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Tue, 23 Sep 2025 15:36:08 +0100 Subject: [PATCH] Colour sphere based on normal --- demo.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/demo.c b/demo.c index 63e5597..4eb2bac 100644 --- a/demo.c +++ b/demo.c @@ -59,8 +59,11 @@ static double intersect(sphere_t sphere, ray_t ray) static vec3_t raycol(ray_t ray) { const double t = intersect(obj, ray); - if (t > 0.0) - return red; + if (t > 0.0) { + const vec3_t p = vec3_add(ray.orig, vec3_scale(ray.dir, t)); + const vec3_t normal = vec3_unit(vec3_sub(p, obj.centre)); + return vec3_scale(vec3_add(normal, white), 0.5); + } const double a = (ray.dir.y + 1.0) / 2.0; return vec3_add(vec3_scale(lightblue, a), vec3_scale(white, 1 - a));