From 28ba1a1dd0b087cb50d463d878b89b488d92e0fd Mon Sep 17 00:00:00 2001 From: RedShip Date: Thu, 30 Jan 2025 18:33:01 +0100 Subject: [PATCH] + | Fixing --- includes/RT/Shader.hpp | 6 ++++-- scenes/portalrotation.rt | 2 -- scenes/stairs.rt | 2 -- shaders/compute.glsl | 3 ++- shaders/trace.glsl | 3 +-- srcs/RT.cpp | 4 ++-- srcs/class/Shader.cpp | 10 +++++----- 7 files changed, 14 insertions(+), 16 deletions(-) diff --git a/includes/RT/Shader.hpp b/includes/RT/Shader.hpp index e94714b..1ea0f9c 100644 --- a/includes/RT/Shader.hpp +++ b/includes/RT/Shader.hpp @@ -6,7 +6,7 @@ /* By: ycontre +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/13 18:10:10 by TheRed #+# #+# */ -/* Updated: 2024/10/14 19:51:46 by ycontre ### ########.fr */ +/* Updated: 2025/01/30 17:52:20 by ycontre ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ class Shader void attach(void); void setupVertexBuffer(); - void drawTriangles(size_t size); + void drawTriangles(); // void setBool(const std::string &name, bool value) const; void set_int(const std::string &name, int value) const; @@ -52,6 +52,8 @@ class Shader GLuint _fragment; GLuint _compute; + size_t _size; + void checkCompileErrors(unsigned int shader); }; diff --git a/scenes/portalrotation.rt b/scenes/portalrotation.rt index e144c35..3278d2e 100644 --- a/scenes/portalrotation.rt +++ b/scenes/portalrotation.rt @@ -1,6 +1,4 @@ -TEX checker - MAT 255 255 255 4.0 0.0 0.0 //light MAT 255 255 255 0.0 0.0 0.0 //white diff --git a/scenes/stairs.rt b/scenes/stairs.rt index e7e07da..91b2b84 100644 --- a/scenes/stairs.rt +++ b/scenes/stairs.rt @@ -65,8 +65,6 @@ cu -9 0.98 3 3 3 3 28 MAT 244 95 28 0.0 0.5 1.0 cu -9 1.23 -6 3 3 3 29 -TEX texture.jpg // 0 - MAT 200 20 20 0.0 1.0 0.05 LAM 0 MAT 255 255 255 0.0 1.8 0.0 DIE -1 MAT 255 255 255 0.0 1.0 1.0 diff --git a/shaders/compute.glsl b/shaders/compute.glsl index 0153d93..27b6ebd 100644 --- a/shaders/compute.glsl +++ b/shaders/compute.glsl @@ -186,9 +186,10 @@ vec3 pathtrace(Ray ray, inout uint rng_state) } #endif + float miss_condition = float(hit.obj_index == -1); light += miss_condition * transmittance * GetEnvironmentLight(ray); - + float p = max(color.r, max(color.g, color.b)); float rr_continue = float(randomValue(rng_state) <= p); diff --git a/shaders/trace.glsl b/shaders/trace.glsl index df84795..76950d6 100644 --- a/shaders/trace.glsl +++ b/shaders/trace.glsl @@ -168,7 +168,7 @@ hitInfo traceRay(Ray ray) hitInfo hitScene; hitInfo hit; - #if 0 + #if 1 for (int i = 0; i < 10; i++) // portal ray { hitBVH = traverseBVHs(ray); @@ -179,7 +179,6 @@ hitInfo traceRay(Ray ray) break ; ray = portalRay(ray, hit); ray.inv_direction = (1.0 / ray.direction); - return (hit); } #else hitBVH = traverseBVHs(ray); diff --git a/srcs/RT.cpp b/srcs/RT.cpp index 8b995d8..4153917 100644 --- a/srcs/RT.cpp +++ b/srcs/RT.cpp @@ -6,7 +6,7 @@ /* By: ycontre +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/27 14:51:49 by TheRed #+# #+# */ -/* Updated: 2025/01/28 19:01:09 by ycontre ### ########.fr */ +/* Updated: 2025/01/30 18:02:33 by ycontre ### ########.fr */ /* */ /* ************************************************************************** */ @@ -154,7 +154,7 @@ int main(int argc, char **argv) window.imGuiNewFrame(); glUseProgram(shader.getProgram()); - shader.drawTriangles(size); + shader.drawTriangles(); window.imGuiRender(); diff --git a/srcs/class/Shader.cpp b/srcs/class/Shader.cpp index 2d569f7..9d53f68 100644 --- a/srcs/class/Shader.cpp +++ b/srcs/class/Shader.cpp @@ -6,7 +6,7 @@ /* By: ycontre +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/13 20:21:13 by ycontre #+# #+# */ -/* Updated: 2025/01/24 19:13:13 by ycontre ### ########.fr */ +/* Updated: 2025/01/30 17:52:32 by ycontre ### ########.fr */ /* */ /* ************************************************************************** */ @@ -155,7 +155,7 @@ void Shader::setupVertexBuffer() { Vertex vertices[3] = {{{-1.0f, -1.0f}, {0.0f, 0.0f}},{{3.0f, -1.0f}, {2.0f, 0.0f}},{{-1.0f, 3.0f}, {0.0f, 2.0f}}}; - size_t size = sizeof(vertices) / sizeof(Vertex) / 3; + _size = sizeof(vertices) / sizeof(Vertex) / 3; glGenVertexArrays(1, &_screen_VAO); glGenBuffers(1, &_screen_VBO); @@ -163,7 +163,7 @@ void Shader::setupVertexBuffer() glBindVertexArray(_screen_VAO); glBindBuffer(GL_ARRAY_BUFFER, _screen_VBO); - glBufferData(GL_ARRAY_BUFFER, size * 3 * sizeof(Vertex), vertices, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, _size * 3 * sizeof(Vertex), vertices, GL_STATIC_DRAW); // Position attribute glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)0); @@ -177,14 +177,14 @@ void Shader::setupVertexBuffer() glBindVertexArray(0); } -void Shader::drawTriangles(size_t size) +void Shader::drawTriangles() { glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, _output_texture); glUniform1i(glGetUniformLocation(_program, "screenTexture"), 0); glBindVertexArray(_screen_VAO); - glDrawArrays(GL_TRIANGLES, 0, size * 3); + glDrawArrays(GL_TRIANGLES, 0, _size * 3); } void Shader::set_int(const std::string &name, int value) const