mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-28 07:59:37 -06:00
Merge remote-tracking branch 'origin/master' into thesis/2021/skybrowser
# Conflicts: # include/openspace/rendering/screenspacerenderable.h # src/rendering/screenspacerenderable.cpp
This commit is contained in:
@@ -51,6 +51,18 @@ namespace {
|
||||
"completely transparent."
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo FadeInfo = {
|
||||
"Fade",
|
||||
"Fade",
|
||||
"This value is used by the system to be able to fade out renderables "
|
||||
"independently from the Opacity value selected by the user. This value should "
|
||||
"not be directly manipulated through a user interface, but instead used by other "
|
||||
"components of the system programmatically",
|
||||
// The Developer mode should be used once the properties in the UI listen to this
|
||||
// openspace::properties::Property::Visibility::Developer
|
||||
openspace::properties::Property::Visibility::Hidden
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo RenderableTypeInfo = {
|
||||
"Type",
|
||||
"Renderable Type",
|
||||
@@ -58,7 +70,8 @@ namespace {
|
||||
openspace::properties::Property::Visibility::Hidden
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo RenderableRenderBinModeInfo = {
|
||||
constexpr openspace::properties::Property::PropertyInfo RenderableRenderBinModeInfo =
|
||||
{
|
||||
"RenderBinMode",
|
||||
"Render Bin Mode",
|
||||
"This value specifies if the renderable should be rendered in the Background,"
|
||||
@@ -128,6 +141,7 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary)
|
||||
: properties::PropertyOwner({ "Renderable" })
|
||||
, _enabled(EnabledInfo, true)
|
||||
, _opacity(OpacityInfo, 1.f, 0.f, 1.f)
|
||||
, _fade(FadeInfo, 1.f, 0.f, 1.f)
|
||||
, _renderableType(RenderableTypeInfo, "Renderable")
|
||||
{
|
||||
ZoneScoped
|
||||
@@ -158,6 +172,8 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary)
|
||||
// We don't add the property here as subclasses should decide on their own whether
|
||||
// they to expose the opacity or not
|
||||
|
||||
addProperty(_fade);
|
||||
|
||||
// set type for UI
|
||||
_renderableType = p.type.value_or(_renderableType);
|
||||
addProperty(_renderableType);
|
||||
@@ -224,7 +240,7 @@ bool Renderable::matchesRenderBinMask(int binMask) {
|
||||
}
|
||||
|
||||
bool Renderable::isVisible() const {
|
||||
return _enabled;
|
||||
return _enabled && _opacity > 0.f && _fade > 0.f;
|
||||
}
|
||||
|
||||
bool Renderable::isReady() const {
|
||||
@@ -249,7 +265,8 @@ void Renderable::setRenderBinFromOpacity() {
|
||||
if ((_renderBin != Renderable::RenderBin::PostDeferredTransparent) &&
|
||||
(_renderBin != Renderable::RenderBin::Overlay))
|
||||
{
|
||||
if (_opacity >= 0.f && _opacity < 1.f) {
|
||||
const float v = opacity();
|
||||
if (v >= 0.f && v < 1.f) {
|
||||
setRenderBin(Renderable::RenderBin::PreDeferredTransparent);
|
||||
}
|
||||
else {
|
||||
@@ -262,4 +279,8 @@ void Renderable::registerUpdateRenderBinFromOpacity() {
|
||||
_opacity.onChange([this]() { setRenderBinFromOpacity(); });
|
||||
}
|
||||
|
||||
float Renderable::opacity() const {
|
||||
return _opacity * _fade;
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
@@ -94,11 +94,11 @@ namespace {
|
||||
constexpr const char* KeyFontMono = "Mono";
|
||||
constexpr const char* KeyFontLight = "Light";
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo ShowOverlaySlavesInfo = {
|
||||
"ShowOverlayOnSlaves",
|
||||
"Show Overlay Information on Slaves",
|
||||
constexpr openspace::properties::Property::PropertyInfo ShowOverlayClientsInfo = {
|
||||
"ShowOverlayOnClients",
|
||||
"Show Overlay Information on Clients",
|
||||
"If this value is enabled, the overlay information text is also automatically "
|
||||
"rendered on the slave nodes. This values is disabled by default."
|
||||
"rendered on client nodes. This values is disabled by default."
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo ShowLogInfo = {
|
||||
@@ -280,7 +280,7 @@ namespace openspace {
|
||||
|
||||
RenderEngine::RenderEngine()
|
||||
: properties::PropertyOwner({ "RenderEngine" })
|
||||
, _showOverlayOnSlaves(ShowOverlaySlavesInfo, false)
|
||||
, _showOverlayOnClients(ShowOverlayClientsInfo, false)
|
||||
, _showLog(ShowLogInfo, true)
|
||||
, _verticalLogOffset(VerticalLogOffsetInfo, 0.f, 0.f, 1.f)
|
||||
, _showVersionInfo(ShowVersionInfo, true)
|
||||
@@ -321,7 +321,7 @@ RenderEngine::RenderEngine()
|
||||
, _enabledFontColor(EnabledFontColorInfo, glm::vec4(0.2f, 0.75f, 0.2f, 1.f))
|
||||
, _disabledFontColor(DisabledFontColorInfo, glm::vec4(0.55f, 0.2f, 0.2f, 1.f))
|
||||
{
|
||||
addProperty(_showOverlayOnSlaves);
|
||||
addProperty(_showOverlayOnClients);
|
||||
addProperty(_showLog);
|
||||
addProperty(_verticalLogOffset);
|
||||
addProperty(_showVersionInfo);
|
||||
@@ -804,7 +804,7 @@ void RenderEngine::renderOverlays(const ShutdownInformation& shutdownInfo) {
|
||||
ZoneScoped
|
||||
|
||||
const bool isMaster = global::windowDelegate->isMaster();
|
||||
if (isMaster || _showOverlayOnSlaves) {
|
||||
if (isMaster || _showOverlayOnClients) {
|
||||
renderScreenLog();
|
||||
renderVersionInformation();
|
||||
renderDashboard();
|
||||
@@ -1072,7 +1072,8 @@ scripting::LuaLibrary RenderEngine::luaLibrary() {
|
||||
{
|
||||
codegen::lua::AddScreenSpaceRenderable,
|
||||
codegen::lua::RemoveScreenSpaceRenderable,
|
||||
codegen::lua::TakeScreenshot
|
||||
codegen::lua::TakeScreenshot,
|
||||
codegen::lua::DpiScaling
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -67,6 +67,12 @@ namespace {
|
||||
return static_cast<int>(screenshotNumber);
|
||||
}
|
||||
|
||||
// Extracts the DPI scaling for either the GUI window or if there is no dedicated GUI
|
||||
// window, the first window.
|
||||
[[codegen::luawrap]] float dpiScaling() {
|
||||
return openspace::global::windowDelegate->osDpiScaling();
|
||||
}
|
||||
|
||||
#include "renderengine_lua_codegen.cpp"
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -124,6 +124,16 @@ namespace {
|
||||
"completely transparent."
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo FadeInfo = {
|
||||
"Fade",
|
||||
"Fade",
|
||||
"This value is used by the system to be able to fade out renderables "
|
||||
"independently from the Opacity value selected by the user. This value should "
|
||||
"not be directly manipulated through a user interface, but instead used by other "
|
||||
"components of the system programmatically",
|
||||
openspace::properties::Property::Visibility::Developer
|
||||
};
|
||||
|
||||
constexpr openspace::properties::Property::PropertyInfo DeleteInfo = {
|
||||
"Delete",
|
||||
"Delete",
|
||||
@@ -272,6 +282,7 @@ ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary
|
||||
glm::vec4(1.f)
|
||||
)
|
||||
, _opacity(OpacityInfo, 1.f, 0.f, 1.f)
|
||||
, _fade(FadeInfo, 1.f, 0.f, 1.f)
|
||||
, _delete(DeleteInfo)
|
||||
{
|
||||
const Parameters p = codegen::bake<Parameters>(dictionary);
|
||||
@@ -305,6 +316,7 @@ ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary
|
||||
addProperty(_multiplyColor);
|
||||
addProperty(_backgroundColor);
|
||||
addProperty(_opacity);
|
||||
addProperty(_fade);
|
||||
addProperty(_localRotation);
|
||||
|
||||
|
||||
@@ -463,7 +475,7 @@ glm::mat4 ScreenSpaceRenderable::scaleMatrix() {
|
||||
glm::mat4(1.f),
|
||||
glm::vec3(_scale, textureRatio*_scale, 1.f)
|
||||
);
|
||||
|
||||
|
||||
return scale;
|
||||
}
|
||||
|
||||
@@ -490,7 +502,7 @@ bool ScreenSpaceRenderable::isIntersecting(glm::vec2 coord) {
|
||||
bool isRightToLeftBorder = coord.x > lowerLeftCornerScreenSpace().x;
|
||||
bool isOverBottomBorder = coord.y > lowerLeftCornerScreenSpace().y;
|
||||
|
||||
return isUnderTopBorder && isLeftToRightBorder &&
|
||||
return isUnderTopBorder && isLeftToRightBorder &&
|
||||
isRightToLeftBorder && isOverBottomBorder;
|
||||
}
|
||||
|
||||
@@ -571,7 +583,7 @@ void ScreenSpaceRenderable::draw(glm::mat4 modelTransform) {
|
||||
_shader->activate();
|
||||
|
||||
_shader->setUniform(_uniformCache.color, _multiplyColor);
|
||||
_shader->setUniform(_uniformCache.opacity, _opacity);
|
||||
_shader->setUniform(_uniformCache.opacity, opacity());
|
||||
_shader->setUniform(_uniformCache.backgroundColor, _backgroundColor);
|
||||
|
||||
_shader->setUniform(
|
||||
@@ -675,4 +687,7 @@ glm::vec3 ScreenSpaceRenderable::sphericalToRae(glm::vec3 spherical) const {
|
||||
}
|
||||
|
||||
|
||||
float ScreenSpaceRenderable::opacity() const {
|
||||
return _opacity * _fade;
|
||||
}
|
||||
} // namespace openspace
|
||||
|
||||
Reference in New Issue
Block a user