From c469be26c38c04289a1425264b492eacc6646570 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Sat, 5 Nov 2016 16:23:51 +0100 Subject: [PATCH] Make toggling the performance measurements a BoolProperty of RenderEngine --- include/openspace/rendering/renderengine.h | 25 ++++------- modules/base/rendering/renderablemodel.h | 1 + .../newhorizons/util/projectioncomponent.cpp | 1 + .../include/guiperformancecomponent.h | 2 + scripts/common.lua | 9 +--- src/engine/openspaceengine.cpp | 6 ++- src/rendering/renderengine.cpp | 44 ++++++++----------- src/rendering/renderengine_lua.inl | 16 ------- 8 files changed, 36 insertions(+), 68 deletions(-) diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index c8c5b2b5fb..d33fe86454 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -27,15 +27,11 @@ #include -#include -#include -#include +#include +#include #include - -#include - namespace ghoul { namespace fontrendering { class Font; @@ -49,6 +45,10 @@ class SharedMemory; namespace openspace { +namespace performance { +class PerformanceManager; +} + // Forward declare to minimize dependencies class Camera; class SyncBuffer; @@ -59,7 +59,7 @@ class RaycasterManager; class ScreenLog; class ScreenSpaceRenderable; -class RenderEngine { +class RenderEngine : public properties::PropertyOwner { public: enum class RendererImplementation { Framebuffer = 0, @@ -115,7 +115,6 @@ public: void toggleFrametimeType(int t); // Performance measurements - void setPerformanceMeasurements(bool performanceMeasurements); bool doesPerformanceMeasurements() const; performance::PerformanceManager* performanceManager(); @@ -193,15 +192,6 @@ public: glm::ivec2 renderingResolution() const; glm::ivec2 fontResolution() const; - // This is temporary until a proper screenspace solution is found ---abock - struct OnScreenInformation{ - glm::vec2 _position; - unsigned int _size; - int _node; - }; - - SyncData _onScreenInformation; - std::vector getSyncables(); private: @@ -214,6 +204,7 @@ private: Scene* _sceneGraph; RaycasterManager* _raycasterManager; + properties::BoolProperty _performanceMeasurements; std::unique_ptr _performanceManager; std::unique_ptr _renderer; diff --git a/modules/base/rendering/renderablemodel.h b/modules/base/rendering/renderablemodel.h index 19724e482d..5f842336ca 100644 --- a/modules/base/rendering/renderablemodel.h +++ b/modules/base/rendering/renderablemodel.h @@ -28,6 +28,7 @@ #include #include +#include #include #include diff --git a/modules/newhorizons/util/projectioncomponent.cpp b/modules/newhorizons/util/projectioncomponent.cpp index 9ff4439010..d2e05d6dfa 100644 --- a/modules/newhorizons/util/projectioncomponent.cpp +++ b/modules/newhorizons/util/projectioncomponent.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include namespace { diff --git a/modules/onscreengui/include/guiperformancecomponent.h b/modules/onscreengui/include/guiperformancecomponent.h index f5beabd38a..647b44e406 100644 --- a/modules/onscreengui/include/guiperformancecomponent.h +++ b/modules/onscreengui/include/guiperformancecomponent.h @@ -27,6 +27,8 @@ #include +#include + #include namespace ghoul { diff --git a/scripts/common.lua b/scripts/common.lua index 4167b4cc04..288d8f3675 100644 --- a/scripts/common.lua +++ b/scripts/common.lua @@ -19,13 +19,8 @@ helper.setCommonKeys = function() ) openspace.bindKeyLocal( "F2", - "openspace.setPerformanceMeasurement(true)", - "Enables performance measurements" - ) - openspace.bindKeyLocal( - "F3", - "openspace.setPerformanceMeasurement(false)", - "Disables performance measurements" + helper.property.invert("RenderEngine.performanceMeasurements"), + "Toogles performance measurements that shows rendering time informations" ) openspace.bindKeyLocal("t", "openspace.toggleFrametimeType(1)") diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index d39b89dfa3..03f5521b02 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -156,10 +157,10 @@ OpenSpaceEngine::OpenSpaceEngine(std::string programName, , _shutdownWait(0.f) , _isFirstRenderingFirstFrame(true) { - _interactionHandler->setPropertyOwner(_globalPropertyNamespace.get()); _globalPropertyNamespace->addPropertySubOwner(_interactionHandler.get()); _globalPropertyNamespace->addPropertySubOwner(_settingsEngine.get()); + _globalPropertyNamespace->addPropertySubOwner(_renderEngine.get()); FactoryManager::initialize(); FactoryManager::ref().addFactory( @@ -486,7 +487,8 @@ bool OpenSpaceEngine::initialize() { [&]() { std::vector res = { _settingsEngine.get(), - _interactionHandler.get() + _interactionHandler.get(), + _renderEngine.get() }; return res; } diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index ca86d2fcb8..da6d76895b 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -117,6 +117,7 @@ RenderEngine::RenderEngine() , _sceneGraph(nullptr) , _renderer(nullptr) , _rendererImplementation(RendererImplementation::Invalid) + , _performanceMeasurements("performanceMeasurements", "Performance Measurements") , _performanceManager(nullptr) , _log(nullptr) , _showInfo(true) @@ -129,13 +130,23 @@ RenderEngine::RenderEngine() , _fadeDirection(0) , _frameNumber(0) , _frametimeType(FrametimeType::DtTimeAvg) - // , _sgctRenderStatisticsVisible(false) { - _onScreenInformation = { - glm::vec2(0.f), - 12, - -1 - }; + setName("RenderEngine"); + + _performanceMeasurements.onChange([this](){ + if (_performanceMeasurements) { + if (!_performanceManager) { + _performanceManager = std::make_unique(); + } + } + else { + _performanceManager = nullptr; + } + + } + ); + + addProperty(_performanceMeasurements); } RenderEngine::~RenderEngine() { @@ -766,12 +777,6 @@ scripting::LuaLibrary RenderEngine::luaLibrary() { "int", "Toggle showing FPS or Average Frametime in heads up info" }, - { - "setPerformanceMeasurement", - &luascriptfunctions::setPerformanceMeasurement, - "bool", - "Sets the performance measurements" - }, { "toggleFade", &luascriptfunctions::toggleFade, @@ -807,17 +812,6 @@ scripting::LuaLibrary RenderEngine::luaLibrary() { }; } -void RenderEngine::setPerformanceMeasurements(bool performanceMeasurements) { - if (performanceMeasurements) { - if (!_performanceManager) { - _performanceManager = std::make_unique(); - } - } - else { - _performanceManager = nullptr; - } -} - bool RenderEngine::doesPerformanceMeasurements() const { return _performanceManager != nullptr; } @@ -1755,9 +1749,7 @@ void RenderEngine::renderScreenLog() { } std::vector RenderEngine::getSyncables(){ - std::vector syncables = _mainCamera->getSyncables(); - syncables.push_back(&_onScreenInformation); - return syncables; + return _mainCamera->getSyncables(); } void RenderEngine::sortScreenspaceRenderables() { diff --git a/src/rendering/renderengine_lua.inl b/src/rendering/renderengine_lua.inl index de2aa3b519..9dae62a6c2 100644 --- a/src/rendering/renderengine_lua.inl +++ b/src/rendering/renderengine_lua.inl @@ -123,22 +123,6 @@ int toggleFrametimeType(lua_State* L) { return 0; } -/** -* \ingroup LuaScripts -* visualizeABuffer(bool): -* Toggle the visualization of the ABuffer -*/ -int setPerformanceMeasurement(lua_State* L) { - int nArguments = lua_gettop(L); - if (nArguments != 1) { - return luaL_error(L, "Expected %i arguments, got %i", 1, nArguments); - } - - bool b = lua_toboolean(L, -1) != 0; - OsEng.renderEngine().setPerformanceMeasurements(b); - return 0; -} - /** * \ingroup LuaScripts * toggleFade(float):