diff --git a/src/inferno.cpp b/src/inferno.cpp index e296d32..5f51cf7 100644 --- a/src/inferno.cpp +++ b/src/inferno.cpp @@ -109,8 +109,6 @@ InfernoApp* inferno_create() app->RayRenderer = graphics::rayr_create(app->Scene); graphics::rayr_set_viewport(app->RayRenderer, app->Scene->Camera); - yolo::info("Preview viewport size: {}x{}", app->PreviewRenderer->Viewport->x, app->PreviewRenderer->Viewport->y); - yolo::info("Rayr viewport size: {}x{}", app->RayRenderer->Viewport->x, app->RayRenderer->Viewport->y); return app; } diff --git a/src/preview_renderer/renderer.cpp b/src/preview_renderer/renderer.cpp index 4dbe7c1..27d734d 100644 --- a/src/preview_renderer/renderer.cpp +++ b/src/preview_renderer/renderer.cpp @@ -60,7 +60,7 @@ void preview_draw_ui(PreviewRenderer* renderer) void preview_set_viewport(PreviewRenderer* renderer, Camera* camera) { auto viewport = camera_raster_get_viewport(camera); - renderer->Viewport = &viewport; + renderer->Viewport = viewport; glBindFramebuffer(GL_FRAMEBUFFER, renderer->RenderTarget); @@ -69,8 +69,8 @@ void preview_set_viewport(PreviewRenderer* renderer, Camera* camera) GL_TEXTURE_2D, 0, GL_RGB, - renderer->Viewport->x, - renderer->Viewport->y, + renderer->Viewport.x, + renderer->Viewport.y, 0, GL_RGB, GL_UNSIGNED_BYTE, @@ -80,8 +80,8 @@ void preview_set_viewport(PreviewRenderer* renderer, Camera* camera) glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, - renderer->Viewport->x, - renderer->Viewport->y, + renderer->Viewport.x, + renderer->Viewport.y, 0, GL_DEPTH_COMPONENT, GL_FLOAT, @@ -108,8 +108,8 @@ void preview_draw(PreviewRenderer* renderer, scene::Scene* scene) glBindFramebuffer(GL_FRAMEBUFFER, renderer->RenderTarget); glViewport(0, 0, - renderer->Viewport->x, - renderer->Viewport->y); + renderer->Viewport.x, + renderer->Viewport.y); glEnable(GL_DEPTH_TEST); diff --git a/src/preview_renderer/renderer.hpp b/src/preview_renderer/renderer.hpp index 2f388d5..6bacf4c 100644 --- a/src/preview_renderer/renderer.hpp +++ b/src/preview_renderer/renderer.hpp @@ -14,7 +14,7 @@ struct Viewport; struct Camera; typedef struct PreviewRenderer { - glm::ivec2* Viewport; + glm::ivec2 Viewport; GLuint RenderTarget = 0; GLuint RenderTargetTexture = 0; diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index e11d055..96fbb34 100644 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -26,10 +26,10 @@ RayRenderer* rayr_create(scene::Scene* scene) auto camera = scene::scene_get_camera(scene); auto viewport = camera_ray_get_viewport(camera); - renderer->Viewport = &viewport; + renderer->Viewport = viewport; - yolo::debug("Raytracing Rendering {}x{} viewport", renderer->Viewport->x, renderer->Viewport->y); - renderer->RenderData = new glm::fvec4[renderer->Viewport->x * renderer->Viewport->y]; + yolo::debug("Raytracing Rendering {}x{} viewport", renderer->Viewport.x, renderer->Viewport.y); + renderer->RenderData = new glm::fvec4[renderer->Viewport.x * renderer->Viewport.y]; glGenTextures(1, &renderer->RenderTargetTexture); glBindTexture(GL_TEXTURE_2D, renderer->RenderTargetTexture); @@ -40,7 +40,7 @@ RayRenderer* rayr_create(scene::Scene* scene) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderer->Viewport->x, renderer->Viewport->y, 0, GL_RGBA, GL_FLOAT, renderer->RenderData); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderer->Viewport.x, renderer->Viewport.y, 0, GL_RGBA, GL_FLOAT, renderer->RenderData); glBindTexture(GL_TEXTURE_2D, 0); @@ -59,10 +59,10 @@ void rayr_draw_ui(RayRenderer* renderer) void rayr_set_viewport(RayRenderer* renderer, Camera* camera) { auto viewport = camera_ray_get_viewport(camera); - renderer->Viewport = &viewport; + renderer->Viewport = viewport; delete renderer->RenderData; - renderer->RenderData = new glm::fvec4[renderer->Viewport->x * renderer->Viewport->y]; + renderer->RenderData = new glm::fvec4[renderer->Viewport.x * renderer->Viewport.y]; glGenTextures(1, &renderer->RenderTargetTexture); glBindTexture(GL_TEXTURE_2D, renderer->RenderTargetTexture); @@ -73,7 +73,7 @@ void rayr_set_viewport(RayRenderer* renderer, Camera* camera) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderer->Viewport->x, renderer->Viewport->y, 0, GL_RGBA, GL_FLOAT, renderer->RenderData); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderer->Viewport.x, renderer->Viewport.y, 0, GL_RGBA, GL_FLOAT, renderer->RenderData); glBindTexture(GL_TEXTURE_2D, 0); } @@ -81,8 +81,8 @@ void rayr_set_viewport(RayRenderer* renderer, Camera* camera) GLuint rayr_get_rendered_texture(RayRenderer* renderer) { glBindFramebuffer(GL_FRAMEBUFFER, 0); - yolo::debug("Getting rendered texture {}", renderer->RenderTargetTexture); glBindTexture(GL_TEXTURE_2D, renderer->RenderTargetTexture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderer->Viewport.x, renderer->Viewport.y, 0, GL_RGBA, GL_FLOAT, renderer->RenderData); return renderer->RenderTargetTexture; } @@ -107,12 +107,9 @@ void rayr_draw(RayRenderer* renderer) // ray data and nothing else being reallocated every frame for no reason // ReferencedRayField startRays = mRaySource->getInitialRays(true); - yolo::debug("Rendering {}x{} viewport", renderer->Viewport->x, renderer->Viewport->y); - for (int x = 0; x < renderer->Viewport->x; x++) { - yolo::debug("Rendering column {}", x); - for (int y = 0; y < renderer->Viewport->y; y++) { - yolo::debug("Rendering row {}", y); - renderer->RenderData[y * renderer->Viewport->x + x] = { 0.1f, 1.0f, 0.1f, 1.0f }; + for (int x = 0; x < renderer->Viewport.x; x++) { + for (int y = 0; y < renderer->Viewport.y; y++) { + renderer->RenderData[y * renderer->Viewport.x + x] = { 0.1f, 1.0f, 0.1f, 1.0f }; } } } diff --git a/src/renderer/renderer.hpp b/src/renderer/renderer.hpp index 130e5f2..3e907f9 100644 --- a/src/renderer/renderer.hpp +++ b/src/renderer/renderer.hpp @@ -19,7 +19,7 @@ class RaySource; class RenderDispatcher; typedef struct RayRenderer { - glm::ivec2* Viewport; + glm::ivec2 Viewport; // TODO: Can this be direct to GPU? // NOTE: Probably not