From d32c5bd01c034c8801a89c80df99709424fa0f13 Mon Sep 17 00:00:00 2001 From: H3XploR Date: Wed, 19 Feb 2025 16:53:36 +0100 Subject: [PATCH] pudate miniRT.h nomr --- intersect_objects.c | 64 ++++++++++++++++----------------- miniRT | Bin 355072 -> 355064 bytes miniRT.h | 14 ++++---- parsing_ambiant.c | 6 ++-- parsing_camera.c | 6 ++-- parsing_cylinder.c | 18 +++++----- parsing_light.c | 12 +++---- parsing_plane.c | 12 +++---- parsing_sphere.c | 12 +++---- shadows.c | 8 ++--- tags | 18 +++++----- trace.c | 84 +++++++++++++++++++++++++------------------- 12 files changed, 134 insertions(+), 120 deletions(-) diff --git a/intersect_objects.c b/intersect_objects.c index 882e283..4e98b29 100644 --- a/intersect_objects.c +++ b/intersect_objects.c @@ -6,23 +6,23 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/19 16:07:55 by yantoine #+# #+# */ -/* Updated: 2025/02/19 16:16:52 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:47:28 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" static bool intersect_spheres(const t_ray ray, t_hit *hit, t_sphere *spheres, - int numSpheres) + int num_spheres) { int i; - bool hitAny; - t_vec3 n; + bool hit_any; + t_vec3 n; float t; i = 0; - hitAny = false; - while (i < numSpheres) + hit_any = false; + while (i < num_spheres) { t = intersect_sphere(ray, spheres[i], &n); if (t > 1e-3f && t < hit->t) @@ -30,24 +30,24 @@ static bool intersect_spheres(const t_ray ray, t_hit *hit, t_sphere *spheres, hit->t = t; hit->normal = n; hit->color = spheres[i].color; - hitAny = true; + hit_any = true; } i++; } - return (hitAny); + return (hit_any); } static bool intersect_planes(const t_ray ray, t_hit *hit, t_plane *planes, - int numPlanes) + int num_planes) { int i; - bool hitAny; - t_vec3 n; + bool hit_any; + t_vec3 n; float t; i = 0; - hitAny = false; - while (i < numPlanes) + hit_any = false; + while (i < num_planes) { t = intersect_plane(ray, planes[i], &n); if (t > 1e-3f && t < hit->t) @@ -55,24 +55,24 @@ static bool intersect_planes(const t_ray ray, t_hit *hit, t_plane *planes, hit->t = t; hit->normal = n; hit->color = planes[i].color; - hitAny = true; + hit_any = true; } i++; } - return (hitAny); + return (hit_any); } static bool intersect_cylinders(const t_ray ray, t_hit *hit, - t_cylinder *cylinders, int numCylinders) + t_cylinder *cylinders, int num_cylinders) { int i; - bool hitAny; - t_vec3 n; + bool hit_any; + t_vec3 n; float t; i = 0; - hitAny = false; - while (i < numCylinders) + hit_any = false; + while (i < num_cylinders) { t = intersect_cylinder(ray, cylinders[i], &n); if (t > 1e-3f && t < hit->t) @@ -80,33 +80,33 @@ static bool intersect_cylinders(const t_ray ray, t_hit *hit, hit->t = t; hit->normal = n; hit->color = cylinders[i].color; - hitAny = true; + hit_any = true; } i++; } - return (hitAny); + return (hit_any); } bool intersect_objects(float *tMin, t_vec3 *hitNormal, t_vec3 *objColor, t_scene scene) { t_hit hit; - bool hitFound; + bool hit_found; - hitFound = false; + hit_found = false; hit.t = *tMin; - if (intersect_spheres(scene.ray, &hit, scene.spheres, scene.numSpheres)) - hitFound = true; - if (intersect_planes(scene.ray, &hit, scene.planes, scene.numPlanes)) - hitFound = true; + if (intersect_spheres(scene.ray, &hit, scene.spheres, scene.num_spheres)) + hit_found = true; + if (intersect_planes(scene.ray, &hit, scene.planes, scene.num_planes)) + hit_found = true; if (intersect_cylinders(scene.ray, &hit, scene.cylinders, - scene.numCylinders)) - hitFound = true; - if (hitFound) + scene.num_cylinders)) + hit_found = true; + if (hit_found) { *tMin = hit.t; *hitNormal = hit.normal; *objColor = hit.color; } - return (hitFound); + return (hit_found); } diff --git a/miniRT b/miniRT index a4eb0e87817de645545ad67635235f4a46687195..deee9a06e3244c06f0e7d359c2b27a0e7aba7325 100755 GIT binary patch delta 22845 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 delta 22856 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 diff --git a/miniRT.h b/miniRT.h index d74ef76..85931dc 100644 --- a/miniRT.h +++ b/miniRT.h @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/13 20:02:36 by yantoine #+# #+# */ -/* Updated: 2025/02/19 16:37:07 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:48:27 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -124,12 +124,12 @@ typedef struct s_scene t_ambient ambient; t_camera camera; t_ray ray; - int numSpheres; - int numPlanes; - int numCylinders; - int numCamera; - int numLights; - int numAmbient; + int num_spheres; + int num_planes; + int num_cylinders; + int num_camera; + int num_lights; + int num_ambient; char *line_if_exit; char **token_if_exit; int fd_if_exit; diff --git a/parsing_ambiant.c b/parsing_ambiant.c index 159ac8e..70c4a1d 100644 --- a/parsing_ambiant.c +++ b/parsing_ambiant.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/14 18:04:39 by yantoine #+# #+# */ -/* Updated: 2025/02/17 21:53:34 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:48:50 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,11 +16,11 @@ t_scene parsing_ambiant(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numAmbient, MAX_AMBIENT, 3); + tokens = get_tokens_secure(scene, scene.num_ambient, MAX_AMBIENT, 3); scene.token_if_exit = tokens; scene.ambient.ratio = ft_atof(tokens[1]); scene.ambient.color = parse_color(tokens[2], scene); ft_free_array(tokens); - scene.numAmbient++; + scene.num_ambient++; return (scene); } diff --git a/parsing_camera.c b/parsing_camera.c index 5dd63a3..5a396a3 100644 --- a/parsing_camera.c +++ b/parsing_camera.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/14 20:02:29 by yantoine #+# #+# */ -/* Updated: 2025/02/17 21:24:12 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:49:01 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ t_scene parsing_camera(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numCamera, MAX_CAMERA, 4); + tokens = get_tokens_secure(scene, scene.num_camera, MAX_CAMERA, 4); scene.token_if_exit = tokens; scene.camera.camPos = parse_vector(tokens[1], scene); scene.camera.camDir = parse_vector_normalize(tokens[2], scene); @@ -24,6 +24,6 @@ t_scene parsing_camera(t_scene scene) scene.camera.yaw = atan2f(scene.camera.camDir.x, -scene.camera.camDir.z); scene.camera.pitch = asinf(scene.camera.camDir.y); ft_free_array(tokens); - scene.numCamera++; + scene.num_camera++; return (scene); } diff --git a/parsing_cylinder.c b/parsing_cylinder.c index 757d697..770c188 100644 --- a/parsing_cylinder.c +++ b/parsing_cylinder.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/15 19:54:13 by yantoine #+# #+# */ -/* Updated: 2025/02/18 17:24:08 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:53:04 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,15 +16,17 @@ t_scene parsing_cylindre(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numCylinders, MAX_CYLINDERS, 6); + tokens = get_tokens_secure(scene, scene.num_cylinders, MAX_CYLINDERS, 6); scene.token_if_exit = tokens; - scene.cylinders[scene.numCylinders].center = parse_vector(tokens[1], scene); - scene.cylinders[scene.numCylinders].axis = parse_vector_normalize(tokens[2], + scene.cylinders[scene.num_cylinders].center = \ + parse_vector(tokens[1], scene); + scene.cylinders[scene.num_cylinders].axis = \ + parse_vector_normalize(tokens[2], scene); - scene.cylinders[scene.numCylinders].radius = ft_atof(tokens[3]); - scene.cylinders[scene.numCylinders].height = ft_atof(tokens[4]); - scene.cylinders[scene.numCylinders].color = parse_color(tokens[5], scene); + scene.cylinders[scene.num_cylinders].radius = ft_atof(tokens[3]); + scene.cylinders[scene.num_cylinders].height = ft_atof(tokens[4]); + scene.cylinders[scene.num_cylinders].color = parse_color(tokens[5], scene); ft_free_array(tokens); - scene.numCylinders++; + scene.num_cylinders++; return (scene); } diff --git a/parsing_light.c b/parsing_light.c index 9b06b15..cf580f1 100644 --- a/parsing_light.c +++ b/parsing_light.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/15 19:39:08 by yantoine #+# #+# */ -/* Updated: 2025/02/17 21:29:55 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:49:57 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,12 +16,12 @@ t_scene parsing_light(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numLights, MAX_LIGHTS, 4); + tokens = get_tokens_secure(scene, scene.num_lights, MAX_LIGHTS, 4); scene.token_if_exit = tokens; - scene.lights[scene.numLights].pos = parse_vector(tokens[1], scene); - scene.lights[scene.numLights].brightness = ft_atof(tokens[2]); - scene.lights[scene.numLights].color = parse_color(tokens[3], scene); + scene.lights[scene.num_lights].pos = parse_vector(tokens[1], scene); + scene.lights[scene.num_lights].brightness = ft_atof(tokens[2]); + scene.lights[scene.num_lights].color = parse_color(tokens[3], scene); ft_free_array(tokens); - scene.numLights++; + scene.num_lights++; return (scene); } diff --git a/parsing_plane.c b/parsing_plane.c index 9be62ad..60e2a99 100644 --- a/parsing_plane.c +++ b/parsing_plane.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/15 19:49:41 by yantoine #+# #+# */ -/* Updated: 2025/02/18 20:34:02 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:50:10 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,14 +16,14 @@ t_scene parsing_plane(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numPlanes, MAX_PLANES, 4); + tokens = get_tokens_secure(scene, scene.num_planes, MAX_PLANES, 4); scene.token_if_exit = tokens; - scene.planes[scene.numPlanes].point = parse_vector(tokens[1], scene); - scene.planes[scene.numPlanes].normal = parse_vector_normalize(tokens[2], + scene.planes[scene.num_planes].point = parse_vector(tokens[1], scene); + scene.planes[scene.num_planes].normal = parse_vector_normalize(tokens[2], scene); - scene.planes[scene.numPlanes].color = parse_color(tokens[3], scene); + scene.planes[scene.num_planes].color = parse_color(tokens[3], scene); ft_free_array(tokens); - scene.numPlanes++; + scene.num_planes++; return (scene); } diff --git a/parsing_sphere.c b/parsing_sphere.c index 19bacf0..46d8526 100644 --- a/parsing_sphere.c +++ b/parsing_sphere.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/15 19:46:16 by yantoine #+# #+# */ -/* Updated: 2025/02/18 20:39:35 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:50:19 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,13 +16,13 @@ t_scene parsing_sphere(t_scene scene) { char **tokens; - tokens = get_tokens_secure(scene, scene.numSpheres, MAX_SPHERES, 4); + tokens = get_tokens_secure(scene, scene.num_spheres, MAX_SPHERES, 4); scene.token_if_exit = tokens; - scene.spheres[scene.numSpheres].center = parse_vector(tokens[1], scene); - scene.spheres[scene.numSpheres].radius = ft_atof(tokens[2]) / 2.0f; - scene.spheres[scene.numSpheres].color = parse_color(tokens[3], scene); + scene.spheres[scene.num_spheres].center = parse_vector(tokens[1], scene); + scene.spheres[scene.num_spheres].radius = ft_atof(tokens[2]) / 2.0f; + scene.spheres[scene.num_spheres].color = parse_color(tokens[3], scene); ft_free_array(tokens); - scene.numSpheres++; + scene.num_spheres++; return (scene); } diff --git a/shadows.c b/shadows.c index 86922d1..8dd5d95 100644 --- a/shadows.c +++ b/shadows.c @@ -6,7 +6,7 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/17 18:58:42 by yantoine #+# #+# */ -/* Updated: 2025/02/18 20:32:30 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:50:54 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ static bool check_shadow_sphere(const t_ray shadow_ray, float max_t, float t; i = 0; - while (i < scene.numSpheres) + while (i < scene.num_spheres) { t = intersect_sphere(shadow_ray, scene.spheres[i], &dummy); if (t > epsilon && t < max_t) @@ -42,7 +42,7 @@ static bool check_shadow_plane(const t_ray shadow_ray, float max_t, float t; i = 0; - while (i < scene.numPlanes) + while (i < scene.num_planes) { t = intersect_plane(shadow_ray, scene.planes[i], &dummy); if (t > epsilon && t < max_t) @@ -62,7 +62,7 @@ static bool check_shadow_cylinder(const t_ray shadow_ray, float max_t, float t; i = 0; - while (i < scene.numCylinders) + while (i < scene.num_cylinders) { t = intersect_cylinder(shadow_ray, scene.cylinders[i], &dummy); if (t > epsilon && t < max_t) diff --git a/tags b/tags index e729cf1..686118f 100644 --- a/tags +++ b/tags @@ -284,8 +284,8 @@ bpp3 minilibx-linux/test/main.c /^int bpp3;$/;" v typeref:typename:int bpp4 minilibx-linux/test/main.c /^int bpp4;$/;" v typeref:typename:int brightness miniRT.h /^ float brightness;$/;" m struct:s_light typeref:typename:float c miniRT.h /^ float c;$/;" m struct:s_calc typeref:typename:float -calc_light_contribution trace.c /^static t_vec3 calc_light_contribution(t_hit_info hit, t_light light, t_camera camera, t_scene sc/;" f typeref:typename:t_vec3 file: -calc_lighting trace.c /^t_vec3 calc_lighting(t_vec3 hit_point, t_vec3 hit_normal, t_vec3 obj_color, t_scene scene)$/;" f typeref:typename:t_vec3 +calc_light_contribution trace.c /^static t_vec3 calc_light_contribution(t_hit_info hit, t_light light,$/;" f typeref:typename:t_vec3 file: +calc_lighting trace.c /^t_vec3 calc_lighting(t_vec3 hit_point, t_vec3 hit_normal, t_vec3 obj_color,$/;" f typeref:typename:t_vec3 camDir miniRT.h /^ t_vec3 camDir;$/;" m struct:s_camera typeref:typename:t_vec3 camPos miniRT.h /^ t_vec3 camPos;$/;" m struct:s_camera typeref:typename:t_vec3 camera miniRT.h /^ t_camera camera;$/;" m struct:s_scene typeref:typename:t_camera @@ -298,7 +298,7 @@ check_shadow_plane shadows.c /^static bool check_shadow_plane(const t_ray shadow check_shadow_sphere shadows.c /^static bool check_shadow_sphere(const t_ray shadow_ray, float max_t,$/;" f typeref:typename:bool file: check_sign ft_atof.c /^inline static char *check_sign(char *str, int *sign)$/;" f typeref:typename:char * file: check_tokens check.c /^int check_tokens(char **tokens, int expected)$/;" f typeref:typename:int -clamp_color trace.c /^static t_vec3 clamp_color(t_vec3 color)$/;" f typeref:typename:t_vec3 file: +clamp_color trace.c /^static t_vec3 clamp_color(t_vec3 color)$/;" f typeref:typename:t_vec3 file: clean libft/Makefile /^clean:$/;" t clean makefile /^clean:$/;" t clean minilibx-linux/Makefile /^clean :$/;" t @@ -572,12 +572,12 @@ next minilibx-linux/mlx_int.h /^ struct s_win_list *next;$/;" m struct:s_win_lis normal miniRT.h /^ t_vec3 normal;$/;" m struct:s_plane typeref:typename:t_vec3 normal miniRT.h /^ t_vec3 normal;$/;" m struct:s_hit typeref:typename:t_vec3 normal miniRT.h /^ t_vec3 normal;$/;" m struct:s_hit_info typeref:typename:t_vec3 -numAmbient miniRT.h /^ int numAmbient;$/;" m struct:s_scene typeref:typename:int -numCamera miniRT.h /^ int numCamera;$/;" m struct:s_scene typeref:typename:int -numCylinders miniRT.h /^ int numCylinders;$/;" m struct:s_scene typeref:typename:int -numLights miniRT.h /^ int numLights;$/;" m struct:s_scene typeref:typename:int -numPlanes miniRT.h /^ int numPlanes;$/;" m struct:s_scene typeref:typename:int -numSpheres miniRT.h /^ int numSpheres;$/;" m struct:s_scene typeref:typename:int +num_ambient miniRT.h /^ int num_ambient;$/;" m struct:s_scene typeref:typename:int +num_camera miniRT.h /^ int num_camera;$/;" m struct:s_scene typeref:typename:int +num_cylinders miniRT.h /^ int num_cylinders;$/;" m struct:s_scene typeref:typename:int +num_lights miniRT.h /^ int num_lights;$/;" m struct:s_scene typeref:typename:int +num_planes miniRT.h /^ int num_planes;$/;" m struct:s_scene typeref:typename:int +num_spheres miniRT.h /^ int num_spheres;$/;" m struct:s_scene typeref:typename:int oc miniRT.h /^ t_vec3 oc;$/;" m struct:s_calc typeref:typename:t_vec3 oc_dot_v miniRT.h /^ float oc_dot_v;$/;" m struct:s_calc typeref:typename:float oc_perp miniRT.h /^ t_vec3 oc_perp;$/;" m struct:s_calc typeref:typename:t_vec3 diff --git a/trace.c b/trace.c index f65fb01..f405e67 100644 --- a/trace.c +++ b/trace.c @@ -6,52 +6,64 @@ /* By: yantoine +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/17 19:07:07 by yantoine #+# #+# */ -/* Updated: 2025/02/19 16:37:40 by yantoine ### ########.fr */ +/* Updated: 2025/02/19 16:52:23 by yantoine ### ########.fr */ /* */ /* ************************************************************************** */ #include "miniRT.h" -static t_vec3 clamp_color(t_vec3 color) +static t_vec3 clamp_color(t_vec3 color) { - if (color.x > 1.0f) - color.x = 1.0f; - if (color.y > 1.0f) - color.y = 1.0f; - if (color.z > 1.0f) - color.z = 1.0f; - return color; + if (color.x > 1.0f) + color.x = 1.0f; + if (color.y > 1.0f) + color.y = 1.0f; + if (color.z > 1.0f) + color.z = 1.0f; + return (color); } -static t_vec3 calc_light_contribution(t_hit_info hit, t_light light, t_camera camera, t_scene scene) +static t_vec3 calc_light_contribution(t_hit_info hit, t_light light, + t_camera camera, t_scene scene) { - t_vec3 l = vec3_normalize(vec3_sub(light.pos, hit.point)); // Variable 1 - if (is_in_shadow(hit.point, light.pos, scene)) - return (t_vec3){0, 0, 0}; - float diff = fmaxf(0.0f, vec3_dot(hit.normal, l)); // Variable 2 - t_vec3 view_dir = vec3_normalize(vec3_sub(camera.camPos, hit.point)); // Variable 3 - t_vec3 half_dir = vec3_normalize(vec3_add(l, view_dir)); // Variable 4 - float spec = powf(fmaxf(0.0f, vec3_dot(hit.normal, half_dir)), 32.0f); // Variable 5 - return vec3_add( - vec3_scale(vec3_mul(hit.color, light.color), diff * light.brightness), - vec3_scale((t_vec3){1, 1, 1}, spec * light.brightness)); + t_vec3 l; + float diff; + t_vec3 view_dir; + t_vec3 half_dir; + float spec; + + l = vec3_normalize(vec3_sub(light.pos, hit.point)); + if (is_in_shadow(hit.point, light.pos, scene)) + return ((t_vec3){0, 0, 0}); + diff = fmaxf(0.0f, vec3_dot(hit.normal, l)); + view_dir = vec3_normalize(vec3_sub(camera.camPos, hit.point)); + half_dir = vec3_normalize(vec3_add(l, view_dir)); + spec = powf(fmaxf(0.0f, vec3_dot(hit.normal, half_dir)), 32.0f); + return (vec3_add(vec3_scale(vec3_mul(hit.color, \ + light.color), diff * light.brightness), \ + vec3_scale((t_vec3){1, 1, 1}, \ + spec * light.brightness))); } -t_vec3 calc_lighting(t_vec3 hit_point, t_vec3 hit_normal, t_vec3 obj_color, t_scene scene) +t_vec3 calc_lighting(t_vec3 hit_point, t_vec3 hit_normal, t_vec3 obj_color, + t_scene scene) { - t_vec3 color = vec3_scale(obj_color, scene.ambient.ratio); // Variable 1 - t_hit_info hit; // Variable 2 - hit.point = hit_point; - hit.normal = hit_normal; - hit.color = obj_color; - int i = 0; // Variable 3 - while (i < scene.numLights) - { - color = vec3_add(color, - calc_light_contribution(hit, scene.lights[i], scene.camera, scene)); - i++; - } - return clamp_color(color); + t_vec3 color; + t_hit_info hit; + int i; + + color = vec3_scale(obj_color, scene.ambient.ratio); + hit.point = hit_point; + hit.normal = hit_normal; + hit.color = obj_color; + i = 0; + while (i < scene.num_lights) + { + color = vec3_add(color, calc_light_contribution(hit, scene.lights[i], + scene.camera, scene)); + i++; + } + return (clamp_color(color)); } // Fonction principale de lancer de rayon (trace) @@ -68,8 +80,8 @@ t_vec3 trace(t_ray ray, t_scene scene) scene.ray = ray; if (intersect_objects(&t_min, &hit_normal, &obj_color, scene)) { - hit_point = vec3_add(scene.ray.origin, \ - vec3_scale(scene.ray.dir, t_min)); + hit_point = vec3_add(scene.ray.origin, vec3_scale(scene.ray.dir, + t_min)); return (calc_lighting(hit_point, hit_normal, obj_color, scene)); } return ((t_vec3){0, 0, 0});