stupid
This commit is contained in:
@@ -14,8 +14,8 @@ typedef struct _CameraImpl {
|
||||
} _CameraImpl;
|
||||
|
||||
typedef struct Viewport {
|
||||
glm::ivec2 Raster;
|
||||
glm::ivec2 Ray;
|
||||
glm::ivec2 Raster = {1920, 1080};
|
||||
glm::ivec2 Ray = {1920, 1080};
|
||||
} Viewports;
|
||||
|
||||
typedef struct Camera {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <version.hpp>
|
||||
// #include "gui/layout.hpp"
|
||||
#include "imgui/imgui.h"
|
||||
#include "renderer/renderer.hpp"
|
||||
#include "scene/scene.hpp"
|
||||
#include "window.hpp"
|
||||
|
||||
@@ -104,7 +105,12 @@ InfernoApp* inferno_create()
|
||||
scene::scene_add_object(app->Scene, object);
|
||||
|
||||
app->PreviewRenderer = graphics::preview_create();
|
||||
graphics::preview_set_viewport(app->PreviewRenderer, app->Scene->Camera);
|
||||
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;
|
||||
}
|
||||
@@ -278,7 +284,6 @@ int inferno_run(InfernoApp* app)
|
||||
}
|
||||
|
||||
if (ImGui::TreeNode("RayTraced Render")) {
|
||||
ImGui::Text("Lol");
|
||||
graphics::rayr_draw_ui(app->RayRenderer);
|
||||
ImGui::TreePop();
|
||||
}
|
||||
@@ -303,12 +308,17 @@ int inferno_run(InfernoApp* app)
|
||||
{ ImGui::GetWindowSize().x, ImGui::GetWindowSize().y },
|
||||
ImVec2(0, 1), ImVec2(1, 0));
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
if (ImGui::Begin("Render")) {
|
||||
graphics::rayr_draw(app->RayRenderer);
|
||||
|
||||
ImTextureID texture = (ImTextureID)graphics::rayr_get_rendered_texture(app->RayRenderer);
|
||||
ImGui::Image(
|
||||
texture,
|
||||
{ ImGui::GetWindowSize().x, ImGui::GetWindowSize().y },
|
||||
ImVec2(0, 1), ImVec2(1, 0));
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ RayRenderer* rayr_create(scene::Scene* scene)
|
||||
auto viewport = camera_ray_get_viewport(camera);
|
||||
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];
|
||||
|
||||
glGenTextures(1, &renderer->RenderTargetTexture);
|
||||
@@ -55,9 +56,10 @@ void rayr_draw_ui(RayRenderer* renderer)
|
||||
{
|
||||
}
|
||||
|
||||
void rayr_set_viewport(RayRenderer* renderer, glm::ivec2 size)
|
||||
void rayr_set_viewport(RayRenderer* renderer, Camera* camera)
|
||||
{
|
||||
renderer->Viewport = &size;
|
||||
auto viewport = camera_ray_get_viewport(camera);
|
||||
renderer->Viewport = &viewport;
|
||||
|
||||
delete renderer->RenderData;
|
||||
renderer->RenderData = new glm::fvec4[renderer->Viewport->x * renderer->Viewport->y];
|
||||
@@ -76,19 +78,20 @@ void rayr_set_viewport(RayRenderer* renderer, glm::ivec2 size)
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
}
|
||||
|
||||
GLuint rayr_get_rendered_texture(RayRenderer*& renderer)
|
||||
GLuint rayr_get_rendered_texture(RayRenderer* renderer)
|
||||
{
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
yolo::debug("Getting rendered texture {}", renderer->RenderTargetTexture);
|
||||
glBindTexture(GL_TEXTURE_2D, renderer->RenderTargetTexture);
|
||||
return renderer->RenderTargetTexture;
|
||||
}
|
||||
|
||||
glm::fvec4* rayr_get_render_data(RayRenderer*& renderer)
|
||||
glm::fvec4* rayr_get_render_data(RayRenderer* renderer)
|
||||
{
|
||||
return renderer->RenderData;
|
||||
}
|
||||
|
||||
void rayr_prepare(RayRenderer*& renderer)
|
||||
void rayr_prepare(RayRenderer* renderer)
|
||||
{
|
||||
assert(renderer->Scene != nullptr);
|
||||
if (scene::scene_did_update(renderer->Scene)) {
|
||||
@@ -104,9 +107,14 @@ void rayr_draw(RayRenderer* renderer)
|
||||
// ray data and nothing else being reallocated every frame for no reason
|
||||
// ReferencedRayField startRays = mRaySource->getInitialRays(true);
|
||||
|
||||
// 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, 0.1f, 0.1f, 1.0f };
|
||||
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 };
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// void RayRenderer::computeHit(HitInfo* info)
|
||||
|
||||
@@ -37,7 +37,7 @@ RayRenderer* rayr_create(scene::Scene* scene);
|
||||
void rayr_cleanup(RayRenderer* renderer);
|
||||
|
||||
void rayr_draw_ui(RayRenderer* renderer);
|
||||
void rayr_set_viewport(RayRenderer* renderer, glm::ivec2 size);
|
||||
void rayr_set_viewport(RayRenderer* renderer, Camera* camera);
|
||||
|
||||
GLuint rayr_get_rendered_texture(RayRenderer* renderer);
|
||||
glm::fvec4* rayr_get_render_data(RayRenderer* renderer);
|
||||
|
||||
@@ -10,8 +10,6 @@ Camera* camera_create()
|
||||
camera->_impl = new _CameraImpl;
|
||||
|
||||
camera->Views = Viewports();
|
||||
camera->Views.Raster = glm::ivec2(800, 600);
|
||||
camera->Views.Ray = glm::ivec2(800, 600);
|
||||
|
||||
camera->ProjectionMatrix = glm::perspective(
|
||||
glm::radians(camera->FOV),
|
||||
|
||||
Reference in New Issue
Block a user