From ae83d7d9f18645e88cbfafafd610c7e7e0e3200a Mon Sep 17 00:00:00 2001 From: TheRedShip Date: Tue, 28 Jan 2025 22:09:27 +0100 Subject: [PATCH] + | Texture working --- imgui.ini | 2 +- includes/RT/Scene.hpp | 7 +++---- includes/RT/objects/Triangle.hpp | 1 - scenes/test.rt | 5 ++--- shaders/compute.glsl | 1 - shaders/light.glsl | 5 ++--- shaders/trace.glsl | 2 ++ srcs/class/Scene.cpp | 4 ---- 8 files changed, 10 insertions(+), 17 deletions(-) diff --git a/imgui.ini b/imgui.ini index 04a3663..4b5fce1 100644 --- a/imgui.ini +++ b/imgui.ini @@ -7,7 +7,7 @@ Pos=1645,8 Size=259,200 [Window][Material] -Pos=1638,215 +Pos=1648,211 Size=262,299 [Window][Fog settings] diff --git a/includes/RT/Scene.hpp b/includes/RT/Scene.hpp index d2a3e9c..9467bbe 100644 --- a/includes/RT/Scene.hpp +++ b/includes/RT/Scene.hpp @@ -40,10 +40,9 @@ struct GPUTriangle alignas(16) glm::vec3 vertex2; alignas(16) glm::vec3 normal; - glm::vec2 texture_vertex1; - glm::vec2 texture_vertex2; - glm::vec2 texture_vertex3; - + alignas(8) glm::vec2 texture_vertex1; + alignas(8) glm::vec2 texture_vertex2; + alignas(8) glm::vec2 texture_vertex3; int mat_index; }; diff --git a/includes/RT/objects/Triangle.hpp b/includes/RT/objects/Triangle.hpp index 4c1a50e..a6c1aa5 100644 --- a/includes/RT/objects/Triangle.hpp +++ b/includes/RT/objects/Triangle.hpp @@ -83,7 +83,6 @@ class Triangle : public Object glm::vec2 _texture_vertex2; glm::vec2 _texture_vertex3; - glm::vec3 _normal; glm::vec3 _centroid; diff --git a/scenes/test.rt b/scenes/test.rt index 21ad2f9..a73968f 100644 --- a/scenes/test.rt +++ b/scenes/test.rt @@ -17,9 +17,8 @@ MAT 255 255 255 0.0 0.0 0.0 TRN // glass 8 pl 0 0 0 0 1 0 2 // floor # pl 0 5 0 0 -1 0 5 - -OBJ obj/tails.obj 0 0 0 1 -# OBJ obj/Lowpoly_tree_sample.obj 10 0 0 +OBJ scenes/obj/tails.obj 0 0 0 1 +OBJ scenes/obj/Lowpoly_tree_sample.obj 10 0 0 # OBJ obj/Dragon_8K.obj 0 0.38 1 1 # OBJ obj/Dragon_8K.obj 0 0.38 2 1 diff --git a/shaders/compute.glsl b/shaders/compute.glsl index f54f54c..d868d60 100644 --- a/shaders/compute.glsl +++ b/shaders/compute.glsl @@ -118,7 +118,6 @@ layout(std430, binding = 6) buffer LightsBuffer - layout(std140, binding = 0) uniform CameraData { GPUCamera camera; diff --git a/shaders/light.glsl b/shaders/light.glsl index 52ce1ec..e780d85 100644 --- a/shaders/light.glsl +++ b/shaders/light.glsl @@ -101,19 +101,18 @@ vec2 getSphereUV(vec3 surfacePoint) return vec2(u, v); } -uniform sampler2D textures[16]; +uniform sampler2D textures[32]; vec3 getTextureColor(int texture_index, hitInfo hit) { GPUTriangle tri = triangles[hit.obj_index]; vec2 uv = hit.u * tri.texture_vertex2 + hit.v * tri.texture_vertex3 + (1 - (hit.u + hit.v)) * tri.texture_vertex1; - return vec3(uv, 0.); + return (texture(textures[texture_index], uv).rgb); } void calculateLightColor(GPUMaterial mat, hitInfo hit, inout vec3 color, inout vec3 light, inout uint rng_state) { - color *= mat.texture_index; if (mat.texture_index != -1) color *= getTextureColor(mat.texture_index, hit); diff --git a/shaders/trace.glsl b/shaders/trace.glsl index 0c6876d..c6a14f8 100644 --- a/shaders/trace.glsl +++ b/shaders/trace.glsl @@ -146,6 +146,8 @@ hitInfo traverseBVHs(Ray ray) if (temp_hit.t < hit.t) { + hit.u = temp_hit.u; + hit.v = temp_hit.v; hit.t = temp_hit.t; hit.last_t = temp_hit.last_t / bvh_data.scale; hit.obj_index = temp_hit.obj_index; diff --git a/srcs/class/Scene.cpp b/srcs/class/Scene.cpp index a9a623a..8942901 100644 --- a/srcs/class/Scene.cpp +++ b/srcs/class/Scene.cpp @@ -116,10 +116,6 @@ void Scene::addObject(Object *obj) gpu_triangle.vertex2 = triangle->getVertex3(); gpu_triangle.normal = triangle->getNormal(); - gpu_triangle.texture_vertex1 = triangle->getTextureVertex1(); - gpu_triangle.texture_vertex2 = triangle->getTextureVertex1(); - gpu_triangle.texture_vertex3 = triangle->getTextureVertex1(); - _gpu_triangles.push_back(gpu_triangle); gpu_obj.vertex1 = triangle->getVertex2();