diff --git a/src/renderer/ray_source.hpp b/src/renderer/ray_source.hpp index 0b3ae52..fbf6d07 100644 --- a/src/renderer/ray_source.hpp +++ b/src/renderer/ray_source.hpp @@ -11,12 +11,12 @@ namespace inferno { class Camera; -struct ReferencedRayField -{ +struct ReferencedRayField { RayField Field; std::unordered_map Reference; }; + class RaySource { public: diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index 8356f89..3589a5e 100644 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -88,7 +88,7 @@ void rayr_prepare(std::unique_ptr &renderer) // here, scene_did_update takes a unique_ptr, but we have a shared_ptr // so we need to call unique() to get the unique_ptr but that will error // with non-const ltype so we need to const_cast it - if (scene::scene_did_update(renderer->CurrentScene.unique())) + if (scene::scene_did_update(renderer->CurrentScene)) { yolo::debug("New Scene!"); // renderer->AccelerationInterface->newScene(renderer->CurrentScene); @@ -97,7 +97,7 @@ void rayr_prepare(std::unique_ptr &renderer) void rayr_draw(std::unique_ptr &renderer) { - scene::scene_frame_tick(renderer->CurrentScene.unique()); + scene::scene_frame_tick(renderer->CurrentScene); // TODO: Rays should definately be bump allocated if possible, this is KBs of // ray data and nothing else being reallocated every frame for no reason ReferencedRayField startRays = mRaySource->getInitialRays(true); diff --git a/src/renderer/renderer.hpp b/src/renderer/renderer.hpp index 5d30657..c5ea574 100644 --- a/src/renderer/renderer.hpp +++ b/src/renderer/renderer.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -27,7 +28,7 @@ typedef struct RayRenderer { std::condition_variable RenderPause; // TODO: End - std::shared_ptr CurrentScene; + std::unique_ptr CurrentScene; // std::shared_ptr RenderTargetSize; glm::ivec2 RenderTargetSize; @@ -38,7 +39,7 @@ typedef struct RayRenderer { std::unique_ptr rayr_create(glm::ivec2 viewport, HHM* accelIface); void rayr_cleanup(std::unique_ptr& renderer); -void rayr_set_scene(std::unique_ptr& renderer, std::shared_ptr scene); +void rayr_set_scene(std::unique_ptr& renderer, std::unique_ptr scene); void rayr_set_viewport(std::unique_ptr& renderer, glm::ivec2 size); glm::ivec2 rayr_get_viewport(std::unique_ptr& renderer); GLuint rayr_get_rendered_texture(std::unique_ptr& renderer);