From a894e2cf5ac9ad5cac47cbc41f9a34eabb4ac830 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 22 May 2019 22:08:54 -0600 Subject: [PATCH] Turn fade-in value into a property and move away from dedicated fadeIn, fadeOut methods (closes #869) --- data/assets/util/default_keybindings.asset | 2 +- include/openspace/rendering/renderengine.h | 9 +-- src/engine/openspaceengine.cpp | 4 -- src/rendering/renderengine.cpp | 74 +++------------------- src/rendering/renderengine_lua.inl | 50 --------------- 5 files changed, 11 insertions(+), 128 deletions(-) diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index 74d5eceed2..ea03bfa37a 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -76,7 +76,7 @@ local Keybindings = { { Key = "w", Name = "Fade to/from black", - Command = "openspace.toggleFade(3)", + Command = "if openspace.getPropertyValue('RenderEngine.BlackoutFactor') > 0.5 then openspace.setPropertyValueSingle('RenderEngine.BlackoutFactor', 0.0, 3) else openspace.setPropertyValueSingle('RenderEngine.BlackoutFactor', 1.0, 3) end", Documentation = "Toggles the fade to black within 3 seconds or shows the rendering after 3 seconds.", GuiPath = "/Rendering", Local = false diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index e34d769e21..6841e1bed3 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -78,7 +78,6 @@ public: RendererImplementation rendererImplementation() const; void updateShaderPrograms(); - void updateFade(); void updateRenderer(); void updateScreenSpaceRenderables(); void render(const glm::mat4& sceneMatrix, const glm::mat4& viewMatrix, @@ -145,9 +144,6 @@ public: */ static scripting::LuaLibrary luaLibrary(); - // Temporary fade functionality - void startFading(int direction, float fadeDuration); - glm::ivec2 renderingResolution() const; glm::ivec2 fontResolution() const; @@ -187,10 +183,7 @@ private: properties::BoolProperty _showFrameNumber; properties::BoolProperty _disableMasterRendering; - float _globalBlackOutFactor = 1.f; - float _fadeDuration = 2.f; - float _currentFadeTime = 0.f; - int _fadeDirection = 0; + properties::FloatProperty _globalBlackOutFactor; properties::IntProperty _nAaSamples; properties::FloatProperty _hdrExposure; properties::FloatProperty _hdrBackground; diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 16d6374d50..7bcc3c47aa 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -760,9 +760,6 @@ void OpenSpaceEngine::loadSingleAsset(const std::string& assetPath) { global::renderEngine.updateScene(); - global::renderEngine.setGlobalBlackOutFactor(0.f); - global::renderEngine.startFading(1, 3.f); - global::syncEngine.addSyncables(global::timeManager.getSyncables()); if (_scene && _scene->camera()) { global::syncEngine.addSyncables(_scene->camera()->getSyncables()); @@ -1043,7 +1040,6 @@ void OpenSpaceEngine::postSynchronizationPreDraw() { } global::renderEngine.updateScene(); - global::renderEngine.updateFade(); global::renderEngine.updateRenderer(); global::renderEngine.updateScreenSpaceRenderables(); global::renderEngine.updateShaderPrograms(); diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index bcde3d0f01..bf97d4e877 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -218,6 +218,13 @@ namespace { "view will be automatically adjusted to match, according to the current " "aspect ratio." }; + + constexpr openspace::properties::Property::PropertyInfo GlobalBlackoutFactorInfo = { + "BlackoutFactor", + "Blackout Factor", + "The blackout factor of the rendering. This can be used for fading in or out the " + "rendering window" + }; } // namespace @@ -234,6 +241,7 @@ RenderEngine::RenderEngine() , _applyWarping(ApplyWarpingInfo, false) , _showFrameNumber(ShowFrameNumberInfo, false) , _disableMasterRendering(DisableMasterInfo, false) + , _globalBlackOutFactor(GlobalBlackoutFactorInfo, 1.f, 0.f, 1.f) , _nAaSamples(AaSamplesInfo, 4, 1, 8) , _hdrExposure(HDRExposureInfo, 0.4f, 0.01f, 10.0f) , _hdrBackground(BackgroundExposureInfo, 2.8f, 0.01f, 10.0f) @@ -296,6 +304,7 @@ RenderEngine::RenderEngine() }); addProperty(_gamma); + addProperty(_globalBlackOutFactor); addProperty(_applyWarping); _horizFieldOfView.onChange([this]() { @@ -540,44 +549,6 @@ glm::mat4 RenderEngine::nodeRotation() const { return glm::mat4_cast(glm::normalize(pitch * yaw * roll)); } -void RenderEngine::updateFade() { - // Temporary fade funtionality - constexpr const float FadedIn = 1.0; - constexpr const float FadedOut = 0.0; - // Don't restart the fade if you've already done it in that direction - const bool isFadedIn = (_fadeDirection > 0 && _globalBlackOutFactor == FadedIn); - const bool isFadedOut = (_fadeDirection < 0 && _globalBlackOutFactor == FadedOut); - if (isFadedIn || isFadedOut) { - _fadeDirection = 0; - } - - if (_fadeDirection != 0) { - if (_currentFadeTime > _fadeDuration) { - _globalBlackOutFactor = _fadeDirection > 0 ? FadedIn : FadedOut; - _fadeDirection = 0; - } - else { - if (_fadeDirection < 0) { - _globalBlackOutFactor = glm::smoothstep( - 1.f, - 0.f, - _currentFadeTime / _fadeDuration - ); - } - else { - _globalBlackOutFactor = glm::smoothstep( - 0.f, - 1.f, - _currentFadeTime / _fadeDuration - ); - } - _currentFadeTime += static_cast( - global::windowDelegate.averageDeltaTime() - ); - } - } -} - void RenderEngine::render(const glm::mat4& sceneMatrix, const glm::mat4& viewMatrix, const glm::mat4& projectionMatrix) { @@ -849,12 +820,6 @@ void RenderEngine::setGlobalBlackOutFactor(float opacity) { _globalBlackOutFactor = opacity; } -void RenderEngine::startFading(int direction, float fadeDuration) { - _fadeDirection = direction; - _fadeDuration = fadeDuration; - _currentFadeTime = 0.f; -} - /** * Build a program object for rendering with the used renderer */ @@ -1004,27 +969,6 @@ scripting::LuaLibrary RenderEngine::luaLibrary() { "string", "Sets the renderer (ABuffer or FrameBuffer)" }, - { - "toggleFade", - &luascriptfunctions::toggleFade, - {}, - "number", - "Toggles fading in or out" - }, - { - "fadeIn", - &luascriptfunctions::fadeIn, - {}, - "number", - "" - }, - { - "fadeOut", - &luascriptfunctions::fadeOut, - {}, - "number", - "" - }, { "addScreenSpaceRenderable", &luascriptfunctions::addScreenSpaceRenderable, diff --git a/src/rendering/renderengine_lua.inl b/src/rendering/renderengine_lua.inl index bc50584331..3222c6b6e3 100644 --- a/src/rendering/renderengine_lua.inl +++ b/src/rendering/renderengine_lua.inl @@ -50,56 +50,6 @@ int setRenderer(lua_State* L) { return 0; } -/** -* \ingroup LuaScripts -* toggleFade(float): -* Toggle a global fade over (float) seconds -*/ -int toggleFade(lua_State* L) { - ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::toggleFade"); - - const float t = ghoul::lua::value(L, 1, ghoul::lua::PopValue::Yes); - - constexpr const float fadedIn = 1.f; - const int direction = global::renderEngine.globalBlackOutFactor() == fadedIn ? -1 : 1; - - global::renderEngine.startFading(direction, static_cast(t)); - - ghoul_assert(lua_gettop(L) == 0, "Incorrect number of items left on stack"); - return 0; -} - -/** -* \ingroup LuaScripts -* fadeIn(float): -* start a global fadein over (float) seconds -*/ -int fadeIn(lua_State* L) { - ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::fadeIn"); - - const float t = ghoul::lua::value(L, 1, ghoul::lua::PopValue::Yes); - - global::renderEngine.startFading(1, t); - - ghoul_assert(lua_gettop(L) == 0, "Incorrect number of items left on stack"); - return 0; -} -/** -* \ingroup LuaScripts -* fadeIn(float): -* start a global fadeout over (float) seconds -*/ -int fadeOut(lua_State* L) { - ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::fadeOut"); - - float t = ghoul::lua::value(L, 1, ghoul::lua::PopValue::Yes); - - global::renderEngine.startFading(-1, t); - - ghoul_assert(lua_gettop(L) == 0, "Incorrect number of items left on stack"); - return 0; -} - int addScreenSpaceRenderable(lua_State* L) { ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::addScreenSpaceRenderable");