apparently GLM doesn't like that

This commit is contained in:
Benjamin Kyd
2023-10-20 15:56:34 +01:00
parent 5352a22ff8
commit 8b7ae5a275
5 changed files with 20 additions and 25 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -14,7 +14,7 @@ struct Viewport;
struct Camera;
typedef struct PreviewRenderer {
glm::ivec2* Viewport;
glm::ivec2 Viewport;
GLuint RenderTarget = 0;
GLuint RenderTargetTexture = 0;

View File

@@ -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 };
}
}
}

View File

@@ -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