From 185f44252f729f741f2e454ce6e0f3d88419fe50 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 25 Aug 2024 01:32:54 +0100 Subject: [PATCH] Flip the Y texture coordinate when loading the OBJ model --- src/model/obj.c | 2 +- src/shader/shaders.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/model/obj.c b/src/model/obj.c index ed153ed..b1f3aa8 100644 --- a/src/model/obj.c +++ b/src/model/obj.c @@ -56,7 +56,7 @@ Model load_obj_file(Arena *arena, const char *filename, const char *texture, } else if (strncmp(identifier, "vt", 8) == 0) { sscanf(line + 2, "%f %f", &u, &v); coord.u = u; - coord.v = v; + coord.v = 1.0f - v; list_append(V2f, arena, model.texture_coordinates, coord); } else if (strncmp(identifier, "f", 8) == 0) { sscanf(line + 2, "%lu/%lu/%lu %lu/%lu/%lu %lu/%lu/%lu", &fp0, &tx0, &vn0, diff --git a/src/shader/shaders.c b/src/shader/shaders.c index 2a2bfb9..4f8cc0f 100644 --- a/src/shader/shaders.c +++ b/src/shader/shaders.c @@ -94,7 +94,7 @@ internal FragmentResult phong_shader_fragment(void *shader, V3f norm; if (model->normal) { u64 nm_x = data->tex_coords.u * model->normal->width; - u64 nm_y = (1.0f - data->tex_coords.v) * model->normal->height; + u64 nm_y = data->tex_coords.v * model->normal->height; Colour pixel = get_pixel(Colour, model->normal, nm_x, nm_y); hnorm = (V4f){ @@ -118,7 +118,7 @@ internal FragmentResult phong_shader_fragment(void *shader, Colour output; if (model->texture) { u64 tx_x = data->tex_coords.u * model->texture->width; - u64 tx_y = (1.0f - data->tex_coords.v) * model->texture->height; + u64 tx_y = data->tex_coords.v * model->texture->height; output = get_pixel(Colour, model->texture, tx_x, tx_y); } else { output = *colour;