diff --git a/src/inferno.cpp b/src/inferno.cpp index 8533953..294e5d7 100644 --- a/src/inferno.cpp +++ b/src/inferno.cpp @@ -126,13 +126,9 @@ int Inferno::run() HARTModuleDirectory moduleDirectory; moduleDirectory.discoverModules("./hart/", true); - Camera camera; - mScene->setCamera(&camera); - Material basicMaterial("basic"); Shader basicShader; basicMaterial.setGlShader(&basicShader); - basicShader.load("res/shaders/basic.glsl")->link(); Mesh cornell; cornell.loadOBJ("res/cornell-box.obj"); @@ -140,6 +136,15 @@ int Inferno::run() cornell.setMaterial(&basicMaterial); mScene->addMesh(&cornell); + // Mesh dragon; + // dragon.loadOBJ("res/dragon-cornell-size.obj"); + // dragon.ready(); + // dragon.setMaterial(&basicMaterial); + // mScene->addMesh(&dragon); + + Camera camera; + mScene->setCamera(&camera); + Mesh dragon; dragon.loadOBJ("res/dragon-cornell-size.obj"); dragon.ready(); @@ -268,11 +273,13 @@ int Inferno::run() camera.UpdateView(); ImGui::PopItemWidth(); + ImGui::PushItemWidth(300); ImGui::Text("Camera Zoom"); - ImGui::DragFloat("Zoom", &camera.FOV, -0.1f, 0.0f, 180.0f, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); + ImGui::DragFloat("Zoom", &camera.FOV, -0.1f, 0.01f, 180.0f, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); camera.UpdateProjection(); + ImGui::PopItemWidth(); ImGui::TreePop(); } ImGui::End(); diff --git a/src/renderer/colour.hpp b/src/renderer/colour.hpp deleted file mode 100644 index a58be88..0000000 --- a/src/renderer/colour.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -namespace inferno { - -struct Colour -{ - uint8_t r; - uint8_t g; - uint8_t b; - uint8_t a; -}; - -} diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index 9232a7b..07ffce8 100644 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -1,7 +1,5 @@ #include "renderer.hpp" -#include "colour.hpp" - #include #include @@ -9,7 +7,7 @@ using namespace inferno; RayRenderer::RayRenderer() { - mTarget = new Colour[mRenderTargetSize.x * mRenderTargetSize.y]; + mTarget = new glm::fvec4[mRenderTargetSize.x * mRenderTargetSize.y]; glGenTextures(1, &mRenderTargetTexture); glBindTexture(GL_TEXTURE_2D, mRenderTargetTexture); @@ -20,7 +18,7 @@ RayRenderer::RayRenderer() 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, mRenderTargetSize.x, mRenderTargetSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, mTarget); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, mRenderTargetSize.x, mRenderTargetSize.y, 0, GL_RGBA, GL_FLOAT, mTarget); glBindTexture(GL_TEXTURE_2D, 0); } @@ -62,10 +60,10 @@ void RayRenderer::draw() for (int x = 0; x < mRenderTargetSize.x; x++) for (int y = 0; y < mRenderTargetSize.y; y++) { - mTarget[y * mRenderTargetSize.x + x] = { 0xFF * (uint8_t)x, 0x00, 0xFF * (uint8_t)y, 0xFF }; + mTarget[y * mRenderTargetSize.x + x] = { 0.0f + ((float)x / (float)mRenderTargetSize.x), 0.0f + ((float)y / (float)mRenderTargetSize.y), 1.0f, 1.0f }; } glBindTexture(GL_TEXTURE_2D, mRenderTargetTexture); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, mRenderTargetSize.x, mRenderTargetSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, mTarget); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, mRenderTargetSize.x, mRenderTargetSize.y, 0, GL_RGBA, GL_FLOAT, mTarget); glBindTexture(GL_TEXTURE_2D, 0); } diff --git a/src/renderer/renderer.hpp b/src/renderer/renderer.hpp index 2ba47e7..d8076f9 100644 --- a/src/renderer/renderer.hpp +++ b/src/renderer/renderer.hpp @@ -25,7 +25,7 @@ public: private: GLuint mRenderTargetTexture = 0; - Colour* mTarget; + glm::fvec4* mTarget; glm::ivec2 mRenderTargetSize = {300, 300}; Scene* mCurrentScene;