diff --git a/src/inferno.hpp b/src/inferno.hpp index 543c2f2..253e29b 100644 --- a/src/inferno.hpp +++ b/src/inferno.hpp @@ -27,8 +27,8 @@ public: public: glm::vec2 mouseDelta; - // 0x00000000 - // 0xFLBRUDxx + // 0b00000000 + // 0bFLBRUDxx uint8_t movementDelta; private: diff --git a/src/renderer/ray_source.cpp b/src/renderer/ray_source.cpp index b809653..8984ee4 100644 --- a/src/renderer/ray_source.cpp +++ b/src/renderer/ray_source.cpp @@ -1,10 +1,15 @@ #include "ray_source.hpp" +#include + +#include + using namespace inferno; -RaySource::RaySource() +RaySource::RaySource(Camera* camera) + : mReferenceCamera(camera) { - + this->generate(); } RaySource::~RaySource() @@ -12,12 +17,6 @@ RaySource::~RaySource() } -void RaySource::cameraUpdate(Camera* camera) -{ - mReferenceCamera = camera; - -} - void RaySource::generate() { @@ -25,5 +24,13 @@ void RaySource::generate() RayField RaySource::getInitialRays(bool MSAA) { + if (mReferenceCamera->didUpdate()) + { + this->generate(); + } + + for (int x = 0; x < mReferenceCamera->getRayViewport().x; x++) + for (int y = 0; y < mReferenceCamera->getRayViewport().y; y++) + return RayField{}; } diff --git a/src/renderer/ray_source.hpp b/src/renderer/ray_source.hpp index 652b967..9280a1e 100644 --- a/src/renderer/ray_source.hpp +++ b/src/renderer/ray_source.hpp @@ -15,12 +15,10 @@ class Camera; class RaySource { public: - RaySource(); + RaySource(Camera* camera); ~RaySource(); - void cameraUpdate(Camera* camera); void generate(); - RayField getInitialRays(bool MSAA); private: diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index 3856926..35adc0a 100644 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -10,7 +10,6 @@ using namespace inferno; RayRenderer::RayRenderer(HHM* accelIface) : mIface(accelIface) - , mRaySource(new RaySource) { mTarget = new glm::fvec4[mRenderTargetSize.x * mRenderTargetSize.y]; @@ -36,6 +35,11 @@ RayRenderer::~RayRenderer() void RayRenderer::setScene(Scene* scene) { mCurrentScene = scene; + if (mRaySource != nullptr) + { + delete mRaySource; + } + mRaySource = new RaySource(scene->getCamera()); } void RayRenderer::setTargetSize(glm::ivec2 size) @@ -59,8 +63,6 @@ void RayRenderer::prepare() { assert(mCurrentScene != NULL); mIface->newScene(mCurrentScene); - - mRaySource->cameraUpdate(mCurrentScene->getCamera()); } void RayRenderer::draw() diff --git a/src/renderer/renderer.hpp b/src/renderer/renderer.hpp index b1e688b..e1555dd 100644 --- a/src/renderer/renderer.hpp +++ b/src/renderer/renderer.hpp @@ -31,7 +31,7 @@ private: glm::ivec2 mRenderTargetSize = {300, 300}; Scene* mCurrentScene = nullptr; - RaySource* mRaySource; + RaySource* mRaySource = nullptr; private: HHM* mIface;